From 4063cd6b5213327697fe0d4e85961ebbab61b5a3 Mon Sep 17 00:00:00 2001 From: Jeffrey Newman Date: Sat, 31 May 2025 18:30:03 -0400 Subject: [PATCH 01/34] pin larch<6 for now (#947) --- .github/workflows/core_tests.yml | 2 +- conda-environments/docbuild.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/core_tests.yml b/.github/workflows/core_tests.yml index 17b3cbc2a..c0d1a808b 100644 --- a/.github/workflows/core_tests.yml +++ b/.github/workflows/core_tests.yml @@ -435,7 +435,7 @@ jobs: if: steps.cache.outputs.cache-hit != 'true' - name: Install Larch - run: mamba install "larch>=5.7.1" + run: mamba install "larch>=5.7.1,<6" - name: Install activitysim # installing without dependencies is faster, we trust that all needed dependencies diff --git a/conda-environments/docbuild.yml b/conda-environments/docbuild.yml index 275709c4e..be592acd6 100644 --- a/conda-environments/docbuild.yml +++ b/conda-environments/docbuild.yml @@ -23,7 +23,7 @@ dependencies: - git - jupyter-book - jupyterlab -- larch >=5.5.3 +- larch >=5.5.3,<6 - matplotlib - multimethod <2.0 - myst-nb From 022775bec56c9ce8a39cb8c1da65a96ae9d99a22 Mon Sep 17 00:00:00 2001 From: Kyle Ward Date: Mon, 2 Jun 2025 13:37:46 -0400 Subject: [PATCH 02/34] Minor typo/bug fixes (#945) * Fix typos in summarize docstring * Fix log message in util.delete_files * Fix docstring for VehicleAllocationSettings --------- Co-authored-by: Jeffrey Newman --- activitysim/abm/models/summarize.py | 4 ++-- activitysim/abm/models/vehicle_allocation.py | 2 +- activitysim/core/util.py | 4 +++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/activitysim/abm/models/summarize.py b/activitysim/abm/models/summarize.py index e842393fd..d613b5637 100644 --- a/activitysim/abm/models/summarize.py +++ b/activitysim/abm/models/summarize.py @@ -234,7 +234,7 @@ def summarize( trace_label: str = "summarize", ) -> None: """ - A standard model that uses expression files to summarize pipeline tables for vizualization. + A standard model that uses expression files to summarize pipeline tables for visualization. Summaries are configured in `summarize.yaml`, including specification of the expression file (`summarize.csv` by default). @@ -242,7 +242,7 @@ def summarize( Columns in pipeline tables can also be sliced and aggregated prior to summarization. This preprocessing is configured in `summarize.yaml`. - Outputs a seperate csv summary file for each expression; + Outputs a separate csv summary file for each expression; outputs starting with '_' are saved as temporary local variables. """ diff --git a/activitysim/abm/models/vehicle_allocation.py b/activitysim/abm/models/vehicle_allocation.py index 8dfb35bfd..a84dfaabf 100644 --- a/activitysim/abm/models/vehicle_allocation.py +++ b/activitysim/abm/models/vehicle_allocation.py @@ -87,7 +87,7 @@ def get_skim_dict(network_los: los.Network_LOS, choosers: pd.DataFrame): class VehicleAllocationSettings(LogitComponentSettings, extra="forbid"): """ - Settings for the `joint_tour_scheduling` component. + Settings for the `vehicle_allocation` component. """ preprocessor: PreprocessorSettings | None = None diff --git a/activitysim/core/util.py b/activitysim/core/util.py index 940796e4b..0db1e4dde 100644 --- a/activitysim/core/util.py +++ b/activitysim/core/util.py @@ -74,7 +74,9 @@ def delete_files(file_list, trace_label): logger.debug(f"{trace_label} deleting {file_path}") os.unlink(file_path) except Exception as e: - logger.warning(f"{trace_label} exception (e) trying to delete {file_path}") + logger.warning( + f"{trace_label} exception ({e}) trying to delete {file_path}" + ) def df_size(df): From ba4a12e85b3e4e794124bf39d4c2d006063462b1 Mon Sep 17 00:00:00 2001 From: David Hensle <51132108+dhensle@users.noreply.github.com> Date: Thu, 17 Jul 2025 08:30:21 -0700 Subject: [PATCH 03/34] Preprocessing & Annotation functionality (#957) * initial batch of models with pre and post processing added * nonmand sched and transit pass models * first pass at preprocessing and annotate functionality in all models * fixing bugs in jtf and trip purpose * adding persons back in to locals_d in jtc * model name missing in tour scheduling * missing expressions import in tour sched prob * ci unit tests & fixing estimation test error * addressing review comments --------- Co-authored-by: Ali Etezady <58451076+aletzdy@users.noreply.github.com> --- .../abm/models/atwork_subtour_destination.py | 10 +- .../abm/models/atwork_subtour_frequency.py | 30 ++- .../abm/models/atwork_subtour_mode_choice.py | 19 +- .../abm/models/atwork_subtour_scheduling.py | 8 + activitysim/abm/models/auto_ownership.py | 39 ++-- activitysim/abm/models/cdap.py | 41 ++-- activitysim/abm/models/free_parking.py | 35 ++-- .../abm/models/joint_tour_composition.py | 51 +++-- .../abm/models/joint_tour_destination.py | 11 +- .../abm/models/joint_tour_frequency.py | 46 ++-- .../joint_tour_frequency_composition.py | 66 +++--- .../abm/models/joint_tour_participation.py | 75 +++---- .../abm/models/joint_tour_scheduling.py | 47 ++--- activitysim/abm/models/location_choice.py | 77 ++++--- .../abm/models/mandatory_scheduling.py | 20 +- .../abm/models/mandatory_tour_frequency.py | 44 ++-- .../abm/models/non_mandatory_destination.py | 15 +- .../abm/models/non_mandatory_scheduling.py | 21 +- .../models/non_mandatory_tour_frequency.py | 80 +++---- .../abm/models/parking_location_choice.py | 63 +++++- activitysim/abm/models/school_escorting.py | 42 ++-- activitysim/abm/models/stop_frequency.py | 24 +-- .../abm/models/telecommute_frequency.py | 31 +-- activitysim/abm/models/tour_mode_choice.py | 25 ++- activitysim/abm/models/tour_od_choice.py | 10 +- .../models/tour_scheduling_probabilistic.py | 10 +- .../abm/models/transit_pass_ownership.py | 34 +-- .../abm/models/transit_pass_subsidy.py | 35 ++-- .../abm/models/trip_departure_choice.py | 33 ++- activitysim/abm/models/trip_destination.py | 65 +++--- activitysim/abm/models/trip_mode_choice.py | 35 ++-- activitysim/abm/models/trip_purpose.py | 31 ++- .../models/trip_purpose_and_destination.py | 10 +- activitysim/abm/models/trip_scheduling.py | 25 ++- .../abm/models/trip_scheduling_choice.py | 49 +++-- activitysim/abm/models/util/annotate.py | 136 ------------ .../abm/models/util/tour_destination.py | 44 +++- activitysim/abm/models/util/tour_frequency.py | 3 +- activitysim/abm/models/util/tour_od.py | 90 +++----- .../abm/models/util/tour_scheduling.py | 46 ++-- .../models/util/vectorize_tour_scheduling.py | 2 - activitysim/abm/models/vehicle_allocation.py | 37 ++-- activitysim/abm/models/vehicle_type_choice.py | 58 +++--- activitysim/abm/models/work_from_home.py | 34 +-- activitysim/core/configuration/logit.py | 35 +++- activitysim/core/expressions.py | 148 +++++++++++-- .../core/test/configs/preprocessor.csv | 8 + activitysim/core/test/test_preprocessing.py | 197 ++++++++++++++++++ 48 files changed, 1288 insertions(+), 807 deletions(-) delete mode 100644 activitysim/abm/models/util/annotate.py create mode 100644 activitysim/core/test/configs/preprocessor.csv create mode 100644 activitysim/core/test/test_preprocessing.py diff --git a/activitysim/abm/models/atwork_subtour_destination.py b/activitysim/abm/models/atwork_subtour_destination.py index d0d7fd991..1c313a089 100644 --- a/activitysim/abm/models/atwork_subtour_destination.py +++ b/activitysim/abm/models/atwork_subtour_destination.py @@ -7,7 +7,7 @@ import pandas as pd from activitysim.abm.models.util import tour_destination -from activitysim.core import config, estimation, los, tracing, workflow +from activitysim.core import config, estimation, los, tracing, workflow, expressions from activitysim.core.configuration.logit import TourLocationComponentSettings from activitysim.core.util import assign_in_place @@ -120,3 +120,11 @@ def atwork_subtour_destination( state.tracing.trace_df( tours, label="atwork_subtour_destination", columns=["destination"] ) + + expressions.annotate_tables( + state, + locals_dict={}, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/abm/models/atwork_subtour_frequency.py b/activitysim/abm/models/atwork_subtour_frequency.py index 348355443..ca7ae6d25 100644 --- a/activitysim/abm/models/atwork_subtour_frequency.py +++ b/activitysim/abm/models/atwork_subtour_frequency.py @@ -37,8 +37,8 @@ class AtworkSubtourFrequencySettings(LogitComponentSettings, extra="forbid"): Settings for the `atwork_subtour_frequency` component. """ - preprocessor: PreprocessorSettings | None = None - """Setting for the preprocessor.""" + # no additional fields are required for this component + pass @workflow.step @@ -92,15 +92,15 @@ def atwork_subtour_frequency( nest_spec = config.get_logit_model_settings(model_settings) constants = config.get_model_constants(model_settings) - # - preprocessor - preprocessor_settings = model_settings.preprocessor - if preprocessor_settings: - expressions.assign_columns( - state, - df=work_tours, - model_settings=preprocessor_settings, - trace_label=trace_label, - ) + # preprocess choosers + expressions.annotate_preprocessors( + state, + df=work_tours, + locals_dict=constants, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) if estimator: estimator.write_spec(model_settings) @@ -164,3 +164,11 @@ def atwork_subtour_frequency( if trace_hh_id: state.tracing.trace_df(tours, label="atwork_subtour_frequency.tours") + + expressions.annotate_tables( + state, + locals_dict=constants, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/abm/models/atwork_subtour_mode_choice.py b/activitysim/abm/models/atwork_subtour_mode_choice.py index 4e1949dc0..b9889aee7 100644 --- a/activitysim/abm/models/atwork_subtour_mode_choice.py +++ b/activitysim/abm/models/atwork_subtour_mode_choice.py @@ -195,17 +195,6 @@ def atwork_subtour_mode_choice( ) state.add_table("tours", tours) - # - annotate tours table - if model_settings.annotate_tours: - tours = state.get_dataframe("tours") - expressions.assign_columns( - state, - df=tours, - model_settings=model_settings.annotate_tours, - trace_label=tracing.extend_trace_label(trace_label, "annotate_tours"), - ) - state.add_table("tours", tours) - if trace_hh_id: state.tracing.trace_df( tours[tours.tour_category == "atwork"], @@ -213,3 +202,11 @@ def atwork_subtour_mode_choice( slicer="tour_id", index_label="tour_id", ) + + expressions.annotate_tables( + state, + locals_dict=constants, + skims=skims, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/abm/models/atwork_subtour_scheduling.py b/activitysim/abm/models/atwork_subtour_scheduling.py index fff94ef30..2ad67ff22 100644 --- a/activitysim/abm/models/atwork_subtour_scheduling.py +++ b/activitysim/abm/models/atwork_subtour_scheduling.py @@ -141,3 +141,11 @@ def atwork_subtour_scheduling( trace_label, "tour_map", ) + + expressions.annotate_tables( + state, + locals_dict=constants, + skims=skims, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/abm/models/auto_ownership.py b/activitysim/abm/models/auto_ownership.py index a66ce763a..fe6a472ab 100644 --- a/activitysim/abm/models/auto_ownership.py +++ b/activitysim/abm/models/auto_ownership.py @@ -18,8 +18,6 @@ from activitysim.core.configuration.base import PreprocessorSettings, PydanticReadable from activitysim.core.configuration.logit import LogitComponentSettings -from .util import annotate - logger = logging.getLogger(__name__) @@ -28,8 +26,8 @@ class AutoOwnershipSettings(LogitComponentSettings, extra="forbid"): Settings for the `auto_ownership` component. """ - preprocessor: PreprocessorSettings | None = None - annotate_households: PreprocessorSettings | None = None + # no additional fields are required for this component + pass @workflow.step @@ -69,20 +67,14 @@ def auto_ownership_simulate( logger.info("Running %s with %d households", trace_label, len(choosers)) - # - preprocessor - preprocessor_settings = model_settings.preprocessor - if preprocessor_settings: - locals_d = {} - if constants is not None: - locals_d.update(constants) - - expressions.assign_columns( - state, - df=choosers, - model_settings=preprocessor_settings, - locals_dict=locals_d, - trace_label=trace_label, - ) + expressions.annotate_preprocessors( + state, + df=choosers, + locals_dict=constants, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) if estimator: estimator.write_model_settings(model_settings, model_settings_file_name) @@ -120,8 +112,13 @@ def auto_ownership_simulate( "auto_ownership", households.auto_ownership, value_counts=True ) - if model_settings.annotate_households: - annotate.annotate_households(state, model_settings, trace_label) - if trace_hh_id: state.tracing.trace_df(households, label="auto_ownership", warn_if_empty=True) + + expressions.annotate_tables( + state, + locals_dict=constants, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/abm/models/cdap.py b/activitysim/abm/models/cdap.py index 6776c06c7..f8632da09 100644 --- a/activitysim/abm/models/cdap.py +++ b/activitysim/abm/models/cdap.py @@ -36,12 +36,17 @@ class CdapSettings(PydanticReadable, extra="forbid"): JOINT_TOUR_COEFFICIENTS: str = "cdap_joint_tour_coefficients.csv" JOINT_TOUR_USEFUL_COLUMNS: list[str] | None = None """Columns to include from the persons table that will be need to calculate household joint tour utility.""" - annotate_persons: PreprocessorSettings | None = None - annotate_households: PreprocessorSettings | None = None COEFFICIENTS: Path CONSTANTS: dict[str, Any] = {} compute_settings: ComputeSettings | None = None + preprocessor: PreprocessorSettings | None = None + """Preprocess choosers tables before running the model.""" + annotate_persons: PreprocessorSettings | None = None + """Postprocess persons table after model completion.""" + annotate_households: PreprocessorSettings | None = None + """Postprocess households table after model completion.""" + @workflow.step def cdap_simulate( @@ -171,6 +176,16 @@ def cdap_simulate( index=True, ) + # preprocess choosers + expressions.annotate_preprocessors( + state, + df=persons_merged, + locals_dict=constants, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) + if estimator: estimator.write_model_settings(model_settings, "cdap.yaml") estimator.write_spec(model_settings, tag="INDIV_AND_HHSIZE1_SPEC") @@ -241,14 +256,6 @@ def cdap_simulate( cap_cat_type = pd.api.types.CategoricalDtype(["", "M", "N", "H"], ordered=False) choices = choices.astype(cap_cat_type) persons["cdap_activity"] = choices - - expressions.assign_columns( - state, - df=persons, - model_settings=model_settings.annotate_persons, - trace_label=tracing.extend_trace_label(trace_label, "annotate_persons"), - ) - state.add_table("persons", persons) # - annotate households table @@ -256,12 +263,6 @@ def cdap_simulate( hh_joint = hh_joint.reindex(households.index) households["has_joint_tour"] = hh_joint - expressions.assign_columns( - state, - df=households, - model_settings=model_settings.annotate_households, - trace_label=tracing.extend_trace_label(trace_label, "annotate_households"), - ) state.add_table("households", households) tracing.print_summary("cdap_activity", persons.cdap_activity, value_counts=True) @@ -269,3 +270,11 @@ def cdap_simulate( "cdap crosstabs:\n%s" % pd.crosstab(persons.ptype, persons.cdap_activity, margins=True) ) + + expressions.annotate_tables( + state, + locals_dict=constants, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/abm/models/free_parking.py b/activitysim/abm/models/free_parking.py index 9aa2800a6..ebcecd248 100644 --- a/activitysim/abm/models/free_parking.py +++ b/activitysim/abm/models/free_parking.py @@ -26,9 +26,6 @@ class FreeParkingSettings(LogitComponentSettings, extra="forbid"): Settings for the `free_parking` component. """ - preprocessor: PreprocessorSettings | None = None - """Setting for the preprocessor.""" - FREE_PARKING_ALT: int """The code for free parking.""" @@ -78,21 +75,6 @@ def free_parking( constants = model_settings.CONSTANTS or {} - # - preprocessor - preprocessor_settings = model_settings.preprocessor - if preprocessor_settings: - locals_d = {} - if constants is not None: - locals_d.update(constants) - - expressions.assign_columns( - state, - df=choosers, - model_settings=preprocessor_settings, - locals_dict=locals_d, - trace_label=trace_label, - ) - model_spec = state.filesystem.read_model_spec(file_name=model_settings.SPEC) coefficients_df = state.filesystem.read_model_coefficients(model_settings) model_spec = simulate.eval_coefficients( @@ -101,6 +83,15 @@ def free_parking( nest_spec = config.get_logit_model_settings(model_settings) + expressions.annotate_preprocessors( + state, + df=choosers, + locals_dict=constants, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) + if estimator: estimator.write_model_settings(model_settings, model_settings_file_name) estimator.write_spec(file_name=model_settings.SPEC) @@ -144,3 +135,11 @@ def free_parking( if state.settings.trace_hh_id: state.tracing.trace_df(persons, label=trace_label, warn_if_empty=True) + + expressions.annotate_tables( + state, + locals_dict=constants, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/abm/models/joint_tour_composition.py b/activitysim/abm/models/joint_tour_composition.py index ee4ac3a69..1c620e070 100644 --- a/activitysim/abm/models/joint_tour_composition.py +++ b/activitysim/abm/models/joint_tour_composition.py @@ -18,6 +18,7 @@ from activitysim.core.configuration.base import PreprocessorSettings from activitysim.core.configuration.logit import LogitComponentSettings + logger = logging.getLogger(__name__) @@ -36,8 +37,7 @@ class JointTourCompositionSettings(LogitComponentSettings, extra="forbid"): Settings for the `joint_tour_composition` component. """ - preprocessor: PreprocessorSettings | None = None - """Setting for the preprocessor.""" + pass @workflow.step @@ -78,26 +78,6 @@ def joint_tour_composition( "Running joint_tour_composition with %d joint tours" % joint_tours.shape[0] ) - # - run preprocessor - preprocessor_settings = model_settings.preprocessor - if preprocessor_settings: - locals_dict = { - "persons": persons, - "hh_time_window_overlap": lambda *x: hh_time_window_overlap(state, *x), - } - - expressions.assign_columns( - state, - df=households, - model_settings=preprocessor_settings, - locals_dict=locals_dict, - trace_label=trace_label, - ) - - joint_tours_merged = pd.merge( - joint_tours, households, left_on="household_id", right_index=True, how="left" - ) - # - simple_simulate model_spec = state.filesystem.read_model_spec(file_name=model_settings.SPEC) coefficients_df = state.filesystem.read_model_coefficients(model_settings) @@ -108,6 +88,25 @@ def joint_tour_composition( nest_spec = config.get_logit_model_settings(model_settings) constants = config.get_model_constants(model_settings) + locals_dict = { + "persons": persons, + "hh_time_window_overlap": lambda *x: hh_time_window_overlap(state, *x), + } + locals_dict.update(constants) + + expressions.annotate_preprocessors( + state, + df=households, + locals_dict=locals_dict, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) + + joint_tours_merged = pd.merge( + joint_tours, households, left_on="household_id", right_index=True, how="left" + ) + if estimator: estimator.write_spec(model_settings) estimator.write_model_settings(model_settings, model_settings_file_name) @@ -156,3 +155,11 @@ def joint_tour_composition( label="joint_tour_composition.joint_tours", slicer="household_id", ) + + expressions.annotate_tables( + state, + locals_dict=locals_dict, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/abm/models/joint_tour_destination.py b/activitysim/abm/models/joint_tour_destination.py index cd6c2fed0..29b117821 100644 --- a/activitysim/abm/models/joint_tour_destination.py +++ b/activitysim/abm/models/joint_tour_destination.py @@ -7,10 +7,11 @@ import pandas as pd from activitysim.abm.models.util import tour_destination -from activitysim.core import estimation, los, tracing, workflow +from activitysim.core import estimation, los, tracing, workflow, expressions from activitysim.core.configuration.logit import TourLocationComponentSettings from activitysim.core.util import assign_in_place + logger = logging.getLogger(__name__) @@ -113,3 +114,11 @@ def joint_tour_destination( if trace_hh_id: state.tracing.trace_df(joint_tours, label="joint_tour_destination.joint_tours") + + expressions.annotate_tables( + state, + locals_dict={}, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/abm/models/joint_tour_frequency.py b/activitysim/abm/models/joint_tour_frequency.py index 1700c143b..1b9fde94b 100644 --- a/activitysim/abm/models/joint_tour_frequency.py +++ b/activitysim/abm/models/joint_tour_frequency.py @@ -25,11 +25,11 @@ class JointTourFrequencySettings(LogitComponentSettings, extra="forbid"): """ - Settings for the `free_parking` component. + Settings for the `joint_tour_frequency` component. """ - preprocessor: PreprocessorSettings | None = None - """Setting for the preprocessor.""" + # no additional settings are required for this model + pass @workflow.step @@ -72,22 +72,6 @@ def joint_tour_frequency( % multi_person_households.shape[0] ) - # - preprocessor - preprocessor_settings = model_settings.preprocessor - if preprocessor_settings: - locals_dict = { - "persons": persons, - "hh_time_window_overlap": lambda *x: hh_time_window_overlap(state, *x), - } - - expressions.assign_columns( - state, - df=multi_person_households, - model_settings=preprocessor_settings, - locals_dict=locals_dict, - trace_label=trace_label, - ) - model_spec = state.filesystem.read_model_spec(file_name=model_settings.SPEC) coefficients_df = state.filesystem.read_model_coefficients(model_settings) model_spec = simulate.eval_coefficients( @@ -97,6 +81,22 @@ def joint_tour_frequency( nest_spec = config.get_logit_model_settings(model_settings) constants = config.get_model_constants(model_settings) + # - preprocess choosers table + locals_dict = { + "persons": persons, + "hh_time_window_overlap": lambda *x: hh_time_window_overlap(state, *x), + } + locals_dict.update(constants) + + expressions.annotate_preprocessors( + state, + df=multi_person_households, + locals_dict=locals_dict, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) + if estimator: estimator.write_spec(model_settings) estimator.write_model_settings(model_settings, model_settings_file_name) @@ -205,3 +205,11 @@ def joint_tour_frequency( print(f"tours_not_in_survey_tours\n{tours_not_in_survey_tours}") different = True assert not different + + expressions.annotate_tables( + state, + locals_dict=locals_dict, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/abm/models/joint_tour_frequency_composition.py b/activitysim/abm/models/joint_tour_frequency_composition.py index 553b280fe..b9f801eb5 100644 --- a/activitysim/abm/models/joint_tour_frequency_composition.py +++ b/activitysim/abm/models/joint_tour_frequency_composition.py @@ -22,6 +22,7 @@ ) from activitysim.core.interaction_simulate import interaction_simulate + logger = logging.getLogger(__name__) @@ -58,37 +59,6 @@ def joint_tour_frequency_composition( logger.info("Running %s with %d households", trace_label, len(choosers)) - # alt preprocessor - alt_preprocessor_settings = model_settings.ALTS_PREPROCESSOR - if alt_preprocessor_settings: - locals_dict = {} - - alts = alts.copy() - - expressions.assign_columns( - state, - df=alts, - model_settings=alt_preprocessor_settings, - locals_dict=locals_dict, - trace_label=trace_label, - ) - - # - preprocessor - preprocessor_settings = model_settings.preprocessor - if preprocessor_settings: - locals_dict = { - "persons": persons, - "hh_time_window_overlap": lambda *x: hh_time_window_overlap(state, *x), - } - - expressions.assign_columns( - state, - df=choosers, - model_settings=preprocessor_settings, - locals_dict=locals_dict, - trace_label=trace_label, - ) - estimator = estimation.manager.begin_estimation( state, "joint_tour_frequency_composition" ) @@ -101,6 +71,32 @@ def joint_tour_frequency_composition( constants = config.get_model_constants(model_settings) + # preprocess choosers table + locals_dict = { + "persons": persons, + "hh_time_window_overlap": lambda *x: hh_time_window_overlap(state, *x), + } + locals_dict.update(constants) + expressions.annotate_preprocessors( + state, + df=choosers, + locals_dict=locals_dict, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) + + # preprocess alternatives table + expressions.annotate_preprocessors( + state, + df=alts, + locals_dict=constants, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + preprocessor_setting_name="ALTS_PREPROCESSOR", + ) + if estimator: estimator.write_spec(model_settings) estimator.write_model_settings(model_settings, model_settings_file_name) @@ -221,3 +217,11 @@ def joint_tour_frequency_composition( label="joint_tour_frequency_composition.joint_tours", slicer="household_id", ) + + expressions.annotate_tables( + state, + locals_dict=locals_dict, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/abm/models/joint_tour_participation.py b/activitysim/abm/models/joint_tour_participation.py index 55d5367b3..4e834fc62 100644 --- a/activitysim/abm/models/joint_tour_participation.py +++ b/activitysim/abm/models/joint_tour_participation.py @@ -274,22 +274,6 @@ def participants_chooser( return choices, rands -def annotate_jtp( - state: workflow.State, - model_settings: JointTourParticipationSettings, - trace_label: str, -): - # - annotate persons - persons = state.get_dataframe("persons") - expressions.assign_columns( - state, - df=persons, - model_settings=model_settings.annotate_persons, - trace_label=tracing.extend_trace_label(trace_label, "annotate_persons"), - ) - state.add_table("persons", persons) - - def add_null_results( state: workflow.State, model_settings: JointTourParticipationSettings, @@ -305,7 +289,13 @@ def add_null_results( state.add_table("joint_tour_participants", participants) # - run annotations - annotate_jtp(state, model_settings, trace_label) + expressions.annotate_tables( + state, + locals_dict={}, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) class JointTourParticipationSettings(LogitComponentSettings, extra="forbid"): @@ -313,12 +303,6 @@ class JointTourParticipationSettings(LogitComponentSettings, extra="forbid"): Settings for the `joint_tour_participation` component. """ - preprocessor: PreprocessorSettings | None = None - """Setting for the preprocessor.""" - - annotate_persons: PreprocessorSettings | None = None - """Instructions for annotating the persons table.""" - participation_choice: str = "participate" max_participation_choice_iterations: int = 5000 @@ -362,25 +346,6 @@ def joint_tour_participation( "Running joint_tours_participation with %d potential participants (candidates)" % candidates.shape[0] ) - - # - preprocessor - preprocessor_settings = model_settings.preprocessor - if preprocessor_settings: - locals_dict = { - "person_time_window_overlap": lambda x: person_time_window_overlap( - state, x - ), - "persons": persons_merged, - } - - expressions.assign_columns( - state, - df=candidates, - model_settings=preprocessor_settings, - locals_dict=locals_dict, - trace_label=trace_label, - ) - # - simple_simulate estimator = estimation.manager.begin_estimation(state, "joint_tour_participation") @@ -394,6 +359,21 @@ def joint_tour_participation( nest_spec = config.get_logit_model_settings(model_settings) constants = config.get_model_constants(model_settings) + # preprocess choosers table + locals_dict = { + "persons": persons_merged, + "person_time_window_overlap": lambda x: person_time_window_overlap(state, x), + } + locals_dict.update(constants) + expressions.annotate_preprocessors( + state, + df=candidates, + locals_dict=locals_dict, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) + if estimator: estimator.write_model_settings(model_settings, model_settings_file_name) estimator.write_spec(model_settings) @@ -498,9 +478,6 @@ def joint_tour_participation( state.add_table("tours", tours) - # - run annotations - annotate_jtp(state, model_settings, trace_label) - if trace_hh_id: state.tracing.trace_df( participants, label="joint_tour_participation.participants" @@ -509,3 +486,11 @@ def joint_tour_participation( state.tracing.trace_df( joint_tours, label="joint_tour_participation.joint_tours" ) + + expressions.annotate_tables( + state, + locals_dict=locals_dict, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/abm/models/joint_tour_scheduling.py b/activitysim/abm/models/joint_tour_scheduling.py index 9bdcbe146..791dd7aaf 100644 --- a/activitysim/abm/models/joint_tour_scheduling.py +++ b/activitysim/abm/models/joint_tour_scheduling.py @@ -22,20 +22,8 @@ from activitysim.core.configuration.logit import LogitComponentSettings from activitysim.core.util import assign_in_place, reindex -logger = logging.getLogger(__name__) - -# class JointTourSchedulingSettings(LogitComponentSettings, extra="forbid"): -# """ -# Settings for the `joint_tour_scheduling` component. -# """ -# -# preprocessor: PreprocessorSettings | None = None -# """Setting for the preprocessor.""" -# -# sharrow_skip: bool = False -# """Setting to skip sharrow""" -# +logger = logging.getLogger(__name__) @workflow.step @@ -85,21 +73,18 @@ def joint_tour_scheduling( constants = config.get_model_constants(model_settings) # - run preprocessor to annotate choosers - preprocessor_settings = model_settings.preprocessor - if preprocessor_settings: - locals_d = {} - if constants is not None: - locals_d.update(constants) - - expressions.assign_columns( - state, - df=joint_tours, - model_settings=preprocessor_settings, - locals_dict=locals_d, - trace_label=trace_label, - ) - timetable = state.get_injectable("timetable") + locals_d = {"timetable": timetable} + locals_d.update(constants) + + expressions.annotate_preprocessors( + state, + df=joint_tours, + locals_dict=locals_d, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) estimator = estimation.manager.begin_estimation(state, "joint_tour_scheduling") @@ -172,3 +157,11 @@ def joint_tour_scheduling( state.tracing.trace_df( joint_tours, label="joint_tour_scheduling", slicer="household_id" ) + + expressions.annotate_tables( + state, + locals_dict=locals_d, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/abm/models/location_choice.py b/activitysim/abm/models/location_choice.py index 83e794b2b..f634bb3fd 100644 --- a/activitysim/abm/models/location_choice.py +++ b/activitysim/abm/models/location_choice.py @@ -163,6 +163,27 @@ def _location_sample( } locals_d.update(model_settings.CONSTANTS or {}) + # preprocess choosers table + expressions.annotate_preprocessors( + state, + df=choosers, + locals_dict=locals_d, + skims=skims, + model_settings=model_settings, + trace_label=trace_label, + ) + + # preprocess alternatives table + expressions.annotate_preprocessors( + state, + df=alternatives, + locals_dict=locals_d, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + preprocessor_setting_name="alts_preprocessor_sample", + ) + spec = simulate.spec_for_segment( state, None, @@ -664,6 +685,27 @@ def run_location_simulate( } locals_d.update(model_settings.CONSTANTS or {}) + # preprocess choosers table + expressions.annotate_preprocessors( + state, + df=choosers, + locals_dict=locals_d, + skims=None, # skims included in locals_d + model_settings=model_settings, + trace_label=trace_label, + ) + + # preprocess alternatives table + expressions.annotate_preprocessors( + state, + df=alternatives, + locals_dict=locals_d, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + preprocessor_setting_name="alts_preprocessor_sample", + ) + if estimator: # write choosers after annotation estimator.write_choosers(choosers) @@ -1117,33 +1159,18 @@ def iterate_location_choice( ) state.extend_table(sample_table_name, save_sample_df) - # - annotate persons table - if model_settings.annotate_persons: - expressions.assign_columns( - state, - df=persons_df, - model_settings=model_settings.annotate_persons, - trace_label=tracing.extend_trace_label(trace_label, "annotate_persons"), - ) - - state.add_table("persons", persons_df) + state.add_table("persons", persons_df) - if state.settings.trace_hh_id: - state.tracing.trace_df(persons_df, label=trace_label, warn_if_empty=True) + if state.settings.trace_hh_id: + state.tracing.trace_df(persons_df, label=trace_label, warn_if_empty=True) - # - annotate households table - if model_settings.annotate_households: - households_df = households - expressions.assign_columns( - state, - df=households_df, - model_settings=model_settings.annotate_households, - trace_label=tracing.extend_trace_label(trace_label, "annotate_households"), - ) - state.add_table("households", households_df) - - if state.settings.trace_hh_id: - state.tracing.trace_df(households_df, label=trace_label, warn_if_empty=True) + expressions.annotate_tables( + state, + locals_dict={}, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) if dc_logsum_column_name: tracing.print_summary( diff --git a/activitysim/abm/models/mandatory_scheduling.py b/activitysim/abm/models/mandatory_scheduling.py index 64fc26215..a8cb46ecc 100644 --- a/activitysim/abm/models/mandatory_scheduling.py +++ b/activitysim/abm/models/mandatory_scheduling.py @@ -8,8 +8,9 @@ from activitysim.abm.models.util.tour_scheduling import run_tour_scheduling from activitysim.core import timetable as tt -from activitysim.core import tracing, workflow +from activitysim.core import tracing, workflow, expressions from activitysim.core.util import assign_in_place, reindex +from activitysim.abm.models.util.vectorize_tour_scheduling import TourSchedulingSettings logger = logging.getLogger(__name__) @@ -30,6 +31,12 @@ def mandatory_tour_scheduling( model_name = "mandatory_tour_scheduling" trace_label = model_name + model_settings = TourSchedulingSettings.read_settings_file( + state.filesystem, + f"{model_name}.yaml", + mandatory=False, + ) + mandatory_tours = tours[tours.tour_category == "mandatory"] # - if no mandatory_tours @@ -55,11 +62,12 @@ def mandatory_tour_scheduling( choices = run_tour_scheduling( state, - model_name, + model_settings, mandatory_tours, persons_merged, tdd_alts, tour_segment_col, + trace_label, ) assign_in_place( @@ -86,3 +94,11 @@ def mandatory_tour_scheduling( columns=None, warn_if_empty=True, ) + + expressions.annotate_tables( + state, + locals_dict={}, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/abm/models/mandatory_tour_frequency.py b/activitysim/abm/models/mandatory_tour_frequency.py index 8ab69710f..41a980674 100644 --- a/activitysim/abm/models/mandatory_tour_frequency.py +++ b/activitysim/abm/models/mandatory_tour_frequency.py @@ -58,10 +58,8 @@ class MandatoryTourFrequencySettings(LogitComponentSettings, extra="forbid"): Settings for the `mandatory_tour_frequency` component. """ - preprocessor: PreprocessorSettings | None = None - """Setting for the preprocessor.""" - - annotate_persons: PreprocessorSettings | None = None + # no additional fields are required for this component + pass @workflow.step @@ -95,19 +93,6 @@ def mandatory_tour_frequency( add_null_results(state, trace_label, model_settings) return - # - preprocessor - preprocessor_settings = model_settings.preprocessor - if preprocessor_settings: - locals_dict = {} - - expressions.assign_columns( - state, - df=choosers, - model_settings=preprocessor_settings, - locals_dict=locals_dict, - trace_label=trace_label, - ) - estimator = estimation.manager.begin_estimation(state, "mandatory_tour_frequency") model_spec = state.filesystem.read_model_spec(file_name=model_settings.SPEC) @@ -119,6 +104,16 @@ def mandatory_tour_frequency( nest_spec = config.get_logit_model_settings(model_settings) constants = config.get_model_constants(model_settings) + # - preprocessor + expressions.annotate_preprocessors( + state, + df=choosers, + locals_dict=constants, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) + if estimator: estimator.write_spec(model_settings) estimator.write_model_settings(model_settings, model_settings_file_name) @@ -183,13 +178,6 @@ def mandatory_tour_frequency( # need to reindex as we only handled persons with cdap_activity == 'M' persons["mandatory_tour_frequency"] = choices.reindex(persons.index).fillna("") - expressions.assign_columns( - state, - df=persons, - model_settings=model_settings.annotate_persons, - trace_label=tracing.extend_trace_label(trace_label, "annotate_persons"), - ) - state.add_table("persons", persons) tracing.print_summary( @@ -206,3 +194,11 @@ def mandatory_tour_frequency( state.tracing.trace_df( persons, label="mandatory_tour_frequency.persons", warn_if_empty=True ) + + expressions.annotate_tables( + state, + locals_dict=constants, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/abm/models/non_mandatory_destination.py b/activitysim/abm/models/non_mandatory_destination.py index 496c734cd..b0c6ea3fb 100644 --- a/activitysim/abm/models/non_mandatory_destination.py +++ b/activitysim/abm/models/non_mandatory_destination.py @@ -6,8 +6,8 @@ import pandas as pd -from activitysim.abm.models.util import annotate, tour_destination -from activitysim.core import estimation, los, tracing, workflow +from activitysim.abm.models.util import tour_destination +from activitysim.core import estimation, los, tracing, workflow, expressions from activitysim.core.configuration.logit import TourLocationComponentSettings from activitysim.core.util import assign_in_place @@ -129,9 +129,6 @@ def non_mandatory_tour_destination( state.add_table("tours", tours) - if model_settings.annotate_tours: - annotate.annotate_tours(state, model_settings, trace_label) - if want_sample_table: assert len(save_sample_df.index.get_level_values(0).unique()) == len(choices_df) # save_sample_df.set_index(model_settings['ALT_DEST_COL_NAME'], append=True, inplace=True) @@ -146,3 +143,11 @@ def non_mandatory_tour_destination( columns=None, warn_if_empty=True, ) + + expressions.annotate_tables( + state, + locals_dict={}, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/abm/models/non_mandatory_scheduling.py b/activitysim/abm/models/non_mandatory_scheduling.py index 4e444107b..bbb09f7f5 100644 --- a/activitysim/abm/models/non_mandatory_scheduling.py +++ b/activitysim/abm/models/non_mandatory_scheduling.py @@ -8,8 +8,9 @@ from activitysim.abm.models.util.tour_scheduling import run_tour_scheduling from activitysim.core import timetable as tt -from activitysim.core import tracing, workflow +from activitysim.core import tracing, workflow, expressions from activitysim.core.util import assign_in_place +from activitysim.abm.models.util.vectorize_tour_scheduling import TourSchedulingSettings logger = logging.getLogger(__name__) DUMP = False @@ -29,6 +30,13 @@ def non_mandatory_tour_scheduling( model_name = "non_mandatory_tour_scheduling" trace_label = model_name trace_hh_id = state.settings.trace_hh_id + + model_settings = TourSchedulingSettings.read_settings_file( + state.filesystem, + f"{model_name}.yaml", + mandatory=False, + ) + non_mandatory_tours = tours[tours.tour_category == "non_mandatory"] # - if no mandatory_tours @@ -40,11 +48,12 @@ def non_mandatory_tour_scheduling( choices = run_tour_scheduling( state, - model_name, + model_settings, non_mandatory_tours, persons_merged, tdd_alts, tour_segment_col, + trace_label, ) assign_in_place( @@ -71,3 +80,11 @@ def non_mandatory_tour_scheduling( columns=None, warn_if_empty=True, ) + + expressions.annotate_tables( + state, + locals_dict={}, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/abm/models/non_mandatory_tour_frequency.py b/activitysim/abm/models/non_mandatory_tour_frequency.py index 69b0524d4..175a4b1bf 100644 --- a/activitysim/abm/models/non_mandatory_tour_frequency.py +++ b/activitysim/abm/models/non_mandatory_tour_frequency.py @@ -10,7 +10,6 @@ import numpy as np import pandas as pd -from activitysim.abm.models.util import annotate from activitysim.abm.models.util.overlap import ( person_available_periods, person_max_window, @@ -28,7 +27,7 @@ tracing, workflow, ) -from activitysim.core.configuration.base import PreprocessorSettings, PydanticReadable +from activitysim.core.configuration.base import PydanticReadable, PreprocessorSettings from activitysim.core.configuration.logit import LogitComponentSettings from activitysim.core.interaction_simulate import interaction_simulate @@ -166,27 +165,21 @@ class NonMandatoryTourFrequencySettings(LogitComponentSettings, extra="forbid"): Settings for the `non_mandatory_tour_frequency` component. """ - preprocessor: PreprocessorSettings | None = None - """Setting for the preprocessor.""" - SEGMENT_COL: str = "ptype" # not used anymore TODO remove if needed SPEC_SEGMENTS: list[NonMandatoryTourSpecSegment] = [] # check the above - annotate_persons: PreprocessorSettings | None = None - """Preprocessor settings to annotate persons""" - - annotate_tours: PreprocessorSettings | None = None - """Preprocessor settings to annotate tours""" - explicit_chunk: float = 0 """ If > 0, use this chunk size instead of adaptive chunking. If less than 1, use this fraction of the total number of rows. """ + alts_preprocessor: PreprocessorSettings | None = None + """Settings for the alternatives preprocessor.""" + @workflow.step def non_mandatory_tour_frequency( @@ -233,27 +226,36 @@ def non_mandatory_tour_frequency( choosers = persons_merged choosers = choosers[choosers.cdap_activity.isin(["M", "N"])] - # - preprocessor - preprocessor_settings = model_settings.preprocessor - if preprocessor_settings: - locals_dict = { - "person_max_window": lambda x: person_max_window(state, x), - "person_available_periods": lambda persons, start_bin, end_bin, continuous: person_available_periods( - state, persons, start_bin, end_bin, continuous - ), - } - - expressions.assign_columns( - state, - df=choosers, - model_settings=preprocessor_settings, - locals_dict=locals_dict, - trace_label=trace_label, - ) - logger.info("Running non_mandatory_tour_frequency with %d persons", len(choosers)) - + # preprocessing choosers constants = config.get_model_constants(model_settings) + locals_dict = { + "person_max_window": lambda x: person_max_window(state, x), + "person_available_periods": lambda persons, start_bin, end_bin, continuous: person_available_periods( + state, persons, start_bin, end_bin, continuous + ), + } + locals_dict.update(constants) + + expressions.annotate_preprocessors( + state, + df=choosers, + locals_dict=locals_dict, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) + + # preprocessing alternatives + expressions.annotate_preprocessors( + state, + df=alternatives, + locals_dict=constants, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + preprocessor_setting_name="alts_preprocessor", + ) model_spec = state.filesystem.read_model_spec(file_name=model_settings.SPEC) spec_segments = model_settings.SPEC_SEGMENTS @@ -479,16 +481,6 @@ def non_mandatory_tour_frequency( # need to re-compute tour frequency statistics to account for school escort tours recompute_tour_count_statistics(state) - if model_settings.annotate_tours: - annotate.annotate_tours(state, model_settings, trace_label) - - expressions.assign_columns( - state, - df=persons, - model_settings=model_settings.annotate_persons, - trace_label=trace_label, - ) - state.add_table("persons", persons) tracing.print_summary( @@ -513,3 +505,11 @@ def non_mandatory_tour_frequency( label="non_mandatory_tour_frequency.annotated_persons", warn_if_empty=True, ) + + expressions.annotate_tables( + state, + locals_dict=constants, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/abm/models/parking_location_choice.py b/activitysim/abm/models/parking_location_choice.py index 674b950aa..995229b69 100644 --- a/activitysim/abm/models/parking_location_choice.py +++ b/activitysim/abm/models/parking_location_choice.py @@ -3,6 +3,7 @@ from __future__ import annotations import logging +import warnings from pathlib import Path import numpy as np @@ -325,7 +326,14 @@ class ParkingLocationSettings(LogitComponentSettings, extra="forbid"): """The school escort model does not use this setting, see `SPECIFICATION`.""" PREPROCESSOR: PreprocessorSettings | None = None - """Setting for the preprocessor.""" + """Setting for the preprocessor. + Runs before the choosers are filtered by the CHOOSER_FILTER_COLUMN_NAME. + Deprecated name -- use `preprocessor` instead. + """ + + alts_preprocessor: PreprocessorSettings | None = None + """Setting for the alternatives (aka landuse zones) preprocessor. + Runs before the alternatives are filtered by the ALTERNATIVE_FILTER_COLUMN_NAME.""" ALT_DEST_COL_NAME: str = "parking_zone" """Parking destination column name.""" @@ -362,6 +370,19 @@ class ParkingLocationSettings(LogitComponentSettings, extra="forbid"): If less than 1, use this fraction of the total number of rows. """ + def __init__(self, **data): + # Handle deprecated ALTS_PREPROCESSOR + if "PREPROCESSOR" in data: + warnings.warn( + "The 'PREPROCESSOR' setting is deprecated. Please use 'preprocessor' (lowercase) instead.", + DeprecationWarning, + stacklevel=2, + ) + # If both are provided, prefer the lowercase version + if "preprocessor" not in data: + data["preprocessor"] = data["PREPROCESSOR"] + super().__init__(**data) + @workflow.step def parking_location( @@ -388,8 +409,6 @@ def parking_location( trace_hh_id = state.settings.trace_hh_id alt_destination_col_name = model_settings.ALT_DEST_COL_NAME - preprocessor_settings = model_settings.PREPROCESSOR - trips_df = trips trips_merged_df = trips_merged land_use_df = land_use @@ -416,14 +435,28 @@ def parking_location( if constants is not None: locals_dict.update(constants) - if preprocessor_settings: - expressions.assign_columns( - state, - df=trips_merged_df, - model_settings=preprocessor_settings, - locals_dict=locals_dict, - trace_label=trace_label, - ) + # putting preprocessor and alts preprocessor here so that they are run before + # the filter columns are applied so the user can use the preprocessor to add filter + # preprocessing choosers + expressions.annotate_preprocessors( + state, + df=trips_merged_df, + locals_dict=locals_dict, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) + + # preprocessing alternatives + expressions.annotate_preprocessors( + state, + df=land_use_df, + locals_dict=locals_dict, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + preprocessor_setting_name="alts_preprocessor", + ) parking_locations, save_sample_df = run_parking_destination( state, @@ -467,3 +500,11 @@ def parking_location( if state.is_table(sample_table_name): raise RuntimeError("sample table %s already exists" % sample_table_name) state.extend_table(sample_table_name, save_sample_df) + + expressions.annotate_tables( + state, + locals_dict=locals_dict, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/abm/models/school_escorting.py b/activitysim/abm/models/school_escorting.py index a0cf6a331..e4955dc03 100644 --- a/activitysim/abm/models/school_escorting.py +++ b/activitysim/abm/models/school_escorting.py @@ -319,9 +319,6 @@ class SchoolEscortSettings(BaseLogitComponentSettings, extra="forbid"): Settings for the `telecommute_frequency` component. """ - preprocessor: PreprocessorSettings | None = None - """Setting for the preprocessor.""" - ALTS: Any NUM_ESCORTEES: int = 3 @@ -353,6 +350,8 @@ class SchoolEscortSettings(BaseLogitComponentSettings, extra="forbid"): preprocessor_outbound: PreprocessorSettings | None = None preprocessor_inbound: PreprocessorSettings | None = None preprocessor_outbound_cond: PreprocessorSettings | None = None + alts_preprocessor: PreprocessorSettings | None = None + """Preprocessor settings for the school escorting model alternatives.""" no_escorting_alterative: int = 1 """The alternative number for no escorting. Used to set the choice for households with no escortees.""" @@ -428,6 +427,16 @@ def school_escorting( constants = config.get_model_constants(model_settings) locals_dict = {} locals_dict.update(constants) + # alternatives preprocessor + expressions.annotate_preprocessors( + state, + df=choosers, + locals_dict=constants, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + preprocessor_setting_name="alts_preprocessor", + ) school_escorting_stages = ["outbound", "inbound", "outbound_cond"] escort_bundles = [] @@ -476,15 +485,16 @@ def school_escorting( logger.info("Running %s with %d households", stage_trace_label, len(choosers)) - preprocessor_settings = getattr(model_settings, "preprocessor_" + stage, None) - if preprocessor_settings: - expressions.assign_columns( - state, - df=choosers, - model_settings=preprocessor_settings, - locals_dict=locals_dict, - trace_label=stage_trace_label, - ) + preprocessor_setting_name = "preprocessor_" + stage + expressions.annotate_preprocessors( + state, + df=choosers, + locals_dict=locals_dict, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + preprocessor_setting_name=preprocessor_setting_name, + ) if estimator: estimator.write_model_settings(model_settings, model_settings_file_name) @@ -655,3 +665,11 @@ def school_escorting( ) timetable.replace_table(state) + + expressions.annotate_tables( + state, + locals_dict=constants, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/abm/models/stop_frequency.py b/activitysim/abm/models/stop_frequency.py index 2f0253f21..ec1d4961d 100644 --- a/activitysim/abm/models/stop_frequency.py +++ b/activitysim/abm/models/stop_frequency.py @@ -134,21 +134,15 @@ def stop_frequency( simulate.set_skim_wrapper_targets(tours_merged, skims) # this should be pre-slice as some expressions may count tours by type - annotations = expressions.compute_columns( + expressions.annotate_preprocessors( state, df=tours_merged, - model_settings=preprocessor_settings, locals_dict=locals_dict, + skims=None, # skims are already set on tours_merged above + model_settings=model_settings, trace_label=trace_label, ) - assign_in_place( - tours_merged, - annotations, - state.settings.downcast_int, - state.settings.downcast_float, - ) - tracing.print_summary( "stop_frequency segments", tours_merged.primary_purpose, value_counts=True ) @@ -304,10 +298,6 @@ def stop_frequency( trips, label="stop_frequency.trips", slicer="person_id", columns=None ) - state.tracing.trace_df( - annotations, label="stop_frequency.annotations", columns=None - ) - state.tracing.trace_df( tours_merged, label="stop_frequency.tours_merged", @@ -317,3 +307,11 @@ def stop_frequency( if state.is_table("school_escort_trips"): school_escort_tours_trips.merge_school_escort_trips_into_pipeline(state) + + expressions.annotate_tables( + state, + locals_dict=constants, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/abm/models/telecommute_frequency.py b/activitysim/abm/models/telecommute_frequency.py index f98791a2a..195335258 100755 --- a/activitysim/abm/models/telecommute_frequency.py +++ b/activitysim/abm/models/telecommute_frequency.py @@ -61,20 +61,15 @@ def telecommute_frequency( constants = config.get_model_constants(model_settings) - # - preprocessor - preprocessor_settings = model_settings.preprocessor - if preprocessor_settings: - locals_d = {} - if constants is not None: - locals_d.update(constants) - - expressions.assign_columns( - state, - df=choosers, - model_settings=preprocessor_settings, - locals_dict=locals_d, - trace_label=trace_label, - ) + # choosers preprocessor + expressions.annotate_preprocessors( + state, + df=choosers, + locals_dict=constants, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) model_spec = state.filesystem.read_model_spec(file_name=model_settings.SPEC) coefficients_df = state.filesystem.read_model_coefficients(model_settings) @@ -127,3 +122,11 @@ def telecommute_frequency( if state.settings.trace_hh_id: state.tracing.trace_df(persons, label=trace_label, warn_if_empty=True) + + expressions.annotate_tables( + state, + locals_dict=constants, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/abm/models/tour_mode_choice.py b/activitysim/abm/models/tour_mode_choice.py index befcb0d7a..d2052f099 100644 --- a/activitysim/abm/models/tour_mode_choice.py +++ b/activitysim/abm/models/tour_mode_choice.py @@ -7,9 +7,18 @@ import numpy as np import pandas as pd -from activitysim.abm.models.util import annotate, school_escort_tours_trips, trip +from activitysim.abm.models.util import school_escort_tours_trips, trip from activitysim.abm.models.util.mode import run_tour_mode_choice_simulate -from activitysim.core import config, estimation, logit, los, simulate, tracing, workflow +from activitysim.core import ( + config, + estimation, + logit, + los, + simulate, + tracing, + workflow, + expressions, +) from activitysim.core.configuration.logit import TourModeComponentSettings from activitysim.core.util import assign_in_place, reindex @@ -450,10 +459,6 @@ def tour_mode_choice_simulate( state.add_table("tours", all_tours) - # - annotate tours table - if model_settings.annotate_tours: - annotate.annotate_tours(state, model_settings, trace_label) - if state.settings.trace_hh_id: state.tracing.trace_df( primary_tours, @@ -462,3 +467,11 @@ def tour_mode_choice_simulate( index_label="tour_id", warn_if_empty=True, ) + + expressions.annotate_tables( + state, + locals_dict=constants, + skims=skims, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/abm/models/tour_od_choice.py b/activitysim/abm/models/tour_od_choice.py index b518b36f9..ad9f527d7 100644 --- a/activitysim/abm/models/tour_od_choice.py +++ b/activitysim/abm/models/tour_od_choice.py @@ -7,7 +7,7 @@ import pandas as pd from activitysim.abm.models.util import tour_od -from activitysim.core import estimation, los, workflow +from activitysim.core import estimation, los, workflow, expressions logger = logging.getLogger(__name__) @@ -147,3 +147,11 @@ def tour_od_choice( columns=None, warn_if_empty=True, ) + + expressions.annotate_tables( + state, + locals_dict={}, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/abm/models/tour_scheduling_probabilistic.py b/activitysim/abm/models/tour_scheduling_probabilistic.py index 324db4566..8dcb1bbff 100644 --- a/activitysim/abm/models/tour_scheduling_probabilistic.py +++ b/activitysim/abm/models/tour_scheduling_probabilistic.py @@ -7,7 +7,7 @@ import pandas as pd from activitysim.abm.models.util import probabilistic_scheduling as ps -from activitysim.core import chunk, estimation, workflow +from activitysim.core import chunk, estimation, workflow, expressions from activitysim.core.configuration.base import PydanticReadable logger = logging.getLogger(__name__) @@ -175,3 +175,11 @@ def tour_scheduling_probabilistic( assert not tours_df["duration"].isnull().any() state.add_table("tours", tours_df) + + expressions.annotate_tables( + state, + locals_dict={}, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/abm/models/transit_pass_ownership.py b/activitysim/abm/models/transit_pass_ownership.py index 9a34b7b0b..19ba88321 100644 --- a/activitysim/abm/models/transit_pass_ownership.py +++ b/activitysim/abm/models/transit_pass_ownership.py @@ -17,6 +17,7 @@ from activitysim.core.configuration.base import PreprocessorSettings from activitysim.core.configuration.logit import LogitComponentSettings + logger = logging.getLogger("activitysim") @@ -25,8 +26,8 @@ class TransitPassOwnershipSettings(LogitComponentSettings, extra="forbid"): Settings for the `transit_pass_ownership` component. """ - preprocessor: PreprocessorSettings | None = None - """Setting for the preprocessor.""" + # no additional fields are required for this component + pass @workflow.step @@ -56,19 +57,14 @@ def transit_pass_ownership( constants = config.get_model_constants(model_settings) # - preprocessor - preprocessor_settings = model_settings.preprocessor - if preprocessor_settings: - locals_d = {} - if constants is not None: - locals_d.update(constants) - - expressions.assign_columns( - state, - df=choosers, - model_settings=preprocessor_settings, - locals_dict=locals_d, - trace_label=trace_label, - ) + expressions.annotate_preprocessors( + state, + df=choosers, + locals_dict=constants, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) model_spec = state.filesystem.read_model_spec(file_name=model_settings.SPEC) coefficients_df = state.filesystem.read_model_coefficients(model_settings) @@ -114,3 +110,11 @@ def transit_pass_ownership( if state.settings.trace_hh_id: state.tracing.trace_df(persons, label=trace_label, warn_if_empty=True) + + expressions.annotate_tables( + state, + locals_dict=constants, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/abm/models/transit_pass_subsidy.py b/activitysim/abm/models/transit_pass_subsidy.py index 0f71279cd..328b49992 100644 --- a/activitysim/abm/models/transit_pass_subsidy.py +++ b/activitysim/abm/models/transit_pass_subsidy.py @@ -17,6 +17,7 @@ from activitysim.core.configuration.base import PreprocessorSettings, PydanticReadable from activitysim.core.configuration.logit import LogitComponentSettings + logger = logging.getLogger("activitysim") @@ -25,9 +26,6 @@ class TransitPassSubsidySettings(LogitComponentSettings, extra="forbid"): Settings for the `transit_pass_subsidy` component. """ - preprocessor: PreprocessorSettings | None = None - """Setting for the preprocessor.""" - CHOOSER_FILTER_COLUMN_NAME: str | None = None """Column name which selects choosers. If None, all persons are choosers.""" @@ -56,20 +54,15 @@ def transit_pass_subsidy( constants = config.get_model_constants(model_settings) - # - preprocessor - preprocessor_settings = model_settings.preprocessor - if preprocessor_settings: - locals_d = {} - if constants is not None: - locals_d.update(constants) - - expressions.assign_columns( - state, - df=choosers, - model_settings=preprocessor_settings, - locals_dict=locals_d, - trace_label=trace_label, - ) + # - preprocessor, running before choosers are filtered so column can be created + expressions.annotate_preprocessors( + state, + df=choosers, + locals_dict=constants, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) filter_col = model_settings.CHOOSER_FILTER_COLUMN_NAME if filter_col is not None: @@ -122,3 +115,11 @@ def transit_pass_subsidy( if state.settings.trace_hh_id: state.tracing.trace_df(persons, label=trace_label, warn_if_empty=True) + + expressions.annotate_tables( + state, + locals_dict=constants, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/abm/models/trip_departure_choice.py b/activitysim/abm/models/trip_departure_choice.py index 236a755de..0e4dd05d9 100644 --- a/activitysim/abm/models/trip_departure_choice.py +++ b/activitysim/abm/models/trip_departure_choice.py @@ -191,9 +191,21 @@ def choose_tour_leg_pattern( trace_label="trace_label", *, chunk_sizer: chunk.ChunkSizer, - compute_settings: ComputeSettings | None = None, + model_settings: TripDepartureChoiceSettings, ): alternatives = generate_alternatives(trip_segment, STOP_TIME_DURATION).sort_index() + + # preprocessing alternatives + expressions.annotate_preprocessors( + state, + df=alternatives, + locals_dict={}, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + preprocessor_setting_name="alts_preprocessor", + ) + have_trace_targets = state.tracing.has_trace_targets(trip_segment) if have_trace_targets: @@ -245,7 +257,7 @@ def choose_tour_leg_pattern( trace_label, trace_rows, estimator=None, - compute_settings=compute_settings, + compute_settings=model_settings.compute_settings, ) interaction_utilities = pd.concat( @@ -402,7 +414,7 @@ def apply_stage_two_model( trips, chunk_size, trace_label: str, - compute_settings: ComputeSettings | None = None, + model_settings: TripDepartureChoiceSettings, ): if not trips.index.is_monotonic_increasing: trips = trips.sort_index() @@ -473,7 +485,7 @@ def apply_stage_two_model( spec, trace_label=segment_trace_label, chunk_sizer=chunk_sizer, - compute_settings=compute_settings, + model_settings=model_settings, ) choices = pd.merge( @@ -509,6 +521,9 @@ class TripDepartureChoiceSettings(PydanticCompute, extra="forbid"): PREPROCESSOR: PreprocessorSettings | None = None """Setting for the preprocessor.""" + alts_preprocessor: PreprocessorSettings | None = None + """Setting for the alternatives preprocessor.""" + SPECIFICATION: str = "trip_departure_choice.csv" """Filename for the trip departure choice (.csv) file.""" @@ -580,7 +595,7 @@ def trip_departure_choice( trips_merged_df, state.settings.chunk_size, trace_label, - compute_settings=model_settings.compute_settings, + model_settings=model_settings, ) trips_df = trips @@ -590,3 +605,11 @@ def trip_departure_choice( assert trips_df[trips_df["depart"].isnull()].empty state.add_table("trips", trips_df) + + expressions.annotate_tables( + state, + locals_dict={}, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/abm/models/trip_destination.py b/activitysim/abm/models/trip_destination.py index 2b6b5a2ff..0e7cfb98d 100644 --- a/activitysim/abm/models/trip_destination.py +++ b/activitysim/abm/models/trip_destination.py @@ -59,9 +59,6 @@ class TripDestinationSettings(LocationComponentSettings, extra="forbid"): PRIMARY_ORIGIN: str = "origin" PRIMARY_DEST: str = "tour_leg_dest" # must be created in preprocessor REDUNDANT_TOURS_MERGED_CHOOSER_COLUMNS: list[str] | None = None - preprocessor: PreprocessorSettings | None = None - alts_preprocessor_sample: PreprocessorSettings | None = None - alts_preprocessor_simulate: PreprocessorSettings | None = None CLEANUP: bool fail_some_trips_for_testing: bool = False """This setting is used by testing code to force failed trip_destination.""" @@ -203,14 +200,16 @@ def _destination_sample( log_alt_losers = state.settings.log_alt_losers - if model_settings.alts_preprocessor_sample: - expressions.assign_columns( - state, - df=alternatives, - model_settings=model_settings.alts_preprocessor_sample, - locals_dict=locals_dict, - trace_label=tracing.extend_trace_label(trace_label, "alts"), - ) + # preprocessing alternatives + expressions.annotate_preprocessors( + state, + df=alternatives, + locals_dict=locals_dict, + skims=skims, + model_settings=model_settings, + trace_label=trace_label, + preprocessor_setting_name="alts_preprocessor_sample", + ) choices = interaction_sample( state, @@ -951,14 +950,16 @@ def trip_destination_simulate( ) locals_dict.update(skims) - if model_settings.alts_preprocessor_simulate: - expressions.assign_columns( - state, - df=destination_sample, - model_settings=model_settings.alts_preprocessor_simulate, - locals_dict=locals_dict, - trace_label=tracing.extend_trace_label(trace_label, "alts"), - ) + # preprocessing alternatives + expressions.annotate_preprocessors( + state, + df=destination_sample, + locals_dict=locals_dict, + skims=skims, + model_settings=model_settings, + trace_label=trace_label, + preprocessor_setting_name="alts_preprocessor_simulate", + ) log_alt_losers = state.settings.log_alt_losers destinations = interaction_sample_simulate( @@ -1383,15 +1384,15 @@ def run_trip_destination( } locals_dict.update(model_settings.CONSTANTS) - # - annotate nth_trips - if preprocessor_settings: - expressions.assign_columns( - state, - df=nth_trips, - model_settings=preprocessor_settings, - locals_dict=locals_dict, - trace_label=nth_trace_label, - ) + # preprocessing choosers + expressions.annotate_preprocessors( + state, + df=nth_trips, + locals_dict=locals_dict, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) if isinstance( nth_trips["trip_period"].dtype, pd.api.types.CategoricalDtype @@ -1677,3 +1678,11 @@ def trip_destination( if state.is_table(sample_table_name): raise RuntimeError("sample table %s already exists" % sample_table_name) state.extend_table(sample_table_name, save_sample_df) + + expressions.annotate_tables( + state, + locals_dict={}, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/abm/models/trip_mode_choice.py b/activitysim/abm/models/trip_mode_choice.py index b3dd0e7f4..a942b7af8 100644 --- a/activitysim/abm/models/trip_mode_choice.py +++ b/activitysim/abm/models/trip_mode_choice.py @@ -8,7 +8,7 @@ import numpy as np import pandas as pd -from activitysim.abm.models.util import annotate, school_escort_tours_trips +from activitysim.abm.models.util import school_escort_tours_trips from activitysim.abm.models.util.mode import mode_choice_simulate from activitysim.core import ( chunk, @@ -32,9 +32,6 @@ class TripModeChoiceSettings(TemplatedLogitComponentSettings, extra="forbid"): Settings for the `trip_mode_choice` component. """ - preprocessor: PreprocessorSettings | None = None - """Setting for the preprocessor.""" - MODE_CHOICE_LOGSUM_COLUMN_NAME: str = "mode_choice_logsum" """Column name of the mode choice logsum""" @@ -49,8 +46,11 @@ class TripModeChoiceSettings(TemplatedLogitComponentSettings, extra="forbid"): use_TVPB_constants: bool = True FORCE_ESCORTEE_CHAUFFEUR_MODE_MATCH: bool = True - - annotate_trips: PreprocessorSettings | None = None + """ + If True, overwrite the trip mode of escortee trips to match the mode selected + by the chauffeur. This is useful for school escort tours where the escortee trip + mode (e.g., "transit") should match the chauffeur trip mode. + """ LEGACY_COEFFICIENTS: str | None = None @@ -370,15 +370,6 @@ def trip_mode_choice( state.add_table("trips", trips_df) - if model_settings.annotate_trips: - # need to update locals_dict to access skims that are the same .shape as trips table - locals_dict = {} - locals_dict.update(constants) - simulate.set_skim_wrapper_targets(trips_merged, skims) - locals_dict.update(skims) - locals_dict["timeframe"] = "trip" - annotate.annotate_trips(state, model_settings, trace_label, locals_dict) - if state.settings.trace_hh_id: state.tracing.trace_df( trips_df, @@ -387,3 +378,17 @@ def trip_mode_choice( index_label="trip_id", warn_if_empty=True, ) + + # need to update locals_dict to access skims that are the same .shape as trips table + locals_dict = {} + locals_dict.update(constants) + simulate.set_skim_wrapper_targets(trips_merged, skims) + locals_dict.update(skims) + locals_dict["timeframe"] = "trip" + expressions.annotate_tables( + state, + locals_dict=locals_dict, + skims=skims, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/abm/models/trip_purpose.py b/activitysim/abm/models/trip_purpose.py index 5f208f514..695882938 100644 --- a/activitysim/abm/models/trip_purpose.py +++ b/activitysim/abm/models/trip_purpose.py @@ -253,16 +253,14 @@ def run_trip_purpose( trips_df = trips_df[~last_trip] logger.info("assign purpose to %s intermediate trips", trips_df.shape[0]) - preprocessor_settings = model_settings.preprocessor - if preprocessor_settings: - locals_dict = config.get_model_constants(model_settings) - expressions.assign_columns( - state, - df=trips_df, - model_settings=preprocessor_settings, - locals_dict=locals_dict, - trace_label=trace_label, - ) + expressions.annotate_preprocessors( + state, + df=trips_df, + locals_dict=config.get_model_constants(model_settings), + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) use_depart_time = model_settings.use_depart_time @@ -303,6 +301,10 @@ def trip_purpose(state: workflow.State, trips: pd.DataFrame) -> None: """ trace_label = "trip_purpose" + model_settings = TripPurposeSettings.read_settings_file( + state.filesystem, "trip_purpose.yaml" + ) + trips_df = trips if state.is_table("school_escort_trips"): @@ -326,6 +328,7 @@ def trip_purpose(state: workflow.State, trips: pd.DataFrame) -> None: state, trips_df, estimator, + model_settings, trace_label=trace_label, ) @@ -359,3 +362,11 @@ def trip_purpose(state: workflow.State, trips: pd.DataFrame) -> None: index_label="trip_id", warn_if_empty=True, ) + + expressions.annotate_tables( + state, + locals_dict={}, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/abm/models/trip_purpose_and_destination.py b/activitysim/abm/models/trip_purpose_and_destination.py index 66443e089..02b8a6cbf 100644 --- a/activitysim/abm/models/trip_purpose_and_destination.py +++ b/activitysim/abm/models/trip_purpose_and_destination.py @@ -12,7 +12,7 @@ cleanup_failed_trips, flag_failed_trip_leg_mates, ) -from activitysim.core import estimation, tracing, workflow +from activitysim.core import estimation, tracing, workflow, expressions from activitysim.core.configuration.base import PydanticReadable from activitysim.core.util import assign_in_place @@ -261,3 +261,11 @@ def trip_purpose_and_destination( index_label="trip_id", warn_if_empty=True, ) + + expressions.annotate_tables( + state, + locals_dict={}, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/abm/models/trip_scheduling.py b/activitysim/abm/models/trip_scheduling.py index fa69567ec..0e45d463d 100644 --- a/activitysim/abm/models/trip_scheduling.py +++ b/activitysim/abm/models/trip_scheduling.py @@ -224,7 +224,6 @@ def schedule_trips_in_leg( failfix = model_settings.FAILFIX depart_alt_base = model_settings.DEPART_ALT_BASE scheduling_mode = model_settings.scheduling_mode - preprocessor_settings = model_settings.preprocessor probs_join_cols = model_settings.probs_join_cols if probs_join_cols is None: @@ -286,14 +285,14 @@ def schedule_trips_in_leg( nth_trace_label = tracing.extend_trace_label(trace_label, "num_%s" % i) # - annotate trips - if preprocessor_settings: - expressions.assign_columns( - state, - df=trips, - model_settings=preprocessor_settings, - locals_dict=locals_dict, - trace_label=nth_trace_label, - ) + expressions.annotate_preprocessors( + state, + df=trips, + locals_dict=locals_dict, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) if ( outbound @@ -682,3 +681,11 @@ def trip_scheduling( assert not trips_df.depart.isnull().any() state.add_table("trips", trips_df) + + expressions.annotate_tables( + state, + locals_dict={}, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/abm/models/trip_scheduling_choice.py b/activitysim/abm/models/trip_scheduling_choice.py index 5f58e68ee..510d4ece8 100644 --- a/activitysim/abm/models/trip_scheduling_choice.py +++ b/activitysim/abm/models/trip_scheduling_choice.py @@ -280,6 +280,17 @@ def run_trip_scheduling_choice( choosers = choosers.sort_index() schedules = generate_schedule_alternatives(choosers).sort_index() + # preprocessing alternatives + expressions.annotate_preprocessors( + state, + df=schedules, + locals_dict=locals_dict, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + preprocessor_setting_name="alts_preprocessor", + ) + # Assuming we did the max_alt_size calculation correctly, # we should get the same sizes here. assert choosers[NUM_ALTERNATIVES].sum() == schedules.shape[0] @@ -340,6 +351,8 @@ class TripSchedulingChoiceSettings(PydanticReadable, extra="forbid"): PREPROCESSOR: PreprocessorSettings | None = None """Setting for the preprocessor.""" + alts_preprocessor: PreprocessorSettings | None = None + """Setting for the alternatives preprocessor.""" SPECIFICATION: str """file name of specification file""" @@ -396,34 +409,32 @@ def trip_scheduling_choice( .reindex(tours.index) ) - preprocessor_settings = model_settings.PREPROCESSOR - # hack: preprocessor adds origin column in place if it does not exist already od_skim_stack_wrapper = skim_dict.wrap("origin", "destination") do_skim_stack_wrapper = skim_dict.wrap("destination", "origin") obib_skim_stack_wrapper = skim_dict.wrap(LAST_OB_STOP, FIRST_IB_STOP) - skims = [od_skim_stack_wrapper, do_skim_stack_wrapper, obib_skim_stack_wrapper] - - locals_dict = { + skims = { "od_skims": od_skim_stack_wrapper, "do_skims": do_skim_stack_wrapper, "obib_skims": obib_skim_stack_wrapper, + } + locals_dict = { "orig_col_name": "origin", "dest_col_name": "destination", "timeframe": "timeless_directional", } + locals_dict.update(skims) - if preprocessor_settings: - simulate.set_skim_wrapper_targets(tours_df, skims) - - expressions.assign_columns( - state, - df=tours_df, - model_settings=preprocessor_settings, - locals_dict=locals_dict, - trace_label=trace_label, - ) + # preprocess choosers + expressions.annotate_preprocessors( + state, + df=tours_df, + locals_dict=locals_dict, + skims=skims, + model_settings=model_settings, + trace_label=trace_label, + ) tours_df = run_trip_scheduling_choice( state, @@ -436,3 +447,11 @@ def trip_scheduling_choice( ) state.add_table("tours", tours_df) + + expressions.annotate_tables( + state, + locals_dict=locals_dict, + skims=skims, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/abm/models/util/annotate.py b/activitysim/abm/models/util/annotate.py deleted file mode 100644 index 5c0f62821..000000000 --- a/activitysim/abm/models/util/annotate.py +++ /dev/null @@ -1,136 +0,0 @@ -# ActivitySim -# See full license in LICENSE.txt. -from __future__ import annotations - -import logging - -import pandas as pd - -from activitysim.core import expressions, tracing, workflow -from activitysim.core.configuration import PydanticBase - -""" -Code for annotating tables -""" - -logger = logging.getLogger(__name__) - - -def annotate_households( - state: workflow.State, - model_settings: dict | PydanticBase, - trace_label: str, - locals_dict: dict | None = None, -): - """ - Add columns to the households table in the pipeline according to spec. - - Parameters - ---------- - model_settings : dict - trace_label : str - """ - if isinstance(model_settings, PydanticBase): - model_settings = model_settings.dict() - if locals_dict is None: - locals_dict = {} - households = state.get_dataframe("households") - expressions.assign_columns( - state, - df=households, - model_settings=model_settings.get("annotate_households"), - locals_dict=locals_dict, - trace_label=tracing.extend_trace_label(trace_label, "annotate_households"), - ) - state.add_table("households", households) - - -def annotate_persons( - state: workflow.State, - model_settings: dict | PydanticBase, - trace_label: str, - locals_dict: dict | None = None, -): - """ - Add columns to the persons table in the pipeline according to spec. - - Parameters - ---------- - model_settings : dict - trace_label : str - """ - if isinstance(model_settings, PydanticBase): - model_settings = model_settings.dict() - if locals_dict is None: - locals_dict = {} - persons = state.get_dataframe("persons") - expressions.assign_columns( - state, - df=persons, - model_settings=model_settings.get("annotate_persons"), - locals_dict=locals_dict, - trace_label=tracing.extend_trace_label(trace_label, "annotate_persons"), - ) - state.add_table("persons", persons) - - -def annotate_tours( - state: workflow.State, - model_settings: dict | PydanticBase, - trace_label: str, - locals_dict: dict | None = None, -): - """ - Add columns to the tours table in the pipeline according to spec. - - Parameters - ---------- - state : workflow.State - model_settings : dict or PydanticBase - trace_label : str - locals_dict : dict, optional - """ - if isinstance(model_settings, PydanticBase): - model_settings = model_settings.dict() - if locals_dict is None: - locals_dict = {} - tours = state.get_dataframe("tours") - expressions.assign_columns( - state, - df=tours, - model_settings=model_settings.get("annotate_tours"), - locals_dict=locals_dict, - trace_label=tracing.extend_trace_label(trace_label, "annotate_tours"), - ) - state.add_table("tours", tours) - - -def annotate_trips( - state: workflow.State, - model_settings: dict | PydanticBase, - trace_label: str, - locals_dict=None, -): - """ - Add columns to the trips table in the pipeline according to spec. - - Parameters - ---------- - state : workflow.State - model_settings : dict or PydanticBase - trace_label : str - locals_dict : dict, optional - """ - if isinstance(model_settings, PydanticBase): - model_settings = model_settings.dict() - if locals_dict is None: - locals_dict = {} - trips = state.get_dataframe("trips") - expressions.assign_columns( - state, - df=trips, - model_settings=model_settings.get("annotate_trips"), - locals_dict=locals_dict, - trace_label=tracing.extend_trace_label(trace_label, "annotate_trips"), - ) - state.add_table("trips", trips) diff --git a/activitysim/abm/models/util/tour_destination.py b/activitysim/abm/models/util/tour_destination.py index 0891b8d21..7234355fd 100644 --- a/activitysim/abm/models/util/tour_destination.py +++ b/activitysim/abm/models/util/tour_destination.py @@ -9,7 +9,7 @@ from activitysim.abm.models.util import logsums as logsum from activitysim.abm.tables.size_terms import tour_destination_size_terms -from activitysim.core import config, los, simulate, tracing, workflow +from activitysim.core import config, los, simulate, tracing, workflow, expressions from activitysim.core.configuration.logit import TourLocationComponentSettings from activitysim.core.interaction_sample import interaction_sample from activitysim.core.interaction_sample_simulate import interaction_sample_simulate @@ -109,6 +109,27 @@ def _destination_sample( log_alt_losers = state.settings.log_alt_losers + # preprocess choosers table + expressions.annotate_preprocessors( + state, + df=choosers, + locals_dict=locals_d, + skims=skims, + model_settings=model_settings, + trace_label=trace_label, + ) + + # preprocess alternatives table + expressions.annotate_preprocessors( + state, + df=destination_size_terms, + locals_dict=locals_d, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + preprocessor_setting_name="alts_preprocessor_sample", + ) + choices = interaction_sample( state, choosers, @@ -761,6 +782,27 @@ def run_destination_simulate( if constants is not None: locals_d.update(constants) + # preprocess choosers table + expressions.annotate_preprocessors( + state, + df=choosers, + locals_dict=locals_d, + skims=skims, + model_settings=model_settings, + trace_label=trace_label, + ) + + # preprocess alternatives table + expressions.annotate_preprocessors( + state, + df=destination_sample, + locals_dict=locals_d, + skims=skims, + model_settings=model_settings, + trace_label=trace_label, + preprocessor_setting_name="alts_preprocessor_simulate", + ) + state.tracing.dump_df(DUMP, choosers, trace_label, "choosers") log_alt_losers = state.settings.log_alt_losers diff --git a/activitysim/abm/models/util/tour_frequency.py b/activitysim/abm/models/util/tour_frequency.py index 93c624b13..3c64f4bcc 100644 --- a/activitysim/abm/models/util/tour_frequency.py +++ b/activitysim/abm/models/util/tour_frequency.py @@ -643,8 +643,7 @@ class JointTourFreqCompSettings(LogitComponentSettings, extra="forbid"): """ ALTS_TABLE_STRUCTURE: JointTourFreqCompAlts = JointTourFreqCompAlts() - preprocessor: PreprocessorSettings | None = None - ALTS_PREPROCESSOR: PreprocessorSettings | None = None + ALTS_PREPROCESSOR: PreprocessorSettings | list[PreprocessorSettings] | None = None def create_joint_tours( diff --git a/activitysim/abm/models/util/tour_od.py b/activitysim/abm/models/util/tour_od.py index 7c615142f..96ec9aba8 100644 --- a/activitysim/abm/models/util/tour_od.py +++ b/activitysim/abm/models/util/tour_od.py @@ -47,7 +47,6 @@ class TourODSettings(TourLocationComponentSettings): ORIGIN_ATTR_COLS_TO_USE: list[str] = [] ORIG_COL_NAME: str ORIG_FILTER: str | None = None - preprocessor: PreprocessorSettings | None = None def get_od_id_col(origin_col, destination_col): @@ -203,6 +202,17 @@ def _od_sample( elif skims.orig_key not in od_alts_df: logger.error("Alts df is missing origin skim key column.") + # preprocessing alternatives + expressions.annotate_preprocessors( + state, + df=od_alts_df, + locals_dict=locals_d, + skims=skims, + model_settings=model_settings, + trace_label=trace_label, + preprocessor_setting_name="alts_preprocessor_sample", + ) + choices = interaction_sample( state, choosers, @@ -658,54 +668,6 @@ def od_presample( return maz_choices -# class SizeTermCalculatorOD: # class SizeTermCalculator -# """ -# convenience object to provide size_terms for a selector (e.g. -# non_mandatory) for various segments (e.g. tour_type or purpose) -# returns size terms for specified segment in df or series form. -# """ -# -# def __init__(self, size_term_selector): -# # do this once so they can request size_terms for various segments (tour_type or purpose) -# land_use = state.checkpoint.load_dataframe("land_use") -# self.land_use = land_use -# size_terms = state.get_injectable("size_terms") -# self.destination_size_terms = tour_destination_size_terms( -# self.land_use, size_terms, size_term_selector -# ) -# -# assert not self.destination_size_terms.isna().any(axis=None) -# -# def omnibus_size_terms_df(self): -# return self.destination_size_terms -# -# def dest_size_terms_df(self, segment_name, trace_label): -# # return size terms as df with one column named 'size_term' -# # convenient if creating or merging with alts -# -# size_terms = self.destination_size_terms[[segment_name]].copy() -# size_terms.columns = ["size_term"] -# -# # FIXME - no point in considering impossible alternatives (where dest size term is zero) -# logger.debug( -# f"SizeTermCalculator dropping {(~(size_terms.size_term > 0)).sum()} " -# f"of {len(size_terms)} rows where size_term is zero for {segment_name}" -# ) -# size_terms = size_terms[size_terms.size_term > 0] -# -# if len(size_terms) == 0: -# logger.warning( -# f"SizeTermCalculator: no zones with non-zero size terms for {segment_name} in {trace_label}" -# ) -# -# return size_terms -# -# def dest_size_terms_series(self, segment_name): -# # return size terms as as series -# # convenient (and no copy overhead) if reindexing and assigning into alts column -# return self.destination_size_terms[segment_name] - - def run_od_sample( state, spec_segment_name, @@ -1044,6 +1006,17 @@ def run_od_simulate( if constants is not None: locals_d.update(constants) + # preprocessing alternatives + expressions.annotate_preprocessors( + state, + df=od_sample, + locals_dict=locals_d, + skims=skims, + model_settings=model_settings, + trace_label=trace_label, + preprocessor_setting_name="alts_preprocessor_simulate", + ) + state.tracing.dump_df(DUMP, choosers, trace_label, "choosers") choices = interaction_sample_simulate( state, @@ -1085,7 +1058,6 @@ def run_tour_od( trace_label, ): size_term_calculator = SizeTermCalculator(state, model_settings.SIZE_TERM_SELECTOR) - preprocessor_settings = model_settings.preprocessor origin_col_name = model_settings.ORIG_COL_NAME chooser_segment_column = model_settings.CHOOSER_SEGMENT_COLUMN_NAME @@ -1108,15 +1080,15 @@ def run_tour_od( right_index=True, ) - # - annotate choosers - if preprocessor_settings: - expressions.assign_columns( - state, - df=choosers, - model_settings=preprocessor_settings, - trace_label=trace_label, - ) - + # preprocessing choosers + expressions.annotate_preprocessors( + state, + df=choosers, + locals_dict={}, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) # size_term segment is segment_name segment_destination_size_terms = size_term_calculator.dest_size_terms_df( segment_name, trace_label diff --git a/activitysim/abm/models/util/tour_scheduling.py b/activitysim/abm/models/util/tour_scheduling.py index db003786f..0a7c6675d 100644 --- a/activitysim/abm/models/util/tour_scheduling.py +++ b/activitysim/abm/models/util/tour_scheduling.py @@ -16,20 +16,13 @@ def run_tour_scheduling( state: workflow.State, - model_name: str, + model_settings: TourSchedulingSettings, chooser_tours: pd.DataFrame, persons_merged: pd.DataFrame, tdd_alts: pd.DataFrame, tour_segment_col: str, + trace_label: str, ): - trace_label = model_name - model_settings_file_name = f"{model_name}.yaml" - - model_settings = TourSchedulingSettings.read_settings_file( - state.filesystem, - model_settings_file_name, - mandatory=False, - ) if model_settings.LOGSUM_SETTINGS: logsum_settings = TourModeComponentSettings.read_settings_file( @@ -52,18 +45,19 @@ def run_tour_scheduling( timetable = state.get_injectable("timetable") # - run preprocessor to annotate choosers - preprocessor_settings = model_settings.preprocessor - if preprocessor_settings: - locals_d = {"tt": timetable.attach_state(state)} - locals_d.update(config.get_model_constants(model_settings)) - - expressions.assign_columns( - state, - df=chooser_tours, - model_settings=preprocessor_settings, - locals_dict=locals_d, - trace_label=trace_label, - ) + locals_d = {"tt": timetable.attach_state(state)} + locals_d.update(config.get_model_constants(model_settings)) + + # preprocess choosers + expressions.annotate_preprocessors( + state, + df=chooser_tours, + locals_dict=locals_d, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) + # alts preprocessed in vectorize_tour_scheduling estimators = {} if model_settings.TOUR_SPEC_SEGMENTS: @@ -72,7 +66,7 @@ def run_tour_scheduling( specs = {} compute_settings = {} for spec_segment_name, spec_settings in spec_segment_settings.items(): - bundle_name = f"{model_name}_{spec_segment_name}" + bundle_name = f"{trace_label}_{spec_segment_name}" # estimator for this tour_segment estimator = estimation.manager.begin_estimation( @@ -91,7 +85,7 @@ def run_tour_scheduling( if estimator: estimators[spec_segment_name] = estimator # add to local list - estimator.write_model_settings(model_settings, model_settings_file_name) + estimator.write_model_settings(model_settings, f"{trace_label}.yaml") estimator.write_spec(spec_settings) estimator.write_coefficients(coefficients_df, spec_settings) @@ -121,7 +115,7 @@ def run_tour_scheduling( assert not model_settings.TOUR_SPEC_SEGMENTS assert tour_segment_col is None - estimator = estimation.manager.begin_estimation(state, model_name) + estimator = estimation.manager.begin_estimation(state, trace_label) spec_file_name = model_settings.SPEC model_spec = state.filesystem.read_model_spec(file_name=spec_file_name) @@ -132,7 +126,7 @@ def run_tour_scheduling( if estimator: estimators[None] = estimator # add to local list - estimator.write_model_settings(model_settings, model_settings_file_name) + estimator.write_model_settings(model_settings, f"{trace_label}.yaml") estimator.write_spec(model_settings) estimator.write_coefficients(coefficients_df, model_settings) @@ -146,7 +140,7 @@ def run_tour_scheduling( if estimators: timetable.begin_transaction(list(estimators.values())) - logger.info(f"Running {model_name} with %d tours", len(chooser_tours)) + logger.info(f"Running {trace_label} with %d tours", len(chooser_tours)) choices = vts.vectorize_tour_scheduling( state, chooser_tours, diff --git a/activitysim/abm/models/util/vectorize_tour_scheduling.py b/activitysim/abm/models/util/vectorize_tour_scheduling.py index dfab8171d..d4593c21f 100644 --- a/activitysim/abm/models/util/vectorize_tour_scheduling.py +++ b/activitysim/abm/models/util/vectorize_tour_scheduling.py @@ -43,8 +43,6 @@ class TourSchedulingSettings(LogitComponentSettings, extra="forbid"): give the segements. """ SIMULATE_CHOOSER_COLUMNS: list[str] | None = None - preprocessor: PreprocessorSettings | None = None - """Setting for the preprocessor.""" SPEC_SEGMENTS: dict[str, LogitComponentSettings] = {} diff --git a/activitysim/abm/models/vehicle_allocation.py b/activitysim/abm/models/vehicle_allocation.py index a84dfaabf..a3f04037c 100644 --- a/activitysim/abm/models/vehicle_allocation.py +++ b/activitysim/abm/models/vehicle_allocation.py @@ -90,10 +90,7 @@ class VehicleAllocationSettings(LogitComponentSettings, extra="forbid"): Settings for the `vehicle_allocation` component. """ - preprocessor: PreprocessorSettings | None = None - """Setting for the preprocessor.""" - - OCCUPANCY_LEVELS: list = [1] # TODO Check this + OCCUPANCY_LEVELS: list = [1] # TODO check this """Occupancy level It will create columns in the tour table selecting a vehicle for each of the @@ -101,9 +98,6 @@ class VehicleAllocationSettings(LogitComponentSettings, extra="forbid"): if not supplied, will default to only one occupancy level of 1 """ - annotate_tours: PreprocessorSettings | None = None - """Preprocessor settings to annotate tours""" - @workflow.step def vehicle_allocation( @@ -212,15 +206,14 @@ def vehicle_allocation( locals_dict.update(skims) # ------ preprocessor - preprocessor_settings = model_settings.preprocessor - if preprocessor_settings: - expressions.assign_columns( - state, - df=choosers, - model_settings=preprocessor_settings, - locals_dict=locals_dict, - trace_label=trace_label, - ) + expressions.annotate_preprocessors( + state, + df=choosers, + locals_dict=locals_dict, + skims=skims, + model_settings=model_settings, + trace_label=trace_label, + ) logger.info("Running %s with %d tours", trace_label, len(choosers)) @@ -286,9 +279,13 @@ def vehicle_allocation( "vehicle_allocation", tours[tours_veh_occup_cols], value_counts=True ) - annotate_settings = model_settings.annotate_tours - if annotate_settings: - annotate_vehicle_allocation(state, model_settings, trace_label) - if state.settings.trace_hh_id: state.tracing.trace_df(tours, label="vehicle_allocation", warn_if_empty=True) + + expressions.annotate_tables( + state, + locals_dict=locals_dict, + skims=skims, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/abm/models/vehicle_type_choice.py b/activitysim/abm/models/vehicle_type_choice.py index 93caae038..5347b5bb7 100644 --- a/activitysim/abm/models/vehicle_type_choice.py +++ b/activitysim/abm/models/vehicle_type_choice.py @@ -407,15 +407,16 @@ def iterate_vehicle_type_choice( ) # alts preprocessor - alts_preprocessor_settings = model_settings.alts_preprocessor - if alts_preprocessor_settings: - expressions.assign_columns( - state, - df=alts_wide, - model_settings=alts_preprocessor_settings, - locals_dict=locals_dict, - trace_label=trace_label, - ) + # preprocessing alternatives + expressions.annotate_preprocessors( + state, + df=alts_wide, + locals_dict=locals_dict, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + preprocessor_setting_name="alts_preprocessor", + ) # - preparing choosers for iterating vehicles_merged["already_owned_veh"] = "" @@ -434,15 +435,15 @@ def iterate_vehicle_type_choice( # running preprocessor on entire vehicle table to enumerate vehicle types # already owned by the household choosers = vehicles_merged - preprocessor_settings = model_settings.preprocessor - if preprocessor_settings: - expressions.assign_columns( - state, - df=choosers, - model_settings=preprocessor_settings, - locals_dict=locals_dict, - trace_label=trace_label, - ) + # preprocessing choosers + expressions.annotate_preprocessors( + state, + df=choosers, + locals_dict=locals_dict, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) # only make choices for vehicles that have not been selected yet choosers = choosers[choosers["vehicle_num"] == veh_num] @@ -564,7 +565,6 @@ class VehicleTypeChoiceSettings(LogitComponentSettings, extra="forbid"): VEHICLE_TYPE_DATA_FILE: str | None = None PROBS_SPEC: str | None = None combinatorial_alts: dict | None = None - preprocessor: PreprocessorSettings | None = None alts_preprocessor: PreprocessorSettings | None = None SIMULATION_TYPE: Literal[ "simple_simulate", "interaction_simulate" @@ -576,10 +576,6 @@ class VehicleTypeChoiceSettings(LogitComponentSettings, extra="forbid"): COLS_TO_INCLUDE_IN_ALTS_TABLE: list[str] = [] """Columns to include in the alternatives table for use in utility calculations.""" - annotate_households: PreprocessorSettings | None = None - annotate_persons: PreprocessorSettings | None = None - annotate_vehicles: PreprocessorSettings | None = None - REQUIRE_DATA_FOR_ALL_ALTS: bool = False WRITE_OUT_ALTS_FILE: bool = False @@ -708,14 +704,6 @@ def vehicle_type_choice( vehicles = pd.concat([vehicles, choices], axis=1) state.add_table("vehicles", vehicles) - # - annotate tables - if model_settings.annotate_households: - annotate_vehicle_type_choice_households(state, model_settings, trace_label) - if model_settings.annotate_persons: - annotate_vehicle_type_choice_persons(state, model_settings, trace_label) - if model_settings.annotate_vehicles: - annotate_vehicle_type_choice_vehicles(state, model_settings, trace_label) - tracing.print_summary( "vehicle_type_choice", vehicles.vehicle_type, value_counts=True ) @@ -724,3 +712,11 @@ def vehicle_type_choice( state.tracing.trace_df( vehicles, label="vehicle_type_choice", warn_if_empty=True ) + + expressions.annotate_tables( + state, + locals_dict=locals_dict, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/abm/models/work_from_home.py b/activitysim/abm/models/work_from_home.py index 8b96dafa1..6b8f8d781 100755 --- a/activitysim/abm/models/work_from_home.py +++ b/activitysim/abm/models/work_from_home.py @@ -18,6 +18,7 @@ from activitysim.core.configuration.base import PreprocessorSettings, PydanticReadable from activitysim.core.configuration.logit import LogitComponentSettings + logger = logging.getLogger("activitysim") @@ -26,9 +27,6 @@ class WorkFromHomeSettings(LogitComponentSettings, extra="forbid"): Settings for the `work_from_home` component. """ - preprocessor: PreprocessorSettings | None = None - """Setting for the preprocessor.""" - WORK_FROM_HOME_ALT: int """Value that specify if the person is working from home""" # TODO @@ -88,20 +86,14 @@ def work_from_home( constants = config.get_model_constants(model_settings) work_from_home_alt = model_settings.WORK_FROM_HOME_ALT - # - preprocessor - preprocessor_settings = model_settings.preprocessor - if preprocessor_settings: - locals_d = {} - if constants is not None: - locals_d.update(constants) - - expressions.assign_columns( - state, - df=choosers, - model_settings=preprocessor_settings, - locals_dict=locals_d, - trace_label=trace_label, - ) + expressions.annotate_preprocessors( + state, + df=choosers, + locals_dict=constants, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) model_spec = state.filesystem.read_model_spec(file_name=model_settings.SPEC) coefficients_df = state.filesystem.read_model_coefficients(model_settings) @@ -221,3 +213,11 @@ def work_from_home( if state.settings.trace_hh_id: state.tracing.trace_df(persons, label=trace_label, warn_if_empty=True) + + expressions.annotate_tables( + state, + locals_dict=constants, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/core/configuration/logit.py b/activitysim/core/configuration/logit.py index d03bcab77..7688ac1bb 100644 --- a/activitysim/core/configuration/logit.py +++ b/activitysim/core/configuration/logit.py @@ -77,6 +77,31 @@ class BaseLogitComponentSettings(PydanticCompute): CONSTANTS: dict[str, Any] = {} """Named constants usable in the utility expressions.""" + preprocessor: PreprocessorSettings | list[PreprocessorSettings] | None = None + """Chooser preprocessor settings. + + This is a set of expressions to be evaluated on the choosers + before the logit model is run. It is used to prepare the choosers + for the logit model by adding columns that are used in the + utility expressions. + """ + + annotate_households: PreprocessorSettings | None = None + """Annotate households output tables with additional columns. + + These settings are used to add additional columns to the output tables + after the logit model is run. They are typically used to add + additional attributes that are derived from the model results. + """ + annotate_persons: PreprocessorSettings | None = None + """Annotate persons output tables with additional columns.""" + annotate_tours: PreprocessorSettings | None = None + """Annotate tours output tables with additional columns.""" + annotate_trips: PreprocessorSettings | None = None + """Annotate trips output tables with additional columns.""" + annotate_vehicles: PreprocessorSettings | None = None + """Annotate vehicles output tables with additional columns.""" + # sharrow_skip is deprecated in factor of compute_settings.sharrow_skip @model_validator(mode="before") @classmethod @@ -196,6 +221,11 @@ class LocationComponentSettings(BaseLogitComponentSettings): If less than 1, use this fraction of the total number of rows. """ + alts_preprocessor_sample: PreprocessorSettings | None = None + """Alternatives preprocessor settings to use when sampling alternatives.""" + alts_preprocessor_simulate: PreprocessorSettings | None = None + """Alternatives preprocessor settings to use when simulating choices.""" + class TourLocationComponentSettings(LocationComponentSettings, extra="forbid"): # Logsum-related settings @@ -207,7 +237,6 @@ class TourLocationComponentSettings(LocationComponentSettings, extra="forbid"): SEGMENTS: list[str] | None = None SIZE_TERM_SELECTOR: str | None = None - annotate_tours: PreprocessorSettings | None = None CHOOSER_FILTER_COLUMN_NAME: str | None = None DEST_CHOICE_COLUMN_NAME: str | None = None @@ -221,8 +250,6 @@ class TourLocationComponentSettings(LocationComponentSettings, extra="forbid"): SEGMENT_IDS: dict[str, int] | dict[str, str] | dict[str, bool] | None = None SHADOW_PRICE_TABLE: str | None = None MODELED_SIZE_TABLE: str | None = None - annotate_persons: PreprocessorSettings | None = None - annotate_households: PreprocessorSettings | None = None SIMULATE_CHOOSER_COLUMNS: list[str] | None = None ALT_DEST_COL_NAME: str LOGSUM_TOUR_PURPOSE: str | dict[str, str] | None = None @@ -249,8 +276,6 @@ class TourModeComponentSettings(TemplatedLogitComponentSettings, extra="forbid") COMPUTE_TRIP_MODE_CHOICE_LOGSUMS: bool = False tvpb_mode_path_types: dict[str, Any] | None = None FORCE_ESCORTEE_CHAUFFEUR_MODE_MATCH: bool = True - annotate_tours: PreprocessorSettings | None = None - preprocessor: PreprocessorSettings | list[PreprocessorSettings] | None = None nontour_preprocessor: PreprocessorSettings | list[ PreprocessorSettings ] | None = None diff --git a/activitysim/core/expressions.py b/activitysim/core/expressions.py index 413636d3f..e6ef0b8e6 100644 --- a/activitysim/core/expressions.py +++ b/activitysim/core/expressions.py @@ -6,7 +6,7 @@ import pandas as pd -from activitysim.core import assign, simulate, tracing, workflow +from activitysim.core import config, assign, simulate, tracing, workflow from activitysim.core.configuration.base import PreprocessorSettings, PydanticBase from activitysim.core.util import ( assign_in_place, @@ -184,26 +184,65 @@ def assign_columns( def annotate_preprocessors( state: workflow.State, df: pd.DataFrame, - locals_dict, - skims, + locals_dict: dict, + skims: dict | None, model_settings: PydanticBase | dict, trace_label: str, + preprocessor_setting_name: str = "preprocessor", ): - locals_d = {} - locals_d.update(locals_dict) - locals_d.update(skims) + """ + Look through the preprocessor settings and apply the calculations to the dataframe. + This is generally called before the main model calculations to prepare the data. + + Parameters + ---------- + state : workflow.State + The current state of the workflow. + df : pd.DataFrame + DataFrame to which the preprocessor settings will be applied. + locals_dict : dict + Dictionary of local variables to be used in the expressions. + skims : dict | None + Dictionary of skims to be used in the expressions. + model_settings : PydanticBase | dict + Model settings containing the preprocessor settings. + trace_label : str + Label for tracing the operations. + preprocessor_setting_name : str + Name of the preprocessor settings key in the model settings. + + Returns + ------- + None -- dataframe is modified in place + + """ + if isinstance(model_settings, PydanticBase): + preprocessor_settings = getattr(model_settings, preprocessor_setting_name, []) + elif isinstance(model_settings, dict): + preprocessor_settings = model_settings.get(preprocessor_setting_name, []) + else: + raise ValueError( + f"Expected model_settings to be PydanticBase or dict, got {type(model_settings)}" + ) + + if not preprocessor_settings or preprocessor_settings == []: + return - try: - preprocessor_settings = model_settings.preprocessor - except AttributeError: - preprocessor_settings = model_settings.get("preprocessor", []) - if preprocessor_settings is None: - preprocessor_settings = [] if not isinstance(preprocessor_settings, list): assert isinstance(preprocessor_settings, dict | PreprocessorSettings) preprocessor_settings = [preprocessor_settings] - simulate.set_skim_wrapper_targets(df, skims) + locals_d = {} + locals_d.update(locals_dict) + if skims: + try: + simulate.set_skim_wrapper_targets(df, skims) + locals_d.update(skims) + except AssertionError as e: + logger.warning( + "Failed to set skim wrapper targets: %s. Skims wrappers may not be used in expressions.", + e, + ) for preproc_settings in preprocessor_settings: results = compute_columns( @@ -211,7 +250,9 @@ def annotate_preprocessors( df=df, model_settings=preproc_settings, locals_dict=locals_d, - trace_label=trace_label, + trace_label=tracing.extend_trace_label( + trace_label, preprocessor_setting_name + ), ) assign_in_place( @@ -219,6 +260,85 @@ def annotate_preprocessors( ) +def annotate_tables( + state: workflow.State, + model_settings: PydanticBase | dict, + trace_label: str, + skims: dict | None = None, + locals_dict: dict | None = None, +): + """ + Look through the annotate settings and apply the calculations to the tables. + This is generally called after the main model calculations to add data to output tables. + + Parameters + ---------- + state : workflow.State + The current state of the workflow. + model_settings : PydanticBase | dict + Model settings containing the annotation settings for various tables. + trace_label : str + Label for tracing the operations. + skims : dict | None + Dictionary of skims to be used in the expressions, if applicable. + locals_dict : dict | None + Dictionary of local variables to be used in the expressions, if applicable. + + Returns + ------- + None -- tables are modified in place + """ + + # process tables in least to most aggregated order + tables = ["trips", "tours", "vehicles", "persons", "households"] + + for table_name in tables: + if isinstance(model_settings, PydanticBase): + annotate_settings = getattr(model_settings, f"annotate_{table_name}", None) + elif isinstance(model_settings, dict): + annotate_settings = model_settings.get(f"annotate_{table_name}", None) + else: + raise ValueError( + f"Expected model_settings to be PydanticBase or dict, got {type(model_settings)}" + ) + + if annotate_settings is None: + continue + assert isinstance( + annotate_settings, (dict, PreprocessorSettings) + ), f"Expected annotate_{table_name} to be dict or PreprocessorSettings, got {type(annotate_settings)}" + + df = state.get_dataframe(table_name) + + locals_d = {} + if skims: + try: + simulate.set_skim_wrapper_targets(df, skims) + locals_d.update(skims) + except AssertionError as e: + logger.warning( + "Failed to set skim wrapper targets: %s. Skims wrappers may not be used in expressions.", + e, + ) + if locals_dict: + locals_d.update(locals_dict) + + results = compute_columns( + state, + df=df, + model_settings=annotate_settings, + locals_dict=locals_d, + trace_label=tracing.extend_trace_label(trace_label, "annotate_persons"), + ) + + assign_in_place( + df, results, state.settings.downcast_int, state.settings.downcast_float + ) + + # write table with new columns back to state + state.add_table(table_name, df) + + def filter_chooser_columns(choosers, chooser_columns): missing_columns = [c for c in chooser_columns if c not in choosers] if missing_columns: diff --git a/activitysim/core/test/configs/preprocessor.csv b/activitysim/core/test/configs/preprocessor.csv new file mode 100644 index 000000000..e2f5c29b9 --- /dev/null +++ b/activitysim/core/test/configs/preprocessor.csv @@ -0,0 +1,8 @@ +Description,Target,Expression +income from households table,_hh_income,"reindex(households.income, df.household_id)" +income test,is_high_income,_hh_income > 50000 +count persons test,num_persons,persons.groupby('household_id').size().reindex(df.household_id) +skim dict test,od_distance,"skim_dict.lookup(df.origin, df.destination, 'DIST')" +skim wrapper test,od_distance_wrapper,skims2d['DIST'] +sov time,od_sov_time,skims3d['SOV_TIME'] +testing constant from locals_dict,constant_test,test_constant / 2 \ No newline at end of file diff --git a/activitysim/core/test/test_preprocessing.py b/activitysim/core/test/test_preprocessing.py new file mode 100644 index 000000000..06c778560 --- /dev/null +++ b/activitysim/core/test/test_preprocessing.py @@ -0,0 +1,197 @@ +# ActivitySim +# See full license in LICENSE.txt. +from __future__ import annotations + +import logging +import logging.config +import os.path + +import numpy as np +import pandas as pd +import pytest + +from activitysim.core import workflow, expressions, los +from activitysim.core.configuration.base import PreprocessorSettings + + +def add_canonical_dirs(configs_dir_name): + state = workflow.State() + los_configs_dir = os.path.join(os.path.dirname(__file__), f"los/{configs_dir_name}") + configs_dir = os.path.join(os.path.dirname(__file__), "configs") + data_dir = os.path.join(os.path.dirname(__file__), f"los/data") + output_dir = os.path.join(os.path.dirname(__file__), "output") + state.initialize_filesystem( + working_dir=os.path.dirname(__file__), + configs_dir=(los_configs_dir, configs_dir), + output_dir=output_dir, + data_dir=(data_dir,), + ) + return state + + +@pytest.fixture +def state() -> workflow.State: + state = add_canonical_dirs("configs_1z").load_settings() + network_los = los.Network_LOS(state) + network_los.load_data() + state.set("skim_dict", network_los.get_default_skim_dict()) + return state + + +@pytest.fixture(scope="module") +def households(): + return pd.DataFrame( + { + "household_id": [1, 2, 3], + "home_zone_id": [1, 2, 3], + "income": [50000, 60000, 70000], + } + ).set_index("household_id") + + +@pytest.fixture(scope="module") +def persons(): + return pd.DataFrame( + { + "person_id": [1, 2, 3, 4, 5], + "household_id": [1, 1, 2, 2, 3], + "age": [25, 30, 22, 28, 35], + } + ).set_index("person_id") + + +@pytest.fixture(scope="module") +def tours(): + return pd.DataFrame( + { + "tour_id": [1, 2, 3], + "household_id": [1, 2, 3], + "person_id": [1, 2, 3], + "tour_type": ["work", "shopping", "othmaint"], + "origin": [1, 2, 3], + "destination": [2, 3, 1], + "period": ["AM", "PM", "AM"], + } + ).set_index("tour_id") + + +def check_outputs(tours): + """ + Check that the tours DataFrame has the expected new columns and values + according to the preprocessor / annotator expressions. + """ + new_cols = [ + "is_high_income", + "num_persons", + "od_distance", + "od_distance_wrapper", + "od_sov_time", + "constant_test", + ] + + # check all new columns are added + assert all( + col in tours.columns for col in new_cols + ), f"Missing columns: {set(new_cols) - set(tours.columns)}" + + # column with _ shouldn't be in the columns + assert ( + "_hh_income" not in tours.columns + ), f"Unexpected column found: _hh_income in {tours.columns}" + + # check the values in the new columns + exppected_output = pd.DataFrame( + { + "tour_id": [1, 2, 3], + "is_high_income": [False, True, True], + "num_persons": [2, 2, 1], + "od_distance": [0.24, 0.28, 0.57], + "od_distance_wrapper": [0.24, 0.28, 0.57], + "od_sov_time": [0.78, 0.89, 1.76], + "constant_test": [21, 21, 21], + } + ).set_index("tour_id") + pd.testing.assert_frame_equal(tours[new_cols], exppected_output, check_dtype=False) + + +def setup_skims(state: workflow.State): + """Creates a set of skim wrappers to test in expressions.""" + skim_dict = state.get("skim_dict") + skims3d = skim_dict.wrap_3d( + orig_key="origin", dest_key="destination", dim3_key="period" + ) + skims2d = skim_dict.wrap("origin", "destination") + return {"skims3d": skims3d, "skims2d": skims2d} + + +def test_preprocessor(state: workflow.State, households, persons, tours): + # adding dataframes to state so they can be accessed in preprocessor + state.add_table("households", households) + state.add_table("persons", persons) + original_tours = tours.copy() + state.add_table("tours", original_tours) + + # defining preprocessor + preprocessor_settings = PreprocessorSettings( + SPEC="preprocessor.csv", + DF="tours", + TABLES=["persons", "households"], + ) + model_settings = {"preprocessor": preprocessor_settings} + + # annotating preprocessors + expressions.annotate_preprocessors( + state, + df=tours, + locals_dict={"test_constant": 42}, + skims=setup_skims(state), + model_settings=model_settings, + trace_label="ci_test_preprocessor", + ) + + check_outputs(tours) + + state_tours = state.get_table("tours") + # check that the state table is not modified + pd.testing.assert_frame_equal(state_tours, original_tours) + + +def test_annotator(state, households, persons, tours): + # adding dataframes to state so they can be accessed in annotator + state.add_table("households", households) + state.add_table("persons", persons) + original_tours = tours.copy() + state.add_table("tours", original_tours) + + # defining annotator + annotator_settings = PreprocessorSettings( + SPEC="preprocessor.csv", + DF="tours", + TABLES=["persons", "households"], + ) + model_settings = {"annotate_tours": annotator_settings} + + # annotating preprocessors + expressions.annotate_tables( + state, + model_settings=model_settings, + trace_label="ci_test_annotator", + skims=setup_skims(state), + locals_dict={"test_constant": 42}, + ) + + # outputs now put directly into the state object + check_outputs(state.get_table("tours")) + + # test what happens if we try to annotate a table that does not exist + model_settings = {"annotate_trips": annotator_settings} + + with pytest.raises(ValueError) as excinfo: + # this should raise an error because "trips" table does not exist in state + expressions.annotate_tables( + state, + model_settings=model_settings, + trace_label="ci_test_annotator", + skims=None, + locals_dict={"test_constant": 42}, + ) From 2e5f7327334bbf80cdaaebd0c29f86dd9054bc7d Mon Sep 17 00:00:00 2001 From: Sijia Wang Date: Mon, 21 Jul 2025 15:17:29 -0400 Subject: [PATCH 04/34] Implement UV for dependency lock (#956) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * first uv sync * explicitly set np.int64 dtype before calling pd set_index() Pandas 2 got rid of the `Int64Index` class, it was downcasting to int32 for the input land use table * Add all dependencies from Conda environments Consider removing unused ones at a later time * Remove orca This dependency was replaced with “state” for workflow orchestration. * Update release instructions for `uv` * Remove `--no-default-groups` from `uv sync` instructions * Trial updating Github Action to uv instead of conda * Bug fixes * Try downgrading sharrow * change core test to windows runner * use win for all core tests * index type mismatch * formatting * unlock sharrow to 2.14 * correct a typo * Update Model Setup page in user guide * Update Ways to Run the Model page * Remove duplicates * Simplify pyproject.toml for github action and use only this group * Update remainder of user guide docs * Update dev guide [makedocs] * Update lockfile from changes to dependencies * Remove conda from other github actions * Debug doc building [makedocs] * Update install instructions [makedocs] * update installation instructions [makedocs] * notes on uv options [makedocs] * address review comment --------- Co-authored-by: Josie Kressner --- .github/workflows/branch-docs.yml | 36 +- .github/workflows/core_tests.yml | 347 +- .github/workflows/deployment.yml | 30 +- .python-version | 1 + HOW_TO_RELEASE.md | 71 +- README.md | 2 +- .../abm/models/disaggregate_accessibility.py | 6 +- .../abm/models/mandatory_tour_frequency.py | 2 +- activitysim/core/input.py | 3 +- conda-environments/activitysim-dev-base.yml | 81 - conda-environments/activitysim-dev.yml | 79 - conda-environments/docbuild.yml | 62 - conda-environments/github-actions-tests.yml | 41 - docs/Makefile | 11 +- docs/dev-guide/build-docs.md | 11 +- docs/dev-guide/install.md | 71 +- docs/users-guide/example_models.rst | 11 +- docs/users-guide/model_anatomy.rst | 13 +- docs/users-guide/model_dev.rst | 15 +- docs/users-guide/modelsetup.rst | 257 +- docs/users-guide/other_examples.rst | 4 +- docs/users-guide/run_primary_example.rst | 18 +- docs/users-guide/visualization.rst | 6 +- docs/users-guide/ways_to_run.rst | 6 +- pyproject.toml | 78 +- uv.lock | 5047 +++++++++++++++++ 26 files changed, 5461 insertions(+), 848 deletions(-) create mode 100644 .python-version delete mode 100644 conda-environments/activitysim-dev-base.yml delete mode 100644 conda-environments/activitysim-dev.yml delete mode 100644 conda-environments/docbuild.yml delete mode 100644 conda-environments/github-actions-tests.yml create mode 100644 uv.lock diff --git a/.github/workflows/branch-docs.yml b/.github/workflows/branch-docs.yml index 3f2b8d549..ef5c437c5 100644 --- a/.github/workflows/branch-docs.yml +++ b/.github/workflows/branch-docs.yml @@ -21,39 +21,21 @@ jobs: with: fetch-depth: 0 # get all tags, lets setuptools_scm do its thing - - name: Setup Miniforge - uses: conda-incubator/setup-miniconda@v2 + - name: Install uv + uses: astral-sh/setup-uv@v5 with: - miniforge-version: latest - python-version: "3.10" - activate-environment: docbuild - auto-activate-base: false - auto-update-conda: false + version: "0.7.12" + enable-cache: true + cache-dependency-glob: "uv.lock" - - name: Set cache date for year and month - run: echo "DATE=$(date +'%Y%m')" >> $GITHUB_ENV - - - uses: actions/cache@v3 + - name: "Set up Python" + uses: actions/setup-python@v5 with: - path: /usr/share/miniconda3/envs/docbuild - key: linux-64-conda-${{ hashFiles('conda-environments/docbuild.yml') }}-${{ env.DATE }}-${{ env.CACHE_NUMBER }} - id: cache - - - name: Update environment - run: conda env update --verbose -n docbuild -f conda-environments/docbuild.yml - if: steps.cache.outputs.cache-hit != 'true' + python-version-file: ".python-version" - name: Install activitysim run: | - python -m pip install . - - - name: Conda checkup - run: | - conda info -a - conda list - echo REPOSITORY ${{ github.repository }} - echo REF ${{ github.ref }} - echo REF_NAME ${{ github.ref_name }} + uv sync --locked --dev - name: Build the docs run: | diff --git a/.github/workflows/core_tests.yml b/.github/workflows/core_tests.yml index c0d1a808b..2542ffd54 100644 --- a/.github/workflows/core_tests.yml +++ b/.github/workflows/core_tests.yml @@ -17,9 +17,6 @@ env: jobs: foundation: - strategy: - matrix: - python-version: ["3.10"] defaults: run: shell: bash -l {0} @@ -28,67 +25,46 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Setup Miniforge - uses: conda-incubator/setup-miniconda@v3 + - name: Install uv + uses: astral-sh/setup-uv@v5 with: - auto-update-conda: true - miniforge-version: latest - mamba-version: "2.0.5" - conda-solver: classic - conda-remove-defaults: true - activate-environment: asim-test - python-version: ${{ matrix.python-version }} - - - name: Set cache date for year and month - run: echo "DATE=$(date +'%Y%m')" >> $GITHUB_ENV - - - uses: actions/cache@v4 - with: - path: /usr/share/miniconda3/envs/asim-test - key: linux-64-conda-${{ hashFiles('conda-environments/github-actions-tests.yml') }}-${{ env.DATE }}-${{ env.CACHE_NUMBER }} - id: cache - - - name: Update environment - run: | - conda env update -n asim-test -f conda-environments/github-actions-tests.yml - if: steps.cache.outputs.cache-hit != 'true' + version: "0.7.12" + enable-cache: true + cache-dependency-glob: "uv.lock" + - name: "Set up Python" + uses: actions/setup-python@v5 + with: + python-version-file: ".python-version" + - name: Install activitysim - # installing without dependencies is faster, we trust that all needed dependencies - # are in the conda environment defined above. Also, this avoids pip getting - # confused and reinstalling tables (pytables). run: | - python -m pip install -e . --no-deps - - - name: Conda checkup - run: | - conda info -a - conda list + uv sync --locked --only-group github-action - name: Lint with Black run: | # stop the build if there are problems - black --check --diff . + uv run black --check --diff . - name: Test activitysim.core run: | - python -m pytest --pyargs activitysim.core + uv run pytest --pyargs activitysim.core - name: Test activitysim.abm.models run: | - python -m pytest --pyargs activitysim.abm.models + uv run pytest --pyargs activitysim.abm.models - name: Test activitysim.abm.test run: | - python -m pytest --pyargs activitysim.abm.test + uv run pytest --pyargs activitysim.abm.test - name: Test activitysim.cli run: | - python -m pytest --pyargs activitysim.cli + uv run pytest --pyargs activitysim.cli - name: Test activitysim.examples.test run: | - python -m pytest --pyargs activitysim.examples.test + uv run pytest --pyargs activitysim.examples.test cross-platform: @@ -115,70 +91,49 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Setup Miniforge - uses: conda-incubator/setup-miniconda@v3 + - name: Install uv + uses: astral-sh/setup-uv@v5 with: - auto-update-conda: true - miniforge-version: latest - mamba-version: "2.0.5" - conda-solver: classic - conda-remove-defaults: true - activate-environment: asim-test - python-version: ${{ matrix.python-version }} - - - name: Set cache date for year and month - run: echo "DATE=$(date +'%Y%m')" >> $GITHUB_ENV - - - uses: actions/cache@v4 - with: - path: ${{ env.CONDA }}/envs - key: ${{ matrix.label }}-conda-${{ hashFiles('conda-environments/github-actions-tests.yml') }}-${{ env.DATE }}-${{ env.CACHE_NUMBER }} - id: cache + version: "0.7.12" + enable-cache: true + cache-dependency-glob: "uv.lock" - - name: Update environment - run: | - conda env update -n asim-test -f conda-environments/github-actions-tests.yml - if: steps.cache.outputs.cache-hit != 'true' + - name: "Set up Python" + uses: actions/setup-python@v5 + with: + python-version-file: ".python-version" - name: Install activitysim - # installing without dependencies is faster, we trust that all needed dependencies - # are in the conda environment defined above. Also, this avoids pip getting - # confused and reinstalling tables (pytables). - run: | - python -m pip install -e . --no-deps - - - name: Conda checkup run: | - conda info -a - conda list + uv sync --locked --only-group github-action - name: Lint with Black run: | # stop the build if there are problems - black --check --diff . + uv run black --check --diff . - name: Test activitysim.core run: | - python -m pytest --pyargs activitysim.core + uv run pytest --pyargs activitysim.core - name: Test activitysim.abm.models run: | - python -m pytest --pyargs activitysim.abm.models + uv run pytest --pyargs activitysim.abm.models - name: Test activitysim.abm.test run: | - python -m pytest --pyargs activitysim.abm.test + uv run pytest --pyargs activitysim.abm.test - name: Test activitysim.cli run: | - python -m pytest --pyargs activitysim.cli + uv run pytest --pyargs activitysim.cli builtin_regional_models: needs: foundation env: python-version: "3.10" - label: linux-64 + label: win-64 strategy: matrix: region: @@ -194,48 +149,27 @@ jobs: fail-fast: false defaults: run: - shell: bash -l {0} + shell: pwsh name: ${{ matrix.region }} - runs-on: ubuntu-latest + runs-on: windows-latest steps: - uses: actions/checkout@v4 - - name: Setup Miniforge - uses: conda-incubator/setup-miniconda@v3 - with: - auto-update-conda: true - miniforge-version: latest - mamba-version: "2.0.5" - conda-solver: classic - conda-remove-defaults: true - activate-environment: asim-test - python-version: ${{ env.python-version }} - - - name: Set cache date for year and month - run: echo "DATE=$(date +'%Y%m')" >> $GITHUB_ENV - - - uses: actions/cache@v4 + - name: Install uv + uses: astral-sh/setup-uv@v5 with: - path: ${{ env.CONDA }}/envs - key: ${{ env.label }}-conda-${{ hashFiles('conda-environments/github-actions-tests.yml') }}-${{ env.DATE }}-${{ env.CACHE_NUMBER }} - id: cache - - - name: Update environment - run: | - conda env update -n asim-test -f conda-environments/github-actions-tests.yml - if: steps.cache.outputs.cache-hit != 'true' + version: "0.7.12" + enable-cache: true + cache-dependency-glob: "uv.lock" + - name: "Set up Python" + uses: actions/setup-python@v5 + with: + python-version-file: ".python-version" + - name: Install activitysim - # installing without dependencies is faster, we trust that all needed dependencies - # are in the conda environment defined above. Also, this avoids pip getting - # confused and reinstalling tables (pytables). - run: | - python -m pip install -e . --no-deps - - - name: Conda checkup run: | - conda info -a - conda list + uv sync --locked --only-group github-action # TODO: Cache sharrow compiled flows? The contents of __pycache__ appear to # be ignored, so this is not working as expected right now @@ -262,13 +196,13 @@ jobs: - name: Test ${{ matrix.region }} run: | - python -m pytest activitysim/examples/${{ matrix.region }}/test --durations=0 + uv run pytest activitysim/examples/${{ matrix.region }}/test --durations=0 external_regional_models: needs: foundation env: python-version: "3.10" - label: linux-64 + label: win-64 strategy: matrix: include: @@ -283,51 +217,28 @@ jobs: fail-fast: false defaults: run: - shell: bash -l {0} + shell: pwsh name: ${{ matrix.region }} - runs-on: ubuntu-latest + runs-on: windows-latest steps: - name: Checkout ActivitySim uses: actions/checkout@v4 - - name: Setup Miniforge - uses: conda-incubator/setup-miniconda@v3 - with: - auto-update-conda: true - miniforge-version: latest - mamba-version: "2.0.5" - conda-solver: classic - conda-remove-defaults: true - activate-environment: asim-test - python-version: ${{ env.python-version }} - - - name: Set cache date for year and month - run: echo "DATE=$(date +'%Y%m')" >> $GITHUB_ENV - - - uses: actions/cache@v4 + - name: Install uv + uses: astral-sh/setup-uv@v5 with: - path: | - ${{ env.CONDA }}/envs - ~/.cache/ActivitySim - key: ${{ env.label }}-conda-${{ hashFiles('conda-environments/github-actions-tests.yml') }}-${{ env.DATE }}-${{ env.CACHE_NUMBER }} - id: cache - - - name: Update environment - run: | - conda env update -n asim-test -f conda-environments/github-actions-tests.yml - if: steps.cache.outputs.cache-hit != 'true' + version: "0.7.12" + enable-cache: true + cache-dependency-glob: "uv.lock" + - name: "Set up Python" + uses: actions/setup-python@v5 + with: + python-version-file: ".python-version" + - name: Install activitysim - # installing without dependencies is faster, we trust that all needed dependencies - # are in the conda environment defined above. Also, this avoids pip getting - # confused and reinstalling tables (pytables). run: | - python -m pip install . --no-deps - - - name: Conda checkup - run: | - conda info -a - conda list + uv sync --locked --only-group github-action - name: Checkout Example uses: actions/checkout@v4 @@ -339,119 +250,74 @@ jobs: - name: Test ${{ matrix.region }} run: | cd ${{ matrix.region-repo }}/test - python -m pytest . + uv run pytest . random_seed_generation: needs: foundation env: python-version: "3.10" - label: linux-64 + label: win-64 defaults: run: - shell: bash -l {0} + shell: pwsh name: random_seed_generation_test - runs-on: ubuntu-latest + runs-on: windows-latest steps: - uses: actions/checkout@v4 - - name: Setup Miniforge - uses: conda-incubator/setup-miniconda@v3 + - name: Install uv + uses: astral-sh/setup-uv@v5 with: - auto-update-conda: true - miniforge-version: latest - mamba-version: "2.0.5" - conda-solver: classic - conda-remove-defaults: true - activate-environment: asim-test - python-version: ${{ env.python-version }} - - - name: Set cache date for year and month - run: echo "DATE=$(date +'%Y%m')" >> $GITHUB_ENV - - - uses: actions/cache@v4 - with: - path: ${{ env.CONDA }}/envs - key: ${{ env.label }}-conda-${{ hashFiles('conda-environments/github-actions-tests.yml') }}-${{ env.DATE }}-${{ env.CACHE_NUMBER }} - id: cache - - - name: Update environment - run: | - conda env update -n asim-test -f conda-environments/github-actions-tests.yml - if: steps.cache.outputs.cache-hit != 'true' + version: "0.7.12" + enable-cache: true + cache-dependency-glob: "uv.lock" + - name: "Set up Python" + uses: actions/setup-python@v5 + with: + python-version-file: ".python-version" + - name: Install activitysim - # installing without dependencies is faster, we trust that all needed dependencies - # are in the conda environment defined above. Also, this avoids pip getting - # confused and reinstalling tables (pytables). - run: | - python -m pip install -e . --no-deps - - - name: Conda checkup run: | - conda info -a - conda list + uv sync --locked --only-group github-action - name: Test Random Seed Generation run: | - python -m pytest test/random_seed/test_random_seed.py --durations=0 + uv run pytest test/random_seed/test_random_seed.py --durations=0 estimation_mode: needs: foundation env: python-version: "3.10" - label: linux-64 + label: win-64 defaults: run: - shell: bash -l {0} + shell: pwsh name: Estimation Mode Unit Tests - runs-on: ubuntu-latest + runs-on: windows-latest steps: - uses: actions/checkout@v4 - - name: Setup Miniforge - uses: conda-incubator/setup-miniconda@v3 + - name: Install uv + uses: astral-sh/setup-uv@v5 with: - auto-update-conda: true - miniforge-version: latest - mamba-version: "2.0.5" - conda-solver: classic - conda-remove-defaults: true - activate-environment: asim-test - python-version: ${{ env.python-version }} - - - name: Set cache date for year and month - run: echo "DATE=$(date +'%Y%m')" >> $GITHUB_ENV - - - uses: actions/cache@v4 - with: - path: ${{ env.CONDA }}/envs - key: ${{ env.label }}-conda-${{ hashFiles('conda-environments/github-actions-tests.yml') }}-${{ env.DATE }}-${{ env.CACHE_NUMBER }} - id: cache - - - name: Update environment - run: | - conda env update -n asim-test -f conda-environments/github-actions-tests.yml - if: steps.cache.outputs.cache-hit != 'true' - - - name: Install Larch - run: mamba install "larch>=5.7.1,<6" + version: "0.7.12" + enable-cache: true + cache-dependency-glob: "uv.lock" + - name: "Set up Python" + uses: actions/setup-python@v5 + with: + python-version-file: ".python-version" + - name: Install activitysim - # installing without dependencies is faster, we trust that all needed dependencies - # are in the conda environment defined above. Also, this avoids pip getting - # confused and reinstalling tables (pytables). - run: | - python -m pip install -e . --no-deps - - - name: Conda checkup run: | - conda info -a - conda list + uv sync --locked --only-group github-action - name: Test Estimation Mode run: | - python -m pytest activitysim/estimation/test/test_larch_estimation.py --durations=0 + uv run pytest activitysim/estimation/test/test_larch_estimation.py --durations=0 develop-docbuild: needs: foundation @@ -467,30 +333,19 @@ jobs: - uses: actions/checkout@v4 with: fetch-depth: 0 # get all tags, lets setuptools_scm do its thing - - name: Set up Python 3.10 - uses: actions/setup-python@v5 + - name: Install uv + uses: astral-sh/setup-uv@v5 with: - python-version: "3.10" - - name: Install dependencies - uses: conda-incubator/setup-miniconda@v3 + version: "0.7.12" + enable-cache: true + cache-dependency-glob: "uv.lock" + - name: "Set up Python" + uses: actions/setup-python@v5 with: - miniforge-version: latest - mamba-version: "2.0.5" - conda-remove-defaults: true - environment-file: conda-environments/docbuild.yml - python-version: "3.10" - activate-environment: docbuild - auto-activate-base: false - auto-update-conda: false + python-version-file: ".python-version" - name: Install activitysim run: | - python -m pip install . - - name: Conda checkup - run: | - conda info -a - conda list - echo ${{ github.repository }} - echo ${{ github.ref_name }} + uv sync --locked --only-group github-action - name: localize version switcher run: | python .github/workflows/localize-base-urls.py docs/_static/switcher.json diff --git a/.github/workflows/deployment.yml b/.github/workflows/deployment.yml index 10652bba4..879e6ff02 100644 --- a/.github/workflows/deployment.yml +++ b/.github/workflows/deployment.yml @@ -89,31 +89,19 @@ jobs: with: name: releases path: dist - - name: Set up Python 3.10 - uses: actions/setup-python@v5 + - name: Install uv + uses: astral-sh/setup-uv@v5 with: - python-version: "3.10" - - name: Install dependencies - uses: conda-incubator/setup-miniconda@v2 + version: "0.7.12" + enable-cache: true + cache-dependency-glob: "uv.lock" + - name: "Set up Python" + uses: actions/setup-python@v5 with: - miniforge-variant: Mambaforge - miniforge-version: latest - use-mamba: true - environment-file: conda-environments/docbuild.yml - python-version: "3.10" - activate-environment: docbuild - auto-activate-base: false - auto-update-conda: false + python-version-file: ".python-version" - name: Install activitysim run: | - python -m pip install dist/activitysim-*.whl - - name: Conda checkup - run: | - conda info -a - conda list - echo REPOSITORY ${{ github.repository }} - echo REF ${{ github.ref }} - echo REF_NAME ${{ github.ref_name }} + uv sync --locked --dev - name: Build the docs run: | cd docs diff --git a/.python-version b/.python-version new file mode 100644 index 000000000..c8cfe3959 --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +3.10 diff --git a/HOW_TO_RELEASE.md b/HOW_TO_RELEASE.md index 786a71d13..b47586d9d 100644 --- a/HOW_TO_RELEASE.md +++ b/HOW_TO_RELEASE.md @@ -1,47 +1,32 @@ # How to issue an ActivitySim release -00. Check that the main branch is passing tests, especially the "core tests" on +1. Check that the main branch is passing tests, especially the "core tests" on [GitHub Actions](https://github.com/ActivitySim/activitysim/actions/workflows/core_tests.yml). It is generally the policy that the main branch should always be passing tests, - becuase PRs must pass tests before they can be merged. However, it is + because PRs must pass tests before they can be merged. However, it is possible that tests may fail after a PR is merged, so it is important to double-check that the main branch is passing tests before issuing a release. -00. Start from a completely clean conda environment - and git repository. Assuming you have `conda` installed, you can do so +2. Start from a completely clean environment + and git repository. Assuming you have `uv` installed, you can do so by starting where ActivitySim is not yet cloned (e.g. in an empty directory) and running: ```sh - conda create -p ./TEMP-ASIM-DEV python=3.10 git gh -c conda-forge --override-channels - conda activate ./TEMP-ASIM-DEV gh auth login # <--- (only needed if gh is not logged in) gh repo clone ActivitySim/activitysim cd activitysim + uv sync ``` -00. Update your Conda environment for testing. We do not want to use an - existing environment on your machine, as it may be out-of-sync - and we want to make sure everything passes muster using the - dependencies as they are available today. The following command - will update the active environment (we made this to be `TEMP-ASIM-DEV` - if you followed the directions above). - ```sh - conda env update --file=conda-environments/activitysim-dev.yml - ``` - If you add to the ActivitySim dependencies, make sure to also update - the environments in `conda-environments`, which are used for testing - and development. If they are not updated, these environments will end - up with dependencies loaded from *pip* instead of *conda-forge*. - -00. Run black to ensure that the codebase passes all style checks. +3. Run `black` to ensure that the codebase passes all style checks. This check should only take a few seconds. These checks are also done on GitHub Actions and are platform independent, so they should not be necessary to replicate locally, but are listed here for completeness. ```sh - black --check --diff . + uv run black --check --diff . ``` -00. Run the regular test suite on Windows. Most GitHub Actions tests are done on +4. Run the regular test suite on Windows. Most GitHub Actions tests are done on Linux (it's faster to start up and run a new clean VM for testing) but most users are on Windows, and the test suite should also be run on Windows to ensure that it works on that platform as well. If you @@ -54,12 +39,12 @@ regular test suite takes some time to run, between about half an hour and two hours depending on the specs of your machine. ```sh - python activitysim/examples/placeholder_multiple_zone/scripts/two_zone_example_data.py - python activitysim/examples/placeholder_multiple_zone/scripts/three_zone_example_data.py - pytest . + uv run activitysim/examples/placeholder_multiple_zone/scripts/two_zone_example_data.py + uv run activitysim/examples/placeholder_multiple_zone/scripts/three_zone_example_data.py + uv run pytest . ``` -00. Test the full-scale regional examples. These examples are big, too +5. Test the full-scale regional examples. These examples are big, too large to run on GitHub Actions, and will take a lot of time (many hours) to download and run. ```sh @@ -77,11 +62,17 @@ python ../activitysim/examples/scan_examples_for_errors.py . ``` -00. Test the notebooks in `activitysim/examples/prototype_mtc/notebooks`. +6. Test the notebooks in `activitysim/examples/prototype_mtc/notebooks`. There are also demo notebooks for estimation, but their functionality is completely tested in the unit tests run previously. -00. Tag the release commit with the new version number. ActivitySim uses +6. (Optional) After ensuring the code on the branch is passing all tests, pull in the latest versions of all dependencies that still satisfy current constraints, and repeat all above tests again. + ```sh + uv lock --upgrade + ``` + Make any adjustments using `uv add ...` with version constraints as needed to pass tests. If a version constraint is created, there should be a github issue created that identities the need in the future to debug and remove this constraint. + +7. Tag the release commit with the new version number. ActivitySim uses dynamic versioning, so the version number is not stored in a file but is instead read from the most recent git tag, so it is important to tag the repository with the correct version. The following command will @@ -90,12 +81,12 @@ git -a v1.2.3 -m "Release v1.2.3" ``` -00. Push the tagged commit to GitHub. +8. Push the tagged commit to GitHub. ```sh git push --tags ``` -00. Create a "release" on GitHub. You can do this from the command line using +9. Create a "release" on GitHub. You can do this from the command line using the `gh` command line tool: ```sh gh release create v1.2.3 @@ -110,25 +101,13 @@ The process of creating and tagging a release will automatically trigger various GitHub Actions scripts to build, test, and publish the - new release to PyPI and conda forge, assuming there are no errors. - -00. If the dependencies of ActivitySim have changed, also be sure to update the - dependencies of the conda-forge [recipe](https://github.com/conda-forge/activitysim-feedstock/tree/main/recipe). - If the dependencies of ActivitySim have not changed, the conda-forge version - of ActivitySim should auto-update within a few hours of making the release on - Github. + new release to PyPI, assuming there are no errors. -00. Build the ActivitySim Standalone Windows Installer. This is done using +10. Build the ActivitySim Standalone Windows Installer. This is done using GitHub Actions, but it is not done automatically when a release is created, instead it requires a manual workflow dispatch trigger. You can do this by going to the [build_installer workflow page](https://github.com/ActivitySim/activitysim/actions/workflows/build_installer.yml) and clicking on the "Run workflow" button. You will need to provide the version number and choose to add the built installer to the release. -00. Clean up your workspace, including removing the Conda environment used for - testing (which will prevent you from accidentally using an old - environment when you should have a fresh up-to-date one next time). - ```sh - conda deactivate - conda env remove -p ./TEMP-ASIM-DEV - ``` +11. Clean up your environment as is good practice by deleting `.venv` inside your workspace. However, `uv` will do this for you. Prior to every `uv run` invocation, `uv` will verify that the lockfile is up-to-date with the `pyproject.toml`, and that the environment is up-to-date with the lockfile, keeping your project in-sync without the need for manual intervention. `uv run` guarantees that your command is run in a consistent, locked environment. (Be sure to use `uv add` and `uv remove` to adjust dependencies always. Manually editing `pyproject.toml` dependencies *can* result in some problems with the environment that require `uv sync` before `uv run`.) \ No newline at end of file diff --git a/README.md b/README.md index 65809763b..93e7f2ec9 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ and benefit from contributions of other agency partners. :fire: The `main` branch of this repository contains the Consortium's latest in-development codebase. It is not necessarily what you'll get if you install released -code from conda-forge or by downloading one of the "release" versions here on GitHub, +code from PyPI or by downloading one of the "release" versions here on GitHub, but it is generally expected that code in the `main` branch should be usable. ## Helpful Links diff --git a/activitysim/abm/models/disaggregate_accessibility.py b/activitysim/abm/models/disaggregate_accessibility.py index bd1b291e6..0ae3167c8 100644 --- a/activitysim/abm/models/disaggregate_accessibility.py +++ b/activitysim/abm/models/disaggregate_accessibility.py @@ -595,9 +595,11 @@ def expand_template_zones(self, tables): for col, fill in col_filler.items(): df_ids[col] = df_ids[col].str.zfill(fill) - ex_table["proto_person_id"] = df_ids[cols].apply("".join, axis=1).astype(int) + ex_table["proto_person_id"] = ( + df_ids[cols].apply("".join, axis=1).astype(np.int64) + ) ex_table["proto_household_id"] = ( - df_ids[cols[:-1]].apply("".join, axis=1).astype(int) + df_ids[cols[:-1]].apply("".join, axis=1).astype(np.int64) ) # Separate out into households, persons, tours diff --git a/activitysim/abm/models/mandatory_tour_frequency.py b/activitysim/abm/models/mandatory_tour_frequency.py index 41a980674..2e2657d31 100644 --- a/activitysim/abm/models/mandatory_tour_frequency.py +++ b/activitysim/abm/models/mandatory_tour_frequency.py @@ -30,7 +30,7 @@ def add_null_results(state, trace_label, mandatory_tour_frequency_settings): logger.info("Skipping %s: add_null_results", trace_label) persons = state.get_dataframe("persons") - persons["mandatory_tour_frequency"] = pd.categorical( + persons["mandatory_tour_frequency"] = pd.Categorical( "", categories=["", "work1", "work2", "school1", "school2", "work_and_school"], ordered=False, diff --git a/activitysim/core/input.py b/activitysim/core/input.py index 51730fcf0..734679996 100644 --- a/activitysim/core/input.py +++ b/activitysim/core/input.py @@ -5,6 +5,7 @@ import logging import os +import numpy as np import pandas as pd from activitysim.core import util, workflow @@ -194,7 +195,7 @@ def read_from_table_info(table_info: InputTable, state): assert ( df[index_col] == df[index_col].astype(int) ).all(), f"Index col '{index_col}' has non-integer values" - df[index_col] = df[index_col].astype(int) + df[index_col] = df[index_col].astype(np.int64) df.set_index(index_col, inplace=True) else: # FIXME not sure we want to do this. More likely they omitted index col than that they want to name it? diff --git a/conda-environments/activitysim-dev-base.yml b/conda-environments/activitysim-dev-base.yml deleted file mode 100644 index 74df60783..000000000 --- a/conda-environments/activitysim-dev-base.yml +++ /dev/null @@ -1,81 +0,0 @@ -# Environment for Advanced Development -# This is a set of recommended dependencies for ActivitySim developers. -# It includes a variety of tools and packages not necessary for actually -# running models, but useful for writing code, running tests and -# experiments, etc. -# -# This file does not install ActivitySim or Sharrow, you must do that yourself -# (so that you can install a preferred branch or fork) -# -# usage: $ mamba env create --file=activitysim-dev-base.yml -n ASIM-DEV - -channels: -- conda-forge -- nodefaults -dependencies: -- python=3.10 -- pip -- altair -- asv # for benchmarking -- black >= 22.0,<23 -- bump2version # for making a release -- coveralls -- cytoolz = 0.12.* -- dask = 2023.11.* -- descartes -- filelock -- fsspec -- geopandas -- gh -- git -- ipykernel # so this env will appear in jupyter as a selection -- isort -- jupyterlab -- larch = 5.7.* -- matplotlib -- multimethod <2.0 -- myst-parser # allows markdown in sphinx -- nbconvert -- nbformat -- nbmake -- numba = 0.57.* -- numexpr -- numpy = 1.24.* -- numpydoc -- openmatrix = 0.3.* -- orca = 1.8 -- pandas = 2.2.* -- pandera >= 0.15, <0.18.1 -- platformdirs = 3.2.* -- pre-commit -- psutil = 5.9.* -- pyarrow = 11.* -- pycodestyle -- pydantic = 2.6.0 -- pydata-sphinx-theme -- pyinstrument = 4.4 -- pypyr = 5.8.* -- pytables >=3.9 -- pytest = 7.2.* -- pytest-cov -- pytest-regressions -- pyyaml = 6.* -- requests = 2.28.* -- rich = 13.3.* -- ruby # required for benchmarking pre-commit hooks -- ruff -- setuptools_scm -- scikit-learn = 1.2.* -- simwrapper > 1.7 -- snakeviz # for profiling -- sparse -- sphinx = 6.1.* -- sphinx_rtd_theme = 1.2.* -- sphinx-argparse = 0.4.* -- xarray = 2025.01.* -- xmle -- zarr>=2,<3 -- zstandard - -- pip: - - autodoc_pydantic diff --git a/conda-environments/activitysim-dev.yml b/conda-environments/activitysim-dev.yml deleted file mode 100644 index 50d67cfc2..000000000 --- a/conda-environments/activitysim-dev.yml +++ /dev/null @@ -1,79 +0,0 @@ -# Environment for development -# This is a set of recommended dependencies for ActivitySim developers. -# It includes a variety of tools and packages not necessary for actually -# running models, but useful for writing code, running tests and -# experiments, etc. -# -# usage: $ mamba env create --file=activitysim-dev.yml -n ASIM-SH -channels: -- conda-forge -- nodefaults -dependencies: -- python=3.10 -- pip -- altair -- asv # for benchmarking -- black >= 22.0,<23 -- bump2version # for making a release -- coveralls -- cytoolz = 0.12.* -- dask = 2023.11.* -- descartes -- filelock -- fsspec -- geopandas -- gh -- git -- ipykernel # so this env will appear in jupyter as a selection -- isort -- jupyterlab -- larch = 5.7.* -- matplotlib -- multimethod <2.0 -- myst-parser # allows markdown in sphinx -- nbconvert -- nbformat -- nbmake -- numba = 0.57.* -- numexpr -- numpy = 1.24.* -- numpydoc -- openmatrix = 0.3.* -- orca = 1.8 -- pandas = 2.2.* -- pandera >= 0.15, <0.18.1 -- platformdirs = 3.2.* -- pre-commit -- psutil = 5.9.* -- pyarrow = 11.* -- pycodestyle -- pydantic = 2.6.* -- pydata-sphinx-theme -- pyinstrument = 4.4 -- pypyr = 5.8.* -- pytables >=3.9 -- pytest = 7.2.* -- pytest-cov -- pytest-regressions -- pyyaml = 6.* -- requests = 2.28.* -- rich = 13.3.* -- ruby # required for benchmarking pre-commit hooks -- ruff -- setuptools_scm -- scikit-learn = 1.2.* -- sharrow >= 2.9.1 -- simwrapper > 1.7 -- snakeviz # for profiling -- sparse -- sphinx = 6.1.* -- sphinx_rtd_theme = 1.2.* -- sphinx-argparse = 0.4.* -- xarray = 2025.01.* -- xmle -- zarr>=2,<3 -- zstandard - -- pip: - - autodoc_pydantic - - -e .. diff --git a/conda-environments/docbuild.yml b/conda-environments/docbuild.yml deleted file mode 100644 index be592acd6..000000000 --- a/conda-environments/docbuild.yml +++ /dev/null @@ -1,62 +0,0 @@ -# Environment for building docs -# -# This conda environment is used to build the documentation. It includes a -# number of dependencies needed for the documentation only, and not to run or -# test ActivitySim itself. Note that ActivitySim itself is *not* installed -# in this environment, you must install it separately after using this recipe, -# which allows you to install the specific version you want. - -name: docbuild -channels: -- conda-forge -dependencies: -- python=3.10 -- pip -- altair -- black >= 22.0,<23 -- bump2version -- coveralls -- cytoolz >= 0.8.1 -- descartes -- geopandas -- gh -- git -- jupyter-book -- jupyterlab -- larch >=5.5.3,<6 -- matplotlib -- multimethod <2.0 -- myst-nb -- myst-parser -- numba >= 0.57 -- numpy >= 1.16.1, <2 -- numpydoc -- openmatrix >= 0.3.4.1 -- pandas = 2.2.* -- pandera >= 0.15, <0.18.1 -- platformdirs -- psutil >= 4.1 -- pyarrow >= 2.0,<19 -- pydantic = 2.6.* -- pypyr >= 5.3 -- pytables >=3.9 -- pytest -- pytest-cov -- pytest-regressions -- pyyaml >= 5.1 -- requests >= 2.7 -- scikit-learn >= 1.1 -- sharrow >= 2.9.1 -- simwrapper > 1.7 -- sparse -- sphinx-argparse -- sphinx-autosummary-accessors -- sphinx-copybutton -- sphinx-remove-toctrees -- sphinx_rtd_theme -- xarray = 2025.01.* -- zarr>=2,<3 - -- pip: - - autodoc_pydantic - - -e .. diff --git a/conda-environments/github-actions-tests.yml b/conda-environments/github-actions-tests.yml deleted file mode 100644 index 019bcccda..000000000 --- a/conda-environments/github-actions-tests.yml +++ /dev/null @@ -1,41 +0,0 @@ -# Environment for testing in GitHub Actions -# This environment contains a minimal set of dependencies needed to run most tests. -# It does not install ActivitySim itself (which is done by the test scripts) and -# is not meant for use outside the CI tools. -name: asim-test -channels: -- conda-forge -dependencies: -- pip -- black = 22.12.0 -- coveralls = 3.3.1 -- cytoolz = 0.12.2 -- dask = 2023.11.* -- isort = 5.12.0 -- multimethod <2.0 -- nbmake = 1.4.6 -- numba = 0.57.* -- numpy = 1.24.* -- openmatrix = 0.3.5.0 -- orca = 1.8 -- pandera >= 0.15, <0.18.1 -- pandas = 2.2.* -- platformdirs = 3.2.* -- psutil = 5.9.* -- pyarrow = 11.* -- pydantic = 2.6.* -- pypyr = 5.8.* -- pytables >= 3.9 -- pytest = 7.2.* -- pytest-cov -- pytest-regressions -- pyyaml = 6.* -- requests = 2.28.* -- ruff -- scikit-learn = 1.2.* -- sharrow >= 2.9.1 -- simwrapper > 1.7 -- sparse -- xarray = 2025.01.* -- zarr>=2,<3 -- zstandard diff --git a/docs/Makefile b/docs/Makefile index ba6e4b515..877005ed3 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -3,15 +3,10 @@ # You can set these variables from the command line. SPHINXOPTS = -SPHINXBUILD = sphinx-build +SPHINXBUILD = uv run --project .. sphinx-build PAPER = BUILDDIR = _build -# User-friendly check for sphinx-build -ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) -$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) -endif - # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter @@ -53,7 +48,7 @@ html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." - python add_image_map.py + uv run --project .. add_image_map.py dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml @@ -64,7 +59,7 @@ singlehtml: $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml @echo @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." - python add_image_map.py + uv run --project .. add_image_map.py pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle diff --git a/docs/dev-guide/build-docs.md b/docs/dev-guide/build-docs.md index dc8c5d67d..d59bee572 100644 --- a/docs/dev-guide/build-docs.md +++ b/docs/dev-guide/build-docs.md @@ -15,21 +15,16 @@ them into html as well. ActivitySim's docstrings are written in ## Building the Documentation Developers who want to test a build of the ActivitySim documentation locally can -do so using `sphinx`. A pre-packaged conda environment is available to simplify this -process. On the command line, starting from the `activitysim` directory that constitutes the -main repository (i.e. you should see subdirectories including `activitysim`, -`conda-environments`, `docs`, and a few others) run these commands: +do so using `sphinx`. The *uv* `dev` environment includes the required dependencies. On the command line, starting from the `activitysim` directory that constitutes the +main repository (i.e. you should see subdirectories including `activitysim`, `docs`, and a few others) run these commands: ```bash -mkdir -p ../.env -mamba env update -p ../.env/DOCBUILD -f conda-environments/docbuild.yml -conda activate ../.env/DOCBUILD cd docs make clean make html ``` -This will build the docs in the `docs/_build/html` directory. They can be viewed +This will build the docs in the `docs/_build/html` directory. They can be viewed in a web browser using the `file:///` protocol, or by double-clicking on the `index.html` file (or any other .html file in that directory). diff --git a/docs/dev-guide/install.md b/docs/dev-guide/install.md index 8f4b07bd8..40b92e0a6 100644 --- a/docs/dev-guide/install.md +++ b/docs/dev-guide/install.md @@ -1,73 +1,20 @@ (developer-installation)= # Developer Installation -Installing ActivitySim as a developer is almost as easy as just using it, -but making some tweaks to the processes enables live code development and -testing. - -## Package Manager - -ActivitySim has a lot of dependencies. It's easiest and fastest to install -them using a package manager like conda, or its faster and free sibling -[Mambaforge](https://github.com/conda-forge/miniforge#mambaforge). -Depending on your security settings, you might need to install in a -container like docker, instructions for that are coming soon. - -Note that if you are installing `mamba`, you only should install `mamba` -in the *base* environment. If you install `mamba` itself in other environments, -it will not function correctly. If you've got an existing conda installation -and you want to install mamba into it, you can install mamba into the *base* -environment like this: - -```sh -conda update conda -n base -conda install -n base -c conda-forge mamba -``` - -While you are at it, if you are a Jupyter user you might want to also install -`nb_conda_kernels` in your base conda environment alongside any other `jupyter` -libraries: - -```sh -mamba install -n base nb_conda_kernels -c conda-forge -``` - -This will ensure your development environments are selectable as kernels in -Jupyter Notebook/Lab/Etc. - -## Environment - -It's convenient to start from a completely clean conda environment -and git repository. Assuming you have `mamba` installed, and you -want to install in a new directory called "workspace" run: - -```sh -mkdir workspace -cd workspace -mamba env create -p ASIM-ENV --file https://raw.githubusercontent.com/ActivitySim/activitysim/main/conda-environments/activitysim-dev-base.yml -conda activate ./ASIM-ENV -git clone https://github.com/ActivitySim/sharrow.git -python -m pip install -e ./sharrow -git clone https://github.com/ActivitySim/activitysim.git -python -m pip install -e ./activitysim -``` - -Note the above commands will create an environment with all the -necessary dependencies, clone both ActivitySim and sharrow from GitHub, -and `pip install` each of these libraries in editable mode, which -will allow your code changes to be reflected when running ActivitySim -in this environment. +Installing ActivitySim as a developer is as easy as just using it with *uv*. Depending on what you are working on, you may want to check out a branch -other than `develop`. To do so, you can point the `git switch` command -above to any other existing branch name. If you want to start an new +other than the default `main`. To do so, you can use a `git switch` command +to any other existing branch name. If you want to start an new branch, first create it with `git branch cool-new-feature` and then switch to it with `git switch cool-new-feature`. -Now your environment should be ready to use. Happy coding! +By default, *uv* installs projects in editable mode, such that changes to the +source code are immediately reflected in the environment. ```{important} -If you add to the ActivitySim dependencies, make sure to also update -the environments in `conda-environments`, which are used for testing -and development. +If you add to the ActivitySim dependencies during development or remove, make +sure to use the `uv add` and `uv remove` commands so that the `pyproject.toml` +and `uv.lock` files are updated correctly and your virtual environment is +updated. ``` diff --git a/docs/users-guide/example_models.rst b/docs/users-guide/example_models.rst index fbb727f62..a671302d3 100644 --- a/docs/users-guide/example_models.rst +++ b/docs/users-guide/example_models.rst @@ -2985,25 +2985,24 @@ Running the model To run the example, do the following: -* Activate the correct conda environment if needed * View the list of available examples :: - activitysim create --list + uv run activitysim create --list * Create a local copy of an example folder :: - activitysim create --example prototype_mtc --destination my_test_example + uv run activitysim create --example prototype_mtc --destination my_test_example * Run the example :: cd my_test_example - activitysim run -c configs -d data -o output + uv run activitysim run -c configs -d data -o output * ActivitySim will log progress and write outputs to the output folder. @@ -3019,7 +3018,7 @@ The example should run in a few minutes since it runs a small sample of househol :: - python simulation.py + uv run simulation.py .. _multiprocess_example : @@ -3032,7 +3031,7 @@ include the multiprocessing configuration settings via settings file inheritance :: - activitysim run -c configs_mp -c configs -d data -o output + uv run activitysim run -c configs_mp -c configs -d data -o output The multiprocessing example also writes outputs to the output folder. diff --git a/docs/users-guide/model_anatomy.rst b/docs/users-guide/model_anatomy.rst index 461991a2e..78114f7e8 100644 --- a/docs/users-guide/model_anatomy.rst +++ b/docs/users-guide/model_anatomy.rst @@ -110,16 +110,15 @@ Examples To run the two zone and three zone system examples, do the following: -* Activate the correct conda environment if needed * Create a local copy of the example :: # simple two zone example - activitysim create -e placeholder_2_zone -d test_placeholder_2_zone + uv run activitysim create -e placeholder_2_zone -d test_placeholder_2_zone # simple three zone example - activitysim create -e placeholder_3_zone -d test_placeholder_3_zone + uv run activitysim create -e placeholder_3_zone -d test_placeholder_3_zone * Change to the example directory @@ -128,11 +127,11 @@ To run the two zone and three zone system examples, do the following: :: # simple two zone example - activitysim run -c configs_2_zone -c configs -d data_2 -o output_2 + uv run activitysim run -c configs_2_zone -c configs -d data_2 -o output_2 # simple three zone example, single process and multiprocess (and makes use of settings file inheritance for running) - activitysim run -c configs_3_zone -c configs -d data_3 -o output_3 -s settings_static.yaml - activitysim run -c configs_3_zone -c configs -d data_3 -o output_3 -s settings_mp.yaml + uv run activitysim run -c configs_3_zone -c configs -d data_3 -o output_3 -s settings_static.yaml + uv run activitysim run -c configs_3_zone -c configs -d data_3 -o output_3 -s settings_mp.yaml Settings ~~~~~~~~ @@ -421,7 +420,7 @@ alternatives, coefficients, constants and other settings for each model. For mor Outputs ------- -The key output of ActivitySIm is the HDF5 data pipeline file ``output\pipeline.h5``. This datastore by default contains +The key output of ActivitySim is the HDF5 data pipeline file ``output\pipeline.h5``. This datastore by default contains a copy of each data table after each model step in which the table was modified. The exact fields for each set of outputs will be different for various implementations of ActivitySim. diff --git a/docs/users-guide/model_dev.rst b/docs/users-guide/model_dev.rst index b9fbc8572..0e6d03330 100644 --- a/docs/users-guide/model_dev.rst +++ b/docs/users-guide/model_dev.rst @@ -57,19 +57,18 @@ Example To run the estimation example, do the following: -* Activate the correct conda environment if needed * Create a local copy of the estimation example folder :: - activitysim create -e example_estimation_sf -d test_example_estimation_sf + uv run activitysim create -e example_estimation_sf -d test_example_estimation_sf * Run the example :: cd test_example_estimation_sf - activitysim run -c configs_estimation/configs -c configs -o output -d data_sf + uv run activitysim run -c configs_estimation/configs -c configs -o output -d data_sf * ActivitySim should log some information and write outputs to the output folder, including EDBs for each submodel. The estimation example runs for about 15 minutes and writes EDBs for 2000 households. @@ -92,13 +91,11 @@ Additional settings for running ActivitySim in estimation mode are specified in Estimation Notebooks ~~~~~~~~~~~~~~~~~~~~ -ActivitySim includes a `Jupyter Notebook `__ recipe book with interactive re-estimation examples for each estimatable submodel. To run a Jupyter notebook, do the following: +ActivitySim includes a `Jupyter Notebook `__ recipe book with interactive examples. -* Open a conda prompt and activate the conda environment with ActivitySim installed -* If needed, ``conda install jupyterlab`` so you can run jupyter notebooks -* Type ``jupyter notebook`` to launch the web-based notebook manager -* Navigate to the ``examples/examples_estimaton/notebooks`` folder and select a notebook from the table below -* Save the updated coefficient file(s) to the configs folder and run the model in simulation mode +* To start JupyterLab, from the ActivitySim project directory run ``uv run jupyter lab``. This will start the JupyterLab server and pop up a browser window with the interactive development environment. +* Navigate to the ``examples/examples_estimaton/notebooks`` folder and select a notebook from the table below. +* Save the updated coefficient file(s) to the configs folder and run the model in simulation mode. +-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Example | Notebook | diff --git a/docs/users-guide/modelsetup.rst b/docs/users-guide/modelsetup.rst index 2a6483062..97695c99e 100644 --- a/docs/users-guide/modelsetup.rst +++ b/docs/users-guide/modelsetup.rst @@ -16,7 +16,7 @@ assumes the user is more experienced in running travel demand models and profici used ActivitySim or has not used recent versions of ActivitySim. More detailed instructions for installing and running ActivitySim are also available in this Users Guide. -* Use the :ref:`Pre-packaged Installer` +* Use the :ref:`pre-packaged installer` * :ref:`Run the Primary Example` * Placeholder (Edit model input files, configs, as needed) @@ -63,9 +63,9 @@ ActivitySim has features that makes it possible to customize model runs or impro * :ref:`Sharrow ` is a Python library designed to decrease run-time for ActivitySim models by creating an optimized compiled version of the model. This can also be turned on/off. * :ref:`Tracing ` allows the user to access information throughout the model run for a specified number of households/persons/zones. Enabling this feature will increase run-time and memory usage. It is recommended that this feature be turned off for typical model application. * Optimization of data types including: - + Converting string variables to pandas categoricals. ActivitySim releases ** and higher have this capability. - + Converting higher byte integer variables to lower byte integer variables (such as reducing ‘num tours’ from int64 to int8). - + Converting higher byte float variables to lower bytes. ActivitySim releases X.X.X and higher have this capability as a switch and defaults to turning this feature off. + + Converting string variables to pandas categoricals. ActivitySim releases 1.3.0 and higher have this capability. + + Converting higher byte integer variables to lower byte integer variables (such as reducing ‘num tours’ from int64 to int8). ActivitySim releases 1.3.0 and higher have this capability as a switch and defaults to turning this feature off. + + Converting higher byte float variables to lower bytes. ActivitySim releases 1.3.0 and higher have this capability as a switch and defaults to turning this feature off. Steps for enabling/disabling these options are included in the :ref:`Advanced Configuration` sub-section, under :ref:`Ways to Run the Model` page of this Users’ Guide. @@ -80,51 +80,26 @@ Steps for enabling/disabling these options are included in the :ref:`Advanced Co Software ________ -Activitysim is implemented in the Python programming language. It also uses several open source Python packages such as pandas, numpy, pytables, openmatrix etc. Hence it is recommended that you install and use a *conda* package manager for your system. -One easy way to do so is by using -`Mambaforge `__. -Mamba is a free open source cross-platform package manager that runs on -Windows, OS X and Linux and is fully compatible with conda packages. It is -also usually substantially faster than conda itself. Instructions to install mambaforge can be found `here `__. Installers for different Operating Systems can be found `here `__. - -Alternatively, if you prefer a package installer backed by corporate tech -support available (for a fee) as necessary, you can install -`Anaconda 64bit Python 3 `__, -although you should consult the `terms of service `__ -for this product and ensure you qualify since businesses and -governments with over 200 employees do not qualify for free usage. -If you're using `conda` instead of `mamba`, just replace every call to -`mamba` below with `conda`, as they share the same user interface and most -command formats. - -If you access the internet from behind a firewall, then you may need to -configure your proxy server. To do so, create a `.condarc` file in your -home installation folder, such as: - -:: - - proxy_servers: - http: http://myproxy.org:8080 - https: https://myproxy.org:8080 - ssl_verify: false - +Activitysim is implemented in the Python programming language. It uses several open source Python packages such as pandas, numpy, pytables, openmatrix etc. Installing ActivitySim ---------------------- -There are multiple ways to install the ActivitySim codebase: +There are two recommended ways to install ActivitySim: -1. Using a :ref:`Pre-packaged Installer` (recommended for users who do not need to change the Python code) +1. Using a :ref:`pre-packaged installer` -2. Using a :ref:`Python package manager like mamba ` (recommended for users who need to change/customize the Python code) +2. Using the :ref:`UV Package and Project Manager` + +The first is recommended for users who do not need to change the Python code and are on Windows, +and the second is recommended for users who need to change/customize the Python code. -3. Using :ref:`pip - Python's standard package manager ` Pre-packaged Installer ______________________ -Begining with version 1.2, ActivitySim is now available for Windows via a +Beginning with version 1.2, ActivitySim is now available for Windows via a pre-packaged installer. This installer provides everything you need to run ActivitySim, including Python, all the necessary supporting packages, and ActivitySim itself. You should only choose this installation process if you @@ -146,127 +121,177 @@ Once the install is complete, ActivitySim can be run directly from any command prompt by running `/Scripts/ActivitySim.exe`. -Using *mamba* package manager -_____________________________ +UV Package and Project Manager +______________________________________ + +This method is recommended for ActivitySim users who are familiar with +Python and optionally wish to customize the Python code to run their models. +UV is a free open source cross-platform package and project manager that runs +on Windows, OS X, and Linux. It is 10-100x faster than conda, and pip itself, which is +the standard Python package manager. The *uv* features include automatic +environment management including installation and management of Python +versions and dependency locking. -This method is recommended for ActivitySim users who also wish to customize the Python code to run their models. The steps involved are described as follows: +.. note:: + There are two options for using *uv* to install ActivitySim. -1. Install the *mamba* package manager as described in the :ref:`Software Requirements ` subsection. +The first is to use *uv* to install an official ActivitySim release from the Python Package Index (PyPI). +The second is to use *uv* to install ActivitySim from a local directory, which should be the cloned ActivitySim repository. -2. Create a conda environment (basically a Python install just for this project) -using mambaforge prompt or conda prompt depending on the package manager you use (on Windows) or the terminal (macOS or Linux):: +.. note:: + The first *uv* option is recommended for users who want to install ActivitySim from an official release and do not wish to change the Python code. + However, they may end up using different deep dependencies than those tested by the developers. + The second *uv* option is recommended for users who may want to customize the Python code, and who want to run ActivitySim + exactly as it was tested by the developers using the dependency lockfile which results in the exact same deep dependencies. - mamba create -n asim python=3.10 activitysim -c conda-forge --override-channels +The steps involved are described as follows. + +Option 1: Install ActivitySim from PyPI +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +(Note: This step may fail at the moment because the ActivitySim version available on PyPI has dependency conflicts. +This step should work when ActivitySim release ** which is built with *uv* is available on PyPI. +In the meantime, use Option 2 below to install ActivitySim from the lockfile.) + +1. Install *uv*. Instructions can be found +`here `_. + +2. Create a new project and virtual environment to work from and add ActivitySim. (Warning: This approach is quickest +for getting started but does not rely on the lockfile to install dependencies so you may +end up with different versions. If you want to use the lockfile, see Option 2 below.) + +Open a terminal, such as Command Prompt (note: not Anaconda Prompt), and run the following commands. + +:: -This command will create the environment and install all the dependencies -required for running ActivitySim. It is only necessary to create the environment -once per machine, you do not need to (re)create the environment for each session. -If you would also like to install other tools or optional dependencies, it is -possible to do so by adding additional libraries to this command. For example:: + mkdir asim_project + cd asim_project + echo 3.10 > .python-version # This sets the Python version to 3.10, which is currently used for ActivitySim development. + uv init + uv add activitysim - mamba create -n asim python=3.10 activitysim jupyterlab larch -c conda-forge --override-channels +*uv* will create a new virtual environment within the `asim_project` project folder +and install ActivitySim and its dependencies. The virtual environment is a hidden folder +within the `asim_project` directory called `.venv` and operates the same way as Python's classic *venv*. -This example installs a specific version of Python, version 3.9. A similar -approach can be used to install specific versions of other libraries as well, -including ActivitySim, itself. For example:: +3. Run an ActivitySim command using the following. - mamba create -n asim python=3.9 activitysim=1.0.2 -c conda-forge --override-channels +:: -Additional libraries can also be installed later. You may want to consider these -tools for certain development tasks:: + uv run ... - # packages for testing - mamba install pytest pytest-cov coveralls black flake8 pytest-regressions -c conda-forge --override-channels -n asim +For example, run the ActivitySim commandline using the following. +More information about the commandline interface is available in +the :ref:`Ways to Run the Model` section. - # packages for building documentation - mamba install sphinx numpydoc sphinx_rtd_theme==0.5.2 -c conda-forge --override-channels -n asim +:: - # packages for estimation integration - mamba install larch -c conda-forge --override-channels -n asim + uv run activitysim run -c configs -o output -d data - # packages for example notebooks - mamba install jupyterlab matplotlib geopandas descartes -c conda-forge --override-channels -n asim -To create an environment containing all these optional dependencies at once, you -can run the shortcut command +Run ActivitySim from a Different Directory +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +If you want to run ActivitySim from a directory different than where the code lives, +use the `project` option to point *uv* to this project using relative paths: :: - mamba env create activitysim/ASIM -n asim + uv run --project relative/path/to/asim_project activitysim run -c configs -o output -d data -3. To use the **asim** environment, you need to activate it + +You could also activate the virtual environment created by *uv* and run ActivitySim from any directory. :: - conda activate asim -The activation of the correct environment needs to be done every time you -start a new session (e.g. opening a new conda Prompt window). + .venv\Scripts\activate + +With this command, you have activated the virtual environment created by *uv* and can run ActivitySim commands from any directory. + +For more on *uv*, visit https://docs.astral.sh/uv/. + +Option 2: Install ActivitySim from the lockfile +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +To install dependencies from the lockfile and run ActivitySim exactly how +its developers tested it, after installing *uv* clone the code repository +and then run code. + +1. Install *uv*. Instructions can be found +`here `_. (Skip +if already installed above. It only needs to be installed once per machine.) .. note:: + If you already have *uv* installed from an older project and you encounter errors + such as + :: - The *activate* and *deactivate* commands to start and stop using environments - are called as `conda` even if you are otherwise using `mamba`. mamba is a drop-in replacement and uses the same commands and configuration options as conda. - You can swap almost all commands between conda & mamba. For more details, refer to `the mamba user guide `__. + error: Failed to parse uv.lock... missing field version... + + later in the process, you may need to update *uv* to the latest version by reinstalling it via the official + installation script: https://docs.astral.sh/uv/getting-started/installation/#standalone-installer. + You can check the version of *uv* you have installed by running + :: -Using *pip* - Python's standard package manager -_______________________________________________ + uv --version -If you prefer to install ActivitySim without a package manager like *mamba* or *conda*, it is possible to -do so with pip, although you may find it more difficult to get all of the -required dependencies installed correctly. If you can use conda for -the dependencies, you can get most of the libraries you need from there:: +1. Clone the ActivitySim project using Git. (If Git is not installed, +instructions can be found `here `_.) - # required packages for running ActivitySim - mamba install cytoolz numpy pandas psutil pyarrow numba pytables pyyaml openmatrix requests -c conda-forge +:: - # required for ActivitySim version 1.0.1 and earlier - pip install zbox + git clone https://github.com/ActivitySim/activitysim.git + cd activitysim -And then simply install activitysim with pip. +3. Optionally create the virtual environment. This is created automatically +when running code in the next step, but manually syncing is an option too. +This step creates a hidden folder within the current directory called +`.venv` and operates the same way as Python's classic *venv*. (If you +want to install the project in a non-editable mode so that users on +your machine cannot accidentally change the source code, use the +`--no-editable` option.) :: - python -m pip install activitysim + uv sync --no-editable -If you are using a firewall you may need to add ``--trusted-host pypi.python.org --proxy=myproxy.org:8080`` to this command. +4. Run an ActivitySim command using the following. (This will automatically +create a virtual environment from the lockfile, if it does not already +exist.) -For development work, can also install ActivitySim directly from source. Clone -the ActivitySim repository, and then from within that directory run:: +:: - python -m pip install . -e + uv run ... -The "-e" will install in editable mode, so any changes you make to the ActivitySim -code will also be reflected in your installation. -Installing from source is easier if you have all the necessary dependencies already -installed in a development conda environment. Developers can create an -environment that has all the optional dependencies preinstalled by running:: +It is worth pointing out that by default, *uv* installs projects in +editable mode, such that changes to the source code are immediately reflected +in the environment. `uv sync` and `uv run` both accept a `--no-editable` +flag, which instructs *uv* to install the project in non-editable mode, +removing any dependency on the source code. - mamba env create activitysim/ASIM-DEV +Also, `uv run` automatically installs the dependencies listed in `pyproject.toml` +under `dependencies` under `[project]`, and it also installs those listed +under `dev` under `[dependency-groups]` (not `github-action`). If you want to +skip the dependency groups entirely with a *uv* install (and only install those +that would install via `pip` from 'pypi`), use the `--no-default-groups` flag +with `uv sync`. -If you prefer to use a different environment name than `ASIM-DEV`, just -append `--name OTHERNAME` to the command. Then all that's left to do is install -ActivitySim itself in editable mode as described above. +Run ActivitySim from a Different Directory +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +If you want to run ActivitySim from a directory different than where the code lives, +use the `project` option to point *uv* to this project using relative paths: -.. note:: +:: - ActivitySim is a 64bit Python 3 library that uses a number of packages from the - scientific Python ecosystem, most notably `pandas `__ - and `numpy `__. + uv run --project relative/path/to/asim_project activitysim run -c configs -o output -d data - As mentioned above, the recommended way to get your own scientific Python installation is to - install 64 bit Anaconda, which contains many of the libraries upon which - ActivitySim depends + some handy Python installation management tools. - Anaconda includes the ``conda`` command line tool, which does a number of useful - things, including creating `environments `__ - (i.e. stand-alone Python installations/instances/sandboxes) that are the recommended - way to work with multiple versions of Python on one machine. Using conda - environments keeps multiple Python setups from conflicting with one another. +You could also activate the virtual environment created by *uv* and run ActivitySim from any directory. + +:: + + .venv\Scripts\activate - You need to activate the activitysim environment each time you start a new command - session. You can remove an environment with ``conda remove -n asim --all`` and - check the current active environment with ``conda info -e``. +With this command, you have activated the virtual environment created by *uv* and can run ActivitySim commands from any directory. - For more information on Anaconda, see Anaconda's `getting started - `__ guide. +For more on *uv*, visit https://docs.astral.sh/uv/. \ No newline at end of file diff --git a/docs/users-guide/other_examples.rst b/docs/users-guide/other_examples.rst index 321b4882b..98011ba3d 100644 --- a/docs/users-guide/other_examples.rst +++ b/docs/users-guide/other_examples.rst @@ -100,10 +100,8 @@ has essentially the same configuration as the simpler three zone example above. *Example* - To run prototype_marin, do the following: -* Activate the correct conda environment if needed * Create a local copy of the example :: @@ -117,7 +115,7 @@ To run prototype_marin, do the following: :: # Marin TM2 work tour mode choice for the MTC region - activitysim run -c configs -d data -o output -s settings_mp.yaml + uv run activitysim run -c configs -d data -o output -s settings_mp.yaml * For optimal performance, configure multiprocessing and chunk_size based on machine hardware. diff --git a/docs/users-guide/run_primary_example.rst b/docs/users-guide/run_primary_example.rst index 898b35404..d45e0eb4b 100644 --- a/docs/users-guide/run_primary_example.rst +++ b/docs/users-guide/run_primary_example.rst @@ -3,22 +3,18 @@ Run the Primary Example To setup and run the primary example (see :ref:`examples`) from the command line interface, do the following: -* Open the mamba or conda command prompt -* If you installed ActivitySim using conda environments, activate the conda - environment with ActivitySim installed (i.e. ``conda activate asim``) +* Type ``uv run activitysim create -e prototype_mtc -d test_prototype_mtc`` to copy + the very small prototype_mtc example to a new test_prototype_mtc directory +* Change to the test_prototype_mtc directory ``cd test_prototype_mtc`` +* Type ``uv run activitysim run -c configs -o output -d data`` to run the example +* Review the outputs in the output directory +* ActivitySim will log progress and write outputs to the output folder. .. note:: - Most ``conda`` and ``mamba`` commands can be used interchangeably in the **mamba command prompt**. In the above step, you could instead use ``mamba activate asim`` in the mamba command prompt. -* Or, if you used the :ref:`pre-packaged installer`, + Or, if you used the :ref:`pre-packaged installer`, replace all the commands below that call ``activitysim ...`` with the complete path to your installed location, which is probably something like ``c:\programdata\activitysim\scripts\activitysim.exe``. -* Type ``activitysim create -e prototype_mtc -d test_prototype_mtc`` to copy - the very small prototype_mtc example to a new test_prototype_mtc directory -* Change to the test_prototype_mtc directory ``cd test_prototype_mtc`` -* Type ``activitysim run -c configs -o output -d data`` to run the example -* Review the outputs in the output directory -* ActivitySim will log progress and write outputs to the output folder. The example should run in a few minutes since it runs a small sample of households. diff --git a/docs/users-guide/visualization.rst b/docs/users-guide/visualization.rst index 2a930d337..3da5a7fc0 100644 --- a/docs/users-guide/visualization.rst +++ b/docs/users-guide/visualization.rst @@ -129,9 +129,13 @@ Trip-level skim data are also made available in the preprocessing stage by attac Install and Run Simwrapper ~~~~~~~~~~~~~~~~~~~~~~~~~~ -The SimWrapper Python package, which contains convenience functions for initiating the SimWrapper app in the browser and a local file server for accessing summary tables from this app, is automatically installed as a dependency of ActivitySim. However, you can also use SimWrapper independent of ActivitySim to, for example, visualize summaries on a different workstation. SimWrapper is available on both conda-forge and pip: +The SimWrapper Python package, which contains convenience functions for initiating the SimWrapper app in the browser and a local file server for accessing summary tables from this app, is automatically installed as a dependency of ActivitySim. However, you can also use SimWrapper independent of ActivitySim to, for example, visualize summaries on a different workstation. SimWrapper is available on both conda-forge and pypi: :: + > uv add simwrapper + +or + > conda install -c conda-forge simwrapper or diff --git a/docs/users-guide/ways_to_run.rst b/docs/users-guide/ways_to_run.rst index 98c1f09e8..1b2122107 100644 --- a/docs/users-guide/ways_to_run.rst +++ b/docs/users-guide/ways_to_run.rst @@ -80,11 +80,9 @@ Refer to the :ref:`Run the Primary Example` section to learn how to run the prim Using Jupyter Notebook ______________________ -ActivitySim includes a `Jupyter Notebook `__ recipe book with interactive examples. To run a Jupyter notebook, do the following: +ActivitySim includes a `Jupyter Notebook `__ recipe book with interactive examples. -* Open a conda prompt and activate the conda environment with ActivitySim installed -* If needed, ``conda install jupyterlab`` so you can run jupyter notebooks -* Type ``jupyter notebook`` to launch the web-based notebook manager +* To start JupyterLab, from the ActivitySim project directory run ``uv run jupyter lab``. This will start the JupyterLab server and pop up a browser window with the interactive development environment. * Navigate to the ``examples/prototype_mtc/notebooks`` folder and select a notebook to learn more: * `Getting started `__ diff --git a/pyproject.toml b/pyproject.toml index 6a76cacb2..bd531b579 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,9 +13,9 @@ dependencies = [ "cytoolz >= 0.8.1", "multimethod <2.0", "numba >= 0.57", - "numpy >= 1.16.1, <2", + "numpy >= 1.16.1, <1.26", "openmatrix >= 0.3.4.1", - "pandas >= 2.2", + "pandas >= 2", "pandera >=0.15, <0.18.1", "platformdirs", "psutil >= 4.1", @@ -24,11 +24,11 @@ dependencies = [ "pypyr >= 5.3", "pyyaml >= 5.1", "requests >= 2.7", - "scikit-learn >= 1.1", + "scikit-learn >= 1.2", + "setuptools>=80.9.0", "sharrow >= 2.9.1", - "simwrapper > 1.7", "sparse", - "tables >= 3.9", + "tables >= 3.9", # pytables is tables in pypi "xarray >= 2024.05", ] readme = "README.md" @@ -97,3 +97,71 @@ convention = "numpy" [tool.ruff.per-file-ignores] "__init__.py" = ["E402", "F401"] # Ignore import violations in all `__init__.py` files + +[dependency-groups] +dev = [ + "altair", + "autodoc_pydantic", + "asv", # for benchmarking + "black==22.12.0,<23", + "bump2version", # for making a release + "coveralls==3.3.1", + "dask==2023.11", + "descartes", + "filelock", + "fsspec", + "geopandas", + "gh", + "ipykernel", # so this env will appear in jupyter as a selection + "isort==5.12.0", + "jupyter-book", + "jupyterlab", + "larch>=5.7", + "matplotlib", + "myst-nb", + "myst-parser", # allows markdown in sphinx + "nbconvert", + "nbformat", + "nbmake==1.4.6", + "numexpr", + "numpydoc", + "pre-commit", + "pycodestyle", + "pydata-sphinx-theme", + "pyinstrument==4.4", + "pytest==7.2", + "pytest-cov", + "pytest-regressions", + "rich==13.3", + "ruby", # for benchmarking pre-commit hooks + "ruff", + "setuptools_scm", + "simwrapper > 1.7", + "snakeviz", # for profiling + "sphinx==6.1", + "sphinx-argparse", + "sphinx-autosummary-accessors", + "sphinx-copybutton", + "sphinx-remove-toctrees", + "sphinx_rtd_theme==1.2", + "sphinx-argparse==0.4", + "xmle", + "zarr>=2,<3", + "zstandard" +] +github-action = [ + "black==22.12.0", + "coveralls==3.3.1", + "dask==2023.11", + "isort==5.12.0", + "nbmake==1.4.6", + "pytest==7.2", + "pytest-cov", + "pytest-regressions", + "ruff", + "zarr>=2,<3", + "zstandard" +] + +[tool.uv] +default-groups = ["dev"] diff --git a/uv.lock b/uv.lock new file mode 100644 index 000000000..527124b1c --- /dev/null +++ b/uv.lock @@ -0,0 +1,5047 @@ +version = 1 +revision = 2 +requires-python = ">=3.10" +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", + "python_full_version < '3.11'", +] + +[[package]] +name = "accessible-pygments" +version = "0.0.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bc/c1/bbac6a50d02774f91572938964c582fff4270eee73ab822a4aeea4d8b11b/accessible_pygments-0.0.5.tar.gz", hash = "sha256:40918d3e6a2b619ad424cb91e556bd3bd8865443d9f22f1dcdf79e33c8046872", size = 1377899, upload-time = "2024-05-10T11:23:10.216Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8d/3f/95338030883d8c8b91223b4e21744b04d11b161a3ef117295d8241f50ab4/accessible_pygments-0.0.5-py3-none-any.whl", hash = "sha256:88ae3211e68a1d0b011504b2ffc1691feafce124b845bd072ab6f9f66f34d4b7", size = 1395903, upload-time = "2024-05-10T11:23:08.421Z" }, +] + +[[package]] +name = "activitysim" +source = { editable = "." } +dependencies = [ + { name = "cytoolz" }, + { name = "multimethod" }, + { name = "numba" }, + { name = "numpy" }, + { name = "openmatrix" }, + { name = "pandas", version = "2.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, + { name = "pandas", version = "2.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, + { name = "pandera" }, + { name = "platformdirs" }, + { name = "psutil" }, + { name = "pyarrow" }, + { name = "pydantic" }, + { name = "pypyr" }, + { name = "pyyaml" }, + { name = "requests" }, + { name = "scikit-learn" }, + { name = "setuptools" }, + { name = "sharrow" }, + { name = "sparse" }, + { name = "tables", version = "3.10.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "tables", version = "3.10.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "xarray" }, +] + +[package.dev-dependencies] +dev = [ + { name = "altair" }, + { name = "asv" }, + { name = "autodoc-pydantic" }, + { name = "black" }, + { name = "bump2version" }, + { name = "coveralls" }, + { name = "dask" }, + { name = "descartes" }, + { name = "filelock" }, + { name = "fsspec" }, + { name = "geopandas" }, + { name = "gh" }, + { name = "ipykernel" }, + { name = "isort" }, + { name = "jupyter-book" }, + { name = "jupyterlab" }, + { name = "larch" }, + { name = "matplotlib" }, + { name = "myst-nb" }, + { name = "myst-parser" }, + { name = "nbconvert" }, + { name = "nbformat" }, + { name = "nbmake" }, + { name = "numexpr" }, + { name = "numpydoc" }, + { name = "pre-commit" }, + { name = "pycodestyle" }, + { name = "pydata-sphinx-theme" }, + { name = "pyinstrument" }, + { name = "pytest" }, + { name = "pytest-cov" }, + { name = "pytest-regressions" }, + { name = "rich" }, + { name = "ruby" }, + { name = "ruff" }, + { name = "setuptools-scm" }, + { name = "simwrapper" }, + { name = "snakeviz" }, + { name = "sphinx" }, + { name = "sphinx-argparse" }, + { name = "sphinx-autosummary-accessors" }, + { name = "sphinx-copybutton" }, + { name = "sphinx-remove-toctrees" }, + { name = "sphinx-rtd-theme" }, + { name = "xmle" }, + { name = "zarr", version = "2.18.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "zarr", version = "2.18.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "zstandard" }, +] +github-action = [ + { name = "black" }, + { name = "coveralls" }, + { name = "dask" }, + { name = "isort" }, + { name = "nbmake" }, + { name = "pytest" }, + { name = "pytest-cov" }, + { name = "pytest-regressions" }, + { name = "ruff" }, + { name = "zarr", version = "2.18.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "zarr", version = "2.18.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "zstandard" }, +] + +[package.metadata] +requires-dist = [ + { name = "cytoolz", specifier = ">=0.8.1" }, + { name = "multimethod", specifier = "<2.0" }, + { name = "numba", specifier = ">=0.57" }, + { name = "numpy", specifier = ">=1.16.1,<1.26" }, + { name = "openmatrix", specifier = ">=0.3.4.1" }, + { name = "pandas", specifier = ">=2" }, + { name = "pandera", specifier = ">=0.15,<0.18.1" }, + { name = "platformdirs" }, + { name = "psutil", specifier = ">=4.1" }, + { name = "pyarrow", specifier = ">=2.0" }, + { name = "pydantic", specifier = ">=2.6" }, + { name = "pypyr", specifier = ">=5.3" }, + { name = "pyyaml", specifier = ">=5.1" }, + { name = "requests", specifier = ">=2.7" }, + { name = "scikit-learn", specifier = ">=1.2" }, + { name = "setuptools", specifier = ">=80.9.0" }, + { name = "sharrow", specifier = ">=2.9.1" }, + { name = "sparse" }, + { name = "tables", specifier = ">=3.9" }, + { name = "xarray", specifier = ">=2024.5" }, +] + +[package.metadata.requires-dev] +dev = [ + { name = "altair" }, + { name = "asv" }, + { name = "autodoc-pydantic" }, + { name = "black", specifier = "==22.12.0,<23" }, + { name = "bump2version" }, + { name = "coveralls", specifier = "==3.3.1" }, + { name = "dask", specifier = "==2023.11" }, + { name = "descartes" }, + { name = "filelock" }, + { name = "fsspec" }, + { name = "geopandas" }, + { name = "gh" }, + { name = "ipykernel" }, + { name = "isort", specifier = "==5.12.0" }, + { name = "jupyter-book" }, + { name = "jupyterlab" }, + { name = "larch", specifier = ">=5.7" }, + { name = "matplotlib" }, + { name = "myst-nb" }, + { name = "myst-parser" }, + { name = "nbconvert" }, + { name = "nbformat" }, + { name = "nbmake", specifier = "==1.4.6" }, + { name = "numexpr" }, + { name = "numpydoc" }, + { name = "pre-commit" }, + { name = "pycodestyle" }, + { name = "pydata-sphinx-theme" }, + { name = "pyinstrument", specifier = "==4.4" }, + { name = "pytest", specifier = "==7.2" }, + { name = "pytest-cov" }, + { name = "pytest-regressions" }, + { name = "rich", specifier = "==13.3" }, + { name = "ruby" }, + { name = "ruff" }, + { name = "setuptools-scm" }, + { name = "simwrapper", specifier = ">1.7" }, + { name = "snakeviz" }, + { name = "sphinx", specifier = "==6.1" }, + { name = "sphinx-argparse" }, + { name = "sphinx-argparse", specifier = "==0.4" }, + { name = "sphinx-autosummary-accessors" }, + { name = "sphinx-copybutton" }, + { name = "sphinx-remove-toctrees" }, + { name = "sphinx-rtd-theme", specifier = "==1.2" }, + { name = "xmle" }, + { name = "zarr", specifier = ">=2,<3" }, + { name = "zstandard" }, +] +github-action = [ + { name = "black", specifier = "==22.12.0" }, + { name = "coveralls", specifier = "==3.3.1" }, + { name = "dask", specifier = "==2023.11" }, + { name = "isort", specifier = "==5.12.0" }, + { name = "nbmake", specifier = "==1.4.6" }, + { name = "pytest", specifier = "==7.2" }, + { name = "pytest-cov" }, + { name = "pytest-regressions" }, + { name = "ruff" }, + { name = "zarr", specifier = ">=2,<3" }, + { name = "zstandard" }, +] + +[[package]] +name = "addicty" +version = "2023.9.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyyaml" }, + { name = "yamllint" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/14/4e/fa9a73c6b8b4939836b1057b64848af7bafdcc75d454c7b14e8451918ed4/addicty-2023.9.3.tar.gz", hash = "sha256:dcd4f39c9127c9ca0489d752367aa87f961d22581ab4252b1c3fa111ca2edf8f", size = 14766, upload-time = "2023-09-12T22:12:03.128Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b1/f9/b5e184d56e6e70830316821108041beb980016b6a495326ebd176012bfd3/addicty-2023.9.3-py3-none-any.whl", hash = "sha256:b0137268dee20f2611375f5b9477c37fb78ed448709b8dd66f1c30992a209645", size = 7533, upload-time = "2023-09-12T22:12:01.536Z" }, +] + +[[package]] +name = "alabaster" +version = "0.7.16" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c9/3e/13dd8e5ed9094e734ac430b5d0eb4f2bb001708a8b7856cbf8e084e001ba/alabaster-0.7.16.tar.gz", hash = "sha256:75a8b99c28a5dad50dd7f8ccdd447a121ddb3892da9e53d1ca5cca3106d58d65", size = 23776, upload-time = "2024-01-10T00:56:10.189Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/34/d4e1c02d3bee589efb5dfa17f88ea08bdb3e3eac12bc475462aec52ed223/alabaster-0.7.16-py3-none-any.whl", hash = "sha256:b46733c07dce03ae4e150330b975c75737fa60f0a7c591b6c8bf4928a28e2c92", size = 13511, upload-time = "2024-01-10T00:56:08.388Z" }, +] + +[[package]] +name = "altair" +version = "5.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jinja2" }, + { name = "jsonschema" }, + { name = "narwhals" }, + { name = "packaging" }, + { name = "typing-extensions", marker = "python_full_version < '3.14'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/16/b1/f2969c7bdb8ad8bbdda031687defdce2c19afba2aa2c8e1d2a17f78376d8/altair-5.5.0.tar.gz", hash = "sha256:d960ebe6178c56de3855a68c47b516be38640b73fb3b5111c2a9ca90546dd73d", size = 705305, upload-time = "2024-11-23T23:39:58.542Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/aa/f3/0b6ced594e51cc95d8c1fc1640d3623770d01e4969d29c0bd09945fafefa/altair-5.5.0-py3-none-any.whl", hash = "sha256:91a310b926508d560fe0148d02a194f38b824122641ef528113d029fcd129f8c", size = 731200, upload-time = "2024-11-23T23:39:56.4Z" }, +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, +] + +[[package]] +name = "anyio" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, + { name = "idna" }, + { name = "sniffio" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/95/7d/4c1bd541d4dffa1b52bd83fb8527089e097a106fc90b467a7313b105f840/anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028", size = 190949, upload-time = "2025-03-17T00:02:54.77Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c", size = 100916, upload-time = "2025-03-17T00:02:52.713Z" }, +] + +[[package]] +name = "appnope" +version = "0.1.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/35/5d/752690df9ef5b76e169e68d6a129fa6d08a7100ca7f754c89495db3c6019/appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee", size = 4170, upload-time = "2024-02-06T09:43:11.258Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321, upload-time = "2024-02-06T09:43:09.663Z" }, +] + +[[package]] +name = "argon2-cffi" +version = "25.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "argon2-cffi-bindings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0e/89/ce5af8a7d472a67cc819d5d998aa8c82c5d860608c4db9f46f1162d7dab9/argon2_cffi-25.1.0.tar.gz", hash = "sha256:694ae5cc8a42f4c4e2bf2ca0e64e51e23a040c6a517a85074683d3959e1346c1", size = 45706, upload-time = "2025-06-03T06:55:32.073Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4f/d3/a8b22fa575b297cd6e3e3b0155c7e25db170edf1c74783d6a31a2490b8d9/argon2_cffi-25.1.0-py3-none-any.whl", hash = "sha256:fdc8b074db390fccb6eb4a3604ae7231f219aa669a2652e0f20e16ba513d5741", size = 14657, upload-time = "2025-06-03T06:55:30.804Z" }, +] + +[[package]] +name = "argon2-cffi-bindings" +version = "21.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b9/e9/184b8ccce6683b0aa2fbb7ba5683ea4b9c5763f1356347f1312c32e3c66e/argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3", size = 1779911, upload-time = "2021-12-01T08:52:55.68Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d4/13/838ce2620025e9666aa8f686431f67a29052241692a3dd1ae9d3692a89d3/argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367", size = 29658, upload-time = "2021-12-01T09:09:17.016Z" }, + { url = "https://files.pythonhosted.org/packages/b3/02/f7f7bb6b6af6031edb11037639c697b912e1dea2db94d436e681aea2f495/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d", size = 80583, upload-time = "2021-12-01T09:09:19.546Z" }, + { url = "https://files.pythonhosted.org/packages/ec/f7/378254e6dd7ae6f31fe40c8649eea7d4832a42243acaf0f1fff9083b2bed/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae", size = 86168, upload-time = "2021-12-01T09:09:21.445Z" }, + { url = "https://files.pythonhosted.org/packages/74/f6/4a34a37a98311ed73bb80efe422fed95f2ac25a4cacc5ae1d7ae6a144505/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c", size = 82709, upload-time = "2021-12-01T09:09:18.182Z" }, + { url = "https://files.pythonhosted.org/packages/74/2b/73d767bfdaab25484f7e7901379d5f8793cccbb86c6e0cbc4c1b96f63896/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86", size = 83613, upload-time = "2021-12-01T09:09:22.741Z" }, + { url = "https://files.pythonhosted.org/packages/4f/fd/37f86deef67ff57c76f137a67181949c2d408077e2e3dd70c6c42912c9bf/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f", size = 84583, upload-time = "2021-12-01T09:09:24.177Z" }, + { url = "https://files.pythonhosted.org/packages/6f/52/5a60085a3dae8fded8327a4f564223029f5f54b0cb0455a31131b5363a01/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e", size = 88475, upload-time = "2021-12-01T09:09:26.673Z" }, + { url = "https://files.pythonhosted.org/packages/8b/95/143cd64feb24a15fa4b189a3e1e7efbaeeb00f39a51e99b26fc62fbacabd/argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082", size = 27698, upload-time = "2021-12-01T09:09:27.87Z" }, + { url = "https://files.pythonhosted.org/packages/37/2c/e34e47c7dee97ba6f01a6203e0383e15b60fb85d78ac9a15cd066f6fe28b/argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f", size = 30817, upload-time = "2021-12-01T09:09:30.267Z" }, + { url = "https://files.pythonhosted.org/packages/5a/e4/bf8034d25edaa495da3c8a3405627d2e35758e44ff6eaa7948092646fdcc/argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93", size = 53104, upload-time = "2021-12-01T09:09:31.335Z" }, +] + +[[package]] +name = "arrow" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, + { name = "types-python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2e/00/0f6e8fcdb23ea632c866620cc872729ff43ed91d284c866b515c6342b173/arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85", size = 131960, upload-time = "2023-09-30T22:11:18.25Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/ed/e97229a566617f2ae958a6b13e7cc0f585470eac730a73e9e82c32a3cdd2/arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80", size = 66419, upload-time = "2023-09-30T22:11:16.072Z" }, +] + +[[package]] +name = "asciitree" +version = "0.3.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2d/6a/885bc91484e1aa8f618f6f0228d76d0e67000b0fdd6090673b777e311913/asciitree-0.3.3.tar.gz", hash = "sha256:4aa4b9b649f85e3fcb343363d97564aa1fb62e249677f2e18a96765145cc0f6e", size = 3951, upload-time = "2016-09-05T19:10:42.681Z" } + +[[package]] +name = "asttokens" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4a/e7/82da0a03e7ba5141f05cce0d302e6eed121ae055e0456ca228bf693984bc/asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7", size = 61978, upload-time = "2024-11-30T04:30:14.439Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918, upload-time = "2024-11-30T04:30:10.946Z" }, +] + +[[package]] +name = "asv" +version = "0.6.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asv-runner" }, + { name = "build" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "json5" }, + { name = "pympler", marker = "platform_python_implementation != 'PyPy'" }, + { name = "pyyaml", marker = "platform_python_implementation != 'PyPy'" }, + { name = "tabulate" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, + { name = "virtualenv" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/75/0c/31fe4135b378ee17131a804b11380a1ec1406c3925cb24ecdff5b86e673c/asv-0.6.4.tar.gz", hash = "sha256:1d124184171cfe106e3e57ac04e3221b8d4571c9bd6ca2c6498a8c7407339df1", size = 389611, upload-time = "2024-08-12T23:00:14.137Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/85/54/de33292ea7ce15613bdd9a6e51fac47878ce80f293157c9116c23387a1e5/asv-0.6.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e32b4cc435bdb6f2ef83d8092e977962f6fa20471542d6341e596324d350cbea", size = 185448, upload-time = "2024-08-12T22:58:12.49Z" }, + { url = "https://files.pythonhosted.org/packages/a9/14/fc30a590333a1021b28f9f2aaab009d3bb7c277cc1decadfcc86b74108de/asv-0.6.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fdfb9090623fc45cbeb77ab40b394779794083c155128e3d320fa06af2e0fdf5", size = 185245, upload-time = "2024-08-12T22:58:15.386Z" }, + { url = "https://files.pythonhosted.org/packages/c3/72/87296f54fbf876fd8e0ad744e0c9322dee6f6f631a8d9f14b9b48008b51c/asv-0.6.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5dfee8a415f4b5da0be4bedf4c9cb3b041c2148d28d2327cf3b54f9cb565cefd", size = 259330, upload-time = "2024-08-12T22:58:17.403Z" }, + { url = "https://files.pythonhosted.org/packages/bf/77/26cb95b1f1751706352e9924388732dc9fe4cc9e60153098407974d72b89/asv-0.6.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abc13331bb8bb1880dbc33e75175ae90bca439038a1f7e246528481ecebd15dd", size = 261036, upload-time = "2024-08-12T22:58:19.447Z" }, + { url = "https://files.pythonhosted.org/packages/ca/c6/c6f40902933b87f41e1ded3065eae526d29a40fbb84a69e2e61e151b217e/asv-0.6.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:b67eec004f8218bba25dcdbdda2e6676dd6c4ac3e97a80b691b27dcfbfbda38d", size = 866515, upload-time = "2024-08-12T22:58:22.934Z" }, + { url = "https://files.pythonhosted.org/packages/ae/00/7fa5a7c695ee49e11765956123407f868cefbf481b7c4177feba6e0646e9/asv-0.6.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:aef14496a34552308d054db71181bfb1ca45d7ef29028747d388be9f00a5b45c", size = 812157, upload-time = "2024-08-12T22:58:25.684Z" }, + { url = "https://files.pythonhosted.org/packages/4f/97/f09925683128f9bce9a7bfbcecb22334cec988fdb139a9959c2d22f39f19/asv-0.6.4-cp310-cp310-win_amd64.whl", hash = "sha256:0c8931e7a8aeda75f90b3ac422cbb7c46a5ce50d8c0a8e821cdf3e4d0705dd76", size = 188022, upload-time = "2024-08-12T22:58:27.774Z" }, + { url = "https://files.pythonhosted.org/packages/b0/39/8532a88cde13dca8d9dcfeb2ba48d92beaef8919fbfc2d428cbfa5a1bbb9/asv-0.6.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:74666c5896b4aec92b4a12cf9aa7494dec3398bb9ea602a9f8dc1656b53e8e10", size = 185462, upload-time = "2024-08-12T22:58:30.299Z" }, + { url = "https://files.pythonhosted.org/packages/9b/a6/b0133d083ac4c979f16e9bd887427c141306e3779505941ccf25341c0384/asv-0.6.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:26166a7bd7fe05b5a8507247d1a7ab1dfc4256414b0505d124a7b9d46a618a1c", size = 185242, upload-time = "2024-08-12T22:58:32.138Z" }, + { url = "https://files.pythonhosted.org/packages/ba/5c/0726b4925163c12e842e306267c0e702fb694b85f34b62240f687208091c/asv-0.6.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe6161c5616f5aed936947866b6376e09c937d628aa81115b3c72e90a151c1f9", size = 259959, upload-time = "2024-08-12T22:58:33.877Z" }, + { url = "https://files.pythonhosted.org/packages/e0/6d/944b4fc935b6c6874a17413159aa19701b80052d29c80efe6a9afbcec3b5/asv-0.6.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4d6122b5e86bf9071b9ff7136672d50da0d460dfc958f43429843f7a3cd3e86a", size = 261620, upload-time = "2024-08-12T22:58:36.129Z" }, + { url = "https://files.pythonhosted.org/packages/eb/24/b6169229108e1a1d6506fbd2bfad5ecede34df5e03020b16c627e44411b8/asv-0.6.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:79554f125033ecbcb599cd704b4b5b525d254e5e05b1dd24bab3bbd83ae5502e", size = 867864, upload-time = "2024-08-12T22:58:38.865Z" }, + { url = "https://files.pythonhosted.org/packages/4a/a2/b9e5be144fd0c7072637f50c98bdf615d83165244849473e2b9f262ea24b/asv-0.6.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2e80f39501628fd4cac972f08fa4c9b8e211a86fc43dd6e58c95d106cbaf54e7", size = 813539, upload-time = "2024-08-12T22:58:41.184Z" }, + { url = "https://files.pythonhosted.org/packages/2a/d7/ea92fc7155a5cd7aa1903dd74096a91a8851355423bf8f09d6e3a96ccc21/asv-0.6.4-cp311-cp311-win_amd64.whl", hash = "sha256:363dfdee98cc072e6a1468137eed640985e48ccbb11c175d04ee420f05459872", size = 188025, upload-time = "2024-08-12T22:58:42.72Z" }, + { url = "https://files.pythonhosted.org/packages/42/5f/f6ac7c787cde901d694b9355d9cd9227b907b313b3f1ed2b006668104e5f/asv-0.6.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:244b71778f91aa6672e1f16feb9eecac78ef7cee95228ef8f0315a2e2deecfed", size = 185442, upload-time = "2024-08-12T22:58:44.839Z" }, + { url = "https://files.pythonhosted.org/packages/b2/c0/339bf20ad132b85376aa4ddc6d17e0ee704846a856a84eb59609df6ca4ef/asv-0.6.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3e798b275de2889748d43d42305bfce68c015a3e38ae935d231835cb836fef73", size = 185225, upload-time = "2024-08-12T22:58:48.309Z" }, + { url = "https://files.pythonhosted.org/packages/3d/3e/1019cb8cb54bc6cf28799c49b86a67b4713082d1e857eac8ec9e34d8ed83/asv-0.6.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d064c5ac1ab18efc62467f65ed4989a2e2ac1a4d21886119fa0ef0f91d548438", size = 260431, upload-time = "2024-08-12T22:58:49.663Z" }, + { url = "https://files.pythonhosted.org/packages/a5/80/fd70dba7f524a95a2d9e8f976cfc891d570f3ccdd9201c1f0c3bc2dfea74/asv-0.6.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c51e5862bdac0f1fe11886bdd40b30a9691a65cb7feac40f0676fe9206d5bb43", size = 261970, upload-time = "2024-08-12T22:58:51.499Z" }, + { url = "https://files.pythonhosted.org/packages/6a/bf/5af517bef47eb92eca0016b33334f77760a4f4f7acd3022b1d00dfe576fa/asv-0.6.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:46a7ca838e8c49109c43b1cda0eb64abc5e0a045538da718abe981d115ed47aa", size = 867717, upload-time = "2024-08-12T22:58:54.508Z" }, + { url = "https://files.pythonhosted.org/packages/98/71/f205a3122f8aa7889a4691384c6b01bea4805b5982d47ccdaa189296d53a/asv-0.6.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f5f722178c7e36b797f764c837fc03c462f68c8f2cba5145b2e64119e46231ff", size = 813322, upload-time = "2024-08-12T22:58:57.074Z" }, + { url = "https://files.pythonhosted.org/packages/1f/7b/a2001b35bc1fbaa7cbf763f8cff4ad64af849fd59ef26a3f4e32ee211e63/asv-0.6.4-cp312-cp312-win_amd64.whl", hash = "sha256:f972ca71316d46a0242eb69e53dadfeab1e4d0546773b0f722462f97b3e5fbd9", size = 188022, upload-time = "2024-08-12T22:58:58.824Z" }, + { url = "https://files.pythonhosted.org/packages/67/c2/0808a237f90189f8fcfd6be4b77a8e1f19d0b8813d947a816f2bf9514809/asv-0.6.4-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0305e9eee21f71c3d3f8b046beb35e571f6dd7ed2fcd0e8405f8a208bcd3228a", size = 184577, upload-time = "2024-08-12T22:59:45.167Z" }, + { url = "https://files.pythonhosted.org/packages/7b/c7/171341cc046f570b32fc4da70e80f800470301df3d67301e71b9c6f68a43/asv-0.6.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e6cd23fa20edf8cb30354fda3388a8835a15158e21559c86f0d997e5d30dbf91", size = 185004, upload-time = "2024-08-12T22:59:46.378Z" }, + { url = "https://files.pythonhosted.org/packages/8f/c6/df037423144a902cd2cbcdb9cbcdee567f7ba35be4f470f2a09ffba1e2fd/asv-0.6.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7424d2dbfcb98aa3c099311100ceb9aabfd83fed0b41420f70f142852ed392a", size = 185767, upload-time = "2024-08-12T22:59:48.423Z" }, + { url = "https://files.pythonhosted.org/packages/36/09/8ec4eb06432ccd13a346fb4db1e9ee67589c65731bc7a5c59c347eab5581/asv-0.6.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:e7f4b95583cf379015d35b747a1bb4df99c05dd4107d6081b2cf4a577f4caeca", size = 188103, upload-time = "2024-08-12T22:59:50.475Z" }, +] + +[[package]] +name = "asv-runner" +version = "0.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "importlib-metadata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/32/4b/da5ae9c35e0b9f793d07d4939ad99e1d2ba7c9c502fd6074af5ff4554b03/asv_runner-0.2.1.tar.gz", hash = "sha256:945dd301a06fa9102f221b1e9ddd048f5ecd863796d4c8cd487f5577fe0db66d", size = 39518, upload-time = "2024-02-17T14:11:48.104Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/9a/6872af94fc8e8072723946651e65f66e16a0ca0efec7806bce8c2e2483d1/asv_runner-0.2.1-py3-none-any.whl", hash = "sha256:655d466208ce311768071f5003a61611481b24b3ad5ac41fb8a6374197e647e9", size = 47660, upload-time = "2024-02-11T21:50:07.026Z" }, +] + +[[package]] +name = "async-lru" +version = "2.0.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b2/4d/71ec4d3939dc755264f680f6c2b4906423a304c3d18e96853f0a595dfe97/async_lru-2.0.5.tar.gz", hash = "sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb", size = 10380, upload-time = "2025-03-16T17:25:36.919Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/03/49/d10027df9fce941cb8184e78a02857af36360d33e1721df81c5ed2179a1a/async_lru-2.0.5-py3-none-any.whl", hash = "sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943", size = 6069, upload-time = "2025-03-16T17:25:35.422Z" }, +] + +[[package]] +name = "attrs" +version = "25.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032, upload-time = "2025-03-13T11:10:22.779Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815, upload-time = "2025-03-13T11:10:21.14Z" }, +] + +[[package]] +name = "autodoc-pydantic" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pydantic" }, + { name = "pydantic-settings" }, + { name = "sphinx" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/df/87120e2195f08d760bc5cf8a31cfa2381a6887517aa89453b23f1ae3354f/autodoc_pydantic-2.2.0-py3-none-any.whl", hash = "sha256:8c6a36fbf6ed2700ea9c6d21ea76ad541b621fbdf16b5a80ee04673548af4d95", size = 34001, upload-time = "2024-04-27T10:57:00.542Z" }, +] + +[[package]] +name = "babel" +version = "2.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852, upload-time = "2025-02-01T15:17:41.026Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537, upload-time = "2025-02-01T15:17:37.39Z" }, +] + +[[package]] +name = "beautifulsoup4" +version = "4.13.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "soupsieve" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d8/e4/0c4c39e18fd76d6a628d4dd8da40543d136ce2d1752bd6eeeab0791f4d6b/beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195", size = 621067, upload-time = "2025-04-15T17:05:13.836Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/50/cd/30110dc0ffcf3b131156077b90e9f60ed75711223f306da4db08eff8403b/beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", size = 187285, upload-time = "2025-04-15T17:05:12.221Z" }, +] + +[[package]] +name = "black" +version = "22.12.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "mypy-extensions" }, + { name = "pathspec" }, + { name = "platformdirs" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a6/59/e873cc6807fb62c11131e5258ca15577a3b7452abad08dc49286cf8245e8/black-22.12.0.tar.gz", hash = "sha256:229351e5a18ca30f447bf724d007f890f97e13af070bb6ad4c0a441cd7596a2f", size = 553112, upload-time = "2022-12-09T15:57:04.428Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/d9/60852a6fc2f85374db20a9767dacfe50c2172eb8388f46018c8daf836995/black-22.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eedd20838bd5d75b80c9f5487dbcb06836a43833a37846cf1d8c1cc01cef59d", size = 1556665, upload-time = "2022-12-09T16:04:10.897Z" }, + { url = "https://files.pythonhosted.org/packages/71/57/975782465cc6b514f2c972421e29b933dfbb51d4a95948a4e0e94f36ea38/black-22.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:159a46a4947f73387b4d83e87ea006dbb2337eab6c879620a3ba52699b1f4351", size = 1205632, upload-time = "2022-12-09T16:14:38.465Z" }, + { url = "https://files.pythonhosted.org/packages/e9/e0/6aa02d14785c4039b38bfed6f9ee28a952b2d101c64fc97b15811fa8bd04/black-22.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d30b212bffeb1e252b31dd269dfae69dd17e06d92b87ad26e23890f3efea366f", size = 1536577, upload-time = "2022-12-09T16:04:12.721Z" }, + { url = "https://files.pythonhosted.org/packages/4c/49/420dcfccba3215dc4e5790fa47572ef14129df1c5e95dd87b5ad30211b01/black-22.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:7412e75863aa5c5411886804678b7d083c7c28421210180d67dfd8cf1221e1f4", size = 1209873, upload-time = "2022-12-09T16:14:40.318Z" }, + { url = "https://files.pythonhosted.org/packages/0c/51/1f7f93c0555eaf4cbb628e26ba026e3256174a45bd9397ff1ea7cf96bad5/black-22.12.0-py3-none-any.whl", hash = "sha256:436cc9167dd28040ad90d3b404aec22cedf24a6e4d7de221bec2730ec0c97bcf", size = 167343, upload-time = "2022-12-09T15:57:02.229Z" }, +] + +[[package]] +name = "bleach" +version = "6.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/76/9a/0e33f5054c54d349ea62c277191c020c2d6ef1d65ab2cb1993f91ec846d1/bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f", size = 203083, upload-time = "2024-10-29T18:30:40.477Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fc/55/96142937f66150805c25c4d0f31ee4132fd33497753400734f9dfdcbdc66/bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e", size = 163406, upload-time = "2024-10-29T18:30:38.186Z" }, +] + +[package.optional-dependencies] +css = [ + { name = "tinycss2" }, +] + +[[package]] +name = "blosc2" +version = "2.7.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11'", +] +dependencies = [ + { name = "msgpack", marker = "python_full_version < '3.11'" }, + { name = "ndindex", marker = "python_full_version < '3.11'" }, + { name = "numexpr", marker = "python_full_version < '3.11'" }, + { name = "numpy", marker = "python_full_version < '3.11'" }, + { name = "py-cpuinfo", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ef/bb/19a5d672f86dd26be0fc4f3a4c04264c088f3309b7b9d4e3e853a1f3cfda/blosc2-2.7.1.tar.gz", hash = "sha256:34db4d41543b16e894d507d6c7d10a9a67c9dd420ff40b072f7c39185cbb8fe8", size = 5149754, upload-time = "2024-07-30T20:18:33.3Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/93/f4/cbd6c3aaa6d328f73f6c86d56df016edb48083291b90eb945572584fa8f6/blosc2-2.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ad698c6fca8dee677b7a1881206f7ac43ffd7c458733716a3de1e1f3c6ba1f79", size = 3930841, upload-time = "2024-07-30T20:17:32.954Z" }, + { url = "https://files.pythonhosted.org/packages/3f/e7/0f259887dc4b5ac48ed088a932444052905aba1a883d2bd79fd54f6a8ead/blosc2-2.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5923a22fb7cfdad571b316930e8812618ba8b2ac1f37ac05edcf3eda71beed9f", size = 3316501, upload-time = "2024-07-30T20:17:36.095Z" }, + { url = "https://files.pythonhosted.org/packages/45/6a/dc70194a05e03904a5c9fec9241838b3168afba98f31a0cc7b9a4451f033/blosc2-2.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18770f75174a3aae5712f53e9cb5885b258b730b281cbb3bf1e7a74ea3d94fae", size = 4262586, upload-time = "2024-07-30T20:17:39.271Z" }, + { url = "https://files.pythonhosted.org/packages/bb/1b/5abcd413e11222411ea6032be42aa4db3eac51ab04b967f7e8c669fdb857/blosc2-2.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3412e83e6b2508f3da0b0f3e0bf86bef4dac56f018525d2ab55ca50712a2b91a", size = 4409460, upload-time = "2024-07-30T20:17:41.496Z" }, + { url = "https://files.pythonhosted.org/packages/44/fb/0bc4828c931402d711e9e26aa9938b7ed4f3abc4e7714edc9ab593ab83c8/blosc2-2.7.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:06e0933855a6cba347692f08de1aaa51a8858dda67e7c5eaeaab59663b897879", size = 4815324, upload-time = "2024-07-30T20:17:43.155Z" }, + { url = "https://files.pythonhosted.org/packages/db/64/6e11754d7498aa9e7fa13436e9eef00aaf1c74a9c67f74b36e134bd2c81a/blosc2-2.7.1-cp310-cp310-win32.whl", hash = "sha256:d5e03ec783841c82ba6704638f5847a80cac8625186932a8f3b47bc5fbda4f7e", size = 1982839, upload-time = "2024-07-30T20:17:48.104Z" }, + { url = "https://files.pythonhosted.org/packages/9b/a5/0bf10f282853aaf77f8f7b919ca79813b56b2d7955625400d527eb268449/blosc2-2.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:150030e81bd5037f802ce7844281a37ff67e0998aa1735c48b02f3c6401bf0a1", size = 2374796, upload-time = "2024-07-30T20:17:49.67Z" }, + { url = "https://files.pythonhosted.org/packages/22/cb/2a5b2024afa43f9b90a21022c44211ba064dc3501e99e3a8ea5b275189dd/blosc2-2.7.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:51fa45187639cd1f7822355c91f6ceb0fbff6157eb6f9c32462782551fc61283", size = 3933072, upload-time = "2024-07-30T20:17:51.906Z" }, + { url = "https://files.pythonhosted.org/packages/77/3d/1dedc6be1a730d4ba75c599fa8f5426efd02cef7722ed7e54b16e0ae8702/blosc2-2.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f8134aaaf72b670f2ddf258d9b64646c262d6b1b112a530d39f9a5d316f3b306", size = 3317470, upload-time = "2024-07-30T20:17:54.008Z" }, + { url = "https://files.pythonhosted.org/packages/e0/93/c1051b42f9797504c11d28185b7e4e343e716eb12152f087cf5312aa7b8b/blosc2-2.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c10a9505c6d2d5e58f03a1139b4a4b234511baa9ebeba17f8f1cc22881ca764", size = 4260663, upload-time = "2024-07-30T20:17:58.1Z" }, + { url = "https://files.pythonhosted.org/packages/3e/00/21f408b3257fff4e5166dbd666ee2739f088e139dc90743b09952ee0ebd8/blosc2-2.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed15f0eb6a99df425b33be948fb309a97e76bda37eae20022bc9611bce775592", size = 4406560, upload-time = "2024-07-30T20:17:59.903Z" }, + { url = "https://files.pythonhosted.org/packages/ba/4d/0295f619fad024e05a46afc1315661f08f3ac3f2c051c9bf060cfb91fe2d/blosc2-2.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7a369a72467b54fb45aa307cf6e3ae84ec0212a9b55cfa5f4d4eb06a06bb1472", size = 4814632, upload-time = "2024-07-30T20:18:02.039Z" }, + { url = "https://files.pythonhosted.org/packages/d8/f6/aeb8cd6c0184870ad2be3cf3664a23e45595024b47cc036e83f20b2d039f/blosc2-2.7.1-cp311-cp311-win32.whl", hash = "sha256:bf55816beaf34eaba021904ee7d6c428ca338d0f3ec7a5be04dda552258d0a8b", size = 1982521, upload-time = "2024-07-30T20:18:04.62Z" }, + { url = "https://files.pythonhosted.org/packages/df/e1/36db3625759c8e620ed992450e9579a02f023538292883e04189845d98d0/blosc2-2.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:9b00bcaeaf125491cc6dec5508389f95152de69cc678a63a0310a756511f3d21", size = 2375006, upload-time = "2024-07-30T20:18:09.64Z" }, + { url = "https://files.pythonhosted.org/packages/d8/83/417cc99eb9c46a295c9b9381834e9728ba1c583ad942610755a5348f9965/blosc2-2.7.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:bd91a5d9e1d35b47bf5a3b6b440bc120f1fa0af45264c0a6ccca6b1083de43e9", size = 3937332, upload-time = "2024-07-30T20:18:11.366Z" }, + { url = "https://files.pythonhosted.org/packages/f1/85/3f817bcd5f665625a46056ea7acad8a4798238a37d85a22cc8294e885e89/blosc2-2.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2c7dbdd93378d01b048536b2eccbb77eaa73054665bc3a9396e4e391a50c4ad0", size = 3317749, upload-time = "2024-07-30T20:18:17.392Z" }, + { url = "https://files.pythonhosted.org/packages/01/00/35bac426ec7e1e0ea05193043bb2c1a3151861a2f5519ab070223ca5819e/blosc2-2.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c662a3cab4760c194407de1990bd70608af29ee30d6471072463cdc8cc6586c4", size = 4242056, upload-time = "2024-07-30T20:18:19.635Z" }, + { url = "https://files.pythonhosted.org/packages/58/9f/54099025ce55a33d2be80eda16821d695c0249c9826e14196e2655ca4a7e/blosc2-2.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c1f3e5ed25930596492dddac8022a729d538efb3c1c4e4904a0021288cf4835", size = 4390896, upload-time = "2024-07-30T20:18:22.501Z" }, + { url = "https://files.pythonhosted.org/packages/40/2b/9fb84e2656f09ac90fed163490c11e88a8f5306e53f27b9eb324a2d966b9/blosc2-2.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:23763b3602df9b0e63d16d21abadaac426a74370a0a986f08bf5322bcfd207c6", size = 4793489, upload-time = "2024-07-30T20:18:24.059Z" }, + { url = "https://files.pythonhosted.org/packages/9b/f6/3864933ef0d51845a78f260dce9eba4e3938ff136d1dcd7a4b9d91d25191/blosc2-2.7.1-cp312-cp312-win32.whl", hash = "sha256:6c894ef42fabc49c6bd1c41d2e45ac24e911b3b711c1e26f9be93dbcbf5fd4e2", size = 1977960, upload-time = "2024-07-30T20:18:25.643Z" }, + { url = "https://files.pythonhosted.org/packages/77/81/44def26a468e14309a4cb7d5f6f0534e3e9eec292c0453a9624a4d9c0ebd/blosc2-2.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:a1a884f181a2a9612470bcd589794c7adda3eebdaed918e1a8b6e69683524b70", size = 2370429, upload-time = "2024-07-30T20:18:30.863Z" }, +] + +[[package]] +name = "blosc2" +version = "3.1.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", +] +dependencies = [ + { name = "httpx", marker = "python_full_version >= '3.11'" }, + { name = "msgpack", marker = "python_full_version >= '3.11'" }, + { name = "ndindex", marker = "python_full_version >= '3.11'" }, + { name = "numexpr", marker = "python_full_version >= '3.11'" }, + { name = "numpy", marker = "python_full_version >= '3.11'" }, + { name = "platformdirs", marker = "python_full_version >= '3.11'" }, + { name = "py-cpuinfo", marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/07/72/ce387bfd0c8f0e7acc7c62b8bc13d5beaabcef5a735800da0beeaf3ad1df/blosc2-3.1.1.tar.gz", hash = "sha256:1999f442676d31b07820fb97437caca3b1fbd7c94bfa2d18f6f26c2e9d90e622", size = 9927475, upload-time = "2025-02-14T11:24:38.053Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/4f/4cb0b133c71a590d0c7e02c6174ba81363e8ac196e4f23366dbc437b51af/blosc2-3.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0360121f37a556e69107f59d34da8d26c9cb9c970a34465b181678b556f9536c", size = 3979440, upload-time = "2025-02-14T11:23:55.183Z" }, + { url = "https://files.pythonhosted.org/packages/ac/68/b1f9a45dc04d0764fc510d3bbed821c4f97d1548b717f33b7c8cbe5d426a/blosc2-3.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:64a86da9a784770815e14294b16200b696808f1a244f6675e3ecd12165c1e650", size = 3361371, upload-time = "2025-02-14T11:23:58.578Z" }, + { url = "https://files.pythonhosted.org/packages/19/56/47cd78d0a7f0f8d2ed1241b2df48f71e18834b0c2172a99dabd6c8388fe3/blosc2-3.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7aa92f21c63e22d0b04c2a84c26c4489ae7f9486b6eb1dbd9f492e1a51296f69", size = 4256670, upload-time = "2025-02-14T11:24:01.438Z" }, + { url = "https://files.pythonhosted.org/packages/c5/3c/4a8415fccaa0ee6c801d3cee3cc4cfac300261dc3395f2cb8fa1a458a588/blosc2-3.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69c9e486236bb5d1d7c62d412d92f10ad374d90bcf4039a1e7b7f2823470f0de", size = 4418537, upload-time = "2025-02-14T11:24:05.335Z" }, + { url = "https://files.pythonhosted.org/packages/61/33/3890fd4555f574b101b8ebbae199259d4ee7441933b650eff991510fec6e/blosc2-3.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:6b6b20c6a761f38b4266fa109242382eac7b466b770b4bf994f334930f94e37f", size = 2184619, upload-time = "2025-02-14T11:24:08.343Z" }, + { url = "https://files.pythonhosted.org/packages/83/03/2a62a18edd2e632a8d6a57a7795bb5a32abcc505050c254020c400a1dcde/blosc2-3.1.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0c18a77ada14609efcc2ba4ebbf91e19ebf5292a1b6153d820c6245e226d0fb2", size = 3991129, upload-time = "2025-02-14T11:24:12.082Z" }, + { url = "https://files.pythonhosted.org/packages/e6/d0/e434a8de4a7826729504f5c1351c6dcab64ee0a87a57614ec730307b6316/blosc2-3.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6148dcd8e802bd845d610aebf1537cfa56b12f46706282d319adc4cd0ce6014b", size = 3361417, upload-time = "2025-02-14T11:24:13.928Z" }, + { url = "https://files.pythonhosted.org/packages/9f/54/981412a67003e08954cf94113de3a92a6b55c6c408f7862f28fc551dc7bf/blosc2-3.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1d31a0eb8023b3976f4b6af238600cbc4858b5d2c35103a419b4ed339e0ccb8", size = 4236591, upload-time = "2025-02-14T11:24:17.375Z" }, + { url = "https://files.pythonhosted.org/packages/4e/b1/a903f5017fe501d97189a87a6f100cfca09cb884a2f1ef9f68d65e767fca/blosc2-3.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2fab7291999d96d4e3f84fd97adaddce07c31dc06b0f15eab75334433299ab5", size = 4402233, upload-time = "2025-02-14T11:24:20.084Z" }, + { url = "https://files.pythonhosted.org/packages/e5/d9/8fa3765e848b031321439273ee94ea3b4225480e50169f791d02d1b979f8/blosc2-3.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:db153e073b616f0408bbda7c60c5b039bfae4c19430c80b21f022d4b415071b0", size = 2178606, upload-time = "2025-02-14T11:24:21.897Z" }, + { url = "https://files.pythonhosted.org/packages/25/ad/9c2b566611f7eeace73303e8628f1bd811b85a848fffbd56c3283f140d96/blosc2-3.1.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b4bdc0d0e471a5a799a3ea047c1357a881ed14a3b4208de87d5bf46eabc4d90f", size = 3989170, upload-time = "2025-02-14T11:24:24.071Z" }, + { url = "https://files.pythonhosted.org/packages/72/2f/1fa26cd7f26b4fcb00ab081a625084e8f5ba0ce37bf6fe020231361240c0/blosc2-3.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f951160a7f13d6acc45234fa7df032188ddfbf664ff747342f4f3c3490123d7e", size = 3359806, upload-time = "2025-02-14T11:24:26.731Z" }, + { url = "https://files.pythonhosted.org/packages/37/49/dc2f354abde747ffb384ab94d1a8775b6e4d8062815119446b6a9d3439d3/blosc2-3.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f30de8258400dae8e53a15c7e4bc631c4b5db0b954d17651da908ec8a652137f", size = 4235962, upload-time = "2025-02-14T11:24:29.632Z" }, + { url = "https://files.pythonhosted.org/packages/8b/14/cc880f88bde3dc890def8591a3babb8f463caf4edc95f3319f2718667f1e/blosc2-3.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fab9efb920fc54aaf1387346fcbea6764ebd3413311b31c0c661875eb83a6d2", size = 4401256, upload-time = "2025-02-14T11:24:33.14Z" }, + { url = "https://files.pythonhosted.org/packages/e9/e6/c1602b0642110d621e9661b24eaa5f20bf691191d1e1915005b97fc18283/blosc2-3.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:3cb0f17ce4551ecff5a90eee5e297be73c29689fb82c026f51751d4e48cee4cd", size = 2178726, upload-time = "2025-02-14T11:24:34.766Z" }, +] + +[[package]] +name = "build" +version = "1.2.2.post1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "os_name == 'nt'" }, + { name = "importlib-metadata", marker = "python_full_version < '3.10.2'" }, + { name = "packaging" }, + { name = "pyproject-hooks" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7d/46/aeab111f8e06793e4f0e421fcad593d547fb8313b50990f31681ee2fb1ad/build-1.2.2.post1.tar.gz", hash = "sha256:b36993e92ca9375a219c99e606a122ff365a760a2d4bba0caa09bd5278b608b7", size = 46701, upload-time = "2024-10-06T17:22:25.251Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/c2/80633736cd183ee4a62107413def345f7e6e3c01563dbca1417363cf957e/build-1.2.2.post1-py3-none-any.whl", hash = "sha256:1d61c0887fa860c01971625baae8bdd338e517b836a2f70dd1f7aa3a6b2fc5b5", size = 22950, upload-time = "2024-10-06T17:22:23.299Z" }, +] + +[[package]] +name = "bump2version" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/29/2a/688aca6eeebfe8941235be53f4da780c6edee05dbbea5d7abaa3aab6fad2/bump2version-1.0.1.tar.gz", hash = "sha256:762cb2bfad61f4ec8e2bdf452c7c267416f8c70dd9ecb1653fd0bbb01fa936e6", size = 36236, upload-time = "2020-10-07T18:38:40.119Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/e3/fa60c47d7c344533142eb3af0b73234ef8ea3fb2da742ab976b947e717df/bump2version-1.0.1-py2.py3-none-any.whl", hash = "sha256:37f927ea17cde7ae2d7baf832f8e80ce3777624554a653006c9144f8017fe410", size = 22030, upload-time = "2020-10-07T18:38:38.148Z" }, +] + +[[package]] +name = "certifi" +version = "2025.4.26" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e8/9e/c05b3920a3b7d20d3d3310465f50348e5b3694f4f88c6daf736eef3024c4/certifi-2025.4.26.tar.gz", hash = "sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6", size = 160705, upload-time = "2025-04-26T02:12:29.51Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4a/7e/3db2bd1b1f9e95f7cddca6d6e75e2f2bd9f51b1246e546d88addca0106bd/certifi-2025.4.26-py3-none-any.whl", hash = "sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3", size = 159618, upload-time = "2025-04-26T02:12:27.662Z" }, +] + +[[package]] +name = "cffi" +version = "1.17.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621, upload-time = "2024-09-04T20:45:21.852Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/90/07/f44ca684db4e4f08a3fdc6eeb9a0d15dc6883efc7b8c90357fdbf74e186c/cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14", size = 182191, upload-time = "2024-09-04T20:43:30.027Z" }, + { url = "https://files.pythonhosted.org/packages/08/fd/cc2fedbd887223f9f5d170c96e57cbf655df9831a6546c1727ae13fa977a/cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67", size = 178592, upload-time = "2024-09-04T20:43:32.108Z" }, + { url = "https://files.pythonhosted.org/packages/de/cc/4635c320081c78d6ffc2cab0a76025b691a91204f4aa317d568ff9280a2d/cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382", size = 426024, upload-time = "2024-09-04T20:43:34.186Z" }, + { url = "https://files.pythonhosted.org/packages/b6/7b/3b2b250f3aab91abe5f8a51ada1b717935fdaec53f790ad4100fe2ec64d1/cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702", size = 448188, upload-time = "2024-09-04T20:43:36.286Z" }, + { url = "https://files.pythonhosted.org/packages/d3/48/1b9283ebbf0ec065148d8de05d647a986c5f22586b18120020452fff8f5d/cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3", size = 455571, upload-time = "2024-09-04T20:43:38.586Z" }, + { url = "https://files.pythonhosted.org/packages/40/87/3b8452525437b40f39ca7ff70276679772ee7e8b394934ff60e63b7b090c/cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6", size = 436687, upload-time = "2024-09-04T20:43:40.084Z" }, + { url = "https://files.pythonhosted.org/packages/8d/fb/4da72871d177d63649ac449aec2e8a29efe0274035880c7af59101ca2232/cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17", size = 446211, upload-time = "2024-09-04T20:43:41.526Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a0/62f00bcb411332106c02b663b26f3545a9ef136f80d5df746c05878f8c4b/cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8", size = 461325, upload-time = "2024-09-04T20:43:43.117Z" }, + { url = "https://files.pythonhosted.org/packages/36/83/76127035ed2e7e27b0787604d99da630ac3123bfb02d8e80c633f218a11d/cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e", size = 438784, upload-time = "2024-09-04T20:43:45.256Z" }, + { url = "https://files.pythonhosted.org/packages/21/81/a6cd025db2f08ac88b901b745c163d884641909641f9b826e8cb87645942/cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be", size = 461564, upload-time = "2024-09-04T20:43:46.779Z" }, + { url = "https://files.pythonhosted.org/packages/f8/fe/4d41c2f200c4a457933dbd98d3cf4e911870877bd94d9656cc0fcb390681/cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c", size = 171804, upload-time = "2024-09-04T20:43:48.186Z" }, + { url = "https://files.pythonhosted.org/packages/d1/b6/0b0f5ab93b0df4acc49cae758c81fe4e5ef26c3ae2e10cc69249dfd8b3ab/cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15", size = 181299, upload-time = "2024-09-04T20:43:49.812Z" }, + { url = "https://files.pythonhosted.org/packages/6b/f4/927e3a8899e52a27fa57a48607ff7dc91a9ebe97399b357b85a0c7892e00/cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401", size = 182264, upload-time = "2024-09-04T20:43:51.124Z" }, + { url = "https://files.pythonhosted.org/packages/6c/f5/6c3a8efe5f503175aaddcbea6ad0d2c96dad6f5abb205750d1b3df44ef29/cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf", size = 178651, upload-time = "2024-09-04T20:43:52.872Z" }, + { url = "https://files.pythonhosted.org/packages/94/dd/a3f0118e688d1b1a57553da23b16bdade96d2f9bcda4d32e7d2838047ff7/cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4", size = 445259, upload-time = "2024-09-04T20:43:56.123Z" }, + { url = "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", size = 469200, upload-time = "2024-09-04T20:43:57.891Z" }, + { url = "https://files.pythonhosted.org/packages/1c/a0/a4fa9f4f781bda074c3ddd57a572b060fa0df7655d2a4247bbe277200146/cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1", size = 477235, upload-time = "2024-09-04T20:44:00.18Z" }, + { url = "https://files.pythonhosted.org/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", size = 459721, upload-time = "2024-09-04T20:44:01.585Z" }, + { url = "https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", size = 467242, upload-time = "2024-09-04T20:44:03.467Z" }, + { url = "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", size = 477999, upload-time = "2024-09-04T20:44:05.023Z" }, + { url = "https://files.pythonhosted.org/packages/44/74/f2a2460684a1a2d00ca799ad880d54652841a780c4c97b87754f660c7603/cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f", size = 454242, upload-time = "2024-09-04T20:44:06.444Z" }, + { url = "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", size = 478604, upload-time = "2024-09-04T20:44:08.206Z" }, + { url = "https://files.pythonhosted.org/packages/34/33/e1b8a1ba29025adbdcda5fb3a36f94c03d771c1b7b12f726ff7fef2ebe36/cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655", size = 171727, upload-time = "2024-09-04T20:44:09.481Z" }, + { url = "https://files.pythonhosted.org/packages/3d/97/50228be003bb2802627d28ec0627837ac0bf35c90cf769812056f235b2d1/cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0", size = 181400, upload-time = "2024-09-04T20:44:10.873Z" }, + { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178, upload-time = "2024-09-04T20:44:12.232Z" }, + { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840, upload-time = "2024-09-04T20:44:13.739Z" }, + { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803, upload-time = "2024-09-04T20:44:15.231Z" }, + { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850, upload-time = "2024-09-04T20:44:17.188Z" }, + { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729, upload-time = "2024-09-04T20:44:18.688Z" }, + { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256, upload-time = "2024-09-04T20:44:20.248Z" }, + { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424, upload-time = "2024-09-04T20:44:21.673Z" }, + { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568, upload-time = "2024-09-04T20:44:23.245Z" }, + { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736, upload-time = "2024-09-04T20:44:24.757Z" }, + { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448, upload-time = "2024-09-04T20:44:26.208Z" }, + { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976, upload-time = "2024-09-04T20:44:27.578Z" }, + { url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989, upload-time = "2024-09-04T20:44:28.956Z" }, + { url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802, upload-time = "2024-09-04T20:44:30.289Z" }, + { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792, upload-time = "2024-09-04T20:44:32.01Z" }, + { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893, upload-time = "2024-09-04T20:44:33.606Z" }, + { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810, upload-time = "2024-09-04T20:44:35.191Z" }, + { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200, upload-time = "2024-09-04T20:44:36.743Z" }, + { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447, upload-time = "2024-09-04T20:44:38.492Z" }, + { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358, upload-time = "2024-09-04T20:44:40.046Z" }, + { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469, upload-time = "2024-09-04T20:44:41.616Z" }, + { url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475, upload-time = "2024-09-04T20:44:43.733Z" }, + { url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009, upload-time = "2024-09-04T20:44:45.309Z" }, +] + +[[package]] +name = "cfgv" +version = "3.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/11/74/539e56497d9bd1d484fd863dd69cbbfa653cd2aa27abfe35653494d85e94/cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560", size = 7114, upload-time = "2023-08-12T20:38:17.776Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", size = 7249, upload-time = "2023-08-12T20:38:16.269Z" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367, upload-time = "2025-05-02T08:34:42.01Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/28/9901804da60055b406e1a1c5ba7aac1276fb77f1dde635aabfc7fd84b8ab/charset_normalizer-3.4.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7c48ed483eb946e6c04ccbe02c6b4d1d48e51944b6db70f697e089c193404941", size = 201818, upload-time = "2025-05-02T08:31:46.725Z" }, + { url = "https://files.pythonhosted.org/packages/d9/9b/892a8c8af9110935e5adcbb06d9c6fe741b6bb02608c6513983048ba1a18/charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2d318c11350e10662026ad0eb71bb51c7812fc8590825304ae0bdd4ac283acd", size = 144649, upload-time = "2025-05-02T08:31:48.889Z" }, + { url = "https://files.pythonhosted.org/packages/7b/a5/4179abd063ff6414223575e008593861d62abfc22455b5d1a44995b7c101/charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9cbfacf36cb0ec2897ce0ebc5d08ca44213af24265bd56eca54bee7923c48fd6", size = 155045, upload-time = "2025-05-02T08:31:50.757Z" }, + { url = "https://files.pythonhosted.org/packages/3b/95/bc08c7dfeddd26b4be8c8287b9bb055716f31077c8b0ea1cd09553794665/charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18dd2e350387c87dabe711b86f83c9c78af772c748904d372ade190b5c7c9d4d", size = 147356, upload-time = "2025-05-02T08:31:52.634Z" }, + { url = "https://files.pythonhosted.org/packages/a8/2d/7a5b635aa65284bf3eab7653e8b4151ab420ecbae918d3e359d1947b4d61/charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8075c35cd58273fee266c58c0c9b670947c19df5fb98e7b66710e04ad4e9ff86", size = 149471, upload-time = "2025-05-02T08:31:56.207Z" }, + { url = "https://files.pythonhosted.org/packages/ae/38/51fc6ac74251fd331a8cfdb7ec57beba8c23fd5493f1050f71c87ef77ed0/charset_normalizer-3.4.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5bf4545e3b962767e5c06fe1738f951f77d27967cb2caa64c28be7c4563e162c", size = 151317, upload-time = "2025-05-02T08:31:57.613Z" }, + { url = "https://files.pythonhosted.org/packages/b7/17/edee1e32215ee6e9e46c3e482645b46575a44a2d72c7dfd49e49f60ce6bf/charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7a6ab32f7210554a96cd9e33abe3ddd86732beeafc7a28e9955cdf22ffadbab0", size = 146368, upload-time = "2025-05-02T08:31:59.468Z" }, + { url = "https://files.pythonhosted.org/packages/26/2c/ea3e66f2b5f21fd00b2825c94cafb8c326ea6240cd80a91eb09e4a285830/charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b33de11b92e9f75a2b545d6e9b6f37e398d86c3e9e9653c4864eb7e89c5773ef", size = 154491, upload-time = "2025-05-02T08:32:01.219Z" }, + { url = "https://files.pythonhosted.org/packages/52/47/7be7fa972422ad062e909fd62460d45c3ef4c141805b7078dbab15904ff7/charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8755483f3c00d6c9a77f490c17e6ab0c8729e39e6390328e42521ef175380ae6", size = 157695, upload-time = "2025-05-02T08:32:03.045Z" }, + { url = "https://files.pythonhosted.org/packages/2f/42/9f02c194da282b2b340f28e5fb60762de1151387a36842a92b533685c61e/charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:68a328e5f55ec37c57f19ebb1fdc56a248db2e3e9ad769919a58672958e8f366", size = 154849, upload-time = "2025-05-02T08:32:04.651Z" }, + { url = "https://files.pythonhosted.org/packages/67/44/89cacd6628f31fb0b63201a618049be4be2a7435a31b55b5eb1c3674547a/charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:21b2899062867b0e1fde9b724f8aecb1af14f2778d69aacd1a5a1853a597a5db", size = 150091, upload-time = "2025-05-02T08:32:06.719Z" }, + { url = "https://files.pythonhosted.org/packages/1f/79/4b8da9f712bc079c0f16b6d67b099b0b8d808c2292c937f267d816ec5ecc/charset_normalizer-3.4.2-cp310-cp310-win32.whl", hash = "sha256:e8082b26888e2f8b36a042a58307d5b917ef2b1cacab921ad3323ef91901c71a", size = 98445, upload-time = "2025-05-02T08:32:08.66Z" }, + { url = "https://files.pythonhosted.org/packages/7d/d7/96970afb4fb66497a40761cdf7bd4f6fca0fc7bafde3a84f836c1f57a926/charset_normalizer-3.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:f69a27e45c43520f5487f27627059b64aaf160415589230992cec34c5e18a509", size = 105782, upload-time = "2025-05-02T08:32:10.46Z" }, + { url = "https://files.pythonhosted.org/packages/05/85/4c40d00dcc6284a1c1ad5de5e0996b06f39d8232f1031cd23c2f5c07ee86/charset_normalizer-3.4.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:be1e352acbe3c78727a16a455126d9ff83ea2dfdcbc83148d2982305a04714c2", size = 198794, upload-time = "2025-05-02T08:32:11.945Z" }, + { url = "https://files.pythonhosted.org/packages/41/d9/7a6c0b9db952598e97e93cbdfcb91bacd89b9b88c7c983250a77c008703c/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa88ca0b1932e93f2d961bf3addbb2db902198dca337d88c89e1559e066e7645", size = 142846, upload-time = "2025-05-02T08:32:13.946Z" }, + { url = "https://files.pythonhosted.org/packages/66/82/a37989cda2ace7e37f36c1a8ed16c58cf48965a79c2142713244bf945c89/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d524ba3f1581b35c03cb42beebab4a13e6cdad7b36246bd22541fa585a56cccd", size = 153350, upload-time = "2025-05-02T08:32:15.873Z" }, + { url = "https://files.pythonhosted.org/packages/df/68/a576b31b694d07b53807269d05ec3f6f1093e9545e8607121995ba7a8313/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28a1005facc94196e1fb3e82a3d442a9d9110b8434fc1ded7a24a2983c9888d8", size = 145657, upload-time = "2025-05-02T08:32:17.283Z" }, + { url = "https://files.pythonhosted.org/packages/92/9b/ad67f03d74554bed3aefd56fe836e1623a50780f7c998d00ca128924a499/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdb20a30fe1175ecabed17cbf7812f7b804b8a315a25f24678bcdf120a90077f", size = 147260, upload-time = "2025-05-02T08:32:18.807Z" }, + { url = "https://files.pythonhosted.org/packages/a6/e6/8aebae25e328160b20e31a7e9929b1578bbdc7f42e66f46595a432f8539e/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f5d9ed7f254402c9e7d35d2f5972c9bbea9040e99cd2861bd77dc68263277c7", size = 149164, upload-time = "2025-05-02T08:32:20.333Z" }, + { url = "https://files.pythonhosted.org/packages/8b/f2/b3c2f07dbcc248805f10e67a0262c93308cfa149a4cd3d1fe01f593e5fd2/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:efd387a49825780ff861998cd959767800d54f8308936b21025326de4b5a42b9", size = 144571, upload-time = "2025-05-02T08:32:21.86Z" }, + { url = "https://files.pythonhosted.org/packages/60/5b/c3f3a94bc345bc211622ea59b4bed9ae63c00920e2e8f11824aa5708e8b7/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f0aa37f3c979cf2546b73e8222bbfa3dc07a641585340179d768068e3455e544", size = 151952, upload-time = "2025-05-02T08:32:23.434Z" }, + { url = "https://files.pythonhosted.org/packages/e2/4d/ff460c8b474122334c2fa394a3f99a04cf11c646da895f81402ae54f5c42/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e70e990b2137b29dc5564715de1e12701815dacc1d056308e2b17e9095372a82", size = 155959, upload-time = "2025-05-02T08:32:24.993Z" }, + { url = "https://files.pythonhosted.org/packages/a2/2b/b964c6a2fda88611a1fe3d4c400d39c66a42d6c169c924818c848f922415/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0c8c57f84ccfc871a48a47321cfa49ae1df56cd1d965a09abe84066f6853b9c0", size = 153030, upload-time = "2025-05-02T08:32:26.435Z" }, + { url = "https://files.pythonhosted.org/packages/59/2e/d3b9811db26a5ebf444bc0fa4f4be5aa6d76fc6e1c0fd537b16c14e849b6/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6b66f92b17849b85cad91259efc341dce9c1af48e2173bf38a85c6329f1033e5", size = 148015, upload-time = "2025-05-02T08:32:28.376Z" }, + { url = "https://files.pythonhosted.org/packages/90/07/c5fd7c11eafd561bb51220d600a788f1c8d77c5eef37ee49454cc5c35575/charset_normalizer-3.4.2-cp311-cp311-win32.whl", hash = "sha256:daac4765328a919a805fa5e2720f3e94767abd632ae410a9062dff5412bae65a", size = 98106, upload-time = "2025-05-02T08:32:30.281Z" }, + { url = "https://files.pythonhosted.org/packages/a8/05/5e33dbef7e2f773d672b6d79f10ec633d4a71cd96db6673625838a4fd532/charset_normalizer-3.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53efc7c7cee4c1e70661e2e112ca46a575f90ed9ae3fef200f2a25e954f4b28", size = 105402, upload-time = "2025-05-02T08:32:32.191Z" }, + { url = "https://files.pythonhosted.org/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7", size = 199936, upload-time = "2025-05-02T08:32:33.712Z" }, + { url = "https://files.pythonhosted.org/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3", size = 143790, upload-time = "2025-05-02T08:32:35.768Z" }, + { url = "https://files.pythonhosted.org/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a", size = 153924, upload-time = "2025-05-02T08:32:37.284Z" }, + { url = "https://files.pythonhosted.org/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214", size = 146626, upload-time = "2025-05-02T08:32:38.803Z" }, + { url = "https://files.pythonhosted.org/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a", size = 148567, upload-time = "2025-05-02T08:32:40.251Z" }, + { url = "https://files.pythonhosted.org/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd", size = 150957, upload-time = "2025-05-02T08:32:41.705Z" }, + { url = "https://files.pythonhosted.org/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981", size = 145408, upload-time = "2025-05-02T08:32:43.709Z" }, + { url = "https://files.pythonhosted.org/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c", size = 153399, upload-time = "2025-05-02T08:32:46.197Z" }, + { url = "https://files.pythonhosted.org/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b", size = 156815, upload-time = "2025-05-02T08:32:48.105Z" }, + { url = "https://files.pythonhosted.org/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d", size = 154537, upload-time = "2025-05-02T08:32:49.719Z" }, + { url = "https://files.pythonhosted.org/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f", size = 149565, upload-time = "2025-05-02T08:32:51.404Z" }, + { url = "https://files.pythonhosted.org/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c", size = 98357, upload-time = "2025-05-02T08:32:53.079Z" }, + { url = "https://files.pythonhosted.org/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e", size = 105776, upload-time = "2025-05-02T08:32:54.573Z" }, + { url = "https://files.pythonhosted.org/packages/ea/12/a93df3366ed32db1d907d7593a94f1fe6293903e3e92967bebd6950ed12c/charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0", size = 199622, upload-time = "2025-05-02T08:32:56.363Z" }, + { url = "https://files.pythonhosted.org/packages/04/93/bf204e6f344c39d9937d3c13c8cd5bbfc266472e51fc8c07cb7f64fcd2de/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf", size = 143435, upload-time = "2025-05-02T08:32:58.551Z" }, + { url = "https://files.pythonhosted.org/packages/22/2a/ea8a2095b0bafa6c5b5a55ffdc2f924455233ee7b91c69b7edfcc9e02284/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e", size = 153653, upload-time = "2025-05-02T08:33:00.342Z" }, + { url = "https://files.pythonhosted.org/packages/b6/57/1b090ff183d13cef485dfbe272e2fe57622a76694061353c59da52c9a659/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1", size = 146231, upload-time = "2025-05-02T08:33:02.081Z" }, + { url = "https://files.pythonhosted.org/packages/e2/28/ffc026b26f441fc67bd21ab7f03b313ab3fe46714a14b516f931abe1a2d8/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c", size = 148243, upload-time = "2025-05-02T08:33:04.063Z" }, + { url = "https://files.pythonhosted.org/packages/c0/0f/9abe9bd191629c33e69e47c6ef45ef99773320e9ad8e9cb08b8ab4a8d4cb/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691", size = 150442, upload-time = "2025-05-02T08:33:06.418Z" }, + { url = "https://files.pythonhosted.org/packages/67/7c/a123bbcedca91d5916c056407f89a7f5e8fdfce12ba825d7d6b9954a1a3c/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0", size = 145147, upload-time = "2025-05-02T08:33:08.183Z" }, + { url = "https://files.pythonhosted.org/packages/ec/fe/1ac556fa4899d967b83e9893788e86b6af4d83e4726511eaaad035e36595/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b", size = 153057, upload-time = "2025-05-02T08:33:09.986Z" }, + { url = "https://files.pythonhosted.org/packages/2b/ff/acfc0b0a70b19e3e54febdd5301a98b72fa07635e56f24f60502e954c461/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff", size = 156454, upload-time = "2025-05-02T08:33:11.814Z" }, + { url = "https://files.pythonhosted.org/packages/92/08/95b458ce9c740d0645feb0e96cea1f5ec946ea9c580a94adfe0b617f3573/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b", size = 154174, upload-time = "2025-05-02T08:33:13.707Z" }, + { url = "https://files.pythonhosted.org/packages/78/be/8392efc43487ac051eee6c36d5fbd63032d78f7728cb37aebcc98191f1ff/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148", size = 149166, upload-time = "2025-05-02T08:33:15.458Z" }, + { url = "https://files.pythonhosted.org/packages/44/96/392abd49b094d30b91d9fbda6a69519e95802250b777841cf3bda8fe136c/charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7", size = 98064, upload-time = "2025-05-02T08:33:17.06Z" }, + { url = "https://files.pythonhosted.org/packages/e9/b0/0200da600134e001d91851ddc797809e2fe0ea72de90e09bec5a2fbdaccb/charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980", size = 105641, upload-time = "2025-05-02T08:33:18.753Z" }, + { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626, upload-time = "2025-05-02T08:34:40.053Z" }, +] + +[[package]] +name = "click" +version = "8.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342, upload-time = "2025-05-20T23:19:49.832Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215, upload-time = "2025-05-20T23:19:47.796Z" }, +] + +[[package]] +name = "cloudpickle" +version = "3.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/52/39/069100b84d7418bc358d81669d5748efb14b9cceacd2f9c75f550424132f/cloudpickle-3.1.1.tar.gz", hash = "sha256:b216fa8ae4019d5482a8ac3c95d8f6346115d8835911fd4aefd1a445e4242c64", size = 22113, upload-time = "2025-01-14T17:02:05.085Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/e8/64c37fadfc2816a7701fa8a6ed8d87327c7d54eacfbfb6edab14a2f2be75/cloudpickle-3.1.1-py3-none-any.whl", hash = "sha256:c8c5a44295039331ee9dad40ba100a9c7297b6f988e50e87ccdf3765a668350e", size = 20992, upload-time = "2025-01-14T17:02:02.417Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "comm" +version = "0.2.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e9/a8/fb783cb0abe2b5fded9f55e5703015cdf1c9c85b3669087c538dd15a6a86/comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e", size = 6210, upload-time = "2024-03-12T16:53:41.133Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3", size = 7180, upload-time = "2024-03-12T16:53:39.226Z" }, +] + +[[package]] +name = "contourpy" +version = "1.3.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/54/eb9bfc647b19f2009dd5c7f5ec51c4e6ca831725f1aea7a993034f483147/contourpy-1.3.2.tar.gz", hash = "sha256:b6945942715a034c671b7fc54f9588126b0b8bf23db2696e3ca8328f3ff0ab54", size = 13466130, upload-time = "2025-04-15T17:47:53.79Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/a3/da4153ec8fe25d263aa48c1a4cbde7f49b59af86f0b6f7862788c60da737/contourpy-1.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ba38e3f9f330af820c4b27ceb4b9c7feee5fe0493ea53a8720f4792667465934", size = 268551, upload-time = "2025-04-15T17:34:46.581Z" }, + { url = "https://files.pythonhosted.org/packages/2f/6c/330de89ae1087eb622bfca0177d32a7ece50c3ef07b28002de4757d9d875/contourpy-1.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dc41ba0714aa2968d1f8674ec97504a8f7e334f48eeacebcaa6256213acb0989", size = 253399, upload-time = "2025-04-15T17:34:51.427Z" }, + { url = "https://files.pythonhosted.org/packages/c1/bd/20c6726b1b7f81a8bee5271bed5c165f0a8e1f572578a9d27e2ccb763cb2/contourpy-1.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9be002b31c558d1ddf1b9b415b162c603405414bacd6932d031c5b5a8b757f0d", size = 312061, upload-time = "2025-04-15T17:34:55.961Z" }, + { url = "https://files.pythonhosted.org/packages/22/fc/a9665c88f8a2473f823cf1ec601de9e5375050f1958cbb356cdf06ef1ab6/contourpy-1.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8d2e74acbcba3bfdb6d9d8384cdc4f9260cae86ed9beee8bd5f54fee49a430b9", size = 351956, upload-time = "2025-04-15T17:35:00.992Z" }, + { url = "https://files.pythonhosted.org/packages/25/eb/9f0a0238f305ad8fb7ef42481020d6e20cf15e46be99a1fcf939546a177e/contourpy-1.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e259bced5549ac64410162adc973c5e2fb77f04df4a439d00b478e57a0e65512", size = 320872, upload-time = "2025-04-15T17:35:06.177Z" }, + { url = "https://files.pythonhosted.org/packages/32/5c/1ee32d1c7956923202f00cf8d2a14a62ed7517bdc0ee1e55301227fc273c/contourpy-1.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad687a04bc802cbe8b9c399c07162a3c35e227e2daccf1668eb1f278cb698631", size = 325027, upload-time = "2025-04-15T17:35:11.244Z" }, + { url = "https://files.pythonhosted.org/packages/83/bf/9baed89785ba743ef329c2b07fd0611d12bfecbedbdd3eeecf929d8d3b52/contourpy-1.3.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cdd22595308f53ef2f891040ab2b93d79192513ffccbd7fe19be7aa773a5e09f", size = 1306641, upload-time = "2025-04-15T17:35:26.701Z" }, + { url = "https://files.pythonhosted.org/packages/d4/cc/74e5e83d1e35de2d28bd97033426b450bc4fd96e092a1f7a63dc7369b55d/contourpy-1.3.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b4f54d6a2defe9f257327b0f243612dd051cc43825587520b1bf74a31e2f6ef2", size = 1374075, upload-time = "2025-04-15T17:35:43.204Z" }, + { url = "https://files.pythonhosted.org/packages/0c/42/17f3b798fd5e033b46a16f8d9fcb39f1aba051307f5ebf441bad1ecf78f8/contourpy-1.3.2-cp310-cp310-win32.whl", hash = "sha256:f939a054192ddc596e031e50bb13b657ce318cf13d264f095ce9db7dc6ae81c0", size = 177534, upload-time = "2025-04-15T17:35:46.554Z" }, + { url = "https://files.pythonhosted.org/packages/54/ec/5162b8582f2c994721018d0c9ece9dc6ff769d298a8ac6b6a652c307e7df/contourpy-1.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:c440093bbc8fc21c637c03bafcbef95ccd963bc6e0514ad887932c18ca2a759a", size = 221188, upload-time = "2025-04-15T17:35:50.064Z" }, + { url = "https://files.pythonhosted.org/packages/b3/b9/ede788a0b56fc5b071639d06c33cb893f68b1178938f3425debebe2dab78/contourpy-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6a37a2fb93d4df3fc4c0e363ea4d16f83195fc09c891bc8ce072b9d084853445", size = 269636, upload-time = "2025-04-15T17:35:54.473Z" }, + { url = "https://files.pythonhosted.org/packages/e6/75/3469f011d64b8bbfa04f709bfc23e1dd71be54d05b1b083be9f5b22750d1/contourpy-1.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b7cd50c38f500bbcc9b6a46643a40e0913673f869315d8e70de0438817cb7773", size = 254636, upload-time = "2025-04-15T17:35:58.283Z" }, + { url = "https://files.pythonhosted.org/packages/8d/2f/95adb8dae08ce0ebca4fd8e7ad653159565d9739128b2d5977806656fcd2/contourpy-1.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6658ccc7251a4433eebd89ed2672c2ed96fba367fd25ca9512aa92a4b46c4f1", size = 313053, upload-time = "2025-04-15T17:36:03.235Z" }, + { url = "https://files.pythonhosted.org/packages/c3/a6/8ccf97a50f31adfa36917707fe39c9a0cbc24b3bbb58185577f119736cc9/contourpy-1.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:70771a461aaeb335df14deb6c97439973d253ae70660ca085eec25241137ef43", size = 352985, upload-time = "2025-04-15T17:36:08.275Z" }, + { url = "https://files.pythonhosted.org/packages/1d/b6/7925ab9b77386143f39d9c3243fdd101621b4532eb126743201160ffa7e6/contourpy-1.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65a887a6e8c4cd0897507d814b14c54a8c2e2aa4ac9f7686292f9769fcf9a6ab", size = 323750, upload-time = "2025-04-15T17:36:13.29Z" }, + { url = "https://files.pythonhosted.org/packages/c2/f3/20c5d1ef4f4748e52d60771b8560cf00b69d5c6368b5c2e9311bcfa2a08b/contourpy-1.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3859783aefa2b8355697f16642695a5b9792e7a46ab86da1118a4a23a51a33d7", size = 326246, upload-time = "2025-04-15T17:36:18.329Z" }, + { url = "https://files.pythonhosted.org/packages/8c/e5/9dae809e7e0b2d9d70c52b3d24cba134dd3dad979eb3e5e71f5df22ed1f5/contourpy-1.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:eab0f6db315fa4d70f1d8ab514e527f0366ec021ff853d7ed6a2d33605cf4b83", size = 1308728, upload-time = "2025-04-15T17:36:33.878Z" }, + { url = "https://files.pythonhosted.org/packages/e2/4a/0058ba34aeea35c0b442ae61a4f4d4ca84d6df8f91309bc2d43bb8dd248f/contourpy-1.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d91a3ccc7fea94ca0acab82ceb77f396d50a1f67412efe4c526f5d20264e6ecd", size = 1375762, upload-time = "2025-04-15T17:36:51.295Z" }, + { url = "https://files.pythonhosted.org/packages/09/33/7174bdfc8b7767ef2c08ed81244762d93d5c579336fc0b51ca57b33d1b80/contourpy-1.3.2-cp311-cp311-win32.whl", hash = "sha256:1c48188778d4d2f3d48e4643fb15d8608b1d01e4b4d6b0548d9b336c28fc9b6f", size = 178196, upload-time = "2025-04-15T17:36:55.002Z" }, + { url = "https://files.pythonhosted.org/packages/5e/fe/4029038b4e1c4485cef18e480b0e2cd2d755448bb071eb9977caac80b77b/contourpy-1.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:5ebac872ba09cb8f2131c46b8739a7ff71de28a24c869bcad554477eb089a878", size = 222017, upload-time = "2025-04-15T17:36:58.576Z" }, + { url = "https://files.pythonhosted.org/packages/34/f7/44785876384eff370c251d58fd65f6ad7f39adce4a093c934d4a67a7c6b6/contourpy-1.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4caf2bcd2969402bf77edc4cb6034c7dd7c0803213b3523f111eb7460a51b8d2", size = 271580, upload-time = "2025-04-15T17:37:03.105Z" }, + { url = "https://files.pythonhosted.org/packages/93/3b/0004767622a9826ea3d95f0e9d98cd8729015768075d61f9fea8eeca42a8/contourpy-1.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82199cb78276249796419fe36b7386bd8d2cc3f28b3bc19fe2454fe2e26c4c15", size = 255530, upload-time = "2025-04-15T17:37:07.026Z" }, + { url = "https://files.pythonhosted.org/packages/e7/bb/7bd49e1f4fa805772d9fd130e0d375554ebc771ed7172f48dfcd4ca61549/contourpy-1.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:106fab697af11456fcba3e352ad50effe493a90f893fca6c2ca5c033820cea92", size = 307688, upload-time = "2025-04-15T17:37:11.481Z" }, + { url = "https://files.pythonhosted.org/packages/fc/97/e1d5dbbfa170725ef78357a9a0edc996b09ae4af170927ba8ce977e60a5f/contourpy-1.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d14f12932a8d620e307f715857107b1d1845cc44fdb5da2bc8e850f5ceba9f87", size = 347331, upload-time = "2025-04-15T17:37:18.212Z" }, + { url = "https://files.pythonhosted.org/packages/6f/66/e69e6e904f5ecf6901be3dd16e7e54d41b6ec6ae3405a535286d4418ffb4/contourpy-1.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:532fd26e715560721bb0d5fc7610fce279b3699b018600ab999d1be895b09415", size = 318963, upload-time = "2025-04-15T17:37:22.76Z" }, + { url = "https://files.pythonhosted.org/packages/a8/32/b8a1c8965e4f72482ff2d1ac2cd670ce0b542f203c8e1d34e7c3e6925da7/contourpy-1.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26b383144cf2d2c29f01a1e8170f50dacf0eac02d64139dcd709a8ac4eb3cfe", size = 323681, upload-time = "2025-04-15T17:37:33.001Z" }, + { url = "https://files.pythonhosted.org/packages/30/c6/12a7e6811d08757c7162a541ca4c5c6a34c0f4e98ef2b338791093518e40/contourpy-1.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c49f73e61f1f774650a55d221803b101d966ca0c5a2d6d5e4320ec3997489441", size = 1308674, upload-time = "2025-04-15T17:37:48.64Z" }, + { url = "https://files.pythonhosted.org/packages/2a/8a/bebe5a3f68b484d3a2b8ffaf84704b3e343ef1addea528132ef148e22b3b/contourpy-1.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3d80b2c0300583228ac98d0a927a1ba6a2ba6b8a742463c564f1d419ee5b211e", size = 1380480, upload-time = "2025-04-15T17:38:06.7Z" }, + { url = "https://files.pythonhosted.org/packages/34/db/fcd325f19b5978fb509a7d55e06d99f5f856294c1991097534360b307cf1/contourpy-1.3.2-cp312-cp312-win32.whl", hash = "sha256:90df94c89a91b7362e1142cbee7568f86514412ab8a2c0d0fca72d7e91b62912", size = 178489, upload-time = "2025-04-15T17:38:10.338Z" }, + { url = "https://files.pythonhosted.org/packages/01/c8/fadd0b92ffa7b5eb5949bf340a63a4a496a6930a6c37a7ba0f12acb076d6/contourpy-1.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:8c942a01d9163e2e5cfb05cb66110121b8d07ad438a17f9e766317bcb62abf73", size = 223042, upload-time = "2025-04-15T17:38:14.239Z" }, + { url = "https://files.pythonhosted.org/packages/2e/61/5673f7e364b31e4e7ef6f61a4b5121c5f170f941895912f773d95270f3a2/contourpy-1.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:de39db2604ae755316cb5967728f4bea92685884b1e767b7c24e983ef5f771cb", size = 271630, upload-time = "2025-04-15T17:38:19.142Z" }, + { url = "https://files.pythonhosted.org/packages/ff/66/a40badddd1223822c95798c55292844b7e871e50f6bfd9f158cb25e0bd39/contourpy-1.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3f9e896f447c5c8618f1edb2bafa9a4030f22a575ec418ad70611450720b5b08", size = 255670, upload-time = "2025-04-15T17:38:23.688Z" }, + { url = "https://files.pythonhosted.org/packages/1e/c7/cf9fdee8200805c9bc3b148f49cb9482a4e3ea2719e772602a425c9b09f8/contourpy-1.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71e2bd4a1c4188f5c2b8d274da78faab884b59df20df63c34f74aa1813c4427c", size = 306694, upload-time = "2025-04-15T17:38:28.238Z" }, + { url = "https://files.pythonhosted.org/packages/dd/e7/ccb9bec80e1ba121efbffad7f38021021cda5be87532ec16fd96533bb2e0/contourpy-1.3.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de425af81b6cea33101ae95ece1f696af39446db9682a0b56daaa48cfc29f38f", size = 345986, upload-time = "2025-04-15T17:38:33.502Z" }, + { url = "https://files.pythonhosted.org/packages/dc/49/ca13bb2da90391fa4219fdb23b078d6065ada886658ac7818e5441448b78/contourpy-1.3.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:977e98a0e0480d3fe292246417239d2d45435904afd6d7332d8455981c408b85", size = 318060, upload-time = "2025-04-15T17:38:38.672Z" }, + { url = "https://files.pythonhosted.org/packages/c8/65/5245ce8c548a8422236c13ffcdcdada6a2a812c361e9e0c70548bb40b661/contourpy-1.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:434f0adf84911c924519d2b08fc10491dd282b20bdd3fa8f60fd816ea0b48841", size = 322747, upload-time = "2025-04-15T17:38:43.712Z" }, + { url = "https://files.pythonhosted.org/packages/72/30/669b8eb48e0a01c660ead3752a25b44fdb2e5ebc13a55782f639170772f9/contourpy-1.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c66c4906cdbc50e9cba65978823e6e00b45682eb09adbb78c9775b74eb222422", size = 1308895, upload-time = "2025-04-15T17:39:00.224Z" }, + { url = "https://files.pythonhosted.org/packages/05/5a/b569f4250decee6e8d54498be7bdf29021a4c256e77fe8138c8319ef8eb3/contourpy-1.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8b7fc0cd78ba2f4695fd0a6ad81a19e7e3ab825c31b577f384aa9d7817dc3bef", size = 1379098, upload-time = "2025-04-15T17:43:29.649Z" }, + { url = "https://files.pythonhosted.org/packages/19/ba/b227c3886d120e60e41b28740ac3617b2f2b971b9f601c835661194579f1/contourpy-1.3.2-cp313-cp313-win32.whl", hash = "sha256:15ce6ab60957ca74cff444fe66d9045c1fd3e92c8936894ebd1f3eef2fff075f", size = 178535, upload-time = "2025-04-15T17:44:44.532Z" }, + { url = "https://files.pythonhosted.org/packages/12/6e/2fed56cd47ca739b43e892707ae9a13790a486a3173be063681ca67d2262/contourpy-1.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:e1578f7eafce927b168752ed7e22646dad6cd9bca673c60bff55889fa236ebf9", size = 223096, upload-time = "2025-04-15T17:44:48.194Z" }, + { url = "https://files.pythonhosted.org/packages/54/4c/e76fe2a03014a7c767d79ea35c86a747e9325537a8b7627e0e5b3ba266b4/contourpy-1.3.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0475b1f6604896bc7c53bb070e355e9321e1bc0d381735421a2d2068ec56531f", size = 285090, upload-time = "2025-04-15T17:43:34.084Z" }, + { url = "https://files.pythonhosted.org/packages/7b/e2/5aba47debd55d668e00baf9651b721e7733975dc9fc27264a62b0dd26eb8/contourpy-1.3.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c85bb486e9be652314bb5b9e2e3b0d1b2e643d5eec4992c0fbe8ac71775da739", size = 268643, upload-time = "2025-04-15T17:43:38.626Z" }, + { url = "https://files.pythonhosted.org/packages/a1/37/cd45f1f051fe6230f751cc5cdd2728bb3a203f5619510ef11e732109593c/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:745b57db7758f3ffc05a10254edd3182a2a83402a89c00957a8e8a22f5582823", size = 310443, upload-time = "2025-04-15T17:43:44.522Z" }, + { url = "https://files.pythonhosted.org/packages/8b/a2/36ea6140c306c9ff6dd38e3bcec80b3b018474ef4d17eb68ceecd26675f4/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:970e9173dbd7eba9b4e01aab19215a48ee5dd3f43cef736eebde064a171f89a5", size = 349865, upload-time = "2025-04-15T17:43:49.545Z" }, + { url = "https://files.pythonhosted.org/packages/95/b7/2fc76bc539693180488f7b6cc518da7acbbb9e3b931fd9280504128bf956/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6c4639a9c22230276b7bffb6a850dfc8258a2521305e1faefe804d006b2e532", size = 321162, upload-time = "2025-04-15T17:43:54.203Z" }, + { url = "https://files.pythonhosted.org/packages/f4/10/76d4f778458b0aa83f96e59d65ece72a060bacb20cfbee46cf6cd5ceba41/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc829960f34ba36aad4302e78eabf3ef16a3a100863f0d4eeddf30e8a485a03b", size = 327355, upload-time = "2025-04-15T17:44:01.025Z" }, + { url = "https://files.pythonhosted.org/packages/43/a3/10cf483ea683f9f8ab096c24bad3cce20e0d1dd9a4baa0e2093c1c962d9d/contourpy-1.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d32530b534e986374fc19eaa77fcb87e8a99e5431499949b828312bdcd20ac52", size = 1307935, upload-time = "2025-04-15T17:44:17.322Z" }, + { url = "https://files.pythonhosted.org/packages/78/73/69dd9a024444489e22d86108e7b913f3528f56cfc312b5c5727a44188471/contourpy-1.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e298e7e70cf4eb179cc1077be1c725b5fd131ebc81181bf0c03525c8abc297fd", size = 1372168, upload-time = "2025-04-15T17:44:33.43Z" }, + { url = "https://files.pythonhosted.org/packages/0f/1b/96d586ccf1b1a9d2004dd519b25fbf104a11589abfd05484ff12199cca21/contourpy-1.3.2-cp313-cp313t-win32.whl", hash = "sha256:d0e589ae0d55204991450bb5c23f571c64fe43adaa53f93fc902a84c96f52fe1", size = 189550, upload-time = "2025-04-15T17:44:37.092Z" }, + { url = "https://files.pythonhosted.org/packages/b0/e6/6000d0094e8a5e32ad62591c8609e269febb6e4db83a1c75ff8868b42731/contourpy-1.3.2-cp313-cp313t-win_amd64.whl", hash = "sha256:78e9253c3de756b3f6a5174d024c4835acd59eb3f8e2ca13e775dbffe1558f69", size = 238214, upload-time = "2025-04-15T17:44:40.827Z" }, + { url = "https://files.pythonhosted.org/packages/33/05/b26e3c6ecc05f349ee0013f0bb850a761016d89cec528a98193a48c34033/contourpy-1.3.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:fd93cc7f3139b6dd7aab2f26a90dde0aa9fc264dbf70f6740d498a70b860b82c", size = 265681, upload-time = "2025-04-15T17:44:59.314Z" }, + { url = "https://files.pythonhosted.org/packages/2b/25/ac07d6ad12affa7d1ffed11b77417d0a6308170f44ff20fa1d5aa6333f03/contourpy-1.3.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:107ba8a6a7eec58bb475329e6d3b95deba9440667c4d62b9b6063942b61d7f16", size = 315101, upload-time = "2025-04-15T17:45:04.165Z" }, + { url = "https://files.pythonhosted.org/packages/8f/4d/5bb3192bbe9d3f27e3061a6a8e7733c9120e203cb8515767d30973f71030/contourpy-1.3.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ded1706ed0c1049224531b81128efbd5084598f18d8a2d9efae833edbd2b40ad", size = 220599, upload-time = "2025-04-15T17:45:08.456Z" }, + { url = "https://files.pythonhosted.org/packages/ff/c0/91f1215d0d9f9f343e4773ba6c9b89e8c0cc7a64a6263f21139da639d848/contourpy-1.3.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5f5964cdad279256c084b69c3f412b7801e15356b16efa9d78aa974041903da0", size = 266807, upload-time = "2025-04-15T17:45:15.535Z" }, + { url = "https://files.pythonhosted.org/packages/d4/79/6be7e90c955c0487e7712660d6cead01fa17bff98e0ea275737cc2bc8e71/contourpy-1.3.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49b65a95d642d4efa8f64ba12558fcb83407e58a2dfba9d796d77b63ccfcaff5", size = 318729, upload-time = "2025-04-15T17:45:20.166Z" }, + { url = "https://files.pythonhosted.org/packages/87/68/7f46fb537958e87427d98a4074bcde4b67a70b04900cfc5ce29bc2f556c1/contourpy-1.3.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:8c5acb8dddb0752bf252e01a3035b21443158910ac16a3b0d20e7fed7d534ce5", size = 221791, upload-time = "2025-04-15T17:45:24.794Z" }, +] + +[[package]] +name = "coverage" +version = "6.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5c/66/38d1870cb7cf62da49add1d6803fdbcdef632b2808b5c80bcac35b7634d8/coverage-6.5.0.tar.gz", hash = "sha256:f642e90754ee3e06b0e7e51bce3379590e76b7f76b708e1a71ff043f87025c84", size = 775224, upload-time = "2022-09-29T20:05:58.509Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c4/8d/5ec7d08f4601d2d792563fe31db5e9322c306848fec1e65ec8885927f739/coverage-6.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ef8674b0ee8cc11e2d574e3e2998aea5df5ab242e012286824ea3c6970580e53", size = 185264, upload-time = "2022-09-29T20:04:39.481Z" }, + { url = "https://files.pythonhosted.org/packages/89/a2/cbf599e50bb4be416e0408c4cf523c354c51d7da39935461a9687e039481/coverage-6.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:784f53ebc9f3fd0e2a3f6a78b2be1bd1f5575d7863e10c6e12504f240fd06660", size = 185482, upload-time = "2022-09-29T20:04:41.703Z" }, + { url = "https://files.pythonhosted.org/packages/15/b0/3639d84ee8a900da0cf6450ab46e22517e4688b6cec0ba8ab6f8166103a2/coverage-6.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4a5be1748d538a710f87542f22c2cad22f80545a847ad91ce45e77417293eb4", size = 214083, upload-time = "2022-09-29T20:04:43.294Z" }, + { url = "https://files.pythonhosted.org/packages/13/f3/c6025ba30f2ce21d20d5332c3819880fe8afdfc008c2e2f9c075c7b67543/coverage-6.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:83516205e254a0cb77d2d7bb3632ee019d93d9f4005de31dca0a8c3667d5bc04", size = 212396, upload-time = "2022-09-29T20:04:44.809Z" }, + { url = "https://files.pythonhosted.org/packages/3c/7d/d5211ea782b193ab8064b06dc0cc042cf1a4ca9c93a530071459172c550f/coverage-6.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af4fffaffc4067232253715065e30c5a7ec6faac36f8fc8d6f64263b15f74db0", size = 213270, upload-time = "2022-09-29T20:04:46.291Z" }, + { url = "https://files.pythonhosted.org/packages/10/9e/68e384940179713640743a010ac7f7c813d1087c8730a9c0bdfa73bdffd7/coverage-6.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:97117225cdd992a9c2a5515db1f66b59db634f59d0679ca1fa3fe8da32749cae", size = 219188, upload-time = "2022-09-29T20:04:47.728Z" }, + { url = "https://files.pythonhosted.org/packages/2f/8b/ca3fe3cfbd66d63181f6e6a06b8b494bb327ba8222d2fa628b392b9ad08a/coverage-6.5.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a1170fa54185845505fbfa672f1c1ab175446c887cce8212c44149581cf2d466", size = 217430, upload-time = "2022-09-29T20:04:49.098Z" }, + { url = "https://files.pythonhosted.org/packages/c0/18/2a0a9b3c29376ce04ceb7ca2948559dad76409a2c9b3f664756581101e16/coverage-6.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:11b990d520ea75e7ee8dcab5bc908072aaada194a794db9f6d7d5cfd19661e5a", size = 218646, upload-time = "2022-09-29T20:04:50.582Z" }, + { url = "https://files.pythonhosted.org/packages/11/9e/7afba355bdabc550b3b2669e3432e71aec87d79400372d7686c09aab0acf/coverage-6.5.0-cp310-cp310-win32.whl", hash = "sha256:5dbec3b9095749390c09ab7c89d314727f18800060d8d24e87f01fb9cfb40b32", size = 187602, upload-time = "2022-09-29T20:04:52.509Z" }, + { url = "https://files.pythonhosted.org/packages/ae/a3/f45cb5d32de0751863945d22083c15eb8854bb53681b2e792f2066c629b9/coverage-6.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:59f53f1dc5b656cafb1badd0feb428c1e7bc19b867479ff72f7a9dd9b479f10e", size = 188510, upload-time = "2022-09-29T20:04:54.421Z" }, + { url = "https://files.pythonhosted.org/packages/50/cf/455930004231fa87efe8be06d13512f34e070ddfee8b8bf5a050cdc47ab3/coverage-6.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4a5375e28c5191ac38cca59b38edd33ef4cc914732c916f2929029b4bfb50795", size = 185433, upload-time = "2022-09-29T20:04:55.856Z" }, + { url = "https://files.pythonhosted.org/packages/36/f3/5cbd79cf4cd059c80b59104aca33b8d05af4ad5bf5b1547645ecee716378/coverage-6.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4ed2820d919351f4167e52425e096af41bfabacb1857186c1ea32ff9983ed75", size = 217736, upload-time = "2022-09-29T20:04:57.242Z" }, + { url = "https://files.pythonhosted.org/packages/89/58/5ec19b43a6511288511f64fc4763d95af8403f5926e7e4556e6b29b03a26/coverage-6.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33a7da4376d5977fbf0a8ed91c4dffaaa8dbf0ddbf4c8eea500a2486d8bc4d7b", size = 215313, upload-time = "2022-09-29T20:04:58.661Z" }, + { url = "https://files.pythonhosted.org/packages/6a/63/8e82513b7e4a1b8d887b4e85c1c2b6c9b754a581b187c0b084f3330ac479/coverage-6.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8fb6cf131ac4070c9c5a3e21de0f7dc5a0fbe8bc77c9456ced896c12fcdad91", size = 217115, upload-time = "2022-09-29T20:05:00.194Z" }, + { url = "https://files.pythonhosted.org/packages/ac/bc/c9d4fd6b3494d2cc1e26f4b98eb19206b92a59094617ad02d5689ac9d3c4/coverage-6.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a6b7d95969b8845250586f269e81e5dfdd8ff828ddeb8567a4a2eaa7313460c4", size = 226072, upload-time = "2022-09-29T20:05:01.635Z" }, + { url = "https://files.pythonhosted.org/packages/78/98/253ce0cfcc3b352d3072940940ed44a035614f2abe781477f77038d21d9f/coverage-6.5.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1ef221513e6f68b69ee9e159506d583d31aa3567e0ae84eaad9d6ec1107dddaa", size = 224486, upload-time = "2022-09-29T20:05:03.158Z" }, + { url = "https://files.pythonhosted.org/packages/4b/66/6e588f5dfc93ccedd06d6785c8143f17bb92b89247d50128d8789e9588d0/coverage-6.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cca4435eebea7962a52bdb216dec27215d0df64cf27fc1dd538415f5d2b9da6b", size = 225537, upload-time = "2022-09-29T20:05:04.646Z" }, + { url = "https://files.pythonhosted.org/packages/ff/27/339089b558672f04e62d0cd2d49b9280270bad3bc95de24e7eb03deb4638/coverage-6.5.0-cp311-cp311-win32.whl", hash = "sha256:98e8a10b7a314f454d9eff4216a9a94d143a7ee65018dd12442e898ee2310578", size = 187586, upload-time = "2022-09-29T20:05:06.22Z" }, + { url = "https://files.pythonhosted.org/packages/e6/24/7fe8ededb4060dd8c3f1d86cb624fcb3452f66fbef5051ed7fab126c5c0c/coverage-6.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:bc8ef5e043a2af066fa8cbfc6e708d58017024dc4345a1f9757b329a249f041b", size = 188604, upload-time = "2022-09-29T20:05:09.007Z" }, +] + +[package.optional-dependencies] +toml = [ + { name = "tomli", marker = "python_full_version <= '3.11'" }, +] + +[[package]] +name = "coveralls" +version = "3.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "coverage" }, + { name = "docopt" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c2/c5/6b8254092117fa366b022fbee9434224483ba38e0bbf36e80836bf10692a/coveralls-3.3.1.tar.gz", hash = "sha256:b32a8bb5d2df585207c119d6c01567b81fba690c9c10a753bfe27a335bfc43ea", size = 17964, upload-time = "2021-11-11T21:00:05.24Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/56/d6/e95db3c56afd1eff815db7dda01908f5e57770e47042209db448ab496197/coveralls-3.3.1-py2.py3-none-any.whl", hash = "sha256:f42015f31d386b351d4226389b387ae173207058832fbf5c8ec4b40e27b16026", size = 14700, upload-time = "2021-11-11T21:00:03.875Z" }, +] + +[[package]] +name = "cycler" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a9/95/a3dbbb5028f35eafb79008e7522a75244477d2838f38cbb722248dabc2a8/cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c", size = 7615, upload-time = "2023-10-07T05:32:18.335Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321, upload-time = "2023-10-07T05:32:16.783Z" }, +] + +[[package]] +name = "cytoolz" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "toolz" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a7/f9/3243eed3a6545c2a33a21f74f655e3fcb5d2192613cd3db81a93369eb339/cytoolz-1.0.1.tar.gz", hash = "sha256:89cc3161b89e1bb3ed7636f74ed2e55984fd35516904fc878cae216e42b2c7d6", size = 626652, upload-time = "2024-12-13T05:47:36.672Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/d9/f13d66c16cff1fa1cb6c234698029877c456f35f577ef274aba3b86e7c51/cytoolz-1.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cec9af61f71fc3853eb5dca3d42eb07d1f48a4599fa502cbe92adde85f74b042", size = 403515, upload-time = "2024-12-13T05:44:27.845Z" }, + { url = "https://files.pythonhosted.org/packages/4b/2d/4cdf848a69300c7d44984f2ebbebb3b8576e5449c8dea157298f3bdc4da3/cytoolz-1.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:140bbd649dbda01e91add7642149a5987a7c3ccc251f2263de894b89f50b6608", size = 383936, upload-time = "2024-12-13T05:44:29.5Z" }, + { url = "https://files.pythonhosted.org/packages/72/a4/ccfdd3f0ed9cc818f734b424261f6018fc61e3ec833bf85225a9aca0d994/cytoolz-1.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e90124bdc42ff58b88cdea1d24a6bc5f776414a314cc4d94f25c88badb3a16d1", size = 1934569, upload-time = "2024-12-13T05:44:30.799Z" }, + { url = "https://files.pythonhosted.org/packages/50/fc/38d5344fa595683ad10dc819cfc1d8b9d2b3391ccf3e8cb7bab4899a01f5/cytoolz-1.0.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e74801b751e28f7c5cc3ad264c123954a051f546f2fdfe089f5aa7a12ccfa6da", size = 2015129, upload-time = "2024-12-13T05:44:32.297Z" }, + { url = "https://files.pythonhosted.org/packages/28/29/75261748dc54a20a927f33641f4e9aac674cfc6d3fbd4f332e10d0b37639/cytoolz-1.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:582dad4545ddfb5127494ef23f3fa4855f1673a35d50c66f7638e9fb49805089", size = 2000506, upload-time = "2024-12-13T05:44:34.403Z" }, + { url = "https://files.pythonhosted.org/packages/00/ae/e4ead004cc2698281d153c4a5388638d67cdb5544d6d6cc1e5b3db2bd2a3/cytoolz-1.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd7bd0618e16efe03bd12f19c2a26a27e6e6b75d7105adb7be1cd2a53fa755d8", size = 1957537, upload-time = "2024-12-13T05:44:39.499Z" }, + { url = "https://files.pythonhosted.org/packages/4a/ff/4f3aa07f4f47701f7f63df60ce0a5669fa09c256c3d4a33503a9414ea5cc/cytoolz-1.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d74cca6acf1c4af58b2e4a89cc565ed61c5e201de2e434748c93e5a0f5c541a5", size = 1863331, upload-time = "2024-12-13T05:44:42.61Z" }, + { url = "https://files.pythonhosted.org/packages/a2/29/654f57f2a9b8e9765a4ab876765f64f94530b61fc6471a07feea42ece6d4/cytoolz-1.0.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:823a3763828d8d457f542b2a45d75d6b4ced5e470b5c7cf2ed66a02f508ed442", size = 1849938, upload-time = "2024-12-13T05:44:45.324Z" }, + { url = "https://files.pythonhosted.org/packages/bc/7b/11f457db6b291060a98315ab2c7198077d8bddeeebe5f7126d9dad98cc54/cytoolz-1.0.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:51633a14e6844c61db1d68c1ffd077cf949f5c99c60ed5f1e265b9e2966f1b52", size = 1852345, upload-time = "2024-12-13T05:44:47.994Z" }, + { url = "https://files.pythonhosted.org/packages/6b/92/0dccc96ce0323be236d404f5084479b79b747fa0e74e43a270e95868b5f9/cytoolz-1.0.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f3ec9b01c45348f1d0d712507d54c2bfd69c62fbd7c9ef555c9d8298693c2432", size = 1989877, upload-time = "2024-12-13T05:44:51.514Z" }, + { url = "https://files.pythonhosted.org/packages/a3/c8/1c5203a81200bae51aa8f7b5fad613f695bf1afa03f16251ca23ecb2ef9f/cytoolz-1.0.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:1855022b712a9c7a5bce354517ab4727a38095f81e2d23d3eabaf1daeb6a3b3c", size = 1994492, upload-time = "2024-12-13T05:44:52.922Z" }, + { url = "https://files.pythonhosted.org/packages/e2/8a/04bc193c4d7ced8ef6bb62cdcd0bf40b5e5eb26586ed2cfb4433ec7dfd0a/cytoolz-1.0.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9930f7288c4866a1dc1cc87174f0c6ff4cad1671eb1f6306808aa6c445857d78", size = 1896077, upload-time = "2024-12-13T05:44:56.118Z" }, + { url = "https://files.pythonhosted.org/packages/21/a5/bee63a58f51d2c74856db66e6119a014464ff8cb1c9387fa4bd2d94e49b0/cytoolz-1.0.1-cp310-cp310-win32.whl", hash = "sha256:a9baad795d72fadc3445ccd0f122abfdbdf94269157e6d6d4835636dad318804", size = 322135, upload-time = "2024-12-13T05:44:57.695Z" }, + { url = "https://files.pythonhosted.org/packages/e8/16/7abfb1685e8b7f2838264551ee33651748994813f566ac4c3d737dfe90e5/cytoolz-1.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:ad95b386a84e18e1f6136f6d343d2509d4c3aae9f5a536f3dc96808fcc56a8cf", size = 363599, upload-time = "2024-12-13T05:44:58.875Z" }, + { url = "https://files.pythonhosted.org/packages/dc/ea/8131ae39119820b8867cddc23716fa9f681f2b3bbce6f693e68dfb36b55b/cytoolz-1.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2d958d4f04d9d7018e5c1850790d9d8e68b31c9a2deebca74b903706fdddd2b6", size = 406162, upload-time = "2024-12-13T05:45:01.196Z" }, + { url = "https://files.pythonhosted.org/packages/26/18/3d9bd4c146f6ea6e51300c242b20cb416966b21d481dac230e1304f1e54b/cytoolz-1.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0f445b8b731fc0ecb1865b8e68a070084eb95d735d04f5b6c851db2daf3048ab", size = 384961, upload-time = "2024-12-13T05:45:02.387Z" }, + { url = "https://files.pythonhosted.org/packages/e4/73/9034827907c7f85c7c484c9494e905d022fb8174526004e9ef332570349e/cytoolz-1.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f546a96460a7e28eb2ec439f4664fa646c9b3e51c6ebad9a59d3922bbe65e30", size = 2091698, upload-time = "2024-12-13T05:45:04.353Z" }, + { url = "https://files.pythonhosted.org/packages/74/af/d5c2733b0fde1a08254ff1a8a8d567874040c9eb1606363cfebc0713c73f/cytoolz-1.0.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0317681dd065532d21836f860b0563b199ee716f55d0c1f10de3ce7100c78a3b", size = 2188452, upload-time = "2024-12-13T05:45:05.748Z" }, + { url = "https://files.pythonhosted.org/packages/6a/bb/77c71fa9c217260b4056a732d754748903423c2cdd82a673d6064741e375/cytoolz-1.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0c0ef52febd5a7821a3fd8d10f21d460d1a3d2992f724ba9c91fbd7a96745d41", size = 2174203, upload-time = "2024-12-13T05:45:07.777Z" }, + { url = "https://files.pythonhosted.org/packages/fc/a9/a5b4a3ff5d22faa1b60293bfe97362e2caf4a830c26d37ab5557f60d04b2/cytoolz-1.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5ebaf419acf2de73b643cf96108702b8aef8e825cf4f63209ceb078d5fbbbfd", size = 2099831, upload-time = "2024-12-13T05:45:11.477Z" }, + { url = "https://files.pythonhosted.org/packages/35/08/7f6869ea1ff31ce5289a7d58d0e7090acfe7058baa2764473048ff61ea3c/cytoolz-1.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5f7f04eeb4088947585c92d6185a618b25ad4a0f8f66ea30c8db83cf94a425e3", size = 1996744, upload-time = "2024-12-13T05:45:14.172Z" }, + { url = "https://files.pythonhosted.org/packages/46/b4/9ac424c994b51763fd1bbed62d95f8fba8fa0e45c8c3c583904fdaf8f51d/cytoolz-1.0.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:f61928803bb501c17914b82d457c6f50fe838b173fb40d39c38d5961185bd6c7", size = 2013733, upload-time = "2024-12-13T05:45:16.912Z" }, + { url = "https://files.pythonhosted.org/packages/3e/99/03009765c4b87d742d5b5a8670abb56a8c7ede033c2cdaa4be8662d3b001/cytoolz-1.0.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d2960cb4fa01ccb985ad1280db41f90dc97a80b397af970a15d5a5de403c8c61", size = 1994850, upload-time = "2024-12-13T05:45:18.414Z" }, + { url = "https://files.pythonhosted.org/packages/40/9a/8458af9a5557e177ea42f8cf7e477bede518b0bbef564e28c4151feaa52c/cytoolz-1.0.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:b2b407cc3e9defa8df5eb46644f6f136586f70ba49eba96f43de67b9a0984fd3", size = 2155352, upload-time = "2024-12-13T05:45:19.763Z" }, + { url = "https://files.pythonhosted.org/packages/5e/5c/2a701423e001fcbec288b4f3fc2bf67557d114c2388237fc1ae67e1e2686/cytoolz-1.0.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:8245f929144d4d3bd7b972c9593300195c6cea246b81b4c46053c48b3f044580", size = 2163515, upload-time = "2024-12-13T05:45:21.08Z" }, + { url = "https://files.pythonhosted.org/packages/36/16/ee2e06e65d9d533bc05cd52a0b355ba9072fc8f60d77289e529c6d2e3750/cytoolz-1.0.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e37385db03af65763933befe89fa70faf25301effc3b0485fec1c15d4ce4f052", size = 2054431, upload-time = "2024-12-13T05:45:22.521Z" }, + { url = "https://files.pythonhosted.org/packages/d8/d5/2fac8315f210fa1bc7106e27c19e1211580aa25bb7fa17dfd79505e5baf2/cytoolz-1.0.1-cp311-cp311-win32.whl", hash = "sha256:50f9c530f83e3e574fc95c264c3350adde8145f4f8fc8099f65f00cc595e5ead", size = 322004, upload-time = "2024-12-13T05:45:24.048Z" }, + { url = "https://files.pythonhosted.org/packages/a9/9e/0b70b641850a95f9ff90adde9d094a4b1d81ec54dadfd97fec0a2aaf440e/cytoolz-1.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:b7f6b617454b4326af7bd3c7c49b0fc80767f134eb9fd6449917a058d17a0e3c", size = 365358, upload-time = "2024-12-13T05:45:25.383Z" }, + { url = "https://files.pythonhosted.org/packages/d8/e8/218098344ed2cb5f8441fade9b2428e435e7073962374a9c71e59ac141a7/cytoolz-1.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fcb8f7d0d65db1269022e7e0428471edee8c937bc288ebdcb72f13eaa67c2fe4", size = 414121, upload-time = "2024-12-13T05:45:26.588Z" }, + { url = "https://files.pythonhosted.org/packages/de/27/4d729a5653718109262b758fec1a959aa9facb74c15460d9074dc76d6635/cytoolz-1.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:207d4e4b445e087e65556196ff472ff134370d9a275d591724142e255f384662", size = 390904, upload-time = "2024-12-13T05:45:27.718Z" }, + { url = "https://files.pythonhosted.org/packages/72/c0/cbabfa788bab9c6038953bf9478adaec06e88903a726946ea7c88092f5c4/cytoolz-1.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21cdf6bac6fd843f3b20280a66fd8df20dea4c58eb7214a2cd8957ec176f0bb3", size = 2090734, upload-time = "2024-12-13T05:45:30.515Z" }, + { url = "https://files.pythonhosted.org/packages/c3/66/369262c60f9423c2da82a60864a259c852f1aa122aced4acd2c679af58c0/cytoolz-1.0.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4a55ec098036c0dea9f3bdc021f8acd9d105a945227d0811589f0573f21c9ce1", size = 2155933, upload-time = "2024-12-13T05:45:32.721Z" }, + { url = "https://files.pythonhosted.org/packages/aa/4e/ee55186802f8d24b5fbf9a11405ccd1203b30eded07cc17750618219b94e/cytoolz-1.0.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a13ab79ff4ce202e03ab646a2134696988b554b6dc4b71451e948403db1331d8", size = 2171903, upload-time = "2024-12-13T05:45:34.205Z" }, + { url = "https://files.pythonhosted.org/packages/a1/96/bd1a9f3396e9b7f618db8cd08d15630769ce3c8b7d0534f92cd639c977ae/cytoolz-1.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e2d944799026e1ff08a83241f1027a2d9276c41f7a74224cd98b7df6e03957d", size = 2125270, upload-time = "2024-12-13T05:45:36.982Z" }, + { url = "https://files.pythonhosted.org/packages/28/48/2a3762873091c88a69e161111cfbc6c222ff145d57ff011a642b169f04f1/cytoolz-1.0.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88ba85834cd523b91fdf10325e1e6d71c798de36ea9bdc187ca7bd146420de6f", size = 1973967, upload-time = "2024-12-13T05:45:39.505Z" }, + { url = "https://files.pythonhosted.org/packages/e4/50/500bd69774bdc49a4d78ec8779eb6ac7c1a9d706bfd91cf2a1dba604373a/cytoolz-1.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5a750b1af7e8bf6727f588940b690d69e25dc47cce5ce467925a76561317eaf7", size = 2021695, upload-time = "2024-12-13T05:45:40.911Z" }, + { url = "https://files.pythonhosted.org/packages/e4/4e/ba5a0ce34869495eb50653de8d676847490cf13a2cac1760fc4d313e78de/cytoolz-1.0.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:44a71870f7eae31d263d08b87da7c2bf1176f78892ed8bdade2c2850478cb126", size = 2010177, upload-time = "2024-12-13T05:45:42.48Z" }, + { url = "https://files.pythonhosted.org/packages/87/57/615c630b3089a13adb15351d958d227430cf624f03b1dd39eb52c34c1f59/cytoolz-1.0.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c8231b9abbd8e368e036f4cc2e16902c9482d4cf9e02a6147ed0e9a3cd4a9ab0", size = 2154321, upload-time = "2024-12-13T05:45:43.979Z" }, + { url = "https://files.pythonhosted.org/packages/7f/0f/fe1aa2d931e3b35ecc05215bd75da945ea7346095b3b6f6027164e602d5a/cytoolz-1.0.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:aa87599ccc755de5a096a4d6c34984de6cd9dc928a0c5eaa7607457317aeaf9b", size = 2188374, upload-time = "2024-12-13T05:45:46.783Z" }, + { url = "https://files.pythonhosted.org/packages/de/fa/fd363d97a641b6d0e2fd1d5c35b8fd41d9ccaeb4df56302f53bf23a58e3a/cytoolz-1.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:67cd16537df51baabde3baa770ab7b8d16839c4d21219d5b96ac59fb012ebd2d", size = 2077911, upload-time = "2024-12-13T05:45:48.219Z" }, + { url = "https://files.pythonhosted.org/packages/d9/68/0a22946b98ae5201b54ccb4e651295285c0fb79406022b6ee8b2f791940c/cytoolz-1.0.1-cp312-cp312-win32.whl", hash = "sha256:fb988c333f05ee30ad4693fe4da55d95ec0bb05775d2b60191236493ea2e01f9", size = 321903, upload-time = "2024-12-13T05:45:50.3Z" }, + { url = "https://files.pythonhosted.org/packages/62/1a/f3903197956055032f8cb297342e2dff07e50f83991aebfe5b4c4fcb55e4/cytoolz-1.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:8f89c48d8e5aec55ffd566a8ec858706d70ed0c6a50228eca30986bfa5b4da8b", size = 364490, upload-time = "2024-12-13T05:45:51.494Z" }, + { url = "https://files.pythonhosted.org/packages/aa/2e/a9f069db0107749e9e72baf6c21abe3f006841a3bcfdc9b8420e22ef31eb/cytoolz-1.0.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6944bb93b287032a4c5ca6879b69bcd07df46f3079cf8393958cf0b0454f50c0", size = 407365, upload-time = "2024-12-13T05:45:52.803Z" }, + { url = "https://files.pythonhosted.org/packages/a9/9b/5e87dd0e31f54c778b4f9f34cc14c1162d3096c8d746b0f8be97d70dd73c/cytoolz-1.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e027260fd2fc5cb041277158ac294fc13dca640714527219f702fb459a59823a", size = 385233, upload-time = "2024-12-13T05:45:53.994Z" }, + { url = "https://files.pythonhosted.org/packages/63/00/2fd32b16284cdb97cfe092822179bc0c3bcdd5e927dd39f986169a517642/cytoolz-1.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88662c0e07250d26f5af9bc95911e6137e124a5c1ec2ce4a5d74de96718ab242", size = 2062903, upload-time = "2024-12-13T05:45:55.202Z" }, + { url = "https://files.pythonhosted.org/packages/85/39/b3cbb5a9847ba59584a263772ad4f8ca2dbfd2a0e11efd09211d1219804c/cytoolz-1.0.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:309dffa78b0961b4c0cf55674b828fbbc793cf2d816277a5c8293c0c16155296", size = 2139517, upload-time = "2024-12-13T05:45:56.804Z" }, + { url = "https://files.pythonhosted.org/packages/ea/39/bfcab4a46d50c467e36fe704f19d8904efead417787806ee210327f68390/cytoolz-1.0.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:edb34246e6eb40343c5860fc51b24937698e4fa1ee415917a73ad772a9a1746b", size = 2154849, upload-time = "2024-12-13T05:45:58.814Z" }, + { url = "https://files.pythonhosted.org/packages/fd/42/3bc6ee61b0aa47e1cb40819adc1a456d7efa809f0dea9faddacb43fdde8f/cytoolz-1.0.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a54da7a8e4348a18d45d4d5bc84af6c716d7f131113a4f1cc45569d37edff1b", size = 2102302, upload-time = "2024-12-13T05:46:00.181Z" }, + { url = "https://files.pythonhosted.org/packages/00/66/3f636c6ddea7b18026b90a8c238af472e423b86e427b11df02213689b012/cytoolz-1.0.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:241c679c3b1913c0f7259cf1d9639bed5084c86d0051641d537a0980548aa266", size = 1960872, upload-time = "2024-12-13T05:46:01.612Z" }, + { url = "https://files.pythonhosted.org/packages/40/36/cb3b7cdd651007b69f9c48e9d104cec7cb8dc53afa1d6a720e5ad08022fa/cytoolz-1.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5bfc860251a8f280ac79696fc3343cfc3a7c30b94199e0240b6c9e5b6b01a2a5", size = 2014430, upload-time = "2024-12-13T05:46:03.022Z" }, + { url = "https://files.pythonhosted.org/packages/88/3f/2e9bd2a16cfd269808922147551dcb2d8b68ba54a2c4deca2fa6a6cd0d5f/cytoolz-1.0.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:c8edd1547014050c1bdad3ff85d25c82bd1c2a3c96830c6181521eb78b9a42b3", size = 2003127, upload-time = "2024-12-13T05:46:04.401Z" }, + { url = "https://files.pythonhosted.org/packages/c4/7d/08604ff940aa784df8343c387fdf2489b948b714a6afb587775ae94da912/cytoolz-1.0.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:b349bf6162e8de215403d7f35f8a9b4b1853dc2a48e6e1a609a5b1a16868b296", size = 2142369, upload-time = "2024-12-13T05:46:06.004Z" }, + { url = "https://files.pythonhosted.org/packages/d2/c6/39919a0645bdbdf720e97cae107f959ea9d1267fbc3b0d94fc6e1d12ac8f/cytoolz-1.0.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:1b18b35256219b6c3dd0fa037741b85d0bea39c552eab0775816e85a52834140", size = 2180427, upload-time = "2024-12-13T05:46:07.526Z" }, + { url = "https://files.pythonhosted.org/packages/d8/03/dbb9d47556ee54337e7e0ac209d17ceff2d2a197c34de08005abc7a7449b/cytoolz-1.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:738b2350f340ff8af883eb301054eb724997f795d20d90daec7911c389d61581", size = 2069785, upload-time = "2024-12-13T05:46:10.122Z" }, + { url = "https://files.pythonhosted.org/packages/ea/f8/11bb7b8947002231faae3ec2342df5896afbc19eb783a332cce6d219ff79/cytoolz-1.0.1-cp313-cp313-win32.whl", hash = "sha256:9cbd9c103df54fcca42be55ef40e7baea624ac30ee0b8bf1149f21146d1078d9", size = 320685, upload-time = "2024-12-13T05:46:11.553Z" }, + { url = "https://files.pythonhosted.org/packages/40/eb/dde173cf2357084ca9423950be1f2f11ab11d65d8bd30165bfb8fd4213e9/cytoolz-1.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:90e577e08d3a4308186d9e1ec06876d4756b1e8164b92971c69739ea17e15297", size = 362898, upload-time = "2024-12-13T05:46:12.771Z" }, + { url = "https://files.pythonhosted.org/packages/d9/f7/ef2a10daaec5c0f7d781d50758c6187eee484256e356ae8ef178d6c48497/cytoolz-1.0.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:83d19d55738ad9c60763b94f3f6d3c6e4de979aeb8d76841c1401081e0e58d96", size = 345702, upload-time = "2024-12-13T05:47:09.266Z" }, + { url = "https://files.pythonhosted.org/packages/c8/14/53c84adddedb67ff1546abb86fea04d26e24298c3ceab8436d20122ed0b9/cytoolz-1.0.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f112a71fad6ea824578e6393765ce5c054603afe1471a5c753ff6c67fd872d10", size = 385695, upload-time = "2024-12-13T05:47:11.011Z" }, + { url = "https://files.pythonhosted.org/packages/bd/80/3ae356c5e7b8d7dc7d1adb52f6932fee85cd748ed4e1217c269d2dfd610f/cytoolz-1.0.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5a515df8f8aa6e1eaaf397761a6e4aff2eef73b5f920aedf271416d5471ae5ee", size = 406261, upload-time = "2024-12-13T05:47:12.24Z" }, + { url = "https://files.pythonhosted.org/packages/0c/31/8e43761ffc82d90bf9cab7e0959712eedcd1e33c211397e143dd42d7af57/cytoolz-1.0.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92c398e7b7023460bea2edffe5fcd0a76029580f06c3f6938ac3d198b47156f3", size = 397207, upload-time = "2024-12-13T05:47:13.561Z" }, + { url = "https://files.pythonhosted.org/packages/d1/b9/fe9da37090b6444c65f848a83e390f87d8cb43d6a4df46de1556ad7e5ceb/cytoolz-1.0.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:3237e56211e03b13df47435b2369f5df281e02b04ad80a948ebd199b7bc10a47", size = 343358, upload-time = "2024-12-13T05:47:16.291Z" }, +] + +[[package]] +name = "dask" +version = "2023.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "cloudpickle" }, + { name = "fsspec" }, + { name = "importlib-metadata" }, + { name = "packaging" }, + { name = "partd" }, + { name = "pyyaml" }, + { name = "toolz" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f4/c7/dc8a92f5b673ba5bded39841a17c5ff939d9648142fd1c11b8d09804169d/dask-2023.11.0.tar.gz", hash = "sha256:06b8f39755d37ff6ef4db422774db1f1d5d6788d33f0628c80861dc6452f878c", size = 8549398, upload-time = "2023-11-10T21:36:11.094Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/83/e11961f175a6aff67a46dcf4f4f4eba709678b5a351bc4d2c913d9eb39b9/dask-2023.11.0-py3-none-any.whl", hash = "sha256:b950951ee3f8c86f003b577b6928ecf20089eee6677719578deaba8fd9a78203", size = 1204663, upload-time = "2023-11-10T21:36:00.754Z" }, +] + +[[package]] +name = "debugpy" +version = "1.8.14" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bd/75/087fe07d40f490a78782ff3b0a30e3968936854105487decdb33446d4b0e/debugpy-1.8.14.tar.gz", hash = "sha256:7cd287184318416850aa8b60ac90105837bb1e59531898c07569d197d2ed5322", size = 1641444, upload-time = "2025-04-10T19:46:10.981Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fc/df/156df75a41aaebd97cee9d3870fe68f8001b6c1c4ca023e221cfce69bece/debugpy-1.8.14-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:93fee753097e85623cab1c0e6a68c76308cd9f13ffdf44127e6fab4fbf024339", size = 2076510, upload-time = "2025-04-10T19:46:13.315Z" }, + { url = "https://files.pythonhosted.org/packages/69/cd/4fc391607bca0996db5f3658762106e3d2427beaef9bfd363fd370a3c054/debugpy-1.8.14-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d937d93ae4fa51cdc94d3e865f535f185d5f9748efb41d0d49e33bf3365bd79", size = 3559614, upload-time = "2025-04-10T19:46:14.647Z" }, + { url = "https://files.pythonhosted.org/packages/1a/42/4e6d2b9d63e002db79edfd0cb5656f1c403958915e0e73ab3e9220012eec/debugpy-1.8.14-cp310-cp310-win32.whl", hash = "sha256:c442f20577b38cc7a9aafecffe1094f78f07fb8423c3dddb384e6b8f49fd2987", size = 5208588, upload-time = "2025-04-10T19:46:16.233Z" }, + { url = "https://files.pythonhosted.org/packages/97/b1/cc9e4e5faadc9d00df1a64a3c2d5c5f4b9df28196c39ada06361c5141f89/debugpy-1.8.14-cp310-cp310-win_amd64.whl", hash = "sha256:f117dedda6d969c5c9483e23f573b38f4e39412845c7bc487b6f2648df30fe84", size = 5241043, upload-time = "2025-04-10T19:46:17.768Z" }, + { url = "https://files.pythonhosted.org/packages/67/e8/57fe0c86915671fd6a3d2d8746e40485fd55e8d9e682388fbb3a3d42b86f/debugpy-1.8.14-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:1b2ac8c13b2645e0b1eaf30e816404990fbdb168e193322be8f545e8c01644a9", size = 2175064, upload-time = "2025-04-10T19:46:19.486Z" }, + { url = "https://files.pythonhosted.org/packages/3b/97/2b2fd1b1c9569c6764ccdb650a6f752e4ac31be465049563c9eb127a8487/debugpy-1.8.14-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf431c343a99384ac7eab2f763980724834f933a271e90496944195318c619e2", size = 3132359, upload-time = "2025-04-10T19:46:21.192Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ee/b825c87ed06256ee2a7ed8bab8fb3bb5851293bf9465409fdffc6261c426/debugpy-1.8.14-cp311-cp311-win32.whl", hash = "sha256:c99295c76161ad8d507b413cd33422d7c542889fbb73035889420ac1fad354f2", size = 5133269, upload-time = "2025-04-10T19:46:23.047Z" }, + { url = "https://files.pythonhosted.org/packages/d5/a6/6c70cd15afa43d37839d60f324213843174c1d1e6bb616bd89f7c1341bac/debugpy-1.8.14-cp311-cp311-win_amd64.whl", hash = "sha256:7816acea4a46d7e4e50ad8d09d963a680ecc814ae31cdef3622eb05ccacf7b01", size = 5158156, upload-time = "2025-04-10T19:46:24.521Z" }, + { url = "https://files.pythonhosted.org/packages/d9/2a/ac2df0eda4898f29c46eb6713a5148e6f8b2b389c8ec9e425a4a1d67bf07/debugpy-1.8.14-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:8899c17920d089cfa23e6005ad9f22582fd86f144b23acb9feeda59e84405b84", size = 2501268, upload-time = "2025-04-10T19:46:26.044Z" }, + { url = "https://files.pythonhosted.org/packages/10/53/0a0cb5d79dd9f7039169f8bf94a144ad3efa52cc519940b3b7dde23bcb89/debugpy-1.8.14-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6bb5c0dcf80ad5dbc7b7d6eac484e2af34bdacdf81df09b6a3e62792b722826", size = 4221077, upload-time = "2025-04-10T19:46:27.464Z" }, + { url = "https://files.pythonhosted.org/packages/f8/d5/84e01821f362327bf4828728aa31e907a2eca7c78cd7c6ec062780d249f8/debugpy-1.8.14-cp312-cp312-win32.whl", hash = "sha256:281d44d248a0e1791ad0eafdbbd2912ff0de9eec48022a5bfbc332957487ed3f", size = 5255127, upload-time = "2025-04-10T19:46:29.467Z" }, + { url = "https://files.pythonhosted.org/packages/33/16/1ed929d812c758295cac7f9cf3dab5c73439c83d9091f2d91871e648093e/debugpy-1.8.14-cp312-cp312-win_amd64.whl", hash = "sha256:5aa56ef8538893e4502a7d79047fe39b1dae08d9ae257074c6464a7b290b806f", size = 5297249, upload-time = "2025-04-10T19:46:31.538Z" }, + { url = "https://files.pythonhosted.org/packages/4d/e4/395c792b243f2367d84202dc33689aa3d910fb9826a7491ba20fc9e261f5/debugpy-1.8.14-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:329a15d0660ee09fec6786acdb6e0443d595f64f5d096fc3e3ccf09a4259033f", size = 2485676, upload-time = "2025-04-10T19:46:32.96Z" }, + { url = "https://files.pythonhosted.org/packages/ba/f1/6f2ee3f991327ad9e4c2f8b82611a467052a0fb0e247390192580e89f7ff/debugpy-1.8.14-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f920c7f9af409d90f5fd26e313e119d908b0dd2952c2393cd3247a462331f15", size = 4217514, upload-time = "2025-04-10T19:46:34.336Z" }, + { url = "https://files.pythonhosted.org/packages/79/28/b9d146f8f2dc535c236ee09ad3e5ac899adb39d7a19b49f03ac95d216beb/debugpy-1.8.14-cp313-cp313-win32.whl", hash = "sha256:3784ec6e8600c66cbdd4ca2726c72d8ca781e94bce2f396cc606d458146f8f4e", size = 5254756, upload-time = "2025-04-10T19:46:36.199Z" }, + { url = "https://files.pythonhosted.org/packages/e0/62/a7b4a57013eac4ccaef6977966e6bec5c63906dd25a86e35f155952e29a1/debugpy-1.8.14-cp313-cp313-win_amd64.whl", hash = "sha256:684eaf43c95a3ec39a96f1f5195a7ff3d4144e4a18d69bb66beeb1a6de605d6e", size = 5297119, upload-time = "2025-04-10T19:46:38.141Z" }, + { url = "https://files.pythonhosted.org/packages/97/1a/481f33c37ee3ac8040d3d51fc4c4e4e7e61cb08b8bc8971d6032acc2279f/debugpy-1.8.14-py2.py3-none-any.whl", hash = "sha256:5cd9a579d553b6cb9759a7908a41988ee6280b961f24f63336835d9418216a20", size = 5256230, upload-time = "2025-04-10T19:46:54.077Z" }, +] + +[[package]] +name = "decorator" +version = "5.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711, upload-time = "2025-02-24T04:41:34.073Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload-time = "2025-02-24T04:41:32.565Z" }, +] + +[[package]] +name = "defusedxml" +version = "0.7.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520, upload-time = "2021-03-08T10:59:26.269Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604, upload-time = "2021-03-08T10:59:24.45Z" }, +] + +[[package]] +name = "deprecated" +version = "1.2.18" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wrapt", marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/98/97/06afe62762c9a8a86af0cfb7bfdab22a43ad17138b07af5b1a58442690a2/deprecated-1.2.18.tar.gz", hash = "sha256:422b6f6d859da6f2ef57857761bfb392480502a64c3028ca9bbe86085d72115d", size = 2928744, upload-time = "2025-01-27T10:46:25.7Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6e/c6/ac0b6c1e2d138f1002bcf799d330bd6d85084fece321e662a14223794041/Deprecated-1.2.18-py2.py3-none-any.whl", hash = "sha256:bd5011788200372a32418f888e326a09ff80d0214bd961147cfed01b5c018eec", size = 9998, upload-time = "2025-01-27T10:46:09.186Z" }, +] + +[[package]] +name = "descartes" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "matplotlib" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1d/6f/81735a30432b74f41db6754dd13869021ccfed3088d1cf7a6cfc0af9ac49/descartes-1.1.0.tar.gz", hash = "sha256:135a502146af5ed6ff359975e2ebc5fa4b71b5432c355c2cafdc6dea1337035b", size = 3525, upload-time = "2017-01-17T15:37:03.945Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/b6/1ed2eb03989ae574584664985367ba70cd9cf8b32ee8cad0e8aaeac819f3/descartes-1.1.0-py3-none-any.whl", hash = "sha256:4c62dc41109689d03e4b35de0a2bcbdeeb81047badc607c4415d5c753bd683af", size = 5804, upload-time = "2017-01-17T15:37:02.525Z" }, +] + +[[package]] +name = "distlib" +version = "0.3.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0d/dd/1bec4c5ddb504ca60fc29472f3d27e8d4da1257a854e1d96742f15c1d02d/distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403", size = 613923, upload-time = "2024-10-09T18:35:47.551Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87", size = 468973, upload-time = "2024-10-09T18:35:44.272Z" }, +] + +[[package]] +name = "docopt" +version = "0.6.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/55/8f8cab2afd404cf578136ef2cc5dfb50baa1761b68c9da1fb1e4eed343c9/docopt-0.6.2.tar.gz", hash = "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491", size = 25901, upload-time = "2014-06-16T11:18:57.406Z" } + +[[package]] +name = "docutils" +version = "0.18.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/57/b1/b880503681ea1b64df05106fc7e3c4e3801736cf63deffc6fa7fc5404cf5/docutils-0.18.1.tar.gz", hash = "sha256:679987caf361a7539d76e584cbeddc311e3aee937877c87346f31debc63e9d06", size = 2043249, upload-time = "2021-11-23T17:49:42.043Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8d/14/69b4bad34e3f250afe29a854da03acb6747711f3df06c359fa053fae4e76/docutils-0.18.1-py2.py3-none-any.whl", hash = "sha256:23010f129180089fbcd3bc08cfefccb3b890b0050e1ca00c867036e9d161b98c", size = 570050, upload-time = "2021-11-23T17:49:38.556Z" }, +] + +[[package]] +name = "exceptiongroup" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0b/9f/a65090624ecf468cdca03533906e7c69ed7588582240cfe7cc9e770b50eb/exceptiongroup-1.3.0.tar.gz", hash = "sha256:b241f5885f560bc56a59ee63ca4c6a8bfa46ae4ad651af316d4e81817bb9fd88", size = 29749, upload-time = "2025-05-10T17:42:51.123Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/36/f4/c6e662dade71f56cd2f3735141b265c3c79293c109549c1e6933b0651ffc/exceptiongroup-1.3.0-py3-none-any.whl", hash = "sha256:4d111e6e0c13d0644cad6ddaa7ed0261a0b36971f6d23e7ec9b4b9097da78a10", size = 16674, upload-time = "2025-05-10T17:42:49.33Z" }, +] + +[[package]] +name = "executing" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/91/50/a9d80c47ff289c611ff12e63f7c5d13942c65d68125160cefd768c73e6e4/executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755", size = 978693, upload-time = "2025-01-22T15:41:29.403Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702, upload-time = "2025-01-22T15:41:25.929Z" }, +] + +[[package]] +name = "fasteners" +version = "0.19" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5f/d4/e834d929be54bfadb1f3e3b931c38e956aaa3b235a46a3c764c26c774902/fasteners-0.19.tar.gz", hash = "sha256:b4f37c3ac52d8a445af3a66bce57b33b5e90b97c696b7b984f530cf8f0ded09c", size = 24832, upload-time = "2023-09-19T17:11:20.228Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/61/bf/fd60001b3abc5222d8eaa4a204cd8c0ae78e75adc688f33ce4bf25b7fafa/fasteners-0.19-py3-none-any.whl", hash = "sha256:758819cb5d94cdedf4e836988b74de396ceacb8e2794d21f82d131fd9ee77237", size = 18679, upload-time = "2023-09-19T17:11:18.725Z" }, +] + +[[package]] +name = "fastjsonschema" +version = "2.21.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8b/50/4b769ce1ac4071a1ef6d86b1a3fb56cdc3a37615e8c5519e1af96cdac366/fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4", size = 373939, upload-time = "2024-12-02T10:55:15.133Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", size = 23924, upload-time = "2024-12-02T10:55:07.599Z" }, +] + +[[package]] +name = "filelock" +version = "3.18.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075, upload-time = "2025-03-14T07:11:40.47Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215, upload-time = "2025-03-14T07:11:39.145Z" }, +] + +[[package]] +name = "fonttools" +version = "4.58.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b6/a9/3319c6ae07fd9dde51064ddc6d82a2b707efad8ed407d700a01091121bbc/fonttools-4.58.2.tar.gz", hash = "sha256:4b491ddbfd50b856e84b0648b5f7941af918f6d32f938f18e62b58426a8d50e2", size = 3524285, upload-time = "2025-06-06T14:50:58.643Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d3/6f/1f0158cd9d6168258362369fa003c58fc36f2b141a66bc805c76f28f57cc/fonttools-4.58.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4baaf34f07013ba9c2c3d7a95d0c391fcbb30748cb86c36c094fab8f168e49bb", size = 2735491, upload-time = "2025-06-06T14:49:33.45Z" }, + { url = "https://files.pythonhosted.org/packages/3d/94/d9a36a4ae1ed257ed5117c0905635e89327428cbf3521387c13bd85e6de1/fonttools-4.58.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2e26e4a4920d57f04bb2c3b6e9a68b099c7ef2d70881d4fee527896fa4f7b5aa", size = 2307732, upload-time = "2025-06-06T14:49:36.612Z" }, + { url = "https://files.pythonhosted.org/packages/37/57/0f72a9fe7c051ce316779b8721c707413c53ae75ab00f970d74c7876388f/fonttools-4.58.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c0bb956d9d01ea51368415515f664f58abf96557ba3c1aae4e26948ae7c86f29", size = 4718769, upload-time = "2025-06-06T14:49:39.597Z" }, + { url = "https://files.pythonhosted.org/packages/35/dd/8be06b93e24214d7dc52fd8183dbb9e75ab9638940d84d92ced25669f4d8/fonttools-4.58.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d40af8493c80ec17a1133ef429d42f1a97258dd9213b917daae9d8cafa6e0e6c", size = 4751963, upload-time = "2025-06-06T14:49:41.391Z" }, + { url = "https://files.pythonhosted.org/packages/9e/d3/85d60be364cea1b61f47bc8ea82d3e24cd6fb08640ad783fd2494bcaf4e0/fonttools-4.58.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:60b5cde1c76f6ded198da5608dddb1ee197faad7d2f0f6d3348ca0cda0c756c4", size = 4801368, upload-time = "2025-06-06T14:49:44.663Z" }, + { url = "https://files.pythonhosted.org/packages/9f/b9/98abf9c9c1ed67eed263f091fa1bbf0ea32ef65bb8f707c2ee106b877496/fonttools-4.58.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f8df6dc80ecc9033ca25a944ee5db7564fecca28e96383043fd92d9df861a159", size = 4909670, upload-time = "2025-06-06T14:49:46.751Z" }, + { url = "https://files.pythonhosted.org/packages/32/23/d8676da27a1a27cca89549f50b4a22c98e305d9ee4c67357515d9cb25ec4/fonttools-4.58.2-cp310-cp310-win32.whl", hash = "sha256:25728e980f5fbb67f52c5311b90fae4aaec08c3d3b78dce78ab564784df1129c", size = 2191921, upload-time = "2025-06-06T14:49:48.523Z" }, + { url = "https://files.pythonhosted.org/packages/0b/ff/ed6452dde8fd04299ec840a4fb112597a40468106039aed9abc8e35ba7eb/fonttools-4.58.2-cp310-cp310-win_amd64.whl", hash = "sha256:d6997ee7c2909a904802faf44b0d0208797c4d751f7611836011ace165308165", size = 2236374, upload-time = "2025-06-06T14:49:50.759Z" }, + { url = "https://files.pythonhosted.org/packages/63/d0/335d12ee943b8d67847864bba98478fedf3503d8b168eeeefadd8660256a/fonttools-4.58.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:024faaf20811296fd2f83ebdac7682276362e726ed5fea4062480dd36aff2fd9", size = 2755885, upload-time = "2025-06-06T14:49:52.459Z" }, + { url = "https://files.pythonhosted.org/packages/66/c2/d8ceb8b91e3847786a19d4b93749b1d804833482b5f79bee35b68327609e/fonttools-4.58.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2faec6e7f2abd80cd9f2392dfa28c02cfd5b1125be966ea6eddd6ca684deaa40", size = 2317804, upload-time = "2025-06-06T14:49:54.581Z" }, + { url = "https://files.pythonhosted.org/packages/7c/93/865c8d50b3a1f50ebdc02227f28bb81817df88cee75bc6f2652469e754b1/fonttools-4.58.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:520792629a938c14dd7fe185794b156cfc159c609d07b31bbb5f51af8dc7918a", size = 4916900, upload-time = "2025-06-06T14:49:56.366Z" }, + { url = "https://files.pythonhosted.org/packages/60/d1/301aec4f02995958b7af6728f838b2e5cc9296bec7eae350722dec31f685/fonttools-4.58.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:12fbc6e0bf0c75ce475ef170f2c065be6abc9e06ad19a13b56b02ec2acf02427", size = 4937358, upload-time = "2025-06-06T14:49:58.392Z" }, + { url = "https://files.pythonhosted.org/packages/15/22/75dc23a4c7200b8feb90baa82c518684a601a3a03be25f7cc3dde1525e37/fonttools-4.58.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:44a39cf856d52109127d55576c7ec010206a8ba510161a7705021f70d1649831", size = 4980151, upload-time = "2025-06-06T14:50:00.778Z" }, + { url = "https://files.pythonhosted.org/packages/14/51/5d402f65c4b0c89ce0cdbffe86646f3996da209f7bc93f1f4a13a7211ee0/fonttools-4.58.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:5390a67c55a835ad5a420da15b3d88b75412cbbd74450cb78c4916b0bd7f0a34", size = 5091255, upload-time = "2025-06-06T14:50:02.588Z" }, + { url = "https://files.pythonhosted.org/packages/c7/5e/dee28700276129db1a0ee8ab0d5574d255a1d72df7f6df58a9d26ddef687/fonttools-4.58.2-cp311-cp311-win32.whl", hash = "sha256:f7e10f4e7160bcf6a240d7560e9e299e8cb585baed96f6a616cef51180bf56cb", size = 2190095, upload-time = "2025-06-06T14:50:04.932Z" }, + { url = "https://files.pythonhosted.org/packages/bd/60/b90fda549942808b68c1c5bada4b369f4f55d4c28a7012f7537670438f82/fonttools-4.58.2-cp311-cp311-win_amd64.whl", hash = "sha256:29bdf52bfafdae362570d3f0d3119a3b10982e1ef8cb3a9d3ebb72da81cb8d5e", size = 2238013, upload-time = "2025-06-06T14:50:06.605Z" }, + { url = "https://files.pythonhosted.org/packages/eb/68/7ec64584dc592faf944d540307c3562cd893256c48bb028c90de489e4750/fonttools-4.58.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:c6eeaed9c54c1d33c1db928eb92b4e180c7cb93b50b1ee3e79b2395cb01f25e9", size = 2741645, upload-time = "2025-06-06T14:50:08.706Z" }, + { url = "https://files.pythonhosted.org/packages/8f/0c/b327838f63baa7ebdd6db3ffdf5aff638e883f9236d928be4f32c692e1bd/fonttools-4.58.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bbe1d9c72b7f981bed5c2a61443d5e3127c1b3aca28ca76386d1ad93268a803f", size = 2311100, upload-time = "2025-06-06T14:50:10.401Z" }, + { url = "https://files.pythonhosted.org/packages/ae/c7/dec024a1c873c79a4db98fe0104755fa62ec2b4518e09d6fda28246c3c9b/fonttools-4.58.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85babe5b3ce2cbe57fc0d09c0ee92bbd4d594fd7ea46a65eb43510a74a4ce773", size = 4815841, upload-time = "2025-06-06T14:50:12.496Z" }, + { url = "https://files.pythonhosted.org/packages/94/33/57c81abad641d6ec9c8b06c99cd28d687cb4849efb6168625b5c6b8f9fa4/fonttools-4.58.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:918a2854537fcdc662938057ad58b633bc9e0698f04a2f4894258213283a7932", size = 4882659, upload-time = "2025-06-06T14:50:14.361Z" }, + { url = "https://files.pythonhosted.org/packages/a5/37/2f8faa2bf8bd1ba016ea86a94c72a5e8ef8ea1c52ec64dada617191f0515/fonttools-4.58.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3b379cf05bf776c336a0205632596b1c7d7ab5f7135e3935f2ca2a0596d2d092", size = 4876128, upload-time = "2025-06-06T14:50:16.653Z" }, + { url = "https://files.pythonhosted.org/packages/a0/ca/f1caac24ae7028a33f2a95e66c640571ff0ce5cb06c4c9ca1f632e98e22c/fonttools-4.58.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:99ab3547a15a5d168c265e139e21756bbae1de04782ac9445c9ef61b8c0a32ce", size = 5027843, upload-time = "2025-06-06T14:50:18.582Z" }, + { url = "https://files.pythonhosted.org/packages/52/6e/3200fa2bafeed748a3017e4e6594751fd50cce544270919265451b21b75c/fonttools-4.58.2-cp312-cp312-win32.whl", hash = "sha256:6764e7a3188ce36eea37b477cdeca602ae62e63ae9fc768ebc176518072deb04", size = 2177374, upload-time = "2025-06-06T14:50:20.454Z" }, + { url = "https://files.pythonhosted.org/packages/55/ab/8f3e726f3f3ef3062ce9bbb615727c55beb11eea96d1f443f79cafca93ee/fonttools-4.58.2-cp312-cp312-win_amd64.whl", hash = "sha256:41f02182a1d41b79bae93c1551855146868b04ec3e7f9c57d6fef41a124e6b29", size = 2226685, upload-time = "2025-06-06T14:50:22.087Z" }, + { url = "https://files.pythonhosted.org/packages/ac/01/29f81970a508408af20b434ff5136cd1c7ef92198957eb8ddadfbb9ef177/fonttools-4.58.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:829048ef29dbefec35d95cc6811014720371c95bdc6ceb0afd2f8e407c41697c", size = 2732398, upload-time = "2025-06-06T14:50:23.821Z" }, + { url = "https://files.pythonhosted.org/packages/0c/f1/095f2338359333adb2f1c51b8b2ad94bf9a2fa17e5fcbdf8a7b8e3672d2d/fonttools-4.58.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:64998c5993431e45b474ed5f579f18555f45309dd1cf8008b594d2fe0a94be59", size = 2306390, upload-time = "2025-06-06T14:50:25.942Z" }, + { url = "https://files.pythonhosted.org/packages/bf/d4/9eba134c7666a26668c28945355cd86e5d57828b6b8d952a5489fe45d7e2/fonttools-4.58.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b887a1cf9fbcb920980460ee4a489c8aba7e81341f6cdaeefa08c0ab6529591c", size = 4795100, upload-time = "2025-06-06T14:50:27.653Z" }, + { url = "https://files.pythonhosted.org/packages/2a/34/345f153a24c1340daa62340c3be2d1e5ee6c1ee57e13f6d15613209e688b/fonttools-4.58.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27d74b9f6970cefbcda33609a3bee1618e5e57176c8b972134c4e22461b9c791", size = 4864585, upload-time = "2025-06-06T14:50:29.915Z" }, + { url = "https://files.pythonhosted.org/packages/01/5f/091979a25c9a6c4ba064716cfdfe9431f78ed6ffba4bd05ae01eee3532e9/fonttools-4.58.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ec26784610056a770e15a60f9920cee26ae10d44d1e43271ea652dadf4e7a236", size = 4866191, upload-time = "2025-06-06T14:50:32.188Z" }, + { url = "https://files.pythonhosted.org/packages/9d/09/3944d0ece4a39560918cba37c2e0453a5f826b665a6db0b43abbd9dbe7e1/fonttools-4.58.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ed0a71d57dd427c0fb89febd08cac9b925284d2a8888e982a6c04714b82698d7", size = 5003867, upload-time = "2025-06-06T14:50:34.323Z" }, + { url = "https://files.pythonhosted.org/packages/68/97/190b8f9ba22f8b7d07df2faa9fd7087b453776d0705d3cb5b0cbd89b8ef0/fonttools-4.58.2-cp313-cp313-win32.whl", hash = "sha256:994e362b01460aa863ef0cb41a29880bc1a498c546952df465deff7abf75587a", size = 2175688, upload-time = "2025-06-06T14:50:36.211Z" }, + { url = "https://files.pythonhosted.org/packages/94/ea/0e6d4a39528dbb6e0f908c2ad219975be0a506ed440fddf5453b90f76981/fonttools-4.58.2-cp313-cp313-win_amd64.whl", hash = "sha256:f95dec862d7c395f2d4efe0535d9bdaf1e3811e51b86432fa2a77e73f8195756", size = 2226464, upload-time = "2025-06-06T14:50:38.862Z" }, + { url = "https://files.pythonhosted.org/packages/e8/e5/c1cb8ebabb80be76d4d28995da9416816653f8f572920ab5e3d2e3ac8285/fonttools-4.58.2-py3-none-any.whl", hash = "sha256:84f4b0bcfa046254a65ee7117094b4907e22dc98097a220ef108030eb3c15596", size = 1114597, upload-time = "2025-06-06T14:50:56.619Z" }, +] + +[[package]] +name = "fqdn" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/30/3e/a80a8c077fd798951169626cde3e239adeba7dab75deb3555716415bd9b0/fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f", size = 6015, upload-time = "2021-03-11T07:16:29.08Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014", size = 9121, upload-time = "2021-03-11T07:16:28.351Z" }, +] + +[[package]] +name = "fsspec" +version = "2025.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/00/f7/27f15d41f0ed38e8fcc488584b57e902b331da7f7c6dcda53721b15838fc/fsspec-2025.5.1.tar.gz", hash = "sha256:2e55e47a540b91843b755e83ded97c6e897fa0942b11490113f09e9c443c2475", size = 303033, upload-time = "2025-05-24T12:03:23.792Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bb/61/78c7b3851add1481b048b5fdc29067397a1784e2910592bc81bb3f608635/fsspec-2025.5.1-py3-none-any.whl", hash = "sha256:24d3a2e663d5fc735ab256263c4075f374a174c3410c0b25e5bd1970bceaa462", size = 199052, upload-time = "2025-05-24T12:03:21.66Z" }, +] + +[[package]] +name = "geopandas" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "packaging" }, + { name = "pandas", version = "2.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, + { name = "pandas", version = "2.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, + { name = "pyogrio" }, + { name = "pyproj" }, + { name = "shapely" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/98/ca/e62641e5391285cda854c2802e706e6686f62fc9d919ecf78ff7f8d42654/geopandas-1.1.0.tar.gz", hash = "sha256:d176b084170539044ce7554a1219a4433fa1bfba94035b5a519c8986330e429e", size = 331955, upload-time = "2025-06-01T16:54:30.854Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/be/82/79e02a0e5dd4aca81894842b9d6522624a40048a913c6384efb2987a4144/geopandas-1.1.0-py3-none-any.whl", hash = "sha256:b19b18bdc736ee05b237f5e9184211c452768a4c883f7d7f8421b0cbe1da5875", size = 338014, upload-time = "2025-06-01T16:54:29.239Z" }, +] + +[[package]] +name = "gh" +version = "0.0.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "gitpython" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/46/80/c1e50b9b09a944b9b5f160d689fbf637b543bb8391019df1019986b8d397/gh-0.0.4.tar.gz", hash = "sha256:db58819885a95807f963f8eb798e1d0df22ded41d9a80d5c3dc1fc8d695f1e1b", size = 2192, upload-time = "2018-11-06T11:10:50.685Z" } + +[[package]] +name = "gitdb" +version = "4.0.12" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "smmap" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/72/94/63b0fc47eb32792c7ba1fe1b694daec9a63620db1e313033d18140c2320a/gitdb-4.0.12.tar.gz", hash = "sha256:5ef71f855d191a3326fcfbc0d5da835f26b13fbcba60c32c21091c349ffdb571", size = 394684, upload-time = "2025-01-02T07:20:46.413Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/61/5c78b91c3143ed5c14207f463aecfc8f9dbb5092fb2869baf37c273b2705/gitdb-4.0.12-py3-none-any.whl", hash = "sha256:67073e15955400952c6565cc3e707c554a4eea2e428946f7a4c162fab9bd9bcf", size = 62794, upload-time = "2025-01-02T07:20:43.624Z" }, +] + +[[package]] +name = "gitpython" +version = "3.1.44" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "gitdb" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c0/89/37df0b71473153574a5cdef8f242de422a0f5d26d7a9e231e6f169b4ad14/gitpython-3.1.44.tar.gz", hash = "sha256:c87e30b26253bf5418b01b0660f818967f3c503193838337fe5e573331249269", size = 214196, upload-time = "2025-01-02T07:32:43.59Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/9a/4114a9057db2f1462d5c8f8390ab7383925fe1ac012eaa42402ad65c2963/GitPython-3.1.44-py3-none-any.whl", hash = "sha256:9e0e10cda9bed1ee64bc9a6de50e7e38a9c9943241cd7f585f6df3ed28011110", size = 207599, upload-time = "2025-01-02T07:32:40.731Z" }, +] + +[[package]] +name = "greenlet" +version = "3.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c9/92/bb85bd6e80148a4d2e0c59f7c0c2891029f8fd510183afc7d8d2feeed9b6/greenlet-3.2.3.tar.gz", hash = "sha256:8b0dd8ae4c0d6f5e54ee55ba935eeb3d735a9b58a8a1e5b5cbab64e01a39f365", size = 185752, upload-time = "2025-06-05T16:16:09.955Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/92/db/b4c12cff13ebac2786f4f217f06588bccd8b53d260453404ef22b121fc3a/greenlet-3.2.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:1afd685acd5597349ee6d7a88a8bec83ce13c106ac78c196ee9dde7c04fe87be", size = 268977, upload-time = "2025-06-05T16:10:24.001Z" }, + { url = "https://files.pythonhosted.org/packages/52/61/75b4abd8147f13f70986df2801bf93735c1bd87ea780d70e3b3ecda8c165/greenlet-3.2.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:761917cac215c61e9dc7324b2606107b3b292a8349bdebb31503ab4de3f559ac", size = 627351, upload-time = "2025-06-05T16:38:50.685Z" }, + { url = "https://files.pythonhosted.org/packages/35/aa/6894ae299d059d26254779a5088632874b80ee8cf89a88bca00b0709d22f/greenlet-3.2.3-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:a433dbc54e4a37e4fff90ef34f25a8c00aed99b06856f0119dcf09fbafa16392", size = 638599, upload-time = "2025-06-05T16:41:34.057Z" }, + { url = "https://files.pythonhosted.org/packages/30/64/e01a8261d13c47f3c082519a5e9dbf9e143cc0498ed20c911d04e54d526c/greenlet-3.2.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:72e77ed69312bab0434d7292316d5afd6896192ac4327d44f3d613ecb85b037c", size = 634482, upload-time = "2025-06-05T16:48:16.26Z" }, + { url = "https://files.pythonhosted.org/packages/47/48/ff9ca8ba9772d083a4f5221f7b4f0ebe8978131a9ae0909cf202f94cd879/greenlet-3.2.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:68671180e3849b963649254a882cd544a3c75bfcd2c527346ad8bb53494444db", size = 633284, upload-time = "2025-06-05T16:13:01.599Z" }, + { url = "https://files.pythonhosted.org/packages/e9/45/626e974948713bc15775b696adb3eb0bd708bec267d6d2d5c47bb47a6119/greenlet-3.2.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:49c8cfb18fb419b3d08e011228ef8a25882397f3a859b9fe1436946140b6756b", size = 582206, upload-time = "2025-06-05T16:12:48.51Z" }, + { url = "https://files.pythonhosted.org/packages/b1/8e/8b6f42c67d5df7db35b8c55c9a850ea045219741bb14416255616808c690/greenlet-3.2.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:efc6dc8a792243c31f2f5674b670b3a95d46fa1c6a912b8e310d6f542e7b0712", size = 1111412, upload-time = "2025-06-05T16:36:45.479Z" }, + { url = "https://files.pythonhosted.org/packages/05/46/ab58828217349500a7ebb81159d52ca357da747ff1797c29c6023d79d798/greenlet-3.2.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:731e154aba8e757aedd0781d4b240f1225b075b4409f1bb83b05ff410582cf00", size = 1135054, upload-time = "2025-06-05T16:12:36.478Z" }, + { url = "https://files.pythonhosted.org/packages/68/7f/d1b537be5080721c0f0089a8447d4ef72839039cdb743bdd8ffd23046e9a/greenlet-3.2.3-cp310-cp310-win_amd64.whl", hash = "sha256:96c20252c2f792defe9a115d3287e14811036d51e78b3aaddbee23b69b216302", size = 296573, upload-time = "2025-06-05T16:34:26.521Z" }, + { url = "https://files.pythonhosted.org/packages/fc/2e/d4fcb2978f826358b673f779f78fa8a32ee37df11920dc2bb5589cbeecef/greenlet-3.2.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:784ae58bba89fa1fa5733d170d42486580cab9decda3484779f4759345b29822", size = 270219, upload-time = "2025-06-05T16:10:10.414Z" }, + { url = "https://files.pythonhosted.org/packages/16/24/929f853e0202130e4fe163bc1d05a671ce8dcd604f790e14896adac43a52/greenlet-3.2.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0921ac4ea42a5315d3446120ad48f90c3a6b9bb93dd9b3cf4e4d84a66e42de83", size = 630383, upload-time = "2025-06-05T16:38:51.785Z" }, + { url = "https://files.pythonhosted.org/packages/d1/b2/0320715eb61ae70c25ceca2f1d5ae620477d246692d9cc284c13242ec31c/greenlet-3.2.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:d2971d93bb99e05f8c2c0c2f4aa9484a18d98c4c3bd3c62b65b7e6ae33dfcfaf", size = 642422, upload-time = "2025-06-05T16:41:35.259Z" }, + { url = "https://files.pythonhosted.org/packages/bd/49/445fd1a210f4747fedf77615d941444349c6a3a4a1135bba9701337cd966/greenlet-3.2.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:c667c0bf9d406b77a15c924ef3285e1e05250948001220368e039b6aa5b5034b", size = 638375, upload-time = "2025-06-05T16:48:18.235Z" }, + { url = "https://files.pythonhosted.org/packages/7e/c8/ca19760cf6eae75fa8dc32b487e963d863b3ee04a7637da77b616703bc37/greenlet-3.2.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:592c12fb1165be74592f5de0d70f82bc5ba552ac44800d632214b76089945147", size = 637627, upload-time = "2025-06-05T16:13:02.858Z" }, + { url = "https://files.pythonhosted.org/packages/65/89/77acf9e3da38e9bcfca881e43b02ed467c1dedc387021fc4d9bd9928afb8/greenlet-3.2.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:29e184536ba333003540790ba29829ac14bb645514fbd7e32af331e8202a62a5", size = 585502, upload-time = "2025-06-05T16:12:49.642Z" }, + { url = "https://files.pythonhosted.org/packages/97/c6/ae244d7c95b23b7130136e07a9cc5aadd60d59b5951180dc7dc7e8edaba7/greenlet-3.2.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:93c0bb79844a367782ec4f429d07589417052e621aa39a5ac1fb99c5aa308edc", size = 1114498, upload-time = "2025-06-05T16:36:46.598Z" }, + { url = "https://files.pythonhosted.org/packages/89/5f/b16dec0cbfd3070658e0d744487919740c6d45eb90946f6787689a7efbce/greenlet-3.2.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:751261fc5ad7b6705f5f76726567375bb2104a059454e0226e1eef6c756748ba", size = 1139977, upload-time = "2025-06-05T16:12:38.262Z" }, + { url = "https://files.pythonhosted.org/packages/66/77/d48fb441b5a71125bcac042fc5b1494c806ccb9a1432ecaa421e72157f77/greenlet-3.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:83a8761c75312361aa2b5b903b79da97f13f556164a7dd2d5448655425bd4c34", size = 297017, upload-time = "2025-06-05T16:25:05.225Z" }, + { url = "https://files.pythonhosted.org/packages/f3/94/ad0d435f7c48debe960c53b8f60fb41c2026b1d0fa4a99a1cb17c3461e09/greenlet-3.2.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:25ad29caed5783d4bd7a85c9251c651696164622494c00802a139c00d639242d", size = 271992, upload-time = "2025-06-05T16:11:23.467Z" }, + { url = "https://files.pythonhosted.org/packages/93/5d/7c27cf4d003d6e77749d299c7c8f5fd50b4f251647b5c2e97e1f20da0ab5/greenlet-3.2.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:88cd97bf37fe24a6710ec6a3a7799f3f81d9cd33317dcf565ff9950c83f55e0b", size = 638820, upload-time = "2025-06-05T16:38:52.882Z" }, + { url = "https://files.pythonhosted.org/packages/c6/7e/807e1e9be07a125bb4c169144937910bf59b9d2f6d931578e57f0bce0ae2/greenlet-3.2.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:baeedccca94880d2f5666b4fa16fc20ef50ba1ee353ee2d7092b383a243b0b0d", size = 653046, upload-time = "2025-06-05T16:41:36.343Z" }, + { url = "https://files.pythonhosted.org/packages/9d/ab/158c1a4ea1068bdbc78dba5a3de57e4c7aeb4e7fa034320ea94c688bfb61/greenlet-3.2.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:be52af4b6292baecfa0f397f3edb3c6092ce071b499dd6fe292c9ac9f2c8f264", size = 647701, upload-time = "2025-06-05T16:48:19.604Z" }, + { url = "https://files.pythonhosted.org/packages/cc/0d/93729068259b550d6a0288da4ff72b86ed05626eaf1eb7c0d3466a2571de/greenlet-3.2.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0cc73378150b8b78b0c9fe2ce56e166695e67478550769536a6742dca3651688", size = 649747, upload-time = "2025-06-05T16:13:04.628Z" }, + { url = "https://files.pythonhosted.org/packages/f6/f6/c82ac1851c60851302d8581680573245c8fc300253fc1ff741ae74a6c24d/greenlet-3.2.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:706d016a03e78df129f68c4c9b4c4f963f7d73534e48a24f5f5a7101ed13dbbb", size = 605461, upload-time = "2025-06-05T16:12:50.792Z" }, + { url = "https://files.pythonhosted.org/packages/98/82/d022cf25ca39cf1200650fc58c52af32c90f80479c25d1cbf57980ec3065/greenlet-3.2.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:419e60f80709510c343c57b4bb5a339d8767bf9aef9b8ce43f4f143240f88b7c", size = 1121190, upload-time = "2025-06-05T16:36:48.59Z" }, + { url = "https://files.pythonhosted.org/packages/f5/e1/25297f70717abe8104c20ecf7af0a5b82d2f5a980eb1ac79f65654799f9f/greenlet-3.2.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:93d48533fade144203816783373f27a97e4193177ebaaf0fc396db19e5d61163", size = 1149055, upload-time = "2025-06-05T16:12:40.457Z" }, + { url = "https://files.pythonhosted.org/packages/1f/8f/8f9e56c5e82eb2c26e8cde787962e66494312dc8cb261c460e1f3a9c88bc/greenlet-3.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:7454d37c740bb27bdeddfc3f358f26956a07d5220818ceb467a483197d84f849", size = 297817, upload-time = "2025-06-05T16:29:49.244Z" }, + { url = "https://files.pythonhosted.org/packages/b1/cf/f5c0b23309070ae93de75c90d29300751a5aacefc0a3ed1b1d8edb28f08b/greenlet-3.2.3-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:500b8689aa9dd1ab26872a34084503aeddefcb438e2e7317b89b11eaea1901ad", size = 270732, upload-time = "2025-06-05T16:10:08.26Z" }, + { url = "https://files.pythonhosted.org/packages/48/ae/91a957ba60482d3fecf9be49bc3948f341d706b52ddb9d83a70d42abd498/greenlet-3.2.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a07d3472c2a93117af3b0136f246b2833fdc0b542d4a9799ae5f41c28323faef", size = 639033, upload-time = "2025-06-05T16:38:53.983Z" }, + { url = "https://files.pythonhosted.org/packages/6f/df/20ffa66dd5a7a7beffa6451bdb7400d66251374ab40b99981478c69a67a8/greenlet-3.2.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:8704b3768d2f51150626962f4b9a9e4a17d2e37c8a8d9867bbd9fa4eb938d3b3", size = 652999, upload-time = "2025-06-05T16:41:37.89Z" }, + { url = "https://files.pythonhosted.org/packages/51/b4/ebb2c8cb41e521f1d72bf0465f2f9a2fd803f674a88db228887e6847077e/greenlet-3.2.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:5035d77a27b7c62db6cf41cf786cfe2242644a7a337a0e155c80960598baab95", size = 647368, upload-time = "2025-06-05T16:48:21.467Z" }, + { url = "https://files.pythonhosted.org/packages/8e/6a/1e1b5aa10dced4ae876a322155705257748108b7fd2e4fae3f2a091fe81a/greenlet-3.2.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2d8aa5423cd4a396792f6d4580f88bdc6efcb9205891c9d40d20f6e670992efb", size = 650037, upload-time = "2025-06-05T16:13:06.402Z" }, + { url = "https://files.pythonhosted.org/packages/26/f2/ad51331a157c7015c675702e2d5230c243695c788f8f75feba1af32b3617/greenlet-3.2.3-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2c724620a101f8170065d7dded3f962a2aea7a7dae133a009cada42847e04a7b", size = 608402, upload-time = "2025-06-05T16:12:51.91Z" }, + { url = "https://files.pythonhosted.org/packages/26/bc/862bd2083e6b3aff23300900a956f4ea9a4059de337f5c8734346b9b34fc/greenlet-3.2.3-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:873abe55f134c48e1f2a6f53f7d1419192a3d1a4e873bace00499a4e45ea6af0", size = 1119577, upload-time = "2025-06-05T16:36:49.787Z" }, + { url = "https://files.pythonhosted.org/packages/86/94/1fc0cc068cfde885170e01de40a619b00eaa8f2916bf3541744730ffb4c3/greenlet-3.2.3-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:024571bbce5f2c1cfff08bf3fbaa43bbc7444f580ae13b0099e95d0e6e67ed36", size = 1147121, upload-time = "2025-06-05T16:12:42.527Z" }, + { url = "https://files.pythonhosted.org/packages/27/1a/199f9587e8cb08a0658f9c30f3799244307614148ffe8b1e3aa22f324dea/greenlet-3.2.3-cp313-cp313-win_amd64.whl", hash = "sha256:5195fb1e75e592dd04ce79881c8a22becdfa3e6f500e7feb059b1e6fdd54d3e3", size = 297603, upload-time = "2025-06-05T16:20:12.651Z" }, + { url = "https://files.pythonhosted.org/packages/d8/ca/accd7aa5280eb92b70ed9e8f7fd79dc50a2c21d8c73b9a0856f5b564e222/greenlet-3.2.3-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:3d04332dddb10b4a211b68111dabaee2e1a073663d117dc10247b5b1642bac86", size = 271479, upload-time = "2025-06-05T16:10:47.525Z" }, + { url = "https://files.pythonhosted.org/packages/55/71/01ed9895d9eb49223280ecc98a557585edfa56b3d0e965b9fa9f7f06b6d9/greenlet-3.2.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8186162dffde068a465deab08fc72c767196895c39db26ab1c17c0b77a6d8b97", size = 683952, upload-time = "2025-06-05T16:38:55.125Z" }, + { url = "https://files.pythonhosted.org/packages/ea/61/638c4bdf460c3c678a0a1ef4c200f347dff80719597e53b5edb2fb27ab54/greenlet-3.2.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f4bfbaa6096b1b7a200024784217defedf46a07c2eee1a498e94a1b5f8ec5728", size = 696917, upload-time = "2025-06-05T16:41:38.959Z" }, + { url = "https://files.pythonhosted.org/packages/22/cc/0bd1a7eb759d1f3e3cc2d1bc0f0b487ad3cc9f34d74da4b80f226fde4ec3/greenlet-3.2.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:ed6cfa9200484d234d8394c70f5492f144b20d4533f69262d530a1a082f6ee9a", size = 692443, upload-time = "2025-06-05T16:48:23.113Z" }, + { url = "https://files.pythonhosted.org/packages/67/10/b2a4b63d3f08362662e89c103f7fe28894a51ae0bc890fabf37d1d780e52/greenlet-3.2.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:02b0df6f63cd15012bed5401b47829cfd2e97052dc89da3cfaf2c779124eb892", size = 692995, upload-time = "2025-06-05T16:13:07.972Z" }, + { url = "https://files.pythonhosted.org/packages/5a/c6/ad82f148a4e3ce9564056453a71529732baf5448ad53fc323e37efe34f66/greenlet-3.2.3-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:86c2d68e87107c1792e2e8d5399acec2487a4e993ab76c792408e59394d52141", size = 655320, upload-time = "2025-06-05T16:12:53.453Z" }, + { url = "https://files.pythonhosted.org/packages/5c/4f/aab73ecaa6b3086a4c89863d94cf26fa84cbff63f52ce9bc4342b3087a06/greenlet-3.2.3-cp314-cp314-win_amd64.whl", hash = "sha256:8c47aae8fbbfcf82cc13327ae802ba13c9c36753b67e760023fd116bc124a62a", size = 301236, upload-time = "2025-06-05T16:15:20.111Z" }, +] + +[[package]] +name = "h11" +version = "0.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload-time = "2025-04-24T03:35:25.427Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, +] + +[[package]] +name = "httpcore" +version = "1.0.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "h11" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload-time = "2025-04-24T22:06:22.219Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" }, +] + +[[package]] +name = "httpx" +version = "0.28.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "certifi" }, + { name = "httpcore" }, + { name = "idna" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406, upload-time = "2024-12-06T15:37:23.222Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" }, +] + +[[package]] +name = "identify" +version = "2.6.12" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/88/d193a27416618628a5eea64e3223acd800b40749a96ffb322a9b55a49ed1/identify-2.6.12.tar.gz", hash = "sha256:d8de45749f1efb108badef65ee8386f0f7bb19a7f26185f74de6367bffbaf0e6", size = 99254, upload-time = "2025-05-23T20:37:53.3Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7a/cd/18f8da995b658420625f7ef13f037be53ae04ec5ad33f9b718240dcfd48c/identify-2.6.12-py2.py3-none-any.whl", hash = "sha256:ad9672d5a72e0d2ff7c5c8809b62dfa60458626352fb0eb7b55e69bdc45334a2", size = 99145, upload-time = "2025-05-23T20:37:51.495Z" }, +] + +[[package]] +name = "idna" +version = "3.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490, upload-time = "2024-09-15T18:07:39.745Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442, upload-time = "2024-09-15T18:07:37.964Z" }, +] + +[[package]] +name = "imagesize" +version = "1.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a7/84/62473fb57d61e31fef6e36d64a179c8781605429fd927b5dd608c997be31/imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a", size = 1280026, upload-time = "2022-07-01T12:21:05.687Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ff/62/85c4c919272577931d407be5ba5d71c20f0b616d31a0befe0ae45bb79abd/imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b", size = 8769, upload-time = "2022-07-01T12:21:02.467Z" }, +] + +[[package]] +name = "importlib-metadata" +version = "8.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "zipp" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/76/66/650a33bd90f786193e4de4b3ad86ea60b53c89b669a5c7be931fac31cdb0/importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000", size = 56641, upload-time = "2025-04-27T15:29:01.736Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/b0/36bd937216ec521246249be3bf9855081de4c5e06a0c9b4219dbeda50373/importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd", size = 27656, upload-time = "2025-04-27T15:29:00.214Z" }, +] + +[[package]] +name = "iniconfig" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload-time = "2025-03-19T20:09:59.721Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload-time = "2025-03-19T20:10:01.071Z" }, +] + +[[package]] +name = "ipykernel" +version = "6.29.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "appnope", marker = "sys_platform == 'darwin'" }, + { name = "comm" }, + { name = "debugpy" }, + { name = "ipython", version = "8.37.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "ipython", version = "9.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "matplotlib-inline" }, + { name = "nest-asyncio" }, + { name = "packaging" }, + { name = "psutil" }, + { name = "pyzmq" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e9/5c/67594cb0c7055dc50814b21731c22a601101ea3b1b50a9a1b090e11f5d0f/ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215", size = 163367, upload-time = "2024-07-01T14:07:22.543Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/5c/368ae6c01c7628438358e6d337c19b05425727fbb221d2a3c4303c372f42/ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5", size = 117173, upload-time = "2024-07-01T14:07:19.603Z" }, +] + +[[package]] +name = "ipython" +version = "8.37.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11'", +] +dependencies = [ + { name = "colorama", marker = "python_full_version < '3.11' and sys_platform == 'win32'" }, + { name = "decorator", marker = "python_full_version < '3.11'" }, + { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, + { name = "jedi", marker = "python_full_version < '3.11'" }, + { name = "matplotlib-inline", marker = "python_full_version < '3.11'" }, + { name = "pexpect", marker = "python_full_version < '3.11' and sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "prompt-toolkit", marker = "python_full_version < '3.11'" }, + { name = "pygments", marker = "python_full_version < '3.11'" }, + { name = "stack-data", marker = "python_full_version < '3.11'" }, + { name = "traitlets", marker = "python_full_version < '3.11'" }, + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/85/31/10ac88f3357fc276dc8a64e8880c82e80e7459326ae1d0a211b40abf6665/ipython-8.37.0.tar.gz", hash = "sha256:ca815841e1a41a1e6b73a0b08f3038af9b2252564d01fc405356d34033012216", size = 5606088, upload-time = "2025-05-31T16:39:09.613Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/91/d0/274fbf7b0b12643cbbc001ce13e6a5b1607ac4929d1b11c72460152c9fc3/ipython-8.37.0-py3-none-any.whl", hash = "sha256:ed87326596b878932dbcb171e3e698845434d8c61b8d8cd474bf663041a9dcf2", size = 831864, upload-time = "2025-05-31T16:39:06.38Z" }, +] + +[[package]] +name = "ipython" +version = "9.3.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", +] +dependencies = [ + { name = "colorama", marker = "python_full_version >= '3.11' and sys_platform == 'win32'" }, + { name = "decorator", marker = "python_full_version >= '3.11'" }, + { name = "ipython-pygments-lexers", marker = "python_full_version >= '3.11'" }, + { name = "jedi", marker = "python_full_version >= '3.11'" }, + { name = "matplotlib-inline", marker = "python_full_version >= '3.11'" }, + { name = "pexpect", marker = "python_full_version >= '3.11' and sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "prompt-toolkit", marker = "python_full_version >= '3.11'" }, + { name = "pygments", marker = "python_full_version >= '3.11'" }, + { name = "stack-data", marker = "python_full_version >= '3.11'" }, + { name = "traitlets", marker = "python_full_version >= '3.11'" }, + { name = "typing-extensions", marker = "python_full_version == '3.11.*'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dc/09/4c7e06b96fbd203e06567b60fb41b06db606b6a82db6db7b2c85bb72a15c/ipython-9.3.0.tar.gz", hash = "sha256:79eb896f9f23f50ad16c3bc205f686f6e030ad246cc309c6279a242b14afe9d8", size = 4426460, upload-time = "2025-05-31T16:34:55.678Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/99/9ed3d52d00f1846679e3aa12e2326ac7044b5e7f90dc822b60115fa533ca/ipython-9.3.0-py3-none-any.whl", hash = "sha256:1a0b6dd9221a1f5dddf725b57ac0cb6fddc7b5f470576231ae9162b9b3455a04", size = 605320, upload-time = "2025-05-31T16:34:52.154Z" }, +] + +[[package]] +name = "ipython-pygments-lexers" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pygments", marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393, upload-time = "2025-01-17T11:24:34.505Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074, upload-time = "2025-01-17T11:24:33.271Z" }, +] + +[[package]] +name = "isoduration" +version = "20.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "arrow" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7c/1a/3c8edc664e06e6bd06cce40c6b22da5f1429aa4224d0c590f3be21c91ead/isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9", size = 11649, upload-time = "2020-11-01T11:00:00.312Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/55/e5326141505c5d5e34c5e0935d2908a74e4561eca44108fbfb9c13d2911a/isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042", size = 11321, upload-time = "2020-11-01T10:59:58.02Z" }, +] + +[[package]] +name = "isort" +version = "5.12.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a9/c4/dc00e42c158fc4dda2afebe57d2e948805c06d5169007f1724f0683010a9/isort-5.12.0.tar.gz", hash = "sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504", size = 174643, upload-time = "2023-01-28T17:10:22.636Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0a/63/4036ae70eea279c63e2304b91ee0ac182f467f24f86394ecfe726092340b/isort-5.12.0-py3-none-any.whl", hash = "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6", size = 91198, upload-time = "2023-01-28T17:10:21.149Z" }, +] + +[[package]] +name = "jedi" +version = "0.19.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "parso" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", size = 1231287, upload-time = "2024-11-11T01:41:42.873Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278, upload-time = "2024-11-11T01:41:40.175Z" }, +] + +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, +] + +[[package]] +name = "joblib" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/dc/fe/0f5a938c54105553436dbff7a61dc4fed4b1b2c98852f8833beaf4d5968f/joblib-1.5.1.tar.gz", hash = "sha256:f4f86e351f39fe3d0d32a9f2c3d8af1ee4cec285aafcb27003dda5205576b444", size = 330475, upload-time = "2025-05-23T12:04:37.097Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7d/4f/1195bbac8e0c2acc5f740661631d8d750dc38d4a32b23ee5df3cde6f4e0d/joblib-1.5.1-py3-none-any.whl", hash = "sha256:4719a31f054c7d766948dcd83e9613686b27114f190f717cec7eaa2084f8a74a", size = 307746, upload-time = "2025-05-23T12:04:35.124Z" }, +] + +[[package]] +name = "json5" +version = "0.12.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/12/be/c6c745ec4c4539b25a278b70e29793f10382947df0d9efba2fa09120895d/json5-0.12.0.tar.gz", hash = "sha256:0b4b6ff56801a1c7dc817b0241bca4ce474a0e6a163bfef3fc594d3fd263ff3a", size = 51907, upload-time = "2025-04-03T16:33:13.201Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/9f/3500910d5a98549e3098807493851eeef2b89cdd3032227558a104dfe926/json5-0.12.0-py3-none-any.whl", hash = "sha256:6d37aa6c08b0609f16e1ec5ff94697e2cbbfbad5ac112afa05794da9ab7810db", size = 36079, upload-time = "2025-04-03T16:33:11.927Z" }, +] + +[[package]] +name = "jsonpointer" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6a/0a/eebeb1fa92507ea94016a2a790b93c2ae41a7e18778f85471dc54475ed25/jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef", size = 9114, upload-time = "2024-06-10T19:24:42.462Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942", size = 7595, upload-time = "2024-06-10T19:24:40.698Z" }, +] + +[[package]] +name = "jsonschema" +version = "4.24.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "jsonschema-specifications" }, + { name = "referencing" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bf/d3/1cf5326b923a53515d8f3a2cd442e6d7e94fcc444716e879ea70a0ce3177/jsonschema-4.24.0.tar.gz", hash = "sha256:0b4e8069eb12aedfa881333004bccaec24ecef5a8a6a4b6df142b2cc9599d196", size = 353480, upload-time = "2025-05-26T18:48:10.459Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/3d/023389198f69c722d039351050738d6755376c8fd343e91dc493ea485905/jsonschema-4.24.0-py3-none-any.whl", hash = "sha256:a462455f19f5faf404a7902952b6f0e3ce868f3ee09a359b05eca6673bd8412d", size = 88709, upload-time = "2025-05-26T18:48:08.417Z" }, +] + +[package.optional-dependencies] +format-nongpl = [ + { name = "fqdn" }, + { name = "idna" }, + { name = "isoduration" }, + { name = "jsonpointer" }, + { name = "rfc3339-validator" }, + { name = "rfc3986-validator" }, + { name = "uri-template" }, + { name = "webcolors" }, +] + +[[package]] +name = "jsonschema-specifications" +version = "2025.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "referencing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bf/ce/46fbd9c8119cfc3581ee5643ea49464d168028cfb5caff5fc0596d0cf914/jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608", size = 15513, upload-time = "2025-04-23T12:34:07.418Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437, upload-time = "2025-04-23T12:34:05.422Z" }, +] + +[[package]] +name = "jupyter-book" +version = "1.0.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "jinja2" }, + { name = "jsonschema" }, + { name = "linkify-it-py" }, + { name = "myst-nb" }, + { name = "myst-parser" }, + { name = "pyyaml" }, + { name = "sphinx" }, + { name = "sphinx-book-theme" }, + { name = "sphinx-comments" }, + { name = "sphinx-copybutton" }, + { name = "sphinx-design" }, + { name = "sphinx-external-toc" }, + { name = "sphinx-jupyterbook-latex" }, + { name = "sphinx-multitoc-numbering" }, + { name = "sphinx-thebe" }, + { name = "sphinx-togglebutton" }, + { name = "sphinxcontrib-bibtex" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/32/ea/ec3ffc3b9a2d2100345d01b656ce4ac850a28defdf71a3aecdfaa44bbad0/jupyter_book-1.0.3.tar.gz", hash = "sha256:f05788a76f4d284de9887fa816f4a99a4f16cc5f7c0fd5a56074a3d03bfc3e50", size = 66469, upload-time = "2024-10-07T14:05:27.946Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2b/3d/3b0360dade8df5d5f7a30f230f1316ded7e029d7f60a6e38b3765be47603/jupyter_book-1.0.3-py3-none-any.whl", hash = "sha256:d99b0c92c62b469abc2b61047c1290923bce460367c6a7e296589cadc726119f", size = 44000, upload-time = "2024-10-07T14:05:26.427Z" }, +] + +[[package]] +name = "jupyter-cache" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "click" }, + { name = "importlib-metadata" }, + { name = "nbclient" }, + { name = "nbformat" }, + { name = "pyyaml" }, + { name = "sqlalchemy" }, + { name = "tabulate" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bb/f7/3627358075f183956e8c4974603232b03afd4ddc7baf72c2bc9fff522291/jupyter_cache-1.0.1.tar.gz", hash = "sha256:16e808eb19e3fb67a223db906e131ea6e01f03aa27f49a7214ce6a5fec186fb9", size = 32048, upload-time = "2024-11-15T16:03:55.322Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/64/6b/67b87da9d36bff9df7d0efbd1a325fa372a43be7158effaf43ed7b22341d/jupyter_cache-1.0.1-py3-none-any.whl", hash = "sha256:9c3cafd825ba7da8b5830485343091143dff903e4d8c69db9349b728b140abf6", size = 33907, upload-time = "2024-11-15T16:03:54.021Z" }, +] + +[[package]] +name = "jupyter-client" +version = "8.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-core" }, + { name = "python-dateutil" }, + { name = "pyzmq" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/71/22/bf9f12fdaeae18019a468b68952a60fe6dbab5d67cd2a103cac7659b41ca/jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419", size = 342019, upload-time = "2024-09-17T10:44:17.613Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105, upload-time = "2024-09-17T10:44:15.218Z" }, +] + +[[package]] +name = "jupyter-core" +version = "5.8.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "platformdirs" }, + { name = "pywin32", marker = "platform_python_implementation != 'PyPy' and sys_platform == 'win32'" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/99/1b/72906d554acfeb588332eaaa6f61577705e9ec752ddb486f302dafa292d9/jupyter_core-5.8.1.tar.gz", hash = "sha256:0a5f9706f70e64786b75acba995988915ebd4601c8a52e534a40b51c95f59941", size = 88923, upload-time = "2025-05-27T07:38:16.655Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2f/57/6bffd4b20b88da3800c5d691e0337761576ee688eb01299eae865689d2df/jupyter_core-5.8.1-py3-none-any.whl", hash = "sha256:c28d268fc90fb53f1338ded2eb410704c5449a358406e8a948b75706e24863d0", size = 28880, upload-time = "2025-05-27T07:38:15.137Z" }, +] + +[[package]] +name = "jupyter-events" +version = "0.12.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jsonschema", extra = ["format-nongpl"] }, + { name = "packaging" }, + { name = "python-json-logger" }, + { name = "pyyaml" }, + { name = "referencing" }, + { name = "rfc3339-validator" }, + { name = "rfc3986-validator" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9d/c3/306d090461e4cf3cd91eceaff84bede12a8e52cd821c2d20c9a4fd728385/jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b", size = 62196, upload-time = "2025-02-03T17:23:41.485Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e2/48/577993f1f99c552f18a0428731a755e06171f9902fa118c379eb7c04ea22/jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb", size = 19430, upload-time = "2025-02-03T17:23:38.643Z" }, +] + +[[package]] +name = "jupyter-lsp" +version = "2.2.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-server" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/85/b4/3200b0b09c12bc3b72d943d923323c398eff382d1dcc7c0dbc8b74630e40/jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001", size = 48741, upload-time = "2024-04-09T17:59:44.918Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/e0/7bd7cff65594fd9936e2f9385701e44574fc7d721331ff676ce440b14100/jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da", size = 69146, upload-time = "2024-04-09T17:59:43.388Z" }, +] + +[[package]] +name = "jupyter-server" +version = "2.16.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "argon2-cffi" }, + { name = "jinja2" }, + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "jupyter-events" }, + { name = "jupyter-server-terminals" }, + { name = "nbconvert" }, + { name = "nbformat" }, + { name = "overrides" }, + { name = "packaging" }, + { name = "prometheus-client" }, + { name = "pywinpty", marker = "os_name == 'nt'" }, + { name = "pyzmq" }, + { name = "send2trash" }, + { name = "terminado" }, + { name = "tornado" }, + { name = "traitlets" }, + { name = "websocket-client" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/41/c8/ba2bbcd758c47f1124c4ca14061e8ce60d9c6fd537faee9534a95f83521a/jupyter_server-2.16.0.tar.gz", hash = "sha256:65d4b44fdf2dcbbdfe0aa1ace4a842d4aaf746a2b7b168134d5aaed35621b7f6", size = 728177, upload-time = "2025-05-12T16:44:46.245Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/46/1f/5ebbced977171d09a7b0c08a285ff9a20aafb9c51bde07e52349ff1ddd71/jupyter_server-2.16.0-py3-none-any.whl", hash = "sha256:3d8db5be3bc64403b1c65b400a1d7f4647a5ce743f3b20dbdefe8ddb7b55af9e", size = 386904, upload-time = "2025-05-12T16:44:43.335Z" }, +] + +[[package]] +name = "jupyter-server-terminals" +version = "0.5.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pywinpty", marker = "os_name == 'nt'" }, + { name = "terminado" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/d5/562469734f476159e99a55426d697cbf8e7eb5efe89fb0e0b4f83a3d3459/jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269", size = 31430, upload-time = "2024-03-12T14:37:03.049Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/2d/2b32cdbe8d2a602f697a649798554e4f072115438e92249624e532e8aca6/jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa", size = 13656, upload-time = "2024-03-12T14:37:00.708Z" }, +] + +[[package]] +name = "jupyterlab" +version = "4.4.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "async-lru" }, + { name = "httpx" }, + { name = "ipykernel" }, + { name = "jinja2" }, + { name = "jupyter-core" }, + { name = "jupyter-lsp" }, + { name = "jupyter-server" }, + { name = "jupyterlab-server" }, + { name = "notebook-shim" }, + { name = "packaging" }, + { name = "setuptools" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d3/2d/d1678dcf2db66cb4a38a80d9e5fcf48c349f3ac12f2d38882993353ae768/jupyterlab-4.4.3.tar.gz", hash = "sha256:a94c32fd7f8b93e82a49dc70a6ec45a5c18281ca2a7228d12765e4e210e5bca2", size = 23032376, upload-time = "2025-05-26T11:18:00.996Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/4d/7dd5c2ffbb960930452a031dc8410746183c924580f2ab4e68ceb5b3043f/jupyterlab-4.4.3-py3-none-any.whl", hash = "sha256:164302f6d4b6c44773dfc38d585665a4db401a16e5296c37df5cba63904fbdea", size = 12295480, upload-time = "2025-05-26T11:17:56.607Z" }, +] + +[[package]] +name = "jupyterlab-pygments" +version = "0.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/90/51/9187be60d989df97f5f0aba133fa54e7300f17616e065d1ada7d7646b6d6/jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d", size = 512900, upload-time = "2023-11-23T09:26:37.44Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780", size = 15884, upload-time = "2023-11-23T09:26:34.325Z" }, +] + +[[package]] +name = "jupyterlab-server" +version = "2.27.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "babel" }, + { name = "jinja2" }, + { name = "json5" }, + { name = "jsonschema" }, + { name = "jupyter-server" }, + { name = "packaging" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0a/c9/a883ce65eb27905ce77ace410d83587c82ea64dc85a48d1f7ed52bcfa68d/jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4", size = 76173, upload-time = "2024-07-16T17:02:04.149Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/09/2032e7d15c544a0e3cd831c51d77a8ca57f7555b2e1b2922142eddb02a84/jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4", size = 59700, upload-time = "2024-07-16T17:02:01.115Z" }, +] + +[[package]] +name = "kiwisolver" +version = "1.4.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/59/7c91426a8ac292e1cdd53a63b6d9439abd573c875c3f92c146767dd33faf/kiwisolver-1.4.8.tar.gz", hash = "sha256:23d5f023bdc8c7e54eb65f03ca5d5bb25b601eac4d7f1a042888a1f45237987e", size = 97538, upload-time = "2024-12-24T18:30:51.519Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/5f/4d8e9e852d98ecd26cdf8eaf7ed8bc33174033bba5e07001b289f07308fd/kiwisolver-1.4.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:88c6f252f6816a73b1f8c904f7bbe02fd67c09a69f7cb8a0eecdbf5ce78e63db", size = 124623, upload-time = "2024-12-24T18:28:17.687Z" }, + { url = "https://files.pythonhosted.org/packages/1d/70/7f5af2a18a76fe92ea14675f8bd88ce53ee79e37900fa5f1a1d8e0b42998/kiwisolver-1.4.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c72941acb7b67138f35b879bbe85be0f6c6a70cab78fe3ef6db9c024d9223e5b", size = 66720, upload-time = "2024-12-24T18:28:19.158Z" }, + { url = "https://files.pythonhosted.org/packages/c6/13/e15f804a142353aefd089fadc8f1d985561a15358c97aca27b0979cb0785/kiwisolver-1.4.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce2cf1e5688edcb727fdf7cd1bbd0b6416758996826a8be1d958f91880d0809d", size = 65413, upload-time = "2024-12-24T18:28:20.064Z" }, + { url = "https://files.pythonhosted.org/packages/ce/6d/67d36c4d2054e83fb875c6b59d0809d5c530de8148846b1370475eeeece9/kiwisolver-1.4.8-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c8bf637892dc6e6aad2bc6d4d69d08764166e5e3f69d469e55427b6ac001b19d", size = 1650826, upload-time = "2024-12-24T18:28:21.203Z" }, + { url = "https://files.pythonhosted.org/packages/de/c6/7b9bb8044e150d4d1558423a1568e4f227193662a02231064e3824f37e0a/kiwisolver-1.4.8-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:034d2c891f76bd3edbdb3ea11140d8510dca675443da7304205a2eaa45d8334c", size = 1628231, upload-time = "2024-12-24T18:28:23.851Z" }, + { url = "https://files.pythonhosted.org/packages/b6/38/ad10d437563063eaaedbe2c3540a71101fc7fb07a7e71f855e93ea4de605/kiwisolver-1.4.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d47b28d1dfe0793d5e96bce90835e17edf9a499b53969b03c6c47ea5985844c3", size = 1408938, upload-time = "2024-12-24T18:28:26.687Z" }, + { url = "https://files.pythonhosted.org/packages/52/ce/c0106b3bd7f9e665c5f5bc1e07cc95b5dabd4e08e3dad42dbe2faad467e7/kiwisolver-1.4.8-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb158fe28ca0c29f2260cca8c43005329ad58452c36f0edf298204de32a9a3ed", size = 1422799, upload-time = "2024-12-24T18:28:30.538Z" }, + { url = "https://files.pythonhosted.org/packages/d0/87/efb704b1d75dc9758087ba374c0f23d3254505edaedd09cf9d247f7878b9/kiwisolver-1.4.8-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5536185fce131780ebd809f8e623bf4030ce1b161353166c49a3c74c287897f", size = 1354362, upload-time = "2024-12-24T18:28:32.943Z" }, + { url = "https://files.pythonhosted.org/packages/eb/b3/fd760dc214ec9a8f208b99e42e8f0130ff4b384eca8b29dd0efc62052176/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:369b75d40abedc1da2c1f4de13f3482cb99e3237b38726710f4a793432b1c5ff", size = 2222695, upload-time = "2024-12-24T18:28:35.641Z" }, + { url = "https://files.pythonhosted.org/packages/a2/09/a27fb36cca3fc01700687cc45dae7a6a5f8eeb5f657b9f710f788748e10d/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:641f2ddf9358c80faa22e22eb4c9f54bd3f0e442e038728f500e3b978d00aa7d", size = 2370802, upload-time = "2024-12-24T18:28:38.357Z" }, + { url = "https://files.pythonhosted.org/packages/3d/c3/ba0a0346db35fe4dc1f2f2cf8b99362fbb922d7562e5f911f7ce7a7b60fa/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d561d2d8883e0819445cfe58d7ddd673e4015c3c57261d7bdcd3710d0d14005c", size = 2334646, upload-time = "2024-12-24T18:28:40.941Z" }, + { url = "https://files.pythonhosted.org/packages/41/52/942cf69e562f5ed253ac67d5c92a693745f0bed3c81f49fc0cbebe4d6b00/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:1732e065704b47c9afca7ffa272f845300a4eb959276bf6970dc07265e73b605", size = 2467260, upload-time = "2024-12-24T18:28:42.273Z" }, + { url = "https://files.pythonhosted.org/packages/32/26/2d9668f30d8a494b0411d4d7d4ea1345ba12deb6a75274d58dd6ea01e951/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:bcb1ebc3547619c3b58a39e2448af089ea2ef44b37988caf432447374941574e", size = 2288633, upload-time = "2024-12-24T18:28:44.87Z" }, + { url = "https://files.pythonhosted.org/packages/98/99/0dd05071654aa44fe5d5e350729961e7bb535372935a45ac89a8924316e6/kiwisolver-1.4.8-cp310-cp310-win_amd64.whl", hash = "sha256:89c107041f7b27844179ea9c85d6da275aa55ecf28413e87624d033cf1f6b751", size = 71885, upload-time = "2024-12-24T18:28:47.346Z" }, + { url = "https://files.pythonhosted.org/packages/6c/fc/822e532262a97442989335394d441cd1d0448c2e46d26d3e04efca84df22/kiwisolver-1.4.8-cp310-cp310-win_arm64.whl", hash = "sha256:b5773efa2be9eb9fcf5415ea3ab70fc785d598729fd6057bea38d539ead28271", size = 65175, upload-time = "2024-12-24T18:28:49.651Z" }, + { url = "https://files.pythonhosted.org/packages/da/ed/c913ee28936c371418cb167b128066ffb20bbf37771eecc2c97edf8a6e4c/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a4d3601908c560bdf880f07d94f31d734afd1bb71e96585cace0e38ef44c6d84", size = 124635, upload-time = "2024-12-24T18:28:51.826Z" }, + { url = "https://files.pythonhosted.org/packages/4c/45/4a7f896f7467aaf5f56ef093d1f329346f3b594e77c6a3c327b2d415f521/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:856b269c4d28a5c0d5e6c1955ec36ebfd1651ac00e1ce0afa3e28da95293b561", size = 66717, upload-time = "2024-12-24T18:28:54.256Z" }, + { url = "https://files.pythonhosted.org/packages/5f/b4/c12b3ac0852a3a68f94598d4c8d569f55361beef6159dce4e7b624160da2/kiwisolver-1.4.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c2b9a96e0f326205af81a15718a9073328df1173a2619a68553decb7097fd5d7", size = 65413, upload-time = "2024-12-24T18:28:55.184Z" }, + { url = "https://files.pythonhosted.org/packages/a9/98/1df4089b1ed23d83d410adfdc5947245c753bddfbe06541c4aae330e9e70/kiwisolver-1.4.8-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5020c83e8553f770cb3b5fc13faac40f17e0b205bd237aebd21d53d733adb03", size = 1343994, upload-time = "2024-12-24T18:28:57.493Z" }, + { url = "https://files.pythonhosted.org/packages/8d/bf/b4b169b050c8421a7c53ea1ea74e4ef9c335ee9013216c558a047f162d20/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dace81d28c787956bfbfbbfd72fdcef014f37d9b48830829e488fdb32b49d954", size = 1434804, upload-time = "2024-12-24T18:29:00.077Z" }, + { url = "https://files.pythonhosted.org/packages/66/5a/e13bd341fbcf73325ea60fdc8af752addf75c5079867af2e04cc41f34434/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11e1022b524bd48ae56c9b4f9296bce77e15a2e42a502cceba602f804b32bb79", size = 1450690, upload-time = "2024-12-24T18:29:01.401Z" }, + { url = "https://files.pythonhosted.org/packages/9b/4f/5955dcb376ba4a830384cc6fab7d7547bd6759fe75a09564910e9e3bb8ea/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b9b4d2892fefc886f30301cdd80debd8bb01ecdf165a449eb6e78f79f0fabd6", size = 1376839, upload-time = "2024-12-24T18:29:02.685Z" }, + { url = "https://files.pythonhosted.org/packages/3a/97/5edbed69a9d0caa2e4aa616ae7df8127e10f6586940aa683a496c2c280b9/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a96c0e790ee875d65e340ab383700e2b4891677b7fcd30a699146f9384a2bb0", size = 1435109, upload-time = "2024-12-24T18:29:04.113Z" }, + { url = "https://files.pythonhosted.org/packages/13/fc/e756382cb64e556af6c1809a1bbb22c141bbc2445049f2da06b420fe52bf/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:23454ff084b07ac54ca8be535f4174170c1094a4cff78fbae4f73a4bcc0d4dab", size = 2245269, upload-time = "2024-12-24T18:29:05.488Z" }, + { url = "https://files.pythonhosted.org/packages/76/15/e59e45829d7f41c776d138245cabae6515cb4eb44b418f6d4109c478b481/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:87b287251ad6488e95b4f0b4a79a6d04d3ea35fde6340eb38fbd1ca9cd35bbbc", size = 2393468, upload-time = "2024-12-24T18:29:06.79Z" }, + { url = "https://files.pythonhosted.org/packages/e9/39/483558c2a913ab8384d6e4b66a932406f87c95a6080112433da5ed668559/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:b21dbe165081142b1232a240fc6383fd32cdd877ca6cc89eab93e5f5883e1c25", size = 2355394, upload-time = "2024-12-24T18:29:08.24Z" }, + { url = "https://files.pythonhosted.org/packages/01/aa/efad1fbca6570a161d29224f14b082960c7e08268a133fe5dc0f6906820e/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:768cade2c2df13db52475bd28d3a3fac8c9eff04b0e9e2fda0f3760f20b3f7fc", size = 2490901, upload-time = "2024-12-24T18:29:09.653Z" }, + { url = "https://files.pythonhosted.org/packages/c9/4f/15988966ba46bcd5ab9d0c8296914436720dd67fca689ae1a75b4ec1c72f/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d47cfb2650f0e103d4bf68b0b5804c68da97272c84bb12850d877a95c056bd67", size = 2312306, upload-time = "2024-12-24T18:29:12.644Z" }, + { url = "https://files.pythonhosted.org/packages/2d/27/bdf1c769c83f74d98cbc34483a972f221440703054894a37d174fba8aa68/kiwisolver-1.4.8-cp311-cp311-win_amd64.whl", hash = "sha256:ed33ca2002a779a2e20eeb06aea7721b6e47f2d4b8a8ece979d8ba9e2a167e34", size = 71966, upload-time = "2024-12-24T18:29:14.089Z" }, + { url = "https://files.pythonhosted.org/packages/4a/c9/9642ea855604aeb2968a8e145fc662edf61db7632ad2e4fb92424be6b6c0/kiwisolver-1.4.8-cp311-cp311-win_arm64.whl", hash = "sha256:16523b40aab60426ffdebe33ac374457cf62863e330a90a0383639ce14bf44b2", size = 65311, upload-time = "2024-12-24T18:29:15.892Z" }, + { url = "https://files.pythonhosted.org/packages/fc/aa/cea685c4ab647f349c3bc92d2daf7ae34c8e8cf405a6dcd3a497f58a2ac3/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d6af5e8815fd02997cb6ad9bbed0ee1e60014438ee1a5c2444c96f87b8843502", size = 124152, upload-time = "2024-12-24T18:29:16.85Z" }, + { url = "https://files.pythonhosted.org/packages/c5/0b/8db6d2e2452d60d5ebc4ce4b204feeb16176a851fd42462f66ade6808084/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bade438f86e21d91e0cf5dd7c0ed00cda0f77c8c1616bd83f9fc157fa6760d31", size = 66555, upload-time = "2024-12-24T18:29:19.146Z" }, + { url = "https://files.pythonhosted.org/packages/60/26/d6a0db6785dd35d3ba5bf2b2df0aedc5af089962c6eb2cbf67a15b81369e/kiwisolver-1.4.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b83dc6769ddbc57613280118fb4ce3cd08899cc3369f7d0e0fab518a7cf37fdb", size = 65067, upload-time = "2024-12-24T18:29:20.096Z" }, + { url = "https://files.pythonhosted.org/packages/c9/ed/1d97f7e3561e09757a196231edccc1bcf59d55ddccefa2afc9c615abd8e0/kiwisolver-1.4.8-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:111793b232842991be367ed828076b03d96202c19221b5ebab421ce8bcad016f", size = 1378443, upload-time = "2024-12-24T18:29:22.843Z" }, + { url = "https://files.pythonhosted.org/packages/29/61/39d30b99954e6b46f760e6289c12fede2ab96a254c443639052d1b573fbc/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:257af1622860e51b1a9d0ce387bf5c2c4f36a90594cb9514f55b074bcc787cfc", size = 1472728, upload-time = "2024-12-24T18:29:24.463Z" }, + { url = "https://files.pythonhosted.org/packages/0c/3e/804163b932f7603ef256e4a715e5843a9600802bb23a68b4e08c8c0ff61d/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b5637c3f316cab1ec1c9a12b8c5f4750a4c4b71af9157645bf32830e39c03a", size = 1478388, upload-time = "2024-12-24T18:29:25.776Z" }, + { url = "https://files.pythonhosted.org/packages/8a/9e/60eaa75169a154700be74f875a4d9961b11ba048bef315fbe89cb6999056/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:782bb86f245ec18009890e7cb8d13a5ef54dcf2ebe18ed65f795e635a96a1c6a", size = 1413849, upload-time = "2024-12-24T18:29:27.202Z" }, + { url = "https://files.pythonhosted.org/packages/bc/b3/9458adb9472e61a998c8c4d95cfdfec91c73c53a375b30b1428310f923e4/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc978a80a0db3a66d25767b03688f1147a69e6237175c0f4ffffaaedf744055a", size = 1475533, upload-time = "2024-12-24T18:29:28.638Z" }, + { url = "https://files.pythonhosted.org/packages/e4/7a/0a42d9571e35798de80aef4bb43a9b672aa7f8e58643d7bd1950398ffb0a/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:36dbbfd34838500a31f52c9786990d00150860e46cd5041386f217101350f0d3", size = 2268898, upload-time = "2024-12-24T18:29:30.368Z" }, + { url = "https://files.pythonhosted.org/packages/d9/07/1255dc8d80271400126ed8db35a1795b1a2c098ac3a72645075d06fe5c5d/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:eaa973f1e05131de5ff3569bbba7f5fd07ea0595d3870ed4a526d486fe57fa1b", size = 2425605, upload-time = "2024-12-24T18:29:33.151Z" }, + { url = "https://files.pythonhosted.org/packages/84/df/5a3b4cf13780ef6f6942df67b138b03b7e79e9f1f08f57c49957d5867f6e/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a66f60f8d0c87ab7f59b6fb80e642ebb29fec354a4dfad687ca4092ae69d04f4", size = 2375801, upload-time = "2024-12-24T18:29:34.584Z" }, + { url = "https://files.pythonhosted.org/packages/8f/10/2348d068e8b0f635c8c86892788dac7a6b5c0cb12356620ab575775aad89/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858416b7fb777a53f0c59ca08190ce24e9abbd3cffa18886a5781b8e3e26f65d", size = 2520077, upload-time = "2024-12-24T18:29:36.138Z" }, + { url = "https://files.pythonhosted.org/packages/32/d8/014b89fee5d4dce157d814303b0fce4d31385a2af4c41fed194b173b81ac/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:085940635c62697391baafaaeabdf3dd7a6c3643577dde337f4d66eba021b2b8", size = 2338410, upload-time = "2024-12-24T18:29:39.991Z" }, + { url = "https://files.pythonhosted.org/packages/bd/72/dfff0cc97f2a0776e1c9eb5bef1ddfd45f46246c6533b0191887a427bca5/kiwisolver-1.4.8-cp312-cp312-win_amd64.whl", hash = "sha256:01c3d31902c7db5fb6182832713d3b4122ad9317c2c5877d0539227d96bb2e50", size = 71853, upload-time = "2024-12-24T18:29:42.006Z" }, + { url = "https://files.pythonhosted.org/packages/dc/85/220d13d914485c0948a00f0b9eb419efaf6da81b7d72e88ce2391f7aed8d/kiwisolver-1.4.8-cp312-cp312-win_arm64.whl", hash = "sha256:a3c44cb68861de93f0c4a8175fbaa691f0aa22550c331fefef02b618a9dcb476", size = 65424, upload-time = "2024-12-24T18:29:44.38Z" }, + { url = "https://files.pythonhosted.org/packages/79/b3/e62464a652f4f8cd9006e13d07abad844a47df1e6537f73ddfbf1bc997ec/kiwisolver-1.4.8-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:1c8ceb754339793c24aee1c9fb2485b5b1f5bb1c2c214ff13368431e51fc9a09", size = 124156, upload-time = "2024-12-24T18:29:45.368Z" }, + { url = "https://files.pythonhosted.org/packages/8d/2d/f13d06998b546a2ad4f48607a146e045bbe48030774de29f90bdc573df15/kiwisolver-1.4.8-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:54a62808ac74b5e55a04a408cda6156f986cefbcf0ada13572696b507cc92fa1", size = 66555, upload-time = "2024-12-24T18:29:46.37Z" }, + { url = "https://files.pythonhosted.org/packages/59/e3/b8bd14b0a54998a9fd1e8da591c60998dc003618cb19a3f94cb233ec1511/kiwisolver-1.4.8-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:68269e60ee4929893aad82666821aaacbd455284124817af45c11e50a4b42e3c", size = 65071, upload-time = "2024-12-24T18:29:47.333Z" }, + { url = "https://files.pythonhosted.org/packages/f0/1c/6c86f6d85ffe4d0ce04228d976f00674f1df5dc893bf2dd4f1928748f187/kiwisolver-1.4.8-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:34d142fba9c464bc3bbfeff15c96eab0e7310343d6aefb62a79d51421fcc5f1b", size = 1378053, upload-time = "2024-12-24T18:29:49.636Z" }, + { url = "https://files.pythonhosted.org/packages/4e/b9/1c6e9f6dcb103ac5cf87cb695845f5fa71379021500153566d8a8a9fc291/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc373e0eef45b59197de815b1b28ef89ae3955e7722cc9710fb91cd77b7f47", size = 1472278, upload-time = "2024-12-24T18:29:51.164Z" }, + { url = "https://files.pythonhosted.org/packages/ee/81/aca1eb176de671f8bda479b11acdc42c132b61a2ac861c883907dde6debb/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:77e6f57a20b9bd4e1e2cedda4d0b986ebd0216236f0106e55c28aea3d3d69b16", size = 1478139, upload-time = "2024-12-24T18:29:52.594Z" }, + { url = "https://files.pythonhosted.org/packages/49/f4/e081522473671c97b2687d380e9e4c26f748a86363ce5af48b4a28e48d06/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08e77738ed7538f036cd1170cbed942ef749137b1311fa2bbe2a7fda2f6bf3cc", size = 1413517, upload-time = "2024-12-24T18:29:53.941Z" }, + { url = "https://files.pythonhosted.org/packages/8f/e9/6a7d025d8da8c4931522922cd706105aa32b3291d1add8c5427cdcd66e63/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5ce1e481a74b44dd5e92ff03ea0cb371ae7a0268318e202be06c8f04f4f1246", size = 1474952, upload-time = "2024-12-24T18:29:56.523Z" }, + { url = "https://files.pythonhosted.org/packages/82/13/13fa685ae167bee5d94b415991c4fc7bb0a1b6ebea6e753a87044b209678/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:fc2ace710ba7c1dfd1a3b42530b62b9ceed115f19a1656adefce7b1782a37794", size = 2269132, upload-time = "2024-12-24T18:29:57.989Z" }, + { url = "https://files.pythonhosted.org/packages/ef/92/bb7c9395489b99a6cb41d502d3686bac692586db2045adc19e45ee64ed23/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:3452046c37c7692bd52b0e752b87954ef86ee2224e624ef7ce6cb21e8c41cc1b", size = 2425997, upload-time = "2024-12-24T18:29:59.393Z" }, + { url = "https://files.pythonhosted.org/packages/ed/12/87f0e9271e2b63d35d0d8524954145837dd1a6c15b62a2d8c1ebe0f182b4/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:7e9a60b50fe8b2ec6f448fe8d81b07e40141bfced7f896309df271a0b92f80f3", size = 2376060, upload-time = "2024-12-24T18:30:01.338Z" }, + { url = "https://files.pythonhosted.org/packages/02/6e/c8af39288edbce8bf0fa35dee427b082758a4b71e9c91ef18fa667782138/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:918139571133f366e8362fa4a297aeba86c7816b7ecf0bc79168080e2bd79957", size = 2520471, upload-time = "2024-12-24T18:30:04.574Z" }, + { url = "https://files.pythonhosted.org/packages/13/78/df381bc7b26e535c91469f77f16adcd073beb3e2dd25042efd064af82323/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e063ef9f89885a1d68dd8b2e18f5ead48653176d10a0e324e3b0030e3a69adeb", size = 2338793, upload-time = "2024-12-24T18:30:06.25Z" }, + { url = "https://files.pythonhosted.org/packages/d0/dc/c1abe38c37c071d0fc71c9a474fd0b9ede05d42f5a458d584619cfd2371a/kiwisolver-1.4.8-cp313-cp313-win_amd64.whl", hash = "sha256:a17b7c4f5b2c51bb68ed379defd608a03954a1845dfed7cc0117f1cc8a9b7fd2", size = 71855, upload-time = "2024-12-24T18:30:07.535Z" }, + { url = "https://files.pythonhosted.org/packages/a0/b6/21529d595b126ac298fdd90b705d87d4c5693de60023e0efcb4f387ed99e/kiwisolver-1.4.8-cp313-cp313-win_arm64.whl", hash = "sha256:3cd3bc628b25f74aedc6d374d5babf0166a92ff1317f46267f12d2ed54bc1d30", size = 65430, upload-time = "2024-12-24T18:30:08.504Z" }, + { url = "https://files.pythonhosted.org/packages/34/bd/b89380b7298e3af9b39f49334e3e2a4af0e04819789f04b43d560516c0c8/kiwisolver-1.4.8-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:370fd2df41660ed4e26b8c9d6bbcad668fbe2560462cba151a721d49e5b6628c", size = 126294, upload-time = "2024-12-24T18:30:09.508Z" }, + { url = "https://files.pythonhosted.org/packages/83/41/5857dc72e5e4148eaac5aa76e0703e594e4465f8ab7ec0fc60e3a9bb8fea/kiwisolver-1.4.8-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:84a2f830d42707de1d191b9490ac186bf7997a9495d4e9072210a1296345f7dc", size = 67736, upload-time = "2024-12-24T18:30:11.039Z" }, + { url = "https://files.pythonhosted.org/packages/e1/d1/be059b8db56ac270489fb0b3297fd1e53d195ba76e9bbb30e5401fa6b759/kiwisolver-1.4.8-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7a3ad337add5148cf51ce0b55642dc551c0b9d6248458a757f98796ca7348712", size = 66194, upload-time = "2024-12-24T18:30:14.886Z" }, + { url = "https://files.pythonhosted.org/packages/e1/83/4b73975f149819eb7dcf9299ed467eba068ecb16439a98990dcb12e63fdd/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7506488470f41169b86d8c9aeff587293f530a23a23a49d6bc64dab66bedc71e", size = 1465942, upload-time = "2024-12-24T18:30:18.927Z" }, + { url = "https://files.pythonhosted.org/packages/c7/2c/30a5cdde5102958e602c07466bce058b9d7cb48734aa7a4327261ac8e002/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f0121b07b356a22fb0414cec4666bbe36fd6d0d759db3d37228f496ed67c880", size = 1595341, upload-time = "2024-12-24T18:30:22.102Z" }, + { url = "https://files.pythonhosted.org/packages/ff/9b/1e71db1c000385aa069704f5990574b8244cce854ecd83119c19e83c9586/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d6d6bd87df62c27d4185de7c511c6248040afae67028a8a22012b010bc7ad062", size = 1598455, upload-time = "2024-12-24T18:30:24.947Z" }, + { url = "https://files.pythonhosted.org/packages/85/92/c8fec52ddf06231b31cbb779af77e99b8253cd96bd135250b9498144c78b/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:291331973c64bb9cce50bbe871fb2e675c4331dab4f31abe89f175ad7679a4d7", size = 1522138, upload-time = "2024-12-24T18:30:26.286Z" }, + { url = "https://files.pythonhosted.org/packages/0b/51/9eb7e2cd07a15d8bdd976f6190c0164f92ce1904e5c0c79198c4972926b7/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:893f5525bb92d3d735878ec00f781b2de998333659507d29ea4466208df37bed", size = 1582857, upload-time = "2024-12-24T18:30:28.86Z" }, + { url = "https://files.pythonhosted.org/packages/0f/95/c5a00387a5405e68ba32cc64af65ce881a39b98d73cc394b24143bebc5b8/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b47a465040146981dc9db8647981b8cb96366fbc8d452b031e4f8fdffec3f26d", size = 2293129, upload-time = "2024-12-24T18:30:30.34Z" }, + { url = "https://files.pythonhosted.org/packages/44/83/eeb7af7d706b8347548313fa3a3a15931f404533cc54fe01f39e830dd231/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:99cea8b9dd34ff80c521aef46a1dddb0dcc0283cf18bde6d756f1e6f31772165", size = 2421538, upload-time = "2024-12-24T18:30:33.334Z" }, + { url = "https://files.pythonhosted.org/packages/05/f9/27e94c1b3eb29e6933b6986ffc5fa1177d2cd1f0c8efc5f02c91c9ac61de/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:151dffc4865e5fe6dafce5480fab84f950d14566c480c08a53c663a0020504b6", size = 2390661, upload-time = "2024-12-24T18:30:34.939Z" }, + { url = "https://files.pythonhosted.org/packages/d9/d4/3c9735faa36ac591a4afcc2980d2691000506050b7a7e80bcfe44048daa7/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:577facaa411c10421314598b50413aa1ebcf5126f704f1e5d72d7e4e9f020d90", size = 2546710, upload-time = "2024-12-24T18:30:37.281Z" }, + { url = "https://files.pythonhosted.org/packages/4c/fa/be89a49c640930180657482a74970cdcf6f7072c8d2471e1babe17a222dc/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:be4816dc51c8a471749d664161b434912eee82f2ea66bd7628bd14583a833e85", size = 2349213, upload-time = "2024-12-24T18:30:40.019Z" }, + { url = "https://files.pythonhosted.org/packages/1f/f9/ae81c47a43e33b93b0a9819cac6723257f5da2a5a60daf46aa5c7226ea85/kiwisolver-1.4.8-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e7a019419b7b510f0f7c9dceff8c5eae2392037eae483a7f9162625233802b0a", size = 60403, upload-time = "2024-12-24T18:30:41.372Z" }, + { url = "https://files.pythonhosted.org/packages/58/ca/f92b5cb6f4ce0c1ebfcfe3e2e42b96917e16f7090e45b21102941924f18f/kiwisolver-1.4.8-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:286b18e86682fd2217a48fc6be6b0f20c1d0ed10958d8dc53453ad58d7be0bf8", size = 58657, upload-time = "2024-12-24T18:30:42.392Z" }, + { url = "https://files.pythonhosted.org/packages/80/28/ae0240f732f0484d3a4dc885d055653c47144bdf59b670aae0ec3c65a7c8/kiwisolver-1.4.8-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4191ee8dfd0be1c3666ccbac178c5a05d5f8d689bbe3fc92f3c4abec817f8fe0", size = 84948, upload-time = "2024-12-24T18:30:44.703Z" }, + { url = "https://files.pythonhosted.org/packages/5d/eb/78d50346c51db22c7203c1611f9b513075f35c4e0e4877c5dde378d66043/kiwisolver-1.4.8-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7cd2785b9391f2873ad46088ed7599a6a71e762e1ea33e87514b1a441ed1da1c", size = 81186, upload-time = "2024-12-24T18:30:45.654Z" }, + { url = "https://files.pythonhosted.org/packages/43/f8/7259f18c77adca88d5f64f9a522792e178b2691f3748817a8750c2d216ef/kiwisolver-1.4.8-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c07b29089b7ba090b6f1a669f1411f27221c3662b3a1b7010e67b59bb5a6f10b", size = 80279, upload-time = "2024-12-24T18:30:47.951Z" }, + { url = "https://files.pythonhosted.org/packages/3a/1d/50ad811d1c5dae091e4cf046beba925bcae0a610e79ae4c538f996f63ed5/kiwisolver-1.4.8-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:65ea09a5a3faadd59c2ce96dc7bf0f364986a315949dc6374f04396b0d60e09b", size = 71762, upload-time = "2024-12-24T18:30:48.903Z" }, +] + +[[package]] +name = "larch" +version = "6.0.41" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "addicty" }, + { name = "dask" }, + { name = "filelock" }, + { name = "jinja2" }, + { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "networkx", version = "3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "numba" }, + { name = "numexpr" }, + { name = "numpy" }, + { name = "pandas", version = "2.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, + { name = "pandas", version = "2.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, + { name = "pyarrow" }, + { name = "rich" }, + { name = "scipy" }, + { name = "sparse" }, + { name = "xarray" }, + { name = "xmle" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5c/d1/97530abd90733f7841f8c3ee33fc9439d5dbec941b91644290613ef2fe93/larch-6.0.41.tar.gz", hash = "sha256:e481b1aec37ee3e9f7e83f1333b85d12bca71bba8abd2843bddf0dc92d0c7118", size = 2152956, upload-time = "2025-05-31T01:18:19.389Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/55/91/651748855bd1fccf2fccab59e7f6082f92944f383b3d5640bb54a4157a25/larch-6.0.41-py3-none-any.whl", hash = "sha256:51be8365cf083578d12582fe47d7f984d74c09b1998dae5770ae3a9b71d0746b", size = 1851748, upload-time = "2025-05-31T01:18:17.173Z" }, +] + +[[package]] +name = "latexcodec" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/98/e7/ed339caf3662976949e4fdbfdf4a6db818b8d2aa1cf2b5f73af89e936bba/latexcodec-3.0.0.tar.gz", hash = "sha256:917dc5fe242762cc19d963e6548b42d63a118028cdd3361d62397e3b638b6bc5", size = 31023, upload-time = "2024-03-06T14:51:39.283Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b0/bf/ea8887e9f31a8f93ca306699d11909c6140151393a4216f0d9f85a004077/latexcodec-3.0.0-py3-none-any.whl", hash = "sha256:6f3477ad5e61a0a99bd31a6a370c34e88733a6bad9c921a3ffcfacada12f41a7", size = 18150, upload-time = "2024-03-06T14:51:37.872Z" }, +] + +[[package]] +name = "linkify-it-py" +version = "2.0.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "uc-micro-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2a/ae/bb56c6828e4797ba5a4821eec7c43b8bf40f69cda4d4f5f8c8a2810ec96a/linkify-it-py-2.0.3.tar.gz", hash = "sha256:68cda27e162e9215c17d786649d1da0021a451bdc436ef9e0fa0ba5234b9b048", size = 27946, upload-time = "2024-02-04T14:48:04.179Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/1e/b832de447dee8b582cac175871d2f6c3d5077cc56d5575cadba1fd1cccfa/linkify_it_py-2.0.3-py3-none-any.whl", hash = "sha256:6bcbc417b0ac14323382aef5c5192c0075bf8a9d6b41820a2b66371eac6b6d79", size = 19820, upload-time = "2024-02-04T14:48:02.496Z" }, +] + +[[package]] +name = "llvmlite" +version = "0.44.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/89/6a/95a3d3610d5c75293d5dbbb2a76480d5d4eeba641557b69fe90af6c5b84e/llvmlite-0.44.0.tar.gz", hash = "sha256:07667d66a5d150abed9157ab6c0b9393c9356f229784a4385c02f99e94fc94d4", size = 171880, upload-time = "2025-01-20T11:14:41.342Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/75/d4863ddfd8ab5f6e70f4504cf8cc37f4e986ec6910f4ef8502bb7d3c1c71/llvmlite-0.44.0-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:9fbadbfba8422123bab5535b293da1cf72f9f478a65645ecd73e781f962ca614", size = 28132306, upload-time = "2025-01-20T11:12:18.634Z" }, + { url = "https://files.pythonhosted.org/packages/37/d9/6e8943e1515d2f1003e8278819ec03e4e653e2eeb71e4d00de6cfe59424e/llvmlite-0.44.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cccf8eb28f24840f2689fb1a45f9c0f7e582dd24e088dcf96e424834af11f791", size = 26201096, upload-time = "2025-01-20T11:12:24.544Z" }, + { url = "https://files.pythonhosted.org/packages/aa/46/8ffbc114def88cc698906bf5acab54ca9fdf9214fe04aed0e71731fb3688/llvmlite-0.44.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7202b678cdf904823c764ee0fe2dfe38a76981f4c1e51715b4cb5abb6cf1d9e8", size = 42361859, upload-time = "2025-01-20T11:12:31.839Z" }, + { url = "https://files.pythonhosted.org/packages/30/1c/9366b29ab050a726af13ebaae8d0dff00c3c58562261c79c635ad4f5eb71/llvmlite-0.44.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:40526fb5e313d7b96bda4cbb2c85cd5374e04d80732dd36a282d72a560bb6408", size = 41184199, upload-time = "2025-01-20T11:12:40.049Z" }, + { url = "https://files.pythonhosted.org/packages/69/07/35e7c594b021ecb1938540f5bce543ddd8713cff97f71d81f021221edc1b/llvmlite-0.44.0-cp310-cp310-win_amd64.whl", hash = "sha256:41e3839150db4330e1b2716c0be3b5c4672525b4c9005e17c7597f835f351ce2", size = 30332381, upload-time = "2025-01-20T11:12:47.054Z" }, + { url = "https://files.pythonhosted.org/packages/b5/e2/86b245397052386595ad726f9742e5223d7aea999b18c518a50e96c3aca4/llvmlite-0.44.0-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:eed7d5f29136bda63b6d7804c279e2b72e08c952b7c5df61f45db408e0ee52f3", size = 28132305, upload-time = "2025-01-20T11:12:53.936Z" }, + { url = "https://files.pythonhosted.org/packages/ff/ec/506902dc6870249fbe2466d9cf66d531265d0f3a1157213c8f986250c033/llvmlite-0.44.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ace564d9fa44bb91eb6e6d8e7754977783c68e90a471ea7ce913bff30bd62427", size = 26201090, upload-time = "2025-01-20T11:12:59.847Z" }, + { url = "https://files.pythonhosted.org/packages/99/fe/d030f1849ebb1f394bb3f7adad5e729b634fb100515594aca25c354ffc62/llvmlite-0.44.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c5d22c3bfc842668168a786af4205ec8e3ad29fb1bc03fd11fd48460d0df64c1", size = 42361858, upload-time = "2025-01-20T11:13:07.623Z" }, + { url = "https://files.pythonhosted.org/packages/d7/7a/ce6174664b9077fc673d172e4c888cb0b128e707e306bc33fff8c2035f0d/llvmlite-0.44.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f01a394e9c9b7b1d4e63c327b096d10f6f0ed149ef53d38a09b3749dcf8c9610", size = 41184200, upload-time = "2025-01-20T11:13:20.058Z" }, + { url = "https://files.pythonhosted.org/packages/5f/c6/258801143975a6d09a373f2641237992496e15567b907a4d401839d671b8/llvmlite-0.44.0-cp311-cp311-win_amd64.whl", hash = "sha256:d8489634d43c20cd0ad71330dde1d5bc7b9966937a263ff1ec1cebb90dc50955", size = 30331193, upload-time = "2025-01-20T11:13:26.976Z" }, + { url = "https://files.pythonhosted.org/packages/15/86/e3c3195b92e6e492458f16d233e58a1a812aa2bfbef9bdd0fbafcec85c60/llvmlite-0.44.0-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:1d671a56acf725bf1b531d5ef76b86660a5ab8ef19bb6a46064a705c6ca80aad", size = 28132297, upload-time = "2025-01-20T11:13:32.57Z" }, + { url = "https://files.pythonhosted.org/packages/d6/53/373b6b8be67b9221d12b24125fd0ec56b1078b660eeae266ec388a6ac9a0/llvmlite-0.44.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5f79a728e0435493611c9f405168682bb75ffd1fbe6fc360733b850c80a026db", size = 26201105, upload-time = "2025-01-20T11:13:38.744Z" }, + { url = "https://files.pythonhosted.org/packages/cb/da/8341fd3056419441286c8e26bf436923021005ece0bff5f41906476ae514/llvmlite-0.44.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0143a5ef336da14deaa8ec26c5449ad5b6a2b564df82fcef4be040b9cacfea9", size = 42361901, upload-time = "2025-01-20T11:13:46.711Z" }, + { url = "https://files.pythonhosted.org/packages/53/ad/d79349dc07b8a395a99153d7ce8b01d6fcdc9f8231355a5df55ded649b61/llvmlite-0.44.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d752f89e31b66db6f8da06df8b39f9b91e78c5feea1bf9e8c1fba1d1c24c065d", size = 41184247, upload-time = "2025-01-20T11:13:56.159Z" }, + { url = "https://files.pythonhosted.org/packages/e2/3b/a9a17366af80127bd09decbe2a54d8974b6d8b274b39bf47fbaedeec6307/llvmlite-0.44.0-cp312-cp312-win_amd64.whl", hash = "sha256:eae7e2d4ca8f88f89d315b48c6b741dcb925d6a1042da694aa16ab3dd4cbd3a1", size = 30332380, upload-time = "2025-01-20T11:14:02.442Z" }, + { url = "https://files.pythonhosted.org/packages/89/24/4c0ca705a717514c2092b18476e7a12c74d34d875e05e4d742618ebbf449/llvmlite-0.44.0-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:319bddd44e5f71ae2689859b7203080716448a3cd1128fb144fe5c055219d516", size = 28132306, upload-time = "2025-01-20T11:14:09.035Z" }, + { url = "https://files.pythonhosted.org/packages/01/cf/1dd5a60ba6aee7122ab9243fd614abcf22f36b0437cbbe1ccf1e3391461c/llvmlite-0.44.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9c58867118bad04a0bb22a2e0068c693719658105e40009ffe95c7000fcde88e", size = 26201090, upload-time = "2025-01-20T11:14:15.401Z" }, + { url = "https://files.pythonhosted.org/packages/d2/1b/656f5a357de7135a3777bd735cc7c9b8f23b4d37465505bd0eaf4be9befe/llvmlite-0.44.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46224058b13c96af1365290bdfebe9a6264ae62fb79b2b55693deed11657a8bf", size = 42361904, upload-time = "2025-01-20T11:14:22.949Z" }, + { url = "https://files.pythonhosted.org/packages/d8/e1/12c5f20cb9168fb3464a34310411d5ad86e4163c8ff2d14a2b57e5cc6bac/llvmlite-0.44.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:aa0097052c32bf721a4efc03bd109d335dfa57d9bffb3d4c24cc680711b8b4fc", size = 41184245, upload-time = "2025-01-20T11:14:31.731Z" }, + { url = "https://files.pythonhosted.org/packages/d0/81/e66fc86539293282fd9cb7c9417438e897f369e79ffb62e1ae5e5154d4dd/llvmlite-0.44.0-cp313-cp313-win_amd64.whl", hash = "sha256:2fb7c4f2fb86cbae6dca3db9ab203eeea0e22d73b99bc2341cdf9de93612e930", size = 30331193, upload-time = "2025-01-20T11:14:38.578Z" }, +] + +[[package]] +name = "locket" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2f/83/97b29fe05cb6ae28d2dbd30b81e2e402a3eed5f460c26e9eaa5895ceacf5/locket-1.0.0.tar.gz", hash = "sha256:5c0d4c052a8bbbf750e056a8e65ccd309086f4f0f18a2eac306a8dfa4112a632", size = 4350, upload-time = "2022-04-20T22:04:44.312Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/db/bc/83e112abc66cd466c6b83f99118035867cecd41802f8d044638aa78a106e/locket-1.0.0-py2.py3-none-any.whl", hash = "sha256:b6c819a722f7b6bd955b80781788e4a66a55628b858d347536b7e81325a3a5e3", size = 4398, upload-time = "2022-04-20T22:04:42.23Z" }, +] + +[[package]] +name = "markdown-it-py" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mdurl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e4/c0/59bd6d0571986f72899288a95d9d6178d0eebd70b6650f1bb3f0da90f8f7/markdown-it-py-2.2.0.tar.gz", hash = "sha256:7c9a5e412688bc771c67432cbfebcdd686c93ce6484913dccf06cb5a0bea35a1", size = 67120, upload-time = "2023-02-22T05:54:30.899Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bf/25/2d88e8feee8e055d015343f9b86e370a1ccbec546f2865c98397aaef24af/markdown_it_py-2.2.0-py3-none-any.whl", hash = "sha256:5a35f8d1870171d9acc47b99612dc146129b631baf04970128b568f190d0cc30", size = 84466, upload-time = "2023-02-22T05:54:29.508Z" }, +] + +[[package]] +name = "markupsafe" +version = "3.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537, upload-time = "2024-10-18T15:21:54.129Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/90/d08277ce111dd22f77149fd1a5d4653eeb3b3eaacbdfcbae5afb2600eebd/MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8", size = 14357, upload-time = "2024-10-18T15:20:51.44Z" }, + { url = "https://files.pythonhosted.org/packages/04/e1/6e2194baeae0bca1fae6629dc0cbbb968d4d941469cbab11a3872edff374/MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158", size = 12393, upload-time = "2024-10-18T15:20:52.426Z" }, + { url = "https://files.pythonhosted.org/packages/1d/69/35fa85a8ece0a437493dc61ce0bb6d459dcba482c34197e3efc829aa357f/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579", size = 21732, upload-time = "2024-10-18T15:20:53.578Z" }, + { url = "https://files.pythonhosted.org/packages/22/35/137da042dfb4720b638d2937c38a9c2df83fe32d20e8c8f3185dbfef05f7/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d", size = 20866, upload-time = "2024-10-18T15:20:55.06Z" }, + { url = "https://files.pythonhosted.org/packages/29/28/6d029a903727a1b62edb51863232152fd335d602def598dade38996887f0/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb", size = 20964, upload-time = "2024-10-18T15:20:55.906Z" }, + { url = "https://files.pythonhosted.org/packages/cc/cd/07438f95f83e8bc028279909d9c9bd39e24149b0d60053a97b2bc4f8aa51/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b", size = 21977, upload-time = "2024-10-18T15:20:57.189Z" }, + { url = "https://files.pythonhosted.org/packages/29/01/84b57395b4cc062f9c4c55ce0df7d3108ca32397299d9df00fedd9117d3d/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c", size = 21366, upload-time = "2024-10-18T15:20:58.235Z" }, + { url = "https://files.pythonhosted.org/packages/bd/6e/61ebf08d8940553afff20d1fb1ba7294b6f8d279df9fd0c0db911b4bbcfd/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171", size = 21091, upload-time = "2024-10-18T15:20:59.235Z" }, + { url = "https://files.pythonhosted.org/packages/11/23/ffbf53694e8c94ebd1e7e491de185124277964344733c45481f32ede2499/MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50", size = 15065, upload-time = "2024-10-18T15:21:00.307Z" }, + { url = "https://files.pythonhosted.org/packages/44/06/e7175d06dd6e9172d4a69a72592cb3f7a996a9c396eee29082826449bbc3/MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a", size = 15514, upload-time = "2024-10-18T15:21:01.122Z" }, + { url = "https://files.pythonhosted.org/packages/6b/28/bbf83e3f76936960b850435576dd5e67034e200469571be53f69174a2dfd/MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d", size = 14353, upload-time = "2024-10-18T15:21:02.187Z" }, + { url = "https://files.pythonhosted.org/packages/6c/30/316d194b093cde57d448a4c3209f22e3046c5bb2fb0820b118292b334be7/MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93", size = 12392, upload-time = "2024-10-18T15:21:02.941Z" }, + { url = "https://files.pythonhosted.org/packages/f2/96/9cdafba8445d3a53cae530aaf83c38ec64c4d5427d975c974084af5bc5d2/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832", size = 23984, upload-time = "2024-10-18T15:21:03.953Z" }, + { url = "https://files.pythonhosted.org/packages/f1/a4/aefb044a2cd8d7334c8a47d3fb2c9f328ac48cb349468cc31c20b539305f/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84", size = 23120, upload-time = "2024-10-18T15:21:06.495Z" }, + { url = "https://files.pythonhosted.org/packages/8d/21/5e4851379f88f3fad1de30361db501300d4f07bcad047d3cb0449fc51f8c/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca", size = 23032, upload-time = "2024-10-18T15:21:07.295Z" }, + { url = "https://files.pythonhosted.org/packages/00/7b/e92c64e079b2d0d7ddf69899c98842f3f9a60a1ae72657c89ce2655c999d/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798", size = 24057, upload-time = "2024-10-18T15:21:08.073Z" }, + { url = "https://files.pythonhosted.org/packages/f9/ac/46f960ca323037caa0a10662ef97d0a4728e890334fc156b9f9e52bcc4ca/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e", size = 23359, upload-time = "2024-10-18T15:21:09.318Z" }, + { url = "https://files.pythonhosted.org/packages/69/84/83439e16197337b8b14b6a5b9c2105fff81d42c2a7c5b58ac7b62ee2c3b1/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4", size = 23306, upload-time = "2024-10-18T15:21:10.185Z" }, + { url = "https://files.pythonhosted.org/packages/9a/34/a15aa69f01e2181ed8d2b685c0d2f6655d5cca2c4db0ddea775e631918cd/MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d", size = 15094, upload-time = "2024-10-18T15:21:11.005Z" }, + { url = "https://files.pythonhosted.org/packages/da/b8/3a3bd761922d416f3dc5d00bfbed11f66b1ab89a0c2b6e887240a30b0f6b/MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b", size = 15521, upload-time = "2024-10-18T15:21:12.911Z" }, + { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274, upload-time = "2024-10-18T15:21:13.777Z" }, + { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348, upload-time = "2024-10-18T15:21:14.822Z" }, + { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149, upload-time = "2024-10-18T15:21:15.642Z" }, + { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118, upload-time = "2024-10-18T15:21:17.133Z" }, + { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993, upload-time = "2024-10-18T15:21:18.064Z" }, + { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178, upload-time = "2024-10-18T15:21:18.859Z" }, + { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319, upload-time = "2024-10-18T15:21:19.671Z" }, + { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352, upload-time = "2024-10-18T15:21:20.971Z" }, + { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097, upload-time = "2024-10-18T15:21:22.646Z" }, + { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601, upload-time = "2024-10-18T15:21:23.499Z" }, + { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274, upload-time = "2024-10-18T15:21:24.577Z" }, + { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352, upload-time = "2024-10-18T15:21:25.382Z" }, + { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122, upload-time = "2024-10-18T15:21:26.199Z" }, + { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085, upload-time = "2024-10-18T15:21:27.029Z" }, + { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978, upload-time = "2024-10-18T15:21:27.846Z" }, + { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208, upload-time = "2024-10-18T15:21:28.744Z" }, + { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357, upload-time = "2024-10-18T15:21:29.545Z" }, + { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344, upload-time = "2024-10-18T15:21:30.366Z" }, + { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101, upload-time = "2024-10-18T15:21:31.207Z" }, + { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603, upload-time = "2024-10-18T15:21:32.032Z" }, + { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510, upload-time = "2024-10-18T15:21:33.625Z" }, + { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486, upload-time = "2024-10-18T15:21:34.611Z" }, + { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480, upload-time = "2024-10-18T15:21:35.398Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914, upload-time = "2024-10-18T15:21:36.231Z" }, + { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796, upload-time = "2024-10-18T15:21:37.073Z" }, + { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473, upload-time = "2024-10-18T15:21:37.932Z" }, + { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114, upload-time = "2024-10-18T15:21:39.799Z" }, + { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098, upload-time = "2024-10-18T15:21:40.813Z" }, + { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208, upload-time = "2024-10-18T15:21:41.814Z" }, + { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739, upload-time = "2024-10-18T15:21:42.784Z" }, +] + +[[package]] +name = "matplotlib" +version = "3.10.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "contourpy" }, + { name = "cycler" }, + { name = "fonttools" }, + { name = "kiwisolver" }, + { name = "numpy" }, + { name = "packaging" }, + { name = "pillow" }, + { name = "pyparsing" }, + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/26/91/d49359a21893183ed2a5b6c76bec40e0b1dcbf8ca148f864d134897cfc75/matplotlib-3.10.3.tar.gz", hash = "sha256:2f82d2c5bb7ae93aaaa4cd42aca65d76ce6376f83304fa3a630b569aca274df0", size = 34799811, upload-time = "2025-05-08T19:10:54.39Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d0/ea/2bba25d289d389c7451f331ecd593944b3705f06ddf593fa7be75037d308/matplotlib-3.10.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:213fadd6348d106ca7db99e113f1bea1e65e383c3ba76e8556ba4a3054b65ae7", size = 8167862, upload-time = "2025-05-08T19:09:39.563Z" }, + { url = "https://files.pythonhosted.org/packages/41/81/cc70b5138c926604e8c9ed810ed4c79e8116ba72e02230852f5c12c87ba2/matplotlib-3.10.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d3bec61cb8221f0ca6313889308326e7bb303d0d302c5cc9e523b2f2e6c73deb", size = 8042149, upload-time = "2025-05-08T19:09:42.413Z" }, + { url = "https://files.pythonhosted.org/packages/4a/9a/0ff45b6bfa42bb16de597e6058edf2361c298ad5ef93b327728145161bbf/matplotlib-3.10.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c21ae75651c0231b3ba014b6d5e08fb969c40cdb5a011e33e99ed0c9ea86ecb", size = 8453719, upload-time = "2025-05-08T19:09:44.901Z" }, + { url = "https://files.pythonhosted.org/packages/85/c7/1866e972fed6d71ef136efbc980d4d1854ab7ef1ea8152bbd995ca231c81/matplotlib-3.10.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a49e39755580b08e30e3620efc659330eac5d6534ab7eae50fa5e31f53ee4e30", size = 8590801, upload-time = "2025-05-08T19:09:47.404Z" }, + { url = "https://files.pythonhosted.org/packages/5d/b9/748f6626d534ab7e255bdc39dc22634d337cf3ce200f261b5d65742044a1/matplotlib-3.10.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cf4636203e1190871d3a73664dea03d26fb019b66692cbfd642faafdad6208e8", size = 9402111, upload-time = "2025-05-08T19:09:49.474Z" }, + { url = "https://files.pythonhosted.org/packages/1f/78/8bf07bd8fb67ea5665a6af188e70b57fcb2ab67057daa06b85a08e59160a/matplotlib-3.10.3-cp310-cp310-win_amd64.whl", hash = "sha256:fd5641a9bb9d55f4dd2afe897a53b537c834b9012684c8444cc105895c8c16fd", size = 8057213, upload-time = "2025-05-08T19:09:51.489Z" }, + { url = "https://files.pythonhosted.org/packages/f5/bd/af9f655456f60fe1d575f54fb14704ee299b16e999704817a7645dfce6b0/matplotlib-3.10.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:0ef061f74cd488586f552d0c336b2f078d43bc00dc473d2c3e7bfee2272f3fa8", size = 8178873, upload-time = "2025-05-08T19:09:53.857Z" }, + { url = "https://files.pythonhosted.org/packages/c2/86/e1c86690610661cd716eda5f9d0b35eaf606ae6c9b6736687cfc8f2d0cd8/matplotlib-3.10.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d96985d14dc5f4a736bbea4b9de9afaa735f8a0fc2ca75be2fa9e96b2097369d", size = 8052205, upload-time = "2025-05-08T19:09:55.684Z" }, + { url = "https://files.pythonhosted.org/packages/54/51/a9f8e49af3883dacddb2da1af5fca1f7468677f1188936452dd9aaaeb9ed/matplotlib-3.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c5f0283da91e9522bdba4d6583ed9d5521566f63729ffb68334f86d0bb98049", size = 8465823, upload-time = "2025-05-08T19:09:57.442Z" }, + { url = "https://files.pythonhosted.org/packages/e7/e3/c82963a3b86d6e6d5874cbeaa390166458a7f1961bab9feb14d3d1a10f02/matplotlib-3.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdfa07c0ec58035242bc8b2c8aae37037c9a886370eef6850703d7583e19964b", size = 8606464, upload-time = "2025-05-08T19:09:59.471Z" }, + { url = "https://files.pythonhosted.org/packages/0e/34/24da1027e7fcdd9e82da3194c470143c551852757a4b473a09a012f5b945/matplotlib-3.10.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c0b9849a17bce080a16ebcb80a7b714b5677d0ec32161a2cc0a8e5a6030ae220", size = 9413103, upload-time = "2025-05-08T19:10:03.208Z" }, + { url = "https://files.pythonhosted.org/packages/a6/da/948a017c3ea13fd4a97afad5fdebe2f5bbc4d28c0654510ce6fd6b06b7bd/matplotlib-3.10.3-cp311-cp311-win_amd64.whl", hash = "sha256:eef6ed6c03717083bc6d69c2d7ee8624205c29a8e6ea5a31cd3492ecdbaee1e1", size = 8065492, upload-time = "2025-05-08T19:10:05.271Z" }, + { url = "https://files.pythonhosted.org/packages/eb/43/6b80eb47d1071f234ef0c96ca370c2ca621f91c12045f1401b5c9b28a639/matplotlib-3.10.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0ab1affc11d1f495ab9e6362b8174a25afc19c081ba5b0775ef00533a4236eea", size = 8179689, upload-time = "2025-05-08T19:10:07.602Z" }, + { url = "https://files.pythonhosted.org/packages/0f/70/d61a591958325c357204870b5e7b164f93f2a8cca1dc6ce940f563909a13/matplotlib-3.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2a818d8bdcafa7ed2eed74487fdb071c09c1ae24152d403952adad11fa3c65b4", size = 8050466, upload-time = "2025-05-08T19:10:09.383Z" }, + { url = "https://files.pythonhosted.org/packages/e7/75/70c9d2306203148cc7902a961240c5927dd8728afedf35e6a77e105a2985/matplotlib-3.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748ebc3470c253e770b17d8b0557f0aa85cf8c63fd52f1a61af5b27ec0b7ffee", size = 8456252, upload-time = "2025-05-08T19:10:11.958Z" }, + { url = "https://files.pythonhosted.org/packages/c4/91/ba0ae1ff4b3f30972ad01cd4a8029e70a0ec3b8ea5be04764b128b66f763/matplotlib-3.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed70453fd99733293ace1aec568255bc51c6361cb0da94fa5ebf0649fdb2150a", size = 8601321, upload-time = "2025-05-08T19:10:14.47Z" }, + { url = "https://files.pythonhosted.org/packages/d2/88/d636041eb54a84b889e11872d91f7cbf036b3b0e194a70fa064eb8b04f7a/matplotlib-3.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dbed9917b44070e55640bd13419de83b4c918e52d97561544814ba463811cbc7", size = 9406972, upload-time = "2025-05-08T19:10:16.569Z" }, + { url = "https://files.pythonhosted.org/packages/b1/79/0d1c165eac44405a86478082e225fce87874f7198300bbebc55faaf6d28d/matplotlib-3.10.3-cp312-cp312-win_amd64.whl", hash = "sha256:cf37d8c6ef1a48829443e8ba5227b44236d7fcaf7647caa3178a4ff9f7a5be05", size = 8067954, upload-time = "2025-05-08T19:10:18.663Z" }, + { url = "https://files.pythonhosted.org/packages/3b/c1/23cfb566a74c696a3b338d8955c549900d18fe2b898b6e94d682ca21e7c2/matplotlib-3.10.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9f2efccc8dcf2b86fc4ee849eea5dcaecedd0773b30f47980dc0cbeabf26ec84", size = 8180318, upload-time = "2025-05-08T19:10:20.426Z" }, + { url = "https://files.pythonhosted.org/packages/6c/0c/02f1c3b66b30da9ee343c343acbb6251bef5b01d34fad732446eaadcd108/matplotlib-3.10.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3ddbba06a6c126e3301c3d272a99dcbe7f6c24c14024e80307ff03791a5f294e", size = 8051132, upload-time = "2025-05-08T19:10:22.569Z" }, + { url = "https://files.pythonhosted.org/packages/b4/ab/8db1a5ac9b3a7352fb914133001dae889f9fcecb3146541be46bed41339c/matplotlib-3.10.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748302b33ae9326995b238f606e9ed840bf5886ebafcb233775d946aa8107a15", size = 8457633, upload-time = "2025-05-08T19:10:24.749Z" }, + { url = "https://files.pythonhosted.org/packages/f5/64/41c4367bcaecbc03ef0d2a3ecee58a7065d0a36ae1aa817fe573a2da66d4/matplotlib-3.10.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a80fcccbef63302c0efd78042ea3c2436104c5b1a4d3ae20f864593696364ac7", size = 8601031, upload-time = "2025-05-08T19:10:27.03Z" }, + { url = "https://files.pythonhosted.org/packages/12/6f/6cc79e9e5ab89d13ed64da28898e40fe5b105a9ab9c98f83abd24e46d7d7/matplotlib-3.10.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:55e46cbfe1f8586adb34f7587c3e4f7dedc59d5226719faf6cb54fc24f2fd52d", size = 9406988, upload-time = "2025-05-08T19:10:29.056Z" }, + { url = "https://files.pythonhosted.org/packages/b1/0f/eed564407bd4d935ffabf561ed31099ed609e19287409a27b6d336848653/matplotlib-3.10.3-cp313-cp313-win_amd64.whl", hash = "sha256:151d89cb8d33cb23345cd12490c76fd5d18a56581a16d950b48c6ff19bb2ab93", size = 8068034, upload-time = "2025-05-08T19:10:31.221Z" }, + { url = "https://files.pythonhosted.org/packages/3e/e5/2f14791ff69b12b09e9975e1d116d9578ac684460860ce542c2588cb7a1c/matplotlib-3.10.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:c26dd9834e74d164d06433dc7be5d75a1e9890b926b3e57e74fa446e1a62c3e2", size = 8218223, upload-time = "2025-05-08T19:10:33.114Z" }, + { url = "https://files.pythonhosted.org/packages/5c/08/30a94afd828b6e02d0a52cae4a29d6e9ccfcf4c8b56cc28b021d3588873e/matplotlib-3.10.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:24853dad5b8c84c8c2390fc31ce4858b6df504156893292ce8092d190ef8151d", size = 8094985, upload-time = "2025-05-08T19:10:35.337Z" }, + { url = "https://files.pythonhosted.org/packages/89/44/f3bc6b53066c889d7a1a3ea8094c13af6a667c5ca6220ec60ecceec2dabe/matplotlib-3.10.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68f7878214d369d7d4215e2a9075fef743be38fa401d32e6020bab2dfabaa566", size = 8483109, upload-time = "2025-05-08T19:10:37.611Z" }, + { url = "https://files.pythonhosted.org/packages/ba/c7/473bc559beec08ebee9f86ca77a844b65747e1a6c2691e8c92e40b9f42a8/matplotlib-3.10.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6929fc618cb6db9cb75086f73b3219bbb25920cb24cee2ea7a12b04971a4158", size = 8618082, upload-time = "2025-05-08T19:10:39.892Z" }, + { url = "https://files.pythonhosted.org/packages/d8/e9/6ce8edd264c8819e37bbed8172e0ccdc7107fe86999b76ab5752276357a4/matplotlib-3.10.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6c7818292a5cc372a2dc4c795e5c356942eb8350b98ef913f7fda51fe175ac5d", size = 9413699, upload-time = "2025-05-08T19:10:42.376Z" }, + { url = "https://files.pythonhosted.org/packages/1b/92/9a45c91089c3cf690b5badd4be81e392ff086ccca8a1d4e3a08463d8a966/matplotlib-3.10.3-cp313-cp313t-win_amd64.whl", hash = "sha256:4f23ffe95c5667ef8a2b56eea9b53db7f43910fa4a2d5472ae0f72b64deab4d5", size = 8139044, upload-time = "2025-05-08T19:10:44.551Z" }, + { url = "https://files.pythonhosted.org/packages/3d/d1/f54d43e95384b312ffa4a74a4326c722f3b8187aaaa12e9a84cdf3037131/matplotlib-3.10.3-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:86ab63d66bbc83fdb6733471d3bff40897c1e9921cba112accd748eee4bce5e4", size = 8162896, upload-time = "2025-05-08T19:10:46.432Z" }, + { url = "https://files.pythonhosted.org/packages/24/a4/fbfc00c2346177c95b353dcf9b5a004106abe8730a62cb6f27e79df0a698/matplotlib-3.10.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:a48f9c08bf7444b5d2391a83e75edb464ccda3c380384b36532a0962593a1751", size = 8039702, upload-time = "2025-05-08T19:10:49.634Z" }, + { url = "https://files.pythonhosted.org/packages/6a/b9/59e120d24a2ec5fc2d30646adb2efb4621aab3c6d83d66fb2a7a182db032/matplotlib-3.10.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb73d8aa75a237457988f9765e4dfe1c0d2453c5ca4eabc897d4309672c8e014", size = 8594298, upload-time = "2025-05-08T19:10:51.738Z" }, +] + +[[package]] +name = "matplotlib-inline" +version = "0.1.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/99/5b/a36a337438a14116b16480db471ad061c36c3694df7c2084a0da7ba538b7/matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90", size = 8159, upload-time = "2024-04-15T13:44:44.803Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899, upload-time = "2024-04-15T13:44:43.265Z" }, +] + +[[package]] +name = "mdit-py-plugins" +version = "0.3.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/49/e7/cc2720da8a32724b36d04c6dba5644154cdf883a1482b3bbb81959a642ed/mdit-py-plugins-0.3.5.tar.gz", hash = "sha256:eee0adc7195e5827e17e02d2a258a2ba159944a0748f59c5099a4a27f78fcf6a", size = 39871, upload-time = "2023-03-02T17:42:50.654Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/4c/a9b222f045f98775034d243198212cbea36d3524c3ee1e8ab8c0346d6953/mdit_py_plugins-0.3.5-py3-none-any.whl", hash = "sha256:ca9a0714ea59a24b2b044a1831f48d817dd0c817e84339f20e7889f392d77c4e", size = 52087, upload-time = "2023-03-02T17:42:48.841Z" }, +] + +[[package]] +name = "mdurl" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload-time = "2022-08-14T12:40:10.846Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, +] + +[[package]] +name = "mistune" +version = "3.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c4/79/bda47f7dd7c3c55770478d6d02c9960c430b0cf1773b72366ff89126ea31/mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0", size = 94347, upload-time = "2025-03-19T14:27:24.955Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/01/4d/23c4e4f09da849e127e9f123241946c23c1e30f45a88366879e064211815/mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9", size = 53410, upload-time = "2025-03-19T14:27:23.451Z" }, +] + +[[package]] +name = "msgpack" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cb/d0/7555686ae7ff5731205df1012ede15dd9d927f6227ea151e901c7406af4f/msgpack-1.1.0.tar.gz", hash = "sha256:dd432ccc2c72b914e4cb77afce64aab761c1137cc698be3984eee260bcb2896e", size = 167260, upload-time = "2024-09-10T04:25:52.197Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4b/f9/a892a6038c861fa849b11a2bb0502c07bc698ab6ea53359e5771397d883b/msgpack-1.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7ad442d527a7e358a469faf43fda45aaf4ac3249c8310a82f0ccff9164e5dccd", size = 150428, upload-time = "2024-09-10T04:25:43.089Z" }, + { url = "https://files.pythonhosted.org/packages/df/7a/d174cc6a3b6bb85556e6a046d3193294a92f9a8e583cdbd46dc8a1d7e7f4/msgpack-1.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:74bed8f63f8f14d75eec75cf3d04ad581da6b914001b474a5d3cd3372c8cc27d", size = 84131, upload-time = "2024-09-10T04:25:30.22Z" }, + { url = "https://files.pythonhosted.org/packages/08/52/bf4fbf72f897a23a56b822997a72c16de07d8d56d7bf273242f884055682/msgpack-1.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:914571a2a5b4e7606997e169f64ce53a8b1e06f2cf2c3a7273aa106236d43dd5", size = 81215, upload-time = "2024-09-10T04:24:54.329Z" }, + { url = "https://files.pythonhosted.org/packages/02/95/dc0044b439b518236aaf012da4677c1b8183ce388411ad1b1e63c32d8979/msgpack-1.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c921af52214dcbb75e6bdf6a661b23c3e6417f00c603dd2070bccb5c3ef499f5", size = 371229, upload-time = "2024-09-10T04:25:50.907Z" }, + { url = "https://files.pythonhosted.org/packages/ff/75/09081792db60470bef19d9c2be89f024d366b1e1973c197bb59e6aabc647/msgpack-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8ce0b22b890be5d252de90d0e0d119f363012027cf256185fc3d474c44b1b9e", size = 378034, upload-time = "2024-09-10T04:25:22.097Z" }, + { url = "https://files.pythonhosted.org/packages/32/d3/c152e0c55fead87dd948d4b29879b0f14feeeec92ef1fd2ec21b107c3f49/msgpack-1.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:73322a6cc57fcee3c0c57c4463d828e9428275fb85a27aa2aa1a92fdc42afd7b", size = 363070, upload-time = "2024-09-10T04:24:43.957Z" }, + { url = "https://files.pythonhosted.org/packages/d9/2c/82e73506dd55f9e43ac8aa007c9dd088c6f0de2aa19e8f7330e6a65879fc/msgpack-1.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e1f3c3d21f7cf67bcf2da8e494d30a75e4cf60041d98b3f79875afb5b96f3a3f", size = 359863, upload-time = "2024-09-10T04:24:51.535Z" }, + { url = "https://files.pythonhosted.org/packages/cb/a0/3d093b248837094220e1edc9ec4337de3443b1cfeeb6e0896af8ccc4cc7a/msgpack-1.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:64fc9068d701233effd61b19efb1485587560b66fe57b3e50d29c5d78e7fef68", size = 368166, upload-time = "2024-09-10T04:24:19.907Z" }, + { url = "https://files.pythonhosted.org/packages/e4/13/7646f14f06838b406cf5a6ddbb7e8dc78b4996d891ab3b93c33d1ccc8678/msgpack-1.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:42f754515e0f683f9c79210a5d1cad631ec3d06cea5172214d2176a42e67e19b", size = 370105, upload-time = "2024-09-10T04:25:35.141Z" }, + { url = "https://files.pythonhosted.org/packages/67/fa/dbbd2443e4578e165192dabbc6a22c0812cda2649261b1264ff515f19f15/msgpack-1.1.0-cp310-cp310-win32.whl", hash = "sha256:3df7e6b05571b3814361e8464f9304c42d2196808e0119f55d0d3e62cd5ea044", size = 68513, upload-time = "2024-09-10T04:24:36.099Z" }, + { url = "https://files.pythonhosted.org/packages/24/ce/c2c8fbf0ded750cb63cbcbb61bc1f2dfd69e16dca30a8af8ba80ec182dcd/msgpack-1.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:685ec345eefc757a7c8af44a3032734a739f8c45d1b0ac45efc5d8977aa4720f", size = 74687, upload-time = "2024-09-10T04:24:23.394Z" }, + { url = "https://files.pythonhosted.org/packages/b7/5e/a4c7154ba65d93be91f2f1e55f90e76c5f91ccadc7efc4341e6f04c8647f/msgpack-1.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3d364a55082fb2a7416f6c63ae383fbd903adb5a6cf78c5b96cc6316dc1cedc7", size = 150803, upload-time = "2024-09-10T04:24:40.911Z" }, + { url = "https://files.pythonhosted.org/packages/60/c2/687684164698f1d51c41778c838d854965dd284a4b9d3a44beba9265c931/msgpack-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:79ec007767b9b56860e0372085f8504db5d06bd6a327a335449508bbee9648fa", size = 84343, upload-time = "2024-09-10T04:24:50.283Z" }, + { url = "https://files.pythonhosted.org/packages/42/ae/d3adea9bb4a1342763556078b5765e666f8fdf242e00f3f6657380920972/msgpack-1.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6ad622bf7756d5a497d5b6836e7fc3752e2dd6f4c648e24b1803f6048596f701", size = 81408, upload-time = "2024-09-10T04:25:12.774Z" }, + { url = "https://files.pythonhosted.org/packages/dc/17/6313325a6ff40ce9c3207293aee3ba50104aed6c2c1559d20d09e5c1ff54/msgpack-1.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e59bca908d9ca0de3dc8684f21ebf9a690fe47b6be93236eb40b99af28b6ea6", size = 396096, upload-time = "2024-09-10T04:24:37.245Z" }, + { url = "https://files.pythonhosted.org/packages/a8/a1/ad7b84b91ab5a324e707f4c9761633e357820b011a01e34ce658c1dda7cc/msgpack-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e1da8f11a3dd397f0a32c76165cf0c4eb95b31013a94f6ecc0b280c05c91b59", size = 403671, upload-time = "2024-09-10T04:25:10.201Z" }, + { url = "https://files.pythonhosted.org/packages/bb/0b/fd5b7c0b308bbf1831df0ca04ec76fe2f5bf6319833646b0a4bd5e9dc76d/msgpack-1.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:452aff037287acb1d70a804ffd022b21fa2bb7c46bee884dbc864cc9024128a0", size = 387414, upload-time = "2024-09-10T04:25:27.552Z" }, + { url = "https://files.pythonhosted.org/packages/f0/03/ff8233b7c6e9929a1f5da3c7860eccd847e2523ca2de0d8ef4878d354cfa/msgpack-1.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8da4bf6d54ceed70e8861f833f83ce0814a2b72102e890cbdfe4b34764cdd66e", size = 383759, upload-time = "2024-09-10T04:25:03.366Z" }, + { url = "https://files.pythonhosted.org/packages/1f/1b/eb82e1fed5a16dddd9bc75f0854b6e2fe86c0259c4353666d7fab37d39f4/msgpack-1.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:41c991beebf175faf352fb940bf2af9ad1fb77fd25f38d9142053914947cdbf6", size = 394405, upload-time = "2024-09-10T04:25:07.348Z" }, + { url = "https://files.pythonhosted.org/packages/90/2e/962c6004e373d54ecf33d695fb1402f99b51832631e37c49273cc564ffc5/msgpack-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a52a1f3a5af7ba1c9ace055b659189f6c669cf3657095b50f9602af3a3ba0fe5", size = 396041, upload-time = "2024-09-10T04:25:48.311Z" }, + { url = "https://files.pythonhosted.org/packages/f8/20/6e03342f629474414860c48aeffcc2f7f50ddaf351d95f20c3f1c67399a8/msgpack-1.1.0-cp311-cp311-win32.whl", hash = "sha256:58638690ebd0a06427c5fe1a227bb6b8b9fdc2bd07701bec13c2335c82131a88", size = 68538, upload-time = "2024-09-10T04:24:29.953Z" }, + { url = "https://files.pythonhosted.org/packages/aa/c4/5a582fc9a87991a3e6f6800e9bb2f3c82972912235eb9539954f3e9997c7/msgpack-1.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:fd2906780f25c8ed5d7b323379f6138524ba793428db5d0e9d226d3fa6aa1788", size = 74871, upload-time = "2024-09-10T04:25:44.823Z" }, + { url = "https://files.pythonhosted.org/packages/e1/d6/716b7ca1dbde63290d2973d22bbef1b5032ca634c3ff4384a958ec3f093a/msgpack-1.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d46cf9e3705ea9485687aa4001a76e44748b609d260af21c4ceea7f2212a501d", size = 152421, upload-time = "2024-09-10T04:25:49.63Z" }, + { url = "https://files.pythonhosted.org/packages/70/da/5312b067f6773429cec2f8f08b021c06af416bba340c912c2ec778539ed6/msgpack-1.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5dbad74103df937e1325cc4bfeaf57713be0b4f15e1c2da43ccdd836393e2ea2", size = 85277, upload-time = "2024-09-10T04:24:48.562Z" }, + { url = "https://files.pythonhosted.org/packages/28/51/da7f3ae4462e8bb98af0d5bdf2707f1b8c65a0d4f496e46b6afb06cbc286/msgpack-1.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:58dfc47f8b102da61e8949708b3eafc3504509a5728f8b4ddef84bd9e16ad420", size = 82222, upload-time = "2024-09-10T04:25:36.49Z" }, + { url = "https://files.pythonhosted.org/packages/33/af/dc95c4b2a49cff17ce47611ca9ba218198806cad7796c0b01d1e332c86bb/msgpack-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4676e5be1b472909b2ee6356ff425ebedf5142427842aa06b4dfd5117d1ca8a2", size = 392971, upload-time = "2024-09-10T04:24:58.129Z" }, + { url = "https://files.pythonhosted.org/packages/f1/54/65af8de681fa8255402c80eda2a501ba467921d5a7a028c9c22a2c2eedb5/msgpack-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17fb65dd0bec285907f68b15734a993ad3fc94332b5bb21b0435846228de1f39", size = 401403, upload-time = "2024-09-10T04:25:40.428Z" }, + { url = "https://files.pythonhosted.org/packages/97/8c/e333690777bd33919ab7024269dc3c41c76ef5137b211d776fbb404bfead/msgpack-1.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a51abd48c6d8ac89e0cfd4fe177c61481aca2d5e7ba42044fd218cfd8ea9899f", size = 385356, upload-time = "2024-09-10T04:25:31.406Z" }, + { url = "https://files.pythonhosted.org/packages/57/52/406795ba478dc1c890559dd4e89280fa86506608a28ccf3a72fbf45df9f5/msgpack-1.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2137773500afa5494a61b1208619e3871f75f27b03bcfca7b3a7023284140247", size = 383028, upload-time = "2024-09-10T04:25:17.08Z" }, + { url = "https://files.pythonhosted.org/packages/e7/69/053b6549bf90a3acadcd8232eae03e2fefc87f066a5b9fbb37e2e608859f/msgpack-1.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:398b713459fea610861c8a7b62a6fec1882759f308ae0795b5413ff6a160cf3c", size = 391100, upload-time = "2024-09-10T04:25:08.993Z" }, + { url = "https://files.pythonhosted.org/packages/23/f0/d4101d4da054f04274995ddc4086c2715d9b93111eb9ed49686c0f7ccc8a/msgpack-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:06f5fd2f6bb2a7914922d935d3b8bb4a7fff3a9a91cfce6d06c13bc42bec975b", size = 394254, upload-time = "2024-09-10T04:25:06.048Z" }, + { url = "https://files.pythonhosted.org/packages/1c/12/cf07458f35d0d775ff3a2dc5559fa2e1fcd06c46f1ef510e594ebefdca01/msgpack-1.1.0-cp312-cp312-win32.whl", hash = "sha256:ad33e8400e4ec17ba782f7b9cf868977d867ed784a1f5f2ab46e7ba53b6e1e1b", size = 69085, upload-time = "2024-09-10T04:25:01.494Z" }, + { url = "https://files.pythonhosted.org/packages/73/80/2708a4641f7d553a63bc934a3eb7214806b5b39d200133ca7f7afb0a53e8/msgpack-1.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:115a7af8ee9e8cddc10f87636767857e7e3717b7a2e97379dc2054712693e90f", size = 75347, upload-time = "2024-09-10T04:25:33.106Z" }, + { url = "https://files.pythonhosted.org/packages/c8/b0/380f5f639543a4ac413e969109978feb1f3c66e931068f91ab6ab0f8be00/msgpack-1.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:071603e2f0771c45ad9bc65719291c568d4edf120b44eb36324dcb02a13bfddf", size = 151142, upload-time = "2024-09-10T04:24:59.656Z" }, + { url = "https://files.pythonhosted.org/packages/c8/ee/be57e9702400a6cb2606883d55b05784fada898dfc7fd12608ab1fdb054e/msgpack-1.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0f92a83b84e7c0749e3f12821949d79485971f087604178026085f60ce109330", size = 84523, upload-time = "2024-09-10T04:25:37.924Z" }, + { url = "https://files.pythonhosted.org/packages/7e/3a/2919f63acca3c119565449681ad08a2f84b2171ddfcff1dba6959db2cceb/msgpack-1.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4a1964df7b81285d00a84da4e70cb1383f2e665e0f1f2a7027e683956d04b734", size = 81556, upload-time = "2024-09-10T04:24:28.296Z" }, + { url = "https://files.pythonhosted.org/packages/7c/43/a11113d9e5c1498c145a8925768ea2d5fce7cbab15c99cda655aa09947ed/msgpack-1.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59caf6a4ed0d164055ccff8fe31eddc0ebc07cf7326a2aaa0dbf7a4001cd823e", size = 392105, upload-time = "2024-09-10T04:25:20.153Z" }, + { url = "https://files.pythonhosted.org/packages/2d/7b/2c1d74ca6c94f70a1add74a8393a0138172207dc5de6fc6269483519d048/msgpack-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0907e1a7119b337971a689153665764adc34e89175f9a34793307d9def08e6ca", size = 399979, upload-time = "2024-09-10T04:25:41.75Z" }, + { url = "https://files.pythonhosted.org/packages/82/8c/cf64ae518c7b8efc763ca1f1348a96f0e37150061e777a8ea5430b413a74/msgpack-1.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65553c9b6da8166e819a6aa90ad15288599b340f91d18f60b2061f402b9a4915", size = 383816, upload-time = "2024-09-10T04:24:45.826Z" }, + { url = "https://files.pythonhosted.org/packages/69/86/a847ef7a0f5ef3fa94ae20f52a4cacf596a4e4a010197fbcc27744eb9a83/msgpack-1.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7a946a8992941fea80ed4beae6bff74ffd7ee129a90b4dd5cf9c476a30e9708d", size = 380973, upload-time = "2024-09-10T04:25:04.689Z" }, + { url = "https://files.pythonhosted.org/packages/aa/90/c74cf6e1126faa93185d3b830ee97246ecc4fe12cf9d2d31318ee4246994/msgpack-1.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4b51405e36e075193bc051315dbf29168d6141ae2500ba8cd80a522964e31434", size = 387435, upload-time = "2024-09-10T04:24:17.879Z" }, + { url = "https://files.pythonhosted.org/packages/7a/40/631c238f1f338eb09f4acb0f34ab5862c4e9d7eda11c1b685471a4c5ea37/msgpack-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b4c01941fd2ff87c2a934ee6055bda4ed353a7846b8d4f341c428109e9fcde8c", size = 399082, upload-time = "2024-09-10T04:25:18.398Z" }, + { url = "https://files.pythonhosted.org/packages/e9/1b/fa8a952be252a1555ed39f97c06778e3aeb9123aa4cccc0fd2acd0b4e315/msgpack-1.1.0-cp313-cp313-win32.whl", hash = "sha256:7c9a35ce2c2573bada929e0b7b3576de647b0defbd25f5139dcdaba0ae35a4cc", size = 69037, upload-time = "2024-09-10T04:24:52.798Z" }, + { url = "https://files.pythonhosted.org/packages/b6/bc/8bd826dd03e022153bfa1766dcdec4976d6c818865ed54223d71f07862b3/msgpack-1.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:bce7d9e614a04d0883af0b3d4d501171fbfca038f12c77fa838d9f198147a23f", size = 75140, upload-time = "2024-09-10T04:24:31.288Z" }, +] + +[[package]] +name = "multimethod" +version = "1.12" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ed/f3/930a6dc1d35b2ab65faffa2a75bbcc67f12d8227857188273783df4e5134/multimethod-1.12.tar.gz", hash = "sha256:8db8ef2a8d2a247e3570cc23317680892fdf903d84c8c1053667c8e8f7671a67", size = 17423, upload-time = "2024-07-04T16:10:08.179Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/98/cff14d53a2f2f67d7fe8a4e235a383ee71aba6a1da12aeea24b325d0c72a/multimethod-1.12-py3-none-any.whl", hash = "sha256:fd0c473c43558908d97cc06e4d68e8f69202f167db46f7b4e4058893e7dbdf60", size = 10646, upload-time = "2024-07-04T16:10:06.482Z" }, +] + +[[package]] +name = "mypy-extensions" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload-time = "2025-04-22T14:54:24.164Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload-time = "2025-04-22T14:54:22.983Z" }, +] + +[[package]] +name = "myst-nb" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "importlib-metadata" }, + { name = "ipykernel" }, + { name = "ipython", version = "8.37.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "ipython", version = "9.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "jupyter-cache" }, + { name = "myst-parser" }, + { name = "nbclient" }, + { name = "nbformat" }, + { name = "pyyaml" }, + { name = "sphinx" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ae/8f/71d983ed85b1aff17db25e447a9beb67b50a9116c7cff5cde26796d1ffd0/myst_nb-1.2.0.tar.gz", hash = "sha256:af459ec753b341952182b45b0a80b4776cebf80c9ee6aaca2a3f4027b440c9de", size = 79446, upload-time = "2025-02-07T18:27:02.176Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/98/fa9dee0caf4e1f2e895d047952bf84a64eb95102df14c82c20594c0afa5f/myst_nb-1.2.0-py3-none-any.whl", hash = "sha256:0e09909877848c0cf45e1aecee97481512efa29a0c4caa37870a03bba11c56c1", size = 80303, upload-time = "2025-02-07T18:27:00.088Z" }, +] + +[[package]] +name = "myst-parser" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "docutils" }, + { name = "jinja2" }, + { name = "markdown-it-py" }, + { name = "mdit-py-plugins" }, + { name = "pyyaml" }, + { name = "sphinx" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5f/69/fbddb50198c6b0901a981e72ae30f1b7769d2dfac88071f7df41c946d133/myst-parser-1.0.0.tar.gz", hash = "sha256:502845659313099542bd38a2ae62f01360e7dd4b1310f025dd014dfc0439cdae", size = 84224, upload-time = "2023-03-07T18:39:13.878Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1c/1f/1621ef434ac5da26c30d31fcca6d588e3383344902941713640ba717fa87/myst_parser-1.0.0-py3-none-any.whl", hash = "sha256:69fb40a586c6fa68995e6521ac0a525793935db7e724ca9bac1d33be51be9a4c", size = 77312, upload-time = "2023-03-07T18:39:12.472Z" }, +] + +[[package]] +name = "narwhals" +version = "1.42.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/7e/9484c2427453bd0024fd36cf7923de4367d749f0b216b9ca56b9dfc3c516/narwhals-1.42.0.tar.gz", hash = "sha256:a5e554782446d1197593312651352cd39b2025e995053d8e6bdfaa01a70a91d3", size = 490671, upload-time = "2025-06-09T09:20:27.794Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8d/0f/f9ae7c8c55f9078c852b13ea4a6e92e5f4d6d4c8fc0781ec2882957006bb/narwhals-1.42.0-py3-none-any.whl", hash = "sha256:ef6cedf7700dc22c09d17973b9ede11b53e25331e238b24ac73884a8c5e27c19", size = 359033, upload-time = "2025-06-09T09:20:25.668Z" }, +] + +[[package]] +name = "nbclient" +version = "0.6.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-client" }, + { name = "nbformat" }, + { name = "nest-asyncio" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/01/21/917a25fbc2b37ed37135be97efb4c98526008505451ffa841adcd7d11ed5/nbclient-0.6.8.tar.gz", hash = "sha256:268fde3457cafe1539e32eb1c6d796bbedb90b9e92bacd3e43d83413734bb0e8", size = 78917, upload-time = "2022-09-09T12:36:52.332Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/1d/de31c4139603b3f43147dca571de7d1928bd23d5c674865342bd457ec419/nbclient-0.6.8-py3-none-any.whl", hash = "sha256:7cce8b415888539180535953f80ea2385cdbb444944cdeb73ffac1556fdbc228", size = 71848, upload-time = "2022-09-09T12:36:50.326Z" }, +] + +[[package]] +name = "nbconvert" +version = "7.16.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "beautifulsoup4" }, + { name = "bleach", extra = ["css"] }, + { name = "defusedxml" }, + { name = "jinja2" }, + { name = "jupyter-core" }, + { name = "jupyterlab-pygments" }, + { name = "markupsafe" }, + { name = "mistune" }, + { name = "nbclient" }, + { name = "nbformat" }, + { name = "packaging" }, + { name = "pandocfilters" }, + { name = "pygments" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a3/59/f28e15fc47ffb73af68a8d9b47367a8630d76e97ae85ad18271b9db96fdf/nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582", size = 857715, upload-time = "2025-01-28T09:29:14.724Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b", size = 258525, upload-time = "2025-01-28T09:29:12.551Z" }, +] + +[[package]] +name = "nbformat" +version = "5.10.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fastjsonschema" }, + { name = "jsonschema" }, + { name = "jupyter-core" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6d/fd/91545e604bc3dad7dca9ed03284086039b294c6b3d75c0d2fa45f9e9caf3/nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a", size = 142749, upload-time = "2024-04-04T11:20:37.371Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b", size = 78454, upload-time = "2024-04-04T11:20:34.895Z" }, +] + +[[package]] +name = "nbmake" +version = "1.4.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ipykernel" }, + { name = "nbclient" }, + { name = "nbformat" }, + { name = "pygments" }, + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e5/b7/69206084d99046c5f9153dbc1329a6039c7e9234f3d1ea11e0dbd0bb293c/nbmake-1.4.6.tar.gz", hash = "sha256:874c5b9d99922f88bf0c92a3b869e75bff154edba2538efef0a1d7ad2263f5fb", size = 13996, upload-time = "2023-10-16T10:14:37.712Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/70/06/c4d83f6eeb9a3624902b9bb619beeed593a9eb304f5246b784d91bfe1623/nbmake-1.4.6-py3-none-any.whl", hash = "sha256:233603c9186c659cb42524de36b556197c352ede1f9daeaa1b1141dfad226218", size = 13378, upload-time = "2023-10-16T10:14:36.372Z" }, +] + +[[package]] +name = "ndindex" +version = "1.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/dc/a0/f584c0b6b998e4981201a1383200663a725f556f439cf58d02a093cb9f91/ndindex-1.10.0.tar.gz", hash = "sha256:20e3a2f0a8ed4646abf0f13296aab0b5b9cc8c5bc182b71b5945e76eb6f558bb", size = 258688, upload-time = "2025-05-21T17:42:22.718Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/61/de/45af0f9b0abe5795228ca79577541c1c79b664996a5c9d15df21789e2ced/ndindex-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3d96dc319c39dce679d85a997f4eeb439f6de73c0793956b66598954ca61365c", size = 162311, upload-time = "2025-05-21T17:40:36.873Z" }, + { url = "https://files.pythonhosted.org/packages/d9/dd/d950718536c3898580c3f903888209d75057659b862b3d8d8af17bdb4fa8/ndindex-1.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b082de3c042b6da7ca327f17d088de3695333c30e0f9717d2ed5de5dc4d70802", size = 161621, upload-time = "2025-05-21T17:40:38.792Z" }, + { url = "https://files.pythonhosted.org/packages/bd/00/462ef86c63590e1f2e56d31ce46e9f13ae6aebd7506d33c08b927d2f1594/ndindex-1.10.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:69cf517d138f47163d6c94cd9ccaafb91606a2aab386c05aaa0718975da09c88", size = 482241, upload-time = "2025-05-21T17:40:40.671Z" }, + { url = "https://files.pythonhosted.org/packages/e3/a6/975bfec7bec7f274853b0c33953b5f2df4ad51f62d1aab0c7142fee98261/ndindex-1.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9cea2a5f7a432dafadb6c5732a9af3e7139adbf9085320f284885fe5d4776e4", size = 501603, upload-time = "2025-05-21T17:40:42.394Z" }, + { url = "https://files.pythonhosted.org/packages/13/4a/8d39f8ab1d20cd246360d7af707107bc4a332c6758ea45780a5bff6ec29f/ndindex-1.10.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:a3d2ea706c80e21022f6661524efb0aeed89a714a8fda4712df8d4a90ef507f5", size = 1620040, upload-time = "2025-05-21T17:40:44.638Z" }, + { url = "https://files.pythonhosted.org/packages/87/83/ba24c57073c29ba3f69c52767bec64dc818e90ac23f6ee43c98172b9f888/ndindex-1.10.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d5b3b8f99970ce40fbff1e55ad9ddf9ea708e82ace91271784e7ff1d08707c4c", size = 1529863, upload-time = "2025-05-21T17:40:46.886Z" }, + { url = "https://files.pythonhosted.org/packages/cd/2c/61e88acae938898994a6cfe83716db0e440f44f7b0c821a7adb2ab4cedbd/ndindex-1.10.0-cp310-cp310-win32.whl", hash = "sha256:6a5a401b867530fe4f1022cc8d578c8092cfdc726348e6d1569ec91881da365f", size = 149122, upload-time = "2025-05-21T17:40:48.921Z" }, + { url = "https://files.pythonhosted.org/packages/a9/61/2bc88b2b5f71649f9e07fcf3509ce8eb187adbb3e787e4600b28ce00139c/ndindex-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:88504651ddcb6733ba0caf0cdfc214d8ba9f140609b69f6566ad143322ce5a96", size = 156550, upload-time = "2025-05-21T17:40:50.819Z" }, + { url = "https://files.pythonhosted.org/packages/b4/1c/a53253d68bb269e5591c39b96ae2c4dd671132a82f63d70aea486f76d70c/ndindex-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2e42198c8636eaf468cf28b7e1700738de37841853f5f15a0671bad4c3876a85", size = 162556, upload-time = "2025-05-21T17:40:52.668Z" }, + { url = "https://files.pythonhosted.org/packages/0d/2a/4e268ff5992d4b42755ee19cf46c3e954632aadd57810db7173fe945ad47/ndindex-1.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ec9865e787eababc9aa1be973bf8545c044e2b68297fe37adf7aeefe0ec61f59", size = 161769, upload-time = "2025-05-21T17:40:54.55Z" }, + { url = "https://files.pythonhosted.org/packages/14/67/28ef988483e1ff446873150979b20fa87833c711fbe3a816e0e6a3e6e7d3/ndindex-1.10.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:72377bc5d15229eeefa73a4370212d0bdb8992c76c2228df0771e0dcdeb5354a", size = 504542, upload-time = "2025-05-21T17:40:56.771Z" }, + { url = "https://files.pythonhosted.org/packages/79/d8/a4638485d17e5a236a7f8687a63229b4cc4737d018d8f8bdf18983419d5b/ndindex-1.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a8c9f85a1d6497a1fc3a8ac7faf64eef600f95d4330566ae7468e59b6da28d7", size = 528179, upload-time = "2025-05-21T17:40:58.859Z" }, + { url = "https://files.pythonhosted.org/packages/40/2a/a7c119db8332b85fa6886104ac388a771dd2b0ec35e4b2443d555c5e0e00/ndindex-1.10.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:560211699c4fa370c30edace212b4b61950934c3c9a7b3964f52f2dd09c6913a", size = 1642463, upload-time = "2025-05-21T17:41:01.234Z" }, + { url = "https://files.pythonhosted.org/packages/14/9a/41dd8270e9b0a411221c1c584fb088f0d43d750d596cf02e1f8b528c426d/ndindex-1.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:68e4ed3b5816d22cddf71478197c62ea2453a8f7dea0da57b52ce8b537c7a0c3", size = 1553373, upload-time = "2025-05-21T17:41:03.474Z" }, + { url = "https://files.pythonhosted.org/packages/6e/36/4d42edfc5f350b83801a473721927c4c01c210014bb2ea1a754e232871d3/ndindex-1.10.0-cp311-cp311-win32.whl", hash = "sha256:52adf006f99f21913300d93d8b08fdd9d12796ee2dc7a1737acd1beea5f7e7af", size = 148975, upload-time = "2025-05-21T17:41:05.65Z" }, + { url = "https://files.pythonhosted.org/packages/e9/b3/ec2b3447e49d69f033edb003761d3e2e01f2e5fe8ab397140099920405aa/ndindex-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:b90559638d35dd3c7f3f46dced6a306935866f86ba5cbd35190ef954334c33b9", size = 156723, upload-time = "2025-05-21T17:41:07.952Z" }, + { url = "https://files.pythonhosted.org/packages/e5/cb/c44335f5aa81d54d2c06ea0076cc394a9d247ad8bf7dd63c87dec10d2e1f/ndindex-1.10.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:50f9c49659d91b19964da9ee96d5cb18f5102dc1b31ea5ca085f0b4d905cdc60", size = 162959, upload-time = "2025-05-21T17:41:09.96Z" }, + { url = "https://files.pythonhosted.org/packages/42/f5/2bff167479b589a21288f8f150ca2dbbb5d20e3eb264515eafc5ff1c58f8/ndindex-1.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3e58c340b829275d2a2ac8fc468fca6dd1ca78a7351824dabf4a52cf0a79f648", size = 161618, upload-time = "2025-05-21T17:41:12.3Z" }, + { url = "https://files.pythonhosted.org/packages/69/ed/1e921acc45f18b6ade332af772496b5a3681856c13b3a0bc3f5a46630b4e/ndindex-1.10.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dd170addae6e4322438cc9ac1ae0cbf0d8f7bea25716fdbef53c4964ee84a64a", size = 521535, upload-time = "2025-05-21T17:41:13.863Z" }, + { url = "https://files.pythonhosted.org/packages/ec/4a/0b6a4c8c06803efe531fc57d008294bd12a95b94c9ca4922f87cee2c3829/ndindex-1.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b33b378d1ec4d2e041d7d14a2d6d05f74a6ef0f9273985930ad0b993d86e8064", size = 546226, upload-time = "2025-05-21T17:41:15.514Z" }, + { url = "https://files.pythonhosted.org/packages/4e/94/f8fb6e28660428bb359ffaf088409228fb9033db76ca6363fcf60d31ec13/ndindex-1.10.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c1eb9aa7ad4dd561dfb94b8c069677c59032f7c663e53ab05f97aa20c1643d1b", size = 1660328, upload-time = "2025-05-21T17:41:17.347Z" }, + { url = "https://files.pythonhosted.org/packages/df/8e/a70ba950fff63d0a3a7142a53ff160cb03076a95964adb057be75a9c9be5/ndindex-1.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d490499a09e9cb78d02801d39d7da21e4975f09c78d0e1095a881adf20d0d4e7", size = 1576545, upload-time = "2025-05-21T17:41:19.55Z" }, + { url = "https://files.pythonhosted.org/packages/d4/17/2a415224e7e35c7e36ffa1f58ef515f7653b118f0098c0f76f3e765b2826/ndindex-1.10.0-cp312-cp312-win32.whl", hash = "sha256:2c65d448210f8e3763e12d9a138195de77b383164d819080eaf64e832c2933bc", size = 149056, upload-time = "2025-05-21T17:41:21.141Z" }, + { url = "https://files.pythonhosted.org/packages/37/e7/4f955c90e86c025ef04234adfa34ee5053f3dfc835b7d632e7c38ab713fc/ndindex-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:d8a9bfac1ce127bf55ad73b62ec57a415d5489db7a76056905a449f8346b69a3", size = 157017, upload-time = "2025-05-21T17:41:22.977Z" }, + { url = "https://files.pythonhosted.org/packages/03/ee/8f7aa7dde0f2d947c2e4034f4c58b308bf1f48a18780183e7f84298a573c/ndindex-1.10.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:50b579a0c57a4072fc97848f1d0db8cb228ca73d050c8bc9d4e7cf2e75510829", size = 161193, upload-time = "2025-05-21T17:41:24.452Z" }, + { url = "https://files.pythonhosted.org/packages/9b/3b/9f2a49b5d3a558e9cd067e0911e1bb8d8d553e1d689bb9a9119c775636b9/ndindex-1.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0956611e29f51857a54ba0750568ebdbf0eacfad4a262253af2522e77b476369", size = 159952, upload-time = "2025-05-21T17:41:25.806Z" }, + { url = "https://files.pythonhosted.org/packages/76/b9/93273d8dd7a2e155af6ed0bad2f2618202794ffe537184b25ff666cf8e31/ndindex-1.10.0-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f82aada1f194c5ea11943ca89532cf449881de8c9c2c48b8baa43d467486fdb2", size = 502466, upload-time = "2025-05-21T17:41:27.342Z" }, + { url = "https://files.pythonhosted.org/packages/b5/07/c64b0c8416f604f6990da5d1fa97c9de1278a4eec1efcc63b71053b4f0c0/ndindex-1.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38a56a16edbd62ef039b93e393047e66238d02dbc1e95e95b79c0bdd0a4785f7", size = 526910, upload-time = "2025-05-21T17:41:29.071Z" }, + { url = "https://files.pythonhosted.org/packages/b3/a5/316f13eeda944db14015a6edaebd88fc83b196d86cae9f576be319b93873/ndindex-1.10.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:8b11a3b8fd983adafea988b2a7e51fe8c0be819639b16506a472429069158f6d", size = 1642168, upload-time = "2025-05-21T17:41:31.213Z" }, + { url = "https://files.pythonhosted.org/packages/f3/13/4c1cf1b6280669f32e9960215d6cbed027084b0bb423c924095f247f3185/ndindex-1.10.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:be7cfaed1e7a72c7e0bbc4a0e1965d3cc8207cb3d56bd351c0cb2b2d94db0bdd", size = 1557347, upload-time = "2025-05-21T17:41:32.893Z" }, + { url = "https://files.pythonhosted.org/packages/2d/ac/36124ca146aaa6e84ac479e06a81b5ae9ebde2e3b4b2c77c49492bcfebae/ndindex-1.10.0-cp313-cp313-win32.whl", hash = "sha256:f779a0c20ffd617535bf57c7437d5521d5453daf2e0db0d148301df6b24c0932", size = 148623, upload-time = "2025-05-21T17:41:34.628Z" }, + { url = "https://files.pythonhosted.org/packages/23/38/13169cc35be65a6683784c5a1f2c7e6d2219f58fb56abe9d13ef762a634a/ndindex-1.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:1ef8d71e0ddf0c6e39e64f1e328a37ebefcca1b89218a4068c353851bcb4cb0f", size = 156188, upload-time = "2025-05-21T17:41:36.043Z" }, + { url = "https://files.pythonhosted.org/packages/29/f6/ba98045516f39b0414d03c466e7c46b79290cd54a73ff961b9081bc66a6e/ndindex-1.10.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:6fcefeefc48815dd8e99999999477d91d4287d8034b1c81084042a49976b212c", size = 167198, upload-time = "2025-05-21T17:41:37.544Z" }, + { url = "https://files.pythonhosted.org/packages/ca/14/4c8b1256009cda78387e6e3035d4b86582d98b557e56f7ee8f58df3e57b4/ndindex-1.10.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:882367d3d5a4d20155c23d890bf01ffbac78019eee09a9456ff3322f62eb34c1", size = 167324, upload-time = "2025-05-21T17:41:39.004Z" }, + { url = "https://files.pythonhosted.org/packages/c5/34/a1e8117c0fe5a862da9e7f0162233340c7a9bbd728161a06cd0ad856514e/ndindex-1.10.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f04b3eeced5a10f1c00197ee93c913a691467c752306c0d97e6df9c02af4e6d", size = 608219, upload-time = "2025-05-21T17:41:40.556Z" }, + { url = "https://files.pythonhosted.org/packages/19/6c/f9b449d0d9db404637d026798a208b677c04c349ab740db33ab78065603d/ndindex-1.10.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:cb68232e58ca6cc92ddc8cdddcff8dcdfa5de030e89de8457e5d43de77bcc331", size = 1639541, upload-time = "2025-05-21T17:41:42.33Z" }, + { url = "https://files.pythonhosted.org/packages/2c/14/0bfe948a092ddba3c23f18a6f4e3fc2029adfc3e433e634410ba98b7700f/ndindex-1.10.0-cp313-cp313t-win32.whl", hash = "sha256:af8ecd5a0221482e9b467918b90e78f85241572102fdcf0a941ef087e7dcf2e4", size = 157843, upload-time = "2025-05-21T17:41:43.981Z" }, + { url = "https://files.pythonhosted.org/packages/50/49/0e7d831e918db3e8819f7327e835e4b106fe91ed0c865e96fb952f936b7f/ndindex-1.10.0-cp313-cp313t-win_amd64.whl", hash = "sha256:2fb32342379547032fd25dbf5bfc7003ebc1bde582779e9a171373a738d6fb8b", size = 166116, upload-time = "2025-05-21T17:41:45.506Z" }, + { url = "https://files.pythonhosted.org/packages/b0/61/afde1bf918386625e477a7ac0fa518ca83f9239e2675affccf8d48d05e25/ndindex-1.10.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1851d2d490413edc5c5734f5f74e8d3b59cfc23eae561d10bd4db6e4162dcf02", size = 146659, upload-time = "2025-05-21T17:42:00.855Z" }, + { url = "https://files.pythonhosted.org/packages/63/22/90a3e3aa613d4d7e5432e8d7cf0188049f61b34b104eef7f014b7e35a3aa/ndindex-1.10.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:490c577e6915f8d2d045239a14e70b1dfd14b703028a41f6a3713821598d0db8", size = 146160, upload-time = "2025-05-21T17:42:02.227Z" }, + { url = "https://files.pythonhosted.org/packages/80/a5/677dc41756ac9b2ac3bd0b458abda4dee0c74ee1c6560be3a1b36cc2c9d1/ndindex-1.10.0-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:21f4c61db28b7ba8dc03548a3b2c3561feb8d61f7293dfc310df52aa2676463f", size = 163067, upload-time = "2025-05-21T17:42:03.615Z" }, + { url = "https://files.pythonhosted.org/packages/01/8d/319499a3f9da41695a75243b8fd8576d42c1e382f5dc935b885f590a42be/ndindex-1.10.0-pp310-pypy310_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd41c7cce386bc21a38a2153427ce47f92d6bdb097dc3c5c42fa24e75090c8f", size = 160109, upload-time = "2025-05-21T17:42:05.137Z" }, + { url = "https://files.pythonhosted.org/packages/7c/66/a6721aac78028ee1dd35106a20a2f5c940f17587bc8c8fb9d98040eeddec/ndindex-1.10.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1ba5f6d09ad320e0045ea39d7efd66a21d73cd4875d114be08e7ba6204a8feb7", size = 148094, upload-time = "2025-05-21T17:42:06.563Z" }, + { url = "https://files.pythonhosted.org/packages/c3/61/1333424bdfcebdcea63f5ed86ac98dccaf07ebb7e1463ca845a06e321d91/ndindex-1.10.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:aa17ea725f85af9285b298f72ccc8012949c0916d4426b0215d1c556dd995246", size = 146929, upload-time = "2025-05-21T17:42:08.04Z" }, + { url = "https://files.pythonhosted.org/packages/eb/7c/0813615d958ec78c521b9c09518b1f49ec553a0bec0646b5f4ebbf33bdcb/ndindex-1.10.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:219fdef9d6a557913fd92418275088b46c727944356f3fe59f4f72d62efd6f3d", size = 146417, upload-time = "2025-05-21T17:42:09.534Z" }, + { url = "https://files.pythonhosted.org/packages/d8/a1/b340a47409253f05c78d400f98b43477549ad1a1f7a5358acb784c79ed48/ndindex-1.10.0-pp311-pypy311_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1962137fcb69c00e2db42d5d045f9b7413fc37f44b143e7ae4a8c2c68ba3832", size = 163867, upload-time = "2025-05-21T17:42:10.994Z" }, + { url = "https://files.pythonhosted.org/packages/02/24/e5192ffb87070e9ff2328d715e5aa3a7f6b673e86c1ee8f48136815564e1/ndindex-1.10.0-pp311-pypy311_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18c9c8271926fb16c59e827b61bb77f45ee31a824eaa50b386edcd77a6a7c9a3", size = 160644, upload-time = "2025-05-21T17:42:12.415Z" }, + { url = "https://files.pythonhosted.org/packages/09/c5/b894cc961460e608b869d91164e9f825e3bb0579defb37c0eea61dce584e/ndindex-1.10.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:76e4fb082c83ccbc67c7a64b80e33bc5dfe9379f30c3b40a865914ae79947071", size = 147721, upload-time = "2025-05-21T17:42:13.825Z" }, +] + +[[package]] +name = "nest-asyncio" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418, upload-time = "2024-01-21T14:25:19.227Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195, upload-time = "2024-01-21T14:25:17.223Z" }, +] + +[[package]] +name = "networkx" +version = "3.4.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11'", +] +sdist = { url = "https://files.pythonhosted.org/packages/fd/1d/06475e1cd5264c0b870ea2cc6fdb3e37177c1e565c43f56ff17a10e3937f/networkx-3.4.2.tar.gz", hash = "sha256:307c3669428c5362aab27c8a1260aa8f47c4e91d3891f48be0141738d8d053e1", size = 2151368, upload-time = "2024-10-21T12:39:38.695Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl", hash = "sha256:df5d4365b724cf81b8c6a7312509d0c22386097011ad1abe274afd5e9d3bbc5f", size = 1723263, upload-time = "2024-10-21T12:39:36.247Z" }, +] + +[[package]] +name = "networkx" +version = "3.5" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", +] +sdist = { url = "https://files.pythonhosted.org/packages/6c/4f/ccdb8ad3a38e583f214547fd2f7ff1fc160c43a75af88e6aec213404b96a/networkx-3.5.tar.gz", hash = "sha256:d4c6f9cf81f52d69230866796b82afbccdec3db7ae4fbd1b65ea750feed50037", size = 2471065, upload-time = "2025-05-29T11:35:07.804Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl", hash = "sha256:0030d386a9a06dee3565298b4a734b68589749a544acbb6c412dc9e2489ec6ec", size = 2034406, upload-time = "2025-05-29T11:35:04.961Z" }, +] + +[[package]] +name = "nltk" +version = "3.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "joblib" }, + { name = "regex" }, + { name = "tqdm" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3c/87/db8be88ad32c2d042420b6fd9ffd4a149f9a0d7f0e86b3f543be2eeeedd2/nltk-3.9.1.tar.gz", hash = "sha256:87d127bd3de4bd89a4f81265e5fa59cb1b199b27440175370f7417d2bc7ae868", size = 2904691, upload-time = "2024-08-18T19:48:37.769Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4d/66/7d9e26593edda06e8cb531874633f7c2372279c3b0f46235539fe546df8b/nltk-3.9.1-py3-none-any.whl", hash = "sha256:4fa26829c5b00715afe3061398a8989dc643b92ce7dd93fb4585a70930d168a1", size = 1505442, upload-time = "2024-08-18T19:48:21.909Z" }, +] + +[[package]] +name = "nodeenv" +version = "1.9.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437, upload-time = "2024-06-04T18:44:11.171Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314, upload-time = "2024-06-04T18:44:08.352Z" }, +] + +[[package]] +name = "notebook-shim" +version = "0.2.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-server" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/54/d2/92fa3243712b9a3e8bafaf60aac366da1cada3639ca767ff4b5b3654ec28/notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb", size = 13167, upload-time = "2024-02-14T23:35:18.353Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef", size = 13307, upload-time = "2024-02-14T23:35:16.286Z" }, +] + +[[package]] +name = "numba" +version = "0.61.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "llvmlite" }, + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1c/a0/e21f57604304aa03ebb8e098429222722ad99176a4f979d34af1d1ee80da/numba-0.61.2.tar.gz", hash = "sha256:8750ee147940a6637b80ecf7f95062185ad8726c8c28a2295b8ec1160a196f7d", size = 2820615, upload-time = "2025-04-09T02:58:07.659Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/eb/ca/f470be59552ccbf9531d2d383b67ae0b9b524d435fb4a0d229fef135116e/numba-0.61.2-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:cf9f9fc00d6eca0c23fc840817ce9f439b9f03c8f03d6246c0e7f0cb15b7162a", size = 2775663, upload-time = "2025-04-09T02:57:34.143Z" }, + { url = "https://files.pythonhosted.org/packages/f5/13/3bdf52609c80d460a3b4acfb9fdb3817e392875c0d6270cf3fd9546f138b/numba-0.61.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ea0247617edcb5dd61f6106a56255baab031acc4257bddaeddb3a1003b4ca3fd", size = 2778344, upload-time = "2025-04-09T02:57:36.609Z" }, + { url = "https://files.pythonhosted.org/packages/e2/7d/bfb2805bcfbd479f04f835241ecf28519f6e3609912e3a985aed45e21370/numba-0.61.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ae8c7a522c26215d5f62ebec436e3d341f7f590079245a2f1008dfd498cc1642", size = 3824054, upload-time = "2025-04-09T02:57:38.162Z" }, + { url = "https://files.pythonhosted.org/packages/e3/27/797b2004745c92955470c73c82f0e300cf033c791f45bdecb4b33b12bdea/numba-0.61.2-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:bd1e74609855aa43661edffca37346e4e8462f6903889917e9f41db40907daa2", size = 3518531, upload-time = "2025-04-09T02:57:39.709Z" }, + { url = "https://files.pythonhosted.org/packages/b1/c6/c2fb11e50482cb310afae87a997707f6c7d8a48967b9696271347441f650/numba-0.61.2-cp310-cp310-win_amd64.whl", hash = "sha256:ae45830b129c6137294093b269ef0a22998ccc27bf7cf096ab8dcf7bca8946f9", size = 2831612, upload-time = "2025-04-09T02:57:41.559Z" }, + { url = "https://files.pythonhosted.org/packages/3f/97/c99d1056aed767503c228f7099dc11c402906b42a4757fec2819329abb98/numba-0.61.2-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:efd3db391df53aaa5cfbee189b6c910a5b471488749fd6606c3f33fc984c2ae2", size = 2775825, upload-time = "2025-04-09T02:57:43.442Z" }, + { url = "https://files.pythonhosted.org/packages/95/9e/63c549f37136e892f006260c3e2613d09d5120672378191f2dc387ba65a2/numba-0.61.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:49c980e4171948ffebf6b9a2520ea81feed113c1f4890747ba7f59e74be84b1b", size = 2778695, upload-time = "2025-04-09T02:57:44.968Z" }, + { url = "https://files.pythonhosted.org/packages/97/c8/8740616c8436c86c1b9a62e72cb891177d2c34c2d24ddcde4c390371bf4c/numba-0.61.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3945615cd73c2c7eba2a85ccc9c1730c21cd3958bfcf5a44302abae0fb07bb60", size = 3829227, upload-time = "2025-04-09T02:57:46.63Z" }, + { url = "https://files.pythonhosted.org/packages/fc/06/66e99ae06507c31d15ff3ecd1f108f2f59e18b6e08662cd5f8a5853fbd18/numba-0.61.2-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:bbfdf4eca202cebade0b7d43896978e146f39398909a42941c9303f82f403a18", size = 3523422, upload-time = "2025-04-09T02:57:48.222Z" }, + { url = "https://files.pythonhosted.org/packages/0f/a4/2b309a6a9f6d4d8cfba583401c7c2f9ff887adb5d54d8e2e130274c0973f/numba-0.61.2-cp311-cp311-win_amd64.whl", hash = "sha256:76bcec9f46259cedf888041b9886e257ae101c6268261b19fda8cfbc52bec9d1", size = 2831505, upload-time = "2025-04-09T02:57:50.108Z" }, + { url = "https://files.pythonhosted.org/packages/b4/a0/c6b7b9c615cfa3b98c4c63f4316e3f6b3bbe2387740277006551784218cd/numba-0.61.2-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:34fba9406078bac7ab052efbf0d13939426c753ad72946baaa5bf9ae0ebb8dd2", size = 2776626, upload-time = "2025-04-09T02:57:51.857Z" }, + { url = "https://files.pythonhosted.org/packages/92/4a/fe4e3c2ecad72d88f5f8cd04e7f7cff49e718398a2fac02d2947480a00ca/numba-0.61.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4ddce10009bc097b080fc96876d14c051cc0c7679e99de3e0af59014dab7dfe8", size = 2779287, upload-time = "2025-04-09T02:57:53.658Z" }, + { url = "https://files.pythonhosted.org/packages/9a/2d/e518df036feab381c23a624dac47f8445ac55686ec7f11083655eb707da3/numba-0.61.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5b1bb509d01f23d70325d3a5a0e237cbc9544dd50e50588bc581ba860c213546", size = 3885928, upload-time = "2025-04-09T02:57:55.206Z" }, + { url = "https://files.pythonhosted.org/packages/10/0f/23cced68ead67b75d77cfcca3df4991d1855c897ee0ff3fe25a56ed82108/numba-0.61.2-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:48a53a3de8f8793526cbe330f2a39fe9a6638efcbf11bd63f3d2f9757ae345cd", size = 3577115, upload-time = "2025-04-09T02:57:56.818Z" }, + { url = "https://files.pythonhosted.org/packages/68/1d/ddb3e704c5a8fb90142bf9dc195c27db02a08a99f037395503bfbc1d14b3/numba-0.61.2-cp312-cp312-win_amd64.whl", hash = "sha256:97cf4f12c728cf77c9c1d7c23707e4d8fb4632b46275f8f3397de33e5877af18", size = 2831929, upload-time = "2025-04-09T02:57:58.45Z" }, + { url = "https://files.pythonhosted.org/packages/0b/f3/0fe4c1b1f2569e8a18ad90c159298d862f96c3964392a20d74fc628aee44/numba-0.61.2-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:3a10a8fc9afac40b1eac55717cece1b8b1ac0b946f5065c89e00bde646b5b154", size = 2771785, upload-time = "2025-04-09T02:57:59.96Z" }, + { url = "https://files.pythonhosted.org/packages/e9/71/91b277d712e46bd5059f8a5866862ed1116091a7cb03bd2704ba8ebe015f/numba-0.61.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7d3bcada3c9afba3bed413fba45845f2fb9cd0d2b27dd58a1be90257e293d140", size = 2773289, upload-time = "2025-04-09T02:58:01.435Z" }, + { url = "https://files.pythonhosted.org/packages/0d/e0/5ea04e7ad2c39288c0f0f9e8d47638ad70f28e275d092733b5817cf243c9/numba-0.61.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bdbca73ad81fa196bd53dc12e3aaf1564ae036e0c125f237c7644fe64a4928ab", size = 3893918, upload-time = "2025-04-09T02:58:02.933Z" }, + { url = "https://files.pythonhosted.org/packages/17/58/064f4dcb7d7e9412f16ecf80ed753f92297e39f399c905389688cf950b81/numba-0.61.2-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:5f154aaea625fb32cfbe3b80c5456d514d416fcdf79733dd69c0df3a11348e9e", size = 3584056, upload-time = "2025-04-09T02:58:04.538Z" }, + { url = "https://files.pythonhosted.org/packages/af/a4/6d3a0f2d3989e62a18749e1e9913d5fa4910bbb3e3311a035baea6caf26d/numba-0.61.2-cp313-cp313-win_amd64.whl", hash = "sha256:59321215e2e0ac5fa928a8020ab00b8e57cda8a97384963ac0dfa4d4e6aa54e7", size = 2831846, upload-time = "2025-04-09T02:58:06.125Z" }, +] + +[[package]] +name = "numcodecs" +version = "0.13.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11'", +] +dependencies = [ + { name = "numpy", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/85/56/8895a76abe4ec94ebd01eeb6d74f587bc4cddd46569670e1402852a5da13/numcodecs-0.13.1.tar.gz", hash = "sha256:a3cf37881df0898f3a9c0d4477df88133fe85185bffe57ba31bcc2fa207709bc", size = 5955215, upload-time = "2024-10-09T16:28:00.188Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/14/c0/6d72cde772bcec196b7188731d41282993b2958440f77fdf0db216f722da/numcodecs-0.13.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:96add4f783c5ce57cc7e650b6cac79dd101daf887c479a00a29bc1487ced180b", size = 1580012, upload-time = "2024-10-09T16:27:19.069Z" }, + { url = "https://files.pythonhosted.org/packages/94/1d/f81fc1fa9210bbea97258242393a1f9feab4f6d8fb201f81f76003005e4b/numcodecs-0.13.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:237b7171609e868a20fd313748494444458ccd696062f67e198f7f8f52000c15", size = 1176919, upload-time = "2024-10-09T16:27:21.634Z" }, + { url = "https://files.pythonhosted.org/packages/16/e4/b9ec2f4dfc34ecf724bc1beb96a9f6fa9b91801645688ffadacd485089da/numcodecs-0.13.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96e42f73c31b8c24259c5fac6adba0c3ebf95536e37749dc6c62ade2989dca28", size = 8625842, upload-time = "2024-10-09T16:27:24.168Z" }, + { url = "https://files.pythonhosted.org/packages/fe/90/299952e1477954ec4f92813fa03e743945e3ff711bb4f6c9aace431cb3da/numcodecs-0.13.1-cp310-cp310-win_amd64.whl", hash = "sha256:eda7d7823c9282e65234731fd6bd3986b1f9e035755f7fed248d7d366bb291ab", size = 828638, upload-time = "2024-10-09T16:27:27.063Z" }, + { url = "https://files.pythonhosted.org/packages/f0/78/34b8e869ef143e88d62e8231f4dbfcad85e5c41302a11fc5bd2228a13df5/numcodecs-0.13.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2eda97dd2f90add98df6d295f2c6ae846043396e3d51a739ca5db6c03b5eb666", size = 1580199, upload-time = "2024-10-09T16:27:29.336Z" }, + { url = "https://files.pythonhosted.org/packages/3b/cf/f70797d86bb585d258d1e6993dced30396f2044725b96ce8bcf87a02be9c/numcodecs-0.13.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2a86f5367af9168e30f99727ff03b27d849c31ad4522060dde0bce2923b3a8bc", size = 1177203, upload-time = "2024-10-09T16:27:31.011Z" }, + { url = "https://files.pythonhosted.org/packages/a8/b5/d14ad69b63fde041153dfd05d7181a49c0d4864de31a7a1093c8370da957/numcodecs-0.13.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233bc7f26abce24d57e44ea8ebeb5cd17084690b4e7409dd470fdb75528d615f", size = 8868743, upload-time = "2024-10-09T16:27:32.833Z" }, + { url = "https://files.pythonhosted.org/packages/13/d4/27a7b5af0b33f6d61e198faf177fbbf3cb83ff10d9d1a6857b7efc525ad5/numcodecs-0.13.1-cp311-cp311-win_amd64.whl", hash = "sha256:796b3e6740107e4fa624cc636248a1580138b3f1c579160f260f76ff13a4261b", size = 829603, upload-time = "2024-10-09T16:27:35.415Z" }, + { url = "https://files.pythonhosted.org/packages/37/3a/bc09808425e7d3df41e5fc73fc7a802c429ba8c6b05e55f133654ade019d/numcodecs-0.13.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5195bea384a6428f8afcece793860b1ab0ae28143c853f0b2b20d55a8947c917", size = 1575806, upload-time = "2024-10-09T16:27:37.804Z" }, + { url = "https://files.pythonhosted.org/packages/3a/cc/dc74d0bfdf9ec192332a089d199f1e543e747c556b5659118db7a437dcca/numcodecs-0.13.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3501a848adaddce98a71a262fee15cd3618312692aa419da77acd18af4a6a3f6", size = 1178233, upload-time = "2024-10-09T16:27:40.169Z" }, + { url = "https://files.pythonhosted.org/packages/d4/ce/434e8e3970b8e92ae9ab6d9db16cb9bc7aa1cd02e17c11de6848224100a1/numcodecs-0.13.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2230484e6102e5fa3cc1a5dd37ca1f92dfbd183d91662074d6f7574e3e8f53", size = 8857827, upload-time = "2024-10-09T16:27:42.743Z" }, + { url = "https://files.pythonhosted.org/packages/83/e7/1d8b1b266a92f9013c755b1c146c5ad71a2bff147ecbc67f86546a2e4d6a/numcodecs-0.13.1-cp312-cp312-win_amd64.whl", hash = "sha256:e5db4824ebd5389ea30e54bc8aeccb82d514d28b6b68da6c536b8fa4596f4bca", size = 826539, upload-time = "2024-10-09T16:27:44.808Z" }, + { url = "https://files.pythonhosted.org/packages/83/8b/06771dead2cc4a8ae1ea9907737cf1c8d37a323392fa28f938a586373468/numcodecs-0.13.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7a60d75179fd6692e301ddfb3b266d51eb598606dcae7b9fc57f986e8d65cb43", size = 1571660, upload-time = "2024-10-09T16:27:47.125Z" }, + { url = "https://files.pythonhosted.org/packages/f9/ea/d925bf85f92dfe4635356018da9fe4bfecb07b1c72f62b01c1bc47f936b1/numcodecs-0.13.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3f593c7506b0ab248961a3b13cb148cc6e8355662ff124ac591822310bc55ecf", size = 1169925, upload-time = "2024-10-09T16:27:49.512Z" }, + { url = "https://files.pythonhosted.org/packages/0f/d6/643a3839d571d8e439a2c77dc4b0b8cab18d96ac808e4a81dbe88e959ab6/numcodecs-0.13.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80d3071465f03522e776a31045ddf2cfee7f52df468b977ed3afdd7fe5869701", size = 8814257, upload-time = "2024-10-09T16:27:52.059Z" }, + { url = "https://files.pythonhosted.org/packages/a6/c5/f3e56bc9b4e438a287fff738993d6d11abef368c0328a612ac2842ba9fca/numcodecs-0.13.1-cp313-cp313-win_amd64.whl", hash = "sha256:90d3065ae74c9342048ae0046006f99dcb1388b7288da5a19b3bddf9c30c3176", size = 821887, upload-time = "2024-10-09T16:27:55.039Z" }, +] + +[[package]] +name = "numcodecs" +version = "0.15.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", +] +dependencies = [ + { name = "deprecated", marker = "python_full_version >= '3.11'" }, + { name = "numpy", marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/63/fc/bb532969eb8236984ba65e4f0079a7da885b8ac0ce1f0835decbb3938a62/numcodecs-0.15.1.tar.gz", hash = "sha256:eeed77e4d6636641a2cc605fbc6078c7a8f2cc40f3dfa2b3f61e52e6091b04ff", size = 6267275, upload-time = "2025-02-10T10:23:33.254Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e4/fc/410f1cacaef0931f5daf06813b1b8a2442f7418ee284ec73fe5e830dca48/numcodecs-0.15.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:698f1d59511488b8fe215fadc1e679a4c70d894de2cca6d8bf2ab770eed34dfd", size = 1649501, upload-time = "2025-02-10T10:23:01.828Z" }, + { url = "https://files.pythonhosted.org/packages/85/29/dff62fae04323035912c419a82dc9624fad7d08541dbfcd9ab78a3a40074/numcodecs-0.15.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bef8c8e64fab76677324a07672b10c31861775d03fc63ed5012ca384144e4bb9", size = 1187306, upload-time = "2025-02-10T10:23:04.569Z" }, + { url = "https://files.pythonhosted.org/packages/a6/a8/908a226632ffabf19caf8c99f1b2898f2f22aac02795a6fe9d018fd6d9dd/numcodecs-0.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdfaef9f5f2ed8f65858db801f1953f1007c9613ee490a1c56233cd78b505ed5", size = 8891971, upload-time = "2025-02-10T10:23:07.689Z" }, + { url = "https://files.pythonhosted.org/packages/2b/e8/058aac43e1300d588e99b2d0d5b771c8a43fa92ce9c9517da596869fc146/numcodecs-0.15.1-cp311-cp311-win_amd64.whl", hash = "sha256:e2547fa3a7ffc9399cfd2936aecb620a3db285f2630c86c8a678e477741a4b3c", size = 840035, upload-time = "2025-02-10T10:23:10.761Z" }, + { url = "https://files.pythonhosted.org/packages/e7/7e/f12fc32d3beedc6a8f1ec69ea0ba72e93cb99c0350feed2cff5d04679bc3/numcodecs-0.15.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b0a9d9cd29a0088220682dda4a9898321f7813ff7802be2bbb545f6e3d2f10ff", size = 1691889, upload-time = "2025-02-10T10:23:12.934Z" }, + { url = "https://files.pythonhosted.org/packages/81/38/88e40d40288b73c3b3a390ed5614a34b0661d00255bdd4cfb91c32101364/numcodecs-0.15.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a34f0fe5e5f3b837bbedbeb98794a6d4a12eeeef8d4697b523905837900b5e1c", size = 1189149, upload-time = "2025-02-10T10:23:15.803Z" }, + { url = "https://files.pythonhosted.org/packages/28/7d/7527d9180bc76011d6163c848c9cf02cd28a623c2c66cf543e1e86de7c5e/numcodecs-0.15.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3a09e22140f2c691f7df26303ff8fa2dadcf26d7d0828398c0bc09b69e5efa3", size = 8879163, upload-time = "2025-02-10T10:23:18.582Z" }, + { url = "https://files.pythonhosted.org/packages/ab/bc/b6c3cde91c754860a3467a8c058dcf0b1a5ca14d82b1c5397c700cf8b1eb/numcodecs-0.15.1-cp312-cp312-win_amd64.whl", hash = "sha256:daed6066ffcf40082da847d318b5ab6123d69ceb433ba603cb87c323a541a8bc", size = 836785, upload-time = "2025-02-10T10:23:22.314Z" }, + { url = "https://files.pythonhosted.org/packages/78/57/acbc54b3419e5be65015e47177c76c0a73e037fd3ae2cde5808169194d4d/numcodecs-0.15.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e3d82b70500cf61e8d115faa0d0a76be6ecdc24a16477ee3279d711699ad85f3", size = 1688220, upload-time = "2025-02-10T10:23:23.79Z" }, + { url = "https://files.pythonhosted.org/packages/b6/56/9863fa6dc679f40a31bea5e9713ee5507a31dcd3ee82ea4b1a9268ce52e8/numcodecs-0.15.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1d471a1829ce52d3f365053a2bd1379e32e369517557c4027ddf5ac0d99c591e", size = 1180294, upload-time = "2025-02-10T10:23:25.533Z" }, + { url = "https://files.pythonhosted.org/packages/fa/91/d96999b41e3146b6c0ce6bddc5ad85803cb4d743c95394562c2a4bb8cded/numcodecs-0.15.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1dfdea4a67108205edfce99c1cb6cd621343bc7abb7e16a041c966776920e7de", size = 8834323, upload-time = "2025-02-10T10:23:27.46Z" }, + { url = "https://files.pythonhosted.org/packages/c3/32/233e5ede6568bdb044e6f99aaa9fa39827ff3109c6487fc137315f733586/numcodecs-0.15.1-cp313-cp313-win_amd64.whl", hash = "sha256:a4f7bdb26f1b34423cb56d48e75821223be38040907c9b5954eeb7463e7eb03c", size = 831955, upload-time = "2025-02-10T10:23:30.601Z" }, +] + +[[package]] +name = "numexpr" +version = "2.10.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/21/67/c7415cf04ebe418193cfd6595ae03e3a64d76dac7b9c010098b39cc7992e/numexpr-2.10.2.tar.gz", hash = "sha256:b0aff6b48ebc99d2f54f27b5f73a58cb92fde650aeff1b397c71c8788b4fff1a", size = 106787, upload-time = "2024-11-23T13:34:23.127Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/dc/bd84219318826d138b7e729ac3ffce3c706ab9d810ce74326a55c7252dd1/numexpr-2.10.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5b0e82d2109c1d9e63fcd5ea177d80a11b881157ab61178ddbdebd4c561ea46", size = 145011, upload-time = "2024-11-23T13:33:24.846Z" }, + { url = "https://files.pythonhosted.org/packages/31/6a/b1f08141283327478a57490c0ab3f26a634d4741ff33b9e22f760a7cedb0/numexpr-2.10.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3fc2b8035a0c2cdc352e58c3875cb668836018065cbf5752cb531015d9a568d8", size = 134777, upload-time = "2024-11-23T13:33:26.693Z" }, + { url = "https://files.pythonhosted.org/packages/7c/d6/6641864b0446ce472330de7644c78f90bd7e55d902046b44161f92721279/numexpr-2.10.2-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0db5ff5183935d1612653559c319922143e8fa3019007696571b13135f216458", size = 408893, upload-time = "2024-11-23T13:33:28.44Z" }, + { url = "https://files.pythonhosted.org/packages/25/ab/cb5809cb1f66431632d63dc028c58cb91492725c74dddc4b97ba62e88a92/numexpr-2.10.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:15f59655458056fdb3a621b1bb8e071581ccf7e823916c7568bb7c9a3e393025", size = 397305, upload-time = "2024-11-23T13:33:30.181Z" }, + { url = "https://files.pythonhosted.org/packages/9c/a0/29bcb31a9debb743e3dc46bacd55f4f6ee6a77d95eda5c8dca19a29c0627/numexpr-2.10.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ce8cccf944339051e44a49a124a06287fe3066d0acbff33d1aa5aee10a96abb7", size = 1378789, upload-time = "2024-11-23T13:33:32.263Z" }, + { url = "https://files.pythonhosted.org/packages/cc/72/415262a7bdda706c41bf8254311a5ca13d3b8532341ab478be4583d7061a/numexpr-2.10.2-cp310-cp310-win32.whl", hash = "sha256:ba85371c9a8d03e115f4dfb6d25dfbce05387002b9bc85016af939a1da9624f0", size = 151935, upload-time = "2024-11-23T13:33:33.653Z" }, + { url = "https://files.pythonhosted.org/packages/71/fa/0124f0c2a502a0bac4553c8a171c551f154cf80a83a15e40d30c43e48a7e/numexpr-2.10.2-cp310-cp310-win_amd64.whl", hash = "sha256:deb64235af9eeba59fcefa67e82fa80cfc0662e1b0aa373b7118a28da124d51d", size = 144961, upload-time = "2024-11-23T13:33:34.883Z" }, + { url = "https://files.pythonhosted.org/packages/de/b7/f25d6166f92ef23737c1c90416144492a664f0a56510d90f7c6577c2cd14/numexpr-2.10.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6b360eb8d392483410fe6a3d5a7144afa298c9a0aa3e9fe193e89590b47dd477", size = 145055, upload-time = "2024-11-23T13:33:36.154Z" }, + { url = "https://files.pythonhosted.org/packages/66/64/428361ea6415826332f38ef2dd5c3abf4e7e601f033bfc9be68b680cb765/numexpr-2.10.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d9a42f5c24880350d88933c4efee91b857c378aaea7e8b86221fff569069841e", size = 134743, upload-time = "2024-11-23T13:33:37.273Z" }, + { url = "https://files.pythonhosted.org/packages/3f/fb/639ec91d2ea7b4a5d66e26e8ef8e06b020c8e9b9ebaf3bab7b0a9bee472e/numexpr-2.10.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:83fcb11988b57cc25b028a36d285287d706d1f536ebf2662ea30bd990e0de8b9", size = 410397, upload-time = "2024-11-23T13:33:38.474Z" }, + { url = "https://files.pythonhosted.org/packages/89/5a/0f5c5b8a3a6d34eeecb30d0e2f722d50b9b38c0e175937e7c6268ffab997/numexpr-2.10.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4213a92efa9770bc28e3792134e27c7e5c7e97068bdfb8ba395baebbd12f991b", size = 398902, upload-time = "2024-11-23T13:33:39.802Z" }, + { url = "https://files.pythonhosted.org/packages/a2/d5/ec734e735eba5a753efed5be3707ee7447ebd371772f8081b65a4153fb97/numexpr-2.10.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ebdbef5763ca057eea0c2b5698e4439d084a0505d9d6e94f4804f26e8890c45e", size = 1380354, upload-time = "2024-11-23T13:33:41.68Z" }, + { url = "https://files.pythonhosted.org/packages/30/51/406e572531d817480bd612ee08239a36ee82865fea02fce569f15631f4ee/numexpr-2.10.2-cp311-cp311-win32.whl", hash = "sha256:3bf01ec502d89944e49e9c1b5cc7c7085be8ca2eb9dd46a0eafd218afbdbd5f5", size = 151938, upload-time = "2024-11-23T13:33:43.998Z" }, + { url = "https://files.pythonhosted.org/packages/04/32/5882ed1dbd96234f327a73316a481add151ff827cfaf2ea24fb4d5ad04db/numexpr-2.10.2-cp311-cp311-win_amd64.whl", hash = "sha256:e2d0ae24b0728e4bc3f1d3f33310340d67321d36d6043f7ce26897f4f1042db0", size = 144961, upload-time = "2024-11-23T13:33:45.329Z" }, + { url = "https://files.pythonhosted.org/packages/2b/96/d5053dea06d8298ae8052b4b049cbf8ef74998e28d57166cc27b8ae909e2/numexpr-2.10.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b5323a46e75832334f1af86da1ef6ff0add00fbacdd266250be872b438bdf2be", size = 145029, upload-time = "2024-11-23T13:33:46.892Z" }, + { url = "https://files.pythonhosted.org/packages/3e/3c/fcd5a812ed5dda757b2d9ef2764a3e1cca6f6d1f02dbf113dc23a2c7702a/numexpr-2.10.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a42963bd4c62d8afa4f51e7974debfa39a048383f653544ab54f50a2f7ec6c42", size = 134851, upload-time = "2024-11-23T13:33:47.986Z" }, + { url = "https://files.pythonhosted.org/packages/0a/52/0ed3b306d8c9944129bce97fec73a2caff13adbd7e1df148d546d7eb2d4d/numexpr-2.10.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5191ba8f2975cb9703afc04ae845a929e193498c0e8bcd408ecb147b35978470", size = 411837, upload-time = "2024-11-23T13:33:49.223Z" }, + { url = "https://files.pythonhosted.org/packages/7d/9c/6b671dd3fb67d7e7da93cb76b7c5277743f310a216b7856bb18776bb3371/numexpr-2.10.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:97298b14f0105a794bea06fd9fbc5c423bd3ff4d88cbc618860b83eb7a436ad6", size = 400577, upload-time = "2024-11-23T13:33:50.559Z" }, + { url = "https://files.pythonhosted.org/packages/ea/4d/a167d1a215fe10ce58c45109f2869fd13aa0eef66f7e8c69af68be45d436/numexpr-2.10.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f9d7805ccb6be2d3b0f7f6fad3707a09ac537811e8e9964f4074d28cb35543db", size = 1381735, upload-time = "2024-11-23T13:33:51.918Z" }, + { url = "https://files.pythonhosted.org/packages/c1/d4/17e4434f989e4917d31cbd88a043e1c9c16958149cf43fa622987111392b/numexpr-2.10.2-cp312-cp312-win32.whl", hash = "sha256:cb845b2d4f9f8ef0eb1c9884f2b64780a85d3b5ae4eeb26ae2b0019f489cd35e", size = 152102, upload-time = "2024-11-23T13:33:53.93Z" }, + { url = "https://files.pythonhosted.org/packages/b8/25/9ae599994076ef2a42d35ff6b0430da002647f212567851336a6c7b132d6/numexpr-2.10.2-cp312-cp312-win_amd64.whl", hash = "sha256:57b59cbb5dcce4edf09cd6ce0b57ff60312479930099ca8d944c2fac896a1ead", size = 145061, upload-time = "2024-11-23T13:33:55.161Z" }, + { url = "https://files.pythonhosted.org/packages/8c/cb/2ea1848c46e4d75073c038dd75628d1aa442975303264ed230bf90f74f44/numexpr-2.10.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a37d6a51ec328c561b2ca8a2bef07025642eca995b8553a5267d0018c732976d", size = 145035, upload-time = "2024-11-23T13:33:56.778Z" }, + { url = "https://files.pythonhosted.org/packages/ec/cf/bb2bcd81d6f3243590e19ac3e7795a1a370f3ebcd8ecec1f46dcd5333f37/numexpr-2.10.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:81d1dde7dd6166d8ff5727bb46ab42a6b0048db0e97ceb84a121334a404a800f", size = 134858, upload-time = "2024-11-23T13:33:57.953Z" }, + { url = "https://files.pythonhosted.org/packages/48/9b/c9128ffb453205c2a4c84a3abed35447c7591c2c2812e77e34fd238cb2bb/numexpr-2.10.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5b3f814437d5a10797f8d89d2037cca2c9d9fa578520fc911f894edafed6ea3e", size = 415517, upload-time = "2024-11-23T13:33:59.163Z" }, + { url = "https://files.pythonhosted.org/packages/7e/b0/64c04c9f8b4a563218d00daa1ec4563364961b79025162c5276ab2c7c407/numexpr-2.10.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9309f2e43fe6e4560699ef5c27d7a848b3ff38549b6b57194207cf0e88900527", size = 403846, upload-time = "2024-11-23T13:34:01.006Z" }, + { url = "https://files.pythonhosted.org/packages/80/35/60e9041fd709fe98dd3109d73a03cdffaeb6ee2089179155f5c3754e9934/numexpr-2.10.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ebb73b93f5c4d6994f357fa5a47a9f7a5485577e633b3c46a603cb01445bbb19", size = 1381659, upload-time = "2024-11-23T13:34:02.979Z" }, + { url = "https://files.pythonhosted.org/packages/bd/5a/955bf5b5cf8f3de7b044a999e36327e14191fa073ed0e329456ed0f8161d/numexpr-2.10.2-cp313-cp313-win32.whl", hash = "sha256:ec04c9a3c050c175348801e27c18c68d28673b7bfb865ef88ce333be523bbc01", size = 152105, upload-time = "2024-11-23T13:34:04.374Z" }, + { url = "https://files.pythonhosted.org/packages/be/7a/8ce360a1848bb5bcc30a414493371678f43790ece397f8652d5f65757e57/numexpr-2.10.2-cp313-cp313-win_amd64.whl", hash = "sha256:d7a3fc83c959288544db3adc70612475d8ad53a66c69198105c74036182d10dd", size = 145060, upload-time = "2024-11-23T13:34:06.112Z" }, +] + +[[package]] +name = "numpy" +version = "1.25.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a0/41/8f53eff8e969dd8576ddfb45e7ed315407d27c7518ae49418be8ed532b07/numpy-1.25.2.tar.gz", hash = "sha256:fd608e19c8d7c55021dffd43bfe5492fab8cc105cc8986f813f8c3c048b38760", size = 10805282, upload-time = "2023-07-31T15:17:43.198Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d5/50/8aedb5ff1460e7c8527af15c6326115009e7c270ec705487155b779ebabb/numpy-1.25.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:db3ccc4e37a6873045580d413fe79b68e47a681af8db2e046f1dacfa11f86eb3", size = 20814934, upload-time = "2023-07-31T14:50:49.761Z" }, + { url = "https://files.pythonhosted.org/packages/c3/ea/1d95b399078ecaa7b5d791e1fdbb3aee272077d9fd5fb499593c87dec5ea/numpy-1.25.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:90319e4f002795ccfc9050110bbbaa16c944b1c37c0baeea43c5fb881693ae1f", size = 13994425, upload-time = "2023-07-31T14:51:12.312Z" }, + { url = "https://files.pythonhosted.org/packages/b1/39/3f88e2bfac1fb510c112dc0c78a1e7cad8f3a2d75e714d1484a044c56682/numpy-1.25.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfe4a913e29b418d096e696ddd422d8a5d13ffba4ea91f9f60440a3b759b0187", size = 14167163, upload-time = "2023-07-31T14:51:34.507Z" }, + { url = "https://files.pythonhosted.org/packages/71/3c/3b1981c6a1986adc9ee7db760c0c34ea5b14ac3da9ecfcf1ea2a4ec6c398/numpy-1.25.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f08f2e037bba04e707eebf4bc934f1972a315c883a9e0ebfa8a7756eabf9e357", size = 18219190, upload-time = "2023-07-31T14:52:07.478Z" }, + { url = "https://files.pythonhosted.org/packages/73/6f/2a0d0ad31a588d303178d494787f921c246c6234eccced236866bc1beaa5/numpy-1.25.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bec1e7213c7cb00d67093247f8c4db156fd03075f49876957dca4711306d39c9", size = 18068385, upload-time = "2023-07-31T14:52:35.891Z" }, + { url = "https://files.pythonhosted.org/packages/63/bd/a1c256cdea5d99e2f7e1acc44fc287455420caeb2e97d43ff0dda908fae8/numpy-1.25.2-cp310-cp310-win32.whl", hash = "sha256:7dc869c0c75988e1c693d0e2d5b26034644399dd929bc049db55395b1379e044", size = 12661360, upload-time = "2023-07-31T14:52:56.694Z" }, + { url = "https://files.pythonhosted.org/packages/b7/db/4d37359e2c9cf8bf071c08b8a6f7374648a5ab2e76e2e22e3b808f81d507/numpy-1.25.2-cp310-cp310-win_amd64.whl", hash = "sha256:834b386f2b8210dca38c71a6e0f4fd6922f7d3fcff935dbe3a570945acb1b545", size = 15554633, upload-time = "2023-07-31T14:53:21.013Z" }, + { url = "https://files.pythonhosted.org/packages/c9/57/3cb8131a0e6d559501e088d3e685f4122e9ff9104c4b63e4dfd3a577b491/numpy-1.25.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c5462d19336db4560041517dbb7759c21d181a67cb01b36ca109b2ae37d32418", size = 20801693, upload-time = "2023-07-31T14:53:53.29Z" }, + { url = "https://files.pythonhosted.org/packages/86/a1/b8ef999c32f26a97b5f714887e21f96c12ae99a38583a0a96e65283ac0a1/numpy-1.25.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c5652ea24d33585ea39eb6a6a15dac87a1206a692719ff45d53c5282e66d4a8f", size = 14004130, upload-time = "2023-07-31T14:54:16.413Z" }, + { url = "https://files.pythonhosted.org/packages/50/67/3e966d99a07d60a21a21d7ec016e9e4c2642a86fea251ec68677daf71d4d/numpy-1.25.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d60fbae8e0019865fc4784745814cff1c421df5afee233db6d88ab4f14655a2", size = 14158219, upload-time = "2023-07-31T14:54:39.032Z" }, + { url = "https://files.pythonhosted.org/packages/32/6a/65dbc57a89078af9ff8bfcd4c0761a50172d90192eaeb1b6f56e5fbf1c3d/numpy-1.25.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60e7f0f7f6d0eee8364b9a6304c2845b9c491ac706048c7e8cf47b83123b8dbf", size = 18209344, upload-time = "2023-07-31T14:55:08.584Z" }, + { url = "https://files.pythonhosted.org/packages/cd/fe/e900cb2ebafae04b7570081cefc65b6fdd9e202b9b353572506cea5cafdf/numpy-1.25.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:bb33d5a1cf360304754913a350edda36d5b8c5331a8237268c48f91253c3a364", size = 18072378, upload-time = "2023-07-31T14:55:39.551Z" }, + { url = "https://files.pythonhosted.org/packages/5c/e4/990c6cb09f2cd1a3f53bcc4e489dad903faa01b058b625d84bb62d2e9391/numpy-1.25.2-cp311-cp311-win32.whl", hash = "sha256:5883c06bb92f2e6c8181df7b39971a5fb436288db58b5a1c3967702d4278691d", size = 12654351, upload-time = "2023-07-31T14:56:10.623Z" }, + { url = "https://files.pythonhosted.org/packages/72/b2/02770e60c4e2f7e158d923ab0dea4e9f146a2dbf267fec6d8dc61d475689/numpy-1.25.2-cp311-cp311-win_amd64.whl", hash = "sha256:5c97325a0ba6f9d041feb9390924614b60b99209a71a69c876f71052521d42a4", size = 15546748, upload-time = "2023-07-31T14:57:13.015Z" }, +] + +[[package]] +name = "numpydoc" +version = "1.8.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "sphinx" }, + { name = "tabulate" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ee/59/5d1d1afb0b9598e21e7cda477935188e39ef845bcf59cb65ac20845bfd45/numpydoc-1.8.0.tar.gz", hash = "sha256:022390ab7464a44f8737f79f8b31ce1d3cfa4b4af79ccaa1aac5e8368db587fb", size = 90445, upload-time = "2024-08-09T15:52:38.679Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6c/45/56d99ba9366476cd8548527667f01869279cedb9e66b28eb4dfb27701679/numpydoc-1.8.0-py3-none-any.whl", hash = "sha256:72024c7fd5e17375dec3608a27c03303e8ad00c81292667955c6fea7a3ccf541", size = 64003, upload-time = "2024-08-09T15:52:37.276Z" }, +] + +[[package]] +name = "openmatrix" +version = "0.3.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "tables", version = "3.10.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "tables", version = "3.10.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/39/a4/c890e3af726ab91e496017fb108f6335663d6936cf6a26b17e66776e1b4c/OpenMatrix-0.3.5.0.tar.gz", hash = "sha256:1c10155bbe65eb4f542c388813d8dad8f317dfe642fb4f616276c95e6654bdee", size = 11626, upload-time = "2019-12-21T17:52:58.945Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/e8/6a8227e97127a2a1db98f5a22ca565bfe942e89de0644837627920101213/OpenMatrix-0.3.5.0-py3-none-any.whl", hash = "sha256:eeeb1a628b5eeefb572361537df5ad6e4d12c3cda1233023c4c367815cab6b5f", size = 13003, upload-time = "2019-12-21T17:52:57.777Z" }, +] + +[[package]] +name = "overrides" +version = "7.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/36/86/b585f53236dec60aba864e050778b25045f857e17f6e5ea0ae95fe80edd2/overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a", size = 22812, upload-time = "2024-01-27T21:01:33.423Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/ab/fc8290c6a4c722e5514d80f62b2dc4c4df1a68a41d1364e625c35990fcf3/overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49", size = 17832, upload-time = "2024-01-27T21:01:31.393Z" }, +] + +[[package]] +name = "packaging" +version = "25.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, +] + +[[package]] +name = "pandas" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12'", +] +dependencies = [ + { name = "numpy", marker = "python_full_version >= '3.12'" }, + { name = "python-dateutil", marker = "python_full_version >= '3.12'" }, + { name = "pytz", marker = "python_full_version >= '3.12'" }, + { name = "tzdata", marker = "python_full_version >= '3.12'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6f/31/a4a8e7367856d9584d0332793edfe631182a9cca885f12dbe2dd77c10c4a/pandas-2.1.0.tar.gz", hash = "sha256:62c24c7fc59e42b775ce0679cfa7b14a5f9bfb7643cfbe708c960699e05fb918", size = 4263970, upload-time = "2023-08-30T13:14:24.318Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cf/ba/be69b6fa37c74699d333dbcbf0fc799eb31c35ce465651cdc4baf6a2e30d/pandas-2.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:40dd20439ff94f1b2ed55b393ecee9cb6f3b08104c2c40b0cb7186a2f0046242", size = 12118394, upload-time = "2023-08-30T13:13:26.12Z" }, + { url = "https://files.pythonhosted.org/packages/8d/08/1cf87814dcd87604807971abc743b12e635de36d820be7b50e2b6aa9e1b5/pandas-2.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d4f38e4fedeba580285eaac7ede4f686c6701a9e618d8a857b138a126d067f2f", size = 11306908, upload-time = "2023-08-30T13:13:29.631Z" }, + { url = "https://files.pythonhosted.org/packages/f3/21/8ea83d6990457c5253d9e6c40a3d2c8a3d383dfabb937b0a36a71ae43bde/pandas-2.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e6a0fe052cf27ceb29be9429428b4918f3740e37ff185658f40d8702f0b3e09", size = 15167237, upload-time = "2023-08-30T13:13:33.203Z" }, + { url = "https://files.pythonhosted.org/packages/fb/4f/4a4372b2e24439f559b73318683486831d75e59544ae02bf8dec8dd6f48b/pandas-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d81e1813191070440d4c7a413cb673052b3b4a984ffd86b8dd468c45742d3cc", size = 12662125, upload-time = "2023-08-30T13:13:36.509Z" }, + { url = "https://files.pythonhosted.org/packages/4c/a8/8ac4fa3970e64d7f62ebdcd47e507c2443d49090a3f402fa01f0e6e30b13/pandas-2.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:eb20252720b1cc1b7d0b2879ffc7e0542dd568f24d7c4b2347cb035206936421", size = 13465263, upload-time = "2023-08-30T13:13:39.998Z" }, + { url = "https://files.pythonhosted.org/packages/c5/89/ce1c7dc497f9a20644f6a7d2dd5bce6378a48321955178197fa3b55d6fe3/pandas-2.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:38f74ef7ebc0ffb43b3d633e23d74882bce7e27bfa09607f3c5d3e03ffd9a4a5", size = 11097660, upload-time = "2023-08-30T13:13:43.303Z" }, + { url = "https://files.pythonhosted.org/packages/c3/05/c5c73d54ceb7d5e4b8c046d39a1bb7f38ee76ea556a002cf3317514f0196/pandas-2.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cda72cc8c4761c8f1d97b169661f23a86b16fdb240bdc341173aee17e4d6cedd", size = 12015015, upload-time = "2023-08-30T13:13:46.682Z" }, + { url = "https://files.pythonhosted.org/packages/e5/cd/c941b51e95992968e3e8abc7180f33b952478abd6943062051517a808db7/pandas-2.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d97daeac0db8c993420b10da4f5f5b39b01fc9ca689a17844e07c0a35ac96b4b", size = 11173830, upload-time = "2023-08-30T13:13:49.313Z" }, + { url = "https://files.pythonhosted.org/packages/e2/25/bfb5c7573e2b884b18e5ea993ee7aeb5a6915ea687174349fdc5f979ceec/pandas-2.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8c58b1113892e0c8078f006a167cc210a92bdae23322bb4614f2f0b7a4b510f", size = 15176284, upload-time = "2023-08-30T13:13:52.824Z" }, + { url = "https://files.pythonhosted.org/packages/d9/26/895a49ebddb4211f2d777150f38ef9e538deff6df7e179a3624c663efc98/pandas-2.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:629124923bcf798965b054a540f9ccdfd60f71361255c81fa1ecd94a904b9dd3", size = 12630840, upload-time = "2023-08-30T13:13:55.634Z" }, + { url = "https://files.pythonhosted.org/packages/bc/ad/d1f0a867064f62ffde917876cc09cfd53352af2b1f147c140fd1943a0c7a/pandas-2.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:70cf866af3ab346a10debba8ea78077cf3a8cd14bd5e4bed3d41555a3280041c", size = 13463414, upload-time = "2023-08-30T13:13:58.774Z" }, + { url = "https://files.pythonhosted.org/packages/b7/f8/32d6b5aa4c4bc045fa2c4c58f88c325facc54721956c6313f0afea8ea853/pandas-2.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:d53c8c1001f6a192ff1de1efe03b31a423d0eee2e9e855e69d004308e046e694", size = 11043589, upload-time = "2023-08-30T13:14:02.051Z" }, +] + +[[package]] +name = "pandas" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.11.*'", + "python_full_version < '3.11'", +] +dependencies = [ + { name = "numpy", marker = "python_full_version < '3.12'" }, + { name = "python-dateutil", marker = "python_full_version < '3.12'" }, + { name = "pytz", marker = "python_full_version < '3.12'" }, + { name = "tzdata", marker = "python_full_version < '3.12'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/72/51/48f713c4c728d7c55ef7444ba5ea027c26998d96d1a40953b346438602fc/pandas-2.3.0.tar.gz", hash = "sha256:34600ab34ebf1131a7613a260a61dbe8b62c188ec0ea4c296da7c9a06b004133", size = 4484490, upload-time = "2025-06-05T03:27:54.133Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e2/2d/df6b98c736ba51b8eaa71229e8fcd91233a831ec00ab520e1e23090cc072/pandas-2.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:625466edd01d43b75b1883a64d859168e4556261a5035b32f9d743b67ef44634", size = 11527531, upload-time = "2025-06-05T03:25:48.648Z" }, + { url = "https://files.pythonhosted.org/packages/77/1c/3f8c331d223f86ba1d0ed7d3ed7fcf1501c6f250882489cc820d2567ddbf/pandas-2.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a6872d695c896f00df46b71648eea332279ef4077a409e2fe94220208b6bb675", size = 10774764, upload-time = "2025-06-05T03:25:53.228Z" }, + { url = "https://files.pythonhosted.org/packages/1b/45/d2599400fad7fe06b849bd40b52c65684bc88fbe5f0a474d0513d057a377/pandas-2.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4dd97c19bd06bc557ad787a15b6489d2614ddaab5d104a0310eb314c724b2d2", size = 11711963, upload-time = "2025-06-05T03:25:56.855Z" }, + { url = "https://files.pythonhosted.org/packages/66/f8/5508bc45e994e698dbc93607ee6b9b6eb67df978dc10ee2b09df80103d9e/pandas-2.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:034abd6f3db8b9880aaee98f4f5d4dbec7c4829938463ec046517220b2f8574e", size = 12349446, upload-time = "2025-06-05T03:26:01.292Z" }, + { url = "https://files.pythonhosted.org/packages/f7/fc/17851e1b1ea0c8456ba90a2f514c35134dd56d981cf30ccdc501a0adeac4/pandas-2.3.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:23c2b2dc5213810208ca0b80b8666670eb4660bbfd9d45f58592cc4ddcfd62e1", size = 12920002, upload-time = "2025-06-06T00:00:07.925Z" }, + { url = "https://files.pythonhosted.org/packages/a1/9b/8743be105989c81fa33f8e2a4e9822ac0ad4aaf812c00fee6bb09fc814f9/pandas-2.3.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:39ff73ec07be5e90330cc6ff5705c651ace83374189dcdcb46e6ff54b4a72cd6", size = 13651218, upload-time = "2025-06-05T03:26:09.731Z" }, + { url = "https://files.pythonhosted.org/packages/26/fa/8eeb2353f6d40974a6a9fd4081ad1700e2386cf4264a8f28542fd10b3e38/pandas-2.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:40cecc4ea5abd2921682b57532baea5588cc5f80f0231c624056b146887274d2", size = 11082485, upload-time = "2025-06-05T03:26:17.572Z" }, + { url = "https://files.pythonhosted.org/packages/96/1e/ba313812a699fe37bf62e6194265a4621be11833f5fce46d9eae22acb5d7/pandas-2.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8adff9f138fc614347ff33812046787f7d43b3cef7c0f0171b3340cae333f6ca", size = 11551836, upload-time = "2025-06-05T03:26:22.784Z" }, + { url = "https://files.pythonhosted.org/packages/1b/cc/0af9c07f8d714ea563b12383a7e5bde9479cf32413ee2f346a9c5a801f22/pandas-2.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e5f08eb9a445d07720776df6e641975665c9ea12c9d8a331e0f6890f2dcd76ef", size = 10807977, upload-time = "2025-06-05T16:50:11.109Z" }, + { url = "https://files.pythonhosted.org/packages/ee/3e/8c0fb7e2cf4a55198466ced1ca6a9054ae3b7e7630df7757031df10001fd/pandas-2.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fa35c266c8cd1a67d75971a1912b185b492d257092bdd2709bbdebe574ed228d", size = 11788230, upload-time = "2025-06-05T03:26:27.417Z" }, + { url = "https://files.pythonhosted.org/packages/14/22/b493ec614582307faf3f94989be0f7f0a71932ed6f56c9a80c0bb4a3b51e/pandas-2.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14a0cc77b0f089d2d2ffe3007db58f170dae9b9f54e569b299db871a3ab5bf46", size = 12370423, upload-time = "2025-06-05T03:26:34.142Z" }, + { url = "https://files.pythonhosted.org/packages/9f/74/b012addb34cda5ce855218a37b258c4e056a0b9b334d116e518d72638737/pandas-2.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c06f6f144ad0a1bf84699aeea7eff6068ca5c63ceb404798198af7eb86082e33", size = 12990594, upload-time = "2025-06-06T00:00:13.934Z" }, + { url = "https://files.pythonhosted.org/packages/95/81/b310e60d033ab64b08e66c635b94076488f0b6ce6a674379dd5b224fc51c/pandas-2.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ed16339bc354a73e0a609df36d256672c7d296f3f767ac07257801aa064ff73c", size = 13745952, upload-time = "2025-06-05T03:26:39.475Z" }, + { url = "https://files.pythonhosted.org/packages/25/ac/f6ee5250a8881b55bd3aecde9b8cfddea2f2b43e3588bca68a4e9aaf46c8/pandas-2.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:fa07e138b3f6c04addfeaf56cc7fdb96c3b68a3fe5e5401251f231fce40a0d7a", size = 11094534, upload-time = "2025-06-05T03:26:43.23Z" }, + { url = "https://files.pythonhosted.org/packages/94/46/24192607058dd607dbfacdd060a2370f6afb19c2ccb617406469b9aeb8e7/pandas-2.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2eb4728a18dcd2908c7fccf74a982e241b467d178724545a48d0caf534b38ebf", size = 11573865, upload-time = "2025-06-05T03:26:46.774Z" }, + { url = "https://files.pythonhosted.org/packages/9f/cc/ae8ea3b800757a70c9fdccc68b67dc0280a6e814efcf74e4211fd5dea1ca/pandas-2.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b9d8c3187be7479ea5c3d30c32a5d73d62a621166675063b2edd21bc47614027", size = 10702154, upload-time = "2025-06-05T16:50:14.439Z" }, + { url = "https://files.pythonhosted.org/packages/d8/ba/a7883d7aab3d24c6540a2768f679e7414582cc389876d469b40ec749d78b/pandas-2.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ff730713d4c4f2f1c860e36c005c7cefc1c7c80c21c0688fd605aa43c9fcf09", size = 11262180, upload-time = "2025-06-05T16:50:17.453Z" }, + { url = "https://files.pythonhosted.org/packages/01/a5/931fc3ad333d9d87b10107d948d757d67ebcfc33b1988d5faccc39c6845c/pandas-2.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba24af48643b12ffe49b27065d3babd52702d95ab70f50e1b34f71ca703e2c0d", size = 11991493, upload-time = "2025-06-05T03:26:51.813Z" }, + { url = "https://files.pythonhosted.org/packages/d7/bf/0213986830a92d44d55153c1d69b509431a972eb73f204242988c4e66e86/pandas-2.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:404d681c698e3c8a40a61d0cd9412cc7364ab9a9cc6e144ae2992e11a2e77a20", size = 12470733, upload-time = "2025-06-06T00:00:18.651Z" }, + { url = "https://files.pythonhosted.org/packages/a4/0e/21eb48a3a34a7d4bac982afc2c4eb5ab09f2d988bdf29d92ba9ae8e90a79/pandas-2.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6021910b086b3ca756755e86ddc64e0ddafd5e58e076c72cb1585162e5ad259b", size = 13212406, upload-time = "2025-06-05T03:26:55.992Z" }, + { url = "https://files.pythonhosted.org/packages/1f/d9/74017c4eec7a28892d8d6e31ae9de3baef71f5a5286e74e6b7aad7f8c837/pandas-2.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:094e271a15b579650ebf4c5155c05dcd2a14fd4fdd72cf4854b2f7ad31ea30be", size = 10976199, upload-time = "2025-06-05T03:26:59.594Z" }, + { url = "https://files.pythonhosted.org/packages/d3/57/5cb75a56a4842bbd0511c3d1c79186d8315b82dac802118322b2de1194fe/pandas-2.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2c7e2fc25f89a49a11599ec1e76821322439d90820108309bf42130d2f36c983", size = 11518913, upload-time = "2025-06-05T03:27:02.757Z" }, + { url = "https://files.pythonhosted.org/packages/05/01/0c8785610e465e4948a01a059562176e4c8088aa257e2e074db868f86d4e/pandas-2.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c6da97aeb6a6d233fb6b17986234cc723b396b50a3c6804776351994f2a658fd", size = 10655249, upload-time = "2025-06-05T16:50:20.17Z" }, + { url = "https://files.pythonhosted.org/packages/e8/6a/47fd7517cd8abe72a58706aab2b99e9438360d36dcdb052cf917b7bf3bdc/pandas-2.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb32dc743b52467d488e7a7c8039b821da2826a9ba4f85b89ea95274f863280f", size = 11328359, upload-time = "2025-06-05T03:27:06.431Z" }, + { url = "https://files.pythonhosted.org/packages/2a/b3/463bfe819ed60fb7e7ddffb4ae2ee04b887b3444feee6c19437b8f834837/pandas-2.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:213cd63c43263dbb522c1f8a7c9d072e25900f6975596f883f4bebd77295d4f3", size = 12024789, upload-time = "2025-06-05T03:27:09.875Z" }, + { url = "https://files.pythonhosted.org/packages/04/0c/e0704ccdb0ac40aeb3434d1c641c43d05f75c92e67525df39575ace35468/pandas-2.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1d2b33e68d0ce64e26a4acc2e72d747292084f4e8db4c847c6f5f6cbe56ed6d8", size = 12480734, upload-time = "2025-06-06T00:00:22.246Z" }, + { url = "https://files.pythonhosted.org/packages/e9/df/815d6583967001153bb27f5cf075653d69d51ad887ebbf4cfe1173a1ac58/pandas-2.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:430a63bae10b5086995db1b02694996336e5a8ac9a96b4200572b413dfdfccb9", size = 13223381, upload-time = "2025-06-05T03:27:15.641Z" }, + { url = "https://files.pythonhosted.org/packages/79/88/ca5973ed07b7f484c493e941dbff990861ca55291ff7ac67c815ce347395/pandas-2.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:4930255e28ff5545e2ca404637bcc56f031893142773b3468dc021c6c32a1390", size = 10970135, upload-time = "2025-06-05T03:27:24.131Z" }, + { url = "https://files.pythonhosted.org/packages/24/fb/0994c14d1f7909ce83f0b1fb27958135513c4f3f2528bde216180aa73bfc/pandas-2.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:f925f1ef673b4bd0271b1809b72b3270384f2b7d9d14a189b12b7fc02574d575", size = 12141356, upload-time = "2025-06-05T03:27:34.547Z" }, + { url = "https://files.pythonhosted.org/packages/9d/a2/9b903e5962134497ac4f8a96f862ee3081cb2506f69f8e4778ce3d9c9d82/pandas-2.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e78ad363ddb873a631e92a3c063ade1ecfb34cae71e9a2be6ad100f875ac1042", size = 11474674, upload-time = "2025-06-05T03:27:39.448Z" }, + { url = "https://files.pythonhosted.org/packages/81/3a/3806d041bce032f8de44380f866059437fb79e36d6b22c82c187e65f765b/pandas-2.3.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:951805d146922aed8357e4cc5671b8b0b9be1027f0619cea132a9f3f65f2f09c", size = 11439876, upload-time = "2025-06-05T03:27:43.652Z" }, + { url = "https://files.pythonhosted.org/packages/15/aa/3fc3181d12b95da71f5c2537c3e3b3af6ab3a8c392ab41ebb766e0929bc6/pandas-2.3.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a881bc1309f3fce34696d07b00f13335c41f5f5a8770a33b09ebe23261cfc67", size = 11966182, upload-time = "2025-06-05T03:27:47.652Z" }, + { url = "https://files.pythonhosted.org/packages/37/e7/e12f2d9b0a2c4a2cc86e2aabff7ccfd24f03e597d770abfa2acd313ee46b/pandas-2.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e1991bbb96f4050b09b5f811253c4f3cf05ee89a589379aa36cd623f21a31d6f", size = 12547686, upload-time = "2025-06-06T00:00:26.142Z" }, + { url = "https://files.pythonhosted.org/packages/39/c2/646d2e93e0af70f4e5359d870a63584dacbc324b54d73e6b3267920ff117/pandas-2.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:bb3be958022198531eb7ec2008cfc78c5b1eed51af8600c6c5d9160d89d8d249", size = 13231847, upload-time = "2025-06-05T03:27:51.465Z" }, +] + +[[package]] +name = "pandera" +version = "0.18.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "multimethod" }, + { name = "numpy" }, + { name = "packaging" }, + { name = "pandas", version = "2.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, + { name = "pandas", version = "2.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, + { name = "pydantic" }, + { name = "typeguard" }, + { name = "typing-inspect" }, + { name = "wrapt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/59/60/d928125aca458c0dcaa07fe231c9149137ef038697eae872332a1b1136e0/pandera-0.18.0.tar.gz", hash = "sha256:97ab33d884362c0bb99668a12be2855d15c1a71f4934c588a999947b47764bc1", size = 165999, upload-time = "2023-12-08T21:11:37.019Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f5/2b/c01ef6aad281332f2628a4ae9c3cd8ba6fd632e547e9a645ffe18aeaa94f/pandera-0.18.0-py3-none-any.whl", hash = "sha256:fe2da835a16df5a7e49fbfb828f1eeaea9d6f4534f124630957e64fef53e7e73", size = 209007, upload-time = "2023-12-08T21:11:34.688Z" }, +] + +[[package]] +name = "pandocfilters" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/70/6f/3dd4940bbe001c06a65f88e36bad298bc7a0de5036115639926b0c5c0458/pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e", size = 8454, upload-time = "2024-01-18T20:08:13.726Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc", size = 8663, upload-time = "2024-01-18T20:08:11.28Z" }, +] + +[[package]] +name = "parso" +version = "0.8.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/66/94/68e2e17afaa9169cf6412ab0f28623903be73d1b32e208d9e8e541bb086d/parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d", size = 400609, upload-time = "2024-04-05T09:43:55.897Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18", size = 103650, upload-time = "2024-04-05T09:43:53.299Z" }, +] + +[[package]] +name = "partd" +version = "1.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "locket" }, + { name = "toolz" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b2/3a/3f06f34820a31257ddcabdfafc2672c5816be79c7e353b02c1f318daa7d4/partd-1.4.2.tar.gz", hash = "sha256:d022c33afbdc8405c226621b015e8067888173d85f7f5ecebb3cafed9a20f02c", size = 21029, upload-time = "2024-05-06T19:51:41.945Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/e7/40fb618334dcdf7c5a316c0e7343c5cd82d3d866edc100d98e29bc945ecd/partd-1.4.2-py3-none-any.whl", hash = "sha256:978e4ac767ec4ba5b86c6eaa52e5a2a3bc748a2ca839e8cc798f1cc6ce6efb0f", size = 18905, upload-time = "2024-05-06T19:51:39.271Z" }, +] + +[[package]] +name = "pathspec" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043, upload-time = "2023-12-10T22:30:45Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload-time = "2023-12-10T22:30:43.14Z" }, +] + +[[package]] +name = "pexpect" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ptyprocess" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450, upload-time = "2023-11-25T09:07:26.339Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772, upload-time = "2023-11-25T06:56:14.81Z" }, +] + +[[package]] +name = "pillow" +version = "11.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/af/cb/bb5c01fcd2a69335b86c22142b2bccfc3464087efb7fd382eee5ffc7fdf7/pillow-11.2.1.tar.gz", hash = "sha256:a64dd61998416367b7ef979b73d3a85853ba9bec4c2925f74e588879a58716b6", size = 47026707, upload-time = "2025-04-12T17:50:03.289Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0d/8b/b158ad57ed44d3cc54db8d68ad7c0a58b8fc0e4c7a3f995f9d62d5b464a1/pillow-11.2.1-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:d57a75d53922fc20c165016a20d9c44f73305e67c351bbc60d1adaf662e74047", size = 3198442, upload-time = "2025-04-12T17:47:10.666Z" }, + { url = "https://files.pythonhosted.org/packages/b1/f8/bb5d956142f86c2d6cc36704943fa761f2d2e4c48b7436fd0a85c20f1713/pillow-11.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:127bf6ac4a5b58b3d32fc8289656f77f80567d65660bc46f72c0d77e6600cc95", size = 3030553, upload-time = "2025-04-12T17:47:13.153Z" }, + { url = "https://files.pythonhosted.org/packages/22/7f/0e413bb3e2aa797b9ca2c5c38cb2e2e45d88654e5b12da91ad446964cfae/pillow-11.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4ba4be812c7a40280629e55ae0b14a0aafa150dd6451297562e1764808bbe61", size = 4405503, upload-time = "2025-04-12T17:47:15.36Z" }, + { url = "https://files.pythonhosted.org/packages/f3/b4/cc647f4d13f3eb837d3065824aa58b9bcf10821f029dc79955ee43f793bd/pillow-11.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8bd62331e5032bc396a93609982a9ab6b411c05078a52f5fe3cc59234a3abd1", size = 4490648, upload-time = "2025-04-12T17:47:17.37Z" }, + { url = "https://files.pythonhosted.org/packages/c2/6f/240b772a3b35cdd7384166461567aa6713799b4e78d180c555bd284844ea/pillow-11.2.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:562d11134c97a62fe3af29581f083033179f7ff435f78392565a1ad2d1c2c45c", size = 4508937, upload-time = "2025-04-12T17:47:19.066Z" }, + { url = "https://files.pythonhosted.org/packages/f3/5e/7ca9c815ade5fdca18853db86d812f2f188212792780208bdb37a0a6aef4/pillow-11.2.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:c97209e85b5be259994eb5b69ff50c5d20cca0f458ef9abd835e262d9d88b39d", size = 4599802, upload-time = "2025-04-12T17:47:21.404Z" }, + { url = "https://files.pythonhosted.org/packages/02/81/c3d9d38ce0c4878a77245d4cf2c46d45a4ad0f93000227910a46caff52f3/pillow-11.2.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0c3e6d0f59171dfa2e25d7116217543310908dfa2770aa64b8f87605f8cacc97", size = 4576717, upload-time = "2025-04-12T17:47:23.571Z" }, + { url = "https://files.pythonhosted.org/packages/42/49/52b719b89ac7da3185b8d29c94d0e6aec8140059e3d8adcaa46da3751180/pillow-11.2.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cc1c3bc53befb6096b84165956e886b1729634a799e9d6329a0c512ab651e579", size = 4654874, upload-time = "2025-04-12T17:47:25.783Z" }, + { url = "https://files.pythonhosted.org/packages/5b/0b/ede75063ba6023798267023dc0d0401f13695d228194d2242d5a7ba2f964/pillow-11.2.1-cp310-cp310-win32.whl", hash = "sha256:312c77b7f07ab2139924d2639860e084ec2a13e72af54d4f08ac843a5fc9c79d", size = 2331717, upload-time = "2025-04-12T17:47:28.922Z" }, + { url = "https://files.pythonhosted.org/packages/ed/3c/9831da3edea527c2ed9a09f31a2c04e77cd705847f13b69ca60269eec370/pillow-11.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:9bc7ae48b8057a611e5fe9f853baa88093b9a76303937449397899385da06fad", size = 2676204, upload-time = "2025-04-12T17:47:31.283Z" }, + { url = "https://files.pythonhosted.org/packages/01/97/1f66ff8a1503d8cbfc5bae4dc99d54c6ec1e22ad2b946241365320caabc2/pillow-11.2.1-cp310-cp310-win_arm64.whl", hash = "sha256:2728567e249cdd939f6cc3d1f049595c66e4187f3c34078cbc0a7d21c47482d2", size = 2414767, upload-time = "2025-04-12T17:47:34.655Z" }, + { url = "https://files.pythonhosted.org/packages/68/08/3fbf4b98924c73037a8e8b4c2c774784805e0fb4ebca6c5bb60795c40125/pillow-11.2.1-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35ca289f712ccfc699508c4658a1d14652e8033e9b69839edf83cbdd0ba39e70", size = 3198450, upload-time = "2025-04-12T17:47:37.135Z" }, + { url = "https://files.pythonhosted.org/packages/84/92/6505b1af3d2849d5e714fc75ba9e69b7255c05ee42383a35a4d58f576b16/pillow-11.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0409af9f829f87a2dfb7e259f78f317a5351f2045158be321fd135973fff7bf", size = 3030550, upload-time = "2025-04-12T17:47:39.345Z" }, + { url = "https://files.pythonhosted.org/packages/3c/8c/ac2f99d2a70ff966bc7eb13dacacfaab57c0549b2ffb351b6537c7840b12/pillow-11.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4e5c5edee874dce4f653dbe59db7c73a600119fbea8d31f53423586ee2aafd7", size = 4415018, upload-time = "2025-04-12T17:47:41.128Z" }, + { url = "https://files.pythonhosted.org/packages/1f/e3/0a58b5d838687f40891fff9cbaf8669f90c96b64dc8f91f87894413856c6/pillow-11.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b93a07e76d13bff9444f1a029e0af2964e654bfc2e2c2d46bfd080df5ad5f3d8", size = 4498006, upload-time = "2025-04-12T17:47:42.912Z" }, + { url = "https://files.pythonhosted.org/packages/21/f5/6ba14718135f08fbfa33308efe027dd02b781d3f1d5c471444a395933aac/pillow-11.2.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:e6def7eed9e7fa90fde255afaf08060dc4b343bbe524a8f69bdd2a2f0018f600", size = 4517773, upload-time = "2025-04-12T17:47:44.611Z" }, + { url = "https://files.pythonhosted.org/packages/20/f2/805ad600fc59ebe4f1ba6129cd3a75fb0da126975c8579b8f57abeb61e80/pillow-11.2.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8f4f3724c068be008c08257207210c138d5f3731af6c155a81c2b09a9eb3a788", size = 4607069, upload-time = "2025-04-12T17:47:46.46Z" }, + { url = "https://files.pythonhosted.org/packages/71/6b/4ef8a288b4bb2e0180cba13ca0a519fa27aa982875882392b65131401099/pillow-11.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a0a6709b47019dff32e678bc12c63008311b82b9327613f534e496dacaefb71e", size = 4583460, upload-time = "2025-04-12T17:47:49.255Z" }, + { url = "https://files.pythonhosted.org/packages/62/ae/f29c705a09cbc9e2a456590816e5c234382ae5d32584f451c3eb41a62062/pillow-11.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f6b0c664ccb879109ee3ca702a9272d877f4fcd21e5eb63c26422fd6e415365e", size = 4661304, upload-time = "2025-04-12T17:47:51.067Z" }, + { url = "https://files.pythonhosted.org/packages/6e/1a/c8217b6f2f73794a5e219fbad087701f412337ae6dbb956db37d69a9bc43/pillow-11.2.1-cp311-cp311-win32.whl", hash = "sha256:cc5d875d56e49f112b6def6813c4e3d3036d269c008bf8aef72cd08d20ca6df6", size = 2331809, upload-time = "2025-04-12T17:47:54.425Z" }, + { url = "https://files.pythonhosted.org/packages/e2/72/25a8f40170dc262e86e90f37cb72cb3de5e307f75bf4b02535a61afcd519/pillow-11.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:0f5c7eda47bf8e3c8a283762cab94e496ba977a420868cb819159980b6709193", size = 2676338, upload-time = "2025-04-12T17:47:56.535Z" }, + { url = "https://files.pythonhosted.org/packages/06/9e/76825e39efee61efea258b479391ca77d64dbd9e5804e4ad0fa453b4ba55/pillow-11.2.1-cp311-cp311-win_arm64.whl", hash = "sha256:4d375eb838755f2528ac8cbc926c3e31cc49ca4ad0cf79cff48b20e30634a4a7", size = 2414918, upload-time = "2025-04-12T17:47:58.217Z" }, + { url = "https://files.pythonhosted.org/packages/c7/40/052610b15a1b8961f52537cc8326ca6a881408bc2bdad0d852edeb6ed33b/pillow-11.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:78afba22027b4accef10dbd5eed84425930ba41b3ea0a86fa8d20baaf19d807f", size = 3190185, upload-time = "2025-04-12T17:48:00.417Z" }, + { url = "https://files.pythonhosted.org/packages/e5/7e/b86dbd35a5f938632093dc40d1682874c33dcfe832558fc80ca56bfcb774/pillow-11.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:78092232a4ab376a35d68c4e6d5e00dfd73454bd12b230420025fbe178ee3b0b", size = 3030306, upload-time = "2025-04-12T17:48:02.391Z" }, + { url = "https://files.pythonhosted.org/packages/a4/5c/467a161f9ed53e5eab51a42923c33051bf8d1a2af4626ac04f5166e58e0c/pillow-11.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25a5f306095c6780c52e6bbb6109624b95c5b18e40aab1c3041da3e9e0cd3e2d", size = 4416121, upload-time = "2025-04-12T17:48:04.554Z" }, + { url = "https://files.pythonhosted.org/packages/62/73/972b7742e38ae0e2ac76ab137ca6005dcf877480da0d9d61d93b613065b4/pillow-11.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c7b29dbd4281923a2bfe562acb734cee96bbb129e96e6972d315ed9f232bef4", size = 4501707, upload-time = "2025-04-12T17:48:06.831Z" }, + { url = "https://files.pythonhosted.org/packages/e4/3a/427e4cb0b9e177efbc1a84798ed20498c4f233abde003c06d2650a6d60cb/pillow-11.2.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:3e645b020f3209a0181a418bffe7b4a93171eef6c4ef6cc20980b30bebf17b7d", size = 4522921, upload-time = "2025-04-12T17:48:09.229Z" }, + { url = "https://files.pythonhosted.org/packages/fe/7c/d8b1330458e4d2f3f45d9508796d7caf0c0d3764c00c823d10f6f1a3b76d/pillow-11.2.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b2dbea1012ccb784a65349f57bbc93730b96e85b42e9bf7b01ef40443db720b4", size = 4612523, upload-time = "2025-04-12T17:48:11.631Z" }, + { url = "https://files.pythonhosted.org/packages/b3/2f/65738384e0b1acf451de5a573d8153fe84103772d139e1e0bdf1596be2ea/pillow-11.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:da3104c57bbd72948d75f6a9389e6727d2ab6333c3617f0a89d72d4940aa0443", size = 4587836, upload-time = "2025-04-12T17:48:13.592Z" }, + { url = "https://files.pythonhosted.org/packages/6a/c5/e795c9f2ddf3debb2dedd0df889f2fe4b053308bb59a3cc02a0cd144d641/pillow-11.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:598174aef4589af795f66f9caab87ba4ff860ce08cd5bb447c6fc553ffee603c", size = 4669390, upload-time = "2025-04-12T17:48:15.938Z" }, + { url = "https://files.pythonhosted.org/packages/96/ae/ca0099a3995976a9fce2f423166f7bff9b12244afdc7520f6ed38911539a/pillow-11.2.1-cp312-cp312-win32.whl", hash = "sha256:1d535df14716e7f8776b9e7fee118576d65572b4aad3ed639be9e4fa88a1cad3", size = 2332309, upload-time = "2025-04-12T17:48:17.885Z" }, + { url = "https://files.pythonhosted.org/packages/7c/18/24bff2ad716257fc03da964c5e8f05d9790a779a8895d6566e493ccf0189/pillow-11.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:14e33b28bf17c7a38eede290f77db7c664e4eb01f7869e37fa98a5aa95978941", size = 2676768, upload-time = "2025-04-12T17:48:19.655Z" }, + { url = "https://files.pythonhosted.org/packages/da/bb/e8d656c9543276517ee40184aaa39dcb41e683bca121022f9323ae11b39d/pillow-11.2.1-cp312-cp312-win_arm64.whl", hash = "sha256:21e1470ac9e5739ff880c211fc3af01e3ae505859392bf65458c224d0bf283eb", size = 2415087, upload-time = "2025-04-12T17:48:21.991Z" }, + { url = "https://files.pythonhosted.org/packages/36/9c/447528ee3776e7ab8897fe33697a7ff3f0475bb490c5ac1456a03dc57956/pillow-11.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:fdec757fea0b793056419bca3e9932eb2b0ceec90ef4813ea4c1e072c389eb28", size = 3190098, upload-time = "2025-04-12T17:48:23.915Z" }, + { url = "https://files.pythonhosted.org/packages/b5/09/29d5cd052f7566a63e5b506fac9c60526e9ecc553825551333e1e18a4858/pillow-11.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b0e130705d568e2f43a17bcbe74d90958e8a16263868a12c3e0d9c8162690830", size = 3030166, upload-time = "2025-04-12T17:48:25.738Z" }, + { url = "https://files.pythonhosted.org/packages/71/5d/446ee132ad35e7600652133f9c2840b4799bbd8e4adba881284860da0a36/pillow-11.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bdb5e09068332578214cadd9c05e3d64d99e0e87591be22a324bdbc18925be0", size = 4408674, upload-time = "2025-04-12T17:48:27.908Z" }, + { url = "https://files.pythonhosted.org/packages/69/5f/cbe509c0ddf91cc3a03bbacf40e5c2339c4912d16458fcb797bb47bcb269/pillow-11.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d189ba1bebfbc0c0e529159631ec72bb9e9bc041f01ec6d3233d6d82eb823bc1", size = 4496005, upload-time = "2025-04-12T17:48:29.888Z" }, + { url = "https://files.pythonhosted.org/packages/f9/b3/dd4338d8fb8a5f312021f2977fb8198a1184893f9b00b02b75d565c33b51/pillow-11.2.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:191955c55d8a712fab8934a42bfefbf99dd0b5875078240943f913bb66d46d9f", size = 4518707, upload-time = "2025-04-12T17:48:31.874Z" }, + { url = "https://files.pythonhosted.org/packages/13/eb/2552ecebc0b887f539111c2cd241f538b8ff5891b8903dfe672e997529be/pillow-11.2.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:ad275964d52e2243430472fc5d2c2334b4fc3ff9c16cb0a19254e25efa03a155", size = 4610008, upload-time = "2025-04-12T17:48:34.422Z" }, + { url = "https://files.pythonhosted.org/packages/72/d1/924ce51bea494cb6e7959522d69d7b1c7e74f6821d84c63c3dc430cbbf3b/pillow-11.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:750f96efe0597382660d8b53e90dd1dd44568a8edb51cb7f9d5d918b80d4de14", size = 4585420, upload-time = "2025-04-12T17:48:37.641Z" }, + { url = "https://files.pythonhosted.org/packages/43/ab/8f81312d255d713b99ca37479a4cb4b0f48195e530cdc1611990eb8fd04b/pillow-11.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fe15238d3798788d00716637b3d4e7bb6bde18b26e5d08335a96e88564a36b6b", size = 4667655, upload-time = "2025-04-12T17:48:39.652Z" }, + { url = "https://files.pythonhosted.org/packages/94/86/8f2e9d2dc3d308dfd137a07fe1cc478df0a23d42a6c4093b087e738e4827/pillow-11.2.1-cp313-cp313-win32.whl", hash = "sha256:3fe735ced9a607fee4f481423a9c36701a39719252a9bb251679635f99d0f7d2", size = 2332329, upload-time = "2025-04-12T17:48:41.765Z" }, + { url = "https://files.pythonhosted.org/packages/6d/ec/1179083b8d6067a613e4d595359b5fdea65d0a3b7ad623fee906e1b3c4d2/pillow-11.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:74ee3d7ecb3f3c05459ba95eed5efa28d6092d751ce9bf20e3e253a4e497e691", size = 2676388, upload-time = "2025-04-12T17:48:43.625Z" }, + { url = "https://files.pythonhosted.org/packages/23/f1/2fc1e1e294de897df39fa8622d829b8828ddad938b0eaea256d65b84dd72/pillow-11.2.1-cp313-cp313-win_arm64.whl", hash = "sha256:5119225c622403afb4b44bad4c1ca6c1f98eed79db8d3bc6e4e160fc6339d66c", size = 2414950, upload-time = "2025-04-12T17:48:45.475Z" }, + { url = "https://files.pythonhosted.org/packages/c4/3e/c328c48b3f0ead7bab765a84b4977acb29f101d10e4ef57a5e3400447c03/pillow-11.2.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8ce2e8411c7aaef53e6bb29fe98f28cd4fbd9a1d9be2eeea434331aac0536b22", size = 3192759, upload-time = "2025-04-12T17:48:47.866Z" }, + { url = "https://files.pythonhosted.org/packages/18/0e/1c68532d833fc8b9f404d3a642991441d9058eccd5606eab31617f29b6d4/pillow-11.2.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:9ee66787e095127116d91dea2143db65c7bb1e232f617aa5957c0d9d2a3f23a7", size = 3033284, upload-time = "2025-04-12T17:48:50.189Z" }, + { url = "https://files.pythonhosted.org/packages/b7/cb/6faf3fb1e7705fd2db74e070f3bf6f88693601b0ed8e81049a8266de4754/pillow-11.2.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9622e3b6c1d8b551b6e6f21873bdcc55762b4b2126633014cea1803368a9aa16", size = 4445826, upload-time = "2025-04-12T17:48:52.346Z" }, + { url = "https://files.pythonhosted.org/packages/07/94/8be03d50b70ca47fb434a358919d6a8d6580f282bbb7af7e4aa40103461d/pillow-11.2.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63b5dff3a68f371ea06025a1a6966c9a1e1ee452fc8020c2cd0ea41b83e9037b", size = 4527329, upload-time = "2025-04-12T17:48:54.403Z" }, + { url = "https://files.pythonhosted.org/packages/fd/a4/bfe78777076dc405e3bd2080bc32da5ab3945b5a25dc5d8acaa9de64a162/pillow-11.2.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:31df6e2d3d8fc99f993fd253e97fae451a8db2e7207acf97859732273e108406", size = 4549049, upload-time = "2025-04-12T17:48:56.383Z" }, + { url = "https://files.pythonhosted.org/packages/65/4d/eaf9068dc687c24979e977ce5677e253624bd8b616b286f543f0c1b91662/pillow-11.2.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:062b7a42d672c45a70fa1f8b43d1d38ff76b63421cbbe7f88146b39e8a558d91", size = 4635408, upload-time = "2025-04-12T17:48:58.782Z" }, + { url = "https://files.pythonhosted.org/packages/1d/26/0fd443365d9c63bc79feb219f97d935cd4b93af28353cba78d8e77b61719/pillow-11.2.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4eb92eca2711ef8be42fd3f67533765d9fd043b8c80db204f16c8ea62ee1a751", size = 4614863, upload-time = "2025-04-12T17:49:00.709Z" }, + { url = "https://files.pythonhosted.org/packages/49/65/dca4d2506be482c2c6641cacdba5c602bc76d8ceb618fd37de855653a419/pillow-11.2.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f91ebf30830a48c825590aede79376cb40f110b387c17ee9bd59932c961044f9", size = 4692938, upload-time = "2025-04-12T17:49:02.946Z" }, + { url = "https://files.pythonhosted.org/packages/b3/92/1ca0c3f09233bd7decf8f7105a1c4e3162fb9142128c74adad0fb361b7eb/pillow-11.2.1-cp313-cp313t-win32.whl", hash = "sha256:e0b55f27f584ed623221cfe995c912c61606be8513bfa0e07d2c674b4516d9dd", size = 2335774, upload-time = "2025-04-12T17:49:04.889Z" }, + { url = "https://files.pythonhosted.org/packages/a5/ac/77525347cb43b83ae905ffe257bbe2cc6fd23acb9796639a1f56aa59d191/pillow-11.2.1-cp313-cp313t-win_amd64.whl", hash = "sha256:36d6b82164c39ce5482f649b437382c0fb2395eabc1e2b1702a6deb8ad647d6e", size = 2681895, upload-time = "2025-04-12T17:49:06.635Z" }, + { url = "https://files.pythonhosted.org/packages/67/32/32dc030cfa91ca0fc52baebbba2e009bb001122a1daa8b6a79ad830b38d3/pillow-11.2.1-cp313-cp313t-win_arm64.whl", hash = "sha256:225c832a13326e34f212d2072982bb1adb210e0cc0b153e688743018c94a2681", size = 2417234, upload-time = "2025-04-12T17:49:08.399Z" }, + { url = "https://files.pythonhosted.org/packages/33/49/c8c21e4255b4f4a2c0c68ac18125d7f5460b109acc6dfdef1a24f9b960ef/pillow-11.2.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:9b7b0d4fd2635f54ad82785d56bc0d94f147096493a79985d0ab57aedd563156", size = 3181727, upload-time = "2025-04-12T17:49:31.898Z" }, + { url = "https://files.pythonhosted.org/packages/6d/f1/f7255c0838f8c1ef6d55b625cfb286835c17e8136ce4351c5577d02c443b/pillow-11.2.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:aa442755e31c64037aa7c1cb186e0b369f8416c567381852c63444dd666fb772", size = 2999833, upload-time = "2025-04-12T17:49:34.2Z" }, + { url = "https://files.pythonhosted.org/packages/e2/57/9968114457bd131063da98d87790d080366218f64fa2943b65ac6739abb3/pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0d3348c95b766f54b76116d53d4cb171b52992a1027e7ca50c81b43b9d9e363", size = 3437472, upload-time = "2025-04-12T17:49:36.294Z" }, + { url = "https://files.pythonhosted.org/packages/b2/1b/e35d8a158e21372ecc48aac9c453518cfe23907bb82f950d6e1c72811eb0/pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85d27ea4c889342f7e35f6d56e7e1cb345632ad592e8c51b693d7b7556043ce0", size = 3459976, upload-time = "2025-04-12T17:49:38.988Z" }, + { url = "https://files.pythonhosted.org/packages/26/da/2c11d03b765efff0ccc473f1c4186dc2770110464f2177efaed9cf6fae01/pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:bf2c33d6791c598142f00c9c4c7d47f6476731c31081331664eb26d6ab583e01", size = 3527133, upload-time = "2025-04-12T17:49:40.985Z" }, + { url = "https://files.pythonhosted.org/packages/79/1a/4e85bd7cadf78412c2a3069249a09c32ef3323650fd3005c97cca7aa21df/pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e616e7154c37669fc1dfc14584f11e284e05d1c650e1c0f972f281c4ccc53193", size = 3571555, upload-time = "2025-04-12T17:49:42.964Z" }, + { url = "https://files.pythonhosted.org/packages/69/03/239939915216de1e95e0ce2334bf17a7870ae185eb390fab6d706aadbfc0/pillow-11.2.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:39ad2e0f424394e3aebc40168845fee52df1394a4673a6ee512d840d14ab3013", size = 2674713, upload-time = "2025-04-12T17:49:44.944Z" }, + { url = "https://files.pythonhosted.org/packages/a4/ad/2613c04633c7257d9481ab21d6b5364b59fc5d75faafd7cb8693523945a3/pillow-11.2.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:80f1df8dbe9572b4b7abdfa17eb5d78dd620b1d55d9e25f834efdbee872d3aed", size = 3181734, upload-time = "2025-04-12T17:49:46.789Z" }, + { url = "https://files.pythonhosted.org/packages/a4/fd/dcdda4471ed667de57bb5405bb42d751e6cfdd4011a12c248b455c778e03/pillow-11.2.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ea926cfbc3957090becbcbbb65ad177161a2ff2ad578b5a6ec9bb1e1cd78753c", size = 2999841, upload-time = "2025-04-12T17:49:48.812Z" }, + { url = "https://files.pythonhosted.org/packages/ac/89/8a2536e95e77432833f0db6fd72a8d310c8e4272a04461fb833eb021bf94/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:738db0e0941ca0376804d4de6a782c005245264edaa253ffce24e5a15cbdc7bd", size = 3437470, upload-time = "2025-04-12T17:49:50.831Z" }, + { url = "https://files.pythonhosted.org/packages/9d/8f/abd47b73c60712f88e9eda32baced7bfc3e9bd6a7619bb64b93acff28c3e/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9db98ab6565c69082ec9b0d4e40dd9f6181dab0dd236d26f7a50b8b9bfbd5076", size = 3460013, upload-time = "2025-04-12T17:49:53.278Z" }, + { url = "https://files.pythonhosted.org/packages/f6/20/5c0a0aa83b213b7a07ec01e71a3d6ea2cf4ad1d2c686cc0168173b6089e7/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:036e53f4170e270ddb8797d4c590e6dd14d28e15c7da375c18978045f7e6c37b", size = 3527165, upload-time = "2025-04-12T17:49:55.164Z" }, + { url = "https://files.pythonhosted.org/packages/58/0e/2abab98a72202d91146abc839e10c14f7cf36166f12838ea0c4db3ca6ecb/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:14f73f7c291279bd65fda51ee87affd7c1e097709f7fdd0188957a16c264601f", size = 3571586, upload-time = "2025-04-12T17:49:57.171Z" }, + { url = "https://files.pythonhosted.org/packages/21/2c/5e05f58658cf49b6667762cca03d6e7d85cededde2caf2ab37b81f80e574/pillow-11.2.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:208653868d5c9ecc2b327f9b9ef34e0e42a4cdd172c2988fd81d62d2bc9bc044", size = 2674751, upload-time = "2025-04-12T17:49:59.628Z" }, +] + +[[package]] +name = "platformdirs" +version = "4.3.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/8b/3c73abc9c759ecd3f1f7ceff6685840859e8070c4d947c93fae71f6a0bf2/platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", size = 21362, upload-time = "2025-05-07T22:47:42.121Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4", size = 18567, upload-time = "2025-05-07T22:47:40.376Z" }, +] + +[[package]] +name = "pluggy" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, +] + +[[package]] +name = "pre-commit" +version = "4.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cfgv" }, + { name = "identify" }, + { name = "nodeenv" }, + { name = "pyyaml" }, + { name = "virtualenv" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/08/39/679ca9b26c7bb2999ff122d50faa301e49af82ca9c066ec061cfbc0c6784/pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146", size = 193424, upload-time = "2025-03-18T21:35:20.987Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/74/a88bf1b1efeae488a0c0b7bdf71429c313722d1fc0f377537fbe554e6180/pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd", size = 220707, upload-time = "2025-03-18T21:35:19.343Z" }, +] + +[[package]] +name = "prometheus-client" +version = "0.22.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/cf/40dde0a2be27cc1eb41e333d1a674a74ce8b8b0457269cc640fd42b07cf7/prometheus_client-0.22.1.tar.gz", hash = "sha256:190f1331e783cf21eb60bca559354e0a4d4378facecf78f5428c39b675d20d28", size = 69746, upload-time = "2025-06-02T14:29:01.152Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/ae/ec06af4fe3ee72d16973474f122541746196aaa16cea6f66d18b963c6177/prometheus_client-0.22.1-py3-none-any.whl", hash = "sha256:cca895342e308174341b2cbf99a56bef291fbc0ef7b9e5412a0f26d653ba7094", size = 58694, upload-time = "2025-06-02T14:29:00.068Z" }, +] + +[[package]] +name = "prompt-toolkit" +version = "3.0.51" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wcwidth" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bb/6e/9d084c929dfe9e3bfe0c6a47e31f78a25c54627d64a66e884a8bf5474f1c/prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed", size = 428940, upload-time = "2025-04-15T09:18:47.731Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07", size = 387810, upload-time = "2025-04-15T09:18:44.753Z" }, +] + +[[package]] +name = "psutil" +version = "7.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2a/80/336820c1ad9286a4ded7e845b2eccfcb27851ab8ac6abece774a6ff4d3de/psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456", size = 497003, upload-time = "2025-02-13T21:54:07.946Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/e6/2d26234410f8b8abdbf891c9da62bee396583f713fb9f3325a4760875d22/psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25", size = 238051, upload-time = "2025-02-13T21:54:12.36Z" }, + { url = "https://files.pythonhosted.org/packages/04/8b/30f930733afe425e3cbfc0e1468a30a18942350c1a8816acfade80c005c4/psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da", size = 239535, upload-time = "2025-02-13T21:54:16.07Z" }, + { url = "https://files.pythonhosted.org/packages/2a/ed/d362e84620dd22876b55389248e522338ed1bf134a5edd3b8231d7207f6d/psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91", size = 275004, upload-time = "2025-02-13T21:54:18.662Z" }, + { url = "https://files.pythonhosted.org/packages/bf/b9/b0eb3f3cbcb734d930fdf839431606844a825b23eaf9a6ab371edac8162c/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b1388a4f6875d7e2aff5c4ca1cc16c545ed41dd8bb596cefea80111db353a34", size = 277986, upload-time = "2025-02-13T21:54:21.811Z" }, + { url = "https://files.pythonhosted.org/packages/eb/a2/709e0fe2f093556c17fbafda93ac032257242cabcc7ff3369e2cb76a97aa/psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993", size = 279544, upload-time = "2025-02-13T21:54:24.68Z" }, + { url = "https://files.pythonhosted.org/packages/50/e6/eecf58810b9d12e6427369784efe814a1eec0f492084ce8eb8f4d89d6d61/psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99", size = 241053, upload-time = "2025-02-13T21:54:34.31Z" }, + { url = "https://files.pythonhosted.org/packages/50/1b/6921afe68c74868b4c9fa424dad3be35b095e16687989ebbb50ce4fceb7c/psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553", size = 244885, upload-time = "2025-02-13T21:54:37.486Z" }, +] + +[[package]] +name = "ptyprocess" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762, upload-time = "2020-12-28T15:15:30.155Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993, upload-time = "2020-12-28T15:15:28.35Z" }, +] + +[[package]] +name = "pure-eval" +version = "0.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752, upload-time = "2024-07-21T12:58:21.801Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842, upload-time = "2024-07-21T12:58:20.04Z" }, +] + +[[package]] +name = "py-cpuinfo" +version = "9.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/37/a8/d832f7293ebb21690860d2e01d8115e5ff6f2ae8bbdc953f0eb0fa4bd2c7/py-cpuinfo-9.0.0.tar.gz", hash = "sha256:3cdbbf3fac90dc6f118bfd64384f309edeadd902d7c8fb17f02ffa1fc3f49690", size = 104716, upload-time = "2022-10-25T20:38:06.303Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e0/a9/023730ba63db1e494a271cb018dcd361bd2c917ba7004c3e49d5daf795a2/py_cpuinfo-9.0.0-py3-none-any.whl", hash = "sha256:859625bc251f64e21f077d099d4162689c762b5d6a4c3c97553d56241c9674d5", size = 22335, upload-time = "2022-10-25T20:38:27.636Z" }, +] + +[[package]] +name = "pyarrow" +version = "20.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/ee/a7810cb9f3d6e9238e61d312076a9859bf3668fd21c69744de9532383912/pyarrow-20.0.0.tar.gz", hash = "sha256:febc4a913592573c8d5805091a6c2b5064c8bd6e002131f01061797d91c783c1", size = 1125187, upload-time = "2025-04-27T12:34:23.264Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5b/23/77094eb8ee0dbe88441689cb6afc40ac312a1e15d3a7acc0586999518222/pyarrow-20.0.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:c7dd06fd7d7b410ca5dc839cc9d485d2bc4ae5240851bcd45d85105cc90a47d7", size = 30832591, upload-time = "2025-04-27T12:27:27.89Z" }, + { url = "https://files.pythonhosted.org/packages/c3/d5/48cc573aff00d62913701d9fac478518f693b30c25f2c157550b0b2565cb/pyarrow-20.0.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:d5382de8dc34c943249b01c19110783d0d64b207167c728461add1ecc2db88e4", size = 32273686, upload-time = "2025-04-27T12:27:36.816Z" }, + { url = "https://files.pythonhosted.org/packages/37/df/4099b69a432b5cb412dd18adc2629975544d656df3d7fda6d73c5dba935d/pyarrow-20.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6415a0d0174487456ddc9beaead703d0ded5966129fa4fd3114d76b5d1c5ceae", size = 41337051, upload-time = "2025-04-27T12:27:44.4Z" }, + { url = "https://files.pythonhosted.org/packages/4c/27/99922a9ac1c9226f346e3a1e15e63dee6f623ed757ff2893f9d6994a69d3/pyarrow-20.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15aa1b3b2587e74328a730457068dc6c89e6dcbf438d4369f572af9d320a25ee", size = 42404659, upload-time = "2025-04-27T12:27:51.715Z" }, + { url = "https://files.pythonhosted.org/packages/21/d1/71d91b2791b829c9e98f1e0d85be66ed93aff399f80abb99678511847eaa/pyarrow-20.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:5605919fbe67a7948c1f03b9f3727d82846c053cd2ce9303ace791855923fd20", size = 40695446, upload-time = "2025-04-27T12:27:59.643Z" }, + { url = "https://files.pythonhosted.org/packages/f1/ca/ae10fba419a6e94329707487835ec721f5a95f3ac9168500bcf7aa3813c7/pyarrow-20.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a5704f29a74b81673d266e5ec1fe376f060627c2e42c5c7651288ed4b0db29e9", size = 42278528, upload-time = "2025-04-27T12:28:07.297Z" }, + { url = "https://files.pythonhosted.org/packages/7a/a6/aba40a2bf01b5d00cf9cd16d427a5da1fad0fb69b514ce8c8292ab80e968/pyarrow-20.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:00138f79ee1b5aca81e2bdedb91e3739b987245e11fa3c826f9e57c5d102fb75", size = 42918162, upload-time = "2025-04-27T12:28:15.716Z" }, + { url = "https://files.pythonhosted.org/packages/93/6b/98b39650cd64f32bf2ec6d627a9bd24fcb3e4e6ea1873c5e1ea8a83b1a18/pyarrow-20.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f2d67ac28f57a362f1a2c1e6fa98bfe2f03230f7e15927aecd067433b1e70ce8", size = 44550319, upload-time = "2025-04-27T12:28:27.026Z" }, + { url = "https://files.pythonhosted.org/packages/ab/32/340238be1eb5037e7b5de7e640ee22334417239bc347eadefaf8c373936d/pyarrow-20.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:4a8b029a07956b8d7bd742ffca25374dd3f634b35e46cc7a7c3fa4c75b297191", size = 25770759, upload-time = "2025-04-27T12:28:33.702Z" }, + { url = "https://files.pythonhosted.org/packages/47/a2/b7930824181ceadd0c63c1042d01fa4ef63eee233934826a7a2a9af6e463/pyarrow-20.0.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:24ca380585444cb2a31324c546a9a56abbe87e26069189e14bdba19c86c049f0", size = 30856035, upload-time = "2025-04-27T12:28:40.78Z" }, + { url = "https://files.pythonhosted.org/packages/9b/18/c765770227d7f5bdfa8a69f64b49194352325c66a5c3bb5e332dfd5867d9/pyarrow-20.0.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:95b330059ddfdc591a3225f2d272123be26c8fa76e8c9ee1a77aad507361cfdb", size = 32309552, upload-time = "2025-04-27T12:28:47.051Z" }, + { url = "https://files.pythonhosted.org/packages/44/fb/dfb2dfdd3e488bb14f822d7335653092dde150cffc2da97de6e7500681f9/pyarrow-20.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f0fb1041267e9968c6d0d2ce3ff92e3928b243e2b6d11eeb84d9ac547308232", size = 41334704, upload-time = "2025-04-27T12:28:55.064Z" }, + { url = "https://files.pythonhosted.org/packages/58/0d/08a95878d38808051a953e887332d4a76bc06c6ee04351918ee1155407eb/pyarrow-20.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8ff87cc837601532cc8242d2f7e09b4e02404de1b797aee747dd4ba4bd6313f", size = 42399836, upload-time = "2025-04-27T12:29:02.13Z" }, + { url = "https://files.pythonhosted.org/packages/f3/cd/efa271234dfe38f0271561086eedcad7bc0f2ddd1efba423916ff0883684/pyarrow-20.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:7a3a5dcf54286e6141d5114522cf31dd67a9e7c9133d150799f30ee302a7a1ab", size = 40711789, upload-time = "2025-04-27T12:29:09.951Z" }, + { url = "https://files.pythonhosted.org/packages/46/1f/7f02009bc7fc8955c391defee5348f510e589a020e4b40ca05edcb847854/pyarrow-20.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a6ad3e7758ecf559900261a4df985662df54fb7fdb55e8e3b3aa99b23d526b62", size = 42301124, upload-time = "2025-04-27T12:29:17.187Z" }, + { url = "https://files.pythonhosted.org/packages/4f/92/692c562be4504c262089e86757a9048739fe1acb4024f92d39615e7bab3f/pyarrow-20.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6bb830757103a6cb300a04610e08d9636f0cd223d32f388418ea893a3e655f1c", size = 42916060, upload-time = "2025-04-27T12:29:24.253Z" }, + { url = "https://files.pythonhosted.org/packages/a4/ec/9f5c7e7c828d8e0a3c7ef50ee62eca38a7de2fa6eb1b8fa43685c9414fef/pyarrow-20.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:96e37f0766ecb4514a899d9a3554fadda770fb57ddf42b63d80f14bc20aa7db3", size = 44547640, upload-time = "2025-04-27T12:29:32.782Z" }, + { url = "https://files.pythonhosted.org/packages/54/96/46613131b4727f10fd2ffa6d0d6f02efcc09a0e7374eff3b5771548aa95b/pyarrow-20.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:3346babb516f4b6fd790da99b98bed9708e3f02e734c84971faccb20736848dc", size = 25781491, upload-time = "2025-04-27T12:29:38.464Z" }, + { url = "https://files.pythonhosted.org/packages/a1/d6/0c10e0d54f6c13eb464ee9b67a68b8c71bcf2f67760ef5b6fbcddd2ab05f/pyarrow-20.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:75a51a5b0eef32727a247707d4755322cb970be7e935172b6a3a9f9ae98404ba", size = 30815067, upload-time = "2025-04-27T12:29:44.384Z" }, + { url = "https://files.pythonhosted.org/packages/7e/e2/04e9874abe4094a06fd8b0cbb0f1312d8dd7d707f144c2ec1e5e8f452ffa/pyarrow-20.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:211d5e84cecc640c7a3ab900f930aaff5cd2702177e0d562d426fb7c4f737781", size = 32297128, upload-time = "2025-04-27T12:29:52.038Z" }, + { url = "https://files.pythonhosted.org/packages/31/fd/c565e5dcc906a3b471a83273039cb75cb79aad4a2d4a12f76cc5ae90a4b8/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ba3cf4182828be7a896cbd232aa8dd6a31bd1f9e32776cc3796c012855e1199", size = 41334890, upload-time = "2025-04-27T12:29:59.452Z" }, + { url = "https://files.pythonhosted.org/packages/af/a9/3bdd799e2c9b20c1ea6dc6fa8e83f29480a97711cf806e823f808c2316ac/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c3a01f313ffe27ac4126f4c2e5ea0f36a5fc6ab51f8726cf41fee4b256680bd", size = 42421775, upload-time = "2025-04-27T12:30:06.875Z" }, + { url = "https://files.pythonhosted.org/packages/10/f7/da98ccd86354c332f593218101ae56568d5dcedb460e342000bd89c49cc1/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:a2791f69ad72addd33510fec7bb14ee06c2a448e06b649e264c094c5b5f7ce28", size = 40687231, upload-time = "2025-04-27T12:30:13.954Z" }, + { url = "https://files.pythonhosted.org/packages/bb/1b/2168d6050e52ff1e6cefc61d600723870bf569cbf41d13db939c8cf97a16/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:4250e28a22302ce8692d3a0e8ec9d9dde54ec00d237cff4dfa9c1fbf79e472a8", size = 42295639, upload-time = "2025-04-27T12:30:21.949Z" }, + { url = "https://files.pythonhosted.org/packages/b2/66/2d976c0c7158fd25591c8ca55aee026e6d5745a021915a1835578707feb3/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:89e030dc58fc760e4010148e6ff164d2f44441490280ef1e97a542375e41058e", size = 42908549, upload-time = "2025-04-27T12:30:29.551Z" }, + { url = "https://files.pythonhosted.org/packages/31/a9/dfb999c2fc6911201dcbf348247f9cc382a8990f9ab45c12eabfd7243a38/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6102b4864d77102dbbb72965618e204e550135a940c2534711d5ffa787df2a5a", size = 44557216, upload-time = "2025-04-27T12:30:36.977Z" }, + { url = "https://files.pythonhosted.org/packages/a0/8e/9adee63dfa3911be2382fb4d92e4b2e7d82610f9d9f668493bebaa2af50f/pyarrow-20.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:96d6a0a37d9c98be08f5ed6a10831d88d52cac7b13f5287f1e0f625a0de8062b", size = 25660496, upload-time = "2025-04-27T12:30:42.809Z" }, + { url = "https://files.pythonhosted.org/packages/9b/aa/daa413b81446d20d4dad2944110dcf4cf4f4179ef7f685dd5a6d7570dc8e/pyarrow-20.0.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:a15532e77b94c61efadde86d10957950392999503b3616b2ffcef7621a002893", size = 30798501, upload-time = "2025-04-27T12:30:48.351Z" }, + { url = "https://files.pythonhosted.org/packages/ff/75/2303d1caa410925de902d32ac215dc80a7ce7dd8dfe95358c165f2adf107/pyarrow-20.0.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:dd43f58037443af715f34f1322c782ec463a3c8a94a85fdb2d987ceb5658e061", size = 32277895, upload-time = "2025-04-27T12:30:55.238Z" }, + { url = "https://files.pythonhosted.org/packages/92/41/fe18c7c0b38b20811b73d1bdd54b1fccba0dab0e51d2048878042d84afa8/pyarrow-20.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa0d288143a8585806e3cc7c39566407aab646fb9ece164609dac1cfff45f6ae", size = 41327322, upload-time = "2025-04-27T12:31:05.587Z" }, + { url = "https://files.pythonhosted.org/packages/da/ab/7dbf3d11db67c72dbf36ae63dcbc9f30b866c153b3a22ef728523943eee6/pyarrow-20.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6953f0114f8d6f3d905d98e987d0924dabce59c3cda380bdfaa25a6201563b4", size = 42411441, upload-time = "2025-04-27T12:31:15.675Z" }, + { url = "https://files.pythonhosted.org/packages/90/c3/0c7da7b6dac863af75b64e2f827e4742161128c350bfe7955b426484e226/pyarrow-20.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:991f85b48a8a5e839b2128590ce07611fae48a904cae6cab1f089c5955b57eb5", size = 40677027, upload-time = "2025-04-27T12:31:24.631Z" }, + { url = "https://files.pythonhosted.org/packages/be/27/43a47fa0ff9053ab5203bb3faeec435d43c0d8bfa40179bfd076cdbd4e1c/pyarrow-20.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:97c8dc984ed09cb07d618d57d8d4b67a5100a30c3818c2fb0b04599f0da2de7b", size = 42281473, upload-time = "2025-04-27T12:31:31.311Z" }, + { url = "https://files.pythonhosted.org/packages/bc/0b/d56c63b078876da81bbb9ba695a596eabee9b085555ed12bf6eb3b7cab0e/pyarrow-20.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9b71daf534f4745818f96c214dbc1e6124d7daf059167330b610fc69b6f3d3e3", size = 42893897, upload-time = "2025-04-27T12:31:39.406Z" }, + { url = "https://files.pythonhosted.org/packages/92/ac/7d4bd020ba9145f354012838692d48300c1b8fe5634bfda886abcada67ed/pyarrow-20.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e8b88758f9303fa5a83d6c90e176714b2fd3852e776fc2d7e42a22dd6c2fb368", size = 44543847, upload-time = "2025-04-27T12:31:45.997Z" }, + { url = "https://files.pythonhosted.org/packages/9d/07/290f4abf9ca702c5df7b47739c1b2c83588641ddfa2cc75e34a301d42e55/pyarrow-20.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:30b3051b7975801c1e1d387e17c588d8ab05ced9b1e14eec57915f79869b5031", size = 25653219, upload-time = "2025-04-27T12:31:54.11Z" }, + { url = "https://files.pythonhosted.org/packages/95/df/720bb17704b10bd69dde086e1400b8eefb8f58df3f8ac9cff6c425bf57f1/pyarrow-20.0.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:ca151afa4f9b7bc45bcc791eb9a89e90a9eb2772767d0b1e5389609c7d03db63", size = 30853957, upload-time = "2025-04-27T12:31:59.215Z" }, + { url = "https://files.pythonhosted.org/packages/d9/72/0d5f875efc31baef742ba55a00a25213a19ea64d7176e0fe001c5d8b6e9a/pyarrow-20.0.0-cp313-cp313t-macosx_12_0_x86_64.whl", hash = "sha256:4680f01ecd86e0dd63e39eb5cd59ef9ff24a9d166db328679e36c108dc993d4c", size = 32247972, upload-time = "2025-04-27T12:32:05.369Z" }, + { url = "https://files.pythonhosted.org/packages/d5/bc/e48b4fa544d2eea72f7844180eb77f83f2030b84c8dad860f199f94307ed/pyarrow-20.0.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f4c8534e2ff059765647aa69b75d6543f9fef59e2cd4c6d18015192565d2b70", size = 41256434, upload-time = "2025-04-27T12:32:11.814Z" }, + { url = "https://files.pythonhosted.org/packages/c3/01/974043a29874aa2cf4f87fb07fd108828fc7362300265a2a64a94965e35b/pyarrow-20.0.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e1f8a47f4b4ae4c69c4d702cfbdfe4d41e18e5c7ef6f1bb1c50918c1e81c57b", size = 42353648, upload-time = "2025-04-27T12:32:20.766Z" }, + { url = "https://files.pythonhosted.org/packages/68/95/cc0d3634cde9ca69b0e51cbe830d8915ea32dda2157560dda27ff3b3337b/pyarrow-20.0.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:a1f60dc14658efaa927f8214734f6a01a806d7690be4b3232ba526836d216122", size = 40619853, upload-time = "2025-04-27T12:32:28.1Z" }, + { url = "https://files.pythonhosted.org/packages/29/c2/3ad40e07e96a3e74e7ed7cc8285aadfa84eb848a798c98ec0ad009eb6bcc/pyarrow-20.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:204a846dca751428991346976b914d6d2a82ae5b8316a6ed99789ebf976551e6", size = 42241743, upload-time = "2025-04-27T12:32:35.792Z" }, + { url = "https://files.pythonhosted.org/packages/eb/cb/65fa110b483339add6a9bc7b6373614166b14e20375d4daa73483755f830/pyarrow-20.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:f3b117b922af5e4c6b9a9115825726cac7d8b1421c37c2b5e24fbacc8930612c", size = 42839441, upload-time = "2025-04-27T12:32:46.64Z" }, + { url = "https://files.pythonhosted.org/packages/98/7b/f30b1954589243207d7a0fbc9997401044bf9a033eec78f6cb50da3f304a/pyarrow-20.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e724a3fd23ae5b9c010e7be857f4405ed5e679db5c93e66204db1a69f733936a", size = 44503279, upload-time = "2025-04-27T12:32:56.503Z" }, + { url = "https://files.pythonhosted.org/packages/37/40/ad395740cd641869a13bcf60851296c89624662575621968dcfafabaa7f6/pyarrow-20.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:82f1ee5133bd8f49d31be1299dc07f585136679666b502540db854968576faf9", size = 25944982, upload-time = "2025-04-27T12:33:04.72Z" }, +] + +[[package]] +name = "pybtex" +version = "0.24.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "latexcodec" }, + { name = "pyyaml" }, + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/46/9b/fd39836a6397fb363446d83075a7b9c2cc562f4c449292e039ed36084376/pybtex-0.24.0.tar.gz", hash = "sha256:818eae35b61733e5c007c3fcd2cfb75ed1bc8b4173c1f70b56cc4c0802d34755", size = 402879, upload-time = "2021-01-17T20:02:27.328Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ad/5f/40d8e90f985a05133a8895fc454c6127ecec3de8b095dd35bba91382f803/pybtex-0.24.0-py2.py3-none-any.whl", hash = "sha256:e1e0c8c69998452fea90e9179aa2a98ab103f3eed894405b7264e517cc2fcc0f", size = 561354, upload-time = "2021-01-17T20:02:23.696Z" }, +] + +[[package]] +name = "pybtex-docutils" +version = "1.0.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "docutils" }, + { name = "pybtex" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7e/84/796ea94d26188a853660f81bded39f8de4cfe595130aef0dea1088705a11/pybtex-docutils-1.0.3.tar.gz", hash = "sha256:3a7ebdf92b593e00e8c1c538aa9a20bca5d92d84231124715acc964d51d93c6b", size = 18348, upload-time = "2023-08-22T18:47:54.833Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/b1/ce1f4596211efb5410e178a803f08e59b20bedb66837dcf41e21c54f9ec1/pybtex_docutils-1.0.3-py3-none-any.whl", hash = "sha256:8fd290d2ae48e32fcb54d86b0efb8d573198653c7e2447d5bec5847095f430b9", size = 6385, upload-time = "2023-08-22T06:43:20.513Z" }, +] + +[[package]] +name = "pycodestyle" +version = "2.13.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/04/6e/1f4a62078e4d95d82367f24e685aef3a672abfd27d1a868068fed4ed2254/pycodestyle-2.13.0.tar.gz", hash = "sha256:c8415bf09abe81d9c7f872502a6eee881fbe85d8763dd5b9924bb0a01d67efae", size = 39312, upload-time = "2025-03-29T17:33:30.669Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/be/b00116df1bfb3e0bb5b45e29d604799f7b91dd861637e4d448b4e09e6a3e/pycodestyle-2.13.0-py2.py3-none-any.whl", hash = "sha256:35863c5974a271c7a726ed228a14a4f6daf49df369d8c50cd9a6f58a5e143ba9", size = 31424, upload-time = "2025-03-29T17:33:29.405Z" }, +] + +[[package]] +name = "pycparser" +version = "2.22" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736, upload-time = "2024-03-30T13:22:22.564Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552, upload-time = "2024-03-30T13:22:20.476Z" }, +] + +[[package]] +name = "pydantic" +version = "2.6.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/78/6c/87e7c6e46206e27b3037acdf637906c4be500a0b1dd7ccbb805a72b9f494/pydantic-2.6.0.tar.gz", hash = "sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf", size = 677208, upload-time = "2024-01-29T14:39:05.927Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e4/37/3ffe6e7daa1ea1b4bf5228807a92ccbae538cf57c0c50b93564c310c11a8/pydantic-2.6.0-py3-none-any.whl", hash = "sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae", size = 394201, upload-time = "2024-01-29T14:39:01.673Z" }, +] + +[[package]] +name = "pydantic-core" +version = "2.16.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a0/a7/61d013c73773bb03d02de9de8e4e5b2ed2c100dc98ae7046d54485ecf5d4/pydantic_core-2.16.1.tar.gz", hash = "sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34", size = 368201, upload-time = "2024-01-19T13:13:18.107Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/eb/7c/72819fce116e969f45497206cb84966d99d0b2a8be0173cc3d57b29ee0ff/pydantic_core-2.16.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948", size = 1903838, upload-time = "2024-01-19T13:09:53.921Z" }, + { url = "https://files.pythonhosted.org/packages/a2/a3/142ef9bb5417a67dab782ca5add911fa76a3bef21a5b77ad343683e8c584/pydantic_core-2.16.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f", size = 1745896, upload-time = "2024-01-19T13:09:57.839Z" }, + { url = "https://files.pythonhosted.org/packages/57/08/a6c8392e7d7d08dca77d7cd8531349eeba779b10a0648520ebb23f48fcbf/pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f", size = 1900593, upload-time = "2024-01-19T13:10:03.791Z" }, + { url = "https://files.pythonhosted.org/packages/14/03/3f67a97640dd7b252dfecc7f9ba0e4c84cb520885af2f219c40b54e4a297/pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8", size = 1915761, upload-time = "2024-01-19T13:10:05.856Z" }, + { url = "https://files.pythonhosted.org/packages/f2/49/0f7e0aad58a2620306e190064d316430d455bda1bc40ce35be96252c1346/pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48", size = 2065743, upload-time = "2024-01-19T13:10:07.828Z" }, + { url = "https://files.pythonhosted.org/packages/3f/b6/eb8f5511810d8d7d2c18228ee2a414fe200678a897e938186189dc128b05/pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f", size = 3259998, upload-time = "2024-01-19T13:10:10.346Z" }, + { url = "https://files.pythonhosted.org/packages/a0/7e/96bd9a40f6d5edc3b4566951acac7a8f26e423c77001a7dc065d6200052a/pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798", size = 2180287, upload-time = "2024-01-19T13:10:12.942Z" }, + { url = "https://files.pythonhosted.org/packages/1e/2a/2fd602af15a12dddf0d5b931639ce1a190ca5256e93e68fae209bcb05118/pydantic_core-2.16.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17", size = 1973184, upload-time = "2024-01-19T13:10:15.399Z" }, + { url = "https://files.pythonhosted.org/packages/8b/84/8f2ec2a6e961236c202a9ef36f9f498d19ae9305cfbbd4135dab4a8273ed/pydantic_core-2.16.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388", size = 2071546, upload-time = "2024-01-19T13:10:17.09Z" }, + { url = "https://files.pythonhosted.org/packages/8e/d3/abdf35c0fad643b82cba7cec1d5875b8ffdaf2d775ee12f916c301edcbad/pydantic_core-2.16.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7", size = 2212439, upload-time = "2024-01-19T13:10:18.867Z" }, + { url = "https://files.pythonhosted.org/packages/85/60/d78c76282beec6260c449331f428e17a228836895a24a8648cbe95aead59/pydantic_core-2.16.1-cp310-none-win32.whl", hash = "sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4", size = 1761095, upload-time = "2024-01-19T13:10:24.711Z" }, + { url = "https://files.pythonhosted.org/packages/71/1a/e6a75d2768b8e53eebdc6146a839c0d5629b1f985b3a44d39e4829c8d39e/pydantic_core-2.16.1-cp310-none-win_amd64.whl", hash = "sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c", size = 1927450, upload-time = "2024-01-19T13:10:26.49Z" }, + { url = "https://files.pythonhosted.org/packages/25/95/1357b15051f458a15eeaf03d35d0f7466ec8979eb69061dacc6d8f7924d9/pydantic_core-2.16.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da", size = 1900014, upload-time = "2024-01-19T13:10:28.366Z" }, + { url = "https://files.pythonhosted.org/packages/3d/98/11b5400a80f527f5d6c5bdb71a77f4cf3754bef5d512d94471ecbc32e2ff/pydantic_core-2.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e", size = 1745364, upload-time = "2024-01-19T13:10:30.127Z" }, + { url = "https://files.pythonhosted.org/packages/20/25/55f41724bd64954fba6e661d6afa3d5a1b3561c0611f5c4e523fee3da640/pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4", size = 1899615, upload-time = "2024-01-19T13:10:32.623Z" }, + { url = "https://files.pythonhosted.org/packages/54/5e/6fcf81f868f634f8a163867df89303033cc18985daf693f34475f40117aa/pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f", size = 1914379, upload-time = "2024-01-19T13:10:34.879Z" }, + { url = "https://files.pythonhosted.org/packages/2c/8b/930c415a0c1f24ceb602f208b698c21ab80b869a416803ac2a45fdecc006/pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91", size = 2064696, upload-time = "2024-01-19T13:10:44.581Z" }, + { url = "https://files.pythonhosted.org/packages/ac/ef/4a84325e7734d8f0b29295b99498ef4c78c8b7ba4b2db51a2b27b6627a17/pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c", size = 3258963, upload-time = "2024-01-19T13:10:47.071Z" }, + { url = "https://files.pythonhosted.org/packages/98/19/955b83b6e33b7ac27914860069a918fe49b29c13bc149dc7bb7c60954812/pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d", size = 2179513, upload-time = "2024-01-19T13:10:49.529Z" }, + { url = "https://files.pythonhosted.org/packages/a2/14/70e69bcca582a02b939c4eb2ba6df5f474aa0e9c41103986952d3a05da27/pydantic_core-2.16.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864", size = 1972273, upload-time = "2024-01-19T13:10:51.363Z" }, + { url = "https://files.pythonhosted.org/packages/fc/35/994e7001bacfc117d22c64b87426b2fd7539ee9963f7159e7ec60f100720/pydantic_core-2.16.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7", size = 2070589, upload-time = "2024-01-19T13:10:53.382Z" }, + { url = "https://files.pythonhosted.org/packages/e3/e1/7a47532a6046636af04c58710517bc7dc9a76bface7a74edb7913a98950f/pydantic_core-2.16.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae", size = 2211305, upload-time = "2024-01-19T13:10:56.601Z" }, + { url = "https://files.pythonhosted.org/packages/77/e9/d05dc5c8e7c5698026f01de6affe04015eb719e216a4c4b70cd7946c2785/pydantic_core-2.16.1-cp311-none-win32.whl", hash = "sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1", size = 1760415, upload-time = "2024-01-19T13:10:58.616Z" }, + { url = "https://files.pythonhosted.org/packages/b2/47/14bf2397a5daa0cc1b99306499a39525966b73aba4d31b17e373e229f07e/pydantic_core-2.16.1-cp311-none-win_amd64.whl", hash = "sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c", size = 1926977, upload-time = "2024-01-19T13:11:00.94Z" }, + { url = "https://files.pythonhosted.org/packages/df/e0/0b108193cb405c21bdb3a6d95fdf4d0ae65accd187d9df5b8011c484f275/pydantic_core-2.16.1-cp311-none-win_arm64.whl", hash = "sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b", size = 1844114, upload-time = "2024-01-19T13:11:02.813Z" }, + { url = "https://files.pythonhosted.org/packages/82/8f/d83953f652b0048fd8be62b6eabed7e3397008b6d050bd080ab78d3e6d14/pydantic_core-2.16.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51", size = 1868275, upload-time = "2024-01-19T13:11:05.114Z" }, + { url = "https://files.pythonhosted.org/packages/c1/33/f627f1d31f7986ade7396237a8b5904c629837878978e9eeb400f85b3e29/pydantic_core-2.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66", size = 1718240, upload-time = "2024-01-19T13:11:07.22Z" }, + { url = "https://files.pythonhosted.org/packages/f5/7e/1bcd8ce164868c40d841528f92e5f1f5a1a6cb705a063c425cd00f8b1eef/pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13", size = 1873433, upload-time = "2024-01-19T13:11:09.345Z" }, + { url = "https://files.pythonhosted.org/packages/32/aa/f5d9139609e30a6f174c6d6c8f3f64aafaf6f43dab7974b8642a10d08758/pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49", size = 1875493, upload-time = "2024-01-19T13:11:11.167Z" }, + { url = "https://files.pythonhosted.org/packages/39/25/46cef345a191d8d6c6458420029ce25edfbe96833075d3a474ae2aeae106/pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137", size = 2046585, upload-time = "2024-01-19T13:11:13.134Z" }, + { url = "https://files.pythonhosted.org/packages/62/2d/2c9af3e66486b7159ab2f05712e2d46fc7ee29e2cbd7f4e5e1feaac48e12/pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253", size = 3077749, upload-time = "2024-01-19T13:11:15.1Z" }, + { url = "https://files.pythonhosted.org/packages/86/61/55607ffc05fc1caac9b6754552bc907c4af469f5585cb3599aa855865923/pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54", size = 2179456, upload-time = "2024-01-19T13:11:17.806Z" }, + { url = "https://files.pythonhosted.org/packages/2b/64/383663f04e58333fe15b30da863fe28a76f00b676dded6f4b6f1c23fc9c5/pydantic_core-2.16.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e", size = 1953184, upload-time = "2024-01-19T13:11:20.052Z" }, + { url = "https://files.pythonhosted.org/packages/be/cd/3a975ba2bd4493a5bae904891d5239fa3e8dd59be39b1845d3361e1a412e/pydantic_core-2.16.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8", size = 2052616, upload-time = "2024-01-19T13:11:22.547Z" }, + { url = "https://files.pythonhosted.org/packages/ac/5e/b26ef5ba2266b4dd6fd93964c1923f32032034100cfed167f2f85df7a3da/pydantic_core-2.16.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f", size = 2172342, upload-time = "2024-01-19T13:11:24.491Z" }, + { url = "https://files.pythonhosted.org/packages/39/81/fce7fcd7f877ab56c2e677366da41abdd3071dcc6592354bc96f0135c43a/pydantic_core-2.16.1-cp312-none-win32.whl", hash = "sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212", size = 1764252, upload-time = "2024-01-19T13:11:26.369Z" }, + { url = "https://files.pythonhosted.org/packages/ab/de/32c35c9d84652da17673357295d19016cc4768fea0dd071d8c09ca4cacbb/pydantic_core-2.16.1-cp312-none-win_amd64.whl", hash = "sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f", size = 1881165, upload-time = "2024-01-19T13:11:28.259Z" }, + { url = "https://files.pythonhosted.org/packages/61/db/78cafc630e4b3193c5a702ae20916349f5f0ef5bdaa918565549f3160059/pydantic_core-2.16.1-cp312-none-win_arm64.whl", hash = "sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd", size = 1853531, upload-time = "2024-01-19T13:11:30.057Z" }, + { url = "https://files.pythonhosted.org/packages/5f/06/f92cb6971b2163488f2d908095a35bdc38a8b30970674abb1473d407e07e/pydantic_core-2.16.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76", size = 1906426, upload-time = "2024-01-19T13:12:38.384Z" }, + { url = "https://files.pythonhosted.org/packages/18/f1/f4d89d38dc82c2f973e2487504bb3cd30d62340a249e64871f1fe6293049/pydantic_core-2.16.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394", size = 1766939, upload-time = "2024-01-19T13:12:40.661Z" }, + { url = "https://files.pythonhosted.org/packages/4c/10/e714042114547b25a2c792ad72251447407eef9449501573b3fc20b8d02c/pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0", size = 1911451, upload-time = "2024-01-19T13:12:43.499Z" }, + { url = "https://files.pythonhosted.org/packages/30/e3/802b56e1207ae8c581bdfb838340c4bd404a7a924a5c26ea3fe615db116e/pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c", size = 2036878, upload-time = "2024-01-19T13:12:46.24Z" }, + { url = "https://files.pythonhosted.org/packages/6c/dd/572df4ced42416411c19d427b37e247cbeddbc8c05f5586aea62cce6b753/pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05", size = 1968197, upload-time = "2024-01-19T13:12:48.227Z" }, + { url = "https://files.pythonhosted.org/packages/87/53/af8141c6ca8b8e2a8e73314bcd313554fc9d01e063f02e13386dff3000b8/pydantic_core-2.16.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0", size = 2083060, upload-time = "2024-01-19T13:12:50.407Z" }, + { url = "https://files.pythonhosted.org/packages/c8/71/6459ce68d47a30a932b97b49f1c6f66743821c4a410dd10c41b0e347d264/pydantic_core-2.16.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc", size = 2216609, upload-time = "2024-01-19T13:12:52.511Z" }, + { url = "https://files.pythonhosted.org/packages/ec/20/b76edaec257bf631929dcbefaaa7a7c621ede570a99140f404b6278a433b/pydantic_core-2.16.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2", size = 2027647, upload-time = "2024-01-19T13:12:55.22Z" }, +] + +[[package]] +name = "pydantic-settings" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pydantic" }, + { name = "python-dotenv" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/00/a4/89191c3cce6e6f79b734bfe81d3a8f176d21b57b034689cfbdc57d61c412/pydantic_settings-2.2.1.tar.gz", hash = "sha256:00b9f6a5e95553590434c0fa01ead0b216c3e10bc54ae02e37f359948643c5ed", size = 35495, upload-time = "2024-02-19T19:50:21.398Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/99/ee/24ec87e3a91426497c5a2b9880662d19cfd640342d477334ebc60fc2c276/pydantic_settings-2.2.1-py3-none-any.whl", hash = "sha256:0235391d26db4d2190cb9b31051c4b46882d28a51533f97440867f012d4da091", size = 13150, upload-time = "2024-02-19T19:50:19.747Z" }, +] + +[[package]] +name = "pydata-sphinx-theme" +version = "0.16.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "accessible-pygments" }, + { name = "babel" }, + { name = "beautifulsoup4" }, + { name = "docutils" }, + { name = "pygments" }, + { name = "sphinx" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/00/20/bb50f9de3a6de69e6abd6b087b52fa2418a0418b19597601605f855ad044/pydata_sphinx_theme-0.16.1.tar.gz", hash = "sha256:a08b7f0b7f70387219dc659bff0893a7554d5eb39b59d3b8ef37b8401b7642d7", size = 2412693, upload-time = "2024-12-17T10:53:39.537Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e2/0d/8ba33fa83a7dcde13eb3c1c2a0c1cc29950a048bfed6d9b0d8b6bd710b4c/pydata_sphinx_theme-0.16.1-py3-none-any.whl", hash = "sha256:225331e8ac4b32682c18fcac5a57a6f717c4e632cea5dd0e247b55155faeccde", size = 6723264, upload-time = "2024-12-17T10:53:35.645Z" }, +] + +[[package]] +name = "pygments" +version = "2.19.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", size = 4968581, upload-time = "2025-01-06T17:26:30.443Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293, upload-time = "2025-01-06T17:26:25.553Z" }, +] + +[[package]] +name = "pyinstrument" +version = "4.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9a/f8/1feae9239316e073dcdc53e6d1ffbd3d02bb2e0d3a755bc61439a6264221/pyinstrument-4.4.0.tar.gz", hash = "sha256:be34a2e8118c14a616a64538e02430d9099d5d67d8a370f2888e4ac71e52bbb7", size = 378935, upload-time = "2022-11-05T12:01:56.458Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/91/d3/ced421d0866d166102362e8bb6e90f4480aabfd0c0d7a482da8edad6546e/pyinstrument-4.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8874f8f58cfcb1ff134dc8e4a2b31ab9175adb271a4423596ed7ac8183592cf8", size = 108152, upload-time = "2022-11-05T12:00:53.752Z" }, + { url = "https://files.pythonhosted.org/packages/31/08/ea1bda3053d85401ef12c1e2087b7aa99b1a39f841de366f5b9d751d24d5/pyinstrument-4.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e5f4d6e1c395f259f67a923a9c54dc3eaccd5f02540598da4f865c4bb3545762", size = 102430, upload-time = "2022-11-05T12:00:55.595Z" }, + { url = "https://files.pythonhosted.org/packages/56/76/427a1d2f68371cba5702188d1ec1c1229186f53c794e42df55664373b490/pyinstrument-4.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d70fed48ddd0078e287fb580daaeede4d8703a9edc8bf4f703308a77920bac37", size = 122551, upload-time = "2022-11-05T12:00:57.1Z" }, + { url = "https://files.pythonhosted.org/packages/d5/9c/8f99f5a01a8cc226bd6feb6360c069f60b323adf4bea4389b185a0c99c51/pyinstrument-4.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9fda1bd596e81ecd2b6a976eb9b930a757a5dd04071583d0141d059e34eed83f", size = 121508, upload-time = "2022-11-05T12:00:58.178Z" }, + { url = "https://files.pythonhosted.org/packages/29/1e/23b335b6f7b9d10f888a094cf0eee0150d1c539aeae633aaaa25173ae1ce/pyinstrument-4.4.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f57b61d39d3b1a4d773da16baa8456aa66102d6016ce1f39817051550cbe47e", size = 122467, upload-time = "2022-11-05T12:00:59.595Z" }, + { url = "https://files.pythonhosted.org/packages/69/7a/6ad038e8c6d1edb8e8a64cea485ea63b6d21eddfdd36180d8e556d3d55c5/pyinstrument-4.4.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:5a9aead0ca5579473f66fed4c449c693feee464802b5ba9b98772e64e02c575c", size = 125512, upload-time = "2022-11-05T12:01:00.767Z" }, + { url = "https://files.pythonhosted.org/packages/93/93/48c2a4de0f5e67a7cb8bf05725738d9d2b195042b75a37039043052c112d/pyinstrument-4.4.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:375a340c3fbebd922a35b0834de1c82d1b4fea681df49f99729439a6cb5e6ad4", size = 125004, upload-time = "2022-11-05T12:01:02.001Z" }, + { url = "https://files.pythonhosted.org/packages/e1/e7/78c720919079e3c48602338ed57597eb9c9ade7584ce7ed8ce6b6295165f/pyinstrument-4.4.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b9cbaf3bcda5ad9af4c9a7bf4f1b8f15bb32c4cadf554d0a2c723892c898021b", size = 125797, upload-time = "2022-11-05T12:01:03.115Z" }, + { url = "https://files.pythonhosted.org/packages/66/0f/e5e11f7fbab3d81def6b9c724397485ea42a2fa5bdcec2b6f7825cb2a729/pyinstrument-4.4.0-cp310-cp310-win32.whl", hash = "sha256:97cbeb5f5a048dc6eb047495f73db90c9e2ec97606e65298c7ea2c61fa52de38", size = 104858, upload-time = "2022-11-05T12:01:04.256Z" }, + { url = "https://files.pythonhosted.org/packages/1e/c3/d9f827c52654dddc1c0decb7682f4235fc630e5432c68801d896d9e1990b/pyinstrument-4.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:73edbce7fda1b3d8cab0b6c39c43b012167d783c072f40928600c3357d1a5dc5", size = 105541, upload-time = "2022-11-05T12:01:05.614Z" }, + { url = "https://files.pythonhosted.org/packages/b8/ab/08377516c87f9dec3c267d2a3fc72e7c62c359a96e2f6a10a1cc77e6f115/pyinstrument-4.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7db8cb55182883be48520eb915bd1769f176a4813ce0cc38243aa2d1182e7ce7", size = 107706, upload-time = "2022-11-05T12:01:06.736Z" }, + { url = "https://files.pythonhosted.org/packages/4d/2c/24cd88e9a4b5eec92c349012620018b48feafcce765d2398ce862dd5a80e/pyinstrument-4.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7c614e2c241fb558a25973019ff43ce027ba4958bcb87383f0b0789af9c4d03b", size = 102190, upload-time = "2022-11-05T12:01:07.857Z" }, + { url = "https://files.pythonhosted.org/packages/a6/68/4a8c9c5fb48d2b4103f7ef99195802ba4060c91224a18f3ebc4aff77c3b9/pyinstrument-4.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c012422c851f0457c3cb82d8b1259d96fa0dcddc0f1e8bf4d97f0b2efe54485", size = 120853, upload-time = "2022-11-05T12:01:08.932Z" }, + { url = "https://files.pythonhosted.org/packages/30/5e/56810f719f9c59e6374b7947191a9fe5b8c6f43426e07829a81887d04419/pyinstrument-4.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e4f5ad100710dda68f9f345961780bf4f0cbb9fd3e46295d099bb9ad65b179ea", size = 119525, upload-time = "2022-11-05T12:01:10.045Z" }, + { url = "https://files.pythonhosted.org/packages/2c/d3/e4711e0b1d72635c23beaff4e0113fa7339fb648af3f086351f9ff3e120c/pyinstrument-4.4.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a4a053cd67102c6fcc313366ea6be97cfce7eae2b9e57e62c9be8adbbdebc17", size = 120470, upload-time = "2022-11-05T12:01:11.151Z" }, + { url = "https://files.pythonhosted.org/packages/f8/80/f320df4a42ba8f9bf1ec9f0f00262d3bc4837f9e724b33bab379a2eb34cb/pyinstrument-4.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1d2a1e53615c8ef210286e4d2d93be0d3e8296995b090df29a0b7ddeae5d874b", size = 124780, upload-time = "2022-11-05T12:01:12.925Z" }, + { url = "https://files.pythonhosted.org/packages/af/50/679c7bbd288aa2f143b0dbde8f3406ff4d688d62baa434de1f4a38503a46/pyinstrument-4.4.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:b2a6609ef74ad8ba292a11fbd975660bc86466c7eaab1ff11360d24e0300800b", size = 124518, upload-time = "2022-11-05T12:01:14.054Z" }, + { url = "https://files.pythonhosted.org/packages/13/8c/513c431ec5dffccda87d66b778ac37c6607385124a10d6a7ccfcfa6099e9/pyinstrument-4.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3643084ee8ad22d9ea2adb13d65d4b6e18810113e4176b19d026a011957f8c7c", size = 124836, upload-time = "2022-11-05T12:01:15.155Z" }, + { url = "https://files.pythonhosted.org/packages/d2/b7/63643b7ef6a42a8dedcc3542bafbf0020614a85b42c15feff25d86ce5615/pyinstrument-4.4.0-cp311-cp311-win32.whl", hash = "sha256:fcd717910a8ab6deca353aded890403bbaea14a6dd99a87c3367f24721d2d6aa", size = 104777, upload-time = "2022-11-05T12:01:16.352Z" }, + { url = "https://files.pythonhosted.org/packages/ea/a8/6c5772d2a4d50d4591fa09b58bb1074ef9c3b6033641e3e6752bb466d5fa/pyinstrument-4.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:be9ac54a4dd07d969d5941e4dcba67d5aef5f6826f43b9ddda65553816f6abca", size = 105393, upload-time = "2022-11-05T12:01:17.434Z" }, +] + +[[package]] +name = "pympler" +version = "1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pywin32", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dd/37/c384631908029676d8e7213dd956bb686af303a80db7afbc9be36bc49495/pympler-1.1.tar.gz", hash = "sha256:1eaa867cb8992c218430f1708fdaccda53df064144d1c5656b1e6f1ee6000424", size = 179954, upload-time = "2024-06-28T19:56:06.563Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/4f/a6a2e2b202d7fd97eadfe90979845b8706676b41cbd3b42ba75adf329d1f/Pympler-1.1-py3-none-any.whl", hash = "sha256:5b223d6027d0619584116a0cbc28e8d2e378f7a79c1e5e024f9ff3b673c58506", size = 165766, upload-time = "2024-06-28T19:56:05.087Z" }, +] + +[[package]] +name = "pyogrio" +version = "0.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "numpy" }, + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/54/c3/5e30f913ad8a975abe6f6582a2d3cf321bdf40fd696940d9283c63880c7a/pyogrio-0.11.0.tar.gz", hash = "sha256:a7e0a97bc10c0d7204f6bf52e1b928cba0554c35a907c32b23065aed1ed97b3f", size = 286915, upload-time = "2025-05-08T15:20:17.843Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/37/9e/813389a76caeb1068af64c39bf66eaa466a2551bdf1399a9a6464cd811b1/pyogrio-0.11.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:47e7aa1e2f345a08009a38c14db16ccdadb31313919efe0903228265df3e1962", size = 19492014, upload-time = "2025-05-08T15:18:32.563Z" }, + { url = "https://files.pythonhosted.org/packages/93/db/91466f22c0973039cc6f672875c937ad9ecb5c251c2a7166b2b8343dde50/pyogrio-0.11.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:ad9734da7c95cb272f311c1a8ea61181f3ae0f539d5da5af5c88acee0fd6b707", size = 20678459, upload-time = "2025-05-08T15:18:36.072Z" }, + { url = "https://files.pythonhosted.org/packages/ea/f9/bfd6a466cb5e91d8ebac03c18af7ac45f88ac9261d02a579691813db2c89/pyogrio-0.11.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1784372868fb20ba32422ce803ad464b39ec26b41587576122b3884ba7533f2c", size = 26860694, upload-time = "2025-05-08T15:18:39.6Z" }, + { url = "https://files.pythonhosted.org/packages/2d/78/080530eeb256f4f435bf3e920d493484fe1ce218f3b8f5c57766079a16b6/pyogrio-0.11.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:c307b54b939a1ade5caf737c9297d4c0f8af314c455bc79228fe9bee2fe2e183", size = 26367627, upload-time = "2025-05-08T15:18:43.188Z" }, + { url = "https://files.pythonhosted.org/packages/76/04/5e5fd9ab3f84c030785de7f572c5a526f6bb3b261efe769ee911e04d98ff/pyogrio-0.11.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:6013501408a0f676ffb9758e83b4e06ef869885d6315417e098c4d3737ba1e39", size = 27551023, upload-time = "2025-05-08T15:18:46.576Z" }, + { url = "https://files.pythonhosted.org/packages/13/6d/88a501f8a2481a6c8d825d91705e74df018614c8a13040af3b3f02503ddc/pyogrio-0.11.0-cp310-cp310-win_amd64.whl", hash = "sha256:2b6f2c56f01ea552480e6f7d3deb1228e3babd35a0f314aa076505e2c4f55711", size = 19176301, upload-time = "2025-05-08T15:18:49.455Z" }, + { url = "https://files.pythonhosted.org/packages/a0/d1/035667f23d8e7066471c500636e9ee77b159a9d92f32b5e4944d541aad69/pyogrio-0.11.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:862b79d36d39c1f755739bde00cfd82fd1034fd287084d9202b14e3a85576f5c", size = 19492247, upload-time = "2025-05-08T15:18:52.632Z" }, + { url = "https://files.pythonhosted.org/packages/0b/da/558be674dbbf18b9cb2f31b8c9d5691e1a42100bdbd159b4771f608f01e2/pyogrio-0.11.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:21b1924c02513185e3df1301dfc9d313f1450d7c366f8629e26757f51ba31003", size = 20678449, upload-time = "2025-05-08T15:18:55.461Z" }, + { url = "https://files.pythonhosted.org/packages/c4/78/3761a80818a148ba9544abaf9c41bef5353054054c5ed16872e65cbf9dd6/pyogrio-0.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:103313202414ffa7378016791d287442541af60ac57b78536f0c67f3a82904a4", size = 27068276, upload-time = "2025-05-08T15:18:59.217Z" }, + { url = "https://files.pythonhosted.org/packages/ad/6c/9a6faa094b33054957b4eef389106aa4f94e9dbdd384c9db5f03d6a4d379/pyogrio-0.11.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:2e48956e68c41a17cbf3df32d979553de2839a082a7a9b0beef14948aa4ca5df", size = 26571289, upload-time = "2025-05-08T15:19:02.592Z" }, + { url = "https://files.pythonhosted.org/packages/25/19/6a24c2052f2f99190482c83dcf8ecdc02bde9c8dbc2d604f088f9bbb5dbb/pyogrio-0.11.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:ec5666cc8bf97aef9993c998198f85fe209b8a9ad4737696d3d2ab573b3e9a5b", size = 27769581, upload-time = "2025-05-08T15:19:05.843Z" }, + { url = "https://files.pythonhosted.org/packages/3d/ad/afc1cdea5dac6afb95d561c9ec73c27722d494d8faab7e0452cf71fba71f/pyogrio-0.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:8ad3744e679de2a31b1a885dc5ea260e3482f0d5e71461a88f431cda8d536b17", size = 19178064, upload-time = "2025-05-08T15:19:09.446Z" }, + { url = "https://files.pythonhosted.org/packages/22/39/927036db0c550d35efb4d998dfe90c56515bc14d6ed0166b6c01ca28be24/pyogrio-0.11.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:a6f114d32c5c8a157c6fbf74e3ecfe69be7efb29363102f2aad14c9813de637a", size = 19491944, upload-time = "2025-05-08T15:19:12.359Z" }, + { url = "https://files.pythonhosted.org/packages/49/78/92db6ca3650996ca80287e59b799aa303ccecd4f1cd677f15832e466d9e2/pyogrio-0.11.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:596e3f26e792882e35f25715634c12c1d6658a3d8d178c0089a9462c56b48be5", size = 20674571, upload-time = "2025-05-08T15:19:16.541Z" }, + { url = "https://files.pythonhosted.org/packages/c8/a4/bc37ddcee3f47c79197887d6386d31d97182a94cff6a5093cad37d873bc5/pyogrio-0.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11d693ca24e80bd7ede7b27ea3598593be5b41fb7cec315a57f5bb24d15faef8", size = 27033355, upload-time = "2025-05-08T15:19:20.449Z" }, + { url = "https://files.pythonhosted.org/packages/5c/6f/984a513d5deab8ca94dde440084cab3eda5684825d70395a3bd21c2a9e5d/pyogrio-0.11.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:961100786ae44e2f27b4049b5262e378a3cba07872fc22051905fed8b4ce42db", size = 26528521, upload-time = "2025-05-08T15:19:23.863Z" }, + { url = "https://files.pythonhosted.org/packages/39/d6/6026ef8903aef2a15b7ba5ad84c74ca2ce67d29fc6d99e07262a65061619/pyogrio-0.11.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:334563d24defc5d706bd2a1fa7d7433e33140e64b0fb9cb4afc715e4f6035c2b", size = 27734210, upload-time = "2025-05-08T15:19:32.185Z" }, + { url = "https://files.pythonhosted.org/packages/94/81/232d4808e54e026b9059f966bc2a4a5de7e42f42e4bd4e3897e1b31ea87f/pyogrio-0.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:bf1f9128136abcbd1605d6fc6bf8c529c2092558246d8046ee6fbc383c550074", size = 19165401, upload-time = "2025-05-08T15:19:35.482Z" }, + { url = "https://files.pythonhosted.org/packages/ba/2b/098692d9be9defb5d40327af50ffdc0c5486a4724c06b3d1f757cd5abd6d/pyogrio-0.11.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:0b39e34199460dcd6a606db184094e69bcba89d1babb9a76cee74a134b53b232", size = 19485661, upload-time = "2025-05-08T15:19:38.915Z" }, + { url = "https://files.pythonhosted.org/packages/00/06/5c197d76ea33d4667f427309b108281e7a3a0224e9a32c3fdb3c54e47133/pyogrio-0.11.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:5a952ef7a68fdfaf796a91b88c706108cb50ddd0a74096418e84aab7ac8a38be", size = 20667327, upload-time = "2025-05-08T15:19:41.847Z" }, + { url = "https://files.pythonhosted.org/packages/9d/24/08715971846562624e1f185fc6f93d0a305950cc9167ac0b761f571c3c62/pyogrio-0.11.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4527abcac23bdac5781f9be9a7dd55fccd9967c7241a8e53de8ea1a06ea0cc2b", size = 27007054, upload-time = "2025-05-08T15:19:45.723Z" }, + { url = "https://files.pythonhosted.org/packages/0d/07/c6c6d33e5b052b6bb785904477e906ed880509bc3748862ef59ed017739a/pyogrio-0.11.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:373a29d56a9016978aff57b88a640b5a8c3024dba7be1c059ad5af4ba932b59e", size = 26493010, upload-time = "2025-05-08T15:19:49.379Z" }, + { url = "https://files.pythonhosted.org/packages/9f/bb/e12bebcf2668bcb83736cc76177f36ee300ac8069880fca3a73f8753fc70/pyogrio-0.11.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:ea2a131369ae8e62e30fa4f7e1442074d4828417d05ded660acea04a6a1d199b", size = 27710440, upload-time = "2025-05-08T15:19:53.204Z" }, + { url = "https://files.pythonhosted.org/packages/46/8f/a9d134fbbf213db259b79f5bd5bbe7e3de1ff34fbe2a0b0be9d7d2919323/pyogrio-0.11.0-cp313-cp313-win_amd64.whl", hash = "sha256:bf041d65bd1e89a4bb61845579c2963f2cca1bb33cde79f4ec2c0e0dc6f93afb", size = 19163300, upload-time = "2025-05-08T15:19:56.67Z" }, +] + +[[package]] +name = "pyparsing" +version = "3.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/22/f1129e69d94ffff626bdb5c835506b3a5b4f3d070f17ea295e12c2c6f60f/pyparsing-3.2.3.tar.gz", hash = "sha256:b9c13f1ab8b3b542f72e28f634bad4de758ab3ce4546e4301970ad6fa77c38be", size = 1088608, upload-time = "2025-03-25T05:01:28.114Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/e7/df2285f3d08fee213f2d041540fa4fc9ca6c2d44cf36d3a035bf2a8d2bcc/pyparsing-3.2.3-py3-none-any.whl", hash = "sha256:a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf", size = 111120, upload-time = "2025-03-25T05:01:24.908Z" }, +] + +[[package]] +name = "pyproj" +version = "3.7.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/67/10/a8480ea27ea4bbe896c168808854d00f2a9b49f95c0319ddcbba693c8a90/pyproj-3.7.1.tar.gz", hash = "sha256:60d72facd7b6b79853f19744779abcd3f804c4e0d4fa8815469db20c9f640a47", size = 226339, upload-time = "2025-02-16T04:28:46.621Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/25/a3/c4cd4bba5b336075f145fe784fcaf4ef56ffbc979833303303e7a659dda2/pyproj-3.7.1-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:bf09dbeb333c34e9c546364e7df1ff40474f9fddf9e70657ecb0e4f670ff0b0e", size = 6262524, upload-time = "2025-02-16T04:27:19.725Z" }, + { url = "https://files.pythonhosted.org/packages/40/45/4fdf18f4cc1995f1992771d2a51cf186a9d7a8ec973c9693f8453850c707/pyproj-3.7.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:6575b2e53cc9e3e461ad6f0692a5564b96e7782c28631c7771c668770915e169", size = 4665102, upload-time = "2025-02-16T04:27:24.428Z" }, + { url = "https://files.pythonhosted.org/packages/0c/d2/360eb127380106cee83569954ae696b88a891c804d7a93abe3fbc15f5976/pyproj-3.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8cb516ee35ed57789b46b96080edf4e503fdb62dbb2e3c6581e0d6c83fca014b", size = 9432667, upload-time = "2025-02-16T04:27:27.04Z" }, + { url = "https://files.pythonhosted.org/packages/76/a5/c6e11b9a99ce146741fb4d184d5c468446c6d6015b183cae82ac822a6cfa/pyproj-3.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e47c4e93b88d99dd118875ee3ca0171932444cdc0b52d493371b5d98d0f30ee", size = 9259185, upload-time = "2025-02-16T04:27:30.35Z" }, + { url = "https://files.pythonhosted.org/packages/41/56/a3c15c42145797a99363fa0fdb4e9805dccb8b4a76a6d7b2cdf36ebcc2a1/pyproj-3.7.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3e8d276caeae34fcbe4813855d0d97b9b825bab8d7a8b86d859c24a6213a5a0d", size = 10469103, upload-time = "2025-02-16T04:27:33.542Z" }, + { url = "https://files.pythonhosted.org/packages/ef/73/c9194c2802fefe2a4fd4230bdd5ab083e7604e93c64d0356fa49c363bad6/pyproj-3.7.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f173f851ee75e54acdaa053382b6825b400cb2085663a9bb073728a59c60aebb", size = 10401391, upload-time = "2025-02-16T04:27:36.051Z" }, + { url = "https://files.pythonhosted.org/packages/c5/1d/ce8bb5b9251b04d7c22d63619bb3db3d2397f79000a9ae05b3fd86a5837e/pyproj-3.7.1-cp310-cp310-win32.whl", hash = "sha256:f550281ed6e5ea88fcf04a7c6154e246d5714be495c50c9e8e6b12d3fb63e158", size = 5869997, upload-time = "2025-02-16T04:27:38.302Z" }, + { url = "https://files.pythonhosted.org/packages/09/6a/ca145467fd2e5b21e3d5b8c2b9645dcfb3b68f08b62417699a1f5689008e/pyproj-3.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:3537668992a709a2e7f068069192138618c00d0ba113572fdd5ee5ffde8222f3", size = 6278581, upload-time = "2025-02-16T04:27:41.051Z" }, + { url = "https://files.pythonhosted.org/packages/ab/0d/63670fc527e664068b70b7cab599aa38b7420dd009bdc29ea257e7f3dfb3/pyproj-3.7.1-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:a94e26c1a4950cea40116775588a2ca7cf56f1f434ff54ee35a84718f3841a3d", size = 6264315, upload-time = "2025-02-16T04:27:44.539Z" }, + { url = "https://files.pythonhosted.org/packages/25/9d/cbaf82cfb290d1f1fa42feb9ba9464013bb3891e40c4199f8072112e4589/pyproj-3.7.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:263b54ba5004b6b957d55757d846fc5081bc02980caa0279c4fc95fa0fff6067", size = 4666267, upload-time = "2025-02-16T04:27:47.019Z" }, + { url = "https://files.pythonhosted.org/packages/79/53/24f9f9b8918c0550f3ff49ad5de4cf3f0688c9f91ff191476db8979146fe/pyproj-3.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6d6a2ccd5607cd15ef990c51e6f2dd27ec0a741e72069c387088bba3aab60fa", size = 9680510, upload-time = "2025-02-16T04:27:49.239Z" }, + { url = "https://files.pythonhosted.org/packages/3c/ac/12fab74a908d40b63174dc704587febd0729414804bbfd873cabe504ff2d/pyproj-3.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c5dcf24ede53d8abab7d8a77f69ff1936c6a8843ef4fcc574646e4be66e5739", size = 9493619, upload-time = "2025-02-16T04:27:52.65Z" }, + { url = "https://files.pythonhosted.org/packages/c4/45/26311d6437135da2153a178125db5dfb6abce831ce04d10ec207eabac70a/pyproj-3.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3c2e7449840a44ce860d8bea2c6c1c4bc63fa07cba801dcce581d14dcb031a02", size = 10709755, upload-time = "2025-02-16T04:27:55.239Z" }, + { url = "https://files.pythonhosted.org/packages/99/52/4ecd0986f27d0e6c8ee3a7bc5c63da15acd30ac23034f871325b297e61fd/pyproj-3.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0829865c1d3a3543f918b3919dc601eea572d6091c0dd175e1a054db9c109274", size = 10642970, upload-time = "2025-02-16T04:27:58.343Z" }, + { url = "https://files.pythonhosted.org/packages/3f/a5/d3bfc018fc92195a000d1d28acc1f3f1df15ff9f09ece68f45a2636c0134/pyproj-3.7.1-cp311-cp311-win32.whl", hash = "sha256:6181960b4b812e82e588407fe5c9c68ada267c3b084db078f248db5d7f45d18a", size = 5868295, upload-time = "2025-02-16T04:28:01.712Z" }, + { url = "https://files.pythonhosted.org/packages/92/39/ef6f06a5b223dbea308cfcbb7a0f72e7b506aef1850e061b2c73b0818715/pyproj-3.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:5ad0ff443a785d84e2b380869fdd82e6bfc11eba6057d25b4409a9bbfa867970", size = 6279871, upload-time = "2025-02-16T04:28:04.988Z" }, + { url = "https://files.pythonhosted.org/packages/e6/c9/876d4345b8d17f37ac59ebd39f8fa52fc6a6a9891a420f72d050edb6b899/pyproj-3.7.1-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:2781029d90df7f8d431e29562a3f2d8eafdf233c4010d6fc0381858dc7373217", size = 6264087, upload-time = "2025-02-16T04:28:09.036Z" }, + { url = "https://files.pythonhosted.org/packages/ff/e6/5f8691f8c90e7f402cc80a6276eb19d2ec1faa150d5ae2dd9c7b0a254da8/pyproj-3.7.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:d61bf8ab04c73c1da08eedaf21a103b72fa5b0a9b854762905f65ff8b375d394", size = 4669628, upload-time = "2025-02-16T04:28:10.944Z" }, + { url = "https://files.pythonhosted.org/packages/42/ec/16475bbb79c1c68845c0a0d9c60c4fb31e61b8a2a20bc18b1a81e81c7f68/pyproj-3.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04abc517a8555d1b05fcee768db3280143fe42ec39fdd926a2feef31631a1f2f", size = 9721415, upload-time = "2025-02-16T04:28:13.342Z" }, + { url = "https://files.pythonhosted.org/packages/b3/a3/448f05b15e318bd6bea9a32cfaf11e886c4ae61fa3eee6e09ed5c3b74bb2/pyproj-3.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084c0a475688f934d386c2ab3b6ce03398a473cd48adfda70d9ab8f87f2394a0", size = 9556447, upload-time = "2025-02-16T04:28:15.818Z" }, + { url = "https://files.pythonhosted.org/packages/6a/ae/bd15fe8d8bd914ead6d60bca7f895a4e6f8ef7e3928295134ff9a7dad14c/pyproj-3.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a20727a23b1e49c7dc7fe3c3df8e56a8a7acdade80ac2f5cca29d7ca5564c145", size = 10758317, upload-time = "2025-02-16T04:28:18.338Z" }, + { url = "https://files.pythonhosted.org/packages/9d/d9/5ccefb8bca925f44256b188a91c31238cae29ab6ee7f53661ecc04616146/pyproj-3.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bf84d766646f1ebd706d883755df4370aaf02b48187cedaa7e4239f16bc8213d", size = 10771259, upload-time = "2025-02-16T04:28:20.822Z" }, + { url = "https://files.pythonhosted.org/packages/2a/7d/31dedff9c35fa703162f922eeb0baa6c44a3288469a5fd88d209e2892f9e/pyproj-3.7.1-cp312-cp312-win32.whl", hash = "sha256:5f0da2711364d7cb9f115b52289d4a9b61e8bca0da57f44a3a9d6fc9bdeb7274", size = 5859914, upload-time = "2025-02-16T04:28:23.303Z" }, + { url = "https://files.pythonhosted.org/packages/3e/47/c6ab03d6564a7c937590cff81a2742b5990f096cce7c1a622d325be340ee/pyproj-3.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:aee664a9d806612af30a19dba49e55a7a78ebfec3e9d198f6a6176e1d140ec98", size = 6273196, upload-time = "2025-02-16T04:28:25.227Z" }, + { url = "https://files.pythonhosted.org/packages/ef/01/984828464c9960036c602753fc0f21f24f0aa9043c18fa3f2f2b66a86340/pyproj-3.7.1-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:5f8d02ef4431dee414d1753d13fa82a21a2f61494737b5f642ea668d76164d6d", size = 6253062, upload-time = "2025-02-16T04:28:27.861Z" }, + { url = "https://files.pythonhosted.org/packages/68/65/6ecdcdc829811a2c160cdfe2f068a009fc572fd4349664f758ccb0853a7c/pyproj-3.7.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:0b853ae99bda66cbe24b4ccfe26d70601d84375940a47f553413d9df570065e0", size = 4660548, upload-time = "2025-02-16T04:28:29.526Z" }, + { url = "https://files.pythonhosted.org/packages/67/da/dda94c4490803679230ba4c17a12f151b307a0d58e8110820405ca2d98db/pyproj-3.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83db380c52087f9e9bdd8a527943b2e7324f275881125e39475c4f9277bdeec4", size = 9662464, upload-time = "2025-02-16T04:28:31.437Z" }, + { url = "https://files.pythonhosted.org/packages/6f/57/f61b7d22c91ae1d12ee00ac4c0038714e774ebcd851b9133e5f4f930dd40/pyproj-3.7.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b35ed213892e211a3ce2bea002aa1183e1a2a9b79e51bb3c6b15549a831ae528", size = 9497461, upload-time = "2025-02-16T04:28:33.848Z" }, + { url = "https://files.pythonhosted.org/packages/b7/f6/932128236f79d2ac7d39fe1a19667fdf7155d9a81d31fb9472a7a497790f/pyproj-3.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a8b15b0463d1303bab113d1a6af2860a0d79013c3a66fcc5475ce26ef717fd4f", size = 10708869, upload-time = "2025-02-16T04:28:37.34Z" }, + { url = "https://files.pythonhosted.org/packages/1d/0d/07ac7712994454a254c383c0d08aff9916a2851e6512d59da8dc369b1b02/pyproj-3.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:87229e42b75e89f4dad6459200f92988c5998dfb093c7c631fb48524c86cd5dc", size = 10729260, upload-time = "2025-02-16T04:28:40.639Z" }, + { url = "https://files.pythonhosted.org/packages/b0/d0/9c604bc72c37ba69b867b6df724d6a5af6789e8c375022c952f65b2af558/pyproj-3.7.1-cp313-cp313-win32.whl", hash = "sha256:d666c3a3faaf3b1d7fc4a544059c4eab9d06f84a604b070b7aa2f318e227798e", size = 5855462, upload-time = "2025-02-16T04:28:42.827Z" }, + { url = "https://files.pythonhosted.org/packages/98/df/68a2b7f5fb6400c64aad82d72bcc4bc531775e62eedff993a77c780defd0/pyproj-3.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:d3caac7473be22b6d6e102dde6c46de73b96bc98334e577dfaee9886f102ea2e", size = 6266573, upload-time = "2025-02-16T04:28:44.727Z" }, +] + +[[package]] +name = "pyproject-hooks" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/82/28175b2414effca1cdac8dc99f76d660e7a4fb0ceefa4b4ab8f5f6742925/pyproject_hooks-1.2.0.tar.gz", hash = "sha256:1e859bd5c40fae9448642dd871adf459e5e2084186e8d2c2a79a824c970da1f8", size = 19228, upload-time = "2024-09-29T09:24:13.293Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bd/24/12818598c362d7f300f18e74db45963dbcb85150324092410c8b49405e42/pyproject_hooks-1.2.0-py3-none-any.whl", hash = "sha256:9e5c6bfa8dcc30091c74b0cf803c81fdd29d94f01992a7707bc97babb1141913", size = 10216, upload-time = "2024-09-29T09:24:11.978Z" }, +] + +[[package]] +name = "pypyr" +version = "5.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, + { name = "ruamel-yaml" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, + { name = "tomli-w" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/34/c3/f15d53d546d7ee74ec13643c1a98f5690504f91f6febc3aae4524367179f/pypyr-5.9.1.tar.gz", hash = "sha256:a87f8410acf41eb24e45ec57107269a043e6afff4170c7cef21b95497f0614ac", size = 276783, upload-time = "2023-09-22T03:14:40.524Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/80/02/a23f3c205b09be057ab6000ffdd5dbba30ec958603e785361e7e722788ba/pypyr-5.9.1-py3-none-any.whl", hash = "sha256:2103d9ed83d5c8f455bbe2443f9fbd829196435ffe30143b58a0a03800e3d95d", size = 170760, upload-time = "2023-09-22T03:14:38.824Z" }, +] + +[[package]] +name = "pytest" +version = "7.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, + { name = "iniconfig" }, + { name = "packaging" }, + { name = "pluggy" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0b/21/055f39bf8861580b43f845f9e8270c7786fe629b2f8562ff09007132e2e7/pytest-7.2.0.tar.gz", hash = "sha256:c4014eb40e10f11f355ad4e3c2fb2c6c6d1919c73f3b5a433de4708202cade59", size = 1300608, upload-time = "2022-10-25T07:58:12.847Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/67/68/a5eb36c3a8540594b6035e6cdae40c1ef1b6a2bfacbecc3d1a544583c078/pytest-7.2.0-py3-none-any.whl", hash = "sha256:892f933d339f068883b6fd5a459f03d85bfcb355e4981e146d2c7616c21fef71", size = 316791, upload-time = "2022-10-25T07:58:10.747Z" }, +] + +[[package]] +name = "pytest-cov" +version = "5.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "coverage", extra = ["toml"] }, + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/74/67/00efc8d11b630c56f15f4ad9c7f9223f1e5ec275aaae3fa9118c6a223ad2/pytest-cov-5.0.0.tar.gz", hash = "sha256:5837b58e9f6ebd335b0f8060eecce69b662415b16dc503883a02f45dfeb14857", size = 63042, upload-time = "2024-03-24T20:16:34.856Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/3a/af5b4fa5961d9a1e6237b530eb87dd04aea6eb83da09d2a4073d81b54ccf/pytest_cov-5.0.0-py3-none-any.whl", hash = "sha256:4f0764a1219df53214206bf1feea4633c3b558a2925c8b59f144f682861ce652", size = 21990, upload-time = "2024-03-24T20:16:32.444Z" }, +] + +[[package]] +name = "pytest-datadir" +version = "1.7.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2f/16/7701db071caf7d8f7226b76323de40a09d2a391c7d064cda072d45a87c7b/pytest_datadir-1.7.2.tar.gz", hash = "sha256:15f5228a35d0a3205e4968e75d3b9cca91762424e1eafc21eb637d380a48443e", size = 11265, upload-time = "2025-06-06T11:24:18.075Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d3/61/a06f3406852534e186413c75f544c90251db00fd8eb9625ee3ac239499f3/pytest_datadir-1.7.2-py3-none-any.whl", hash = "sha256:8392ba0e9eaf37030e663dcd91cc5123dec99c44300f0c5eac44f35f13f0e086", size = 6273, upload-time = "2025-06-06T11:24:16.388Z" }, +] + +[[package]] +name = "pytest-regressions" +version = "2.8.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, + { name = "pytest-datadir" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c5/ef/48083b093c1291fac24d0556b8ddb88310977c5b7d6c7abe73cc87647901/pytest_regressions-2.8.0.tar.gz", hash = "sha256:775044e17117f5427df2caad3ab1c66889abe770a0ce2bc3f24fdeac99af76fe", size = 116454, upload-time = "2025-05-30T17:46:21.498Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7f/6a/cf0a9929a94912e7123dd3ab23658fce5c3bdef12cb270da84348282feda/pytest_regressions-2.8.0-py3-none-any.whl", hash = "sha256:2926f37efa5fd6793806b10352e274c5284a5469a845aeab6243e86f9214766f", size = 24859, upload-time = "2025-05-30T17:46:19.722Z" }, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, +] + +[[package]] +name = "python-dotenv" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/88/2c/7bb1416c5620485aa793f2de31d3df393d3686aa8a8506d11e10e13c5baf/python_dotenv-1.1.0.tar.gz", hash = "sha256:41f90bc6f5f177fb41f53e87666db362025010eb28f60a01c9143bfa33a2b2d5", size = 39920, upload-time = "2025-03-25T10:14:56.835Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/18/98a99ad95133c6a6e2005fe89faedf294a748bd5dc803008059409ac9b1e/python_dotenv-1.1.0-py3-none-any.whl", hash = "sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d", size = 20256, upload-time = "2025-03-25T10:14:55.034Z" }, +] + +[[package]] +name = "python-json-logger" +version = "3.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9e/de/d3144a0bceede957f961e975f3752760fbe390d57fbe194baf709d8f1f7b/python_json_logger-3.3.0.tar.gz", hash = "sha256:12b7e74b17775e7d565129296105bbe3910842d9d0eb083fc83a6a617aa8df84", size = 16642, upload-time = "2025-03-07T07:08:27.301Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/20/0f2523b9e50a8052bc6a8b732dfc8568abbdc42010aef03a2d750bdab3b2/python_json_logger-3.3.0-py3-none-any.whl", hash = "sha256:dd980fae8cffb24c13caf6e158d3d61c0d6d22342f932cb6e9deedab3d35eec7", size = 15163, upload-time = "2025-03-07T07:08:25.627Z" }, +] + +[[package]] +name = "pytz" +version = "2025.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884, upload-time = "2025-03-25T02:25:00.538Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225, upload-time = "2025-03-25T02:24:58.468Z" }, +] + +[[package]] +name = "pywin32" +version = "310" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/da/a5f38fffbba2fb99aa4aa905480ac4b8e83ca486659ac8c95bce47fb5276/pywin32-310-cp310-cp310-win32.whl", hash = "sha256:6dd97011efc8bf51d6793a82292419eba2c71cf8e7250cfac03bba284454abc1", size = 8848240, upload-time = "2025-03-17T00:55:46.783Z" }, + { url = "https://files.pythonhosted.org/packages/aa/fe/d873a773324fa565619ba555a82c9dabd677301720f3660a731a5d07e49a/pywin32-310-cp310-cp310-win_amd64.whl", hash = "sha256:c3e78706e4229b915a0821941a84e7ef420bf2b77e08c9dae3c76fd03fd2ae3d", size = 9601854, upload-time = "2025-03-17T00:55:48.783Z" }, + { url = "https://files.pythonhosted.org/packages/3c/84/1a8e3d7a15490d28a5d816efa229ecb4999cdc51a7c30dd8914f669093b8/pywin32-310-cp310-cp310-win_arm64.whl", hash = "sha256:33babed0cf0c92a6f94cc6cc13546ab24ee13e3e800e61ed87609ab91e4c8213", size = 8522963, upload-time = "2025-03-17T00:55:50.969Z" }, + { url = "https://files.pythonhosted.org/packages/f7/b1/68aa2986129fb1011dabbe95f0136f44509afaf072b12b8f815905a39f33/pywin32-310-cp311-cp311-win32.whl", hash = "sha256:1e765f9564e83011a63321bb9d27ec456a0ed90d3732c4b2e312b855365ed8bd", size = 8784284, upload-time = "2025-03-17T00:55:53.124Z" }, + { url = "https://files.pythonhosted.org/packages/b3/bd/d1592635992dd8db5bb8ace0551bc3a769de1ac8850200cfa517e72739fb/pywin32-310-cp311-cp311-win_amd64.whl", hash = "sha256:126298077a9d7c95c53823934f000599f66ec9296b09167810eb24875f32689c", size = 9520748, upload-time = "2025-03-17T00:55:55.203Z" }, + { url = "https://files.pythonhosted.org/packages/90/b1/ac8b1ffce6603849eb45a91cf126c0fa5431f186c2e768bf56889c46f51c/pywin32-310-cp311-cp311-win_arm64.whl", hash = "sha256:19ec5fc9b1d51c4350be7bb00760ffce46e6c95eaf2f0b2f1150657b1a43c582", size = 8455941, upload-time = "2025-03-17T00:55:57.048Z" }, + { url = "https://files.pythonhosted.org/packages/6b/ec/4fdbe47932f671d6e348474ea35ed94227fb5df56a7c30cbbb42cd396ed0/pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d", size = 8796239, upload-time = "2025-03-17T00:55:58.807Z" }, + { url = "https://files.pythonhosted.org/packages/e3/e5/b0627f8bb84e06991bea89ad8153a9e50ace40b2e1195d68e9dff6b03d0f/pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060", size = 9503839, upload-time = "2025-03-17T00:56:00.8Z" }, + { url = "https://files.pythonhosted.org/packages/1f/32/9ccf53748df72301a89713936645a664ec001abd35ecc8578beda593d37d/pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966", size = 8459470, upload-time = "2025-03-17T00:56:02.601Z" }, + { url = "https://files.pythonhosted.org/packages/1c/09/9c1b978ffc4ae53999e89c19c77ba882d9fce476729f23ef55211ea1c034/pywin32-310-cp313-cp313-win32.whl", hash = "sha256:5d241a659c496ada3253cd01cfaa779b048e90ce4b2b38cd44168ad555ce74ab", size = 8794384, upload-time = "2025-03-17T00:56:04.383Z" }, + { url = "https://files.pythonhosted.org/packages/45/3c/b4640f740ffebadd5d34df35fecba0e1cfef8fde9f3e594df91c28ad9b50/pywin32-310-cp313-cp313-win_amd64.whl", hash = "sha256:667827eb3a90208ddbdcc9e860c81bde63a135710e21e4cb3348968e4bd5249e", size = 9503039, upload-time = "2025-03-17T00:56:06.207Z" }, + { url = "https://files.pythonhosted.org/packages/b4/f4/f785020090fb050e7fb6d34b780f2231f302609dc964672f72bfaeb59a28/pywin32-310-cp313-cp313-win_arm64.whl", hash = "sha256:e308f831de771482b7cf692a1f308f8fca701b2d8f9dde6cc440c7da17e47b33", size = 8458152, upload-time = "2025-03-17T00:56:07.819Z" }, +] + +[[package]] +name = "pywinpty" +version = "2.0.15" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2d/7c/917f9c4681bb8d34bfbe0b79d36bbcd902651aeab48790df3d30ba0202fb/pywinpty-2.0.15.tar.gz", hash = "sha256:312cf39153a8736c617d45ce8b6ad6cd2107de121df91c455b10ce6bba7a39b2", size = 29017, upload-time = "2025-02-03T21:53:23.265Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a6/b7/855db919ae526d2628f3f2e6c281c4cdff7a9a8af51bb84659a9f07b1861/pywinpty-2.0.15-cp310-cp310-win_amd64.whl", hash = "sha256:8e7f5de756a615a38b96cd86fa3cd65f901ce54ce147a3179c45907fa11b4c4e", size = 1405161, upload-time = "2025-02-03T21:56:25.008Z" }, + { url = "https://files.pythonhosted.org/packages/5e/ac/6884dcb7108af66ad53f73ef4dad096e768c9203a6e6ce5e6b0c4a46e238/pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca", size = 1405249, upload-time = "2025-02-03T21:55:47.114Z" }, + { url = "https://files.pythonhosted.org/packages/88/e5/9714def18c3a411809771a3fbcec70bffa764b9675afb00048a620fca604/pywinpty-2.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:83a8f20b430bbc5d8957249f875341a60219a4e971580f2ba694fbfb54a45ebc", size = 1405243, upload-time = "2025-02-03T21:56:52.476Z" }, + { url = "https://files.pythonhosted.org/packages/fb/16/2ab7b3b7f55f3c6929e5f629e1a68362981e4e5fed592a2ed1cb4b4914a5/pywinpty-2.0.15-cp313-cp313-win_amd64.whl", hash = "sha256:ab5920877dd632c124b4ed17bc6dd6ef3b9f86cd492b963ffdb1a67b85b0f408", size = 1405020, upload-time = "2025-02-03T21:56:04.753Z" }, + { url = "https://files.pythonhosted.org/packages/7c/16/edef3515dd2030db2795dbfbe392232c7a0f3dc41b98e92b38b42ba497c7/pywinpty-2.0.15-cp313-cp313t-win_amd64.whl", hash = "sha256:a4560ad8c01e537708d2790dbe7da7d986791de805d89dd0d3697ca59e9e4901", size = 1404151, upload-time = "2025-02-03T21:55:53.628Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631, upload-time = "2024-08-06T20:33:50.674Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/95/a3fac87cb7158e231b5a6012e438c647e1a87f09f8e0d123acec8ab8bf71/PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086", size = 184199, upload-time = "2024-08-06T20:31:40.178Z" }, + { url = "https://files.pythonhosted.org/packages/c7/7a/68bd47624dab8fd4afbfd3c48e3b79efe09098ae941de5b58abcbadff5cb/PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf", size = 171758, upload-time = "2024-08-06T20:31:42.173Z" }, + { url = "https://files.pythonhosted.org/packages/49/ee/14c54df452143b9ee9f0f29074d7ca5516a36edb0b4cc40c3f280131656f/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237", size = 718463, upload-time = "2024-08-06T20:31:44.263Z" }, + { url = "https://files.pythonhosted.org/packages/4d/61/de363a97476e766574650d742205be468921a7b532aa2499fcd886b62530/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b", size = 719280, upload-time = "2024-08-06T20:31:50.199Z" }, + { url = "https://files.pythonhosted.org/packages/6b/4e/1523cb902fd98355e2e9ea5e5eb237cbc5f3ad5f3075fa65087aa0ecb669/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed", size = 751239, upload-time = "2024-08-06T20:31:52.292Z" }, + { url = "https://files.pythonhosted.org/packages/b7/33/5504b3a9a4464893c32f118a9cc045190a91637b119a9c881da1cf6b7a72/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180", size = 695802, upload-time = "2024-08-06T20:31:53.836Z" }, + { url = "https://files.pythonhosted.org/packages/5c/20/8347dcabd41ef3a3cdc4f7b7a2aff3d06598c8779faa189cdbf878b626a4/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68", size = 720527, upload-time = "2024-08-06T20:31:55.565Z" }, + { url = "https://files.pythonhosted.org/packages/be/aa/5afe99233fb360d0ff37377145a949ae258aaab831bde4792b32650a4378/PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99", size = 144052, upload-time = "2024-08-06T20:31:56.914Z" }, + { url = "https://files.pythonhosted.org/packages/b5/84/0fa4b06f6d6c958d207620fc60005e241ecedceee58931bb20138e1e5776/PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e", size = 161774, upload-time = "2024-08-06T20:31:58.304Z" }, + { url = "https://files.pythonhosted.org/packages/f8/aa/7af4e81f7acba21a4c6be026da38fd2b872ca46226673c89a758ebdc4fd2/PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774", size = 184612, upload-time = "2024-08-06T20:32:03.408Z" }, + { url = "https://files.pythonhosted.org/packages/8b/62/b9faa998fd185f65c1371643678e4d58254add437edb764a08c5a98fb986/PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee", size = 172040, upload-time = "2024-08-06T20:32:04.926Z" }, + { url = "https://files.pythonhosted.org/packages/ad/0c/c804f5f922a9a6563bab712d8dcc70251e8af811fce4524d57c2c0fd49a4/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c", size = 736829, upload-time = "2024-08-06T20:32:06.459Z" }, + { url = "https://files.pythonhosted.org/packages/51/16/6af8d6a6b210c8e54f1406a6b9481febf9c64a3109c541567e35a49aa2e7/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317", size = 764167, upload-time = "2024-08-06T20:32:08.338Z" }, + { url = "https://files.pythonhosted.org/packages/75/e4/2c27590dfc9992f73aabbeb9241ae20220bd9452df27483b6e56d3975cc5/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85", size = 762952, upload-time = "2024-08-06T20:32:14.124Z" }, + { url = "https://files.pythonhosted.org/packages/9b/97/ecc1abf4a823f5ac61941a9c00fe501b02ac3ab0e373c3857f7d4b83e2b6/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4", size = 735301, upload-time = "2024-08-06T20:32:16.17Z" }, + { url = "https://files.pythonhosted.org/packages/45/73/0f49dacd6e82c9430e46f4a027baa4ca205e8b0a9dce1397f44edc23559d/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e", size = 756638, upload-time = "2024-08-06T20:32:18.555Z" }, + { url = "https://files.pythonhosted.org/packages/22/5f/956f0f9fc65223a58fbc14459bf34b4cc48dec52e00535c79b8db361aabd/PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5", size = 143850, upload-time = "2024-08-06T20:32:19.889Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/8da0bbe2ab9dcdd11f4f4557ccaf95c10b9811b13ecced089d43ce59c3c8/PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44", size = 161980, upload-time = "2024-08-06T20:32:21.273Z" }, + { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873, upload-time = "2024-08-06T20:32:25.131Z" }, + { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302, upload-time = "2024-08-06T20:32:26.511Z" }, + { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154, upload-time = "2024-08-06T20:32:28.363Z" }, + { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223, upload-time = "2024-08-06T20:32:30.058Z" }, + { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542, upload-time = "2024-08-06T20:32:31.881Z" }, + { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164, upload-time = "2024-08-06T20:32:37.083Z" }, + { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611, upload-time = "2024-08-06T20:32:38.898Z" }, + { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591, upload-time = "2024-08-06T20:32:40.241Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338, upload-time = "2024-08-06T20:32:41.93Z" }, + { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309, upload-time = "2024-08-06T20:32:43.4Z" }, + { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679, upload-time = "2024-08-06T20:32:44.801Z" }, + { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428, upload-time = "2024-08-06T20:32:46.432Z" }, + { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361, upload-time = "2024-08-06T20:32:51.188Z" }, + { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523, upload-time = "2024-08-06T20:32:53.019Z" }, + { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660, upload-time = "2024-08-06T20:32:54.708Z" }, + { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597, upload-time = "2024-08-06T20:32:56.985Z" }, + { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527, upload-time = "2024-08-06T20:33:03.001Z" }, + { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446, upload-time = "2024-08-06T20:33:04.33Z" }, +] + +[[package]] +name = "pyzmq" +version = "26.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "implementation_name == 'pypy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/11/b9213d25230ac18a71b39b3723494e57adebe36e066397b961657b3b41c1/pyzmq-26.4.0.tar.gz", hash = "sha256:4bd13f85f80962f91a651a7356fe0472791a5f7a92f227822b5acf44795c626d", size = 278293, upload-time = "2025-04-04T12:05:44.049Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/b8/af1d814ffc3ff9730f9a970cbf216b6f078e5d251a25ef5201d7bc32a37c/pyzmq-26.4.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:0329bdf83e170ac133f44a233fc651f6ed66ef8e66693b5af7d54f45d1ef5918", size = 1339238, upload-time = "2025-04-04T12:03:07.022Z" }, + { url = "https://files.pythonhosted.org/packages/ee/e4/5aafed4886c264f2ea6064601ad39c5fc4e9b6539c6ebe598a859832eeee/pyzmq-26.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:398a825d2dea96227cf6460ce0a174cf7657d6f6827807d4d1ae9d0f9ae64315", size = 672848, upload-time = "2025-04-04T12:03:08.591Z" }, + { url = "https://files.pythonhosted.org/packages/79/39/026bf49c721cb42f1ef3ae0ee3d348212a7621d2adb739ba97599b6e4d50/pyzmq-26.4.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6d52d62edc96787f5c1dfa6c6ccff9b581cfae5a70d94ec4c8da157656c73b5b", size = 911299, upload-time = "2025-04-04T12:03:10Z" }, + { url = "https://files.pythonhosted.org/packages/03/23/b41f936a9403b8f92325c823c0f264c6102a0687a99c820f1aaeb99c1def/pyzmq-26.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1410c3a3705db68d11eb2424d75894d41cff2f64d948ffe245dd97a9debfebf4", size = 867920, upload-time = "2025-04-04T12:03:11.311Z" }, + { url = "https://files.pythonhosted.org/packages/c1/3e/2de5928cdadc2105e7c8f890cc5f404136b41ce5b6eae5902167f1d5641c/pyzmq-26.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:7dacb06a9c83b007cc01e8e5277f94c95c453c5851aac5e83efe93e72226353f", size = 862514, upload-time = "2025-04-04T12:03:13.013Z" }, + { url = "https://files.pythonhosted.org/packages/ce/57/109569514dd32e05a61d4382bc88980c95bfd2f02e58fea47ec0ccd96de1/pyzmq-26.4.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6bab961c8c9b3a4dc94d26e9b2cdf84de9918931d01d6ff38c721a83ab3c0ef5", size = 1204494, upload-time = "2025-04-04T12:03:14.795Z" }, + { url = "https://files.pythonhosted.org/packages/aa/02/dc51068ff2ca70350d1151833643a598625feac7b632372d229ceb4de3e1/pyzmq-26.4.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7a5c09413b924d96af2aa8b57e76b9b0058284d60e2fc3730ce0f979031d162a", size = 1514525, upload-time = "2025-04-04T12:03:16.246Z" }, + { url = "https://files.pythonhosted.org/packages/48/2a/a7d81873fff0645eb60afaec2b7c78a85a377af8f1d911aff045d8955bc7/pyzmq-26.4.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7d489ac234d38e57f458fdbd12a996bfe990ac028feaf6f3c1e81ff766513d3b", size = 1414659, upload-time = "2025-04-04T12:03:17.652Z" }, + { url = "https://files.pythonhosted.org/packages/ef/ea/813af9c42ae21845c1ccfe495bd29c067622a621e85d7cda6bc437de8101/pyzmq-26.4.0-cp310-cp310-win32.whl", hash = "sha256:dea1c8db78fb1b4b7dc9f8e213d0af3fc8ecd2c51a1d5a3ca1cde1bda034a980", size = 580348, upload-time = "2025-04-04T12:03:19.384Z" }, + { url = "https://files.pythonhosted.org/packages/20/68/318666a89a565252c81d3fed7f3b4c54bd80fd55c6095988dfa2cd04a62b/pyzmq-26.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:fa59e1f5a224b5e04dc6c101d7186058efa68288c2d714aa12d27603ae93318b", size = 643838, upload-time = "2025-04-04T12:03:20.795Z" }, + { url = "https://files.pythonhosted.org/packages/91/f8/fb1a15b5f4ecd3e588bfde40c17d32ed84b735195b5c7d1d7ce88301a16f/pyzmq-26.4.0-cp310-cp310-win_arm64.whl", hash = "sha256:a651fe2f447672f4a815e22e74630b6b1ec3a1ab670c95e5e5e28dcd4e69bbb5", size = 559565, upload-time = "2025-04-04T12:03:22.676Z" }, + { url = "https://files.pythonhosted.org/packages/32/6d/234e3b0aa82fd0290b1896e9992f56bdddf1f97266110be54d0177a9d2d9/pyzmq-26.4.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:bfcf82644c9b45ddd7cd2a041f3ff8dce4a0904429b74d73a439e8cab1bd9e54", size = 1339723, upload-time = "2025-04-04T12:03:24.358Z" }, + { url = "https://files.pythonhosted.org/packages/4f/11/6d561efe29ad83f7149a7cd48e498e539ed09019c6cd7ecc73f4cc725028/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9bcae3979b2654d5289d3490742378b2f3ce804b0b5fd42036074e2bf35b030", size = 672645, upload-time = "2025-04-04T12:03:25.693Z" }, + { url = "https://files.pythonhosted.org/packages/19/fd/81bfe3e23f418644660bad1a90f0d22f0b3eebe33dd65a79385530bceb3d/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ccdff8ac4246b6fb60dcf3982dfaeeff5dd04f36051fe0632748fc0aa0679c01", size = 910133, upload-time = "2025-04-04T12:03:27.625Z" }, + { url = "https://files.pythonhosted.org/packages/97/68/321b9c775595ea3df832a9516252b653fe32818db66fdc8fa31c9b9fce37/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4550af385b442dc2d55ab7717837812799d3674cb12f9a3aa897611839c18e9e", size = 867428, upload-time = "2025-04-04T12:03:29.004Z" }, + { url = "https://files.pythonhosted.org/packages/4e/6e/159cbf2055ef36aa2aa297e01b24523176e5b48ead283c23a94179fb2ba2/pyzmq-26.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:2f9f7ffe9db1187a253fca95191854b3fda24696f086e8789d1d449308a34b88", size = 862409, upload-time = "2025-04-04T12:03:31.032Z" }, + { url = "https://files.pythonhosted.org/packages/05/1c/45fb8db7be5a7d0cadea1070a9cbded5199a2d578de2208197e592f219bd/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3709c9ff7ba61589b7372923fd82b99a81932b592a5c7f1a24147c91da9a68d6", size = 1205007, upload-time = "2025-04-04T12:03:32.687Z" }, + { url = "https://files.pythonhosted.org/packages/f8/fa/658c7f583af6498b463f2fa600f34e298e1b330886f82f1feba0dc2dd6c3/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:f8f3c30fb2d26ae5ce36b59768ba60fb72507ea9efc72f8f69fa088450cff1df", size = 1514599, upload-time = "2025-04-04T12:03:34.084Z" }, + { url = "https://files.pythonhosted.org/packages/4d/d7/44d641522353ce0a2bbd150379cb5ec32f7120944e6bfba4846586945658/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:382a4a48c8080e273427fc692037e3f7d2851959ffe40864f2db32646eeb3cef", size = 1414546, upload-time = "2025-04-04T12:03:35.478Z" }, + { url = "https://files.pythonhosted.org/packages/72/76/c8ed7263218b3d1e9bce07b9058502024188bd52cc0b0a267a9513b431fc/pyzmq-26.4.0-cp311-cp311-win32.whl", hash = "sha256:d56aad0517d4c09e3b4f15adebba8f6372c5102c27742a5bdbfc74a7dceb8fca", size = 579247, upload-time = "2025-04-04T12:03:36.846Z" }, + { url = "https://files.pythonhosted.org/packages/c3/d0/2d9abfa2571a0b1a67c0ada79a8aa1ba1cce57992d80f771abcdf99bb32c/pyzmq-26.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:963977ac8baed7058c1e126014f3fe58b3773f45c78cce7af5c26c09b6823896", size = 644727, upload-time = "2025-04-04T12:03:38.578Z" }, + { url = "https://files.pythonhosted.org/packages/0d/d1/c8ad82393be6ccedfc3c9f3adb07f8f3976e3c4802640fe3f71441941e70/pyzmq-26.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:c0c8e8cadc81e44cc5088fcd53b9b3b4ce9344815f6c4a03aec653509296fae3", size = 559942, upload-time = "2025-04-04T12:03:40.143Z" }, + { url = "https://files.pythonhosted.org/packages/10/44/a778555ebfdf6c7fc00816aad12d185d10a74d975800341b1bc36bad1187/pyzmq-26.4.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:5227cb8da4b6f68acfd48d20c588197fd67745c278827d5238c707daf579227b", size = 1341586, upload-time = "2025-04-04T12:03:41.954Z" }, + { url = "https://files.pythonhosted.org/packages/9c/4f/f3a58dc69ac757e5103be3bd41fb78721a5e17da7cc617ddb56d973a365c/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1c07a7fa7f7ba86554a2b1bef198c9fed570c08ee062fd2fd6a4dcacd45f905", size = 665880, upload-time = "2025-04-04T12:03:43.45Z" }, + { url = "https://files.pythonhosted.org/packages/fe/45/50230bcfb3ae5cb98bee683b6edeba1919f2565d7cc1851d3c38e2260795/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae775fa83f52f52de73183f7ef5395186f7105d5ed65b1ae65ba27cb1260de2b", size = 902216, upload-time = "2025-04-04T12:03:45.572Z" }, + { url = "https://files.pythonhosted.org/packages/41/59/56bbdc5689be5e13727491ad2ba5efd7cd564365750514f9bc8f212eef82/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66c760d0226ebd52f1e6b644a9e839b5db1e107a23f2fcd46ec0569a4fdd4e63", size = 859814, upload-time = "2025-04-04T12:03:47.188Z" }, + { url = "https://files.pythonhosted.org/packages/81/b1/57db58cfc8af592ce94f40649bd1804369c05b2190e4cbc0a2dad572baeb/pyzmq-26.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ef8c6ecc1d520debc147173eaa3765d53f06cd8dbe7bd377064cdbc53ab456f5", size = 855889, upload-time = "2025-04-04T12:03:49.223Z" }, + { url = "https://files.pythonhosted.org/packages/e8/92/47542e629cbac8f221c230a6d0f38dd3d9cff9f6f589ed45fdf572ffd726/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3150ef4084e163dec29ae667b10d96aad309b668fac6810c9e8c27cf543d6e0b", size = 1197153, upload-time = "2025-04-04T12:03:50.591Z" }, + { url = "https://files.pythonhosted.org/packages/07/e5/b10a979d1d565d54410afc87499b16c96b4a181af46e7645ab4831b1088c/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4448c9e55bf8329fa1dcedd32f661bf611214fa70c8e02fee4347bc589d39a84", size = 1507352, upload-time = "2025-04-04T12:03:52.473Z" }, + { url = "https://files.pythonhosted.org/packages/ab/58/5a23db84507ab9c01c04b1232a7a763be66e992aa2e66498521bbbc72a71/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e07dde3647afb084d985310d067a3efa6efad0621ee10826f2cb2f9a31b89d2f", size = 1406834, upload-time = "2025-04-04T12:03:54Z" }, + { url = "https://files.pythonhosted.org/packages/22/74/aaa837b331580c13b79ac39396601fb361454ee184ca85e8861914769b99/pyzmq-26.4.0-cp312-cp312-win32.whl", hash = "sha256:ba034a32ecf9af72adfa5ee383ad0fd4f4e38cdb62b13624278ef768fe5b5b44", size = 577992, upload-time = "2025-04-04T12:03:55.815Z" }, + { url = "https://files.pythonhosted.org/packages/30/0f/55f8c02c182856743b82dde46b2dc3e314edda7f1098c12a8227eeda0833/pyzmq-26.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:056a97aab4064f526ecb32f4343917a4022a5d9efb6b9df990ff72e1879e40be", size = 640466, upload-time = "2025-04-04T12:03:57.231Z" }, + { url = "https://files.pythonhosted.org/packages/e4/29/073779afc3ef6f830b8de95026ef20b2d1ec22d0324d767748d806e57379/pyzmq-26.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:2f23c750e485ce1eb639dbd576d27d168595908aa2d60b149e2d9e34c9df40e0", size = 556342, upload-time = "2025-04-04T12:03:59.218Z" }, + { url = "https://files.pythonhosted.org/packages/d7/20/fb2c92542488db70f833b92893769a569458311a76474bda89dc4264bd18/pyzmq-26.4.0-cp313-cp313-macosx_10_15_universal2.whl", hash = "sha256:c43fac689880f5174d6fc864857d1247fe5cfa22b09ed058a344ca92bf5301e3", size = 1339484, upload-time = "2025-04-04T12:04:00.671Z" }, + { url = "https://files.pythonhosted.org/packages/58/29/2f06b9cabda3a6ea2c10f43e67ded3e47fc25c54822e2506dfb8325155d4/pyzmq-26.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:902aca7eba477657c5fb81c808318460328758e8367ecdd1964b6330c73cae43", size = 666106, upload-time = "2025-04-04T12:04:02.366Z" }, + { url = "https://files.pythonhosted.org/packages/77/e4/dcf62bd29e5e190bd21bfccaa4f3386e01bf40d948c239239c2f1e726729/pyzmq-26.4.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5e48a830bfd152fe17fbdeaf99ac5271aa4122521bf0d275b6b24e52ef35eb6", size = 902056, upload-time = "2025-04-04T12:04:03.919Z" }, + { url = "https://files.pythonhosted.org/packages/1a/cf/b36b3d7aea236087d20189bec1a87eeb2b66009731d7055e5c65f845cdba/pyzmq-26.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31be2b6de98c824c06f5574331f805707c667dc8f60cb18580b7de078479891e", size = 860148, upload-time = "2025-04-04T12:04:05.581Z" }, + { url = "https://files.pythonhosted.org/packages/18/a6/f048826bc87528c208e90604c3bf573801e54bd91e390cbd2dfa860e82dc/pyzmq-26.4.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:6332452034be001bbf3206ac59c0d2a7713de5f25bb38b06519fc6967b7cf771", size = 855983, upload-time = "2025-04-04T12:04:07.096Z" }, + { url = "https://files.pythonhosted.org/packages/0a/27/454d34ab6a1d9772a36add22f17f6b85baf7c16e14325fa29e7202ca8ee8/pyzmq-26.4.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:da8c0f5dd352136853e6a09b1b986ee5278dfddfebd30515e16eae425c872b30", size = 1197274, upload-time = "2025-04-04T12:04:08.523Z" }, + { url = "https://files.pythonhosted.org/packages/f4/3d/7abfeab6b83ad38aa34cbd57c6fc29752c391e3954fd12848bd8d2ec0df6/pyzmq-26.4.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:f4ccc1a0a2c9806dda2a2dd118a3b7b681e448f3bb354056cad44a65169f6d86", size = 1507120, upload-time = "2025-04-04T12:04:10.58Z" }, + { url = "https://files.pythonhosted.org/packages/13/ff/bc8d21dbb9bc8705126e875438a1969c4f77e03fc8565d6901c7933a3d01/pyzmq-26.4.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:1c0b5fceadbab461578daf8d1dcc918ebe7ddd2952f748cf30c7cf2de5d51101", size = 1406738, upload-time = "2025-04-04T12:04:12.509Z" }, + { url = "https://files.pythonhosted.org/packages/f5/5d/d4cd85b24de71d84d81229e3bbb13392b2698432cf8fdcea5afda253d587/pyzmq-26.4.0-cp313-cp313-win32.whl", hash = "sha256:28e2b0ff5ba4b3dd11062d905682bad33385cfa3cc03e81abd7f0822263e6637", size = 577826, upload-time = "2025-04-04T12:04:14.289Z" }, + { url = "https://files.pythonhosted.org/packages/c6/6c/f289c1789d7bb6e5a3b3bef7b2a55089b8561d17132be7d960d3ff33b14e/pyzmq-26.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:23ecc9d241004c10e8b4f49d12ac064cd7000e1643343944a10df98e57bc544b", size = 640406, upload-time = "2025-04-04T12:04:15.757Z" }, + { url = "https://files.pythonhosted.org/packages/b3/99/676b8851cb955eb5236a0c1e9ec679ea5ede092bf8bf2c8a68d7e965cac3/pyzmq-26.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:1edb0385c7f025045d6e0f759d4d3afe43c17a3d898914ec6582e6f464203c08", size = 556216, upload-time = "2025-04-04T12:04:17.212Z" }, + { url = "https://files.pythonhosted.org/packages/65/c2/1fac340de9d7df71efc59d9c50fc7a635a77b103392d1842898dd023afcb/pyzmq-26.4.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:93a29e882b2ba1db86ba5dd5e88e18e0ac6b627026c5cfbec9983422011b82d4", size = 1333769, upload-time = "2025-04-04T12:04:18.665Z" }, + { url = "https://files.pythonhosted.org/packages/5c/c7/6c03637e8d742c3b00bec4f5e4cd9d1c01b2f3694c6f140742e93ca637ed/pyzmq-26.4.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb45684f276f57110bb89e4300c00f1233ca631f08f5f42528a5c408a79efc4a", size = 658826, upload-time = "2025-04-04T12:04:20.405Z" }, + { url = "https://files.pythonhosted.org/packages/a5/97/a8dca65913c0f78e0545af2bb5078aebfc142ca7d91cdaffa1fbc73e5dbd/pyzmq-26.4.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f72073e75260cb301aad4258ad6150fa7f57c719b3f498cb91e31df16784d89b", size = 891650, upload-time = "2025-04-04T12:04:22.413Z" }, + { url = "https://files.pythonhosted.org/packages/7d/7e/f63af1031eb060bf02d033732b910fe48548dcfdbe9c785e9f74a6cc6ae4/pyzmq-26.4.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be37e24b13026cfedd233bcbbccd8c0bcd2fdd186216094d095f60076201538d", size = 849776, upload-time = "2025-04-04T12:04:23.959Z" }, + { url = "https://files.pythonhosted.org/packages/f6/fa/1a009ce582802a895c0d5fe9413f029c940a0a8ee828657a3bb0acffd88b/pyzmq-26.4.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:237b283044934d26f1eeff4075f751b05d2f3ed42a257fc44386d00df6a270cf", size = 842516, upload-time = "2025-04-04T12:04:25.449Z" }, + { url = "https://files.pythonhosted.org/packages/6e/bc/f88b0bad0f7a7f500547d71e99f10336f2314e525d4ebf576a1ea4a1d903/pyzmq-26.4.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:b30f862f6768b17040929a68432c8a8be77780317f45a353cb17e423127d250c", size = 1189183, upload-time = "2025-04-04T12:04:27.035Z" }, + { url = "https://files.pythonhosted.org/packages/d9/8c/db446a3dd9cf894406dec2e61eeffaa3c07c3abb783deaebb9812c4af6a5/pyzmq-26.4.0-cp313-cp313t-musllinux_1_1_i686.whl", hash = "sha256:c80fcd3504232f13617c6ab501124d373e4895424e65de8b72042333316f64a8", size = 1495501, upload-time = "2025-04-04T12:04:28.833Z" }, + { url = "https://files.pythonhosted.org/packages/05/4c/bf3cad0d64c3214ac881299c4562b815f05d503bccc513e3fd4fdc6f67e4/pyzmq-26.4.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:26a2a7451606b87f67cdeca2c2789d86f605da08b4bd616b1a9981605ca3a364", size = 1395540, upload-time = "2025-04-04T12:04:30.562Z" }, + { url = "https://files.pythonhosted.org/packages/47/03/96004704a84095f493be8d2b476641f5c967b269390173f85488a53c1c13/pyzmq-26.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:98d948288ce893a2edc5ec3c438fe8de2daa5bbbd6e2e865ec5f966e237084ba", size = 834408, upload-time = "2025-04-04T12:05:04.569Z" }, + { url = "https://files.pythonhosted.org/packages/e4/7f/68d8f3034a20505db7551cb2260248be28ca66d537a1ac9a257913d778e4/pyzmq-26.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9f34f5c9e0203ece706a1003f1492a56c06c0632d86cb77bcfe77b56aacf27b", size = 569580, upload-time = "2025-04-04T12:05:06.283Z" }, + { url = "https://files.pythonhosted.org/packages/9b/a6/2b0d6801ec33f2b2a19dd8d02e0a1e8701000fec72926e6787363567d30c/pyzmq-26.4.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:80c9b48aef586ff8b698359ce22f9508937c799cc1d2c9c2f7c95996f2300c94", size = 798250, upload-time = "2025-04-04T12:05:07.88Z" }, + { url = "https://files.pythonhosted.org/packages/96/2a/0322b3437de977dcac8a755d6d7ce6ec5238de78e2e2d9353730b297cf12/pyzmq-26.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3f2a5b74009fd50b53b26f65daff23e9853e79aa86e0aa08a53a7628d92d44a", size = 756758, upload-time = "2025-04-04T12:05:09.483Z" }, + { url = "https://files.pythonhosted.org/packages/c2/33/43704f066369416d65549ccee366cc19153911bec0154da7c6b41fca7e78/pyzmq-26.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:61c5f93d7622d84cb3092d7f6398ffc77654c346545313a3737e266fc11a3beb", size = 555371, upload-time = "2025-04-04T12:05:11.062Z" }, + { url = "https://files.pythonhosted.org/packages/04/52/a70fcd5592715702248306d8e1729c10742c2eac44529984413b05c68658/pyzmq-26.4.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4478b14cb54a805088299c25a79f27eaf530564a7a4f72bf432a040042b554eb", size = 834405, upload-time = "2025-04-04T12:05:13.3Z" }, + { url = "https://files.pythonhosted.org/packages/25/f9/1a03f1accff16b3af1a6fa22cbf7ced074776abbf688b2e9cb4629700c62/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a28ac29c60e4ba84b5f58605ace8ad495414a724fe7aceb7cf06cd0598d04e1", size = 569578, upload-time = "2025-04-04T12:05:15.36Z" }, + { url = "https://files.pythonhosted.org/packages/76/0c/3a633acd762aa6655fcb71fa841907eae0ab1e8582ff494b137266de341d/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43b03c1ceea27c6520124f4fb2ba9c647409b9abdf9a62388117148a90419494", size = 798248, upload-time = "2025-04-04T12:05:17.376Z" }, + { url = "https://files.pythonhosted.org/packages/cd/cc/6c99c84aa60ac1cc56747bed6be8ce6305b9b861d7475772e7a25ce019d3/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7731abd23a782851426d4e37deb2057bf9410848a4459b5ede4fe89342e687a9", size = 756757, upload-time = "2025-04-04T12:05:19.19Z" }, + { url = "https://files.pythonhosted.org/packages/13/9c/d8073bd898eb896e94c679abe82e47506e2b750eb261cf6010ced869797c/pyzmq-26.4.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:a222ad02fbe80166b0526c038776e8042cd4e5f0dec1489a006a1df47e9040e0", size = 555371, upload-time = "2025-04-04T12:05:20.702Z" }, +] + +[[package]] +name = "referencing" +version = "0.36.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "rpds-py" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744, upload-time = "2025-01-25T08:48:16.138Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775, upload-time = "2025-01-25T08:48:14.241Z" }, +] + +[[package]] +name = "regex" +version = "2024.11.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8e/5f/bd69653fbfb76cf8604468d3b4ec4c403197144c7bfe0e6a5fc9e02a07cb/regex-2024.11.6.tar.gz", hash = "sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519", size = 399494, upload-time = "2024-11-06T20:12:31.635Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/3c/4651f6b130c6842a8f3df82461a8950f923925db8b6961063e82744bddcc/regex-2024.11.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff590880083d60acc0433f9c3f713c51f7ac6ebb9adf889c79a261ecf541aa91", size = 482674, upload-time = "2024-11-06T20:08:57.575Z" }, + { url = "https://files.pythonhosted.org/packages/15/51/9f35d12da8434b489c7b7bffc205c474a0a9432a889457026e9bc06a297a/regex-2024.11.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:658f90550f38270639e83ce492f27d2c8d2cd63805c65a13a14d36ca126753f0", size = 287684, upload-time = "2024-11-06T20:08:59.787Z" }, + { url = "https://files.pythonhosted.org/packages/bd/18/b731f5510d1b8fb63c6b6d3484bfa9a59b84cc578ac8b5172970e05ae07c/regex-2024.11.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:164d8b7b3b4bcb2068b97428060b2a53be050085ef94eca7f240e7947f1b080e", size = 284589, upload-time = "2024-11-06T20:09:01.896Z" }, + { url = "https://files.pythonhosted.org/packages/78/a2/6dd36e16341ab95e4c6073426561b9bfdeb1a9c9b63ab1b579c2e96cb105/regex-2024.11.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3660c82f209655a06b587d55e723f0b813d3a7db2e32e5e7dc64ac2a9e86fde", size = 782511, upload-time = "2024-11-06T20:09:04.062Z" }, + { url = "https://files.pythonhosted.org/packages/1b/2b/323e72d5d2fd8de0d9baa443e1ed70363ed7e7b2fb526f5950c5cb99c364/regex-2024.11.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d22326fcdef5e08c154280b71163ced384b428343ae16a5ab2b3354aed12436e", size = 821149, upload-time = "2024-11-06T20:09:06.237Z" }, + { url = "https://files.pythonhosted.org/packages/90/30/63373b9ea468fbef8a907fd273e5c329b8c9535fee36fc8dba5fecac475d/regex-2024.11.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1ac758ef6aebfc8943560194e9fd0fa18bcb34d89fd8bd2af18183afd8da3a2", size = 809707, upload-time = "2024-11-06T20:09:07.715Z" }, + { url = "https://files.pythonhosted.org/packages/f2/98/26d3830875b53071f1f0ae6d547f1d98e964dd29ad35cbf94439120bb67a/regex-2024.11.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:997d6a487ff00807ba810e0f8332c18b4eb8d29463cfb7c820dc4b6e7562d0cf", size = 781702, upload-time = "2024-11-06T20:09:10.101Z" }, + { url = "https://files.pythonhosted.org/packages/87/55/eb2a068334274db86208ab9d5599ffa63631b9f0f67ed70ea7c82a69bbc8/regex-2024.11.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:02a02d2bb04fec86ad61f3ea7f49c015a0681bf76abb9857f945d26159d2968c", size = 771976, upload-time = "2024-11-06T20:09:11.566Z" }, + { url = "https://files.pythonhosted.org/packages/74/c0/be707bcfe98254d8f9d2cff55d216e946f4ea48ad2fd8cf1428f8c5332ba/regex-2024.11.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f02f93b92358ee3f78660e43b4b0091229260c5d5c408d17d60bf26b6c900e86", size = 697397, upload-time = "2024-11-06T20:09:13.119Z" }, + { url = "https://files.pythonhosted.org/packages/49/dc/bb45572ceb49e0f6509f7596e4ba7031f6819ecb26bc7610979af5a77f45/regex-2024.11.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:06eb1be98df10e81ebaded73fcd51989dcf534e3c753466e4b60c4697a003b67", size = 768726, upload-time = "2024-11-06T20:09:14.85Z" }, + { url = "https://files.pythonhosted.org/packages/5a/db/f43fd75dc4c0c2d96d0881967897926942e935d700863666f3c844a72ce6/regex-2024.11.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:040df6fe1a5504eb0f04f048e6d09cd7c7110fef851d7c567a6b6e09942feb7d", size = 775098, upload-time = "2024-11-06T20:09:16.504Z" }, + { url = "https://files.pythonhosted.org/packages/99/d7/f94154db29ab5a89d69ff893159b19ada89e76b915c1293e98603d39838c/regex-2024.11.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabbfc59f2c6edba2a6622c647b716e34e8e3867e0ab975412c5c2f79b82da2", size = 839325, upload-time = "2024-11-06T20:09:18.698Z" }, + { url = "https://files.pythonhosted.org/packages/f7/17/3cbfab1f23356fbbf07708220ab438a7efa1e0f34195bf857433f79f1788/regex-2024.11.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8447d2d39b5abe381419319f942de20b7ecd60ce86f16a23b0698f22e1b70008", size = 843277, upload-time = "2024-11-06T20:09:21.725Z" }, + { url = "https://files.pythonhosted.org/packages/7e/f2/48b393b51900456155de3ad001900f94298965e1cad1c772b87f9cfea011/regex-2024.11.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:da8f5fc57d1933de22a9e23eec290a0d8a5927a5370d24bda9a6abe50683fe62", size = 773197, upload-time = "2024-11-06T20:09:24.092Z" }, + { url = "https://files.pythonhosted.org/packages/45/3f/ef9589aba93e084cd3f8471fded352826dcae8489b650d0b9b27bc5bba8a/regex-2024.11.6-cp310-cp310-win32.whl", hash = "sha256:b489578720afb782f6ccf2840920f3a32e31ba28a4b162e13900c3e6bd3f930e", size = 261714, upload-time = "2024-11-06T20:09:26.36Z" }, + { url = "https://files.pythonhosted.org/packages/42/7e/5f1b92c8468290c465fd50c5318da64319133231415a8aa6ea5ab995a815/regex-2024.11.6-cp310-cp310-win_amd64.whl", hash = "sha256:5071b2093e793357c9d8b2929dfc13ac5f0a6c650559503bb81189d0a3814519", size = 274042, upload-time = "2024-11-06T20:09:28.762Z" }, + { url = "https://files.pythonhosted.org/packages/58/58/7e4d9493a66c88a7da6d205768119f51af0f684fe7be7bac8328e217a52c/regex-2024.11.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5478c6962ad548b54a591778e93cd7c456a7a29f8eca9c49e4f9a806dcc5d638", size = 482669, upload-time = "2024-11-06T20:09:31.064Z" }, + { url = "https://files.pythonhosted.org/packages/34/4c/8f8e631fcdc2ff978609eaeef1d6994bf2f028b59d9ac67640ed051f1218/regex-2024.11.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c89a8cc122b25ce6945f0423dc1352cb9593c68abd19223eebbd4e56612c5b7", size = 287684, upload-time = "2024-11-06T20:09:32.915Z" }, + { url = "https://files.pythonhosted.org/packages/c5/1b/f0e4d13e6adf866ce9b069e191f303a30ab1277e037037a365c3aad5cc9c/regex-2024.11.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:94d87b689cdd831934fa3ce16cc15cd65748e6d689f5d2b8f4f4df2065c9fa20", size = 284589, upload-time = "2024-11-06T20:09:35.504Z" }, + { url = "https://files.pythonhosted.org/packages/25/4d/ab21047f446693887f25510887e6820b93f791992994f6498b0318904d4a/regex-2024.11.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1062b39a0a2b75a9c694f7a08e7183a80c63c0d62b301418ffd9c35f55aaa114", size = 792121, upload-time = "2024-11-06T20:09:37.701Z" }, + { url = "https://files.pythonhosted.org/packages/45/ee/c867e15cd894985cb32b731d89576c41a4642a57850c162490ea34b78c3b/regex-2024.11.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:167ed4852351d8a750da48712c3930b031f6efdaa0f22fa1933716bfcd6bf4a3", size = 831275, upload-time = "2024-11-06T20:09:40.371Z" }, + { url = "https://files.pythonhosted.org/packages/b3/12/b0f480726cf1c60f6536fa5e1c95275a77624f3ac8fdccf79e6727499e28/regex-2024.11.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d548dafee61f06ebdb584080621f3e0c23fff312f0de1afc776e2a2ba99a74f", size = 818257, upload-time = "2024-11-06T20:09:43.059Z" }, + { url = "https://files.pythonhosted.org/packages/bf/ce/0d0e61429f603bac433910d99ef1a02ce45a8967ffbe3cbee48599e62d88/regex-2024.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a19f302cd1ce5dd01a9099aaa19cae6173306d1302a43b627f62e21cf18ac0", size = 792727, upload-time = "2024-11-06T20:09:48.19Z" }, + { url = "https://files.pythonhosted.org/packages/e4/c1/243c83c53d4a419c1556f43777ccb552bccdf79d08fda3980e4e77dd9137/regex-2024.11.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bec9931dfb61ddd8ef2ebc05646293812cb6b16b60cf7c9511a832b6f1854b55", size = 780667, upload-time = "2024-11-06T20:09:49.828Z" }, + { url = "https://files.pythonhosted.org/packages/c5/f4/75eb0dd4ce4b37f04928987f1d22547ddaf6c4bae697623c1b05da67a8aa/regex-2024.11.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9714398225f299aa85267fd222f7142fcb5c769e73d7733344efc46f2ef5cf89", size = 776963, upload-time = "2024-11-06T20:09:51.819Z" }, + { url = "https://files.pythonhosted.org/packages/16/5d/95c568574e630e141a69ff8a254c2f188b4398e813c40d49228c9bbd9875/regex-2024.11.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:202eb32e89f60fc147a41e55cb086db2a3f8cb82f9a9a88440dcfc5d37faae8d", size = 784700, upload-time = "2024-11-06T20:09:53.982Z" }, + { url = "https://files.pythonhosted.org/packages/8e/b5/f8495c7917f15cc6fee1e7f395e324ec3e00ab3c665a7dc9d27562fd5290/regex-2024.11.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:4181b814e56078e9b00427ca358ec44333765f5ca1b45597ec7446d3a1ef6e34", size = 848592, upload-time = "2024-11-06T20:09:56.222Z" }, + { url = "https://files.pythonhosted.org/packages/1c/80/6dd7118e8cb212c3c60b191b932dc57db93fb2e36fb9e0e92f72a5909af9/regex-2024.11.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:068376da5a7e4da51968ce4c122a7cd31afaaec4fccc7856c92f63876e57b51d", size = 852929, upload-time = "2024-11-06T20:09:58.642Z" }, + { url = "https://files.pythonhosted.org/packages/11/9b/5a05d2040297d2d254baf95eeeb6df83554e5e1df03bc1a6687fc4ba1f66/regex-2024.11.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f2c4184420d881a3475fb2c6f4d95d53a8d50209a2500723d831036f7c45", size = 781213, upload-time = "2024-11-06T20:10:00.867Z" }, + { url = "https://files.pythonhosted.org/packages/26/b7/b14e2440156ab39e0177506c08c18accaf2b8932e39fb092074de733d868/regex-2024.11.6-cp311-cp311-win32.whl", hash = "sha256:c36f9b6f5f8649bb251a5f3f66564438977b7ef8386a52460ae77e6070d309d9", size = 261734, upload-time = "2024-11-06T20:10:03.361Z" }, + { url = "https://files.pythonhosted.org/packages/80/32/763a6cc01d21fb3819227a1cc3f60fd251c13c37c27a73b8ff4315433a8e/regex-2024.11.6-cp311-cp311-win_amd64.whl", hash = "sha256:02e28184be537f0e75c1f9b2f8847dc51e08e6e171c6bde130b2687e0c33cf60", size = 274052, upload-time = "2024-11-06T20:10:05.179Z" }, + { url = "https://files.pythonhosted.org/packages/ba/30/9a87ce8336b172cc232a0db89a3af97929d06c11ceaa19d97d84fa90a8f8/regex-2024.11.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:52fb28f528778f184f870b7cf8f225f5eef0a8f6e3778529bdd40c7b3920796a", size = 483781, upload-time = "2024-11-06T20:10:07.07Z" }, + { url = "https://files.pythonhosted.org/packages/01/e8/00008ad4ff4be8b1844786ba6636035f7ef926db5686e4c0f98093612add/regex-2024.11.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdd6028445d2460f33136c55eeb1f601ab06d74cb3347132e1c24250187500d9", size = 288455, upload-time = "2024-11-06T20:10:09.117Z" }, + { url = "https://files.pythonhosted.org/packages/60/85/cebcc0aff603ea0a201667b203f13ba75d9fc8668fab917ac5b2de3967bc/regex-2024.11.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805e6b60c54bf766b251e94526ebad60b7de0c70f70a4e6210ee2891acb70bf2", size = 284759, upload-time = "2024-11-06T20:10:11.155Z" }, + { url = "https://files.pythonhosted.org/packages/94/2b/701a4b0585cb05472a4da28ee28fdfe155f3638f5e1ec92306d924e5faf0/regex-2024.11.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b85c2530be953a890eaffde05485238f07029600e8f098cdf1848d414a8b45e4", size = 794976, upload-time = "2024-11-06T20:10:13.24Z" }, + { url = "https://files.pythonhosted.org/packages/4b/bf/fa87e563bf5fee75db8915f7352e1887b1249126a1be4813837f5dbec965/regex-2024.11.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb26437975da7dc36b7efad18aa9dd4ea569d2357ae6b783bf1118dabd9ea577", size = 833077, upload-time = "2024-11-06T20:10:15.37Z" }, + { url = "https://files.pythonhosted.org/packages/a1/56/7295e6bad94b047f4d0834e4779491b81216583c00c288252ef625c01d23/regex-2024.11.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abfa5080c374a76a251ba60683242bc17eeb2c9818d0d30117b4486be10c59d3", size = 823160, upload-time = "2024-11-06T20:10:19.027Z" }, + { url = "https://files.pythonhosted.org/packages/fb/13/e3b075031a738c9598c51cfbc4c7879e26729c53aa9cca59211c44235314/regex-2024.11.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b7fa6606c2881c1db9479b0eaa11ed5dfa11c8d60a474ff0e095099f39d98e", size = 796896, upload-time = "2024-11-06T20:10:21.85Z" }, + { url = "https://files.pythonhosted.org/packages/24/56/0b3f1b66d592be6efec23a795b37732682520b47c53da5a32c33ed7d84e3/regex-2024.11.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c32f75920cf99fe6b6c539c399a4a128452eaf1af27f39bce8909c9a3fd8cbe", size = 783997, upload-time = "2024-11-06T20:10:24.329Z" }, + { url = "https://files.pythonhosted.org/packages/f9/a1/eb378dada8b91c0e4c5f08ffb56f25fcae47bf52ad18f9b2f33b83e6d498/regex-2024.11.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:982e6d21414e78e1f51cf595d7f321dcd14de1f2881c5dc6a6e23bbbbd68435e", size = 781725, upload-time = "2024-11-06T20:10:28.067Z" }, + { url = "https://files.pythonhosted.org/packages/83/f2/033e7dec0cfd6dda93390089864732a3409246ffe8b042e9554afa9bff4e/regex-2024.11.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a7c2155f790e2fb448faed6dd241386719802296ec588a8b9051c1f5c481bc29", size = 789481, upload-time = "2024-11-06T20:10:31.612Z" }, + { url = "https://files.pythonhosted.org/packages/83/23/15d4552ea28990a74e7696780c438aadd73a20318c47e527b47a4a5a596d/regex-2024.11.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149f5008d286636e48cd0b1dd65018548944e495b0265b45e1bffecce1ef7f39", size = 852896, upload-time = "2024-11-06T20:10:34.054Z" }, + { url = "https://files.pythonhosted.org/packages/e3/39/ed4416bc90deedbfdada2568b2cb0bc1fdb98efe11f5378d9892b2a88f8f/regex-2024.11.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e5364a4502efca094731680e80009632ad6624084aff9a23ce8c8c6820de3e51", size = 860138, upload-time = "2024-11-06T20:10:36.142Z" }, + { url = "https://files.pythonhosted.org/packages/93/2d/dd56bb76bd8e95bbce684326302f287455b56242a4f9c61f1bc76e28360e/regex-2024.11.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0a86e7eeca091c09e021db8eb72d54751e527fa47b8d5787caf96d9831bd02ad", size = 787692, upload-time = "2024-11-06T20:10:38.394Z" }, + { url = "https://files.pythonhosted.org/packages/0b/55/31877a249ab7a5156758246b9c59539abbeba22461b7d8adc9e8475ff73e/regex-2024.11.6-cp312-cp312-win32.whl", hash = "sha256:32f9a4c643baad4efa81d549c2aadefaeba12249b2adc5af541759237eee1c54", size = 262135, upload-time = "2024-11-06T20:10:40.367Z" }, + { url = "https://files.pythonhosted.org/packages/38/ec/ad2d7de49a600cdb8dd78434a1aeffe28b9d6fc42eb36afab4a27ad23384/regex-2024.11.6-cp312-cp312-win_amd64.whl", hash = "sha256:a93c194e2df18f7d264092dc8539b8ffb86b45b899ab976aa15d48214138e81b", size = 273567, upload-time = "2024-11-06T20:10:43.467Z" }, + { url = "https://files.pythonhosted.org/packages/90/73/bcb0e36614601016552fa9344544a3a2ae1809dc1401b100eab02e772e1f/regex-2024.11.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a6ba92c0bcdf96cbf43a12c717eae4bc98325ca3730f6b130ffa2e3c3c723d84", size = 483525, upload-time = "2024-11-06T20:10:45.19Z" }, + { url = "https://files.pythonhosted.org/packages/0f/3f/f1a082a46b31e25291d830b369b6b0c5576a6f7fb89d3053a354c24b8a83/regex-2024.11.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:525eab0b789891ac3be914d36893bdf972d483fe66551f79d3e27146191a37d4", size = 288324, upload-time = "2024-11-06T20:10:47.177Z" }, + { url = "https://files.pythonhosted.org/packages/09/c9/4e68181a4a652fb3ef5099e077faf4fd2a694ea6e0f806a7737aff9e758a/regex-2024.11.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:086a27a0b4ca227941700e0b31425e7a28ef1ae8e5e05a33826e17e47fbfdba0", size = 284617, upload-time = "2024-11-06T20:10:49.312Z" }, + { url = "https://files.pythonhosted.org/packages/fc/fd/37868b75eaf63843165f1d2122ca6cb94bfc0271e4428cf58c0616786dce/regex-2024.11.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bde01f35767c4a7899b7eb6e823b125a64de314a8ee9791367c9a34d56af18d0", size = 795023, upload-time = "2024-11-06T20:10:51.102Z" }, + { url = "https://files.pythonhosted.org/packages/c4/7c/d4cd9c528502a3dedb5c13c146e7a7a539a3853dc20209c8e75d9ba9d1b2/regex-2024.11.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b583904576650166b3d920d2bcce13971f6f9e9a396c673187f49811b2769dc7", size = 833072, upload-time = "2024-11-06T20:10:52.926Z" }, + { url = "https://files.pythonhosted.org/packages/4f/db/46f563a08f969159c5a0f0e722260568425363bea43bb7ae370becb66a67/regex-2024.11.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c4de13f06a0d54fa0d5ab1b7138bfa0d883220965a29616e3ea61b35d5f5fc7", size = 823130, upload-time = "2024-11-06T20:10:54.828Z" }, + { url = "https://files.pythonhosted.org/packages/db/60/1eeca2074f5b87df394fccaa432ae3fc06c9c9bfa97c5051aed70e6e00c2/regex-2024.11.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cde6e9f2580eb1665965ce9bf17ff4952f34f5b126beb509fee8f4e994f143c", size = 796857, upload-time = "2024-11-06T20:10:56.634Z" }, + { url = "https://files.pythonhosted.org/packages/10/db/ac718a08fcee981554d2f7bb8402f1faa7e868c1345c16ab1ebec54b0d7b/regex-2024.11.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d7f453dca13f40a02b79636a339c5b62b670141e63efd511d3f8f73fba162b3", size = 784006, upload-time = "2024-11-06T20:10:59.369Z" }, + { url = "https://files.pythonhosted.org/packages/c2/41/7da3fe70216cea93144bf12da2b87367590bcf07db97604edeea55dac9ad/regex-2024.11.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:59dfe1ed21aea057a65c6b586afd2a945de04fc7db3de0a6e3ed5397ad491b07", size = 781650, upload-time = "2024-11-06T20:11:02.042Z" }, + { url = "https://files.pythonhosted.org/packages/a7/d5/880921ee4eec393a4752e6ab9f0fe28009435417c3102fc413f3fe81c4e5/regex-2024.11.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b97c1e0bd37c5cd7902e65f410779d39eeda155800b65fc4d04cc432efa9bc6e", size = 789545, upload-time = "2024-11-06T20:11:03.933Z" }, + { url = "https://files.pythonhosted.org/packages/dc/96/53770115e507081122beca8899ab7f5ae28ae790bfcc82b5e38976df6a77/regex-2024.11.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f9d1e379028e0fc2ae3654bac3cbbef81bf3fd571272a42d56c24007979bafb6", size = 853045, upload-time = "2024-11-06T20:11:06.497Z" }, + { url = "https://files.pythonhosted.org/packages/31/d3/1372add5251cc2d44b451bd94f43b2ec78e15a6e82bff6a290ef9fd8f00a/regex-2024.11.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:13291b39131e2d002a7940fb176e120bec5145f3aeb7621be6534e46251912c4", size = 860182, upload-time = "2024-11-06T20:11:09.06Z" }, + { url = "https://files.pythonhosted.org/packages/ed/e3/c446a64984ea9f69982ba1a69d4658d5014bc7a0ea468a07e1a1265db6e2/regex-2024.11.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f51f88c126370dcec4908576c5a627220da6c09d0bff31cfa89f2523843316d", size = 787733, upload-time = "2024-11-06T20:11:11.256Z" }, + { url = "https://files.pythonhosted.org/packages/2b/f1/e40c8373e3480e4f29f2692bd21b3e05f296d3afebc7e5dcf21b9756ca1c/regex-2024.11.6-cp313-cp313-win32.whl", hash = "sha256:63b13cfd72e9601125027202cad74995ab26921d8cd935c25f09c630436348ff", size = 262122, upload-time = "2024-11-06T20:11:13.161Z" }, + { url = "https://files.pythonhosted.org/packages/45/94/bc295babb3062a731f52621cdc992d123111282e291abaf23faa413443ea/regex-2024.11.6-cp313-cp313-win_amd64.whl", hash = "sha256:2b3361af3198667e99927da8b84c1b010752fa4b1115ee30beaa332cabc3ef1a", size = 273545, upload-time = "2024-11-06T20:11:15Z" }, +] + +[[package]] +name = "requests" +version = "2.32.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218, upload-time = "2024-05-29T15:37:49.536Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928, upload-time = "2024-05-29T15:37:47.027Z" }, +] + +[[package]] +name = "rfc3339-validator" +version = "0.1.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/ea/a9387748e2d111c3c2b275ba970b735e04e15cdb1eb30693b6b5708c4dbd/rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b", size = 5513, upload-time = "2021-05-12T16:37:54.178Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa", size = 3490, upload-time = "2021-05-12T16:37:52.536Z" }, +] + +[[package]] +name = "rfc3986-validator" +version = "0.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/da/88/f270de456dd7d11dcc808abfa291ecdd3f45ff44e3b549ffa01b126464d0/rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055", size = 6760, upload-time = "2019-10-28T16:00:19.144Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9", size = 4242, upload-time = "2019-10-28T16:00:13.976Z" }, +] + +[[package]] +name = "rich" +version = "13.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/96/29/395e31686066cee66f8c0809d98b5e68d0f0c9b67e80f956b5659c8113fb/rich-13.3.0.tar.gz", hash = "sha256:98ce3ede653f23fbc02b0f8bd8a16a6b2bb4cfbdcfccf736eb28ba2810af241e", size = 220837, upload-time = "2023-01-27T17:20:36.359Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/53/df/e75dcda730fc18a9b6514e6c585ddae8ab39f893e11b272cffb843519fb2/rich-13.3.0-py3-none-any.whl", hash = "sha256:dd62e48284e540ae03235258699c07d5b48dbc1fd1905c6091b5ce72d7c69195", size = 238955, upload-time = "2023-01-27T17:20:34.058Z" }, +] + +[[package]] +name = "rpds-py" +version = "0.25.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8c/a6/60184b7fc00dd3ca80ac635dd5b8577d444c57e8e8742cecabfacb829921/rpds_py-0.25.1.tar.gz", hash = "sha256:8960b6dac09b62dac26e75d7e2c4a22efb835d827a7278c34f72b2b84fa160e3", size = 27304, upload-time = "2025-05-21T12:46:12.502Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/09/e1158988e50905b7f8306487a576b52d32aa9a87f79f7ab24ee8db8b6c05/rpds_py-0.25.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:f4ad628b5174d5315761b67f212774a32f5bad5e61396d38108bd801c0a8f5d9", size = 373140, upload-time = "2025-05-21T12:42:38.834Z" }, + { url = "https://files.pythonhosted.org/packages/e0/4b/a284321fb3c45c02fc74187171504702b2934bfe16abab89713eedfe672e/rpds_py-0.25.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8c742af695f7525e559c16f1562cf2323db0e3f0fbdcabdf6865b095256b2d40", size = 358860, upload-time = "2025-05-21T12:42:41.394Z" }, + { url = "https://files.pythonhosted.org/packages/4e/46/8ac9811150c75edeae9fc6fa0e70376c19bc80f8e1f7716981433905912b/rpds_py-0.25.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:605ffe7769e24b1800b4d024d24034405d9404f0bc2f55b6db3362cd34145a6f", size = 386179, upload-time = "2025-05-21T12:42:43.213Z" }, + { url = "https://files.pythonhosted.org/packages/f3/ec/87eb42d83e859bce91dcf763eb9f2ab117142a49c9c3d17285440edb5b69/rpds_py-0.25.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ccc6f3ddef93243538be76f8e47045b4aad7a66a212cd3a0f23e34469473d36b", size = 400282, upload-time = "2025-05-21T12:42:44.92Z" }, + { url = "https://files.pythonhosted.org/packages/68/c8/2a38e0707d7919c8c78e1d582ab15cf1255b380bcb086ca265b73ed6db23/rpds_py-0.25.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f70316f760174ca04492b5ab01be631a8ae30cadab1d1081035136ba12738cfa", size = 521824, upload-time = "2025-05-21T12:42:46.856Z" }, + { url = "https://files.pythonhosted.org/packages/5e/2c/6a92790243569784dde84d144bfd12bd45102f4a1c897d76375076d730ab/rpds_py-0.25.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e1dafef8df605fdb46edcc0bf1573dea0d6d7b01ba87f85cd04dc855b2b4479e", size = 411644, upload-time = "2025-05-21T12:42:48.838Z" }, + { url = "https://files.pythonhosted.org/packages/eb/76/66b523ffc84cf47db56efe13ae7cf368dee2bacdec9d89b9baca5e2e6301/rpds_py-0.25.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0701942049095741a8aeb298a31b203e735d1c61f4423511d2b1a41dcd8a16da", size = 386955, upload-time = "2025-05-21T12:42:50.835Z" }, + { url = "https://files.pythonhosted.org/packages/b6/b9/a362d7522feaa24dc2b79847c6175daa1c642817f4a19dcd5c91d3e2c316/rpds_py-0.25.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e87798852ae0b37c88babb7f7bbbb3e3fecc562a1c340195b44c7e24d403e380", size = 421039, upload-time = "2025-05-21T12:42:52.348Z" }, + { url = "https://files.pythonhosted.org/packages/0f/c4/b5b6f70b4d719b6584716889fd3413102acf9729540ee76708d56a76fa97/rpds_py-0.25.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3bcce0edc1488906c2d4c75c94c70a0417e83920dd4c88fec1078c94843a6ce9", size = 563290, upload-time = "2025-05-21T12:42:54.404Z" }, + { url = "https://files.pythonhosted.org/packages/87/a3/2e6e816615c12a8f8662c9d8583a12eb54c52557521ef218cbe3095a8afa/rpds_py-0.25.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e2f6a2347d3440ae789505693a02836383426249d5293541cd712e07e7aecf54", size = 592089, upload-time = "2025-05-21T12:42:55.976Z" }, + { url = "https://files.pythonhosted.org/packages/c0/08/9b8e1050e36ce266135994e2c7ec06e1841f1c64da739daeb8afe9cb77a4/rpds_py-0.25.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:4fd52d3455a0aa997734f3835cbc4c9f32571345143960e7d7ebfe7b5fbfa3b2", size = 558400, upload-time = "2025-05-21T12:42:58.032Z" }, + { url = "https://files.pythonhosted.org/packages/f2/df/b40b8215560b8584baccd839ff5c1056f3c57120d79ac41bd26df196da7e/rpds_py-0.25.1-cp310-cp310-win32.whl", hash = "sha256:3f0b1798cae2bbbc9b9db44ee068c556d4737911ad53a4e5093d09d04b3bbc24", size = 219741, upload-time = "2025-05-21T12:42:59.479Z" }, + { url = "https://files.pythonhosted.org/packages/10/99/e4c58be18cf5d8b40b8acb4122bc895486230b08f978831b16a3916bd24d/rpds_py-0.25.1-cp310-cp310-win_amd64.whl", hash = "sha256:3ebd879ab996537fc510a2be58c59915b5dd63bccb06d1ef514fee787e05984a", size = 231553, upload-time = "2025-05-21T12:43:01.425Z" }, + { url = "https://files.pythonhosted.org/packages/95/e1/df13fe3ddbbea43567e07437f097863b20c99318ae1f58a0fe389f763738/rpds_py-0.25.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:5f048bbf18b1f9120685c6d6bb70cc1a52c8cc11bdd04e643d28d3be0baf666d", size = 373341, upload-time = "2025-05-21T12:43:02.978Z" }, + { url = "https://files.pythonhosted.org/packages/7a/58/deef4d30fcbcbfef3b6d82d17c64490d5c94585a2310544ce8e2d3024f83/rpds_py-0.25.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4fbb0dbba559959fcb5d0735a0f87cdbca9e95dac87982e9b95c0f8f7ad10255", size = 359111, upload-time = "2025-05-21T12:43:05.128Z" }, + { url = "https://files.pythonhosted.org/packages/bb/7e/39f1f4431b03e96ebaf159e29a0f82a77259d8f38b2dd474721eb3a8ac9b/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4ca54b9cf9d80b4016a67a0193ebe0bcf29f6b0a96f09db942087e294d3d4c2", size = 386112, upload-time = "2025-05-21T12:43:07.13Z" }, + { url = "https://files.pythonhosted.org/packages/db/e7/847068a48d63aec2ae695a1646089620b3b03f8ccf9f02c122ebaf778f3c/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1ee3e26eb83d39b886d2cb6e06ea701bba82ef30a0de044d34626ede51ec98b0", size = 400362, upload-time = "2025-05-21T12:43:08.693Z" }, + { url = "https://files.pythonhosted.org/packages/3b/3d/9441d5db4343d0cee759a7ab4d67420a476cebb032081763de934719727b/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:89706d0683c73a26f76a5315d893c051324d771196ae8b13e6ffa1ffaf5e574f", size = 522214, upload-time = "2025-05-21T12:43:10.694Z" }, + { url = "https://files.pythonhosted.org/packages/a2/ec/2cc5b30d95f9f1a432c79c7a2f65d85e52812a8f6cbf8768724571710786/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2013ee878c76269c7b557a9a9c042335d732e89d482606990b70a839635feb7", size = 411491, upload-time = "2025-05-21T12:43:12.739Z" }, + { url = "https://files.pythonhosted.org/packages/dc/6c/44695c1f035077a017dd472b6a3253553780837af2fac9b6ac25f6a5cb4d/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45e484db65e5380804afbec784522de84fa95e6bb92ef1bd3325d33d13efaebd", size = 386978, upload-time = "2025-05-21T12:43:14.25Z" }, + { url = "https://files.pythonhosted.org/packages/b1/74/b4357090bb1096db5392157b4e7ed8bb2417dc7799200fcbaee633a032c9/rpds_py-0.25.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:48d64155d02127c249695abb87d39f0faf410733428d499867606be138161d65", size = 420662, upload-time = "2025-05-21T12:43:15.8Z" }, + { url = "https://files.pythonhosted.org/packages/26/dd/8cadbebf47b96e59dfe8b35868e5c38a42272699324e95ed522da09d3a40/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:048893e902132fd6548a2e661fb38bf4896a89eea95ac5816cf443524a85556f", size = 563385, upload-time = "2025-05-21T12:43:17.78Z" }, + { url = "https://files.pythonhosted.org/packages/c3/ea/92960bb7f0e7a57a5ab233662f12152085c7dc0d5468534c65991a3d48c9/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0317177b1e8691ab5879f4f33f4b6dc55ad3b344399e23df2e499de7b10a548d", size = 592047, upload-time = "2025-05-21T12:43:19.457Z" }, + { url = "https://files.pythonhosted.org/packages/61/ad/71aabc93df0d05dabcb4b0c749277881f8e74548582d96aa1bf24379493a/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bffcf57826d77a4151962bf1701374e0fc87f536e56ec46f1abdd6a903354042", size = 557863, upload-time = "2025-05-21T12:43:21.69Z" }, + { url = "https://files.pythonhosted.org/packages/93/0f/89df0067c41f122b90b76f3660028a466eb287cbe38efec3ea70e637ca78/rpds_py-0.25.1-cp311-cp311-win32.whl", hash = "sha256:cda776f1967cb304816173b30994faaf2fd5bcb37e73118a47964a02c348e1bc", size = 219627, upload-time = "2025-05-21T12:43:23.311Z" }, + { url = "https://files.pythonhosted.org/packages/7c/8d/93b1a4c1baa903d0229374d9e7aa3466d751f1d65e268c52e6039c6e338e/rpds_py-0.25.1-cp311-cp311-win_amd64.whl", hash = "sha256:dc3c1ff0abc91444cd20ec643d0f805df9a3661fcacf9c95000329f3ddf268a4", size = 231603, upload-time = "2025-05-21T12:43:25.145Z" }, + { url = "https://files.pythonhosted.org/packages/cb/11/392605e5247bead2f23e6888e77229fbd714ac241ebbebb39a1e822c8815/rpds_py-0.25.1-cp311-cp311-win_arm64.whl", hash = "sha256:5a3ddb74b0985c4387719fc536faced33cadf2172769540c62e2a94b7b9be1c4", size = 223967, upload-time = "2025-05-21T12:43:26.566Z" }, + { url = "https://files.pythonhosted.org/packages/7f/81/28ab0408391b1dc57393653b6a0cf2014cc282cc2909e4615e63e58262be/rpds_py-0.25.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b5ffe453cde61f73fea9430223c81d29e2fbf412a6073951102146c84e19e34c", size = 364647, upload-time = "2025-05-21T12:43:28.559Z" }, + { url = "https://files.pythonhosted.org/packages/2c/9a/7797f04cad0d5e56310e1238434f71fc6939d0bc517192a18bb99a72a95f/rpds_py-0.25.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:115874ae5e2fdcfc16b2aedc95b5eef4aebe91b28e7e21951eda8a5dc0d3461b", size = 350454, upload-time = "2025-05-21T12:43:30.615Z" }, + { url = "https://files.pythonhosted.org/packages/69/3c/93d2ef941b04898011e5d6eaa56a1acf46a3b4c9f4b3ad1bbcbafa0bee1f/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a714bf6e5e81b0e570d01f56e0c89c6375101b8463999ead3a93a5d2a4af91fa", size = 389665, upload-time = "2025-05-21T12:43:32.629Z" }, + { url = "https://files.pythonhosted.org/packages/c1/57/ad0e31e928751dde8903a11102559628d24173428a0f85e25e187defb2c1/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:35634369325906bcd01577da4c19e3b9541a15e99f31e91a02d010816b49bfda", size = 403873, upload-time = "2025-05-21T12:43:34.576Z" }, + { url = "https://files.pythonhosted.org/packages/16/ad/c0c652fa9bba778b4f54980a02962748479dc09632e1fd34e5282cf2556c/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4cb2b3ddc16710548801c6fcc0cfcdeeff9dafbc983f77265877793f2660309", size = 525866, upload-time = "2025-05-21T12:43:36.123Z" }, + { url = "https://files.pythonhosted.org/packages/2a/39/3e1839bc527e6fcf48d5fec4770070f872cdee6c6fbc9b259932f4e88a38/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9ceca1cf097ed77e1a51f1dbc8d174d10cb5931c188a4505ff9f3e119dfe519b", size = 416886, upload-time = "2025-05-21T12:43:38.034Z" }, + { url = "https://files.pythonhosted.org/packages/7a/95/dd6b91cd4560da41df9d7030a038298a67d24f8ca38e150562644c829c48/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c2cd1a4b0c2b8c5e31ffff50d09f39906fe351389ba143c195566056c13a7ea", size = 390666, upload-time = "2025-05-21T12:43:40.065Z" }, + { url = "https://files.pythonhosted.org/packages/64/48/1be88a820e7494ce0a15c2d390ccb7c52212370badabf128e6a7bb4cb802/rpds_py-0.25.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1de336a4b164c9188cb23f3703adb74a7623ab32d20090d0e9bf499a2203ad65", size = 425109, upload-time = "2025-05-21T12:43:42.263Z" }, + { url = "https://files.pythonhosted.org/packages/cf/07/3e2a17927ef6d7720b9949ec1b37d1e963b829ad0387f7af18d923d5cfa5/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9fca84a15333e925dd59ce01da0ffe2ffe0d6e5d29a9eeba2148916d1824948c", size = 567244, upload-time = "2025-05-21T12:43:43.846Z" }, + { url = "https://files.pythonhosted.org/packages/d2/e5/76cf010998deccc4f95305d827847e2eae9c568099c06b405cf96384762b/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:88ec04afe0c59fa64e2f6ea0dd9657e04fc83e38de90f6de201954b4d4eb59bd", size = 596023, upload-time = "2025-05-21T12:43:45.932Z" }, + { url = "https://files.pythonhosted.org/packages/52/9a/df55efd84403736ba37a5a6377b70aad0fd1cb469a9109ee8a1e21299a1c/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a8bd2f19e312ce3e1d2c635618e8a8d8132892bb746a7cf74780a489f0f6cdcb", size = 561634, upload-time = "2025-05-21T12:43:48.263Z" }, + { url = "https://files.pythonhosted.org/packages/ab/aa/dc3620dd8db84454aaf9374bd318f1aa02578bba5e567f5bf6b79492aca4/rpds_py-0.25.1-cp312-cp312-win32.whl", hash = "sha256:e5e2f7280d8d0d3ef06f3ec1b4fd598d386cc6f0721e54f09109a8132182fbfe", size = 222713, upload-time = "2025-05-21T12:43:49.897Z" }, + { url = "https://files.pythonhosted.org/packages/a3/7f/7cef485269a50ed5b4e9bae145f512d2a111ca638ae70cc101f661b4defd/rpds_py-0.25.1-cp312-cp312-win_amd64.whl", hash = "sha256:db58483f71c5db67d643857404da360dce3573031586034b7d59f245144cc192", size = 235280, upload-time = "2025-05-21T12:43:51.893Z" }, + { url = "https://files.pythonhosted.org/packages/99/f2/c2d64f6564f32af913bf5f3f7ae41c7c263c5ae4c4e8f1a17af8af66cd46/rpds_py-0.25.1-cp312-cp312-win_arm64.whl", hash = "sha256:6d50841c425d16faf3206ddbba44c21aa3310a0cebc3c1cdfc3e3f4f9f6f5728", size = 225399, upload-time = "2025-05-21T12:43:53.351Z" }, + { url = "https://files.pythonhosted.org/packages/2b/da/323848a2b62abe6a0fec16ebe199dc6889c5d0a332458da8985b2980dffe/rpds_py-0.25.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:659d87430a8c8c704d52d094f5ba6fa72ef13b4d385b7e542a08fc240cb4a559", size = 364498, upload-time = "2025-05-21T12:43:54.841Z" }, + { url = "https://files.pythonhosted.org/packages/1f/b4/4d3820f731c80fd0cd823b3e95b9963fec681ae45ba35b5281a42382c67d/rpds_py-0.25.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:68f6f060f0bbdfb0245267da014d3a6da9be127fe3e8cc4a68c6f833f8a23bb1", size = 350083, upload-time = "2025-05-21T12:43:56.428Z" }, + { url = "https://files.pythonhosted.org/packages/d5/b1/3a8ee1c9d480e8493619a437dec685d005f706b69253286f50f498cbdbcf/rpds_py-0.25.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:083a9513a33e0b92cf6e7a6366036c6bb43ea595332c1ab5c8ae329e4bcc0a9c", size = 389023, upload-time = "2025-05-21T12:43:57.995Z" }, + { url = "https://files.pythonhosted.org/packages/3b/31/17293edcfc934dc62c3bf74a0cb449ecd549531f956b72287203e6880b87/rpds_py-0.25.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:816568614ecb22b18a010c7a12559c19f6fe993526af88e95a76d5a60b8b75fb", size = 403283, upload-time = "2025-05-21T12:43:59.546Z" }, + { url = "https://files.pythonhosted.org/packages/d1/ca/e0f0bc1a75a8925024f343258c8ecbd8828f8997ea2ac71e02f67b6f5299/rpds_py-0.25.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3c6564c0947a7f52e4792983f8e6cf9bac140438ebf81f527a21d944f2fd0a40", size = 524634, upload-time = "2025-05-21T12:44:01.087Z" }, + { url = "https://files.pythonhosted.org/packages/3e/03/5d0be919037178fff33a6672ffc0afa04ea1cfcb61afd4119d1b5280ff0f/rpds_py-0.25.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c4a128527fe415d73cf1f70a9a688d06130d5810be69f3b553bf7b45e8acf79", size = 416233, upload-time = "2025-05-21T12:44:02.604Z" }, + { url = "https://files.pythonhosted.org/packages/05/7c/8abb70f9017a231c6c961a8941403ed6557664c0913e1bf413cbdc039e75/rpds_py-0.25.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a49e1d7a4978ed554f095430b89ecc23f42014a50ac385eb0c4d163ce213c325", size = 390375, upload-time = "2025-05-21T12:44:04.162Z" }, + { url = "https://files.pythonhosted.org/packages/7a/ac/a87f339f0e066b9535074a9f403b9313fd3892d4a164d5d5f5875ac9f29f/rpds_py-0.25.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d74ec9bc0e2feb81d3f16946b005748119c0f52a153f6db6a29e8cd68636f295", size = 424537, upload-time = "2025-05-21T12:44:06.175Z" }, + { url = "https://files.pythonhosted.org/packages/1f/8f/8d5c1567eaf8c8afe98a838dd24de5013ce6e8f53a01bd47fe8bb06b5533/rpds_py-0.25.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3af5b4cc10fa41e5bc64e5c198a1b2d2864337f8fcbb9a67e747e34002ce812b", size = 566425, upload-time = "2025-05-21T12:44:08.242Z" }, + { url = "https://files.pythonhosted.org/packages/95/33/03016a6be5663b389c8ab0bbbcca68d9e96af14faeff0a04affcb587e776/rpds_py-0.25.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:79dc317a5f1c51fd9c6a0c4f48209c6b8526d0524a6904fc1076476e79b00f98", size = 595197, upload-time = "2025-05-21T12:44:10.449Z" }, + { url = "https://files.pythonhosted.org/packages/33/8d/da9f4d3e208c82fda311bff0cf0a19579afceb77cf456e46c559a1c075ba/rpds_py-0.25.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1521031351865e0181bc585147624d66b3b00a84109b57fcb7a779c3ec3772cd", size = 561244, upload-time = "2025-05-21T12:44:12.387Z" }, + { url = "https://files.pythonhosted.org/packages/e2/b3/39d5dcf7c5f742ecd6dbc88f6f84ae54184b92f5f387a4053be2107b17f1/rpds_py-0.25.1-cp313-cp313-win32.whl", hash = "sha256:5d473be2b13600b93a5675d78f59e63b51b1ba2d0476893415dfbb5477e65b31", size = 222254, upload-time = "2025-05-21T12:44:14.261Z" }, + { url = "https://files.pythonhosted.org/packages/5f/19/2d6772c8eeb8302c5f834e6d0dfd83935a884e7c5ce16340c7eaf89ce925/rpds_py-0.25.1-cp313-cp313-win_amd64.whl", hash = "sha256:a7b74e92a3b212390bdce1d93da9f6488c3878c1d434c5e751cbc202c5e09500", size = 234741, upload-time = "2025-05-21T12:44:16.236Z" }, + { url = "https://files.pythonhosted.org/packages/5b/5a/145ada26cfaf86018d0eb304fe55eafdd4f0b6b84530246bb4a7c4fb5c4b/rpds_py-0.25.1-cp313-cp313-win_arm64.whl", hash = "sha256:dd326a81afe332ede08eb39ab75b301d5676802cdffd3a8f287a5f0b694dc3f5", size = 224830, upload-time = "2025-05-21T12:44:17.749Z" }, + { url = "https://files.pythonhosted.org/packages/4b/ca/d435844829c384fd2c22754ff65889c5c556a675d2ed9eb0e148435c6690/rpds_py-0.25.1-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:a58d1ed49a94d4183483a3ce0af22f20318d4a1434acee255d683ad90bf78129", size = 359668, upload-time = "2025-05-21T12:44:19.322Z" }, + { url = "https://files.pythonhosted.org/packages/1f/01/b056f21db3a09f89410d493d2f6614d87bb162499f98b649d1dbd2a81988/rpds_py-0.25.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f251bf23deb8332823aef1da169d5d89fa84c89f67bdfb566c49dea1fccfd50d", size = 345649, upload-time = "2025-05-21T12:44:20.962Z" }, + { url = "https://files.pythonhosted.org/packages/e0/0f/e0d00dc991e3d40e03ca36383b44995126c36b3eafa0ccbbd19664709c88/rpds_py-0.25.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8dbd586bfa270c1103ece2109314dd423df1fa3d9719928b5d09e4840cec0d72", size = 384776, upload-time = "2025-05-21T12:44:22.516Z" }, + { url = "https://files.pythonhosted.org/packages/9f/a2/59374837f105f2ca79bde3c3cd1065b2f8c01678900924949f6392eab66d/rpds_py-0.25.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6d273f136e912aa101a9274c3145dcbddbe4bac560e77e6d5b3c9f6e0ed06d34", size = 395131, upload-time = "2025-05-21T12:44:24.147Z" }, + { url = "https://files.pythonhosted.org/packages/9c/dc/48e8d84887627a0fe0bac53f0b4631e90976fd5d35fff8be66b8e4f3916b/rpds_py-0.25.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:666fa7b1bd0a3810a7f18f6d3a25ccd8866291fbbc3c9b912b917a6715874bb9", size = 520942, upload-time = "2025-05-21T12:44:25.915Z" }, + { url = "https://files.pythonhosted.org/packages/7c/f5/ee056966aeae401913d37befeeab57a4a43a4f00099e0a20297f17b8f00c/rpds_py-0.25.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:921954d7fbf3fccc7de8f717799304b14b6d9a45bbeec5a8d7408ccbf531faf5", size = 411330, upload-time = "2025-05-21T12:44:27.638Z" }, + { url = "https://files.pythonhosted.org/packages/ab/74/b2cffb46a097cefe5d17f94ede7a174184b9d158a0aeb195f39f2c0361e8/rpds_py-0.25.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3d86373ff19ca0441ebeb696ef64cb58b8b5cbacffcda5a0ec2f3911732a194", size = 387339, upload-time = "2025-05-21T12:44:29.292Z" }, + { url = "https://files.pythonhosted.org/packages/7f/9a/0ff0b375dcb5161c2b7054e7d0b7575f1680127505945f5cabaac890bc07/rpds_py-0.25.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c8980cde3bb8575e7c956a530f2c217c1d6aac453474bf3ea0f9c89868b531b6", size = 418077, upload-time = "2025-05-21T12:44:30.877Z" }, + { url = "https://files.pythonhosted.org/packages/0d/a1/fda629bf20d6b698ae84c7c840cfb0e9e4200f664fc96e1f456f00e4ad6e/rpds_py-0.25.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:8eb8c84ecea987a2523e057c0d950bcb3f789696c0499290b8d7b3107a719d78", size = 562441, upload-time = "2025-05-21T12:44:32.541Z" }, + { url = "https://files.pythonhosted.org/packages/20/15/ce4b5257f654132f326f4acd87268e1006cc071e2c59794c5bdf4bebbb51/rpds_py-0.25.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:e43a005671a9ed5a650f3bc39e4dbccd6d4326b24fb5ea8be5f3a43a6f576c72", size = 590750, upload-time = "2025-05-21T12:44:34.557Z" }, + { url = "https://files.pythonhosted.org/packages/fb/ab/e04bf58a8d375aeedb5268edcc835c6a660ebf79d4384d8e0889439448b0/rpds_py-0.25.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:58f77c60956501a4a627749a6dcb78dac522f249dd96b5c9f1c6af29bfacfb66", size = 558891, upload-time = "2025-05-21T12:44:37.358Z" }, + { url = "https://files.pythonhosted.org/packages/90/82/cb8c6028a6ef6cd2b7991e2e4ced01c854b6236ecf51e81b64b569c43d73/rpds_py-0.25.1-cp313-cp313t-win32.whl", hash = "sha256:2cb9e5b5e26fc02c8a4345048cd9998c2aca7c2712bd1b36da0c72ee969a3523", size = 218718, upload-time = "2025-05-21T12:44:38.969Z" }, + { url = "https://files.pythonhosted.org/packages/b6/97/5a4b59697111c89477d20ba8a44df9ca16b41e737fa569d5ae8bff99e650/rpds_py-0.25.1-cp313-cp313t-win_amd64.whl", hash = "sha256:401ca1c4a20cc0510d3435d89c069fe0a9ae2ee6495135ac46bdd49ec0495763", size = 232218, upload-time = "2025-05-21T12:44:40.512Z" }, + { url = "https://files.pythonhosted.org/packages/78/ff/566ce53529b12b4f10c0a348d316bd766970b7060b4fd50f888be3b3b281/rpds_py-0.25.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b24bf3cd93d5b6ecfbedec73b15f143596c88ee249fa98cefa9a9dc9d92c6f28", size = 373931, upload-time = "2025-05-21T12:45:05.01Z" }, + { url = "https://files.pythonhosted.org/packages/83/5d/deba18503f7c7878e26aa696e97f051175788e19d5336b3b0e76d3ef9256/rpds_py-0.25.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:0eb90e94f43e5085623932b68840b6f379f26db7b5c2e6bcef3179bd83c9330f", size = 359074, upload-time = "2025-05-21T12:45:06.714Z" }, + { url = "https://files.pythonhosted.org/packages/0d/74/313415c5627644eb114df49c56a27edba4d40cfd7c92bd90212b3604ca84/rpds_py-0.25.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d50e4864498a9ab639d6d8854b25e80642bd362ff104312d9770b05d66e5fb13", size = 387255, upload-time = "2025-05-21T12:45:08.669Z" }, + { url = "https://files.pythonhosted.org/packages/8c/c8/c723298ed6338963d94e05c0f12793acc9b91d04ed7c4ba7508e534b7385/rpds_py-0.25.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7c9409b47ba0650544b0bb3c188243b83654dfe55dcc173a86832314e1a6a35d", size = 400714, upload-time = "2025-05-21T12:45:10.39Z" }, + { url = "https://files.pythonhosted.org/packages/33/8a/51f1f6aa653c2e110ed482ef2ae94140d56c910378752a1b483af11019ee/rpds_py-0.25.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:796ad874c89127c91970652a4ee8b00d56368b7e00d3477f4415fe78164c8000", size = 523105, upload-time = "2025-05-21T12:45:12.273Z" }, + { url = "https://files.pythonhosted.org/packages/c7/a4/7873d15c088ad3bff36910b29ceb0f178e4b3232c2adbe9198de68a41e63/rpds_py-0.25.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:85608eb70a659bf4c1142b2781083d4b7c0c4e2c90eff11856a9754e965b2540", size = 411499, upload-time = "2025-05-21T12:45:13.95Z" }, + { url = "https://files.pythonhosted.org/packages/90/f3/0ce1437befe1410766d11d08239333ac1b2d940f8a64234ce48a7714669c/rpds_py-0.25.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4feb9211d15d9160bc85fa72fed46432cdc143eb9cf6d5ca377335a921ac37b", size = 387918, upload-time = "2025-05-21T12:45:15.649Z" }, + { url = "https://files.pythonhosted.org/packages/94/d4/5551247988b2a3566afb8a9dba3f1d4a3eea47793fd83000276c1a6c726e/rpds_py-0.25.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ccfa689b9246c48947d31dd9d8b16d89a0ecc8e0e26ea5253068efb6c542b76e", size = 421705, upload-time = "2025-05-21T12:45:17.788Z" }, + { url = "https://files.pythonhosted.org/packages/b0/25/5960f28f847bf736cc7ee3c545a7e1d2f3b5edaf82c96fb616c2f5ed52d0/rpds_py-0.25.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:3c5b317ecbd8226887994852e85de562f7177add602514d4ac40f87de3ae45a8", size = 564489, upload-time = "2025-05-21T12:45:19.466Z" }, + { url = "https://files.pythonhosted.org/packages/02/66/1c99884a0d44e8c2904d3c4ec302f995292d5dde892c3bf7685ac1930146/rpds_py-0.25.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:454601988aab2c6e8fd49e7634c65476b2b919647626208e376afcd22019eeb8", size = 592557, upload-time = "2025-05-21T12:45:21.362Z" }, + { url = "https://files.pythonhosted.org/packages/55/ae/4aeac84ebeffeac14abb05b3bb1d2f728d00adb55d3fb7b51c9fa772e760/rpds_py-0.25.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:1c0c434a53714358532d13539272db75a5ed9df75a4a090a753ac7173ec14e11", size = 558691, upload-time = "2025-05-21T12:45:23.084Z" }, + { url = "https://files.pythonhosted.org/packages/41/b3/728a08ff6f5e06fe3bb9af2e770e9d5fd20141af45cff8dfc62da4b2d0b3/rpds_py-0.25.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:f73ce1512e04fbe2bc97836e89830d6b4314c171587a99688082d090f934d20a", size = 231651, upload-time = "2025-05-21T12:45:24.72Z" }, + { url = "https://files.pythonhosted.org/packages/49/74/48f3df0715a585cbf5d34919c9c757a4c92c1a9eba059f2d334e72471f70/rpds_py-0.25.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ee86d81551ec68a5c25373c5643d343150cc54672b5e9a0cafc93c1870a53954", size = 374208, upload-time = "2025-05-21T12:45:26.306Z" }, + { url = "https://files.pythonhosted.org/packages/55/b0/9b01bb11ce01ec03d05e627249cc2c06039d6aa24ea5a22a39c312167c10/rpds_py-0.25.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:89c24300cd4a8e4a51e55c31a8ff3918e6651b241ee8876a42cc2b2a078533ba", size = 359262, upload-time = "2025-05-21T12:45:28.322Z" }, + { url = "https://files.pythonhosted.org/packages/a9/eb/5395621618f723ebd5116c53282052943a726dba111b49cd2071f785b665/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:771c16060ff4e79584dc48902a91ba79fd93eade3aa3a12d6d2a4aadaf7d542b", size = 387366, upload-time = "2025-05-21T12:45:30.42Z" }, + { url = "https://files.pythonhosted.org/packages/68/73/3d51442bdb246db619d75039a50ea1cf8b5b4ee250c3e5cd5c3af5981cd4/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:785ffacd0ee61c3e60bdfde93baa6d7c10d86f15655bd706c89da08068dc5038", size = 400759, upload-time = "2025-05-21T12:45:32.516Z" }, + { url = "https://files.pythonhosted.org/packages/b7/4c/3a32d5955d7e6cb117314597bc0f2224efc798428318b13073efe306512a/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2a40046a529cc15cef88ac5ab589f83f739e2d332cb4d7399072242400ed68c9", size = 523128, upload-time = "2025-05-21T12:45:34.396Z" }, + { url = "https://files.pythonhosted.org/packages/be/95/1ffccd3b0bb901ae60b1dd4b1be2ab98bb4eb834cd9b15199888f5702f7b/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:85fc223d9c76cabe5d0bff82214459189720dc135db45f9f66aa7cffbf9ff6c1", size = 411597, upload-time = "2025-05-21T12:45:36.164Z" }, + { url = "https://files.pythonhosted.org/packages/ef/6d/6e6cd310180689db8b0d2de7f7d1eabf3fb013f239e156ae0d5a1a85c27f/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0be9965f93c222fb9b4cc254235b3b2b215796c03ef5ee64f995b1b69af0762", size = 388053, upload-time = "2025-05-21T12:45:38.45Z" }, + { url = "https://files.pythonhosted.org/packages/4a/87/ec4186b1fe6365ced6fa470960e68fc7804bafbe7c0cf5a36237aa240efa/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8378fa4a940f3fb509c081e06cb7f7f2adae8cf46ef258b0e0ed7519facd573e", size = 421821, upload-time = "2025-05-21T12:45:40.732Z" }, + { url = "https://files.pythonhosted.org/packages/7a/60/84f821f6bf4e0e710acc5039d91f8f594fae0d93fc368704920d8971680d/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:33358883a4490287e67a2c391dfaea4d9359860281db3292b6886bf0be3d8692", size = 564534, upload-time = "2025-05-21T12:45:42.672Z" }, + { url = "https://files.pythonhosted.org/packages/41/3a/bc654eb15d3b38f9330fe0f545016ba154d89cdabc6177b0295910cd0ebe/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:1d1fadd539298e70cac2f2cb36f5b8a65f742b9b9f1014dd4ea1f7785e2470bf", size = 592674, upload-time = "2025-05-21T12:45:44.533Z" }, + { url = "https://files.pythonhosted.org/packages/2e/ba/31239736f29e4dfc7a58a45955c5db852864c306131fd6320aea214d5437/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9a46c2fb2545e21181445515960006e85d22025bd2fe6db23e76daec6eb689fe", size = 558781, upload-time = "2025-05-21T12:45:46.281Z" }, +] + +[[package]] +name = "ruamel-yaml" +version = "0.18.13" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ruamel-yaml-clib", marker = "python_full_version < '3.14' and platform_python_implementation == 'CPython'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/aa/f9/0e3b3a678d087f8067249ecc9f2434428a93442004be86faed201ac7aeee/ruamel.yaml-0.18.13.tar.gz", hash = "sha256:b0d5ac0a2b0b4e39d87aed00ddff26e795de6750b064da364a8d009b97ce5f26", size = 145469, upload-time = "2025-06-06T14:22:43.83Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/ce/409888a3f8421600d778f926768ee1353cfe61b4850bef3622701bd82dad/ruamel.yaml-0.18.13-py3-none-any.whl", hash = "sha256:cf9628cfdfe9d88b78429cd093aa766e9a4c69242f9f3c86ac1d9e56437e5572", size = 118588, upload-time = "2025-06-06T14:22:40.787Z" }, +] + +[[package]] +name = "ruamel-yaml-clib" +version = "0.2.12" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/84/80203abff8ea4993a87d823a5f632e4d92831ef75d404c9fc78d0176d2b5/ruamel.yaml.clib-0.2.12.tar.gz", hash = "sha256:6c8fbb13ec503f99a91901ab46e0b07ae7941cd527393187039aec586fdfd36f", size = 225315, upload-time = "2024-10-20T10:10:56.22Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/70/57/40a958e863e299f0c74ef32a3bde9f2d1ea8d69669368c0c502a0997f57f/ruamel.yaml.clib-0.2.12-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:11f891336688faf5156a36293a9c362bdc7c88f03a8a027c2c1d8e0bcde998e5", size = 131301, upload-time = "2024-10-20T10:12:35.876Z" }, + { url = "https://files.pythonhosted.org/packages/98/a8/29a3eb437b12b95f50a6bcc3d7d7214301c6c529d8fdc227247fa84162b5/ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:a606ef75a60ecf3d924613892cc603b154178ee25abb3055db5062da811fd969", size = 633728, upload-time = "2024-10-20T10:12:37.858Z" }, + { url = "https://files.pythonhosted.org/packages/35/6d/ae05a87a3ad540259c3ad88d71275cbd1c0f2d30ae04c65dcbfb6dcd4b9f/ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd5415dded15c3822597455bc02bcd66e81ef8b7a48cb71a33628fc9fdde39df", size = 722230, upload-time = "2024-10-20T10:12:39.457Z" }, + { url = "https://files.pythonhosted.org/packages/7f/b7/20c6f3c0b656fe609675d69bc135c03aac9e3865912444be6339207b6648/ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f66efbc1caa63c088dead1c4170d148eabc9b80d95fb75b6c92ac0aad2437d76", size = 686712, upload-time = "2024-10-20T10:12:41.119Z" }, + { url = "https://files.pythonhosted.org/packages/cd/11/d12dbf683471f888d354dac59593873c2b45feb193c5e3e0f2ebf85e68b9/ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:22353049ba4181685023b25b5b51a574bce33e7f51c759371a7422dcae5402a6", size = 663936, upload-time = "2024-10-21T11:26:37.419Z" }, + { url = "https://files.pythonhosted.org/packages/72/14/4c268f5077db5c83f743ee1daeb236269fa8577133a5cfa49f8b382baf13/ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:932205970b9f9991b34f55136be327501903f7c66830e9760a8ffb15b07f05cd", size = 696580, upload-time = "2024-10-21T11:26:39.503Z" }, + { url = "https://files.pythonhosted.org/packages/30/fc/8cd12f189c6405a4c1cf37bd633aa740a9538c8e40497c231072d0fef5cf/ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a52d48f4e7bf9005e8f0a89209bf9a73f7190ddf0489eee5eb51377385f59f2a", size = 663393, upload-time = "2024-12-11T19:58:13.873Z" }, + { url = "https://files.pythonhosted.org/packages/80/29/c0a017b704aaf3cbf704989785cd9c5d5b8ccec2dae6ac0c53833c84e677/ruamel.yaml.clib-0.2.12-cp310-cp310-win32.whl", hash = "sha256:3eac5a91891ceb88138c113f9db04f3cebdae277f5d44eaa3651a4f573e6a5da", size = 100326, upload-time = "2024-10-20T10:12:42.967Z" }, + { url = "https://files.pythonhosted.org/packages/3a/65/fa39d74db4e2d0cd252355732d966a460a41cd01c6353b820a0952432839/ruamel.yaml.clib-0.2.12-cp310-cp310-win_amd64.whl", hash = "sha256:ab007f2f5a87bd08ab1499bdf96f3d5c6ad4dcfa364884cb4549aa0154b13a28", size = 118079, upload-time = "2024-10-20T10:12:44.117Z" }, + { url = "https://files.pythonhosted.org/packages/fb/8f/683c6ad562f558cbc4f7c029abcd9599148c51c54b5ef0f24f2638da9fbb/ruamel.yaml.clib-0.2.12-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:4a6679521a58256a90b0d89e03992c15144c5f3858f40d7c18886023d7943db6", size = 132224, upload-time = "2024-10-20T10:12:45.162Z" }, + { url = "https://files.pythonhosted.org/packages/3c/d2/b79b7d695e2f21da020bd44c782490578f300dd44f0a4c57a92575758a76/ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:d84318609196d6bd6da0edfa25cedfbabd8dbde5140a0a23af29ad4b8f91fb1e", size = 641480, upload-time = "2024-10-20T10:12:46.758Z" }, + { url = "https://files.pythonhosted.org/packages/68/6e/264c50ce2a31473a9fdbf4fa66ca9b2b17c7455b31ef585462343818bd6c/ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb43a269eb827806502c7c8efb7ae7e9e9d0573257a46e8e952f4d4caba4f31e", size = 739068, upload-time = "2024-10-20T10:12:48.605Z" }, + { url = "https://files.pythonhosted.org/packages/86/29/88c2567bc893c84d88b4c48027367c3562ae69121d568e8a3f3a8d363f4d/ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:811ea1594b8a0fb466172c384267a4e5e367298af6b228931f273b111f17ef52", size = 703012, upload-time = "2024-10-20T10:12:51.124Z" }, + { url = "https://files.pythonhosted.org/packages/11/46/879763c619b5470820f0cd6ca97d134771e502776bc2b844d2adb6e37753/ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cf12567a7b565cbf65d438dec6cfbe2917d3c1bdddfce84a9930b7d35ea59642", size = 704352, upload-time = "2024-10-21T11:26:41.438Z" }, + { url = "https://files.pythonhosted.org/packages/02/80/ece7e6034256a4186bbe50dee28cd032d816974941a6abf6a9d65e4228a7/ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7dd5adc8b930b12c8fc5b99e2d535a09889941aa0d0bd06f4749e9a9397c71d2", size = 737344, upload-time = "2024-10-21T11:26:43.62Z" }, + { url = "https://files.pythonhosted.org/packages/f0/ca/e4106ac7e80efbabdf4bf91d3d32fc424e41418458251712f5672eada9ce/ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1492a6051dab8d912fc2adeef0e8c72216b24d57bd896ea607cb90bb0c4981d3", size = 714498, upload-time = "2024-12-11T19:58:15.592Z" }, + { url = "https://files.pythonhosted.org/packages/67/58/b1f60a1d591b771298ffa0428237afb092c7f29ae23bad93420b1eb10703/ruamel.yaml.clib-0.2.12-cp311-cp311-win32.whl", hash = "sha256:bd0a08f0bab19093c54e18a14a10b4322e1eacc5217056f3c063bd2f59853ce4", size = 100205, upload-time = "2024-10-20T10:12:52.865Z" }, + { url = "https://files.pythonhosted.org/packages/b4/4f/b52f634c9548a9291a70dfce26ca7ebce388235c93588a1068028ea23fcc/ruamel.yaml.clib-0.2.12-cp311-cp311-win_amd64.whl", hash = "sha256:a274fb2cb086c7a3dea4322ec27f4cb5cc4b6298adb583ab0e211a4682f241eb", size = 118185, upload-time = "2024-10-20T10:12:54.652Z" }, + { url = "https://files.pythonhosted.org/packages/48/41/e7a405afbdc26af961678474a55373e1b323605a4f5e2ddd4a80ea80f628/ruamel.yaml.clib-0.2.12-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:20b0f8dc160ba83b6dcc0e256846e1a02d044e13f7ea74a3d1d56ede4e48c632", size = 133433, upload-time = "2024-10-20T10:12:55.657Z" }, + { url = "https://files.pythonhosted.org/packages/ec/b0/b850385604334c2ce90e3ee1013bd911aedf058a934905863a6ea95e9eb4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:943f32bc9dedb3abff9879edc134901df92cfce2c3d5c9348f172f62eb2d771d", size = 647362, upload-time = "2024-10-20T10:12:57.155Z" }, + { url = "https://files.pythonhosted.org/packages/44/d0/3f68a86e006448fb6c005aee66565b9eb89014a70c491d70c08de597f8e4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95c3829bb364fdb8e0332c9931ecf57d9be3519241323c5274bd82f709cebc0c", size = 754118, upload-time = "2024-10-20T10:12:58.501Z" }, + { url = "https://files.pythonhosted.org/packages/52/a9/d39f3c5ada0a3bb2870d7db41901125dbe2434fa4f12ca8c5b83a42d7c53/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:749c16fcc4a2b09f28843cda5a193e0283e47454b63ec4b81eaa2242f50e4ccd", size = 706497, upload-time = "2024-10-20T10:13:00.211Z" }, + { url = "https://files.pythonhosted.org/packages/b0/fa/097e38135dadd9ac25aecf2a54be17ddf6e4c23e43d538492a90ab3d71c6/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bf165fef1f223beae7333275156ab2022cffe255dcc51c27f066b4370da81e31", size = 698042, upload-time = "2024-10-21T11:26:46.038Z" }, + { url = "https://files.pythonhosted.org/packages/ec/d5/a659ca6f503b9379b930f13bc6b130c9f176469b73b9834296822a83a132/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:32621c177bbf782ca5a18ba4d7af0f1082a3f6e517ac2a18b3974d4edf349680", size = 745831, upload-time = "2024-10-21T11:26:47.487Z" }, + { url = "https://files.pythonhosted.org/packages/db/5d/36619b61ffa2429eeaefaab4f3374666adf36ad8ac6330d855848d7d36fd/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b82a7c94a498853aa0b272fd5bc67f29008da798d4f93a2f9f289feb8426a58d", size = 715692, upload-time = "2024-12-11T19:58:17.252Z" }, + { url = "https://files.pythonhosted.org/packages/b1/82/85cb92f15a4231c89b95dfe08b09eb6adca929ef7df7e17ab59902b6f589/ruamel.yaml.clib-0.2.12-cp312-cp312-win32.whl", hash = "sha256:e8c4ebfcfd57177b572e2040777b8abc537cdef58a2120e830124946aa9b42c5", size = 98777, upload-time = "2024-10-20T10:13:01.395Z" }, + { url = "https://files.pythonhosted.org/packages/d7/8f/c3654f6f1ddb75daf3922c3d8fc6005b1ab56671ad56ffb874d908bfa668/ruamel.yaml.clib-0.2.12-cp312-cp312-win_amd64.whl", hash = "sha256:0467c5965282c62203273b838ae77c0d29d7638c8a4e3a1c8bdd3602c10904e4", size = 115523, upload-time = "2024-10-20T10:13:02.768Z" }, + { url = "https://files.pythonhosted.org/packages/29/00/4864119668d71a5fa45678f380b5923ff410701565821925c69780356ffa/ruamel.yaml.clib-0.2.12-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:4c8c5d82f50bb53986a5e02d1b3092b03622c02c2eb78e29bec33fd9593bae1a", size = 132011, upload-time = "2024-10-20T10:13:04.377Z" }, + { url = "https://files.pythonhosted.org/packages/7f/5e/212f473a93ae78c669ffa0cb051e3fee1139cb2d385d2ae1653d64281507/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:e7e3736715fbf53e9be2a79eb4db68e4ed857017344d697e8b9749444ae57475", size = 642488, upload-time = "2024-10-20T10:13:05.906Z" }, + { url = "https://files.pythonhosted.org/packages/1f/8f/ecfbe2123ade605c49ef769788f79c38ddb1c8fa81e01f4dbf5cf1a44b16/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7e75b4965e1d4690e93021adfcecccbca7d61c7bddd8e22406ef2ff20d74ef", size = 745066, upload-time = "2024-10-20T10:13:07.26Z" }, + { url = "https://files.pythonhosted.org/packages/e2/a9/28f60726d29dfc01b8decdb385de4ced2ced9faeb37a847bd5cf26836815/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96777d473c05ee3e5e3c3e999f5d23c6f4ec5b0c38c098b3a5229085f74236c6", size = 701785, upload-time = "2024-10-20T10:13:08.504Z" }, + { url = "https://files.pythonhosted.org/packages/84/7e/8e7ec45920daa7f76046578e4f677a3215fe8f18ee30a9cb7627a19d9b4c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:3bc2a80e6420ca8b7d3590791e2dfc709c88ab9152c00eeb511c9875ce5778bf", size = 693017, upload-time = "2024-10-21T11:26:48.866Z" }, + { url = "https://files.pythonhosted.org/packages/c5/b3/d650eaade4ca225f02a648321e1ab835b9d361c60d51150bac49063b83fa/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e188d2699864c11c36cdfdada94d781fd5d6b0071cd9c427bceb08ad3d7c70e1", size = 741270, upload-time = "2024-10-21T11:26:50.213Z" }, + { url = "https://files.pythonhosted.org/packages/87/b8/01c29b924dcbbed75cc45b30c30d565d763b9c4d540545a0eeecffb8f09c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4f6f3eac23941b32afccc23081e1f50612bdbe4e982012ef4f5797986828cd01", size = 709059, upload-time = "2024-12-11T19:58:18.846Z" }, + { url = "https://files.pythonhosted.org/packages/30/8c/ed73f047a73638257aa9377ad356bea4d96125b305c34a28766f4445cc0f/ruamel.yaml.clib-0.2.12-cp313-cp313-win32.whl", hash = "sha256:6442cb36270b3afb1b4951f060eccca1ce49f3d087ca1ca4563a6eb479cb3de6", size = 98583, upload-time = "2024-10-20T10:13:09.658Z" }, + { url = "https://files.pythonhosted.org/packages/b0/85/e8e751d8791564dd333d5d9a4eab0a7a115f7e349595417fd50ecae3395c/ruamel.yaml.clib-0.2.12-cp313-cp313-win_amd64.whl", hash = "sha256:e5b8daf27af0b90da7bb903a876477a9e6d7270be6146906b276605997c7e9a3", size = 115190, upload-time = "2024-10-20T10:13:10.66Z" }, +] + +[[package]] +name = "ruby" +version = "0.0.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nltk" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f5/69/1fef3ae0ef4e6d813416e9701fdeb4ba5c19f88bdeb3d4f1081428c8eba3/ruby-0.0.2.tar.gz", hash = "sha256:069815aee616653d7944240e8d68989695980aa75debf65f1dc054180458de6e", size = 5447, upload-time = "2021-02-14T07:00:59.796Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/cb/4b6ddfc4139c649949dbcebbd1f50fff07b04317e2a31fa3d06394c7915a/ruby-0.0.2-py3-none-any.whl", hash = "sha256:3061fa553d9da62626f803b91df80a38afd7b74aa27c1a90365e6476dbf1752f", size = 10269, upload-time = "2021-02-14T07:00:58.502Z" }, +] + +[[package]] +name = "ruff" +version = "0.11.13" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ed/da/9c6f995903b4d9474b39da91d2d626659af3ff1eeb43e9ae7c119349dba6/ruff-0.11.13.tar.gz", hash = "sha256:26fa247dc68d1d4e72c179e08889a25ac0c7ba4d78aecfc835d49cbfd60bf514", size = 4282054, upload-time = "2025-06-05T21:00:15.721Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7d/ce/a11d381192966e0b4290842cc8d4fac7dc9214ddf627c11c1afff87da29b/ruff-0.11.13-py3-none-linux_armv6l.whl", hash = "sha256:4bdfbf1240533f40042ec00c9e09a3aade6f8c10b6414cf11b519488d2635d46", size = 10292516, upload-time = "2025-06-05T20:59:32.944Z" }, + { url = "https://files.pythonhosted.org/packages/78/db/87c3b59b0d4e753e40b6a3b4a2642dfd1dcaefbff121ddc64d6c8b47ba00/ruff-0.11.13-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:aef9c9ed1b5ca28bb15c7eac83b8670cf3b20b478195bd49c8d756ba0a36cf48", size = 11106083, upload-time = "2025-06-05T20:59:37.03Z" }, + { url = "https://files.pythonhosted.org/packages/77/79/d8cec175856ff810a19825d09ce700265f905c643c69f45d2b737e4a470a/ruff-0.11.13-py3-none-macosx_11_0_arm64.whl", hash = "sha256:53b15a9dfdce029c842e9a5aebc3855e9ab7771395979ff85b7c1dedb53ddc2b", size = 10436024, upload-time = "2025-06-05T20:59:39.741Z" }, + { url = "https://files.pythonhosted.org/packages/8b/5b/f6d94f2980fa1ee854b41568368a2e1252681b9238ab2895e133d303538f/ruff-0.11.13-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ab153241400789138d13f362c43f7edecc0edfffce2afa6a68434000ecd8f69a", size = 10646324, upload-time = "2025-06-05T20:59:42.185Z" }, + { url = "https://files.pythonhosted.org/packages/6c/9c/b4c2acf24ea4426016d511dfdc787f4ce1ceb835f3c5fbdbcb32b1c63bda/ruff-0.11.13-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6c51f93029d54a910d3d24f7dd0bb909e31b6cd989a5e4ac513f4eb41629f0dc", size = 10174416, upload-time = "2025-06-05T20:59:44.319Z" }, + { url = "https://files.pythonhosted.org/packages/f3/10/e2e62f77c65ede8cd032c2ca39c41f48feabedb6e282bfd6073d81bb671d/ruff-0.11.13-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1808b3ed53e1a777c2ef733aca9051dc9bf7c99b26ece15cb59a0320fbdbd629", size = 11724197, upload-time = "2025-06-05T20:59:46.935Z" }, + { url = "https://files.pythonhosted.org/packages/bb/f0/466fe8469b85c561e081d798c45f8a1d21e0b4a5ef795a1d7f1a9a9ec182/ruff-0.11.13-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:d28ce58b5ecf0f43c1b71edffabe6ed7f245d5336b17805803312ec9bc665933", size = 12511615, upload-time = "2025-06-05T20:59:49.534Z" }, + { url = "https://files.pythonhosted.org/packages/17/0e/cefe778b46dbd0cbcb03a839946c8f80a06f7968eb298aa4d1a4293f3448/ruff-0.11.13-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:55e4bc3a77842da33c16d55b32c6cac1ec5fb0fbec9c8c513bdce76c4f922165", size = 12117080, upload-time = "2025-06-05T20:59:51.654Z" }, + { url = "https://files.pythonhosted.org/packages/5d/2c/caaeda564cbe103bed145ea557cb86795b18651b0f6b3ff6a10e84e5a33f/ruff-0.11.13-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:633bf2c6f35678c56ec73189ba6fa19ff1c5e4807a78bf60ef487b9dd272cc71", size = 11326315, upload-time = "2025-06-05T20:59:54.469Z" }, + { url = "https://files.pythonhosted.org/packages/75/f0/782e7d681d660eda8c536962920c41309e6dd4ebcea9a2714ed5127d44bd/ruff-0.11.13-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ffbc82d70424b275b089166310448051afdc6e914fdab90e08df66c43bb5ca9", size = 11555640, upload-time = "2025-06-05T20:59:56.986Z" }, + { url = "https://files.pythonhosted.org/packages/5d/d4/3d580c616316c7f07fb3c99dbecfe01fbaea7b6fd9a82b801e72e5de742a/ruff-0.11.13-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:4a9ddd3ec62a9a89578c85842b836e4ac832d4a2e0bfaad3b02243f930ceafcc", size = 10507364, upload-time = "2025-06-05T20:59:59.154Z" }, + { url = "https://files.pythonhosted.org/packages/5a/dc/195e6f17d7b3ea6b12dc4f3e9de575db7983db187c378d44606e5d503319/ruff-0.11.13-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:d237a496e0778d719efb05058c64d28b757c77824e04ffe8796c7436e26712b7", size = 10141462, upload-time = "2025-06-05T21:00:01.481Z" }, + { url = "https://files.pythonhosted.org/packages/f4/8e/39a094af6967faa57ecdeacb91bedfb232474ff8c3d20f16a5514e6b3534/ruff-0.11.13-py3-none-musllinux_1_2_i686.whl", hash = "sha256:26816a218ca6ef02142343fd24c70f7cd8c5aa6c203bca284407adf675984432", size = 11121028, upload-time = "2025-06-05T21:00:04.06Z" }, + { url = "https://files.pythonhosted.org/packages/5a/c0/b0b508193b0e8a1654ec683ebab18d309861f8bd64e3a2f9648b80d392cb/ruff-0.11.13-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:51c3f95abd9331dc5b87c47ac7f376db5616041173826dfd556cfe3d4977f492", size = 11602992, upload-time = "2025-06-05T21:00:06.249Z" }, + { url = "https://files.pythonhosted.org/packages/7c/91/263e33ab93ab09ca06ce4f8f8547a858cc198072f873ebc9be7466790bae/ruff-0.11.13-py3-none-win32.whl", hash = "sha256:96c27935418e4e8e77a26bb05962817f28b8ef3843a6c6cc49d8783b5507f250", size = 10474944, upload-time = "2025-06-05T21:00:08.459Z" }, + { url = "https://files.pythonhosted.org/packages/46/f4/7c27734ac2073aae8efb0119cae6931b6fb48017adf048fdf85c19337afc/ruff-0.11.13-py3-none-win_amd64.whl", hash = "sha256:29c3189895a8a6a657b7af4e97d330c8a3afd2c9c8f46c81e2fc5a31866517e3", size = 11548669, upload-time = "2025-06-05T21:00:11.147Z" }, + { url = "https://files.pythonhosted.org/packages/ec/bf/b273dd11673fed8a6bd46032c0ea2a04b2ac9bfa9c628756a5856ba113b0/ruff-0.11.13-py3-none-win_arm64.whl", hash = "sha256:b4385285e9179d608ff1d2fb9922062663c658605819a6876d8beef0c30b7f3b", size = 10683928, upload-time = "2025-06-05T21:00:13.758Z" }, +] + +[[package]] +name = "scikit-learn" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "joblib" }, + { name = "numpy" }, + { name = "scipy" }, + { name = "threadpoolctl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/27/a0/95eae31ceabeb7710a694367816edfcc0ccb001c794c14b3b234c148ae50/scikit-learn-1.2.0.tar.gz", hash = "sha256:680b65b3caee469541385d2ca5b03ff70408f6c618c583948312f0d2125df680", size = 7208996, upload-time = "2022-12-08T14:12:26.381Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/49/2c/7baa1b58d0987b1c7559250d87ed072d4b883193a36333a3b722b5f11344/scikit_learn-1.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1beaa631434d1f17a20b1eef5d842e58c195875d2bc11901a1a70b5fe544745b", size = 9049536, upload-time = "2022-12-08T14:11:25.67Z" }, + { url = "https://files.pythonhosted.org/packages/6a/b1/bbedcbdae2c3f67b9b14af02178996e1305cf3d064fcd32d145394d17a3b/scikit_learn-1.2.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:d395730f26d8fc752321f1953ddf72647c892d8bed74fad4d7c816ec9b602dfa", size = 8338604, upload-time = "2022-12-08T14:11:29.994Z" }, + { url = "https://files.pythonhosted.org/packages/60/cf/d516a5aa2b35b6540693990452d366beec8001f37bd621c997631477c66b/scikit_learn-1.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd3480c982b9e616b9f76ad8587804d3f4e91b4e2a6752e7dafb8a2e1f541098", size = 9076072, upload-time = "2022-12-08T14:11:33.368Z" }, + { url = "https://files.pythonhosted.org/packages/ef/bb/b625922655b063f2c2cba49b8268dac332b78b9fa7738b9e59b04909d069/scikit_learn-1.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:184a42842a4e698ffa4d849b6019de50a77a0aa24d26afa28fa49c9190bb144b", size = 9523824, upload-time = "2022-12-08T14:11:36.972Z" }, + { url = "https://files.pythonhosted.org/packages/fb/bc/affe1a47dc4e29f734959a53be8ae910acb627b757403f52d9c5cc2c22e4/scikit_learn-1.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:867023a044fdfe59e5014a7fec7a3086a8928f10b5dce9382eedf4135f6709a2", size = 8240105, upload-time = "2022-12-08T14:11:40.446Z" }, + { url = "https://files.pythonhosted.org/packages/08/b4/c122c0e7225e438ff64867e5c9eb8ec246dcd2bfe5435a9a2adb3f7e160e/scikit_learn-1.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5546a8894a0616e92489ef995b39a0715829f3df96e801bb55cbf196be0d9649", size = 8951603, upload-time = "2022-12-08T14:11:43.015Z" }, + { url = "https://files.pythonhosted.org/packages/b0/73/8992b6647ca8753dbe194c3582423cd965e731e2828c3edc8de5fd64ebe6/scikit_learn-1.2.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:bc7073e025b62c1067cbfb76e69d08650c6b9d7a0e7afdfa20cb92d4afe516f6", size = 8263329, upload-time = "2022-12-08T14:11:45.667Z" }, + { url = "https://files.pythonhosted.org/packages/f0/1d/07b66497eb3797091944f1340698465ca4bd1a75a5a19b6bc6c865c8f40b/scikit_learn-1.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc0a72237f0c56780cf550df87201a702d3bdcbbb23c6ef7d54c19326fa23f19", size = 9051383, upload-time = "2022-12-08T14:11:49.028Z" }, + { url = "https://files.pythonhosted.org/packages/b4/56/4282c0f73a49009f30b8c60b348c71b136036f608320cfba9ea744214f71/scikit_learn-1.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e1ea0bc1706da45589bcf2490cde6276490a1b88f9af208dbb396fdc3a0babf", size = 9451431, upload-time = "2022-12-08T14:11:52.288Z" }, + { url = "https://files.pythonhosted.org/packages/b9/86/62738531b1db41defda03c8d065ec9f6282ec96b82309cba7715e0e263ce/scikit_learn-1.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:f17420a8e3f40129aeb7e0f5ee35822d6178617007bb8f69521a2cefc20d5f00", size = 8192711, upload-time = "2022-12-08T14:11:54.865Z" }, +] + +[[package]] +name = "scipy" +version = "1.15.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0f/37/6964b830433e654ec7485e45a00fc9a27cf868d622838f6b6d9c5ec0d532/scipy-1.15.3.tar.gz", hash = "sha256:eae3cf522bc7df64b42cad3925c876e1b0b6c35c1337c93e12c0f366f55b0eaf", size = 59419214, upload-time = "2025-05-08T16:13:05.955Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/2f/4966032c5f8cc7e6a60f1b2e0ad686293b9474b65246b0c642e3ef3badd0/scipy-1.15.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:a345928c86d535060c9c2b25e71e87c39ab2f22fc96e9636bd74d1dbf9de448c", size = 38702770, upload-time = "2025-05-08T16:04:20.849Z" }, + { url = "https://files.pythonhosted.org/packages/a0/6e/0c3bf90fae0e910c274db43304ebe25a6b391327f3f10b5dcc638c090795/scipy-1.15.3-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:ad3432cb0f9ed87477a8d97f03b763fd1d57709f1bbde3c9369b1dff5503b253", size = 30094511, upload-time = "2025-05-08T16:04:27.103Z" }, + { url = "https://files.pythonhosted.org/packages/ea/b1/4deb37252311c1acff7f101f6453f0440794f51b6eacb1aad4459a134081/scipy-1.15.3-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:aef683a9ae6eb00728a542b796f52a5477b78252edede72b8327a886ab63293f", size = 22368151, upload-time = "2025-05-08T16:04:31.731Z" }, + { url = "https://files.pythonhosted.org/packages/38/7d/f457626e3cd3c29b3a49ca115a304cebb8cc6f31b04678f03b216899d3c6/scipy-1.15.3-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:1c832e1bd78dea67d5c16f786681b28dd695a8cb1fb90af2e27580d3d0967e92", size = 25121732, upload-time = "2025-05-08T16:04:36.596Z" }, + { url = "https://files.pythonhosted.org/packages/db/0a/92b1de4a7adc7a15dcf5bddc6e191f6f29ee663b30511ce20467ef9b82e4/scipy-1.15.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:263961f658ce2165bbd7b99fa5135195c3a12d9bef045345016b8b50c315cb82", size = 35547617, upload-time = "2025-05-08T16:04:43.546Z" }, + { url = "https://files.pythonhosted.org/packages/8e/6d/41991e503e51fc1134502694c5fa7a1671501a17ffa12716a4a9151af3df/scipy-1.15.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e2abc762b0811e09a0d3258abee2d98e0c703eee49464ce0069590846f31d40", size = 37662964, upload-time = "2025-05-08T16:04:49.431Z" }, + { url = "https://files.pythonhosted.org/packages/25/e1/3df8f83cb15f3500478c889be8fb18700813b95e9e087328230b98d547ff/scipy-1.15.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ed7284b21a7a0c8f1b6e5977ac05396c0d008b89e05498c8b7e8f4a1423bba0e", size = 37238749, upload-time = "2025-05-08T16:04:55.215Z" }, + { url = "https://files.pythonhosted.org/packages/93/3e/b3257cf446f2a3533ed7809757039016b74cd6f38271de91682aa844cfc5/scipy-1.15.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5380741e53df2c566f4d234b100a484b420af85deb39ea35a1cc1be84ff53a5c", size = 40022383, upload-time = "2025-05-08T16:05:01.914Z" }, + { url = "https://files.pythonhosted.org/packages/d1/84/55bc4881973d3f79b479a5a2e2df61c8c9a04fcb986a213ac9c02cfb659b/scipy-1.15.3-cp310-cp310-win_amd64.whl", hash = "sha256:9d61e97b186a57350f6d6fd72640f9e99d5a4a2b8fbf4b9ee9a841eab327dc13", size = 41259201, upload-time = "2025-05-08T16:05:08.166Z" }, + { url = "https://files.pythonhosted.org/packages/96/ab/5cc9f80f28f6a7dff646c5756e559823614a42b1939d86dd0ed550470210/scipy-1.15.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:993439ce220d25e3696d1b23b233dd010169b62f6456488567e830654ee37a6b", size = 38714255, upload-time = "2025-05-08T16:05:14.596Z" }, + { url = "https://files.pythonhosted.org/packages/4a/4a/66ba30abe5ad1a3ad15bfb0b59d22174012e8056ff448cb1644deccbfed2/scipy-1.15.3-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:34716e281f181a02341ddeaad584205bd2fd3c242063bd3423d61ac259ca7eba", size = 30111035, upload-time = "2025-05-08T16:05:20.152Z" }, + { url = "https://files.pythonhosted.org/packages/4b/fa/a7e5b95afd80d24313307f03624acc65801846fa75599034f8ceb9e2cbf6/scipy-1.15.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3b0334816afb8b91dab859281b1b9786934392aa3d527cd847e41bb6f45bee65", size = 22384499, upload-time = "2025-05-08T16:05:24.494Z" }, + { url = "https://files.pythonhosted.org/packages/17/99/f3aaddccf3588bb4aea70ba35328c204cadd89517a1612ecfda5b2dd9d7a/scipy-1.15.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6db907c7368e3092e24919b5e31c76998b0ce1684d51a90943cb0ed1b4ffd6c1", size = 25152602, upload-time = "2025-05-08T16:05:29.313Z" }, + { url = "https://files.pythonhosted.org/packages/56/c5/1032cdb565f146109212153339f9cb8b993701e9fe56b1c97699eee12586/scipy-1.15.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:721d6b4ef5dc82ca8968c25b111e307083d7ca9091bc38163fb89243e85e3889", size = 35503415, upload-time = "2025-05-08T16:05:34.699Z" }, + { url = "https://files.pythonhosted.org/packages/bd/37/89f19c8c05505d0601ed5650156e50eb881ae3918786c8fd7262b4ee66d3/scipy-1.15.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39cb9c62e471b1bb3750066ecc3a3f3052b37751c7c3dfd0fd7e48900ed52982", size = 37652622, upload-time = "2025-05-08T16:05:40.762Z" }, + { url = "https://files.pythonhosted.org/packages/7e/31/be59513aa9695519b18e1851bb9e487de66f2d31f835201f1b42f5d4d475/scipy-1.15.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:795c46999bae845966368a3c013e0e00947932d68e235702b5c3f6ea799aa8c9", size = 37244796, upload-time = "2025-05-08T16:05:48.119Z" }, + { url = "https://files.pythonhosted.org/packages/10/c0/4f5f3eeccc235632aab79b27a74a9130c6c35df358129f7ac8b29f562ac7/scipy-1.15.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:18aaacb735ab38b38db42cb01f6b92a2d0d4b6aabefeb07f02849e47f8fb3594", size = 40047684, upload-time = "2025-05-08T16:05:54.22Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a7/0ddaf514ce8a8714f6ed243a2b391b41dbb65251affe21ee3077ec45ea9a/scipy-1.15.3-cp311-cp311-win_amd64.whl", hash = "sha256:ae48a786a28412d744c62fd7816a4118ef97e5be0bee968ce8f0a2fba7acf3bb", size = 41246504, upload-time = "2025-05-08T16:06:00.437Z" }, + { url = "https://files.pythonhosted.org/packages/37/4b/683aa044c4162e10ed7a7ea30527f2cbd92e6999c10a8ed8edb253836e9c/scipy-1.15.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6ac6310fdbfb7aa6612408bd2f07295bcbd3fda00d2d702178434751fe48e019", size = 38766735, upload-time = "2025-05-08T16:06:06.471Z" }, + { url = "https://files.pythonhosted.org/packages/7b/7e/f30be3d03de07f25dc0ec926d1681fed5c732d759ac8f51079708c79e680/scipy-1.15.3-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:185cd3d6d05ca4b44a8f1595af87f9c372bb6acf9c808e99aa3e9aa03bd98cf6", size = 30173284, upload-time = "2025-05-08T16:06:11.686Z" }, + { url = "https://files.pythonhosted.org/packages/07/9c/0ddb0d0abdabe0d181c1793db51f02cd59e4901da6f9f7848e1f96759f0d/scipy-1.15.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:05dc6abcd105e1a29f95eada46d4a3f251743cfd7d3ae8ddb4088047f24ea477", size = 22446958, upload-time = "2025-05-08T16:06:15.97Z" }, + { url = "https://files.pythonhosted.org/packages/af/43/0bce905a965f36c58ff80d8bea33f1f9351b05fad4beaad4eae34699b7a1/scipy-1.15.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:06efcba926324df1696931a57a176c80848ccd67ce6ad020c810736bfd58eb1c", size = 25242454, upload-time = "2025-05-08T16:06:20.394Z" }, + { url = "https://files.pythonhosted.org/packages/56/30/a6f08f84ee5b7b28b4c597aca4cbe545535c39fe911845a96414700b64ba/scipy-1.15.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c05045d8b9bfd807ee1b9f38761993297b10b245f012b11b13b91ba8945f7e45", size = 35210199, upload-time = "2025-05-08T16:06:26.159Z" }, + { url = "https://files.pythonhosted.org/packages/0b/1f/03f52c282437a168ee2c7c14a1a0d0781a9a4a8962d84ac05c06b4c5b555/scipy-1.15.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:271e3713e645149ea5ea3e97b57fdab61ce61333f97cfae392c28ba786f9bb49", size = 37309455, upload-time = "2025-05-08T16:06:32.778Z" }, + { url = "https://files.pythonhosted.org/packages/89/b1/fbb53137f42c4bf630b1ffdfc2151a62d1d1b903b249f030d2b1c0280af8/scipy-1.15.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6cfd56fc1a8e53f6e89ba3a7a7251f7396412d655bca2aa5611c8ec9a6784a1e", size = 36885140, upload-time = "2025-05-08T16:06:39.249Z" }, + { url = "https://files.pythonhosted.org/packages/2e/2e/025e39e339f5090df1ff266d021892694dbb7e63568edcfe43f892fa381d/scipy-1.15.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0ff17c0bb1cb32952c09217d8d1eed9b53d1463e5f1dd6052c7857f83127d539", size = 39710549, upload-time = "2025-05-08T16:06:45.729Z" }, + { url = "https://files.pythonhosted.org/packages/e6/eb/3bf6ea8ab7f1503dca3a10df2e4b9c3f6b3316df07f6c0ded94b281c7101/scipy-1.15.3-cp312-cp312-win_amd64.whl", hash = "sha256:52092bc0472cfd17df49ff17e70624345efece4e1a12b23783a1ac59a1b728ed", size = 40966184, upload-time = "2025-05-08T16:06:52.623Z" }, + { url = "https://files.pythonhosted.org/packages/73/18/ec27848c9baae6e0d6573eda6e01a602e5649ee72c27c3a8aad673ebecfd/scipy-1.15.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2c620736bcc334782e24d173c0fdbb7590a0a436d2fdf39310a8902505008759", size = 38728256, upload-time = "2025-05-08T16:06:58.696Z" }, + { url = "https://files.pythonhosted.org/packages/74/cd/1aef2184948728b4b6e21267d53b3339762c285a46a274ebb7863c9e4742/scipy-1.15.3-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:7e11270a000969409d37ed399585ee530b9ef6aa99d50c019de4cb01e8e54e62", size = 30109540, upload-time = "2025-05-08T16:07:04.209Z" }, + { url = "https://files.pythonhosted.org/packages/5b/d8/59e452c0a255ec352bd0a833537a3bc1bfb679944c4938ab375b0a6b3a3e/scipy-1.15.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:8c9ed3ba2c8a2ce098163a9bdb26f891746d02136995df25227a20e71c396ebb", size = 22383115, upload-time = "2025-05-08T16:07:08.998Z" }, + { url = "https://files.pythonhosted.org/packages/08/f5/456f56bbbfccf696263b47095291040655e3cbaf05d063bdc7c7517f32ac/scipy-1.15.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:0bdd905264c0c9cfa74a4772cdb2070171790381a5c4d312c973382fc6eaf730", size = 25163884, upload-time = "2025-05-08T16:07:14.091Z" }, + { url = "https://files.pythonhosted.org/packages/a2/66/a9618b6a435a0f0c0b8a6d0a2efb32d4ec5a85f023c2b79d39512040355b/scipy-1.15.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79167bba085c31f38603e11a267d862957cbb3ce018d8b38f79ac043bc92d825", size = 35174018, upload-time = "2025-05-08T16:07:19.427Z" }, + { url = "https://files.pythonhosted.org/packages/b5/09/c5b6734a50ad4882432b6bb7c02baf757f5b2f256041da5df242e2d7e6b6/scipy-1.15.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9deabd6d547aee2c9a81dee6cc96c6d7e9a9b1953f74850c179f91fdc729cb7", size = 37269716, upload-time = "2025-05-08T16:07:25.712Z" }, + { url = "https://files.pythonhosted.org/packages/77/0a/eac00ff741f23bcabd352731ed9b8995a0a60ef57f5fd788d611d43d69a1/scipy-1.15.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:dde4fc32993071ac0c7dd2d82569e544f0bdaff66269cb475e0f369adad13f11", size = 36872342, upload-time = "2025-05-08T16:07:31.468Z" }, + { url = "https://files.pythonhosted.org/packages/fe/54/4379be86dd74b6ad81551689107360d9a3e18f24d20767a2d5b9253a3f0a/scipy-1.15.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f77f853d584e72e874d87357ad70f44b437331507d1c311457bed8ed2b956126", size = 39670869, upload-time = "2025-05-08T16:07:38.002Z" }, + { url = "https://files.pythonhosted.org/packages/87/2e/892ad2862ba54f084ffe8cc4a22667eaf9c2bcec6d2bff1d15713c6c0703/scipy-1.15.3-cp313-cp313-win_amd64.whl", hash = "sha256:b90ab29d0c37ec9bf55424c064312930ca5f4bde15ee8619ee44e69319aab163", size = 40988851, upload-time = "2025-05-08T16:08:33.671Z" }, + { url = "https://files.pythonhosted.org/packages/1b/e9/7a879c137f7e55b30d75d90ce3eb468197646bc7b443ac036ae3fe109055/scipy-1.15.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3ac07623267feb3ae308487c260ac684b32ea35fd81e12845039952f558047b8", size = 38863011, upload-time = "2025-05-08T16:07:44.039Z" }, + { url = "https://files.pythonhosted.org/packages/51/d1/226a806bbd69f62ce5ef5f3ffadc35286e9fbc802f606a07eb83bf2359de/scipy-1.15.3-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:6487aa99c2a3d509a5227d9a5e889ff05830a06b2ce08ec30df6d79db5fcd5c5", size = 30266407, upload-time = "2025-05-08T16:07:49.891Z" }, + { url = "https://files.pythonhosted.org/packages/e5/9b/f32d1d6093ab9eeabbd839b0f7619c62e46cc4b7b6dbf05b6e615bbd4400/scipy-1.15.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:50f9e62461c95d933d5c5ef4a1f2ebf9a2b4e83b0db374cb3f1de104d935922e", size = 22540030, upload-time = "2025-05-08T16:07:54.121Z" }, + { url = "https://files.pythonhosted.org/packages/e7/29/c278f699b095c1a884f29fda126340fcc201461ee8bfea5c8bdb1c7c958b/scipy-1.15.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:14ed70039d182f411ffc74789a16df3835e05dc469b898233a245cdfd7f162cb", size = 25218709, upload-time = "2025-05-08T16:07:58.506Z" }, + { url = "https://files.pythonhosted.org/packages/24/18/9e5374b617aba742a990581373cd6b68a2945d65cc588482749ef2e64467/scipy-1.15.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a769105537aa07a69468a0eefcd121be52006db61cdd8cac8a0e68980bbb723", size = 34809045, upload-time = "2025-05-08T16:08:03.929Z" }, + { url = "https://files.pythonhosted.org/packages/e1/fe/9c4361e7ba2927074360856db6135ef4904d505e9b3afbbcb073c4008328/scipy-1.15.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9db984639887e3dffb3928d118145ffe40eff2fa40cb241a306ec57c219ebbbb", size = 36703062, upload-time = "2025-05-08T16:08:09.558Z" }, + { url = "https://files.pythonhosted.org/packages/b7/8e/038ccfe29d272b30086b25a4960f757f97122cb2ec42e62b460d02fe98e9/scipy-1.15.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:40e54d5c7e7ebf1aa596c374c49fa3135f04648a0caabcb66c52884b943f02b4", size = 36393132, upload-time = "2025-05-08T16:08:15.34Z" }, + { url = "https://files.pythonhosted.org/packages/10/7e/5c12285452970be5bdbe8352c619250b97ebf7917d7a9a9e96b8a8140f17/scipy-1.15.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5e721fed53187e71d0ccf382b6bf977644c533e506c4d33c3fb24de89f5c3ed5", size = 38979503, upload-time = "2025-05-08T16:08:21.513Z" }, + { url = "https://files.pythonhosted.org/packages/81/06/0a5e5349474e1cbc5757975b21bd4fad0e72ebf138c5592f191646154e06/scipy-1.15.3-cp313-cp313t-win_amd64.whl", hash = "sha256:76ad1fb5f8752eabf0fa02e4cc0336b4e8f021e2d5f061ed37d6d264db35e3ca", size = 40308097, upload-time = "2025-05-08T16:08:27.627Z" }, +] + +[[package]] +name = "send2trash" +version = "1.8.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fd/3a/aec9b02217bb79b87bbc1a21bc6abc51e3d5dcf65c30487ac96c0908c722/Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf", size = 17394, upload-time = "2024-04-07T00:01:09.267Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/b0/4562db6223154aa4e22f939003cb92514c79f3d4dccca3444253fd17f902/Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9", size = 18072, upload-time = "2024-04-07T00:01:07.438Z" }, +] + +[[package]] +name = "setuptools" +version = "80.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/5d/3bf57dcd21979b887f014ea83c24ae194cfcd12b9e0fda66b957c69d1fca/setuptools-80.9.0.tar.gz", hash = "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c", size = 1319958, upload-time = "2025-05-27T00:56:51.443Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/dc/17031897dae0efacfea57dfd3a82fdd2a2aeb58e0ff71b77b87e44edc772/setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922", size = 1201486, upload-time = "2025-05-27T00:56:49.664Z" }, +] + +[[package]] +name = "setuptools-scm" +version = "8.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, + { name = "setuptools" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b9/19/7ae64b70b2429c48c3a7a4ed36f50f94687d3bfcd0ae2f152367b6410dff/setuptools_scm-8.3.1.tar.gz", hash = "sha256:3d555e92b75dacd037d32bafdf94f97af51ea29ae8c7b234cf94b7a5bd242a63", size = 78088, upload-time = "2025-04-23T11:53:19.739Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ab/ac/8f96ba9b4cfe3e4ea201f23f4f97165862395e9331a424ed325ae37024a8/setuptools_scm-8.3.1-py3-none-any.whl", hash = "sha256:332ca0d43791b818b841213e76b1971b7711a960761c5bea5fc5cdb5196fbce3", size = 43935, upload-time = "2025-04-23T11:53:17.922Z" }, +] + +[[package]] +name = "shapely" +version = "2.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ca/3c/2da625233f4e605155926566c0e7ea8dda361877f48e8b1655e53456f252/shapely-2.1.1.tar.gz", hash = "sha256:500621967f2ffe9642454808009044c21e5b35db89ce69f8a2042c2ffd0e2772", size = 315422, upload-time = "2025-05-19T11:04:41.265Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/82/fa/f18025c95b86116dd8f1ec58cab078bd59ab51456b448136ca27463be533/shapely-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d8ccc872a632acb7bdcb69e5e78df27213f7efd195882668ffba5405497337c6", size = 1825117, upload-time = "2025-05-19T11:03:43.547Z" }, + { url = "https://files.pythonhosted.org/packages/c7/65/46b519555ee9fb851234288be7c78be11e6260995281071d13abf2c313d0/shapely-2.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f24f2ecda1e6c091da64bcbef8dd121380948074875bd1b247b3d17e99407099", size = 1628541, upload-time = "2025-05-19T11:03:45.162Z" }, + { url = "https://files.pythonhosted.org/packages/29/51/0b158a261df94e33505eadfe737db9531f346dfa60850945ad25fd4162f1/shapely-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45112a5be0b745b49e50f8829ce490eb67fefb0cea8d4f8ac5764bfedaa83d2d", size = 2948453, upload-time = "2025-05-19T11:03:46.681Z" }, + { url = "https://files.pythonhosted.org/packages/a9/4f/6c9bb4bd7b1a14d7051641b9b479ad2a643d5cbc382bcf5bd52fd0896974/shapely-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c10ce6f11904d65e9bbb3e41e774903c944e20b3f0b282559885302f52f224a", size = 3057029, upload-time = "2025-05-19T11:03:48.346Z" }, + { url = "https://files.pythonhosted.org/packages/89/0b/ad1b0af491d753a83ea93138eee12a4597f763ae12727968d05934fe7c78/shapely-2.1.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:61168010dfe4e45f956ffbbaf080c88afce199ea81eb1f0ac43230065df320bd", size = 3894342, upload-time = "2025-05-19T11:03:49.602Z" }, + { url = "https://files.pythonhosted.org/packages/7d/96/73232c5de0b9fdf0ec7ddfc95c43aaf928740e87d9f168bff0e928d78c6d/shapely-2.1.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cacf067cdff741cd5c56a21c52f54ece4e4dad9d311130493a791997da4a886b", size = 4056766, upload-time = "2025-05-19T11:03:51.252Z" }, + { url = "https://files.pythonhosted.org/packages/43/cc/eec3c01f754f5b3e0c47574b198f9deb70465579ad0dad0e1cef2ce9e103/shapely-2.1.1-cp310-cp310-win32.whl", hash = "sha256:23b8772c3b815e7790fb2eab75a0b3951f435bc0fce7bb146cb064f17d35ab4f", size = 1523744, upload-time = "2025-05-19T11:03:52.624Z" }, + { url = "https://files.pythonhosted.org/packages/50/fc/a7187e6dadb10b91e66a9e715d28105cde6489e1017cce476876185a43da/shapely-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:2c7b2b6143abf4fa77851cef8ef690e03feade9a0d48acd6dc41d9e0e78d7ca6", size = 1703061, upload-time = "2025-05-19T11:03:54.695Z" }, + { url = "https://files.pythonhosted.org/packages/19/97/2df985b1e03f90c503796ad5ecd3d9ed305123b64d4ccb54616b30295b29/shapely-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:587a1aa72bc858fab9b8c20427b5f6027b7cbc92743b8e2c73b9de55aa71c7a7", size = 1819368, upload-time = "2025-05-19T11:03:55.937Z" }, + { url = "https://files.pythonhosted.org/packages/56/17/504518860370f0a28908b18864f43d72f03581e2b6680540ca668f07aa42/shapely-2.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9fa5c53b0791a4b998f9ad84aad456c988600757a96b0a05e14bba10cebaaaea", size = 1625362, upload-time = "2025-05-19T11:03:57.06Z" }, + { url = "https://files.pythonhosted.org/packages/36/a1/9677337d729b79fce1ef3296aac6b8ef4743419086f669e8a8070eff8f40/shapely-2.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aabecd038841ab5310d23495253f01c2a82a3aedae5ab9ca489be214aa458aa7", size = 2999005, upload-time = "2025-05-19T11:03:58.692Z" }, + { url = "https://files.pythonhosted.org/packages/a2/17/e09357274699c6e012bbb5a8ea14765a4d5860bb658df1931c9f90d53bd3/shapely-2.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:586f6aee1edec04e16227517a866df3e9a2e43c1f635efc32978bb3dc9c63753", size = 3108489, upload-time = "2025-05-19T11:04:00.059Z" }, + { url = "https://files.pythonhosted.org/packages/17/5d/93a6c37c4b4e9955ad40834f42b17260ca74ecf36df2e81bb14d12221b90/shapely-2.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b9878b9e37ad26c72aada8de0c9cfe418d9e2ff36992a1693b7f65a075b28647", size = 3945727, upload-time = "2025-05-19T11:04:01.786Z" }, + { url = "https://files.pythonhosted.org/packages/a3/1a/ad696648f16fd82dd6bfcca0b3b8fbafa7aacc13431c7fc4c9b49e481681/shapely-2.1.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d9a531c48f289ba355e37b134e98e28c557ff13965d4653a5228d0f42a09aed0", size = 4109311, upload-time = "2025-05-19T11:04:03.134Z" }, + { url = "https://files.pythonhosted.org/packages/d4/38/150dd245beab179ec0d4472bf6799bf18f21b1efbef59ac87de3377dbf1c/shapely-2.1.1-cp311-cp311-win32.whl", hash = "sha256:4866de2673a971820c75c0167b1f1cd8fb76f2d641101c23d3ca021ad0449bab", size = 1522982, upload-time = "2025-05-19T11:04:05.217Z" }, + { url = "https://files.pythonhosted.org/packages/93/5b/842022c00fbb051083c1c85430f3bb55565b7fd2d775f4f398c0ba8052ce/shapely-2.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:20a9d79958b3d6c70d8a886b250047ea32ff40489d7abb47d01498c704557a93", size = 1703872, upload-time = "2025-05-19T11:04:06.791Z" }, + { url = "https://files.pythonhosted.org/packages/fb/64/9544dc07dfe80a2d489060791300827c941c451e2910f7364b19607ea352/shapely-2.1.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2827365b58bf98efb60affc94a8e01c56dd1995a80aabe4b701465d86dcbba43", size = 1833021, upload-time = "2025-05-19T11:04:08.022Z" }, + { url = "https://files.pythonhosted.org/packages/07/aa/fb5f545e72e89b6a0f04a0effda144f5be956c9c312c7d4e00dfddbddbcf/shapely-2.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a9c551f7fa7f1e917af2347fe983f21f212863f1d04f08eece01e9c275903fad", size = 1643018, upload-time = "2025-05-19T11:04:09.343Z" }, + { url = "https://files.pythonhosted.org/packages/03/46/61e03edba81de729f09d880ce7ae5c1af873a0814206bbfb4402ab5c3388/shapely-2.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78dec4d4fbe7b1db8dc36de3031767e7ece5911fb7782bc9e95c5cdec58fb1e9", size = 2986417, upload-time = "2025-05-19T11:04:10.56Z" }, + { url = "https://files.pythonhosted.org/packages/1f/1e/83ec268ab8254a446b4178b45616ab5822d7b9d2b7eb6e27cf0b82f45601/shapely-2.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:872d3c0a7b8b37da0e23d80496ec5973c4692920b90de9f502b5beb994bbaaef", size = 3098224, upload-time = "2025-05-19T11:04:11.903Z" }, + { url = "https://files.pythonhosted.org/packages/f1/44/0c21e7717c243e067c9ef8fa9126de24239f8345a5bba9280f7bb9935959/shapely-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2e2b9125ebfbc28ecf5353511de62f75a8515ae9470521c9a693e4bb9fbe0cf1", size = 3925982, upload-time = "2025-05-19T11:04:13.224Z" }, + { url = "https://files.pythonhosted.org/packages/15/50/d3b4e15fefc103a0eb13d83bad5f65cd6e07a5d8b2ae920e767932a247d1/shapely-2.1.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4b96cea171b3d7f6786976a0520f178c42792897653ecca0c5422fb1e6946e6d", size = 4089122, upload-time = "2025-05-19T11:04:14.477Z" }, + { url = "https://files.pythonhosted.org/packages/bd/05/9a68f27fc6110baeedeeebc14fd86e73fa38738c5b741302408fb6355577/shapely-2.1.1-cp312-cp312-win32.whl", hash = "sha256:39dca52201e02996df02e447f729da97cfb6ff41a03cb50f5547f19d02905af8", size = 1522437, upload-time = "2025-05-19T11:04:16.203Z" }, + { url = "https://files.pythonhosted.org/packages/bc/e9/a4560e12b9338842a1f82c9016d2543eaa084fce30a1ca11991143086b57/shapely-2.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:13d643256f81d55a50013eff6321142781cf777eb6a9e207c2c9e6315ba6044a", size = 1703479, upload-time = "2025-05-19T11:04:18.497Z" }, + { url = "https://files.pythonhosted.org/packages/71/8e/2bc836437f4b84d62efc1faddce0d4e023a5d990bbddd3c78b2004ebc246/shapely-2.1.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:3004a644d9e89e26c20286d5fdc10f41b1744c48ce910bd1867fdff963fe6c48", size = 1832107, upload-time = "2025-05-19T11:04:19.736Z" }, + { url = "https://files.pythonhosted.org/packages/12/a2/12c7cae5b62d5d851c2db836eadd0986f63918a91976495861f7c492f4a9/shapely-2.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1415146fa12d80a47d13cfad5310b3c8b9c2aa8c14a0c845c9d3d75e77cb54f6", size = 1642355, upload-time = "2025-05-19T11:04:21.035Z" }, + { url = "https://files.pythonhosted.org/packages/5b/7e/6d28b43d53fea56de69c744e34c2b999ed4042f7a811dc1bceb876071c95/shapely-2.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21fcab88b7520820ec16d09d6bea68652ca13993c84dffc6129dc3607c95594c", size = 2968871, upload-time = "2025-05-19T11:04:22.167Z" }, + { url = "https://files.pythonhosted.org/packages/dd/87/1017c31e52370b2b79e4d29e07cbb590ab9e5e58cf7e2bdfe363765d6251/shapely-2.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5ce6a5cc52c974b291237a96c08c5592e50f066871704fb5b12be2639d9026a", size = 3080830, upload-time = "2025-05-19T11:04:23.997Z" }, + { url = "https://files.pythonhosted.org/packages/1d/fe/f4a03d81abd96a6ce31c49cd8aaba970eaaa98e191bd1e4d43041e57ae5a/shapely-2.1.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:04e4c12a45a1d70aeb266618d8cf81a2de9c4df511b63e105b90bfdfb52146de", size = 3908961, upload-time = "2025-05-19T11:04:25.702Z" }, + { url = "https://files.pythonhosted.org/packages/ef/59/7605289a95a6844056a2017ab36d9b0cb9d6a3c3b5317c1f968c193031c9/shapely-2.1.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6ca74d851ca5264aae16c2b47e96735579686cb69fa93c4078070a0ec845b8d8", size = 4079623, upload-time = "2025-05-19T11:04:27.171Z" }, + { url = "https://files.pythonhosted.org/packages/bc/4d/9fea036eff2ef4059d30247128b2d67aaa5f0b25e9fc27e1d15cc1b84704/shapely-2.1.1-cp313-cp313-win32.whl", hash = "sha256:fd9130501bf42ffb7e0695b9ea17a27ae8ce68d50b56b6941c7f9b3d3453bc52", size = 1521916, upload-time = "2025-05-19T11:04:28.405Z" }, + { url = "https://files.pythonhosted.org/packages/12/d9/6d13b8957a17c95794f0c4dfb65ecd0957e6c7131a56ce18d135c1107a52/shapely-2.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:ab8d878687b438a2f4c138ed1a80941c6ab0029e0f4c785ecfe114413b498a97", size = 1702746, upload-time = "2025-05-19T11:04:29.643Z" }, + { url = "https://files.pythonhosted.org/packages/60/36/b1452e3e7f35f5f6454d96f3be6e2bb87082720ff6c9437ecc215fa79be0/shapely-2.1.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0c062384316a47f776305ed2fa22182717508ffdeb4a56d0ff4087a77b2a0f6d", size = 1833482, upload-time = "2025-05-19T11:04:30.852Z" }, + { url = "https://files.pythonhosted.org/packages/ce/ca/8e6f59be0718893eb3e478141285796a923636dc8f086f83e5b0ec0036d0/shapely-2.1.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:4ecf6c196b896e8f1360cc219ed4eee1c1e5f5883e505d449f263bd053fb8c05", size = 1642256, upload-time = "2025-05-19T11:04:32.068Z" }, + { url = "https://files.pythonhosted.org/packages/ab/78/0053aea449bb1d4503999525fec6232f049abcdc8df60d290416110de943/shapely-2.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb00070b4c4860f6743c600285109c273cca5241e970ad56bb87bef0be1ea3a0", size = 3016614, upload-time = "2025-05-19T11:04:33.7Z" }, + { url = "https://files.pythonhosted.org/packages/ee/53/36f1b1de1dfafd1b457dcbafa785b298ce1b8a3e7026b79619e708a245d5/shapely-2.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d14a9afa5fa980fbe7bf63706fdfb8ff588f638f145a1d9dbc18374b5b7de913", size = 3093542, upload-time = "2025-05-19T11:04:34.952Z" }, + { url = "https://files.pythonhosted.org/packages/b9/bf/0619f37ceec6b924d84427c88835b61f27f43560239936ff88915c37da19/shapely-2.1.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b640e390dabde790e3fb947198b466e63223e0a9ccd787da5f07bcb14756c28d", size = 3945961, upload-time = "2025-05-19T11:04:36.32Z" }, + { url = "https://files.pythonhosted.org/packages/93/c9/20ca4afeb572763b07a7997f00854cb9499df6af85929e93012b189d8917/shapely-2.1.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:69e08bf9697c1b73ec6aa70437db922bafcea7baca131c90c26d59491a9760f9", size = 4089514, upload-time = "2025-05-19T11:04:37.683Z" }, + { url = "https://files.pythonhosted.org/packages/33/6a/27036a5a560b80012a544366bceafd491e8abb94a8db14047b5346b5a749/shapely-2.1.1-cp313-cp313t-win32.whl", hash = "sha256:ef2d09d5a964cc90c2c18b03566cf918a61c248596998a0301d5b632beadb9db", size = 1540607, upload-time = "2025-05-19T11:04:38.925Z" }, + { url = "https://files.pythonhosted.org/packages/ea/f1/5e9b3ba5c7aa7ebfaf269657e728067d16a7c99401c7973ddf5f0cf121bd/shapely-2.1.1-cp313-cp313t-win_amd64.whl", hash = "sha256:8cb8f17c377260452e9d7720eeaf59082c5f8ea48cf104524d953e5d36d4bdb7", size = 1723061, upload-time = "2025-05-19T11:04:40.082Z" }, +] + +[[package]] +name = "sharrow" +version = "2.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "dask" }, + { name = "filelock" }, + { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "networkx", version = "3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "numba" }, + { name = "numexpr" }, + { name = "numpy" }, + { name = "pandas", version = "2.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, + { name = "pandas", version = "2.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, + { name = "pyarrow" }, + { name = "xarray" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3d/ad/9fb609c6cfdd39fb976024fccd2dfa663a5310a4df1a392a80d21605b4cb/sharrow-2.14.0.tar.gz", hash = "sha256:d0d2afadd0b6a9f6c0b3ef6e602262c5f6c31bf33090865db555bae566217df4", size = 2138901, upload-time = "2025-05-29T14:17:12.878Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/75/b9/b460fbaf2213f1406d1b5537f50852671e203e1ad92b06d5048f5a132471/sharrow-2.14.0-py3-none-any.whl", hash = "sha256:5879481139297708234f796158b9c81333d01d024aab078452ccd8753de88167", size = 2224745, upload-time = "2025-05-29T14:17:11.543Z" }, +] + +[[package]] +name = "simwrapper" +version = "1.8.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ad/be/2cdddc9db3f2a413cfa6c7e9094ecde5490477201c62d83aeaf7b1750bf4/simwrapper-1.8.5.tar.gz", hash = "sha256:3b6bc05214e48ac1c70128781bc1e7808cf7b53648c0ad4cf648aad2ec13deb1", size = 11626336, upload-time = "2022-10-25T09:45:18.779Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/39/03/370fd6cb1f1ac01859628d8d0a0f9105b70199976c7904e9e99c420fbb48/simwrapper-1.8.5-py3-none-any.whl", hash = "sha256:f0caacac5119af009ab8cdec7175eefe7d99d86b968de0abf3cd0de2053f6f26", size = 11735795, upload-time = "2022-10-25T09:45:09.104Z" }, +] + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, +] + +[[package]] +name = "smmap" +version = "5.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/44/cd/a040c4b3119bbe532e5b0732286f805445375489fceaec1f48306068ee3b/smmap-5.0.2.tar.gz", hash = "sha256:26ea65a03958fa0c8a1c7e8c7a58fdc77221b8910f6be2131affade476898ad5", size = 22329, upload-time = "2025-01-02T07:14:40.909Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/be/d09147ad1ec7934636ad912901c5fd7667e1c858e19d355237db0d0cd5e4/smmap-5.0.2-py3-none-any.whl", hash = "sha256:b30115f0def7d7531d22a0fb6502488d879e75b260a9db4d0819cfb25403af5e", size = 24303, upload-time = "2025-01-02T07:14:38.724Z" }, +] + +[[package]] +name = "snakeviz" +version = "2.2.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "tornado" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/04/06/82f56563b16d33c2586ac2615a3034a83a4ff1969b84c8d79339e5d07d73/snakeviz-2.2.2.tar.gz", hash = "sha256:08028c6f8e34a032ff14757a38424770abb8662fb2818985aeea0d9bc13a7d83", size = 182039, upload-time = "2024-11-09T22:03:58.99Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cd/f7/83b00cdf4f114f10750a18b64c27dc34636d0ac990ccac98282f5c0fbb43/snakeviz-2.2.2-py3-none-any.whl", hash = "sha256:77e7b9c82f6152edc330040319b97612351cd9b48c706434c535c2df31d10ac5", size = 183477, upload-time = "2024-11-09T22:03:57.049Z" }, +] + +[[package]] +name = "sniffio" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372, upload-time = "2024-02-25T23:20:04.057Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload-time = "2024-02-25T23:20:01.196Z" }, +] + +[[package]] +name = "snowballstemmer" +version = "3.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/75/a7/9810d872919697c9d01295633f5d574fb416d47e535f258272ca1f01f447/snowballstemmer-3.0.1.tar.gz", hash = "sha256:6d5eeeec8e9f84d4d56b847692bacf79bc2c8e90c7f80ca4444ff8b6f2e52895", size = 105575, upload-time = "2025-05-09T16:34:51.843Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/78/3565d011c61f5a43488987ee32b6f3f656e7f107ac2782dd57bdd7d91d9a/snowballstemmer-3.0.1-py3-none-any.whl", hash = "sha256:6cd7b3897da8d6c9ffb968a6781fa6532dce9c3618a4b127d920dab764a19064", size = 103274, upload-time = "2025-05-09T16:34:50.371Z" }, +] + +[[package]] +name = "soupsieve" +version = "2.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418, upload-time = "2025-04-20T18:50:08.518Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677, upload-time = "2025-04-20T18:50:07.196Z" }, +] + +[[package]] +name = "sparse" +version = "0.17.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numba" }, + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/63/74/5c674277fc3d61bd1863d233a8e1f7ddf35cb1adeeaf9973888629e7a9b1/sparse-0.17.0.tar.gz", hash = "sha256:6b1ad51a810c5be40b6f95e28513ec810fe1c785923bd83b2e4839a751df4bf7", size = 642387, upload-time = "2025-05-20T08:17:03.256Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8d/fd/42a1720542199ae6ff0f9c37bbd55dd3033ddd7bbe00d68cde09d6824887/sparse-0.17.0-py2.py3-none-any.whl", hash = "sha256:1922d1d97f692b1061c4f03a1dd6ee21850aedc88e171aa845715f5069952f18", size = 259370, upload-time = "2025-05-20T08:17:00.874Z" }, +] + +[[package]] +name = "sphinx" +version = "6.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "alabaster" }, + { name = "babel" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "docutils" }, + { name = "imagesize" }, + { name = "jinja2" }, + { name = "packaging" }, + { name = "pygments" }, + { name = "requests" }, + { name = "snowballstemmer" }, + { name = "sphinxcontrib-applehelp" }, + { name = "sphinxcontrib-devhelp" }, + { name = "sphinxcontrib-htmlhelp" }, + { name = "sphinxcontrib-jsmath" }, + { name = "sphinxcontrib-qthelp" }, + { name = "sphinxcontrib-serializinghtml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f6/17/ec54f1d8980bd8ec2bd4ca0e77ba6086d3db5aee718304593ba83f864125/Sphinx-6.1.0.tar.gz", hash = "sha256:b0fd0a1993733492572bbd429b5ec081e17c082b5b5168ffae50524c3a90fd3c", size = 6662509, upload-time = "2023-01-05T12:29:07.131Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5e/dd/1bb2e6dbdcb4ab4eba960a0073c164a0239e3b2cab191ca25a9eefa7e9e7/sphinx-6.1.0-py3-none-any.whl", hash = "sha256:7569d01418166c079560751038ab1c0ddca3b15c74787cc60b16d7f11a4bf35a", size = 3027606, upload-time = "2023-01-05T12:29:03.656Z" }, +] + +[[package]] +name = "sphinx-argparse" +version = "0.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "sphinx" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/82/0b/d98f799d4283e8b6c403fd8102acf2b552ad78e947b6899a1344521e9d86/sphinx_argparse-0.4.0.tar.gz", hash = "sha256:e0f34184eb56f12face774fbc87b880abdb9017a0998d1ec559b267e9697e449", size = 15020, upload-time = "2022-11-11T22:43:23.485Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/21/98/d32f45b19b60e52b4ddc714dee139a92c6ea8fa9115f994884d321c3454d/sphinx_argparse-0.4.0-py3-none-any.whl", hash = "sha256:73bee01f7276fae2bf621ccfe4d167af7306e7288e3482005405d9f826f9b037", size = 12625, upload-time = "2022-11-11T22:43:21.964Z" }, +] + +[[package]] +name = "sphinx-autosummary-accessors" +version = "2025.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, + { name = "sphinx" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f7/14/3f81ab3976f386bdf8ac96fb9c89adeaafa910216fa21b7d6be714e140f7/sphinx_autosummary_accessors-2025.3.1.tar.gz", hash = "sha256:41292dffe742703abe987f66c62e109d832490ff74d273d6512503e6066e456f", size = 17778, upload-time = "2025-03-10T15:42:44.024Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/ac/12b1a7b9486dfcfd9c4c20a4ea5e2e4584681af8fe2f8898a716c2c51edb/sphinx_autosummary_accessors-2025.3.1-py3-none-any.whl", hash = "sha256:e90d140dce731162f70f2a46215e26dd46c57590e9f08bfff2e17cac45ce3a9f", size = 7820, upload-time = "2025-03-10T15:42:42.481Z" }, +] + +[[package]] +name = "sphinx-book-theme" +version = "1.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pydata-sphinx-theme" }, + { name = "sphinx" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/89/69/61dfa3b3851610b5f45960737bd99f8c5b2d70ba73f9ac84a527e0c564ae/sphinx_book_theme-1.1.3.tar.gz", hash = "sha256:1f25483b1846cb3d353a6bc61b3b45b031f4acf845665d7da90e01ae0aef5b4d", size = 434230, upload-time = "2024-06-12T14:11:22.128Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2b/80/90574e2e82c955b9c6f6b77f7badb2cf2ef4ef77599e4343cced2d098681/sphinx_book_theme-1.1.3-py3-none-any.whl", hash = "sha256:a554a9a7ac3881979a87a2b10f633aa2a5706e72218a10f71be38b3c9e831ae9", size = 430129, upload-time = "2024-06-12T14:11:20.002Z" }, +] + +[[package]] +name = "sphinx-comments" +version = "0.0.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "sphinx" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c0/75/5bbf29e83eaf79843180cf424d0d550bda14a1792ca51dcf79daa065ba93/sphinx-comments-0.0.3.tar.gz", hash = "sha256:00170afff27019fad08e421da1ae49c681831fb2759786f07c826e89ac94cf21", size = 7960, upload-time = "2020-08-12T00:07:31.183Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/97/a5c39f619375d4f81d5422377fb027075898efa6b6202c1ccf1e5bb38a32/sphinx_comments-0.0.3-py3-none-any.whl", hash = "sha256:1e879b4e9bfa641467f83e3441ac4629225fc57c29995177d043252530c21d00", size = 4591, upload-time = "2020-08-12T00:07:30.297Z" }, +] + +[[package]] +name = "sphinx-copybutton" +version = "0.5.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "sphinx" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/2b/a964715e7f5295f77509e59309959f4125122d648f86b4fe7d70ca1d882c/sphinx-copybutton-0.5.2.tar.gz", hash = "sha256:4cf17c82fb9646d1bc9ca92ac280813a3b605d8c421225fd9913154103ee1fbd", size = 23039, upload-time = "2023-04-14T08:10:22.998Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/48/1ea60e74949eecb12cdd6ac43987f9fd331156388dcc2319b45e2ebb81bf/sphinx_copybutton-0.5.2-py3-none-any.whl", hash = "sha256:fb543fd386d917746c9a2c50360c7905b605726b9355cd26e9974857afeae06e", size = 13343, upload-time = "2023-04-14T08:10:20.844Z" }, +] + +[[package]] +name = "sphinx-design" +version = "0.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "sphinx" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2b/69/b34e0cb5336f09c6866d53b4a19d76c227cdec1bbc7ac4de63ca7d58c9c7/sphinx_design-0.6.1.tar.gz", hash = "sha256:b44eea3719386d04d765c1a8257caca2b3e6f8421d7b3a5e742c0fd45f84e632", size = 2193689, upload-time = "2024-08-02T13:48:44.277Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/43/65c0acbd8cc6f50195a3a1fc195c404988b15c67090e73c7a41a9f57d6bd/sphinx_design-0.6.1-py3-none-any.whl", hash = "sha256:b11f37db1a802a183d61b159d9a202314d4d2fe29c163437001324fe2f19549c", size = 2215338, upload-time = "2024-08-02T13:48:42.106Z" }, +] + +[[package]] +name = "sphinx-external-toc" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "pyyaml" }, + { name = "sphinx" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d7/b3/e900bcbb9d0071b928991e00ea70b3e6c6dd774dcf906c043c500e61584c/sphinx_external_toc-1.0.1.tar.gz", hash = "sha256:a7d2c63cc47ec688546443b28bc4ef466121827ef3dc7bb509de354bad4ea2e0", size = 32755, upload-time = "2023-12-12T10:26:53.951Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5f/9a/cb412957424012869b43a5aa3d95ccebcac737dafc5a545ce15bb8037f6e/sphinx_external_toc-1.0.1-py3-none-any.whl", hash = "sha256:d9e02d50731dee9697c1887e4f8b361e7b86d38241f0e66bd5a9f4096779646f", size = 26677, upload-time = "2023-12-12T10:26:52.017Z" }, +] + +[[package]] +name = "sphinx-jupyterbook-latex" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, + { name = "sphinx" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/80/29/18a1fc30e9315e72f068637079169525069a7c0b2fbe51cf689af0576214/sphinx_jupyterbook_latex-1.0.0.tar.gz", hash = "sha256:f54c6674c13f1616f9a93443e98b9b5353f9fdda8e39b6ec552ccf0b3e5ffb62", size = 11945, upload-time = "2023-12-11T15:37:25.034Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/70/1f/1d4ecaf58b17fe61497644655f40b04d84a88348e41a6f0c6392394d95e4/sphinx_jupyterbook_latex-1.0.0-py3-none-any.whl", hash = "sha256:e0cd3e9e1c5af69136434e21a533343fdf013475c410a414d5b7b4922b4f3891", size = 13319, upload-time = "2023-12-11T15:37:23.25Z" }, +] + +[[package]] +name = "sphinx-multitoc-numbering" +version = "0.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "sphinx" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/37/1e/577bae038372885ebc34bd8c0f290295785a0250cac6528eb6d50e4b92d5/sphinx-multitoc-numbering-0.1.3.tar.gz", hash = "sha256:c9607671ac511236fa5d61a7491c1031e700e8d498c9d2418e6c61d1251209ae", size = 4542, upload-time = "2021-03-15T12:01:43.758Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/9f/902f2030674cd9473fdbe5a2c2dec2618c27ec853484c35f82cf8df40ece/sphinx_multitoc_numbering-0.1.3-py3-none-any.whl", hash = "sha256:33d2e707a9b2b8ad636b3d4302e658a008025106fe0474046c651144c26d8514", size = 4616, upload-time = "2021-03-15T12:01:42.419Z" }, +] + +[[package]] +name = "sphinx-remove-toctrees" +version = "1.0.0.post1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "sphinx" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9a/50/e3153912d4382bb434b3679a42eb96966f8b741789004412d1ceecbeee30/sphinx_remove_toctrees-1.0.0.post1.tar.gz", hash = "sha256:4808d1edf151c06eff6d2c3922ec7ebc9fd3aa1762de1b2e1674a37f5ac9ce2d", size = 8473, upload-time = "2024-03-22T11:00:03.727Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bc/19/59dadac9ee5e8fa32b0d735b5488a569de36892a54e0b9927bea2b22f605/sphinx_remove_toctrees-1.0.0.post1-py3-none-any.whl", hash = "sha256:22a96579d7899cc034de194195916717a54a122cc101f16ec79c996fe0baa2be", size = 5200, upload-time = "2024-03-22T11:00:01.507Z" }, +] + +[[package]] +name = "sphinx-rtd-theme" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "docutils" }, + { name = "sphinx" }, + { name = "sphinxcontrib-jquery" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/35/b4/40faec6790d4b08a6ef878feddc6ad11c3872b75f52273f1418c39f67cd6/sphinx_rtd_theme-1.2.0.tar.gz", hash = "sha256:a0d8bd1a2ed52e0b338cbe19c4b2eef3c5e7a048769753dac6a9f059c7b641b8", size = 2784826, upload-time = "2023-02-07T21:50:03.295Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/46/c167351699e5dc126798385cf37c26ba9df7a26c6f8855661d9f966d6ced/sphinx_rtd_theme-1.2.0-py2.py3-none-any.whl", hash = "sha256:f823f7e71890abe0ac6aaa6013361ea2696fc8d3e1fa798f463e82bdb77eeff2", size = 2824718, upload-time = "2023-02-07T21:50:00.495Z" }, +] + +[[package]] +name = "sphinx-thebe" +version = "0.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "sphinx" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/da/fd/926ba4af1eb2708b1ac0fa4376e4bfb11d9a32b2a00e3614137a569c1ddf/sphinx_thebe-0.3.1.tar.gz", hash = "sha256:576047f45560e82f64aa5f15200b1eb094dcfe1c5b8f531a8a65bd208e25a493", size = 20789, upload-time = "2024-02-07T13:31:57.002Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ca/7c/a53bdb465fd364bc3d255d96d5d70e6ba5183cfb4e45b8aa91c59b099124/sphinx_thebe-0.3.1-py3-none-any.whl", hash = "sha256:e7e7edee9f0d601c76bc70156c471e114939484b111dd8e74fe47ac88baffc52", size = 9030, upload-time = "2024-02-07T13:31:55.286Z" }, +] + +[[package]] +name = "sphinx-togglebutton" +version = "0.3.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "docutils" }, + { name = "setuptools" }, + { name = "sphinx" }, + { name = "wheel" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f0/df/d151dfbbe588116e450ca7e898750cb218dca6b2e557ced8de6f9bd7242b/sphinx-togglebutton-0.3.2.tar.gz", hash = "sha256:ab0c8b366427b01e4c89802d5d078472c427fa6e9d12d521c34fa0442559dc7a", size = 8324, upload-time = "2022-07-15T12:08:50.286Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/18/267ce39f29d26cdc7177231428ba823fe5ca94db8c56d1bed69033b364c8/sphinx_togglebutton-0.3.2-py3-none-any.whl", hash = "sha256:9647ba7874b7d1e2d43413d8497153a85edc6ac95a3fea9a75ef9c1e08aaae2b", size = 8249, upload-time = "2022-07-15T12:08:48.8Z" }, +] + +[[package]] +name = "sphinxcontrib-applehelp" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ba/6e/b837e84a1a704953c62ef8776d45c3e8d759876b4a84fe14eba2859106fe/sphinxcontrib_applehelp-2.0.0.tar.gz", hash = "sha256:2f29ef331735ce958efa4734873f084941970894c6090408b079c61b2e1c06d1", size = 20053, upload-time = "2024-07-29T01:09:00.465Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5d/85/9ebeae2f76e9e77b952f4b274c27238156eae7979c5421fba91a28f4970d/sphinxcontrib_applehelp-2.0.0-py3-none-any.whl", hash = "sha256:4cd3f0ec4ac5dd9c17ec65e9ab272c9b867ea77425228e68ecf08d6b28ddbdb5", size = 119300, upload-time = "2024-07-29T01:08:58.99Z" }, +] + +[[package]] +name = "sphinxcontrib-bibtex" +version = "2.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "docutils" }, + { name = "pybtex" }, + { name = "pybtex-docutils" }, + { name = "sphinx" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/54/94fbcd5eb0532eaa91580d09795c4b6c562b72d5638c2ed5b5cc31d2b1f8/sphinxcontrib-bibtex-2.5.0.tar.gz", hash = "sha256:71b42e5db0e2e284f243875326bf9936aa9a763282277d75048826fef5b00eaa", size = 113310, upload-time = "2022-08-22T13:16:46.025Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b2/17/3be04de2ed752996654895558db01a30d64759b2c7120e7692402b8d4e19/sphinxcontrib_bibtex-2.5.0-py3-none-any.whl", hash = "sha256:748f726eaca6efff7731012103417ef130ecdcc09501b4d0c54283bf5f059f76", size = 39752, upload-time = "2022-08-22T13:16:43.376Z" }, +] + +[[package]] +name = "sphinxcontrib-devhelp" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/d2/5beee64d3e4e747f316bae86b55943f51e82bb86ecd325883ef65741e7da/sphinxcontrib_devhelp-2.0.0.tar.gz", hash = "sha256:411f5d96d445d1d73bb5d52133377b4248ec79db5c793ce7dbe59e074b4dd1ad", size = 12967, upload-time = "2024-07-29T01:09:23.417Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl", hash = "sha256:aefb8b83854e4b0998877524d1029fd3e6879210422ee3780459e28a1f03a8a2", size = 82530, upload-time = "2024-07-29T01:09:21.945Z" }, +] + +[[package]] +name = "sphinxcontrib-htmlhelp" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/93/983afd9aa001e5201eab16b5a444ed5b9b0a7a010541e0ddfbbfd0b2470c/sphinxcontrib_htmlhelp-2.1.0.tar.gz", hash = "sha256:c9e2916ace8aad64cc13a0d233ee22317f2b9025b9cf3295249fa985cc7082e9", size = 22617, upload-time = "2024-07-29T01:09:37.889Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0a/7b/18a8c0bcec9182c05a0b3ec2a776bba4ead82750a55ff798e8d406dae604/sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl", hash = "sha256:166759820b47002d22914d64a075ce08f4c46818e17cfc9470a9786b759b19f8", size = 98705, upload-time = "2024-07-29T01:09:36.407Z" }, +] + +[[package]] +name = "sphinxcontrib-jquery" +version = "4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "sphinx" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/de/f3/aa67467e051df70a6330fe7770894b3e4f09436dea6881ae0b4f3d87cad8/sphinxcontrib-jquery-4.1.tar.gz", hash = "sha256:1620739f04e36a2c779f1a131a2dfd49b2fd07351bf1968ced074365933abc7a", size = 122331, upload-time = "2023-03-14T15:01:01.944Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/85/749bd22d1a68db7291c89e2ebca53f4306c3f205853cf31e9de279034c3c/sphinxcontrib_jquery-4.1-py2.py3-none-any.whl", hash = "sha256:f936030d7d0147dd026a4f2b5a57343d233f1fc7b363f68b3d4f1cb0993878ae", size = 121104, upload-time = "2023-03-14T15:01:00.356Z" }, +] + +[[package]] +name = "sphinxcontrib-jsmath" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/e8/9ed3830aeed71f17c026a07a5097edcf44b692850ef215b161b8ad875729/sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8", size = 5787, upload-time = "2019-01-21T16:10:16.347Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/42/4c8646762ee83602e3fb3fbe774c2fac12f317deb0b5dbeeedd2d3ba4b77/sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178", size = 5071, upload-time = "2019-01-21T16:10:14.333Z" }, +] + +[[package]] +name = "sphinxcontrib-qthelp" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/68/bc/9104308fc285eb3e0b31b67688235db556cd5b0ef31d96f30e45f2e51cae/sphinxcontrib_qthelp-2.0.0.tar.gz", hash = "sha256:4fe7d0ac8fc171045be623aba3e2a8f613f8682731f9153bb2e40ece16b9bbab", size = 17165, upload-time = "2024-07-29T01:09:56.435Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl", hash = "sha256:b18a828cdba941ccd6ee8445dbe72ffa3ef8cbe7505d8cd1fa0d42d3f2d5f3eb", size = 88743, upload-time = "2024-07-29T01:09:54.885Z" }, +] + +[[package]] +name = "sphinxcontrib-serializinghtml" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3b/44/6716b257b0aa6bfd51a1b31665d1c205fb12cb5ad56de752dfa15657de2f/sphinxcontrib_serializinghtml-2.0.0.tar.gz", hash = "sha256:e9d912827f872c029017a53f0ef2180b327c3f7fd23c87229f7a8e8b70031d4d", size = 16080, upload-time = "2024-07-29T01:10:09.332Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl", hash = "sha256:6e2cb0eef194e10c27ec0023bfeb25badbbb5868244cf5bc5bdc04e4464bf331", size = 92072, upload-time = "2024-07-29T01:10:08.203Z" }, +] + +[[package]] +name = "sqlalchemy" +version = "2.0.41" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "greenlet", marker = "(python_full_version < '3.14' and platform_machine == 'AMD64') or (python_full_version < '3.14' and platform_machine == 'WIN32') or (python_full_version < '3.14' and platform_machine == 'aarch64') or (python_full_version < '3.14' and platform_machine == 'amd64') or (python_full_version < '3.14' and platform_machine == 'ppc64le') or (python_full_version < '3.14' and platform_machine == 'win32') or (python_full_version < '3.14' and platform_machine == 'x86_64')" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/63/66/45b165c595ec89aa7dcc2c1cd222ab269bc753f1fc7a1e68f8481bd957bf/sqlalchemy-2.0.41.tar.gz", hash = "sha256:edba70118c4be3c2b1f90754d308d0b79c6fe2c0fdc52d8ddf603916f83f4db9", size = 9689424, upload-time = "2025-05-14T17:10:32.339Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/12/d7c445b1940276a828efce7331cb0cb09d6e5f049651db22f4ebb0922b77/sqlalchemy-2.0.41-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b1f09b6821406ea1f94053f346f28f8215e293344209129a9c0fcc3578598d7b", size = 2117967, upload-time = "2025-05-14T17:48:15.841Z" }, + { url = "https://files.pythonhosted.org/packages/6f/b8/cb90f23157e28946b27eb01ef401af80a1fab7553762e87df51507eaed61/sqlalchemy-2.0.41-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1936af879e3db023601196a1684d28e12f19ccf93af01bf3280a3262c4b6b4e5", size = 2107583, upload-time = "2025-05-14T17:48:18.688Z" }, + { url = "https://files.pythonhosted.org/packages/9e/c2/eef84283a1c8164a207d898e063edf193d36a24fb6a5bb3ce0634b92a1e8/sqlalchemy-2.0.41-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2ac41acfc8d965fb0c464eb8f44995770239668956dc4cdf502d1b1ffe0d747", size = 3186025, upload-time = "2025-05-14T17:51:51.226Z" }, + { url = "https://files.pythonhosted.org/packages/bd/72/49d52bd3c5e63a1d458fd6d289a1523a8015adedbddf2c07408ff556e772/sqlalchemy-2.0.41-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81c24e0c0fde47a9723c81d5806569cddef103aebbf79dbc9fcbb617153dea30", size = 3186259, upload-time = "2025-05-14T17:55:22.526Z" }, + { url = "https://files.pythonhosted.org/packages/4f/9e/e3ffc37d29a3679a50b6bbbba94b115f90e565a2b4545abb17924b94c52d/sqlalchemy-2.0.41-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:23a8825495d8b195c4aa9ff1c430c28f2c821e8c5e2d98089228af887e5d7e29", size = 3126803, upload-time = "2025-05-14T17:51:53.277Z" }, + { url = "https://files.pythonhosted.org/packages/8a/76/56b21e363f6039978ae0b72690237b38383e4657281285a09456f313dd77/sqlalchemy-2.0.41-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:60c578c45c949f909a4026b7807044e7e564adf793537fc762b2489d522f3d11", size = 3148566, upload-time = "2025-05-14T17:55:24.398Z" }, + { url = "https://files.pythonhosted.org/packages/3b/92/11b8e1b69bf191bc69e300a99badbbb5f2f1102f2b08b39d9eee2e21f565/sqlalchemy-2.0.41-cp310-cp310-win32.whl", hash = "sha256:118c16cd3f1b00c76d69343e38602006c9cfb9998fa4f798606d28d63f23beda", size = 2086696, upload-time = "2025-05-14T17:55:59.136Z" }, + { url = "https://files.pythonhosted.org/packages/5c/88/2d706c9cc4502654860f4576cd54f7db70487b66c3b619ba98e0be1a4642/sqlalchemy-2.0.41-cp310-cp310-win_amd64.whl", hash = "sha256:7492967c3386df69f80cf67efd665c0f667cee67032090fe01d7d74b0e19bb08", size = 2110200, upload-time = "2025-05-14T17:56:00.757Z" }, + { url = "https://files.pythonhosted.org/packages/37/4e/b00e3ffae32b74b5180e15d2ab4040531ee1bef4c19755fe7926622dc958/sqlalchemy-2.0.41-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6375cd674fe82d7aa9816d1cb96ec592bac1726c11e0cafbf40eeee9a4516b5f", size = 2121232, upload-time = "2025-05-14T17:48:20.444Z" }, + { url = "https://files.pythonhosted.org/packages/ef/30/6547ebb10875302074a37e1970a5dce7985240665778cfdee2323709f749/sqlalchemy-2.0.41-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9f8c9fdd15a55d9465e590a402f42082705d66b05afc3ffd2d2eb3c6ba919560", size = 2110897, upload-time = "2025-05-14T17:48:21.634Z" }, + { url = "https://files.pythonhosted.org/packages/9e/21/59df2b41b0f6c62da55cd64798232d7349a9378befa7f1bb18cf1dfd510a/sqlalchemy-2.0.41-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32f9dc8c44acdee06c8fc6440db9eae8b4af8b01e4b1aee7bdd7241c22edff4f", size = 3273313, upload-time = "2025-05-14T17:51:56.205Z" }, + { url = "https://files.pythonhosted.org/packages/62/e4/b9a7a0e5c6f79d49bcd6efb6e90d7536dc604dab64582a9dec220dab54b6/sqlalchemy-2.0.41-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90c11ceb9a1f482c752a71f203a81858625d8df5746d787a4786bca4ffdf71c6", size = 3273807, upload-time = "2025-05-14T17:55:26.928Z" }, + { url = "https://files.pythonhosted.org/packages/39/d8/79f2427251b44ddee18676c04eab038d043cff0e764d2d8bb08261d6135d/sqlalchemy-2.0.41-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:911cc493ebd60de5f285bcae0491a60b4f2a9f0f5c270edd1c4dbaef7a38fc04", size = 3209632, upload-time = "2025-05-14T17:51:59.384Z" }, + { url = "https://files.pythonhosted.org/packages/d4/16/730a82dda30765f63e0454918c982fb7193f6b398b31d63c7c3bd3652ae5/sqlalchemy-2.0.41-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:03968a349db483936c249f4d9cd14ff2c296adfa1290b660ba6516f973139582", size = 3233642, upload-time = "2025-05-14T17:55:29.901Z" }, + { url = "https://files.pythonhosted.org/packages/04/61/c0d4607f7799efa8b8ea3c49b4621e861c8f5c41fd4b5b636c534fcb7d73/sqlalchemy-2.0.41-cp311-cp311-win32.whl", hash = "sha256:293cd444d82b18da48c9f71cd7005844dbbd06ca19be1ccf6779154439eec0b8", size = 2086475, upload-time = "2025-05-14T17:56:02.095Z" }, + { url = "https://files.pythonhosted.org/packages/9d/8e/8344f8ae1cb6a479d0741c02cd4f666925b2bf02e2468ddaf5ce44111f30/sqlalchemy-2.0.41-cp311-cp311-win_amd64.whl", hash = "sha256:3d3549fc3e40667ec7199033a4e40a2f669898a00a7b18a931d3efb4c7900504", size = 2110903, upload-time = "2025-05-14T17:56:03.499Z" }, + { url = "https://files.pythonhosted.org/packages/3e/2a/f1f4e068b371154740dd10fb81afb5240d5af4aa0087b88d8b308b5429c2/sqlalchemy-2.0.41-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:81f413674d85cfd0dfcd6512e10e0f33c19c21860342a4890c3a2b59479929f9", size = 2119645, upload-time = "2025-05-14T17:55:24.854Z" }, + { url = "https://files.pythonhosted.org/packages/9b/e8/c664a7e73d36fbfc4730f8cf2bf930444ea87270f2825efbe17bf808b998/sqlalchemy-2.0.41-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:598d9ebc1e796431bbd068e41e4de4dc34312b7aa3292571bb3674a0cb415dd1", size = 2107399, upload-time = "2025-05-14T17:55:28.097Z" }, + { url = "https://files.pythonhosted.org/packages/5c/78/8a9cf6c5e7135540cb682128d091d6afa1b9e48bd049b0d691bf54114f70/sqlalchemy-2.0.41-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a104c5694dfd2d864a6f91b0956eb5d5883234119cb40010115fd45a16da5e70", size = 3293269, upload-time = "2025-05-14T17:50:38.227Z" }, + { url = "https://files.pythonhosted.org/packages/3c/35/f74add3978c20de6323fb11cb5162702670cc7a9420033befb43d8d5b7a4/sqlalchemy-2.0.41-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6145afea51ff0af7f2564a05fa95eb46f542919e6523729663a5d285ecb3cf5e", size = 3303364, upload-time = "2025-05-14T17:51:49.829Z" }, + { url = "https://files.pythonhosted.org/packages/6a/d4/c990f37f52c3f7748ebe98883e2a0f7d038108c2c5a82468d1ff3eec50b7/sqlalchemy-2.0.41-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b46fa6eae1cd1c20e6e6f44e19984d438b6b2d8616d21d783d150df714f44078", size = 3229072, upload-time = "2025-05-14T17:50:39.774Z" }, + { url = "https://files.pythonhosted.org/packages/15/69/cab11fecc7eb64bc561011be2bd03d065b762d87add52a4ca0aca2e12904/sqlalchemy-2.0.41-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41836fe661cc98abfae476e14ba1906220f92c4e528771a8a3ae6a151242d2ae", size = 3268074, upload-time = "2025-05-14T17:51:51.736Z" }, + { url = "https://files.pythonhosted.org/packages/5c/ca/0c19ec16858585d37767b167fc9602593f98998a68a798450558239fb04a/sqlalchemy-2.0.41-cp312-cp312-win32.whl", hash = "sha256:a8808d5cf866c781150d36a3c8eb3adccfa41a8105d031bf27e92c251e3969d6", size = 2084514, upload-time = "2025-05-14T17:55:49.915Z" }, + { url = "https://files.pythonhosted.org/packages/7f/23/4c2833d78ff3010a4e17f984c734f52b531a8c9060a50429c9d4b0211be6/sqlalchemy-2.0.41-cp312-cp312-win_amd64.whl", hash = "sha256:5b14e97886199c1f52c14629c11d90c11fbb09e9334fa7bb5f6d068d9ced0ce0", size = 2111557, upload-time = "2025-05-14T17:55:51.349Z" }, + { url = "https://files.pythonhosted.org/packages/d3/ad/2e1c6d4f235a97eeef52d0200d8ddda16f6c4dd70ae5ad88c46963440480/sqlalchemy-2.0.41-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4eeb195cdedaf17aab6b247894ff2734dcead6c08f748e617bfe05bd5a218443", size = 2115491, upload-time = "2025-05-14T17:55:31.177Z" }, + { url = "https://files.pythonhosted.org/packages/cf/8d/be490e5db8400dacc89056f78a52d44b04fbf75e8439569d5b879623a53b/sqlalchemy-2.0.41-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d4ae769b9c1c7757e4ccce94b0641bc203bbdf43ba7a2413ab2523d8d047d8dc", size = 2102827, upload-time = "2025-05-14T17:55:34.921Z" }, + { url = "https://files.pythonhosted.org/packages/a0/72/c97ad430f0b0e78efaf2791342e13ffeafcbb3c06242f01a3bb8fe44f65d/sqlalchemy-2.0.41-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a62448526dd9ed3e3beedc93df9bb6b55a436ed1474db31a2af13b313a70a7e1", size = 3225224, upload-time = "2025-05-14T17:50:41.418Z" }, + { url = "https://files.pythonhosted.org/packages/5e/51/5ba9ea3246ea068630acf35a6ba0d181e99f1af1afd17e159eac7e8bc2b8/sqlalchemy-2.0.41-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc56c9788617b8964ad02e8fcfeed4001c1f8ba91a9e1f31483c0dffb207002a", size = 3230045, upload-time = "2025-05-14T17:51:54.722Z" }, + { url = "https://files.pythonhosted.org/packages/78/2f/8c14443b2acea700c62f9b4a8bad9e49fc1b65cfb260edead71fd38e9f19/sqlalchemy-2.0.41-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c153265408d18de4cc5ded1941dcd8315894572cddd3c58df5d5b5705b3fa28d", size = 3159357, upload-time = "2025-05-14T17:50:43.483Z" }, + { url = "https://files.pythonhosted.org/packages/fc/b2/43eacbf6ccc5276d76cea18cb7c3d73e294d6fb21f9ff8b4eef9b42bbfd5/sqlalchemy-2.0.41-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f67766965996e63bb46cfbf2ce5355fc32d9dd3b8ad7e536a920ff9ee422e23", size = 3197511, upload-time = "2025-05-14T17:51:57.308Z" }, + { url = "https://files.pythonhosted.org/packages/fa/2e/677c17c5d6a004c3c45334ab1dbe7b7deb834430b282b8a0f75ae220c8eb/sqlalchemy-2.0.41-cp313-cp313-win32.whl", hash = "sha256:bfc9064f6658a3d1cadeaa0ba07570b83ce6801a1314985bf98ec9b95d74e15f", size = 2082420, upload-time = "2025-05-14T17:55:52.69Z" }, + { url = "https://files.pythonhosted.org/packages/e9/61/e8c1b9b6307c57157d328dd8b8348ddc4c47ffdf1279365a13b2b98b8049/sqlalchemy-2.0.41-cp313-cp313-win_amd64.whl", hash = "sha256:82ca366a844eb551daff9d2e6e7a9e5e76d2612c8564f58db6c19a726869c1df", size = 2108329, upload-time = "2025-05-14T17:55:54.495Z" }, + { url = "https://files.pythonhosted.org/packages/1c/fc/9ba22f01b5cdacc8f5ed0d22304718d2c758fce3fd49a5372b886a86f37c/sqlalchemy-2.0.41-py3-none-any.whl", hash = "sha256:57df5dc6fdb5ed1a88a1ed2195fd31927e705cad62dedd86b46972752a80f576", size = 1911224, upload-time = "2025-05-14T17:39:42.154Z" }, +] + +[[package]] +name = "stack-data" +version = "0.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asttokens" }, + { name = "executing" }, + { name = "pure-eval" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707, upload-time = "2023-09-30T13:58:05.479Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521, upload-time = "2023-09-30T13:58:03.53Z" }, +] + +[[package]] +name = "tables" +version = "3.10.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11'", +] +dependencies = [ + { name = "blosc2", version = "2.7.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numexpr", marker = "python_full_version < '3.11'" }, + { name = "numpy", marker = "python_full_version < '3.11'" }, + { name = "packaging", marker = "python_full_version < '3.11'" }, + { name = "py-cpuinfo", marker = "python_full_version < '3.11'" }, + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0d/5d/96708a84e9fcd29d1f684d56d4c38a23d29b1c934599a072a49f27ccfa71/tables-3.10.1.tar.gz", hash = "sha256:4aa07ac734b9c037baeaf44aec64ec902ad247f57811b59f30c4e31d31f126cf", size = 4762413, upload-time = "2024-08-17T09:57:47.127Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ff/69/a768ec8104ada032c9be09f521f548766ddd0351bc941c9d42fa5db001de/tables-3.10.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bca9d11a570ca1bc57f0845e54e55c3093d5a1ace376faee639e09503a73745b", size = 6823691, upload-time = "2024-08-17T09:56:50.229Z" }, + { url = "https://files.pythonhosted.org/packages/e4/2d/074bc14b39de9b552eec02ee583eff2997d903da1355f4450506335a6055/tables-3.10.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b62881cb682438d1e92b9178db42b160638aef3ca23341f7d98e9b27821b1eb4", size = 5471221, upload-time = "2024-08-17T09:56:54.84Z" }, + { url = "https://files.pythonhosted.org/packages/4a/30/29411ab804b5ac4bee25c82ba38f4e7a8c0b52c6a1cdbeea7d1db33a53fe/tables-3.10.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9cf1bfd8b0e0195196205fc8a134628219cff85d20da537facd67a291e6b347", size = 7170201, upload-time = "2024-08-17T09:56:59.011Z" }, + { url = "https://files.pythonhosted.org/packages/0a/7d/3165c7538b8e89b22fa17ad68e04106cca7023cf68e94011ae7b3b6d2a78/tables-3.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77f0e6dd45b91d99bf3976c8655c48fe3816baf390b9098e4fb2f0fdf9da7078", size = 7571035, upload-time = "2024-08-17T09:57:03.115Z" }, + { url = "https://files.pythonhosted.org/packages/46/b3/985a23d2cf27aad383301a5e99e1851228a1941b868515612b5357bded5f/tables-3.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:d90542ec172d1d60df0b796c48ad446f2b69a5d5cd3077bd6450891b854d1ffb", size = 6311650, upload-time = "2024-08-17T09:57:06.593Z" }, + { url = "https://files.pythonhosted.org/packages/dc/04/957264eb35e60251830a965e2d02332eb36ed14fbd8345df06981bbf3ece/tables-3.10.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f8917262a2bb3cd79d37e108557e34ec4b365fdcc806e01dd10765a84c65dab6", size = 6790492, upload-time = "2024-08-17T09:57:10.247Z" }, + { url = "https://files.pythonhosted.org/packages/b2/19/eb7af9d92aaf6766f5fedfce11a97ab03cf39856561c5f562dc0c769a682/tables-3.10.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f93f6db623b484bb6606537c2a71e95ee34fae19b0d891867642dd8c7be05af6", size = 5506835, upload-time = "2024-08-17T09:57:13.883Z" }, + { url = "https://files.pythonhosted.org/packages/b0/8f/897324e1ad543ca439b2c91f04c406f3eeda6e7ff2f43b4cd939f05043e4/tables-3.10.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01ca51624bca1a87e703d6d6b796368bc3460ff007ea8b1341be03bedd863833", size = 7166960, upload-time = "2024-08-17T09:57:17.463Z" }, + { url = "https://files.pythonhosted.org/packages/4e/5c/3f21d1135bf60af99ac79a17bbffd333d69763df2197ba04f47dd30bbd4e/tables-3.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9372516c76be3a05a573df63a69ce38315d03b5816d2a1e89c48129ec8b161b0", size = 7568724, upload-time = "2024-08-17T09:57:23.02Z" }, + { url = "https://files.pythonhosted.org/packages/1f/e3/3ee6b66263902eccadc4e0e23bca7fb480fd190904b7ce0bea4777b5b799/tables-3.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:09190fb504888aeacafb7739c13d5c5a3e87af3d261f4d2f832b1f8407be133a", size = 6312200, upload-time = "2024-08-17T09:57:26.322Z" }, + { url = "https://files.pythonhosted.org/packages/95/ec/ea6c476e33602c172c797fe8f8ab96d007d964137068276d142b142a28e5/tables-3.10.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a7090af37909e3bf229d5599fa442633e5a93b6082960b01038dc0106e07a8da", size = 6791597, upload-time = "2024-08-17T09:57:29.598Z" }, + { url = "https://files.pythonhosted.org/packages/74/02/a967a506e9204e3328a8c03f67e6f3c919defc8df11aba83ae5b2abf7b0f/tables-3.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:203ed50c0c5f30f007df7633089b2a567b99856cd25d68f19d91624a8db2e7ad", size = 5474779, upload-time = "2024-08-17T09:57:32.43Z" }, + { url = "https://files.pythonhosted.org/packages/c3/26/925793f753664ec698b2c6315c818269313db143da38150897cf260405c2/tables-3.10.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e36ce9f10471c69c1f0b06c6966de762558a35d62592c55df7994a8019adaf0c", size = 7130683, upload-time = "2024-08-17T09:57:36.181Z" }, + { url = "https://files.pythonhosted.org/packages/d8/79/2b34f22284459e940a84e71dba19b2a34c7cc0ce3cdf685923c50d5b9611/tables-3.10.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f233e78cc9fa4157ec4c3ef2abf01a731fe7969bc6ed73539e5f4cd3b94c98b2", size = 7531367, upload-time = "2024-08-17T09:57:39.864Z" }, + { url = "https://files.pythonhosted.org/packages/3d/27/5a23830f611e26dd7ee104096c6bb82e481b16f3f17ccaed3075f8d48312/tables-3.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:34357d2f2f75843a44e6fe54d1f11fc2e35a8fd3cb134df3d3362cff78010adb", size = 6295046, upload-time = "2024-08-17T09:57:43.561Z" }, + { url = "https://files.pythonhosted.org/packages/d3/d4/e7c25df877e054b05f146d6ccb920bcdbe8d39b35a0962868b80547532c7/tables-3.10.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6fc5b46a4f359249c3ab9a0a0a2448d7e680e68cffd63fdf3fb7171781edd46e", size = 6824253, upload-time = "2024-11-09T19:26:06.428Z" }, + { url = "https://files.pythonhosted.org/packages/c6/49/091865d75090a24493bd1b66e52d72f4d9627ff42983a13d4dcd89455d02/tables-3.10.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2ecabd7f459d40b7f9f5256850dd5f43773fda7b789f827de92c3d26df1e320f", size = 5499587, upload-time = "2024-11-09T19:26:12.402Z" }, + { url = "https://files.pythonhosted.org/packages/23/83/9dac8af333149fa01add439f710d4a312b70faf81c2f59a16b8bfaebb75e/tables-3.10.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40a4ee18f3c9339d9dd8fd3777c75cda5768f2ff347064a2796f59161a190af8", size = 7128236, upload-time = "2024-11-09T19:26:15.716Z" }, + { url = "https://files.pythonhosted.org/packages/89/fd/62f31643596f6ab71fc6d2a87acdee0bc01a03fbe1a7f3f6dc0c91e2546d/tables-3.10.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:757c6ea257c174af8036cf8f273ede756bbcd6db5ac7e2a4d64e788b0f371152", size = 7527953, upload-time = "2024-11-09T19:26:20.229Z" }, +] + +[[package]] +name = "tables" +version = "3.10.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", +] +dependencies = [ + { name = "blosc2", version = "3.1.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "numexpr", marker = "python_full_version >= '3.11'" }, + { name = "numpy", marker = "python_full_version >= '3.11'" }, + { name = "packaging", marker = "python_full_version >= '3.11'" }, + { name = "py-cpuinfo", marker = "python_full_version >= '3.11'" }, + { name = "typing-extensions", marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/15/50/23ead25f60bb1babe7f2f061d8a2f8c2f6804c1a20b3058677beb9085b56/tables-3.10.2.tar.gz", hash = "sha256:2544812a7186fadba831d6dd34eb49ccd788d6a83f4e4c2b431b835b6796c910", size = 4779722, upload-time = "2025-01-04T20:44:13.034Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/96/f6/ef0c376c1fa01b916d5db0c2681be063f6289ee99faf7bb6610e0b55b773/tables-3.10.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:63f8adec3c4421a011c5c6a245c0c1fccf16dba7aaa67d9915d2821cf365ed4a", size = 6767194, upload-time = "2025-01-04T20:42:53.5Z" }, + { url = "https://files.pythonhosted.org/packages/d9/d0/accd41382fa9da45bf816c56f85bda64223a3b8d0006d3496b67e0781a6e/tables-3.10.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:34c120bff666d33d3bdfb9e33173a4869d5f34e6c87824f2c7ec6a72c8dfab82", size = 5482665, upload-time = "2025-01-04T20:42:58.589Z" }, + { url = "https://files.pythonhosted.org/packages/59/2f/c95e94423c463177b8a7d55a1dbbd524840fe6a684844ff728f238e71f68/tables-3.10.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e71f63ac67c583ac42943c99c2d33bcc9e361e94d1ab1a763dc0698bdd9ff815", size = 7117696, upload-time = "2025-01-04T20:43:04.014Z" }, + { url = "https://files.pythonhosted.org/packages/88/d5/71665919aa2a5a3d2a20eeef3c71dc7c2ebbd9f26d114a7808514aba24d6/tables-3.10.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:154773f97763ccc91a29bcead6ab7b5ef164c2ed8c409cd79a2115aa9b4184c9", size = 7520921, upload-time = "2025-01-04T20:43:10.002Z" }, + { url = "https://files.pythonhosted.org/packages/46/96/b5023c1f7b9d560cac3e2c0daceebaeb88dd24c70c75db2d291abfa563e5/tables-3.10.2-cp311-cp311-win_amd64.whl", hash = "sha256:96b5e945d275415e79ddb0578657ecc6ac77030dcc0632ab2c39f89390bb239d", size = 6407137, upload-time = "2025-01-04T20:43:15.838Z" }, + { url = "https://files.pythonhosted.org/packages/ab/c4/1efbcc699db863d88874f3d111e5bb6dd2e0fbaca38f91c992e696324730/tables-3.10.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c6ba58205d1f6a4e0e2212bc221e76cf104f22190f90c3f1683f3c1ab138f28f", size = 6734990, upload-time = "2025-01-04T20:43:20.794Z" }, + { url = "https://files.pythonhosted.org/packages/4a/db/4c7facfc805ab764f2ee256011d20f96791d2426afa3389ca7ff2a8a4ea8/tables-3.10.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cdb5c040aa43e5e96259d6f6bb9df5b66fef2b071a6eb035c21bf6508e865d40", size = 5483377, upload-time = "2025-01-04T20:43:25.923Z" }, + { url = "https://files.pythonhosted.org/packages/93/0a/53815b516a2465b329e5dc2079c99a8b6b1a23f6b9ce5da8a7ebc7892bf4/tables-3.10.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e694123fa886d9be57f55fc7e1dcacac49f0b4ed4a931c795bd8f82f7111b5a8", size = 7081356, upload-time = "2025-01-04T20:43:31.066Z" }, + { url = "https://files.pythonhosted.org/packages/d3/e1/3f4adfc83eb7390abb964682a7d1df0dbe451dd2cee99750b1c7ca8e2c9d/tables-3.10.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6c12d0d04de89297763923ebeaddfd7e0b51f29041895db284fd4913e7448b7", size = 7483570, upload-time = "2025-01-04T20:43:36.694Z" }, + { url = "https://files.pythonhosted.org/packages/9a/d4/0b9ba57a5a8d2d05d1108055a8d70a4b066db4ebed61921de34043a31bdb/tables-3.10.2-cp312-cp312-win_amd64.whl", hash = "sha256:a406d5dbbcb6604bd1ca129af337e0790d4e02d29d06159ddb9f74e38d756d32", size = 6388443, upload-time = "2025-01-04T20:43:42.503Z" }, + { url = "https://files.pythonhosted.org/packages/ab/02/8c7aeaa6c8aac8e0298d40dc5fc55477fddc30cb31e4dc7e5e473be4b464/tables-3.10.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7b8bc07c715bad3d447ed8f834388ef2e10265e2c4af6b1297fc61adb645948f", size = 6725764, upload-time = "2025-01-04T20:43:48.171Z" }, + { url = "https://files.pythonhosted.org/packages/91/f4/8683395d294b9e4576fd7d888aa6cf5583c013c2c0a2e47f862c2842407f/tables-3.10.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:28677ed8e1a371471495599078f48da0850f82457d6c852ca77959c974371140", size = 5442663, upload-time = "2025-01-04T20:43:53.722Z" }, + { url = "https://files.pythonhosted.org/packages/72/9b/ea43159eed8f81bfa1ead8fa8201a3c352e84c7220e046bb548736833951/tables-3.10.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaaea478dcf27dd54679ef2643c26d3b8b15676ad81e4d80a88fd1682d23deb1", size = 7078747, upload-time = "2025-01-04T20:43:59.596Z" }, + { url = "https://files.pythonhosted.org/packages/04/95/b3e88edc674e35d9011b168df0d7a9b1c3ab98733fa26e740ac7964edc2f/tables-3.10.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c5e67a9f901842f9a4b1f3d2307f4bdd94047514fe0d0c558ed19c11f53c402a", size = 7479985, upload-time = "2025-01-04T20:44:04.13Z" }, + { url = "https://files.pythonhosted.org/packages/63/ca/eaa029a43d269bdda6985931d6cfd479e876cd8cf7c887d818bef05ef03b/tables-3.10.2-cp313-cp313-win_amd64.whl", hash = "sha256:5637fdcded5ba5426aa24e0e42d6f990926a4da7f193830df131dfcb7e842900", size = 6385562, upload-time = "2025-01-04T20:44:08.196Z" }, +] + +[[package]] +name = "tabulate" +version = "0.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/fe/802052aecb21e3797b8f7902564ab6ea0d60ff8ca23952079064155d1ae1/tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c", size = 81090, upload-time = "2022-10-06T17:21:48.54Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f", size = 35252, upload-time = "2022-10-06T17:21:44.262Z" }, +] + +[[package]] +name = "terminado" +version = "0.18.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ptyprocess", marker = "os_name != 'nt'" }, + { name = "pywinpty", marker = "os_name == 'nt'" }, + { name = "tornado" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8a/11/965c6fd8e5cc254f1fe142d547387da17a8ebfd75a3455f637c663fb38a0/terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e", size = 32701, upload-time = "2024-03-12T14:34:39.026Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0", size = 14154, upload-time = "2024-03-12T14:34:36.569Z" }, +] + +[[package]] +name = "threadpoolctl" +version = "3.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b7/4d/08c89e34946fce2aec4fbb45c9016efd5f4d7f24af8e5d93296e935631d8/threadpoolctl-3.6.0.tar.gz", hash = "sha256:8ab8b4aa3491d812b623328249fab5302a68d2d71745c8a4c719a2fcaba9f44e", size = 21274, upload-time = "2025-03-13T13:49:23.031Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb", size = 18638, upload-time = "2025-03-13T13:49:21.846Z" }, +] + +[[package]] +name = "tinycss2" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7a/fd/7a5ee21fd08ff70d3d33a5781c255cbe779659bd03278feb98b19ee550f4/tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7", size = 87085, upload-time = "2024-10-24T14:58:29.895Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610, upload-time = "2024-10-24T14:58:28.029Z" }, +] + +[[package]] +name = "tomli" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175, upload-time = "2024-11-27T22:38:36.873Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/ca/75707e6efa2b37c77dadb324ae7d9571cb424e61ea73fad7c56c2d14527f/tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249", size = 131077, upload-time = "2024-11-27T22:37:54.956Z" }, + { url = "https://files.pythonhosted.org/packages/c7/16/51ae563a8615d472fdbffc43a3f3d46588c264ac4f024f63f01283becfbb/tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6", size = 123429, upload-time = "2024-11-27T22:37:56.698Z" }, + { url = "https://files.pythonhosted.org/packages/f1/dd/4f6cd1e7b160041db83c694abc78e100473c15d54620083dbd5aae7b990e/tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a", size = 226067, upload-time = "2024-11-27T22:37:57.63Z" }, + { url = "https://files.pythonhosted.org/packages/a9/6b/c54ede5dc70d648cc6361eaf429304b02f2871a345bbdd51e993d6cdf550/tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee", size = 236030, upload-time = "2024-11-27T22:37:59.344Z" }, + { url = "https://files.pythonhosted.org/packages/1f/47/999514fa49cfaf7a92c805a86c3c43f4215621855d151b61c602abb38091/tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e", size = 240898, upload-time = "2024-11-27T22:38:00.429Z" }, + { url = "https://files.pythonhosted.org/packages/73/41/0a01279a7ae09ee1573b423318e7934674ce06eb33f50936655071d81a24/tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4", size = 229894, upload-time = "2024-11-27T22:38:02.094Z" }, + { url = "https://files.pythonhosted.org/packages/55/18/5d8bc5b0a0362311ce4d18830a5d28943667599a60d20118074ea1b01bb7/tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106", size = 245319, upload-time = "2024-11-27T22:38:03.206Z" }, + { url = "https://files.pythonhosted.org/packages/92/a3/7ade0576d17f3cdf5ff44d61390d4b3febb8a9fc2b480c75c47ea048c646/tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8", size = 238273, upload-time = "2024-11-27T22:38:04.217Z" }, + { url = "https://files.pythonhosted.org/packages/72/6f/fa64ef058ac1446a1e51110c375339b3ec6be245af9d14c87c4a6412dd32/tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff", size = 98310, upload-time = "2024-11-27T22:38:05.908Z" }, + { url = "https://files.pythonhosted.org/packages/6a/1c/4a2dcde4a51b81be3530565e92eda625d94dafb46dbeb15069df4caffc34/tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b", size = 108309, upload-time = "2024-11-27T22:38:06.812Z" }, + { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762, upload-time = "2024-11-27T22:38:07.731Z" }, + { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453, upload-time = "2024-11-27T22:38:09.384Z" }, + { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486, upload-time = "2024-11-27T22:38:10.329Z" }, + { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349, upload-time = "2024-11-27T22:38:11.443Z" }, + { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159, upload-time = "2024-11-27T22:38:13.099Z" }, + { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243, upload-time = "2024-11-27T22:38:14.766Z" }, + { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645, upload-time = "2024-11-27T22:38:15.843Z" }, + { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584, upload-time = "2024-11-27T22:38:17.645Z" }, + { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875, upload-time = "2024-11-27T22:38:19.159Z" }, + { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418, upload-time = "2024-11-27T22:38:20.064Z" }, + { url = "https://files.pythonhosted.org/packages/04/90/2ee5f2e0362cb8a0b6499dc44f4d7d48f8fff06d28ba46e6f1eaa61a1388/tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7", size = 132708, upload-time = "2024-11-27T22:38:21.659Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ec/46b4108816de6b385141f082ba99e315501ccd0a2ea23db4a100dd3990ea/tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c", size = 123582, upload-time = "2024-11-27T22:38:22.693Z" }, + { url = "https://files.pythonhosted.org/packages/a0/bd/b470466d0137b37b68d24556c38a0cc819e8febe392d5b199dcd7f578365/tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13", size = 232543, upload-time = "2024-11-27T22:38:24.367Z" }, + { url = "https://files.pythonhosted.org/packages/d9/e5/82e80ff3b751373f7cead2815bcbe2d51c895b3c990686741a8e56ec42ab/tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281", size = 241691, upload-time = "2024-11-27T22:38:26.081Z" }, + { url = "https://files.pythonhosted.org/packages/05/7e/2a110bc2713557d6a1bfb06af23dd01e7dde52b6ee7dadc589868f9abfac/tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272", size = 251170, upload-time = "2024-11-27T22:38:27.921Z" }, + { url = "https://files.pythonhosted.org/packages/64/7b/22d713946efe00e0adbcdfd6d1aa119ae03fd0b60ebed51ebb3fa9f5a2e5/tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140", size = 236530, upload-time = "2024-11-27T22:38:29.591Z" }, + { url = "https://files.pythonhosted.org/packages/38/31/3a76f67da4b0cf37b742ca76beaf819dca0ebef26d78fc794a576e08accf/tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2", size = 258666, upload-time = "2024-11-27T22:38:30.639Z" }, + { url = "https://files.pythonhosted.org/packages/07/10/5af1293da642aded87e8a988753945d0cf7e00a9452d3911dd3bb354c9e2/tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744", size = 243954, upload-time = "2024-11-27T22:38:31.702Z" }, + { url = "https://files.pythonhosted.org/packages/5b/b9/1ed31d167be802da0fc95020d04cd27b7d7065cc6fbefdd2f9186f60d7bd/tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec", size = 98724, upload-time = "2024-11-27T22:38:32.837Z" }, + { url = "https://files.pythonhosted.org/packages/c7/32/b0963458706accd9afcfeb867c0f9175a741bf7b19cd424230714d722198/tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69", size = 109383, upload-time = "2024-11-27T22:38:34.455Z" }, + { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257, upload-time = "2024-11-27T22:38:35.385Z" }, +] + +[[package]] +name = "tomli-w" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/19/75/241269d1da26b624c0d5e110e8149093c759b7a286138f4efd61a60e75fe/tomli_w-1.2.0.tar.gz", hash = "sha256:2dd14fac5a47c27be9cd4c976af5a12d87fb1f0b4512f81d69cce3b35ae25021", size = 7184, upload-time = "2025-01-15T12:07:24.262Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/18/c86eb8e0202e32dd3df50d43d7ff9854f8e0603945ff398974c1d91ac1ef/tomli_w-1.2.0-py3-none-any.whl", hash = "sha256:188306098d013b691fcadc011abd66727d3c414c571bb01b1a174ba8c983cf90", size = 6675, upload-time = "2025-01-15T12:07:22.074Z" }, +] + +[[package]] +name = "toolz" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8a/0b/d80dfa675bf592f636d1ea0b835eab4ec8df6e9415d8cfd766df54456123/toolz-1.0.0.tar.gz", hash = "sha256:2c86e3d9a04798ac556793bced838816296a2f085017664e4995cb40a1047a02", size = 66790, upload-time = "2024-10-04T16:17:04.001Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/03/98/eb27cc78ad3af8e302c9d8ff4977f5026676e130d28dd7578132a457170c/toolz-1.0.0-py3-none-any.whl", hash = "sha256:292c8f1c4e7516bf9086f8850935c799a874039c8bcf959d47b600e4c44a6236", size = 56383, upload-time = "2024-10-04T16:17:01.533Z" }, +] + +[[package]] +name = "tornado" +version = "6.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/51/89/c72771c81d25d53fe33e3dca61c233b665b2780f21820ba6fd2c6793c12b/tornado-6.5.1.tar.gz", hash = "sha256:84ceece391e8eb9b2b95578db65e920d2a61070260594819589609ba9bc6308c", size = 509934, upload-time = "2025-05-22T18:15:38.788Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/89/f4532dee6843c9e0ebc4e28d4be04c67f54f60813e4bf73d595fe7567452/tornado-6.5.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d50065ba7fd11d3bd41bcad0825227cc9a95154bad83239357094c36708001f7", size = 441948, upload-time = "2025-05-22T18:15:20.862Z" }, + { url = "https://files.pythonhosted.org/packages/15/9a/557406b62cffa395d18772e0cdcf03bed2fff03b374677348eef9f6a3792/tornado-6.5.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e9ca370f717997cb85606d074b0e5b247282cf5e2e1611568b8821afe0342d6", size = 440112, upload-time = "2025-05-22T18:15:22.591Z" }, + { url = "https://files.pythonhosted.org/packages/55/82/7721b7319013a3cf881f4dffa4f60ceff07b31b394e459984e7a36dc99ec/tornado-6.5.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b77e9dfa7ed69754a54c89d82ef746398be82f749df69c4d3abe75c4d1ff4888", size = 443672, upload-time = "2025-05-22T18:15:24.027Z" }, + { url = "https://files.pythonhosted.org/packages/7d/42/d11c4376e7d101171b94e03cef0cbce43e823ed6567ceda571f54cf6e3ce/tornado-6.5.1-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253b76040ee3bab8bcf7ba9feb136436a3787208717a1fb9f2c16b744fba7331", size = 443019, upload-time = "2025-05-22T18:15:25.735Z" }, + { url = "https://files.pythonhosted.org/packages/7d/f7/0c48ba992d875521ac761e6e04b0a1750f8150ae42ea26df1852d6a98942/tornado-6.5.1-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:308473f4cc5a76227157cdf904de33ac268af770b2c5f05ca6c1161d82fdd95e", size = 443252, upload-time = "2025-05-22T18:15:27.499Z" }, + { url = "https://files.pythonhosted.org/packages/89/46/d8d7413d11987e316df4ad42e16023cd62666a3c0dfa1518ffa30b8df06c/tornado-6.5.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:caec6314ce8a81cf69bd89909f4b633b9f523834dc1a352021775d45e51d9401", size = 443930, upload-time = "2025-05-22T18:15:29.299Z" }, + { url = "https://files.pythonhosted.org/packages/78/b2/f8049221c96a06df89bed68260e8ca94beca5ea532ffc63b1175ad31f9cc/tornado-6.5.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:13ce6e3396c24e2808774741331638ee6c2f50b114b97a55c5b442df65fd9692", size = 443351, upload-time = "2025-05-22T18:15:31.038Z" }, + { url = "https://files.pythonhosted.org/packages/76/ff/6a0079e65b326cc222a54720a748e04a4db246870c4da54ece4577bfa702/tornado-6.5.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5cae6145f4cdf5ab24744526cc0f55a17d76f02c98f4cff9daa08ae9a217448a", size = 443328, upload-time = "2025-05-22T18:15:32.426Z" }, + { url = "https://files.pythonhosted.org/packages/49/18/e3f902a1d21f14035b5bc6246a8c0f51e0eef562ace3a2cea403c1fb7021/tornado-6.5.1-cp39-abi3-win32.whl", hash = "sha256:e0a36e1bc684dca10b1aa75a31df8bdfed656831489bc1e6a6ebed05dc1ec365", size = 444396, upload-time = "2025-05-22T18:15:34.205Z" }, + { url = "https://files.pythonhosted.org/packages/7b/09/6526e32bf1049ee7de3bebba81572673b19a2a8541f795d887e92af1a8bc/tornado-6.5.1-cp39-abi3-win_amd64.whl", hash = "sha256:908e7d64567cecd4c2b458075589a775063453aeb1d2a1853eedb806922f568b", size = 444840, upload-time = "2025-05-22T18:15:36.1Z" }, + { url = "https://files.pythonhosted.org/packages/55/a7/535c44c7bea4578e48281d83c615219f3ab19e6abc67625ef637c73987be/tornado-6.5.1-cp39-abi3-win_arm64.whl", hash = "sha256:02420a0eb7bf617257b9935e2b754d1b63897525d8a289c9d65690d580b4dcf7", size = 443596, upload-time = "2025-05-22T18:15:37.433Z" }, +] + +[[package]] +name = "tqdm" +version = "4.67.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737, upload-time = "2024-11-24T20:12:22.481Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540, upload-time = "2024-11-24T20:12:19.698Z" }, +] + +[[package]] +name = "traitlets" +version = "5.14.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", size = 161621, upload-time = "2024-04-19T11:11:49.746Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359, upload-time = "2024-04-19T11:11:46.763Z" }, +] + +[[package]] +name = "typeguard" +version = "4.4.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/34/53/f701077a29ddf65ed4556119961ef517d767c07f15f6cdf0717ad985426b/typeguard-4.4.3.tar.gz", hash = "sha256:be72b9c85f322c20459b29060c5c099cd733d5886c4ee14297795e62b0c0d59b", size = 75072, upload-time = "2025-06-04T21:47:07.733Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/18/662e2a14fcdbbc9e7842ad801a7f9292fcd6cf7df43af94e59ac9c0da9af/typeguard-4.4.3-py3-none-any.whl", hash = "sha256:7d8b4a3d280257fd1aa29023f22de64e29334bda0b172ff1040f05682223795e", size = 34855, upload-time = "2025-06-04T21:47:03.683Z" }, +] + +[[package]] +name = "types-python-dateutil" +version = "2.9.0.20250516" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ef/88/d65ed807393285204ab6e2801e5d11fbbea811adcaa979a2ed3b67a5ef41/types_python_dateutil-2.9.0.20250516.tar.gz", hash = "sha256:13e80d6c9c47df23ad773d54b2826bd52dbbb41be87c3f339381c1700ad21ee5", size = 13943, upload-time = "2025-05-16T03:06:58.385Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c5/3f/b0e8db149896005adc938a1e7f371d6d7e9eca4053a29b108978ed15e0c2/types_python_dateutil-2.9.0.20250516-py3-none-any.whl", hash = "sha256:2b2b3f57f9c6a61fba26a9c0ffb9ea5681c9b83e69cd897c6b5f668d9c0cab93", size = 14356, upload-time = "2025-05-16T03:06:57.249Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.14.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d1/bc/51647cd02527e87d05cb083ccc402f93e441606ff1f01739a62c8ad09ba5/typing_extensions-4.14.0.tar.gz", hash = "sha256:8676b788e32f02ab42d9e7c61324048ae4c6d844a399eebace3d4979d75ceef4", size = 107423, upload-time = "2025-06-02T14:52:11.399Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/e0/552843e0d356fbb5256d21449fa957fa4eff3bbc135a74a691ee70c7c5da/typing_extensions-4.14.0-py3-none-any.whl", hash = "sha256:a1514509136dd0b477638fc68d6a91497af5076466ad0fa6c338e44e359944af", size = 43839, upload-time = "2025-06-02T14:52:10.026Z" }, +] + +[[package]] +name = "typing-inspect" +version = "0.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mypy-extensions" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dc/74/1789779d91f1961fa9438e9a8710cdae6bd138c80d7303996933d117264a/typing_inspect-0.9.0.tar.gz", hash = "sha256:b23fc42ff6f6ef6954e4852c1fb512cdd18dbea03134f91f856a95ccc9461f78", size = 13825, upload-time = "2023-05-24T20:25:47.612Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/65/f3/107a22063bf27bdccf2024833d3445f4eea42b2e598abfbd46f6a63b6cb0/typing_inspect-0.9.0-py3-none-any.whl", hash = "sha256:9ee6fc59062311ef8547596ab6b955e1b8aa46242d854bfc78f4f6b0eff35f9f", size = 8827, upload-time = "2023-05-24T20:25:45.287Z" }, +] + +[[package]] +name = "tzdata" +version = "2025.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380, upload-time = "2025-03-23T13:54:43.652Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839, upload-time = "2025-03-23T13:54:41.845Z" }, +] + +[[package]] +name = "uc-micro-py" +version = "1.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/91/7a/146a99696aee0609e3712f2b44c6274566bc368dfe8375191278045186b8/uc-micro-py-1.0.3.tar.gz", hash = "sha256:d321b92cff673ec58027c04015fcaa8bb1e005478643ff4a500882eaab88c48a", size = 6043, upload-time = "2024-02-09T16:52:01.654Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/37/87/1f677586e8ac487e29672e4b17455758fce261de06a0d086167bb760361a/uc_micro_py-1.0.3-py3-none-any.whl", hash = "sha256:db1dffff340817673d7b466ec86114a9dc0e9d4d9b5ba229d9d60e5c12600cd5", size = 6229, upload-time = "2024-02-09T16:52:00.371Z" }, +] + +[[package]] +name = "uri-template" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/31/c7/0336f2bd0bcbada6ccef7aaa25e443c118a704f828a0620c6fa0207c1b64/uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7", size = 21678, upload-time = "2023-06-21T01:49:05.374Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363", size = 11140, upload-time = "2023-06-21T01:49:03.467Z" }, +] + +[[package]] +name = "urllib3" +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8a/78/16493d9c386d8e60e442a35feac5e00f0913c0f4b7c217c11e8ec2ff53e0/urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466", size = 390672, upload-time = "2025-04-10T15:23:39.232Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/11/cc635220681e93a0183390e26485430ca2c7b5f9d33b15c74c2861cb8091/urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813", size = 128680, upload-time = "2025-04-10T15:23:37.377Z" }, +] + +[[package]] +name = "virtualenv" +version = "20.31.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "distlib" }, + { name = "filelock" }, + { name = "platformdirs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/56/2c/444f465fb2c65f40c3a104fd0c495184c4f2336d65baf398e3c75d72ea94/virtualenv-20.31.2.tar.gz", hash = "sha256:e10c0a9d02835e592521be48b332b6caee6887f332c111aa79a09b9e79efc2af", size = 6076316, upload-time = "2025-05-08T17:58:23.811Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f3/40/b1c265d4b2b62b58576588510fc4d1fe60a86319c8de99fd8e9fec617d2c/virtualenv-20.31.2-py3-none-any.whl", hash = "sha256:36efd0d9650ee985f0cad72065001e66d49a6f24eb44d98980f630686243cf11", size = 6057982, upload-time = "2025-05-08T17:58:21.15Z" }, +] + +[[package]] +name = "wcwidth" +version = "0.2.13" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/63/53559446a878410fc5a5974feb13d31d78d752eb18aeba59c7fef1af7598/wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5", size = 101301, upload-time = "2024-01-06T02:10:57.829Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166, upload-time = "2024-01-06T02:10:55.763Z" }, +] + +[[package]] +name = "webcolors" +version = "24.11.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7b/29/061ec845fb58521848f3739e466efd8250b4b7b98c1b6c5bf4d40b419b7e/webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6", size = 45064, upload-time = "2024-11-11T07:43:24.224Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/e8/c0e05e4684d13459f93d312077a9a2efbe04d59c393bc2b8802248c908d4/webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9", size = 14934, upload-time = "2024-11-11T07:43:22.529Z" }, +] + +[[package]] +name = "webencodings" +version = "0.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721, upload-time = "2017-04-05T20:21:34.189Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774, upload-time = "2017-04-05T20:21:32.581Z" }, +] + +[[package]] +name = "websocket-client" +version = "1.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e6/30/fba0d96b4b5fbf5948ed3f4681f7da2f9f64512e1d303f94b4cc174c24a5/websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da", size = 54648, upload-time = "2024-04-23T22:16:16.976Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526", size = 58826, upload-time = "2024-04-23T22:16:14.422Z" }, +] + +[[package]] +name = "wheel" +version = "0.45.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8a/98/2d9906746cdc6a6ef809ae6338005b3f21bb568bea3165cfc6a243fdc25c/wheel-0.45.1.tar.gz", hash = "sha256:661e1abd9198507b1409a20c02106d9670b2576e916d58f520316666abca6729", size = 107545, upload-time = "2024-11-23T00:18:23.513Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/2c/87f3254fd8ffd29e4c02732eee68a83a1d3c346ae39bc6822dcbcb697f2b/wheel-0.45.1-py3-none-any.whl", hash = "sha256:708e7481cc80179af0e556bbf0cc00b8444c7321e2700b8d8580231d13017248", size = 72494, upload-time = "2024-11-23T00:18:21.207Z" }, +] + +[[package]] +name = "wrapt" +version = "1.17.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c3/fc/e91cc220803d7bc4db93fb02facd8461c37364151b8494762cc88b0fbcef/wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3", size = 55531, upload-time = "2025-01-14T10:35:45.465Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/d1/1daec934997e8b160040c78d7b31789f19b122110a75eca3d4e8da0049e1/wrapt-1.17.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3d57c572081fed831ad2d26fd430d565b76aa277ed1d30ff4d40670b1c0dd984", size = 53307, upload-time = "2025-01-14T10:33:13.616Z" }, + { url = "https://files.pythonhosted.org/packages/1b/7b/13369d42651b809389c1a7153baa01d9700430576c81a2f5c5e460df0ed9/wrapt-1.17.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5e251054542ae57ac7f3fba5d10bfff615b6c2fb09abeb37d2f1463f841ae22", size = 38486, upload-time = "2025-01-14T10:33:15.947Z" }, + { url = "https://files.pythonhosted.org/packages/62/bf/e0105016f907c30b4bd9e377867c48c34dc9c6c0c104556c9c9126bd89ed/wrapt-1.17.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:80dd7db6a7cb57ffbc279c4394246414ec99537ae81ffd702443335a61dbf3a7", size = 38777, upload-time = "2025-01-14T10:33:17.462Z" }, + { url = "https://files.pythonhosted.org/packages/27/70/0f6e0679845cbf8b165e027d43402a55494779295c4b08414097b258ac87/wrapt-1.17.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a6e821770cf99cc586d33833b2ff32faebdbe886bd6322395606cf55153246c", size = 83314, upload-time = "2025-01-14T10:33:21.282Z" }, + { url = "https://files.pythonhosted.org/packages/0f/77/0576d841bf84af8579124a93d216f55d6f74374e4445264cb378a6ed33eb/wrapt-1.17.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b60fb58b90c6d63779cb0c0c54eeb38941bae3ecf7a73c764c52c88c2dcb9d72", size = 74947, upload-time = "2025-01-14T10:33:24.414Z" }, + { url = "https://files.pythonhosted.org/packages/90/ec/00759565518f268ed707dcc40f7eeec38637d46b098a1f5143bff488fe97/wrapt-1.17.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b870b5df5b71d8c3359d21be8f0d6c485fa0ebdb6477dda51a1ea54a9b558061", size = 82778, upload-time = "2025-01-14T10:33:26.152Z" }, + { url = "https://files.pythonhosted.org/packages/f8/5a/7cffd26b1c607b0b0c8a9ca9d75757ad7620c9c0a9b4a25d3f8a1480fafc/wrapt-1.17.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4011d137b9955791f9084749cba9a367c68d50ab8d11d64c50ba1688c9b457f2", size = 81716, upload-time = "2025-01-14T10:33:27.372Z" }, + { url = "https://files.pythonhosted.org/packages/7e/09/dccf68fa98e862df7e6a60a61d43d644b7d095a5fc36dbb591bbd4a1c7b2/wrapt-1.17.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:1473400e5b2733e58b396a04eb7f35f541e1fb976d0c0724d0223dd607e0f74c", size = 74548, upload-time = "2025-01-14T10:33:28.52Z" }, + { url = "https://files.pythonhosted.org/packages/b7/8e/067021fa3c8814952c5e228d916963c1115b983e21393289de15128e867e/wrapt-1.17.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3cedbfa9c940fdad3e6e941db7138e26ce8aad38ab5fe9dcfadfed9db7a54e62", size = 81334, upload-time = "2025-01-14T10:33:29.643Z" }, + { url = "https://files.pythonhosted.org/packages/4b/0d/9d4b5219ae4393f718699ca1c05f5ebc0c40d076f7e65fd48f5f693294fb/wrapt-1.17.2-cp310-cp310-win32.whl", hash = "sha256:582530701bff1dec6779efa00c516496968edd851fba224fbd86e46cc6b73563", size = 36427, upload-time = "2025-01-14T10:33:30.832Z" }, + { url = "https://files.pythonhosted.org/packages/72/6a/c5a83e8f61aec1e1aeef939807602fb880e5872371e95df2137142f5c58e/wrapt-1.17.2-cp310-cp310-win_amd64.whl", hash = "sha256:58705da316756681ad3c9c73fd15499aa4d8c69f9fd38dc8a35e06c12468582f", size = 38774, upload-time = "2025-01-14T10:33:32.897Z" }, + { url = "https://files.pythonhosted.org/packages/cd/f7/a2aab2cbc7a665efab072344a8949a71081eed1d2f451f7f7d2b966594a2/wrapt-1.17.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ff04ef6eec3eee8a5efef2401495967a916feaa353643defcc03fc74fe213b58", size = 53308, upload-time = "2025-01-14T10:33:33.992Z" }, + { url = "https://files.pythonhosted.org/packages/50/ff/149aba8365fdacef52b31a258c4dc1c57c79759c335eff0b3316a2664a64/wrapt-1.17.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db983e7bca53819efdbd64590ee96c9213894272c776966ca6306b73e4affda", size = 38488, upload-time = "2025-01-14T10:33:35.264Z" }, + { url = "https://files.pythonhosted.org/packages/65/46/5a917ce85b5c3b490d35c02bf71aedaa9f2f63f2d15d9949cc4ba56e8ba9/wrapt-1.17.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9abc77a4ce4c6f2a3168ff34b1da9b0f311a8f1cfd694ec96b0603dff1c79438", size = 38776, upload-time = "2025-01-14T10:33:38.28Z" }, + { url = "https://files.pythonhosted.org/packages/ca/74/336c918d2915a4943501c77566db41d1bd6e9f4dbc317f356b9a244dfe83/wrapt-1.17.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b929ac182f5ace000d459c59c2c9c33047e20e935f8e39371fa6e3b85d56f4a", size = 83776, upload-time = "2025-01-14T10:33:40.678Z" }, + { url = "https://files.pythonhosted.org/packages/09/99/c0c844a5ccde0fe5761d4305485297f91d67cf2a1a824c5f282e661ec7ff/wrapt-1.17.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f09b286faeff3c750a879d336fb6d8713206fc97af3adc14def0cdd349df6000", size = 75420, upload-time = "2025-01-14T10:33:41.868Z" }, + { url = "https://files.pythonhosted.org/packages/b4/b0/9fc566b0fe08b282c850063591a756057c3247b2362b9286429ec5bf1721/wrapt-1.17.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a7ed2d9d039bd41e889f6fb9364554052ca21ce823580f6a07c4ec245c1f5d6", size = 83199, upload-time = "2025-01-14T10:33:43.598Z" }, + { url = "https://files.pythonhosted.org/packages/9d/4b/71996e62d543b0a0bd95dda485219856def3347e3e9380cc0d6cf10cfb2f/wrapt-1.17.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:129a150f5c445165ff941fc02ee27df65940fcb8a22a61828b1853c98763a64b", size = 82307, upload-time = "2025-01-14T10:33:48.499Z" }, + { url = "https://files.pythonhosted.org/packages/39/35/0282c0d8789c0dc9bcc738911776c762a701f95cfe113fb8f0b40e45c2b9/wrapt-1.17.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1fb5699e4464afe5c7e65fa51d4f99e0b2eadcc176e4aa33600a3df7801d6662", size = 75025, upload-time = "2025-01-14T10:33:51.191Z" }, + { url = "https://files.pythonhosted.org/packages/4f/6d/90c9fd2c3c6fee181feecb620d95105370198b6b98a0770cba090441a828/wrapt-1.17.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9a2bce789a5ea90e51a02dfcc39e31b7f1e662bc3317979aa7e5538e3a034f72", size = 81879, upload-time = "2025-01-14T10:33:52.328Z" }, + { url = "https://files.pythonhosted.org/packages/8f/fa/9fb6e594f2ce03ef03eddbdb5f4f90acb1452221a5351116c7c4708ac865/wrapt-1.17.2-cp311-cp311-win32.whl", hash = "sha256:4afd5814270fdf6380616b321fd31435a462019d834f83c8611a0ce7484c7317", size = 36419, upload-time = "2025-01-14T10:33:53.551Z" }, + { url = "https://files.pythonhosted.org/packages/47/f8/fb1773491a253cbc123c5d5dc15c86041f746ed30416535f2a8df1f4a392/wrapt-1.17.2-cp311-cp311-win_amd64.whl", hash = "sha256:acc130bc0375999da18e3d19e5a86403667ac0c4042a094fefb7eec8ebac7cf3", size = 38773, upload-time = "2025-01-14T10:33:56.323Z" }, + { url = "https://files.pythonhosted.org/packages/a1/bd/ab55f849fd1f9a58ed7ea47f5559ff09741b25f00c191231f9f059c83949/wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925", size = 53799, upload-time = "2025-01-14T10:33:57.4Z" }, + { url = "https://files.pythonhosted.org/packages/53/18/75ddc64c3f63988f5a1d7e10fb204ffe5762bc663f8023f18ecaf31a332e/wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392", size = 38821, upload-time = "2025-01-14T10:33:59.334Z" }, + { url = "https://files.pythonhosted.org/packages/48/2a/97928387d6ed1c1ebbfd4efc4133a0633546bec8481a2dd5ec961313a1c7/wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40", size = 38919, upload-time = "2025-01-14T10:34:04.093Z" }, + { url = "https://files.pythonhosted.org/packages/73/54/3bfe5a1febbbccb7a2f77de47b989c0b85ed3a6a41614b104204a788c20e/wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d", size = 88721, upload-time = "2025-01-14T10:34:07.163Z" }, + { url = "https://files.pythonhosted.org/packages/25/cb/7262bc1b0300b4b64af50c2720ef958c2c1917525238d661c3e9a2b71b7b/wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b", size = 80899, upload-time = "2025-01-14T10:34:09.82Z" }, + { url = "https://files.pythonhosted.org/packages/2a/5a/04cde32b07a7431d4ed0553a76fdb7a61270e78c5fd5a603e190ac389f14/wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98", size = 89222, upload-time = "2025-01-14T10:34:11.258Z" }, + { url = "https://files.pythonhosted.org/packages/09/28/2e45a4f4771fcfb109e244d5dbe54259e970362a311b67a965555ba65026/wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82", size = 86707, upload-time = "2025-01-14T10:34:12.49Z" }, + { url = "https://files.pythonhosted.org/packages/c6/d2/dcb56bf5f32fcd4bd9aacc77b50a539abdd5b6536872413fd3f428b21bed/wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae", size = 79685, upload-time = "2025-01-14T10:34:15.043Z" }, + { url = "https://files.pythonhosted.org/packages/80/4e/eb8b353e36711347893f502ce91c770b0b0929f8f0bed2670a6856e667a9/wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9", size = 87567, upload-time = "2025-01-14T10:34:16.563Z" }, + { url = "https://files.pythonhosted.org/packages/17/27/4fe749a54e7fae6e7146f1c7d914d28ef599dacd4416566c055564080fe2/wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9", size = 36672, upload-time = "2025-01-14T10:34:17.727Z" }, + { url = "https://files.pythonhosted.org/packages/15/06/1dbf478ea45c03e78a6a8c4be4fdc3c3bddea5c8de8a93bc971415e47f0f/wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991", size = 38865, upload-time = "2025-01-14T10:34:19.577Z" }, + { url = "https://files.pythonhosted.org/packages/ce/b9/0ffd557a92f3b11d4c5d5e0c5e4ad057bd9eb8586615cdaf901409920b14/wrapt-1.17.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6ed6ffac43aecfe6d86ec5b74b06a5be33d5bb9243d055141e8cabb12aa08125", size = 53800, upload-time = "2025-01-14T10:34:21.571Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ef/8be90a0b7e73c32e550c73cfb2fa09db62234227ece47b0e80a05073b375/wrapt-1.17.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:35621ae4c00e056adb0009f8e86e28eb4a41a4bfa8f9bfa9fca7d343fe94f998", size = 38824, upload-time = "2025-01-14T10:34:22.999Z" }, + { url = "https://files.pythonhosted.org/packages/36/89/0aae34c10fe524cce30fe5fc433210376bce94cf74d05b0d68344c8ba46e/wrapt-1.17.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a604bf7a053f8362d27eb9fefd2097f82600b856d5abe996d623babd067b1ab5", size = 38920, upload-time = "2025-01-14T10:34:25.386Z" }, + { url = "https://files.pythonhosted.org/packages/3b/24/11c4510de906d77e0cfb5197f1b1445d4fec42c9a39ea853d482698ac681/wrapt-1.17.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cbabee4f083b6b4cd282f5b817a867cf0b1028c54d445b7ec7cfe6505057cf8", size = 88690, upload-time = "2025-01-14T10:34:28.058Z" }, + { url = "https://files.pythonhosted.org/packages/71/d7/cfcf842291267bf455b3e266c0c29dcb675b5540ee8b50ba1699abf3af45/wrapt-1.17.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49703ce2ddc220df165bd2962f8e03b84c89fee2d65e1c24a7defff6f988f4d6", size = 80861, upload-time = "2025-01-14T10:34:29.167Z" }, + { url = "https://files.pythonhosted.org/packages/d5/66/5d973e9f3e7370fd686fb47a9af3319418ed925c27d72ce16b791231576d/wrapt-1.17.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8112e52c5822fc4253f3901b676c55ddf288614dc7011634e2719718eaa187dc", size = 89174, upload-time = "2025-01-14T10:34:31.702Z" }, + { url = "https://files.pythonhosted.org/packages/a7/d3/8e17bb70f6ae25dabc1aaf990f86824e4fd98ee9cadf197054e068500d27/wrapt-1.17.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9fee687dce376205d9a494e9c121e27183b2a3df18037f89d69bd7b35bcf59e2", size = 86721, upload-time = "2025-01-14T10:34:32.91Z" }, + { url = "https://files.pythonhosted.org/packages/6f/54/f170dfb278fe1c30d0ff864513cff526d624ab8de3254b20abb9cffedc24/wrapt-1.17.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:18983c537e04d11cf027fbb60a1e8dfd5190e2b60cc27bc0808e653e7b218d1b", size = 79763, upload-time = "2025-01-14T10:34:34.903Z" }, + { url = "https://files.pythonhosted.org/packages/4a/98/de07243751f1c4a9b15c76019250210dd3486ce098c3d80d5f729cba029c/wrapt-1.17.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:703919b1633412ab54bcf920ab388735832fdcb9f9a00ae49387f0fe67dad504", size = 87585, upload-time = "2025-01-14T10:34:36.13Z" }, + { url = "https://files.pythonhosted.org/packages/f9/f0/13925f4bd6548013038cdeb11ee2cbd4e37c30f8bfd5db9e5a2a370d6e20/wrapt-1.17.2-cp313-cp313-win32.whl", hash = "sha256:abbb9e76177c35d4e8568e58650aa6926040d6a9f6f03435b7a522bf1c487f9a", size = 36676, upload-time = "2025-01-14T10:34:37.962Z" }, + { url = "https://files.pythonhosted.org/packages/bf/ae/743f16ef8c2e3628df3ddfd652b7d4c555d12c84b53f3d8218498f4ade9b/wrapt-1.17.2-cp313-cp313-win_amd64.whl", hash = "sha256:69606d7bb691b50a4240ce6b22ebb319c1cfb164e5f6569835058196e0f3a845", size = 38871, upload-time = "2025-01-14T10:34:39.13Z" }, + { url = "https://files.pythonhosted.org/packages/3d/bc/30f903f891a82d402ffb5fda27ec1d621cc97cb74c16fea0b6141f1d4e87/wrapt-1.17.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:4a721d3c943dae44f8e243b380cb645a709ba5bd35d3ad27bc2ed947e9c68192", size = 56312, upload-time = "2025-01-14T10:34:40.604Z" }, + { url = "https://files.pythonhosted.org/packages/8a/04/c97273eb491b5f1c918857cd26f314b74fc9b29224521f5b83f872253725/wrapt-1.17.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:766d8bbefcb9e00c3ac3b000d9acc51f1b399513f44d77dfe0eb026ad7c9a19b", size = 40062, upload-time = "2025-01-14T10:34:45.011Z" }, + { url = "https://files.pythonhosted.org/packages/4e/ca/3b7afa1eae3a9e7fefe499db9b96813f41828b9fdb016ee836c4c379dadb/wrapt-1.17.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e496a8ce2c256da1eb98bd15803a79bee00fc351f5dfb9ea82594a3f058309e0", size = 40155, upload-time = "2025-01-14T10:34:47.25Z" }, + { url = "https://files.pythonhosted.org/packages/89/be/7c1baed43290775cb9030c774bc53c860db140397047cc49aedaf0a15477/wrapt-1.17.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d615e4fe22f4ad3528448c193b218e077656ca9ccb22ce2cb20db730f8d306", size = 113471, upload-time = "2025-01-14T10:34:50.934Z" }, + { url = "https://files.pythonhosted.org/packages/32/98/4ed894cf012b6d6aae5f5cc974006bdeb92f0241775addad3f8cd6ab71c8/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a5aaeff38654462bc4b09023918b7f21790efb807f54c000a39d41d69cf552cb", size = 101208, upload-time = "2025-01-14T10:34:52.297Z" }, + { url = "https://files.pythonhosted.org/packages/ea/fd/0c30f2301ca94e655e5e057012e83284ce8c545df7661a78d8bfca2fac7a/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a7d15bbd2bc99e92e39f49a04653062ee6085c0e18b3b7512a4f2fe91f2d681", size = 109339, upload-time = "2025-01-14T10:34:53.489Z" }, + { url = "https://files.pythonhosted.org/packages/75/56/05d000de894c4cfcb84bcd6b1df6214297b8089a7bd324c21a4765e49b14/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e3890b508a23299083e065f435a492b5435eba6e304a7114d2f919d400888cc6", size = 110232, upload-time = "2025-01-14T10:34:55.327Z" }, + { url = "https://files.pythonhosted.org/packages/53/f8/c3f6b2cf9b9277fb0813418e1503e68414cd036b3b099c823379c9575e6d/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8c8b293cd65ad716d13d8dd3624e42e5a19cc2a2f1acc74b30c2c13f15cb61a6", size = 100476, upload-time = "2025-01-14T10:34:58.055Z" }, + { url = "https://files.pythonhosted.org/packages/a7/b1/0bb11e29aa5139d90b770ebbfa167267b1fc548d2302c30c8f7572851738/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c82b8785d98cdd9fed4cac84d765d234ed3251bd6afe34cb7ac523cb93e8b4f", size = 106377, upload-time = "2025-01-14T10:34:59.3Z" }, + { url = "https://files.pythonhosted.org/packages/6a/e1/0122853035b40b3f333bbb25f1939fc1045e21dd518f7f0922b60c156f7c/wrapt-1.17.2-cp313-cp313t-win32.whl", hash = "sha256:13e6afb7fe71fe7485a4550a8844cc9ffbe263c0f1a1eea569bc7091d4898555", size = 37986, upload-time = "2025-01-14T10:35:00.498Z" }, + { url = "https://files.pythonhosted.org/packages/09/5e/1655cf481e079c1f22d0cabdd4e51733679932718dc23bf2db175f329b76/wrapt-1.17.2-cp313-cp313t-win_amd64.whl", hash = "sha256:eaf675418ed6b3b31c7a989fd007fa7c3be66ce14e5c3b27336383604c9da85c", size = 40750, upload-time = "2025-01-14T10:35:03.378Z" }, + { url = "https://files.pythonhosted.org/packages/2d/82/f56956041adef78f849db6b289b282e72b55ab8045a75abad81898c28d19/wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", size = 23594, upload-time = "2025-01-14T10:35:44.018Z" }, +] + +[[package]] +name = "xarray" +version = "2025.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "packaging" }, + { name = "pandas", version = "2.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, + { name = "pandas", version = "2.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9b/29/37761364e137db13898cf5a790574dd7883f7355d5dfb42b66ee7a9a6318/xarray-2025.4.0.tar.gz", hash = "sha256:2a89cd6a1dfd589aa90ac45f4e483246f31fc641836db45dd2790bb78bd333dc", size = 2974151, upload-time = "2025-04-29T23:27:59.238Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a4/1e/96fd96419fec1a37da998a1ca3d558f2cae2f6f3cd5015170371b05a2b6b/xarray-2025.4.0-py3-none-any.whl", hash = "sha256:b27defd082c5cb85d32c695708de6bb05c2838fb7caaf3f952982e602a35b9b8", size = 1290171, upload-time = "2025-04-29T23:27:57.059Z" }, +] + +[[package]] +name = "xmle" +version = "0.1.26" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/89/7a/4018bd5ef75677935d064ce543d1b9788821e27faef606682b6adae0b688/xmle-0.1.26.tar.gz", hash = "sha256:3e41d548305a6738d5cee42277ecb955cbe4195920f9206a2511f552b52330b1", size = 28911, upload-time = "2025-01-17T23:53:00.883Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/49/dd/69f51e20712ddb8e8a7a904209929be1768868a8df41d5ea7615b0baca03/xmle-0.1.26-py3-none-any.whl", hash = "sha256:7a699cc93c7822531cd3f37e07f249e89a9a395e4bc38bd6d4680183c09a8df1", size = 27214, upload-time = "2025-01-17T23:52:58.534Z" }, +] + +[[package]] +name = "yamllint" +version = "1.37.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pathspec" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/46/f2/cd8b7584a48ee83f0bc94f8a32fea38734cefcdc6f7324c4d3bfc699457b/yamllint-1.37.1.tar.gz", hash = "sha256:81f7c0c5559becc8049470d86046b36e96113637bcbe4753ecef06977c00245d", size = 141613, upload-time = "2025-05-04T08:25:54.355Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dd/b9/be7a4cfdf47e03785f657f94daea8123e838d817be76c684298305bd789f/yamllint-1.37.1-py3-none-any.whl", hash = "sha256:364f0d79e81409f591e323725e6a9f4504c8699ddf2d7263d8d2b539cd66a583", size = 68813, upload-time = "2025-05-04T08:25:52.552Z" }, +] + +[[package]] +name = "zarr" +version = "2.18.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11'", +] +dependencies = [ + { name = "asciitree", marker = "python_full_version < '3.11'" }, + { name = "fasteners", marker = "python_full_version < '3.11' and sys_platform != 'emscripten'" }, + { name = "numcodecs", version = "0.13.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/23/c4/187a21ce7cf7c8f00c060dd0e04c2a81139bb7b1ab178bba83f2e1134ce2/zarr-2.18.3.tar.gz", hash = "sha256:2580d8cb6dd84621771a10d31c4d777dca8a27706a1a89b29f42d2d37e2df5ce", size = 3603224, upload-time = "2024-09-04T23:20:16.595Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/c9/142095e654c2b97133ff71df60979422717b29738b08bc8a1709a5d5e0d0/zarr-2.18.3-py3-none-any.whl", hash = "sha256:b1f7dfd2496f436745cdd4c7bcf8d3b4bc1dceef5fdd0d589c87130d842496dd", size = 210723, upload-time = "2024-09-04T23:20:14.491Z" }, +] + +[[package]] +name = "zarr" +version = "2.18.7" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", +] +dependencies = [ + { name = "asciitree", marker = "python_full_version >= '3.11'" }, + { name = "fasteners", marker = "python_full_version >= '3.11' and sys_platform != 'emscripten'" }, + { name = "numcodecs", version = "0.15.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "numpy", marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/da/1d/01cf9e3ab2d85190278efc3fca9f68563de35ae30ee59e7640e3af98abe3/zarr-2.18.7.tar.gz", hash = "sha256:b2b8f66f14dac4af66b180d2338819981b981f70e196c9a66e6bfaa9e59572f5", size = 3604558, upload-time = "2025-04-09T07:59:28.482Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5e/d8/9ffd8c237b3559945bb52103cf0eed64ea098f7b7f573f8d2962ef27b4b2/zarr-2.18.7-py3-none-any.whl", hash = "sha256:ac3dc4033e9ae4e9d7b5e27c97ea3eaf1003cc0a07f010bd83d5134bf8c4b223", size = 211273, upload-time = "2025-04-09T07:59:27.039Z" }, +] + +[[package]] +name = "zipp" +version = "3.23.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e3/02/0f2892c661036d50ede074e376733dca2ae7c6eb617489437771209d4180/zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166", size = 25547, upload-time = "2025-06-08T17:06:39.4Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2e/54/647ade08bf0db230bfea292f893923872fd20be6ac6f53b2b936ba839d75/zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e", size = 10276, upload-time = "2025-06-08T17:06:38.034Z" }, +] + +[[package]] +name = "zstandard" +version = "0.23.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "platform_python_implementation == 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ed/f6/2ac0287b442160a89d726b17a9184a4c615bb5237db763791a7fd16d9df1/zstandard-0.23.0.tar.gz", hash = "sha256:b2d8c62d08e7255f68f7a740bae85b3c9b8e5466baa9cbf7f57f1cde0ac6bc09", size = 681701, upload-time = "2024-07-15T00:18:06.141Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/55/bd0487e86679db1823fc9ee0d8c9c78ae2413d34c0b461193b5f4c31d22f/zstandard-0.23.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bf0a05b6059c0528477fba9054d09179beb63744355cab9f38059548fedd46a9", size = 788701, upload-time = "2024-07-15T00:13:27.351Z" }, + { url = "https://files.pythonhosted.org/packages/e1/8a/ccb516b684f3ad987dfee27570d635822e3038645b1a950c5e8022df1145/zstandard-0.23.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fc9ca1c9718cb3b06634c7c8dec57d24e9438b2aa9a0f02b8bb36bf478538880", size = 633678, upload-time = "2024-07-15T00:13:30.24Z" }, + { url = "https://files.pythonhosted.org/packages/12/89/75e633d0611c028e0d9af6df199423bf43f54bea5007e6718ab7132e234c/zstandard-0.23.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77da4c6bfa20dd5ea25cbf12c76f181a8e8cd7ea231c673828d0386b1740b8dc", size = 4941098, upload-time = "2024-07-15T00:13:32.526Z" }, + { url = "https://files.pythonhosted.org/packages/4a/7a/bd7f6a21802de358b63f1ee636ab823711c25ce043a3e9f043b4fcb5ba32/zstandard-0.23.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b2170c7e0367dde86a2647ed5b6f57394ea7f53545746104c6b09fc1f4223573", size = 5308798, upload-time = "2024-07-15T00:13:34.925Z" }, + { url = "https://files.pythonhosted.org/packages/79/3b/775f851a4a65013e88ca559c8ae42ac1352db6fcd96b028d0df4d7d1d7b4/zstandard-0.23.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c16842b846a8d2a145223f520b7e18b57c8f476924bda92aeee3a88d11cfc391", size = 5341840, upload-time = "2024-07-15T00:13:37.376Z" }, + { url = "https://files.pythonhosted.org/packages/09/4f/0cc49570141dd72d4d95dd6fcf09328d1b702c47a6ec12fbed3b8aed18a5/zstandard-0.23.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:157e89ceb4054029a289fb504c98c6a9fe8010f1680de0201b3eb5dc20aa6d9e", size = 5440337, upload-time = "2024-07-15T00:13:39.772Z" }, + { url = "https://files.pythonhosted.org/packages/e7/7c/aaa7cd27148bae2dc095191529c0570d16058c54c4597a7d118de4b21676/zstandard-0.23.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:203d236f4c94cd8379d1ea61db2fce20730b4c38d7f1c34506a31b34edc87bdd", size = 4861182, upload-time = "2024-07-15T00:13:42.495Z" }, + { url = "https://files.pythonhosted.org/packages/ac/eb/4b58b5c071d177f7dc027129d20bd2a44161faca6592a67f8fcb0b88b3ae/zstandard-0.23.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:dc5d1a49d3f8262be192589a4b72f0d03b72dcf46c51ad5852a4fdc67be7b9e4", size = 4932936, upload-time = "2024-07-15T00:13:44.234Z" }, + { url = "https://files.pythonhosted.org/packages/44/f9/21a5fb9bb7c9a274b05ad700a82ad22ce82f7ef0f485980a1e98ed6e8c5f/zstandard-0.23.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:752bf8a74412b9892f4e5b58f2f890a039f57037f52c89a740757ebd807f33ea", size = 5464705, upload-time = "2024-07-15T00:13:46.822Z" }, + { url = "https://files.pythonhosted.org/packages/49/74/b7b3e61db3f88632776b78b1db597af3f44c91ce17d533e14a25ce6a2816/zstandard-0.23.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:80080816b4f52a9d886e67f1f96912891074903238fe54f2de8b786f86baded2", size = 4857882, upload-time = "2024-07-15T00:13:49.297Z" }, + { url = "https://files.pythonhosted.org/packages/4a/7f/d8eb1cb123d8e4c541d4465167080bec88481ab54cd0b31eb4013ba04b95/zstandard-0.23.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:84433dddea68571a6d6bd4fbf8ff398236031149116a7fff6f777ff95cad3df9", size = 4697672, upload-time = "2024-07-15T00:13:51.447Z" }, + { url = "https://files.pythonhosted.org/packages/5e/05/f7dccdf3d121309b60342da454d3e706453a31073e2c4dac8e1581861e44/zstandard-0.23.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:ab19a2d91963ed9e42b4e8d77cd847ae8381576585bad79dbd0a8837a9f6620a", size = 5206043, upload-time = "2024-07-15T00:13:53.587Z" }, + { url = "https://files.pythonhosted.org/packages/86/9d/3677a02e172dccd8dd3a941307621c0cbd7691d77cb435ac3c75ab6a3105/zstandard-0.23.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:59556bf80a7094d0cfb9f5e50bb2db27fefb75d5138bb16fb052b61b0e0eeeb0", size = 5667390, upload-time = "2024-07-15T00:13:56.137Z" }, + { url = "https://files.pythonhosted.org/packages/41/7e/0012a02458e74a7ba122cd9cafe491facc602c9a17f590367da369929498/zstandard-0.23.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:27d3ef2252d2e62476389ca8f9b0cf2bbafb082a3b6bfe9d90cbcbb5529ecf7c", size = 5198901, upload-time = "2024-07-15T00:13:58.584Z" }, + { url = "https://files.pythonhosted.org/packages/65/3a/8f715b97bd7bcfc7342d8adcd99a026cb2fb550e44866a3b6c348e1b0f02/zstandard-0.23.0-cp310-cp310-win32.whl", hash = "sha256:5d41d5e025f1e0bccae4928981e71b2334c60f580bdc8345f824e7c0a4c2a813", size = 430596, upload-time = "2024-07-15T00:14:00.693Z" }, + { url = "https://files.pythonhosted.org/packages/19/b7/b2b9eca5e5a01111e4fe8a8ffb56bdcdf56b12448a24effe6cfe4a252034/zstandard-0.23.0-cp310-cp310-win_amd64.whl", hash = "sha256:519fbf169dfac1222a76ba8861ef4ac7f0530c35dd79ba5727014613f91613d4", size = 495498, upload-time = "2024-07-15T00:14:02.741Z" }, + { url = "https://files.pythonhosted.org/packages/9e/40/f67e7d2c25a0e2dc1744dd781110b0b60306657f8696cafb7ad7579469bd/zstandard-0.23.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:34895a41273ad33347b2fc70e1bff4240556de3c46c6ea430a7ed91f9042aa4e", size = 788699, upload-time = "2024-07-15T00:14:04.909Z" }, + { url = "https://files.pythonhosted.org/packages/e8/46/66d5b55f4d737dd6ab75851b224abf0afe5774976fe511a54d2eb9063a41/zstandard-0.23.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:77ea385f7dd5b5676d7fd943292ffa18fbf5c72ba98f7d09fc1fb9e819b34c23", size = 633681, upload-time = "2024-07-15T00:14:13.99Z" }, + { url = "https://files.pythonhosted.org/packages/63/b6/677e65c095d8e12b66b8f862b069bcf1f1d781b9c9c6f12eb55000d57583/zstandard-0.23.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:983b6efd649723474f29ed42e1467f90a35a74793437d0bc64a5bf482bedfa0a", size = 4944328, upload-time = "2024-07-15T00:14:16.588Z" }, + { url = "https://files.pythonhosted.org/packages/59/cc/e76acb4c42afa05a9d20827116d1f9287e9c32b7ad58cc3af0721ce2b481/zstandard-0.23.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80a539906390591dd39ebb8d773771dc4db82ace6372c4d41e2d293f8e32b8db", size = 5311955, upload-time = "2024-07-15T00:14:19.389Z" }, + { url = "https://files.pythonhosted.org/packages/78/e4/644b8075f18fc7f632130c32e8f36f6dc1b93065bf2dd87f03223b187f26/zstandard-0.23.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:445e4cb5048b04e90ce96a79b4b63140e3f4ab5f662321975679b5f6360b90e2", size = 5344944, upload-time = "2024-07-15T00:14:22.173Z" }, + { url = "https://files.pythonhosted.org/packages/76/3f/dbafccf19cfeca25bbabf6f2dd81796b7218f768ec400f043edc767015a6/zstandard-0.23.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd30d9c67d13d891f2360b2a120186729c111238ac63b43dbd37a5a40670b8ca", size = 5442927, upload-time = "2024-07-15T00:14:24.825Z" }, + { url = "https://files.pythonhosted.org/packages/0c/c3/d24a01a19b6733b9f218e94d1a87c477d523237e07f94899e1c10f6fd06c/zstandard-0.23.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d20fd853fbb5807c8e84c136c278827b6167ded66c72ec6f9a14b863d809211c", size = 4864910, upload-time = "2024-07-15T00:14:26.982Z" }, + { url = "https://files.pythonhosted.org/packages/1c/a9/cf8f78ead4597264f7618d0875be01f9bc23c9d1d11afb6d225b867cb423/zstandard-0.23.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ed1708dbf4d2e3a1c5c69110ba2b4eb6678262028afd6c6fbcc5a8dac9cda68e", size = 4935544, upload-time = "2024-07-15T00:14:29.582Z" }, + { url = "https://files.pythonhosted.org/packages/2c/96/8af1e3731b67965fb995a940c04a2c20997a7b3b14826b9d1301cf160879/zstandard-0.23.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:be9b5b8659dff1f913039c2feee1aca499cfbc19e98fa12bc85e037c17ec6ca5", size = 5467094, upload-time = "2024-07-15T00:14:40.126Z" }, + { url = "https://files.pythonhosted.org/packages/ff/57/43ea9df642c636cb79f88a13ab07d92d88d3bfe3e550b55a25a07a26d878/zstandard-0.23.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:65308f4b4890aa12d9b6ad9f2844b7ee42c7f7a4fd3390425b242ffc57498f48", size = 4860440, upload-time = "2024-07-15T00:14:42.786Z" }, + { url = "https://files.pythonhosted.org/packages/46/37/edb78f33c7f44f806525f27baa300341918fd4c4af9472fbc2c3094be2e8/zstandard-0.23.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:98da17ce9cbf3bfe4617e836d561e433f871129e3a7ac16d6ef4c680f13a839c", size = 4700091, upload-time = "2024-07-15T00:14:45.184Z" }, + { url = "https://files.pythonhosted.org/packages/c1/f1/454ac3962671a754f3cb49242472df5c2cced4eb959ae203a377b45b1a3c/zstandard-0.23.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:8ed7d27cb56b3e058d3cf684d7200703bcae623e1dcc06ed1e18ecda39fee003", size = 5208682, upload-time = "2024-07-15T00:14:47.407Z" }, + { url = "https://files.pythonhosted.org/packages/85/b2/1734b0fff1634390b1b887202d557d2dd542de84a4c155c258cf75da4773/zstandard-0.23.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:b69bb4f51daf461b15e7b3db033160937d3ff88303a7bc808c67bbc1eaf98c78", size = 5669707, upload-time = "2024-07-15T00:15:03.529Z" }, + { url = "https://files.pythonhosted.org/packages/52/5a/87d6971f0997c4b9b09c495bf92189fb63de86a83cadc4977dc19735f652/zstandard-0.23.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:034b88913ecc1b097f528e42b539453fa82c3557e414b3de9d5632c80439a473", size = 5201792, upload-time = "2024-07-15T00:15:28.372Z" }, + { url = "https://files.pythonhosted.org/packages/79/02/6f6a42cc84459d399bd1a4e1adfc78d4dfe45e56d05b072008d10040e13b/zstandard-0.23.0-cp311-cp311-win32.whl", hash = "sha256:f2d4380bf5f62daabd7b751ea2339c1a21d1c9463f1feb7fc2bdcea2c29c3160", size = 430586, upload-time = "2024-07-15T00:15:32.26Z" }, + { url = "https://files.pythonhosted.org/packages/be/a2/4272175d47c623ff78196f3c10e9dc7045c1b9caf3735bf041e65271eca4/zstandard-0.23.0-cp311-cp311-win_amd64.whl", hash = "sha256:62136da96a973bd2557f06ddd4e8e807f9e13cbb0bfb9cc06cfe6d98ea90dfe0", size = 495420, upload-time = "2024-07-15T00:15:34.004Z" }, + { url = "https://files.pythonhosted.org/packages/7b/83/f23338c963bd9de687d47bf32efe9fd30164e722ba27fb59df33e6b1719b/zstandard-0.23.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b4567955a6bc1b20e9c31612e615af6b53733491aeaa19a6b3b37f3b65477094", size = 788713, upload-time = "2024-07-15T00:15:35.815Z" }, + { url = "https://files.pythonhosted.org/packages/5b/b3/1a028f6750fd9227ee0b937a278a434ab7f7fdc3066c3173f64366fe2466/zstandard-0.23.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e172f57cd78c20f13a3415cc8dfe24bf388614324d25539146594c16d78fcc8", size = 633459, upload-time = "2024-07-15T00:15:37.995Z" }, + { url = "https://files.pythonhosted.org/packages/26/af/36d89aae0c1f95a0a98e50711bc5d92c144939efc1f81a2fcd3e78d7f4c1/zstandard-0.23.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b0e166f698c5a3e914947388c162be2583e0c638a4703fc6a543e23a88dea3c1", size = 4945707, upload-time = "2024-07-15T00:15:39.872Z" }, + { url = "https://files.pythonhosted.org/packages/cd/2e/2051f5c772f4dfc0aae3741d5fc72c3dcfe3aaeb461cc231668a4db1ce14/zstandard-0.23.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:12a289832e520c6bd4dcaad68e944b86da3bad0d339ef7989fb7e88f92e96072", size = 5306545, upload-time = "2024-07-15T00:15:41.75Z" }, + { url = "https://files.pythonhosted.org/packages/0a/9e/a11c97b087f89cab030fa71206963090d2fecd8eb83e67bb8f3ffb84c024/zstandard-0.23.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d50d31bfedd53a928fed6707b15a8dbeef011bb6366297cc435accc888b27c20", size = 5337533, upload-time = "2024-07-15T00:15:44.114Z" }, + { url = "https://files.pythonhosted.org/packages/fc/79/edeb217c57fe1bf16d890aa91a1c2c96b28c07b46afed54a5dcf310c3f6f/zstandard-0.23.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72c68dda124a1a138340fb62fa21b9bf4848437d9ca60bd35db36f2d3345f373", size = 5436510, upload-time = "2024-07-15T00:15:46.509Z" }, + { url = "https://files.pythonhosted.org/packages/81/4f/c21383d97cb7a422ddf1ae824b53ce4b51063d0eeb2afa757eb40804a8ef/zstandard-0.23.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:53dd9d5e3d29f95acd5de6802e909ada8d8d8cfa37a3ac64836f3bc4bc5512db", size = 4859973, upload-time = "2024-07-15T00:15:49.939Z" }, + { url = "https://files.pythonhosted.org/packages/ab/15/08d22e87753304405ccac8be2493a495f529edd81d39a0870621462276ef/zstandard-0.23.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:6a41c120c3dbc0d81a8e8adc73312d668cd34acd7725f036992b1b72d22c1772", size = 4936968, upload-time = "2024-07-15T00:15:52.025Z" }, + { url = "https://files.pythonhosted.org/packages/eb/fa/f3670a597949fe7dcf38119a39f7da49a8a84a6f0b1a2e46b2f71a0ab83f/zstandard-0.23.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:40b33d93c6eddf02d2c19f5773196068d875c41ca25730e8288e9b672897c105", size = 5467179, upload-time = "2024-07-15T00:15:54.971Z" }, + { url = "https://files.pythonhosted.org/packages/4e/a9/dad2ab22020211e380adc477a1dbf9f109b1f8d94c614944843e20dc2a99/zstandard-0.23.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9206649ec587e6b02bd124fb7799b86cddec350f6f6c14bc82a2b70183e708ba", size = 4848577, upload-time = "2024-07-15T00:15:57.634Z" }, + { url = "https://files.pythonhosted.org/packages/08/03/dd28b4484b0770f1e23478413e01bee476ae8227bbc81561f9c329e12564/zstandard-0.23.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:76e79bc28a65f467e0409098fa2c4376931fd3207fbeb6b956c7c476d53746dd", size = 4693899, upload-time = "2024-07-15T00:16:00.811Z" }, + { url = "https://files.pythonhosted.org/packages/2b/64/3da7497eb635d025841e958bcd66a86117ae320c3b14b0ae86e9e8627518/zstandard-0.23.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:66b689c107857eceabf2cf3d3fc699c3c0fe8ccd18df2219d978c0283e4c508a", size = 5199964, upload-time = "2024-07-15T00:16:03.669Z" }, + { url = "https://files.pythonhosted.org/packages/43/a4/d82decbab158a0e8a6ebb7fc98bc4d903266bce85b6e9aaedea1d288338c/zstandard-0.23.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9c236e635582742fee16603042553d276cca506e824fa2e6489db04039521e90", size = 5655398, upload-time = "2024-07-15T00:16:06.694Z" }, + { url = "https://files.pythonhosted.org/packages/f2/61/ac78a1263bc83a5cf29e7458b77a568eda5a8f81980691bbc6eb6a0d45cc/zstandard-0.23.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a8fffdbd9d1408006baaf02f1068d7dd1f016c6bcb7538682622c556e7b68e35", size = 5191313, upload-time = "2024-07-15T00:16:09.758Z" }, + { url = "https://files.pythonhosted.org/packages/e7/54/967c478314e16af5baf849b6ee9d6ea724ae5b100eb506011f045d3d4e16/zstandard-0.23.0-cp312-cp312-win32.whl", hash = "sha256:dc1d33abb8a0d754ea4763bad944fd965d3d95b5baef6b121c0c9013eaf1907d", size = 430877, upload-time = "2024-07-15T00:16:11.758Z" }, + { url = "https://files.pythonhosted.org/packages/75/37/872d74bd7739639c4553bf94c84af7d54d8211b626b352bc57f0fd8d1e3f/zstandard-0.23.0-cp312-cp312-win_amd64.whl", hash = "sha256:64585e1dba664dc67c7cdabd56c1e5685233fbb1fc1966cfba2a340ec0dfff7b", size = 495595, upload-time = "2024-07-15T00:16:13.731Z" }, + { url = "https://files.pythonhosted.org/packages/80/f1/8386f3f7c10261fe85fbc2c012fdb3d4db793b921c9abcc995d8da1b7a80/zstandard-0.23.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:576856e8594e6649aee06ddbfc738fec6a834f7c85bf7cadd1c53d4a58186ef9", size = 788975, upload-time = "2024-07-15T00:16:16.005Z" }, + { url = "https://files.pythonhosted.org/packages/16/e8/cbf01077550b3e5dc86089035ff8f6fbbb312bc0983757c2d1117ebba242/zstandard-0.23.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:38302b78a850ff82656beaddeb0bb989a0322a8bbb1bf1ab10c17506681d772a", size = 633448, upload-time = "2024-07-15T00:16:17.897Z" }, + { url = "https://files.pythonhosted.org/packages/06/27/4a1b4c267c29a464a161aeb2589aff212b4db653a1d96bffe3598f3f0d22/zstandard-0.23.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2240ddc86b74966c34554c49d00eaafa8200a18d3a5b6ffbf7da63b11d74ee2", size = 4945269, upload-time = "2024-07-15T00:16:20.136Z" }, + { url = "https://files.pythonhosted.org/packages/7c/64/d99261cc57afd9ae65b707e38045ed8269fbdae73544fd2e4a4d50d0ed83/zstandard-0.23.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2ef230a8fd217a2015bc91b74f6b3b7d6522ba48be29ad4ea0ca3a3775bf7dd5", size = 5306228, upload-time = "2024-07-15T00:16:23.398Z" }, + { url = "https://files.pythonhosted.org/packages/7a/cf/27b74c6f22541f0263016a0fd6369b1b7818941de639215c84e4e94b2a1c/zstandard-0.23.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:774d45b1fac1461f48698a9d4b5fa19a69d47ece02fa469825b442263f04021f", size = 5336891, upload-time = "2024-07-15T00:16:26.391Z" }, + { url = "https://files.pythonhosted.org/packages/fa/18/89ac62eac46b69948bf35fcd90d37103f38722968e2981f752d69081ec4d/zstandard-0.23.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f77fa49079891a4aab203d0b1744acc85577ed16d767b52fc089d83faf8d8ed", size = 5436310, upload-time = "2024-07-15T00:16:29.018Z" }, + { url = "https://files.pythonhosted.org/packages/a8/a8/5ca5328ee568a873f5118d5b5f70d1f36c6387716efe2e369010289a5738/zstandard-0.23.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ac184f87ff521f4840e6ea0b10c0ec90c6b1dcd0bad2f1e4a9a1b4fa177982ea", size = 4859912, upload-time = "2024-07-15T00:16:31.871Z" }, + { url = "https://files.pythonhosted.org/packages/ea/ca/3781059c95fd0868658b1cf0440edd832b942f84ae60685d0cfdb808bca1/zstandard-0.23.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c363b53e257246a954ebc7c488304b5592b9c53fbe74d03bc1c64dda153fb847", size = 4936946, upload-time = "2024-07-15T00:16:34.593Z" }, + { url = "https://files.pythonhosted.org/packages/ce/11/41a58986f809532742c2b832c53b74ba0e0a5dae7e8ab4642bf5876f35de/zstandard-0.23.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e7792606d606c8df5277c32ccb58f29b9b8603bf83b48639b7aedf6df4fe8171", size = 5466994, upload-time = "2024-07-15T00:16:36.887Z" }, + { url = "https://files.pythonhosted.org/packages/83/e3/97d84fe95edd38d7053af05159465d298c8b20cebe9ccb3d26783faa9094/zstandard-0.23.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a0817825b900fcd43ac5d05b8b3079937073d2b1ff9cf89427590718b70dd840", size = 4848681, upload-time = "2024-07-15T00:16:39.709Z" }, + { url = "https://files.pythonhosted.org/packages/6e/99/cb1e63e931de15c88af26085e3f2d9af9ce53ccafac73b6e48418fd5a6e6/zstandard-0.23.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:9da6bc32faac9a293ddfdcb9108d4b20416219461e4ec64dfea8383cac186690", size = 4694239, upload-time = "2024-07-15T00:16:41.83Z" }, + { url = "https://files.pythonhosted.org/packages/ab/50/b1e703016eebbc6501fc92f34db7b1c68e54e567ef39e6e59cf5fb6f2ec0/zstandard-0.23.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:fd7699e8fd9969f455ef2926221e0233f81a2542921471382e77a9e2f2b57f4b", size = 5200149, upload-time = "2024-07-15T00:16:44.287Z" }, + { url = "https://files.pythonhosted.org/packages/aa/e0/932388630aaba70197c78bdb10cce2c91fae01a7e553b76ce85471aec690/zstandard-0.23.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:d477ed829077cd945b01fc3115edd132c47e6540ddcd96ca169facff28173057", size = 5655392, upload-time = "2024-07-15T00:16:46.423Z" }, + { url = "https://files.pythonhosted.org/packages/02/90/2633473864f67a15526324b007a9f96c96f56d5f32ef2a56cc12f9548723/zstandard-0.23.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa6ce8b52c5987b3e34d5674b0ab529a4602b632ebab0a93b07bfb4dfc8f8a33", size = 5191299, upload-time = "2024-07-15T00:16:49.053Z" }, + { url = "https://files.pythonhosted.org/packages/b0/4c/315ca5c32da7e2dc3455f3b2caee5c8c2246074a61aac6ec3378a97b7136/zstandard-0.23.0-cp313-cp313-win32.whl", hash = "sha256:a9b07268d0c3ca5c170a385a0ab9fb7fdd9f5fd866be004c4ea39e44edce47dd", size = 430862, upload-time = "2024-07-15T00:16:51.003Z" }, + { url = "https://files.pythonhosted.org/packages/a2/bf/c6aaba098e2d04781e8f4f7c0ba3c7aa73d00e4c436bcc0cf059a66691d1/zstandard-0.23.0-cp313-cp313-win_amd64.whl", hash = "sha256:f3513916e8c645d0610815c257cbfd3242adfd5c4cfa78be514e5a3ebb42a41b", size = 495578, upload-time = "2024-07-15T00:16:53.135Z" }, +] From 1027026c6ee672f28bdf2800a8902d81b14564ec Mon Sep 17 00:00:00 2001 From: Jeffrey Newman Date: Tue, 29 Jul 2025 14:51:42 -0500 Subject: [PATCH 05/34] Skim name conflicts (#939) * identify and flag naming conflicts in 2d vs 3d skims * add skims doc * run on workflow_dispatch * add link to docs * write error message in exception also * add error message example * code block formatting * unit tests --- .github/workflows/core_tests.yml | 12 +-- activitysim/core/skim_dataset.py | 65 +++++++++++++- activitysim/core/skim_dict_factory.py | 65 ++++++++++++-- docs/users-guide/model_anatomy.rst | 109 ++++++++++++++++++---- test/test_skim_name_conflicts.py | 125 ++++++++++++++++++++++++++ 5 files changed, 344 insertions(+), 32 deletions(-) create mode 100644 test/test_skim_name_conflicts.py diff --git a/.github/workflows/core_tests.yml b/.github/workflows/core_tests.yml index 2542ffd54..481128278 100644 --- a/.github/workflows/core_tests.yml +++ b/.github/workflows/core_tests.yml @@ -36,7 +36,7 @@ jobs: uses: actions/setup-python@v5 with: python-version-file: ".python-version" - + - name: Install activitysim run: | uv sync --locked --only-group github-action @@ -128,6 +128,8 @@ jobs: run: | uv run pytest --pyargs activitysim.cli + - run: uv run pytest test/test_skim_name_conflicts.py + - run: uv run pytest test/random_seed/test_random_seed.py builtin_regional_models: needs: foundation @@ -166,7 +168,7 @@ jobs: uses: actions/setup-python@v5 with: python-version-file: ".python-version" - + - name: Install activitysim run: | uv sync --locked --only-group github-action @@ -235,7 +237,7 @@ jobs: uses: actions/setup-python@v5 with: python-version-file: ".python-version" - + - name: Install activitysim run: | uv sync --locked --only-group github-action @@ -277,7 +279,7 @@ jobs: uses: actions/setup-python@v5 with: python-version-file: ".python-version" - + - name: Install activitysim run: | uv sync --locked --only-group github-action @@ -310,7 +312,7 @@ jobs: uses: actions/setup-python@v5 with: python-version-file: ".python-version" - + - name: Install activitysim run: | uv sync --locked --only-group github-action diff --git a/activitysim/core/skim_dataset.py b/activitysim/core/skim_dataset.py index 1ed871ec0..1e359af3d 100644 --- a/activitysim/core/skim_dataset.py +++ b/activitysim/core/skim_dataset.py @@ -3,6 +3,7 @@ import glob import logging import os +import re import time from functools import partial from pathlib import Path @@ -499,8 +500,6 @@ def _apply_digital_encoding(dataset, digital_encodings): As modified """ if digital_encodings: - import re - # apply once, before saving to zarr, will stick around in cache for encoding in digital_encodings: logger.info(f"applying zarr digital-encoding: {encoding}") @@ -753,6 +752,68 @@ def load_skim_dataset_to_shared_memory(state, skim_tag="taz") -> xr.Dataset: d = None # skims are not stored in shared memory, so we need to load them do_not_save_zarr = False + potential_conflicts = network_los_preload.skims_info.get(skim_tag).skim_conflicts + if potential_conflicts: + # There are some conflicts in the skims, where both time-dependent + # and time-agnostic skim with the same name are present. We need + # to check we have sufficient ignore rules in place to correct this + # condition. + + def _should_ignore(ignore, x): + if isinstance(ignore, str): + ignore = [ignore] + if ignore is not None: + for i in ignore: + if re.match(i, x): + return True + return False + + ignore = state.settings.omx_ignore_patterns + problems = [] + for time_agnostic, time_dependent in potential_conflicts.items(): + # option 1, ignore all the time-dependent skims + # if this is fulfilled, we are ok and can proceed + if all((_should_ignore(ignore, i)) for i in time_dependent): + continue + # option 2, ignore the time-agnostic skim + # if this is fulfilled, we are ok and can proceed + if _should_ignore(ignore, time_agnostic): + continue + # otherwise, we have a problem. collect all the problems + # and raise an error at the end listing all of them + problems.append(time_agnostic) + if problems: + solution_1 = "__.+'\n - '^".join(problems) + solution_2 = "$'\n - '^".join(problems) + # we have a problem, raise an error + error_message = ( + f"skims {problems} are present in both time-dependent and time-agnostic formats.\n" + "Please add ignore rules to the omx_ignore_patterns setting to resolve this issue.\n" + "To ignore the time dependent skims, add the following to your settings file:\n" + "\n" + "omx_ignore_patterns:\n" + f" - '^{solution_1}__.+'\n" + "\n" + "To ignore the time agnostic skims, add the following to your settings file:\n" + "\n" + "omx_ignore_patterns:\n" + f" - '^{solution_2}$'\n" + "\n" + "You can also do some variation or combination of the two, as long as you resolve\n" + "the conflict(s). In addition, note that minor edits to model spec files may be\n" + "needed to accommodate these changes in how skim data is represented (e.g. changing\n" + "`odt_skims` to `od_skims`, or similar modifications wherever the offending variable\n" + "names are used). Alternatively, you can modify the skim data in the source files to\n" + "remove the naming conflicts, which is typically done upstream of ActivitySim in\n" + "whatever tool you are using to create the skims in the first place.\n" + "\n" + "See [https://activitysim.github.io/?q=skims] for more information.\n" + ) + # write the error message to the log + logger.error(error_message) + # raise an error to stop the run, put the entire error message there also + raise ValueError(error_message) + if d is None: time_periods = _dedupe_time_periods(network_los_preload) if zarr_file: diff --git a/activitysim/core/skim_dict_factory.py b/activitysim/core/skim_dict_factory.py index 78c705358..e0bd23ef3 100644 --- a/activitysim/core/skim_dict_factory.py +++ b/activitysim/core/skim_dict_factory.py @@ -8,6 +8,7 @@ import os import warnings from abc import ABC +from collections import defaultdict import numpy as np import openmatrix as omx @@ -86,6 +87,7 @@ def __init__(self, state, skim_tag, network_los): self.offset_map_name = None self.offset_map = None self.omx_keys = None + self.skim_conflicts = None self.base_keys = None self.block_offsets = None @@ -117,7 +119,12 @@ def load_skim_info(self, state, skim_tag): logger.debug(f"load_skim_info {skim_tag} reading {omx_file_path}") with omx.open_file(omx_file_path, mode="r") as omx_file: - # fixme call to omx_file.shape() failing in windows p3.5 + + # Check the shape of the skims. All skim files loaded within this + # loop need to have the same shape. For the first file, the + # shape is set to the omx_shape attribute, so we know what shape + # to expect. For subsequent files, we check that the shape is the + # same as the first file. If not, we raise an error. if self.omx_shape is None: self.omx_shape = tuple( int(i) for i in omx_file.shape() @@ -127,6 +134,12 @@ def load_skim_info(self, state, skim_tag): int(i) for i in omx_file.shape() ), f"Mismatch shape {self.omx_shape} != {omx_file.shape()}" + # Check that all the matrix names are unique across all the + # omx files. This check is only looking at the name as stored in + # the file, and is not processing any time period transformations. + # If duplicate names are found, a warning is issued. This is not + # a fatal error, but it is inefficient and may be symptom of a + # deeper problem. for skim_name in omx_file.listMatrices(): if skim_name in self.omx_manifest: warnings.warn( @@ -134,6 +147,11 @@ def load_skim_info(self, state, skim_tag): ) self.omx_manifest[skim_name] = omx_file_path + # We load the offset map if it exists. This is expected to be + # a 1D array of integers that that gives ID values for each TAZ + # in the skims. ActivitySim expects there to be only one such + # mapping, although it can appear multiple times (e.g. once in + # each file). for m in omx_file.listMappings(): if self.offset_map is None: self.offset_map_name = m @@ -146,21 +164,54 @@ def load_skim_info(self, state, skim_tag): f"Multiple mappings in omx file: {self.offset_map_name} != {m}" ) - # - omx_keys dict maps skim key to omx_key - # DISTWALK: DISTWALK - # ('DRV_COM_WLK_BOARDS', 'AM'): DRV_COM_WLK_BOARDS__AM, ... + # Create the `omx_keys` mapping, which connects skim key to omx_key. + # The skim key is either a single string that names a skim that is not + # time-dependent, or a 2-tuple of strings which names a skim and a time + # period. The omx_key is the original name of the skim in the omx file. + # For non-time-dependent skims, the omx_key is the same as the skim key, + # e.g. DISTWALK: DISTWALK. For time-dependent skims, the omx_key is the + # skim key with the time period appended, + # e.g. ('DRV_COM_WLK_BOARDS', 'AM'): DRV_COM_WLK_BOARDS__AM. self.omx_keys = dict() for skim_name in self.omx_manifest.keys(): key1, sep, key2 = skim_name.partition("__") - # - ignore composite tags not in dim3_tags_to_load if dim3_tags_to_load and sep and key2 not in dim3_tags_to_load: + # If a skim is found that has a time period that is not one of + # the known named time periods, a warning is issued, and that + # skim is ignored. This is not a fatal error, but it may be a + # symptom of a deeper problem. + warnings.warn(f"skim '{key1}' has unknown time period '{key2}'") continue - skim_key = (key1, key2) if sep else key1 - self.omx_keys[skim_key] = skim_name + # Create a skim_conflicts set, which identifies any skims that have both + # time-dependent and time-agnostic versions. This condition in and of + # itself is not a fatal error, as it is possible to have both types of skims + # in the same data when using the legacy codebase. When using skim_dataset + # instead of skim_dictionary (the former is required when using sharrow) this + # condition is no longer allowed, although we can potentially recover if + # the user has specified instructions that certain skim variables are not + # to be loaded. The recovery option is checked later, in the skim_dataset + # module, as that is where the skim variables are actually loaded. + time_dependent_skims = defaultdict(set) + time_agnostic_skims = set() + for k, v in self.omx_keys.items(): + if isinstance(k, tuple): + time_dependent_skims[k[0]].add(v) + else: + time_agnostic_skims.add(k) + self.skim_conflicts = { + k: v for k, v in time_dependent_skims.items() if k in time_agnostic_skims + } + if self.skim_conflicts: + msg = "some skims have both time-dependent and time-agnostic versions:" + for k in self.skim_conflicts: + msg += f"\n- {k}" + warnings.warn(msg) + + # Count the number of skims in the omx file self.num_skims = len(self.omx_keys) # - key1_subkeys dict maps key1 to dict of subkeys with that key1 diff --git a/docs/users-guide/model_anatomy.rst b/docs/users-guide/model_anatomy.rst index 78114f7e8..a1e0cc275 100644 --- a/docs/users-guide/model_anatomy.rst +++ b/docs/users-guide/model_anatomy.rst @@ -21,21 +21,21 @@ file and the ``configs\network_los.yaml`` file. The following tables are currently implemented: - * households - household attributes for each household being simulated. Index: ``household_id`` (see ``activitysim.abm.tables.households.py``) - * landuse - zonal land use (such as population and employment) attributes. Index: ``zone_id`` (see ``activitysim.abm.tables.landuse.py``) - * persons - person attributes for each person being simulated. Index: ``person_id`` (see ``activitysim.abm.tables.persons.py``) - * time windows - manages person time windows throughout the simulation. See :ref:`time_windows`. Index: ``person_id`` (see the person_windows table create decorator in ``activitysim.abm.tables.time_windows.py``) - * tours - tour attributes for each tour (mandatory, non-mandatory, joint, and atwork-subtour) being simulated. Index: ``tour_id`` (see ``activitysim.abm.models.util.tour_frequency.py``) - * trips - trip attributes for each trip being simulated. Index: ``trip_id`` (see ``activitysim.abm.models.stop_frequency.py``) +* households - household attributes for each household being simulated. Index: ``household_id`` (see ``activitysim.abm.tables.households.py``) +* landuse - zonal land use (such as population and employment) attributes. Index: ``zone_id`` (see ``activitysim.abm.tables.landuse.py``) +* persons - person attributes for each person being simulated. Index: ``person_id`` (see ``activitysim.abm.tables.persons.py``) +* time windows - manages person time windows throughout the simulation. See :ref:`time_windows`. Index: ``person_id`` (see the person_windows table create decorator in ``activitysim.abm.tables.time_windows.py``) +* tours - tour attributes for each tour (mandatory, non-mandatory, joint, and atwork-subtour) being simulated. Index: ``tour_id`` (see ``activitysim.abm.models.util.tour_frequency.py``) +* trips - trip attributes for each trip being simulated. Index: ``trip_id`` (see ``activitysim.abm.models.stop_frequency.py``) A few additional tables are also used, which are not really tables, but classes: - * input store - reads input data tables from the input data store - * constants - various constants used throughout the model system, such as person type codes - * shadow pricing - shadow price calculator and associated utility methods, see :ref:`shadow_pricing` - * size terms - created by reading the ``destination_choice_size_terms.csv`` input file. Index - ``segment`` (see ``activitysim.abm.tables.size_terms.py``) - * skims - each model runs requires skims, but how the skims are defined can vary significantly depending on the ActivitySim implementation. The skims class defines Inject injectables to access the skim matrices. The skims class reads the skims from the omx_file on disk. - * table dictionary - stores which tables should be registered as random number generator channels for restartability of the pipeline +* input store - reads input data tables from the input data store +* constants - various constants used throughout the model system, such as person type codes +* shadow pricing - shadow price calculator and associated utility methods, see :ref:`shadow_pricing` +* size terms - created by reading the ``destination_choice_size_terms.csv`` input file. Index - ``segment`` (see ``activitysim.abm.tables.size_terms.py``) +* skims - each model runs requires skims, but how the skims are defined can vary significantly depending on the ActivitySim implementation. The skims class defines Inject injectables to access the skim matrices. The skims class reads the skims from the omx_file on disk. +* table dictionary - stores which tables should be registered as random number generator channels for restartability of the pipeline @@ -54,10 +54,10 @@ system for non-motorized travel, and optionally a transit access points (TAPs) z The three versions of multiple zone systems are one-zone, two-zone, and three-zone. - * **One-zone**: This version is based on TM1 and supports only TAZs. All origins and +* **One-zone**: This version is based on TM1 and supports only TAZs. All origins and destinations are represented at the TAZ level, and all skims including auto, transit, and non-motorized times and costs are also represented at the TAZ level. - * **Two-zone**: This version is similar to many DaySim models. It uses microzones (MAZs) +* **Two-zone**: This version is similar to many DaySim models. It uses microzones (MAZs) for origins and destinations, and TAZs for specification of auto and transit times and costs. Impedance for walk or bike all-the-way from the origin to the destination can be specified at the MAZ level for close together origins and destinations, and at @@ -65,7 +65,7 @@ The three versions of multiple zone systems are one-zone, two-zone, and three-zo walk access and egress times with times specified in the MAZ file by transit mode. Careful pre-calculation of the assumed transit walk access and egress time by MAZ and transit mode is required depending on the network scenario. - * **Three-zone**: This version is based on the SANDAG generation of CT-RAMP models. +* **Three-zone**: This version is based on the SANDAG generation of CT-RAMP models. Origins and destinations are represented at the MAZ level. Impedance for walk or bike all-the-way from the origin to the destination can be specified at the MAZ level for close together origins and destinations, and at the TAZ level for further @@ -84,8 +84,15 @@ The three versions of multiple zone systems are one-zone, two-zone, and three-zo combinations of nearby boarding and alighting TAPs for each origin destination MAZ pair. -Regions that have an interest in more precise transit forecasts may wish to adopt the -three-zone approach, while other regions may adopt the one or two-zone approach. The +.. caution:: + The ActivitySim consortium is moving away from the three-zone approach, in favor of + to the one- or two-zone approaches. The code for the three-zone approach remains + available for users who have already implemented it, but it is recommended that + users consider the one- or two-zone approaches for new implementations. + The three-zone system may be formally deprecated and removed in the future. + +Regions that have an interest in more precise transit and non-motorized forecasts +may wish to adopt the two-zone approach, while other regions may adopt the one or two-zone approach. The microzone version requires coding households and land use at the microzone level. Typically an all-streets network is used for representation of non-motorized impedances. This requires a routable all-streets network, with centroids and connectors for @@ -103,10 +110,76 @@ transit modeling. initial development, these examples were insufficient for validation and performance testing of the new software. As a result, the :ref:`prototype_marin` example was created. -Example simple test configurations and inputs for two and three-zone system models are described below. + +.. _omx_skims : + +Skims +~~~~~ + +The basic level-of-service data that represents the transportation system is +made available to ActivitySim via one or more sets of "skims". Skims are +essentially matrices of travel times, costs, and other level of service attributes, +calculated between various zones in the system. This skim data is made available +to ActivitySim using files in the`openmatrix `__ +(OMX) format. All of the skim data can be provided in a single OMX file, or +multiple OMX files can be used (this is typical for larger models, to keep file +sizes manageable). If multiple files are used, the content of those files is +simply concatenated together into a single notional bucket of skim data when +the model is run. Within that bucket, each skim variable is identified by a unique name. +For skim variables that vary across model time periods, the time period is +appended to the skim name, separated by a double underscore (e.g. ``BUS_IVT__AM``). + +.. caution:: + When using "legacy" mode for ActivitySim, it is possible (but not recommended) + to have a skim variable that has both a time period agnostic value as well as + a set of time period dependent values, e.g. "WALK_TIME" and "WALK_TIME__AM". + If you have conflicting names like this, a warning message will be issued, which + will look like this in an ActivitySim log file: + + .. code-block:: text + + WARNING: activitysim/core/skim_dict_factory.py:212: + UserWarning: some skims have both time-dependent and time-agnostic versions: + - BIKE_LOGSUM + - BIKE_TIME + + This is a warning, not an error, and the model will run if not using sharrow. + However, if "sharrow" mode is activated, this will result in an error once the + skims are actually loaded, unless instructions are included in the settings file + to resolve the conflict. The error message will look like this: + + .. code-block:: text + + ERROR: skims ['BIKE_TIME'] are present in both time-dependent and time-agnostic formats. + Please add ignore rules to the omx_ignore_patterns setting to resolve this issue. + To ignore the time dependent skims, add the following to your settings file: + + omx_ignore_patterns: + - '^BIKE_TIME__.+' + + To ignore the time agnostic skims, add the following to your settings file: + + omx_ignore_patterns: + - '^BIKE_TIME$' + + You can also do some variation or combination of the two, as long as you resolve + the conflict(s). In addition, note that minor edits to model spec files may be + needed to accommodate these changes in how skim data is represented (e.g. changing + `odt_skims` to `od_skims`, or similar modifications wherever the offending variable + names are used). Alternatively, you can modify the skim data in the source files to + remove the naming conflicts, which is typically done upstream of ActivitySim in + whatever tool you are using to create the skims in the first place. + + It should be relatively simple to resolve the conflict by following the instructions + in the error message. The cleaner and more reliable solution is to ensure each skim + variable has a unique name, e.g. by changing the name on the time period agnostic + value, so that instead of "BIKE_TIME" it is "BIKE_TIME_BASE". This may also require + minor edits to the model spec files to accommodate the new skim name. + Examples ~~~~~~~~ +Example simple test configurations and inputs for two and three-zone system models are described below. To run the two zone and three zone system examples, do the following: diff --git a/test/test_skim_name_conflicts.py b/test/test_skim_name_conflicts.py new file mode 100644 index 000000000..eafd5ee42 --- /dev/null +++ b/test/test_skim_name_conflicts.py @@ -0,0 +1,125 @@ +from __future__ import annotations + +import os +import shutil +from importlib.resources import files +from pathlib import Path + +import openmatrix +import pytest + +import activitysim.abm # noqa: F401 +from activitysim.core import workflow + + +def example_path(dirname): + resource = files("activitysim.examples.placeholder_sandag").joinpath(dirname) + return str(resource) + + +def mtc_example_path(dirname): + resource = files("activitysim.examples.prototype_mtc").joinpath(dirname) + return str(resource) + + +def psrc_example_path(dirname): + resource = files("activitysim.examples.placeholder_psrc").joinpath(dirname) + return str(resource) + + +@pytest.fixture(scope="session") +def example_data_dir(tmp_path_factory) -> Path: + """Fixture to provide the path to the example data directory.""" + td = tmp_path_factory.mktemp("skim-conflict-data") + shutil.copytree(example_path("data_2"), td.joinpath("data_2")) + shutil.copy( + example_path(os.path.join("data_3", "maz_to_maz_bike.csv")), + td.joinpath("data_2"), + ) + + # add extra skims to OMX to create a conflict + + with openmatrix.open_file(td.joinpath("data_2").joinpath("skims1.omx"), "a") as omx: + for t in ["EA", "AM", "MD", "PM", "EV"]: + # Create a new matrix for each time period + omx.createMatrix(f"DISTBIKE__{t}", obj=omx["DISTBIKE"][:]) + + return td.joinpath("data_2") + + +def test_skim_name_conflicts(example_data_dir, tmp_path_factory): + # when sharrow is required, the run should fail due to conflicting skim names + state = workflow.State.make_default( + data_dir=example_data_dir, + configs_dir=( + example_path("configs_2_zone"), + psrc_example_path("configs"), + ), + output_dir=tmp_path_factory.mktemp("out-fail"), + settings={ + "households_sample_size": 20, + "sharrow": "require", + "disable_zarr": True, + }, + ) + with pytest.raises(ValueError): + state.run( + [ + "initialize_landuse", + "initialize_households", + ] + ) + + +def test_skim_name_conflicts_no_sharrow(example_data_dir, tmp_path_factory): + # when sharrow is disabled, the run should warn about conflicting skim names but not fail + state = workflow.State.make_default( + data_dir=example_data_dir, + configs_dir=( + example_path("configs_2_zone"), + psrc_example_path("configs"), + ), + output_dir=tmp_path_factory.mktemp("out-pass"), + settings={ + "households_sample_size": 20, + "sharrow": False, + "disable_zarr": True, + }, + ) + # Run the beginning workflow with the modified settings, should only warn about the conflict + with pytest.warns( + UserWarning, + match="some skims have both time-dependent and time-agnostic versions", + ): + state.run( + [ + "initialize_landuse", + "initialize_households", + ] + ) + + +@pytest.mark.parametrize("solution", ["^DISTBIKE$", "^DISTBIKE__.+"]) +def test_skim_name_conflicts_ok(example_data_dir, tmp_path_factory, solution): + # when sharrow is required, and omx_ignore_patterns is set correctly, + # the run should work without raising an error + state = workflow.State.make_default( + data_dir=example_data_dir, + configs_dir=( + example_path("configs_2_zone"), + psrc_example_path("configs"), + ), + output_dir=tmp_path_factory.mktemp("out-solved"), + settings={ + "households_sample_size": 20, + "sharrow": "require", + "disable_zarr": True, + "omx_ignore_patterns": [solution], + }, + ) + state.run( + [ + "initialize_landuse", + "initialize_households", + ] + ) From 58dc3474d4125383be9904504522a76235189dd5 Mon Sep 17 00:00:00 2001 From: Sijia Wang Date: Thu, 31 Jul 2025 16:37:41 -0400 Subject: [PATCH 06/34] Pandas 2 `assign_in_place()` fix with categoricals (#948) * update cat columns in df when new cat exists * blacken * sort two categoricals before union --- activitysim/abm/models/util/mode.py | 3 ++- .../models/util/school_escort_tours_trips.py | 4 +++- activitysim/core/util.py | 20 ++++++++++++++++++- activitysim/core/workflow/state.py | 4 +++- 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/activitysim/abm/models/util/mode.py b/activitysim/abm/models/util/mode.py index 49776684a..d82dd09ea 100644 --- a/activitysim/abm/models/util/mode.py +++ b/activitysim/abm/models/util/mode.py @@ -88,7 +88,8 @@ def mode_choice_simulate( choices[mode_column_name] = choices[mode_column_name].map( dict(list(zip(list(range(len(alts))), alts))) ) - cat_type = pd.api.types.CategoricalDtype([""] + alts.tolist(), ordered=True) + # note: do we want to order the mode categories? + cat_type = pd.api.types.CategoricalDtype([""] + alts.tolist()) choices[mode_column_name] = choices[mode_column_name].astype(cat_type) return choices diff --git a/activitysim/abm/models/util/school_escort_tours_trips.py b/activitysim/abm/models/util/school_escort_tours_trips.py index 4a9f2ef17..665844023 100644 --- a/activitysim/abm/models/util/school_escort_tours_trips.py +++ b/activitysim/abm/models/util/school_escort_tours_trips.py @@ -767,7 +767,9 @@ def merge_school_escort_trips_into_pipeline(state: workflow.State): if isinstance(school_escort_trips[c].dtype, pd.api.types.CategoricalDtype): from pandas.api.types import union_categoricals - uc = union_categoricals([trips[c], school_escort_trips[c]]) + uc = union_categoricals( + [trips[c], school_escort_trips[c]], sort_categories=True + ) trips[c] = pd.Categorical(trips[c], categories=uc.categories) school_escort_trips[c] = pd.Categorical( school_escort_trips[c], categories=uc.categories diff --git a/activitysim/core/util.py b/activitysim/core/util.py index 0db1e4dde..429d3eee0 100644 --- a/activitysim/core/util.py +++ b/activitysim/core/util.py @@ -342,6 +342,24 @@ def assign_in_place(df, df2, downcast_int=False, downcast_float=False): common_columns = df2.columns.intersection(df.columns) if len(common_columns) > 0: old_dtypes = [df[c].dtype for c in common_columns] + # in pandas 2.x, update a categorical column with any new categories will cause TypeError + # so we need to add the new categories first + # this is a workaround for pandas 2.x, see discussion in + # https://github.com/ActivitySim/activitysim/discussions/946 + for c in common_columns: + if isinstance(df[c].dtype, pd.CategoricalDtype): + if not isinstance(df2[c].dtype, pd.CategoricalDtype): + # if df column is categorical, but df2 column is not + # convert df2 column to categorical then union categories + df2[c] = df2[c].astype("category") + + # when df and df2 column are both categorical, union categories + from pandas.api.types import union_categoricals + + uc = union_categoricals([df[c], df2[c]], sort_categories=True) + df[c] = pd.Categorical(df[c], categories=uc.categories) + df2[c] = pd.Categorical(df2[c], categories=uc.categories) + df.update(df2) # avoid needlessly changing int columns to float @@ -428,7 +446,7 @@ def auto_opt_pd_dtypes( else: df[col] = pd.to_numeric(df[col], downcast="float") # Skip if the column is already categorical - if pd.api.types.is_categorical_dtype(dtype): + if isinstance(dtype, pd.CategoricalDtype): continue # Handle integer types if pd.api.types.is_integer_dtype(dtype): diff --git a/activitysim/core/workflow/state.py b/activitysim/core/workflow/state.py index 45aa7a1f7..50ba0342a 100644 --- a/activitysim/core/workflow/state.py +++ b/activitysim/core/workflow/state.py @@ -1099,7 +1099,9 @@ def extend_table(self, table_name, df, axis=0): if isinstance(df[c].dtype, pd.api.types.CategoricalDtype): from pandas.api.types import union_categoricals - uc = union_categoricals([table_df[c], df[c]]) + uc = union_categoricals( + [table_df[c], df[c]], sort_categories=True + ) table_df[c] = pd.Categorical( table_df[c], categories=uc.categories ) From 6a553fc3f51fc684d4f6568ff85ceaa5fb5cc319 Mon Sep 17 00:00:00 2001 From: David Hensle <51132108+dhensle@users.noreply.github.com> Date: Thu, 31 Jul 2025 13:37:55 -0700 Subject: [PATCH 07/34] PNUM hard-coded and Vehicle table creation bug fix (#953) * minor fixes for SimOR development * blacken * Using PNUM if available in JTFC Required to maintain backwards compatibility in tour indexes in SANDAG models --------- Co-authored-by: Jeffrey Newman --- .../abm/models/joint_tour_frequency_composition.py | 11 +++++++++-- activitysim/abm/models/joint_tour_participation.py | 3 +++ activitysim/abm/tables/vehicles.py | 6 ++++++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/activitysim/abm/models/joint_tour_frequency_composition.py b/activitysim/abm/models/joint_tour_frequency_composition.py index b9f801eb5..1fffd892a 100644 --- a/activitysim/abm/models/joint_tour_frequency_composition.py +++ b/activitysim/abm/models/joint_tour_frequency_composition.py @@ -146,8 +146,15 @@ def joint_tour_frequency_composition( # - but we don't know the tour participants yet # - so we arbitrarily choose the first person in the household # - to be point person for the purpose of generating an index and setting origin - # FIXME: not all models are guaranteed to have PNUM - temp_point_persons = persons.loc[persons.PNUM == 1] + if "PNUM" in persons.columns: + temp_point_persons = persons.loc[persons.PNUM == 1] + else: + # if PNUM is not available, we can still get the first person in the household + temp_point_persons = ( + persons.sort_index() # ensure stable ordering + .groupby("household_id", as_index=False) + .first() + ) temp_point_persons["person_id"] = temp_point_persons.index temp_point_persons = temp_point_persons.set_index("household_id") temp_point_persons = temp_point_persons[["person_id", "home_zone_id"]] diff --git a/activitysim/abm/models/joint_tour_participation.py b/activitysim/abm/models/joint_tour_participation.py index 4e834fc62..47bc2b8ff 100644 --- a/activitysim/abm/models/joint_tour_participation.py +++ b/activitysim/abm/models/joint_tour_participation.py @@ -60,6 +60,9 @@ def joint_tour_participation_candidates(joint_tours, persons_merged): # if this happens, participant_id may not be unique # channel random seeds will overlap at MAX_PARTICIPANT_PNUM (probably not a big deal) # and estimation infer will fail + if "PNUM" not in candidates.columns: + # create a PNUM column that just numbers the candidates for assignment of participant_id + candidates["PNUM"] = candidates.groupby("household_id").cumcount() + 1 assert ( candidates.PNUM.max() < MAX_PARTICIPANT_PNUM ), f"max persons.PNUM ({candidates.PNUM.max()}) > MAX_PARTICIPANT_PNUM ({MAX_PARTICIPANT_PNUM})" diff --git a/activitysim/abm/tables/vehicles.py b/activitysim/abm/tables/vehicles.py index c998c9abe..36f13b0cc 100644 --- a/activitysim/abm/tables/vehicles.py +++ b/activitysim/abm/tables/vehicles.py @@ -29,6 +29,12 @@ def vehicles(state: workflow.State, households: pd.DataFrame): """ # initialize vehicles table + if "auto_ownership" not in households.columns: + # grab the proto_households table instead + # this is called when running disaggregate accessibilities and the vehicles table is used in the logsum calculation + households = state.get_table("proto_households") + households.index.name = "household_id" + vehicles = households.loc[households.index.repeat(households["auto_ownership"])] vehicles = vehicles.reset_index()[["household_id"]] From 2529e60ad6a64dac4ce895d255514c94fd8fd298 Mon Sep 17 00:00:00 2001 From: David Hensle <51132108+dhensle@users.noreply.github.com> Date: Wed, 13 Aug 2025 09:03:08 -0700 Subject: [PATCH 08/34] Minor Fixes: optional logsums, duplicate data in parking lot choice, activitysim version to logfile (#963) * adding activitysim version to log file * fix duplicate columns in parking location choice as described in #633 * making tour mode choice logsum optional in destionation choice models #847 * logsum settings in location choice, trip dest, tour_od * optional logsums in trip destination * blacken --------- Co-authored-by: Ali Etezady <58451076+aletzdy@users.noreply.github.com> --- activitysim/abm/models/location_choice.py | 30 ++++++++------ .../abm/models/parking_location_choice.py | 4 +- activitysim/abm/models/trip_destination.py | 40 ++++++++++++------- .../abm/models/util/tour_destination.py | 26 +++++++----- activitysim/abm/models/util/tour_od.py | 32 ++++++++------- activitysim/cli/run.py | 3 ++ activitysim/core/configuration/logit.py | 7 +++- 7 files changed, 87 insertions(+), 55 deletions(-) diff --git a/activitysim/abm/models/location_choice.py b/activitysim/abm/models/location_choice.py index f634bb3fd..8efd0003c 100644 --- a/activitysim/abm/models/location_choice.py +++ b/activitysim/abm/models/location_choice.py @@ -838,19 +838,23 @@ def run_location_choice( ) # - location_logsums - location_sample_df = run_location_logsums( - state, - segment_name, - choosers, - network_los, - location_sample_df, - model_settings, - chunk_size, - chunk_tag=f"{chunk_tag}.logsums", - trace_label=tracing.extend_trace_label( - trace_label, "logsums.%s" % segment_name - ), - ) + # skip logsum calculations if LOGSUM_SETTINGS is None + if model_settings.LOGSUM_SETTINGS: + location_sample_df = run_location_logsums( + state, + segment_name, + choosers, + network_los, + location_sample_df, + model_settings, + chunk_size, + chunk_tag=f"{chunk_tag}.logsums", + trace_label=tracing.extend_trace_label( + trace_label, "logsums.%s" % segment_name + ), + ) + else: + location_sample_df[ALT_LOGSUM] = 0.0 # - location_simulate choices_df = run_location_simulate( diff --git a/activitysim/abm/models/parking_location_choice.py b/activitysim/abm/models/parking_location_choice.py index 995229b69..075bf6174 100644 --- a/activitysim/abm/models/parking_location_choice.py +++ b/activitysim/abm/models/parking_location_choice.py @@ -203,8 +203,10 @@ def choose_parking_location( additional_columns=model_settings.compute_settings.protect_columns, ) + # Passing only the index of the trips table to the interaction_dataset + # See ActivitySim issue #633 destination_sample = logit.interaction_dataset( - state, trips, alternatives, alt_index_id=alt_dest_col_name + state, trips[[]], alternatives, alt_index_id=alt_dest_col_name ) destination_sample.index = np.repeat(trips.index.values, len(alternatives)) destination_sample.index.name = trips.index.name diff --git a/activitysim/abm/models/trip_destination.py b/activitysim/abm/models/trip_destination.py index 0e7cfb98d..79dd1661c 100644 --- a/activitysim/abm/models/trip_destination.py +++ b/activitysim/abm/models/trip_destination.py @@ -1053,16 +1053,21 @@ def choose_trip_destination( return pd.Series(index=trips.index).to_frame("choice"), None # - compute logsums - destination_sample = compute_logsums( - state, - primary_purpose=primary_purpose, - trips=trips, - destination_sample=destination_sample, - tours_merged=tours_merged, - model_settings=model_settings, - skim_hotel=skim_hotel, - trace_label=trace_label, - ) + # If LOGSUM_SETTINGS is set to None, we don't want to compute logsums + if model_settings.LOGSUM_SETTINGS: + destination_sample = compute_logsums( + state, + primary_purpose=primary_purpose, + trips=trips, + destination_sample=destination_sample, + tours_merged=tours_merged, + model_settings=model_settings, + skim_hotel=skim_hotel, + trace_label=trace_label, + ) + else: + destination_sample["od_logsum"] = 0.0 + destination_sample["dp_logsum"] = 0.0 t0 = print_elapsed_time("%s.compute_logsums" % trace_label, t0) @@ -1272,9 +1277,14 @@ def run_trip_destination( state.filesystem, model_settings_file_name ) preprocessor_settings = model_settings.preprocessor - logsum_settings = state.filesystem.read_model_settings( - model_settings.LOGSUM_SETTINGS - ) + + # read in logsum settings if they exist, otherwise logsum calculations are skipped + if model_settings.LOGSUM_SETTINGS: + logsum_settings = state.filesystem.read_model_settings( + model_settings.LOGSUM_SETTINGS + ) + else: + logsum_settings = None logsum_column_name = model_settings.DEST_CHOICE_LOGSUM_COLUMN_NAME want_logsums = logsum_column_name is not None @@ -1342,7 +1352,9 @@ def run_trip_destination( # - filter tours_merged (AFTER copying destination and origin columns to trips) # tours_merged is used for logsums, we filter it here upfront to save space and time - tours_merged_cols = logsum_settings["TOURS_MERGED_CHOOSER_COLUMNS"] + tours_merged_cols = ( + logsum_settings["TOURS_MERGED_CHOOSER_COLUMNS"] if logsum_settings else [] + ) redundant_cols = model_settings.REDUNDANT_TOURS_MERGED_CHOOSER_COLUMNS or [] if redundant_cols: tours_merged_cols = [c for c in tours_merged_cols if c not in redundant_cols] diff --git a/activitysim/abm/models/util/tour_destination.py b/activitysim/abm/models/util/tour_destination.py index 7234355fd..db34a7f1a 100644 --- a/activitysim/abm/models/util/tour_destination.py +++ b/activitysim/abm/models/util/tour_destination.py @@ -894,17 +894,21 @@ def run_tour_destination( ) # - destination_logsums - tour_purpose = segment_name # tour_purpose is segment_name - location_sample_df = run_destination_logsums( - state, - tour_purpose, - persons_merged, - location_sample_df, - model_settings, - network_los, - chunk_size=state.settings.chunk_size, - trace_label=tracing.extend_trace_label(segment_trace_label, "logsums"), - ) + # if LOGSUM_SETTINGS is set to 'None', we skip this step + if model_settings.LOGSUM_SETTINGS: + tour_purpose = segment_name # tour_purpose is segment_name + location_sample_df = run_destination_logsums( + state, + tour_purpose, + persons_merged, + location_sample_df, + model_settings, + network_los, + chunk_size=state.settings.chunk_size, + trace_label=tracing.extend_trace_label(segment_trace_label, "logsums"), + ) + else: + location_sample_df["mode_choice_logsum"] = 0 # - destination_simulate spec_segment_name = segment_name # spec_segment_name is segment_name diff --git a/activitysim/abm/models/util/tour_od.py b/activitysim/abm/models/util/tour_od.py index 96ec9aba8..a74309be8 100644 --- a/activitysim/abm/models/util/tour_od.py +++ b/activitysim/abm/models/util/tour_od.py @@ -1132,20 +1132,24 @@ def run_tour_od( ) # - destination_logsums - od_sample_df = run_od_logsums( - state, - spec_segment_name, - choosers, - od_sample_df, - model_settings, - network_los, - estimator, - chunk_size=chunk_size, - trace_hh_id=trace_hh_id, - trace_label=tracing.extend_trace_label( - trace_label, f"logsums.{segment_name}" - ), - ) + # Skip logsum calculation step if LOGSUM_SETTINGS is None + if model_settings.LOGSUM_SETTINGS: + od_sample_df = run_od_logsums( + state, + spec_segment_name, + choosers, + od_sample_df, + model_settings, + network_los, + estimator, + chunk_size=chunk_size, + trace_hh_id=trace_hh_id, + trace_label=tracing.extend_trace_label( + trace_label, f"logsums.{segment_name}" + ), + ) + else: + od_sample_df["tour_mode_choice_logsum"] = 0.0 # - od_simulate choices = run_od_simulate( diff --git a/activitysim/cli/run.py b/activitysim/cli/run.py index 03258be4b..69b03101b 100644 --- a/activitysim/cli/run.py +++ b/activitysim/cli/run.py @@ -328,6 +328,9 @@ def run(args): config.filter_warnings(state) logging.captureWarnings(capture=True) + activitysim_version = importlib.metadata.version("activitysim") + logger.info(f"ActivitySim Version: {activitysim_version}") + # directories for k in ["configs_dir", "settings_file_name", "data_dir", "output_dir"]: logger.info("SETTING %s: %s" % (k, getattr(state.filesystem, k, None))) diff --git a/activitysim/core/configuration/logit.py b/activitysim/core/configuration/logit.py index 7688ac1bb..a7c615d0c 100644 --- a/activitysim/core/configuration/logit.py +++ b/activitysim/core/configuration/logit.py @@ -212,8 +212,11 @@ class LocationComponentSettings(BaseLogitComponentSettings): SAMPLE_SIZE: int """This many candidate alternatives will be sampled for each choice.""" - LOGSUM_SETTINGS: Path - """Settings for the logsum computation.""" + LOGSUM_SETTINGS: Path | None = None + """ + Settings for the logsum computation. + If None, no logsum is computed and logsum field is populated with zeros. + """ explicit_chunk: float = 0 """ From 1514a51a674bafbdc6fb46eeadedc1b3007c2f18 Mon Sep 17 00:00:00 2001 From: Andrew Kay <64652494+andkay@users.noreply.github.com> Date: Sat, 16 Aug 2025 09:02:04 -0700 Subject: [PATCH 09/34] Check YAML, Spec, Coefficients Settings Before Model Runs (#950) * feat: adds initial setting_checker module to abm/models * chore: add .vscode settings to gitignore * feat: adds first test case for prepopulating settings pydantic model (accessibility) * feat: adds initial spec checker - wip * feat: update settings checker to load spec and evaluate coefficients. add second model to validate * fix: adds missing arg to eval_coefficients * feat: adds atworksubtour_frequency to settings checker * feat: moves loading spec and coefficients to independent functions * refactor: renames main settings checker function. moves loading model settings to independent function * refactor: moves load, spec, and coef eval checks to an independent function called from main checker. run formatter * feat: adds load SPEC check for preprocessor settings * chore: run formatter * feat: initial checking for model setting with nested coefficients * feat: adds additional model settings. force try_load_spec to return an empty dataframe, even if no top level spec exists * feat: adds additional model settings to check. adds special handler for disaggregate accessibility (needs more testing) * feat: adds settings check for initalize_landuse * refactor: reorders checking for joint tour composition settings * feat: adds setting check for joint tour destination * feat: adds settings check for joint tour frequency composition * feat: adds settings check for joint tour frequency * feat: adds settings check for joint tour participation * feat: adds setting check for joint tour scheduling * feat: adds settings checks for workplace location and school location * feat: adds setting check for mandatory tour frequency * feat: adds settings check for non mandatory tour destination * feat: adds settings check for parking location choice * feat: adds settings check for school escorting * wip: adds stop_frequencies to components dict, but requires a separate flow for nested specs * feat: adds setting checks for summarize * feat: adds settings check for telecommute frequency * feat: adds setting check for tour mode choice * feat: adds setting check for tour od choice * feat: adds setting check for tour scheduling probabilistic * feat: adds setting check for transit pass ownership * feat: adds setting check for transit pass subsidy * feat: adds settings check for trip departure choice * feat: adds setting check for trip destination * feat: adds setting check for write trip matrices * feat: adds setting check for trip mode choice * feat: adds settings checks for trip purpose and destination * feat: adds setting check for trip purpose * feat: adds setting check for vehicle allocation * feat: adds setting check for vehicle type choice * feat: adds setting check for work from home * docs: remove one comment * refactor: removes spurious debug point around cdap spec load * refactor: refactors setting checking to separate read/evaluate. checks now return result of tuple (Dataframe, Exception | None) for collection of errors. * feat: adds setting check for intialize households * feat: adds setting check for mandatory and non-mandatory tour scheduling * feat: adds partial setting check for non-mandatory tour frequency (not fully implemented due to NESTED_SPEC) * refactor: raise RunTimeError instead of custom * feat: adds module-specific file handler to logging * docs: remove one comment * refactor: add more specific return type * refactor: renames try_load_and_check to try_load_and_check_spec_coefs and directly injects model settings, separing check for reading settings yaml files. useful for checking nested model settings * feat: adds initial handling for SPEC_NEST configs. includes some prequisite refactors to error collection * refactor: fix logging * docs: update one comment * refactor: remove commented raise statements used for debugging * chore: run black formatter * refactor: only ever evaluate spec/coef if both are available * chore: better logging in model settings load * feat: make setting checker optional * feat: adds setting check for input checker * feat: adds setting check for shadow pricing yaml * chore: remove some outdated comments * feat: adds setting checks for intialize los * refactor: changes return type from empty df -> None when spec/coefs are unavaialable * feat: adds logic for checking settings with templated coefficients * chore: run formatter * chore: fix alphabetization of components registry * feat: check settings for write_data_dictionary * feat: allow for detailed checks for SPEC_SEGMENTS with PTYPE against main model spec * feat: allow for arbitrary loading of spec files from any subsettings in model settings * feat: allow custom checks for unusual spec/coefficient pairs * feat: adds custom SettingCheckerError exception for improved logging * refactor: better checks and warnings when SPEC or COEFFICENT fields are missing values. because the fields in the settings classes are inherited, it is not usually possible for the settings checker to determine if a path to an external file is actually required for a particular model component. the workaround is to issue a specific warning that a path *may* be expected and users should check the YAML file. the ultimate solution would be to define more robust Pydantic data models that ensure that fields are marked as required when appropriate. * chore: fix spelling. * refactor: renames COMPONENTS_TO_SETTINGS -> CHECKER_SETTINGS and feeds to checker entrypoint as argument. * refactor: single entry for settings checker. import extension check settings as dict. * chore: run black formatter * refactor: remove commented code * fix: skip errors for write_data_dictionary if optional yaml file is not loadable * chore: run black formatter * fix(tests): remove unused COEFFICIENTS from MWCOG test model * fix(tests): re-add deleted test_mtc.py test script * fix: make model registry for checking a copy * fix(test): remove unused general SPEC in non_mandatory_tour_scheduling.yaml from MWCOG example model --------- Co-authored-by: Jeffrey Newman --- .gitignore | 3 + activitysim/abm/models/settings_checker.py | 768 ++++++++++++++++++ activitysim/cli/run.py | 26 +- activitysim/core/configuration/top.py | 7 + .../non_mandatory_tour_scheduling.yaml | 7 +- 5 files changed, 808 insertions(+), 3 deletions(-) create mode 100644 activitysim/abm/models/settings_checker.py diff --git a/.gitignore b/.gitignore index ff98b3c68..4cda55136 100644 --- a/.gitignore +++ b/.gitignore @@ -49,6 +49,9 @@ coverage.xml .project .pydevproject +# ides +.vscode/ + # Rope .ropeproject diff --git a/activitysim/abm/models/settings_checker.py b/activitysim/abm/models/settings_checker.py new file mode 100644 index 000000000..907e7e999 --- /dev/null +++ b/activitysim/abm/models/settings_checker.py @@ -0,0 +1,768 @@ +import logging +import os +from pandas import DataFrame +from pydantic import BaseModel as PydanticBase +from typing import Type, Optional + +from activitysim.core.configuration.base import PydanticReadable + +# import core settings +from activitysim.core.configuration.logit import ( + LogitNestSpec, + TourLocationComponentSettings, + TourModeComponentSettings, + TemplatedLogitComponentSettings, +) +from activitysim.core import config +from activitysim.core.configuration.network import NetworkSettings +from activitysim.core.workflow import State +from activitysim.core.simulate import ( + eval_coefficients, + eval_nest_coefficients, + read_model_coefficient_template, +) + +# import model settings +from activitysim.abm.models.accessibility import AccessibilitySettings +from activitysim.abm.models.atwork_subtour_frequency import ( + AtworkSubtourFrequencySettings, +) +from activitysim.abm.models.auto_ownership import AutoOwnershipSettings +from activitysim.abm.models.cdap import CdapSettings +from activitysim.abm.models.disaggregate_accessibility import ( + DisaggregateAccessibilitySettings, + read_disaggregate_accessibility_yaml, +) +from activitysim.abm.models.free_parking import FreeParkingSettings +from activitysim.abm.models.initialize import InitializeTableSettings +from activitysim.abm.models.joint_tour_composition import JointTourCompositionSettings +from activitysim.abm.models.joint_tour_frequency_composition import ( + JointTourFreqCompSettings, +) +from activitysim.abm.models.joint_tour_frequency import JointTourFrequencySettings +from activitysim.abm.models.joint_tour_participation import ( + JointTourParticipationSettings, +) +from activitysim.abm.models.mandatory_tour_frequency import ( + MandatoryTourFrequencySettings, +) +from activitysim.abm.models.non_mandatory_tour_frequency import ( + NonMandatoryTourFrequencySettings, +) +from activitysim.abm.models.parking_location_choice import ParkingLocationSettings +from activitysim.abm.models.school_escorting import SchoolEscortSettings +from activitysim.abm.models.stop_frequency import StopFrequencySettings +from activitysim.abm.models.summarize import SummarizeSettings +from activitysim.abm.models.telecommute_frequency import TelecommuteFrequencySettings +from activitysim.abm.models.tour_scheduling_probabilistic import ( + TourSchedulingProbabilisticSettings, +) +from activitysim.abm.models.transit_pass_ownership import TransitPassOwnershipSettings +from activitysim.abm.models.transit_pass_subsidy import TransitPassSubsidySettings +from activitysim.abm.models.trip_departure_choice import TripDepartureChoiceSettings +from activitysim.abm.models.trip_destination import TripDestinationSettings +from activitysim.abm.models.trip_matrices import WriteTripMatricesSettings +from activitysim.abm.models.trip_mode_choice import TripModeChoiceSettings +from activitysim.abm.models.trip_purpose_and_destination import ( + TripPurposeAndDestinationSettings, +) +from activitysim.abm.models.trip_purpose import TripPurposeSettings +from activitysim.abm.models.vehicle_allocation import VehicleAllocationSettings +from activitysim.abm.models.vehicle_type_choice import VehicleTypeChoiceSettings +from activitysim.abm.models.work_from_home import WorkFromHomeSettings + +# import util settings +from activitysim.abm.models.util.vectorize_tour_scheduling import ( + TourSchedulingSettings, +) +from activitysim.abm.models.util.tour_od import TourODSettings + +# import table settings +from activitysim.abm.tables.shadow_pricing import ShadowPriceSettings + + +class SettingsCheckerError(Exception): + """Custom exception for settings checker errors.""" + + def __init__( + self, + model_name: str, + exception: Exception, + error_files: None = None, + additional_info: str = None, + ): + self.model_name = model_name + self.exception = exception + self.error_files = error_files + self.additional_info = additional_info + self.message = self._construct_message() + + super().__init__(self.message) + + def _construct_message(self) -> str: + message = f"Error checking settings for {self.model_name}" + if self.error_files is not None: + # cast all files from path to strings if required and wrap into list + if not isinstance(self.error_files, list): + message_files = [self.error_files] + else: + message_files = self.error_files + message += f" using files {', '.join([str(f) for f in message_files])}" + message += f": {str(self.exception)}" + if self.additional_info is not None: + message += f". {self.additional_info}" + return message + + +# setup logging +logger = logging.getLogger(__name__) +file_logger = logger.getChild("logfile") + +CHECKER_SETTINGS = { + "compute_accessibility": { + "settings_cls": AccessibilitySettings, + "settings_file": "accessibility.yaml", + }, + "atwork_subtour_destination": { + "settings_cls": TourLocationComponentSettings, + "settings_file": "atwork_subtour_destination.yaml", + }, + "atwork_subtour_frequency": { + "settings_cls": AtworkSubtourFrequencySettings, + "settings_file": "atwork_subtour_frequency.yaml", + }, + "atwork_subtour_mode_choice": { + "settings_cls": TourModeComponentSettings, + "settings_file": "tour_mode_choice.yaml", + }, + "atwork_subtour_scheduling": { + "settings_cls": TourSchedulingSettings, + "settings_file": "tour_scheduling_atwork.yaml", + }, + "auto_ownership_simulate": { + "settings_cls": AutoOwnershipSettings, + "settings_file": "auto_ownership.yaml", + }, + "cdap_simulate": {"settings_cls": CdapSettings, "settings_file": "cdap.yaml"}, + "compute_disaggregate_accessibility": { + "settings_cls": DisaggregateAccessibilitySettings, + "settings_file": "disaggregate_accessibility.yaml", + }, + "free_parking": { + "settings_cls": FreeParkingSettings, + "settings_file": "free_parking.yaml", + }, + "initialize_households": { + "settings_cls": InitializeTableSettings, + "settings_file": "initialize_households.yaml", + }, + "initialize_landuse": { + "settings_cls": InitializeTableSettings, + "settings_file": "initialize_landuse.yaml", + }, + "initialize_los": { + "settings_cls": NetworkSettings, + "settings_file": "network_los.yaml", + }, + "input_checker": { + "settings_cls": PydanticReadable, # input checker uses state.filesystem.read_model_settings directly + "settings_file": "input_checker.yaml", + }, + "joint_tour_composition": { + "settings_cls": JointTourCompositionSettings, + "settings_file": "joint_tour_composition.yaml", + }, + "joint_tour_destination": { + "settings_cls": TourLocationComponentSettings, + "settings_file": "joint_tour_destination.yaml", + }, + "joint_tour_frequency_composition": { + "settings_cls": JointTourFreqCompSettings, + "settings_file": "joint_tour_frequency_composition.yaml", + }, + "joint_tour_frequency": { + "settings_cls": JointTourFrequencySettings, + "settings_file": "joint_tour_frequency.yaml", + }, + "joint_tour_participation": { + "settings_cls": JointTourParticipationSettings, + "settings_file": "joint_tour_participation.yaml", + }, + "joint_tour_scheduling": { + "settings_cls": TourSchedulingSettings, + "settings_file": "joint_tour_scheduling.yaml", + }, + "mandatory_tour_frequency": { + "settings_cls": MandatoryTourFrequencySettings, + "settings_file": "mandatory_tour_frequency.yaml", + }, + "mandatory_tour_scheduling": { + "settings_cls": TourSchedulingSettings, + "settings_file": "mandatory_tour_scheduling.yaml", + }, + "non_mandatory_tour_destination": { + "settings_cls": TourLocationComponentSettings, + "settings_file": "non_mandatory_tour_destination.yaml", + }, + "non_mandatory_tour_frequency": { + "settings_cls": NonMandatoryTourFrequencySettings, + "settings_file": "non_mandatory_tour_frequency.yaml", + }, + "non_mandatory_tour_scheduling": { + "settings_cls": TourSchedulingSettings, + "settings_file": "non_mandatory_tour_scheduling.yaml", + }, + "parking_location": { + "settings_cls": ParkingLocationSettings, + "settings_file": "parking_location_choice.yaml", + }, + "school_escorting": { + "settings_cls": SchoolEscortSettings, + "settings_file": "school_escorting.yaml", + "spec_coefficient_keys": [ + {"spec": "OUTBOUND_SPEC", "coefs": "OUTBOUND_COEFFICIENTS"}, + {"spec": "INBOUND_SPEC", "coefs": "INBOUND_COEFFICIENTS"}, + {"spec": "OUTBOUND_COND_SPEC", "coefs": "OUTBOUND_COND_COEFFICIENTS"}, + ], + }, + "school_location": { + "settings_cls": TourLocationComponentSettings, + "settings_file": "school_location.yaml", + }, + "shadow_pricing": { + "settings_cls": ShadowPriceSettings, + "settings_file": "shadow_pricing.yaml", + }, + "stop_frequency": { + "settings_cls": StopFrequencySettings, + "settings_file": "stop_frequency.yaml", + }, + "summarize": {"settings_cls": SummarizeSettings, "settings_file": "summarize.yaml"}, + "telecommute_frequency": { + "settings_cls": TelecommuteFrequencySettings, + "settings_file": "telecommute_frequency.yaml", + }, + "tour_mode_choice_simulate": { + "settings_cls": TourModeComponentSettings, + "settings_file": "tour_mode_choice.yaml", + }, + "tour_od_choice": { + "settings_cls": TourODSettings, + "settings_file": "tour_od_choice.yaml", + }, + "tour_scheduling_probabilistic": { + "settings_cls": TourSchedulingProbabilisticSettings, + "settings_file": "tour_scheduling_probabilistic.yaml", + }, + "transit_pass_ownership": { + "settings_cls": TransitPassOwnershipSettings, + "settings_file": "transit_pass_ownership.yaml", + }, + "transit_pass_subsidy": { + "settings_cls": TransitPassSubsidySettings, + "settings_file": "transit_pass_subsidy.yaml", + }, + "trip_departure_choice": { + "settings_cls": TripDepartureChoiceSettings, + "settings_file": "trip_departure_choice.yaml", + }, + "trip_destination": { + "settings_cls": TripDestinationSettings, + "settings_file": "trip_destination.yaml", + }, + "trip_mode_choice": { + "settings_cls": TripModeChoiceSettings, + "settings_file": "trip_mode_choice.yaml", + }, + "trip_purpose": { + "settings_cls": TripPurposeSettings, + "settings_file": "trip_purpose.yaml", + }, + "trip_purpose_and_destination": { + "settings_cls": TripPurposeAndDestinationSettings, + "settings_file": "trip_purpose_and_destination.yaml", + }, + "vehicle_allocation": { + "settings_cls": VehicleAllocationSettings, + "settings_file": "vehicle_allocation.yaml", + }, + "vehicle_type_choice": { + "settings_cls": VehicleAllocationSettings, + "settings_file": "vehicle_allocation.yaml", + }, + "vehicle_type_choice": { + "settings_cls": VehicleTypeChoiceSettings, + "settings_file": "vehicle_type_choice.yaml", + }, + "work_from_home": { + "settings_cls": WorkFromHomeSettings, + "settings_file": "work_from_home.yaml", + }, + "workplace_location": { + "settings_cls": TourLocationComponentSettings, + "settings_file": "workplace_location.yaml", + }, + "write_data_dictionary": { + "settings_cls": PydanticReadable, # write data dictionary uses state.filesystem.read_model_settings directly + "settings_file": "write_data_dictionary.yaml", + "warn_only": True, + }, + "write_trip_matrices": { + "settings_cls": WriteTripMatricesSettings, + "settings_file": "write_trip_matrices.yaml", + }, +} + + +def try_load_model_settings( + model_name: str, + model_settings_class: Type[PydanticBase], + model_settings_file: str, + state: State, +) -> tuple[PydanticBase | None, Exception | None]: + + msg = f"Attempting to load model settings for {model_name} via {model_settings_class.__name__} and {model_settings_file}" + logger.info(msg) + file_logger.info(msg) + + try: + if isinstance(model_settings_class, DisaggregateAccessibilitySettings): + model_settings = read_disaggregate_accessibility_yaml( + state, model_settings_file + ) + elif model_name == "input_checker": + # HACK: input checker does not define a pydantic data model, but reads directly to dictionary. Wrapping in BaseModel + # provides the required model_dump interface downstream without adding additional branching logic. + class InputCheckerSettings(PydanticBase): + input_check_settings: dict + + input_check_settings = state.filesystem.read_model_settings( + model_settings_file, mandatory=True + ) + model_settings = InputCheckerSettings( + input_check_settings=input_check_settings + ) + else: + model_settings = model_settings_class.read_settings_file( + state.filesystem, model_settings_file + ) + result = model_settings, None + msg = f"Successfully loaded model settings from {model_settings_file}" + logger.info(msg) + except Exception as e: + result = None, e + return result + + +def try_load_spec( + model_name: str, model_settings: PydanticBase, spec_file: str, state: State +) -> tuple[DataFrame | None, Exception | None]: + msg = f"Attempting to load SPEC for {model_name} via {model_settings.__class__.__name__}" + logger.info(msg) + file_logger.info(msg) + try: + result = state.filesystem.read_model_spec(spec_file), None + msg = f"Successfully loaded model SPEC from {spec_file}" + logger.info(msg) + file_logger.info(msg) + except Exception as e: + # always return a dataframe + result = None, e + return result + + +def try_load_coefs( + model_name: str, model_settings: PydanticBase, coefs_file: str, state: State +) -> tuple[DataFrame, Optional[Exception]]: + msg = f"Attempting to load COEFFICIENTS for {model_name} via {model_settings.__class__.__name__}" + logger.info(msg) + file_logger.info(msg) + + try: + result = state.filesystem.read_model_coefficients(file_name=coefs_file), None + msg = f"Successfully loaded model Coefficients from {coefs_file}" + logger.info(msg) + file_logger.info(msg) + except Exception as e: + result = None, e + return result + + +def try_eval_spec_coefs( + model_name: str, + model_settings: PydanticBase, + spec: DataFrame | None, + coefs: DataFrame | None, + state: State, +) -> tuple[DataFrame | None, Exception | None]: + + if spec is None or coefs is None: + msg_prefix = ( + f"Skipping Evaluation Check for {model_settings.__class__.__name__}" + ) + spec_msg = "No SPEC available" if spec is None else "" + coefs_msg = "No COEFFICENTS available" if coefs is None else "" + msg = ". ".join([msg_prefix, spec_msg, coefs_msg]) + logger.debug(msg) + file_logger.debug(msg) + return None, None + + try: + # check whether coefficients should be evaluated as NESTS or not + if model_settings.model_dump().get("NESTS"): + if isinstance(model_settings.NESTS, LogitNestSpec): + nests = model_settings.NESTS + else: + nests = None + if nests is not None: + # Proper Trace label is probably unneeded here + result = ( + eval_nest_coefficients(model_settings.NESTS, coefs, trace_label=None), + None, + ) + else: + result = eval_coefficients(state, spec, coefs, estimator=None), None + msg = f"Successfully evaluated coefficients for {model_name}" + logger.info(msg) + file_logger.info(msg) + except Exception as e: + result = None, e + return result + + +def try_check_spec_coefs_templated( + model_name: str, model_settings: TemplatedLogitComponentSettings, state: State +) -> list[Exception]: + """Alternative function for checking mode choice settings using a templated coefficients files""" + + errors = [] + inner_errors = [] + + try: + coefs_template = read_model_coefficient_template( + state.filesystem, model_settings + ) + coefs_segments = list(coefs_template.columns) + + for segment_name in coefs_segments: + try: + nest_spec = config.get_logit_model_settings(model_settings) + coefs = state.filesystem.get_segment_coefficients( + model_settings, segment_name + ) + # Proper trace label probably unneeded here + nest_spec = eval_nest_coefficients(nest_spec, coefs, trace_label=None) + except Exception as e: + additional_info = f"Could not evaluate templated coefficients for segment {segment_name}. Check that SPEC, Coefficients, and Template files exist and have compatible labels." + inner_errors.append( + SettingsCheckerError( + model_name, + e, + [ + model_settings.SPEC, + model_settings.COEFFICIENTS, + model_settings.COEFFICIENT_TEMPLATE, + ], + additional_info, + ) + ) + continue + except Exception as e: + msg = f"{model_name}: Could not evaluate templated coefficients. Check that SPEC, Coefficients, and Template files exist and have compatible labels." + logger.warning(msg) + file_logger.warning(msg) + + additional_info = "Could not evaluated templated coefficients. Check that SPEC, Coefficients, and Template files exist and have compatible labels." + + errors.append( + SettingsCheckerError( + model_name, + e, + [ + model_settings.SPEC, + model_settings.COEFFICIENTS, + model_settings.COEFFICIENT_TEMPLATE, + ], + additional_info, + ) + ) + + errors.extend(inner_errors) + + return errors + + +def try_check_spec_coefs_ptype_spec_segments( + model_name: str, model_settings: PydanticBase, state: State +) -> list[Exception]: + """Alternative function for checking settings that are segmented by PTYPE within the main model spec""" + errors = [] + + try: + spec_segments = model_settings.SPEC_SEGMENTS + model_spec = state.filesystem.read_model_spec(file_name=model_settings.SPEC) + + # pick the spec column for the segment + for segment_settings in spec_segments: + segment_name = segment_settings.NAME + segment_spec = model_spec[[segment_name]] + + coefficients_df = state.filesystem.read_model_coefficients(segment_settings) + segment_spec = eval_coefficients( + state, segment_spec, coefficients_df, estimator=None + ) + except Exception as e: + errors.append( + SettingsCheckerError( + model_name, e, [model_settings.SPEC, model_settings.COEFFICIENTS] + ) + ) + return errors + + +def try_load_and_check_spec_coefs( + model_name: str, + model_settings: Type[PydanticBase], + state: State, + spec_coefficient_keys: list[dict] = None, +) -> list[Exception]: + """Attempt to load and evaluate SPEC and COEFFICIENTS. + By default, will look for SPEC and COEFFICIENTS at the top level of the settings. + This can be overriden by providing an alternative set of spec/coefs keys + in the settings checker register. + """ + # collect all errors + errors = [] + + if spec_coefficient_keys is None: + spec_coefficient_keys = [{"spec": "SPEC", "coefs": "COEFFICIENTS"}] + + for key_pair in spec_coefficient_keys: + + # attempt to read SPEC file + if hasattr(model_settings, key_pair["spec"]): + spec_file = model_settings.model_dump().get(key_pair["spec"]) + + # HACK: some models may use older "SPECIFICATION" field name instead of "SPEC" + if spec_file is None and hasattr(model_settings, "SPECIFICATION"): + spec_file = model_settings.SPECIFICATION + + if spec_file is not None: + spec, spec_error = try_load_spec( + model_name=model_name, + model_settings=model_settings, + spec_file=spec_file, + state=state, + ) + else: + spec, spec_error = None, None + msg = f"{model_name}: Field {key_pair['spec']} is None in {model_settings.__class__.__name__}. Ensure that a filepath is defined YAML settings if required" + logger.warning(msg) + file_logger.warning(msg) + else: + spec, spec_error = None, None + # msg = f"No SPEC file is associated with {model_settings.__class__.__name__}" + # logger.info(msg) + # file_logger.info(msg) + + if spec_error is not None: + errors.append(spec_error) + + # then attempt to read coefficients + if hasattr(model_settings, key_pair["coefs"]): + coefs_file = model_settings.model_dump().get(key_pair["coefs"]) + if coefs_file is not None: + coefs, coefs_error = try_load_coefs( + model_name=model_name, + model_settings=model_settings, + coefs_file=coefs_file, + state=state, + ) + else: + coefs, coefs_error = None, None + msg = f"{model_name}: Field {key_pair['coefs']} is None in {model_settings.__class__.__name__}. Ensure that a filepath is defined YAML settings if required" + logger.warning(msg) + file_logger.warning(msg) + else: + coefs, coefs_error = None, None + # msg = f"No coefficients file is associated with {model_settings.__class__.__name__}" + # logger.info(msg) + # file_logger.info(msg) + + if coefs_error is not None: + errors.append(SettingsCheckerError(model_name, coefs_error, coefs_file)) + + # then attempt to evaluate coefficients against spec + eval_coefs, eval_coefs_error = try_eval_spec_coefs( + model_name=model_name, + model_settings=model_settings, + spec=spec, + coefs=coefs, + state=state, + ) + + if eval_coefs_error is not None: + errors.append( + SettingsCheckerError( + model_name, eval_coefs_error, [spec_file, coefs_file] + ) + ) + + # then, check any other subsettings that may have a SPEC + # this includes preprocessors and annotators, etc. + # for now, check is limited to check that the SPEC file is loadable + for _, setting in model_settings: + if ( + isinstance(setting, PydanticBase) + and setting.model_dump().get("SPEC") is not None + ): + addl_spec_file = setting.SPEC + addl_spec, addl_spec_error = try_load_spec( + model_name=model_name + f": {setting.__class__.__name__}", + model_settings=setting, + spec_file=addl_spec_file, + state=state, + ) + if addl_spec_error: + errors.append( + SettingsCheckerError(model_name, addl_spec_error, addl_spec_file) + ) + return errors + + +def check_model_settings( + state: State, + checker_settings: dict = CHECKER_SETTINGS, + extension_settings: dict = {}, + log_file: str = "settings_checker.log", +) -> None: + + # Collect all errors + all_errors = [] + + # additional logging set up + formatter = logging.Formatter( + "%(asctime)s - %(levelname)s - %(message)s", datefmt="%Y-%m-%d %H:%M:%S" + ) + out_log_file = state.get_log_file_path(log_file) + if os.path.exists(out_log_file): + os.remove(out_log_file) + module_handler = logging.FileHandler(out_log_file) + module_handler.setFormatter(formatter) + file_logger.addHandler(module_handler) + file_logger.propagate = False + + # add extension settings to checker settings + if extension_settings is not None: + checker_settings.update(extension_settings) + + # extract all model components + all_models = state.settings.models.copy() + + # add shadow pricing and initalize los (not in state.settings.models) + if state.settings.use_shadow_pricing == True: + all_models.append("shadow_pricing") + if "initialize_los" in state._RUNNABLE_STEPS: + all_models.append("initialize_los") + + for model_name in all_models: + + if not model_name in checker_settings: + msg = ( + f"Cannot pre-check settings for model component {model_name}: " + "mapping to a Pydantic data model is undefined in the checker." + ) + logger.info(msg) + file_logger.info(msg) + continue + + model_settings_class = checker_settings[model_name]["settings_cls"] + model_settings_file = checker_settings[model_name]["settings_file"] + spec_coefficient_keys = checker_settings[model_name].get( + "spec_coefficient_keys" + ) + # do not raise errors if YAML file cannot be loaded + # this is used for write_data_dictionary + warn_only = checker_settings[model_name].get("warn_only", False) + + # first, attempt to load settings + # continue if any error + model_settings, model_settings_error = try_load_model_settings( + model_name=model_name, + model_settings_class=model_settings_class, + model_settings_file=model_settings_file, + state=state, + ) + + if model_settings_error is not None: + if warn_only: + msg = f"{model_name} settings file {model_settings_file} could not be loaded. Ensure inclusion of this configuration file is optional." + logger.warning(msg) + file_logger.warning(msg) + continue + else: + all_errors.append( + SettingsCheckerError( + model_name, model_settings_error, model_settings_file + ) + ) + continue + + # then attempt to load and resolve spec/coef files + if isinstance(model_settings, TemplatedLogitComponentSettings): + errors = try_check_spec_coefs_templated( + model_name=model_name, model_settings=model_settings, state=state + ) + else: + errors = try_load_and_check_spec_coefs( + model_name=model_name, + model_settings=model_settings, + state=state, + spec_coefficient_keys=spec_coefficient_keys, + ) + all_errors.extend(errors) + + # if model has nested SPEC_SEGMENTS, check each of these. + # there are two ways of segmenting specs, which are handled differently: + # 1) Settings using define separate pairs of spec/coefficient files. + # 2) Others define segments within the main model spec file, keyed by PTYPE. + if model_settings.model_dump().get("SPEC_SEGMENTS"): + + spec_segments = model_settings.SPEC_SEGMENTS + + if isinstance(spec_segments, dict): + spec_segments = [ + segment for segment_name, segment in spec_segments.items() + ] + + # check the first segment to see if PTYPE should be defined + # this avoids needing to hardcode branching logic to determine evaluation method + if "PTYPE" in spec_segments[0].model_fields: + errors = try_check_spec_coefs_ptype_spec_segments( + model_name=model_name, + model_settings=model_settings, + state=state, + ) + all_errors.extend(errors) + else: + for segment_settings in spec_segments: + errors = try_load_and_check_spec_coefs( + model_name=model_name, + model_settings=segment_settings, + state=state, + ) + all_errors.extend(errors) + + if len(all_errors) > 0: + msg = "Settings Checker Failed with the following errors:" + logger.error(msg) + file_logger.error(msg) + for e in all_errors: + logger.error(f"\t{str(e)}") + file_logger.error(f"\t{str(e)}") + raise RuntimeError( + f"Encountered one or more errors in settings checker. See f{log_file} for details." + ) + msg = f"Setting Checker Complete. No runtime errors were raised. Check f{log_file} for warnings. These *may* prevent model from successfully running." + logger.info(msg) + file_logger.info(msg) diff --git a/activitysim/cli/run.py b/activitysim/cli/run.py index 69b03101b..8556b988a 100644 --- a/activitysim/cli/run.py +++ b/activitysim/cli/run.py @@ -14,6 +14,8 @@ from activitysim.core import chunk, config, mem, tracing, workflow from activitysim.core.configuration import FileSystem, Settings +from activitysim.abm.models.settings_checker import check_model_settings + logger = logging.getLogger(__name__) @@ -283,7 +285,7 @@ def run(args): # Memory sidecar is only useful for single process runs # multiprocess runs log memory usage without blocking in the controlling process. mem_prof_log = state.get_log_file_path("memory_profile.csv") - from ..core.memory_sidecar import MemorySidecar + from activitysim.core.memory_sidecar import MemorySidecar memory_sidecar_process = MemorySidecar(mem_prof_log) else: @@ -373,6 +375,28 @@ def run(args): t0 = tracing.print_elapsed_time() + if state.settings.check_model_settings == True: + logger.info( + "Settings checker will check core settings files. See settings_checker.log for details." + ) + # get any additional settings definitions from extensions + extension_checker_settings = {} + extension_names = state.get_injectable("imported_extensions") + if extension_names: + for ext in extension_names: + try: + settings_checker_ext = importlib.import_module( + ext + ".settings_checker" + ) + extension_checker_settings.update( + settings_checker_ext.EXTENSION_CHECKER_SETTINGS + ) + except ImportError: + logger.warning( + f"Extension {ext} does not have a settings_checker module or it cannot be imported." + ) + check_model_settings(state, extension_settings=extension_checker_settings) + try: if state.settings.multiprocess: logger.info("run multiprocess simulation") diff --git a/activitysim/core/configuration/top.py b/activitysim/core/configuration/top.py index 024f878a4..5047be32e 100644 --- a/activitysim/core/configuration/top.py +++ b/activitysim/core/configuration/top.py @@ -720,6 +720,13 @@ def _check_store_skims_in_shm(self): .. versionadded:: 1.3 """ + check_model_settings: bool = True + """ + run checks to validate that YAML settings files are loadable and spec and coefficent csv can be resolved. + + should catch many common errors early, including missing required configurations or specified coefficient labels without defined values. + """ + other_settings: dict[str, Any] = None def _get_attr(self, attr): diff --git a/activitysim/examples/prototype_mwcog/configs/non_mandatory_tour_scheduling.yaml b/activitysim/examples/prototype_mwcog/configs/non_mandatory_tour_scheduling.yaml index 34b5a9a8e..041194346 100644 --- a/activitysim/examples/prototype_mwcog/configs/non_mandatory_tour_scheduling.yaml +++ b/activitysim/examples/prototype_mwcog/configs/non_mandatory_tour_scheduling.yaml @@ -1,5 +1,8 @@ -SPEC: tour_scheduling_nonmandatory.csv -COEFFICIENTS: tour_scheduling_nonmandatory_coeffs.csv +# Should not specify both general SPEC and SPEC_SEGMENTS.SPEC +# SPEC: tour_scheduling_nonmandatory.csv + +# Should not specify both COEFFICENTS and SPEC_SEGMENTS +# COEFFICIENTS: tour_scheduling_nonmandatory_coeffs.csv LOGIT_TYPE: MNL From e345f9774e14d0eac7fe01b2e22aeca28c2b821f Mon Sep 17 00:00:00 2001 From: Jeffrey Newman Date: Mon, 25 Aug 2025 10:43:27 -0500 Subject: [PATCH 10/34] Expression profiling (legacy mode) (#936) * expression profiling * two reports * make simple report sortable * change default to grid * configurable expression_profile_cutoff * works with MP * documentation * expression_profile_style * performance_log can be bool * fix for pandas 2 * test expr profiling * test expression profiling on mtc and semcog examples * set encoding to utf8 because windows * add missing import * add warning about path length in error message * oops, .log not .csv * add timestamping to expression profile logs * fix file naming, update tests * all subprocesses to same timestamp * add note in docs about runtime cost --- .github/workflows/core_tests.yml | 33 + activitysim/abm/models/summarize.py | 17 +- activitysim/cli/run.py | 19 +- activitysim/core/assign.py | 49 +- activitysim/core/configuration/base.py | 22 + activitysim/core/configuration/top.py | 54 ++ activitysim/core/expressions.py | 1 + activitysim/core/interaction_simulate.py | 33 +- activitysim/core/simulate.py | 51 +- activitysim/core/timing.py | 787 ++++++++++++++++++ activitysim/core/workflow/state.py | 44 + activitysim/examples/example_manifest.yaml | 1 + .../users-guide/performance/expr-profiling.md | 107 +++ docs/users-guide/performance/index.md | 1 + test/test_expression_profiling.py | 135 +++ 15 files changed, 1316 insertions(+), 38 deletions(-) create mode 100644 activitysim/core/timing.py create mode 100644 docs/users-guide/performance/expr-profiling.md create mode 100644 test/test_expression_profiling.py diff --git a/.github/workflows/core_tests.yml b/.github/workflows/core_tests.yml index 481128278..16f63a506 100644 --- a/.github/workflows/core_tests.yml +++ b/.github/workflows/core_tests.yml @@ -321,6 +321,39 @@ jobs: run: | uv run pytest activitysim/estimation/test/test_larch_estimation.py --durations=0 + expression-profiling: + needs: foundation + env: + python-version: "3.10" + label: win-64 + defaults: + run: + shell: pwsh + name: Expression Profiling Tests + runs-on: windows-latest + steps: + - uses: actions/checkout@v4 + + - name: Install uv + uses: astral-sh/setup-uv@v5 + with: + version: "0.7.12" + enable-cache: true + cache-dependency-glob: "uv.lock" + + - name: "Set up Python" + uses: actions/setup-python@v5 + with: + python-version-file: ".python-version" + + - name: Install activitysim + run: | + uv sync --locked --only-group github-action + + - name: Test Expression Profiling + run: | + uv run pytest test/test_expression_profiling.py + develop-docbuild: needs: foundation if: github.ref_name == 'main' || github.ref_name == 'docs-fix' diff --git a/activitysim/abm/models/summarize.py b/activitysim/abm/models/summarize.py index d613b5637..fb29fe19d 100644 --- a/activitysim/abm/models/summarize.py +++ b/activitysim/abm/models/summarize.py @@ -4,11 +4,12 @@ import logging import os +from pathlib import Path import numpy as np import pandas as pd -from activitysim.core import expressions, workflow +from activitysim.core import expressions, timing, workflow from activitysim.core.configuration.base import PreprocessorSettings, PydanticReadable from activitysim.core.los import Network_LOS @@ -353,6 +354,12 @@ def summarize( } ) + if state.settings.expression_profile: + perf_log_file = Path(trace_label + ".log") + else: + perf_log_file = None + performance_timer = timing.EvalTiming(perf_log_file) + for i, row in spec.iterrows(): out_file = row["Output"] expr = row["Expression"] @@ -361,15 +368,19 @@ def summarize( if out_file.startswith("_"): logger.debug(f"Temp Variable: {expr} -> {out_file}") - locals_d[out_file] = eval(expr, globals(), locals_d) + with performance_timer.time_expression(expr): + locals_d[out_file] = eval(expr, globals(), locals_d) continue logger.debug(f"Summary: {expr} -> {out_file}.csv") - resultset = eval(expr, globals(), locals_d) + with performance_timer.time_expression(expr): + resultset = eval(expr, globals(), locals_d) resultset.to_csv( state.get_output_file_path( os.path.join(output_location, f"{out_file}.csv") ), index=False, ) + + performance_timer.write_log(state) diff --git a/activitysim/cli/run.py b/activitysim/cli/run.py index 8556b988a..233267051 100644 --- a/activitysim/cli/run.py +++ b/activitysim/cli/run.py @@ -8,10 +8,11 @@ import os import sys import warnings +from datetime import datetime import numpy as np -from activitysim.core import chunk, config, mem, tracing, workflow +from activitysim.core import chunk, config, mem, timing, tracing, workflow from activitysim.core.configuration import FileSystem, Settings from activitysim.abm.models.settings_checker import check_model_settings @@ -27,6 +28,7 @@ "cache_dir", "settings_file_name", "imported_extensions", + "run_timestamp", ] @@ -281,6 +283,14 @@ def run(args): if state.settings.rotate_logs: state.logging.rotate_log_directory() + # set a run timestamp + timestamp = state.get("run_timestamp", None) + if timestamp is None: + # if no run timestamp, use current time, and store it so + # it can be used later in the same run + timestamp = datetime.now().strftime("%Y%m%d-%H%M%S") + state.set("run_timestamp", timestamp) + if state.settings.memory_profile and not state.settings.multiprocess: # Memory sidecar is only useful for single process runs # multiprocess runs log memory usage without blocking in the controlling process. @@ -450,6 +460,13 @@ def run(args): if memory_sidecar_process: memory_sidecar_process.stop() + if state.settings.expression_profile: + # generate a summary of slower expression evaluation times + # across all models and write to a file + analyze = timing.AnalyzeEvalTiming(state) + analyze.component_report(style=state.settings.expression_profile_style) + analyze.subcomponent_report(style=state.settings.expression_profile_style) + return 0 diff --git a/activitysim/core/assign.py b/activitysim/core/assign.py index c5f69d1d1..870904db6 100644 --- a/activitysim/core/assign.py +++ b/activitysim/core/assign.py @@ -5,11 +5,12 @@ import logging from builtins import object, zip from collections import OrderedDict +from pathlib import Path import numpy as np import pandas as pd -from activitysim.core import chunk, util, workflow +from activitysim.core import chunk, timing, util, workflow logger = logging.getLogger(__name__) @@ -275,6 +276,12 @@ def to_series(x): assert assignment_expressions.shape[0] > 0 + if state.settings.expression_profile: + perf_log_file = Path(trace_label + ".log") + else: + perf_log_file = None + performance_timer = timing.EvalTiming(perf_log_file) + trace_assigned_locals = trace_results = None if trace_rows is not None: # convert to numpy array so we can slice ndarrays as well as series @@ -311,24 +318,25 @@ def to_series(x): n_randoms += 1 assignment_expressions.loc[expression_idx, "expression"] = expression if n_randoms: - try: - random_draws = state.get_rn_generator().normal_for_df( - df, broadcast=True, size=n_randoms - ) - except RuntimeError: - pass - else: - _locals_dict["random_draws"] = random_draws + with performance_timer.time_expression(""): + try: + random_draws = state.get_rn_generator().normal_for_df( + df, broadcast=True, size=n_randoms + ) + except RuntimeError: + pass + else: + _locals_dict["random_draws"] = random_draws - def rng_lognormal(random_draws, mu, sigma, broadcast=True, scale=False): - if scale: - x = 1 + ((sigma * sigma) / (mu * mu)) - mu = np.log(mu / (np.sqrt(x))) - sigma = np.sqrt(np.log(x)) - assert broadcast - return np.exp(random_draws * sigma + mu) + def rng_lognormal(random_draws, mu, sigma, broadcast=True, scale=False): + if scale: + x = 1 + ((sigma * sigma) / (mu * mu)) + mu = np.log(mu / (np.sqrt(x))) + sigma = np.sqrt(np.log(x)) + assert broadcast + return np.exp(random_draws * sigma + mu) - _locals_dict["rng_lognormal"] = rng_lognormal + _locals_dict["rng_lognormal"] = rng_lognormal sharrow_enabled = state.settings.sharrow @@ -356,7 +364,8 @@ def rng_lognormal(random_draws, mu, sigma, broadcast=True, scale=False): if is_temp_singular(target) or is_throwaway(target): try: - x = eval(expression, globals(), _locals_dict) + with performance_timer.time_expression(expression): + x = eval(expression, globals(), _locals_dict) except Exception as err: logger.error( "assign_variables error: %s: %s", type(err).__name__, str(err) @@ -384,7 +393,8 @@ def rng_lognormal(random_draws, mu, sigma, broadcast=True, scale=False): # FIXME should whitelist globals for security? globals_dict = {} - expr_values = to_series(eval(expression, globals_dict, _locals_dict)) + with performance_timer.time_expression(expression): + expr_values = to_series(eval(expression, globals_dict, _locals_dict)) if sharrow_enabled: if isinstance(expr_values.dtype, pd.api.types.CategoricalDtype): @@ -459,4 +469,5 @@ def rng_lognormal(random_draws, mu, sigma, broadcast=True, scale=False): inplace=True, ) + performance_timer.write_log(state) return variables, trace_results, trace_assigned_locals diff --git a/activitysim/core/configuration/base.py b/activitysim/core/configuration/base.py index ec27fee99..6936e6d1a 100644 --- a/activitysim/core/configuration/base.py +++ b/activitysim/core/configuration/base.py @@ -234,6 +234,28 @@ def pandas_option_context(self): else: yield + performance_log: Path | bool | None = None + """Log runtime performance to this file. + + The runtime performance log shows the time taken to evaluate each + expression in the specification files. It is useful for debugging + performance issues with complex expressions. + + Giving a filename here will override the global performance logging + setting, and will log performance to the specified file, unless the + global performance logging setting is set to `False`, in which case + no performance logging will be done for any component. + + If set to `True`, performance logging will be activated, and the filename + will be chosen based on the trace label for this component. + + If this path is set to None (the default), performance logging will be + activated based on the global performance logging setting, and the filename + will be chosen based on the trace label for this component. This is strongly + recommended for most use cases, unless the trace label causes the filename + to be too long or otherwise unsuitable for the filesystem. + """ + def subcomponent_settings(self, subcomponent: str) -> ComputeSettings: """Get the sharrow settings for a particular subcomponent.""" return ComputeSettings( diff --git a/activitysim/core/configuration/top.py b/activitysim/core/configuration/top.py index 5047be32e..405560810 100644 --- a/activitysim/core/configuration/top.py +++ b/activitysim/core/configuration/top.py @@ -537,6 +537,60 @@ def _check_store_skims_in_shm(self): own that pollutes the collected data. """ + expression_profile: bool | None = None + """ + Track the runtime of each individual expression in each spec file. + + .. versionadded:: 1.4 + + The default value of this setting is `None`, which sets no global control + of expression profiling, and allows this feature to be turned on or off + for individual components. If set to `True`, all components will have + expression profiling enabled, and the outputs will be written to files named + based on the trace label unless explicitly set in the `compute_settings` for + individual components. If set to `False`, all components will have expression + profiling disabled. + + This is generally a developer-only feature and not needed for regular usage. + It will add some overhead to the model run, which is only valuable if you + expect the review the expression runtimes with an eye towards improving them. + Production model users should typically have this set explicitly to `False`. + """ + + expression_profile_style: Literal["simple", "grid"] = "grid" + """ + The style of the expression profiling report. + + .. versionadded:: 1.4 + + This setting controls the style of the expression profiling report that is + generated at the end of a model run when :py:attr:`expression_profile` is + `True`. The report summarizes the runtime of each expression in each spec + file, and can be used to identify slow or inefficient expressions. + + The "simple" style generates a simple HTML table with the expression names, + runtimes, and other relevant information. This may be easier to import into + other tools (e.g. Excel) for further analysis if desired. The "grid" style + generates a JavaScript data grid that allows for sorting and filtering of the + expression runtimes, making it easier to analyze large sets of expressions + directly in a web browser with no other outside analysis tools. + """ + + expression_profile_cutoff: float = 0.1 + """ + Minimum runtime for an expression to be included in the expression profile. + + .. versionadded:: 1.4 + + Expressions that take less than this amount of time to evaluate will not be + included in the summary report of expression profiling generated at the end + of a model run. For large scale models, this value can be increased to make + the report file smaller, as only the largest values will typically be of + interest. + + This setting has no effect if :py:attr:`expression_profile` is not `True`. + """ + benchmarking: bool = False """ Flag this model run as a benchmarking run. diff --git a/activitysim/core/expressions.py b/activitysim/core/expressions.py index e6ef0b8e6..f8a255fb1 100644 --- a/activitysim/core/expressions.py +++ b/activitysim/core/expressions.py @@ -139,6 +139,7 @@ def compute_columns( df, _locals_dict, trace_rows=state.tracing.trace_targets(df), + trace_label=trace_label, ) if trace_results is not None: diff --git a/activitysim/core/interaction_simulate.py b/activitysim/core/interaction_simulate.py index f14f0201d..d0af58e77 100644 --- a/activitysim/core/interaction_simulate.py +++ b/activitysim/core/interaction_simulate.py @@ -7,12 +7,13 @@ from builtins import zip from collections import OrderedDict from datetime import timedelta +from pathlib import Path from typing import Mapping import numpy as np import pandas as pd -from activitysim.core import chunk, logit, simulate, tracing, util, workflow +from activitysim.core import chunk, logit, simulate, timing, tracing, util, workflow from activitysim.core.configuration.base import ComputeSettings from activitysim.core.fast_eval import fast_eval @@ -263,6 +264,23 @@ def to_series(x): exprs = spec.index labels = spec.index + # init a performance timer if needed + if ( + state.settings.expression_profile + and compute_settings.performance_log is None + ): + perf_log_file = Path(trace_label + ".log") + elif ( + state.settings.expression_profile is False + or compute_settings.performance_log is False + ): + perf_log_file = None + elif compute_settings.performance_log is True: + perf_log_file = Path(trace_label + ".log") + else: + perf_log_file = compute_settings.performance_log + performance_timer = timing.EvalTiming(perf_log_file) + with compute_settings.pandas_option_context(): for expr, label, coefficient in zip(exprs, labels, spec.iloc[:, 0]): try: @@ -270,7 +288,8 @@ def to_series(x): if expr.startswith("_"): target = expr[: expr.index("@")] rhs = expr[expr.index("@") + 1 :] - v = to_series(eval(rhs, globals(), locals_d)) + with performance_timer.time_expression(expr): + v = to_series(eval(rhs, globals(), locals_d)) # update locals to allows us to ref previously assigned targets locals_d[target] = v @@ -285,10 +304,11 @@ def to_series(x): # they have a non-zero dummy coefficient to avoid being removed from spec as NOPs continue - if expr.startswith("@"): - v = to_series(eval(expr[1:], globals(), locals_d)) - else: - v = fast_eval(df, expr, resolvers=[locals_d]) + with performance_timer.time_expression(expr): + if expr.startswith("@"): + v = to_series(eval(expr[1:], globals(), locals_d)) + else: + v = fast_eval(df, expr, resolvers=[locals_d]) if check_for_variability and v.std() == 0: logger.info( @@ -403,6 +423,7 @@ def to_series(x): trace_label, "eval.trace_eval_results", trace_eval_results ) + performance_timer.write_log(state) chunk_sizer.log_df(trace_label, "v", None) chunk_sizer.log_df( trace_label, "eval.utilities", None diff --git a/activitysim/core/simulate.py b/activitysim/core/simulate.py index 2afed7f01..6cd4a51f6 100644 --- a/activitysim/core/simulate.py +++ b/activitysim/core/simulate.py @@ -21,6 +21,7 @@ configuration, logit, pathbuilder, + timing, tracing, util, workflow, @@ -628,6 +629,22 @@ def eval_utilities( if utilities is None or estimator or sharrow_enabled == "test": trace_label = tracing.extend_trace_label(trace_label, "eval_utils") + if ( + state.settings.expression_profile + and compute_settings.performance_log is None + ): + perf_log_file = Path(trace_label + ".log") + elif ( + state.settings.expression_profile is False + or compute_settings.performance_log is False + ): + perf_log_file = None + elif compute_settings.performance_log is True: + perf_log_file = Path(trace_label + ".log") + else: + perf_log_file = compute_settings.performance_log + performance_timer = timing.EvalTiming(perf_log_file) + # avoid altering caller's passed-in locals_d parameter (they may be looping) locals_dict = assign.local_utilities(state) @@ -654,10 +671,13 @@ def eval_utilities( with warnings.catch_warnings(record=True) as w: # Cause all warnings to always be triggered. warnings.simplefilter("always") - if expr.startswith("@"): - expression_value = eval(expr[1:], globals_dict, locals_dict) - else: - expression_value = fast_eval(choosers, expr) + with performance_timer.time_expression(expr): + if expr.startswith("@"): + expression_value = eval( + expr[1:], globals_dict, locals_dict + ) + else: + expression_value = fast_eval(choosers, expr) if len(w) > 0: for wrn in w: @@ -686,6 +706,7 @@ def eval_utilities( expression_values[i] = expression_value i += 1 + performance_timer.write_log(state) chunk_sizer.log_df(trace_label, "expression_values", expression_values) if estimator: @@ -847,7 +868,9 @@ def eval_utilities( return utilities -def eval_variables(state: workflow.State, exprs, df, locals_d=None): +def eval_variables( + state: workflow.State, exprs, df, locals_d=None, trace_label: str | None = None +): """ Evaluate a set of variable expressions from a spec in the context of a given data table. @@ -874,6 +897,9 @@ def eval_variables(state: workflow.State, exprs, df, locals_d=None): locals_d : Dict This is a dictionary of local variables that will be the environment for an evaluation of an expression that begins with @ + trace_label : str + The trace label to use for performance logging. If None, performance + logging is not activated. Returns ------- @@ -908,13 +934,20 @@ def to_array(x): return a + if state.settings.expression_profile and trace_label: + perf_log_file = Path(trace_label + ".log") + else: + perf_log_file = None + performance_timer = timing.EvalTiming(perf_log_file) + values = OrderedDict() for expr in exprs: try: - if expr.startswith("@"): - expr_values = to_array(eval(expr[1:], globals_dict, locals_dict)) - else: - expr_values = to_array(fast_eval(df, expr)) + with performance_timer.time_expression(expr): + if expr.startswith("@"): + expr_values = to_array(eval(expr[1:], globals_dict, locals_dict)) + else: + expr_values = to_array(fast_eval(df, expr)) # read model spec should ensure uniqueness, otherwise we should uniquify assert expr not in values values[expr] = expr_values diff --git a/activitysim/core/timing.py b/activitysim/core/timing.py new file mode 100644 index 000000000..618d02b74 --- /dev/null +++ b/activitysim/core/timing.py @@ -0,0 +1,787 @@ +from __future__ import annotations + +from contextlib import contextmanager +from pathlib import Path +from time import time_ns +from typing import TYPE_CHECKING, Literal + +import pandas as pd + +from .util import si_units + +if TYPE_CHECKING: + from .workflow import State + + +class NoTiming: + """Class that does no timing, serves as the default. + + This class is kept as simple as possible to avoid unnecessary overhead when + no timing is requested. + """ + + @contextmanager + def time_expression(self, expression: str): + """Context manager to time an expression.""" + yield + + def write_log(self, state: State) -> None: + """Write the log to a file.""" + pass + + +class EvalTiming(NoTiming): + def __new__(cls, log: Path | None = None, **kwargs): + if log is None: + return NoTiming() + else: + return super().__new__(cls) + + def __init__(self, log: Path | None = None, *, overwrite: bool = False): + """ + Timing class to log the time taken to evaluate expressions. + + Parameters + ---------- + log : Path | None, default None + Path to the log file. If None, no logging is done. If this is an + absolute path, the log file is created there. If this is just a + simple filename or a relative path, the log file is created relative + in or relative to the usual logging directory. + overwrite : bool, default False + If True, overwrite the log file if it already exists. If False, + create a new log file with a unique name. + """ + self.log_file = log + self.overwrite = overwrite + self.elapsed_times = {} + + @contextmanager + def time_expression(self, expression: str): + """Context manager to time an expression. + + Parameters + ---------- + expression : str + The expression to be timed. This is used as the key in the log file. + """ + + # when performance logging is not enabled, do nothing + if self.log_file is None: + yield + return + + # when performance logging is enabled, we track the time it takes to evaluate + # the expression and store it + start_time = time_ns() + yield + end_time = time_ns() + elapsed_time = end_time - start_time + if expression in self.elapsed_times: + self.elapsed_times[expression] += elapsed_time + else: + self.elapsed_times[expression] = elapsed_time + + def write_log(self, state: State) -> None: + """Write the log to a file. + + Parameters + ---------- + state : State + The state object containing configuration information. This is used + to determine the path for the log file, when the log file is not + given as an absolute path. + """ + if self.log_file is None: + return + + if self.log_file.is_absolute(): + filename = self.log_file + else: + filename = state.get_expr_performance_log_file_path(str(self.log_file)) + + # if the log file already exists and overwrite is false, create a new file + proposed_filename = filename + n = 0 + while not self.overwrite and proposed_filename.exists(): + n += 1 + proposed_filename = filename.with_stem(filename.stem + f"-{n}") + filename = proposed_filename + + # ensure the parent directory exists + filename.parent.mkdir(parents=True, exist_ok=True) + + # Determine the scale for the elapsed times. We want to use an appropriate + # timescale for the elapsed times, which provides useful information without + # reporting excessive precision. + # If the smallest elapsed time is greater than 1 second, use seconds. + # If the smallest elapsed time is greater than 1 millisecond, use milliseconds. + # Otherwise, use microseconds, no one should care about nanoseconds. + min_t = 1_000_000_000 + for t in self.elapsed_times.values(): + if t < min_t: + min_t = t + if min_t > 1_000_000_000: + scale = 1_000_000_000 + label = "Time (sec)" + elif min_t > 1_000_000: + scale = 1_000_000 + label = "Time (msec)" + else: + scale = 1_000 + label = "Time (µsec)" + + # The timing log is written in a tab-separated format, with times in the + # first column so they are easy to scan through for anomalies. + try: + with open(filename, "w", encoding="utf-8") as f: + f.write(f"{label:11}\tExpression\n") + for expression, elapsed_time in self.elapsed_times.items(): + t = int(elapsed_time / scale) + f.write(f"{t: 11d}\t{expression}\n") + except FileNotFoundError as err: + if not filename.parent.exists(): + raise FileNotFoundError( + f"Could not write log file {filename!r}, parent directory does not exist." + ) from err + else: + raise FileNotFoundError( + f"Could not write log file {filename!r}\n check permissions " + f"or path length ({len(str(filename))} characters in relative path, " + f"{len(str(filename.absolute()))} in absolute path)." + ) from err + + +def write_sortable_table(df: pd.DataFrame, filename: str | Path) -> None: + html_table = df.to_html(classes="sortable", index=False) + html_content = f""" + + + + + + + {html_table} + + + + """ + with open(filename, "w") as f: + f.write(html_content) + + +class AnalyzeEvalTiming: + """ + Class to analyze the timing of expressions. + """ + + def _read_log(self, log_file: Path) -> pd.DataFrame: + """Read the log file and return a DataFrame.""" + df = pd.read_csv(log_file, sep="\t") + if "(msec)" in df.columns[0]: + df.columns = ["Time (µsec)"] + df.columns[1:].tolist() + df.iloc[:, 0] = df.iloc[:, 0].astype(int) * 1_000 + elif "(sec)" in df.columns[0]: + df.columns = ["Time (µsec)"] + df.columns[1:].tolist() + df.iloc[:, 0] = df.iloc[:, 0].astype(int) * 1_000_000 + else: + df.iloc[:, 0] = df.iloc[:, 0].astype(int) + return df + + def __init__(self, state: State, collect_mp: bool = True) -> None: + self.log_dir = state.get_expr_performance_log_file_path(".") + self.default_cutoff = state.settings.expression_profile_cutoff + raw_data = {} + for f in self.log_dir.glob("*.log"): + raw_data[str(f.stem)] = self._read_log(f) + + if raw_data: + d = pd.concat(raw_data, names=["Component"]).reset_index() + d["Proc"] = "main" + else: + d = None + + if collect_mp: + raw_data = {} + mp_log_dirs = state.get_expr_performance_log_file_path(".").glob( + "*-expr-performance" + ) + for mp_log_dir in mp_log_dirs: + subproc_name = "-".join(mp_log_dir.stem.split("-")[:-2]) + for f in mp_log_dir.glob("*.log"): + raw_data[subproc_name, str(f.stem)] = self._read_log(f) + if raw_data: + d_mp = pd.concat(raw_data, names=["Proc", "Component"]).reset_index() + if d is None: + d = d_mp + else: + d = pd.concat([d, d_mp]) + + # break trace labels into components and subcomponents + try: + d["Subcomponent"] = d["Component"].str.split(".", n=1).str[1] + d["Component"] = d["Component"].str.split(".", n=1).str[0] + except TypeError: + # if the component is not a string, we cannot split it + d["Subcomponent"] = "" + d["Component"] = d["Component"].astype(str) + self.data = d[ + ["Time (µsec)", "Proc", "Component", "Subcomponent", "Expression"] + ] + self.data = self.data.sort_values(by=["Time (µsec)"], ascending=[False]) + + def subcomponent_report( + self, + filename: str | Path = "expression-timing-subcomponents.html", + cutoff_secs: float | None = None, + style: Literal["grid", "simple"] = "grid", + ) -> None: + """Write the data to an HTML file. + + Parameters + ---------- + filename : str | Path + The name of the file to write the HTML to. If a relative path is given, + it will be written in the log directory. + cutoff_secs : float, optional + The cutoff time in seconds. Only expressions with a runtime greater than + this will be included in the HTML file. This is used to avoid writing a + huge report full of expressions that run plenty fast. If not provided, + the default cutoff time from the settings is used. + style : "simple" | "grid", default "simple" + The style of the report. Either "simple" or "grid". "simple" is a + simple HTML table, "grid" is a JavaScript data grid. + """ + if cutoff_secs is None: + cutoff_secs = self.default_cutoff + + # include only expressions that took longer than cutoff_secs + df = self.data[self.data["Time (µsec)"] >= cutoff_secs * 1e6].copy() + + # convert the time to seconds + df["Time (µsec)"] /= 1e6 + df = df.rename(columns={"Time (µsec)": "Time (sec)"}) + + if style == "simple": + # format and write the report to HTML + df = ( + df.style.format( + { + "Time (sec)": lambda x: f"{x:.3f}", + } + ) + .background_gradient( + axis=0, gmap=df["Time (sec)"], cmap="YlOrRd", subset=["Time (sec)"] + ) + .hide(axis="index") + .set_table_styles( + [{"selector": "th", "props": [("text-align", "left")]}] + ) + .set_properties(**{"padding": "0 5px"}, subset=["Time (sec)"]) + ) + dat = df.to_html(index=False) + dat = dat.replace(" + + + + + Expression Timing Report + + + + {dat} + + """ + self.log_dir.joinpath(filename).parent.mkdir(parents=True, exist_ok=True) + with open(self.log_dir.joinpath(filename), "w") as f: + f.write(template) + elif style == "grid": + template = """ + + + + + + +
+ + + + """ + self.log_dir.joinpath(filename).parent.mkdir(parents=True, exist_ok=True) + with open(self.log_dir.joinpath(filename), "w") as f: + f.write(template.replace("<>", df.to_json(orient="records"))) + + def component_report_data(self, cutoff_secs: float | None = None): + """ + Return the data for the component report. + + Parameters + ---------- + cutoff_secs : float, optional + The cutoff time in seconds. Only expressions with a runtime greater than + this will be included in the report. This is used to avoid writing a + huge report full of expressions that run plenty fast. If not provided, + the default cutoff time from the settings is used. + """ + if cutoff_secs is None: + cutoff_secs = self.default_cutoff + + df = ( + self.data.groupby(["Component", "Expression"]) + .agg({"Time (µsec)": "sum"}) + .reset_index()[["Time (µsec)", "Component", "Expression"]] + .sort_values(by=["Time (µsec)"], ascending=[False]) + ) + + # include only expressions that took longer than cutoff_secs + df = df[df["Time (µsec)"] >= cutoff_secs * 1e6] + + # convert the time to seconds + df["Time (µsec)"] /= 1e6 + df.rename(columns={"Time (µsec)": "Time (sec)"}, inplace=True) + return df + + def component_report( + self, + filename: str | Path = "expression-timing-components.html", + cutoff_secs: float | None = None, + style: Literal["grid", "simple"] = "grid", + ) -> None: + """Write component-level aggregations to an HTML file. + + This will aggregate the expression timings by component, which may better + reveal expressions that are more problematic because they are evaluated + multiple times. + + Parameters + ---------- + filename : str | Path + The name of the file to write the HTML to. If a relative path is given, + it will be written in the log directory. + cutoff_secs : float + The cutoff time in seconds. Only expressions with a runtime greater than + this will be included in the HTML file. This is used to avoid writing a + huge report full of expressions that run plenty fast. + style : "simple" | "grid", default "simple" + The style of the report. Either "simple" or "grid". "simple" is a + simple HTML table, "grid" is a JavaScript data grid. + """ + + df = self.component_report_data(cutoff_secs=cutoff_secs) + + if style == "simple": + # format and write the report to HTML in a simple table + df = ( + df.style.format( + { + "Time (sec)": lambda x: f"{x:.3f}", + } + ) + .background_gradient( + axis=0, gmap=df["Time (sec)"], cmap="YlOrRd", subset=["Time (sec)"] + ) + .hide(axis="index") + .set_table_styles( + [{"selector": "th", "props": [("text-align", "left")]}] + ) + .set_properties(**{"padding": "0 5px"}, subset=["Time (sec)"]) + ) + dat = df.to_html(index=False) + dat = dat.replace("
+ + + + + Expression Timing Report + + + + {dat} + + """ + self.log_dir.joinpath(filename).parent.mkdir(parents=True, exist_ok=True) + with open(self.log_dir.joinpath(filename), "w") as f: + f.write(template) + elif style == "grid": + template = """ + + + + + + +
+ + + + """ + self.log_dir.joinpath(filename).parent.mkdir(parents=True, exist_ok=True) + with open(self.log_dir.joinpath(filename), "w") as f: + f.write(template.replace("<>", df.to_json(orient="records"))) + else: + raise ValueError(f"Unknown style {style}. Must be 'simple' or 'grid'.") + + +# Code below is from https://github.com/HubSpot/sortable +# Copyright (C) 2013 Adam Schwartz, http://adamschwartz.co +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + + +SORTABLE_JS = """ +(function() { + var SELECTOR, addEventListener, clickEvents, numberRegExp, sortable, touchDevice, trimRegExp; + + SELECTOR = 'table[data-sortable]'; + + numberRegExp = /^-?[£$¤]?[\d,.]+%?$/; + + trimRegExp = /^\s+|\s+$/g; + + clickEvents = ['click']; + + touchDevice = 'ontouchstart' in document.documentElement; + + if (touchDevice) { + clickEvents.push('touchstart'); + } + + addEventListener = function(el, event, handler) { + if (el.addEventListener != null) { + return el.addEventListener(event, handler, false); + } else { + return el.attachEvent("on" + event, handler); + } + }; + + sortable = { + init: function(options) { + var table, tables, _i, _len, _results; + if (options == null) { + options = {}; + } + if (options.selector == null) { + options.selector = SELECTOR; + } + tables = document.querySelectorAll(options.selector); + _results = []; + for (_i = 0, _len = tables.length; _i < _len; _i++) { + table = tables[_i]; + _results.push(sortable.initTable(table)); + } + return _results; + }, + initTable: function(table) { + var i, th, ths, _i, _len, _ref; + if (((_ref = table.tHead) != null ? _ref.rows.length : void 0) !== 1) { + return; + } + if (table.getAttribute('data-sortable-initialized') === 'true') { + return; + } + table.setAttribute('data-sortable-initialized', 'true'); + ths = table.querySelectorAll('th'); + for (i = _i = 0, _len = ths.length; _i < _len; i = ++_i) { + th = ths[i]; + if (th.getAttribute('data-sortable') !== 'false') { + sortable.setupClickableTH(table, th, i); + } + } + return table; + }, + setupClickableTH: function(table, th, i) { + var eventName, onClick, type, _i, _len, _results; + type = sortable.getColumnType(table, i); + onClick = function(e) { + var compare, item, newSortedDirection, position, row, rowArray, sorted, sortedDirection, tBody, ths, value, _compare, _i, _j, _k, _l, _len, _len1, _len2, _len3, _len4, _m, _ref, _ref1; + if (e.handled !== true) { + e.handled = true; + } else { + return false; + } + sorted = this.getAttribute('data-sorted') === 'true'; + sortedDirection = this.getAttribute('data-sorted-direction'); + if (sorted) { + newSortedDirection = sortedDirection === 'ascending' ? 'descending' : 'ascending'; + } else { + newSortedDirection = type.defaultSortDirection; + } + ths = this.parentNode.querySelectorAll('th'); + for (_i = 0, _len = ths.length; _i < _len; _i++) { + th = ths[_i]; + th.setAttribute('data-sorted', 'false'); + th.removeAttribute('data-sorted-direction'); + } + this.setAttribute('data-sorted', 'true'); + this.setAttribute('data-sorted-direction', newSortedDirection); + tBody = table.tBodies[0]; + rowArray = []; + if (!sorted) { + if (type.compare != null) { + _compare = type.compare; + } else { + _compare = function(a, b) { + return b - a; + }; + } + compare = function(a, b) { + if (a[0] === b[0]) { + return a[2] - b[2]; + } + if (type.reverse) { + return _compare(b[0], a[0]); + } else { + return _compare(a[0], b[0]); + } + }; + _ref = tBody.rows; + for (position = _j = 0, _len1 = _ref.length; _j < _len1; position = ++_j) { + row = _ref[position]; + value = sortable.getNodeValue(row.cells[i]); + if (type.comparator != null) { + value = type.comparator(value); + } + rowArray.push([value, row, position]); + } + rowArray.sort(compare); + for (_k = 0, _len2 = rowArray.length; _k < _len2; _k++) { + row = rowArray[_k]; + tBody.appendChild(row[1]); + } + } else { + _ref1 = tBody.rows; + for (_l = 0, _len3 = _ref1.length; _l < _len3; _l++) { + item = _ref1[_l]; + rowArray.push(item); + } + rowArray.reverse(); + for (_m = 0, _len4 = rowArray.length; _m < _len4; _m++) { + row = rowArray[_m]; + tBody.appendChild(row); + } + } + if (typeof window['CustomEvent'] === 'function') { + return typeof table.dispatchEvent === "function" ? table.dispatchEvent(new CustomEvent('Sortable.sorted', { + bubbles: true + })) : void 0; + } + }; + _results = []; + for (_i = 0, _len = clickEvents.length; _i < _len; _i++) { + eventName = clickEvents[_i]; + _results.push(addEventListener(th, eventName, onClick)); + } + return _results; + }, + getColumnType: function(table, i) { + var row, specified, text, type, _i, _j, _len, _len1, _ref, _ref1, _ref2; + specified = (_ref = table.querySelectorAll('th')[i]) != null ? _ref.getAttribute('data-sortable-type') : void 0; + if (specified != null) { + return sortable.typesObject[specified]; + } + _ref1 = table.tBodies[0].rows; + for (_i = 0, _len = _ref1.length; _i < _len; _i++) { + row = _ref1[_i]; + text = sortable.getNodeValue(row.cells[i]); + _ref2 = sortable.types; + for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) { + type = _ref2[_j]; + if (type.match(text)) { + return type; + } + } + } + return sortable.typesObject.alpha; + }, + getNodeValue: function(node) { + var dataValue; + if (!node) { + return ''; + } + dataValue = node.getAttribute('data-value'); + if (dataValue !== null) { + return dataValue; + } + if (typeof node.innerText !== 'undefined') { + return node.innerText.replace(trimRegExp, ''); + } + return node.textContent.replace(trimRegExp, ''); + }, + setupTypes: function(types) { + var type, _i, _len, _results; + sortable.types = types; + sortable.typesObject = {}; + _results = []; + for (_i = 0, _len = types.length; _i < _len; _i++) { + type = types[_i]; + _results.push(sortable.typesObject[type.name] = type); + } + return _results; + } + }; + + sortable.setupTypes([ + { + name: 'numeric', + defaultSortDirection: 'descending', + match: function(a) { + return a.match(numberRegExp); + }, + comparator: function(a) { + return parseFloat(a.replace(/[^0-9.-]/g, ''), 10) || 0; + } + }, { + name: 'date', + defaultSortDirection: 'ascending', + reverse: true, + match: function(a) { + return !isNaN(Date.parse(a)); + }, + comparator: function(a) { + return Date.parse(a) || 0; + } + }, { + name: 'alpha', + defaultSortDirection: 'ascending', + match: function() { + return true; + }, + compare: function(a, b) { + return a.localeCompare(b); + } + } + ]); + + setTimeout(sortable.init, 0); + + if (typeof define === 'function' && define.amd) { + define(function() { + return sortable; + }); + } else if (typeof exports !== 'undefined') { + module.exports = sortable; + } else { + window.Sortable = sortable; + } + +}).call(this); +""" + +SORTABLE_CSS = """ +/* line 2, ../sass/_sortable.sass */ +table[data-sortable] { + border-collapse: collapse; + border-spacing: 0; +} +/* line 6, ../sass/_sortable.sass */ +table[data-sortable] th { + vertical-align: bottom; + font-weight: bold; +} +/* line 10, ../sass/_sortable.sass */ +table[data-sortable] th, table[data-sortable] td { + text-align: left; + padding: 10px; +} +/* line 14, ../sass/_sortable.sass */ +table[data-sortable] th:not([data-sortable="false"]) { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + -o-user-select: none; + user-select: none; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + -webkit-touch-callout: none; + cursor: pointer; +} +/* line 26, ../sass/_sortable.sass */ +table[data-sortable] th:after { + content: ""; + visibility: hidden; + display: inline-block; + vertical-align: inherit; + height: 0; + width: 0; + border-width: 5px; + border-style: solid; + border-color: transparent; + margin-right: 1px; + margin-left: 10px; + float: right; +} +/* line 40, ../sass/_sortable.sass */ +table[data-sortable] th[data-sorted="true"]:after { + visibility: visible; +} +/* line 43, ../sass/_sortable.sass */ +table[data-sortable] th[data-sorted-direction="descending"]:after { + border-top-color: inherit; + margin-top: 8px; +} +/* line 47, ../sass/_sortable.sass */ +table[data-sortable] th[data-sorted-direction="ascending"]:after { + border-bottom-color: inherit; + margin-top: 3px; +}""" diff --git a/activitysim/core/workflow/state.py b/activitysim/core/workflow/state.py index 50ba0342a..6178f2488 100644 --- a/activitysim/core/workflow/state.py +++ b/activitysim/core/workflow/state.py @@ -8,6 +8,7 @@ import textwrap import warnings from collections.abc import Iterable +from datetime import datetime from pathlib import Path from typing import Any, Optional @@ -1171,6 +1172,49 @@ def get_log_file_path(self, file_name: str, prefix: bool = True) -> Path: file_name = f"{prefix}-{file_name}" return self.filesystem.get_log_file_path(file_name) + def get_expr_performance_log_file_path( + self, file_name: str, prefix: bool = True + ) -> Path: + """ + Get the log file path for this process. + + This method is not purely a pass-through to this state's `filesystem`, + as it also potentially adds a prefix to the filename based on the state. + + Parameters + ---------- + file_name : str + The name of the desired log file. + prefix : bool, default True + Whether to add a prefix to the desired log file name. This is + simply a boolean flag for whether to add the prefix, the actual + value of the prefix id drawn from the "log_file_prefix" key within + this state. If that key is not set, no prefix is added regardless + of the value of this argument. + timestamped : bool, default False + Whether to add a timestamp to the log file name. If True, a + timestamp is added as a directory prefix to the log file name, + and the directory is created if it does not already exist. + + Returns + ------- + Path + """ + prefix = prefix and self.get_injectable("log_file_prefix", None) + if prefix: + file_name = f"{prefix}-{file_name}" + + timestamp = self.get("run_timestamp", None) + if timestamp is None: + # if no run timestamp, use current time, and store it so + # it can be used later in the same run + timestamp = datetime.now().strftime("%Y%m%d-%H%M%S") + self.set("run_timestamp", timestamp) + perf_dir = os.path.join("expr-performance", timestamp, file_name) + result = self.filesystem.get_log_file_path(perf_dir) + result.parent.mkdir(parents=True, exist_ok=True) + return result + def set_step_args(self, args=None): assert isinstance(args, dict) or args is None self.add_injectable("step_args", args) diff --git a/activitysim/examples/example_manifest.yaml b/activitysim/examples/example_manifest.yaml index 769dad925..f5d393217 100644 --- a/activitysim/examples/example_manifest.yaml +++ b/activitysim/examples/example_manifest.yaml @@ -508,6 +508,7 @@ include: - production_semcog/extensions - production_semcog/data + - production_semcog/data_model - production_semcog/configs - production_semcog/configs_mp - production_semcog/output diff --git a/docs/users-guide/performance/expr-profiling.md b/docs/users-guide/performance/expr-profiling.md new file mode 100644 index 000000000..f510be64d --- /dev/null +++ b/docs/users-guide/performance/expr-profiling.md @@ -0,0 +1,107 @@ +# Expression Profiling + +Part of the appeal of ActivitySim is in its flexibility: it is possible to craft +a massive variety of mathematical forms and relationships through creative use +of the expressions found in most component spec files. But as we have all learned +from Spider-Man, with great power comes great responsibility. Users can write +arbitrary code in spec files, and the runtime performance of ActivitySim will +depend on the parsimony and efficiency of that code. + +Sometimes these spec files can be large, and it may be difficult to determine +simply by inspection which expressions in a given spec file are faster or slower. +ActivitySim now offers an expression-level profiling tool to assist in diagnosing +performance problems that arise from inefficient spec files. + +```{important} +At this time, +expression profiling only works for the evaluation of expressions in "legacy" mode. +It does not work in "sharrow" mode, as the compiled expressions run with sharrow +are not run in a serial fashion and are not able to be profiled in the same way. +``` + +## Profiling an Entire Model Run + +The simplest way to use the expression profiler is to set the +[`expression_profile`](activitysim.core.configuration.Settings.expression_profile) +configuration setting in the top level model settings (typically `settings.yaml`): + +```yaml +expression_profile: true +``` + +This will cause the profiler to be activated for all expressions in the model, +across all components. This includes expressions in the spec files, as well as +expressions in all preprocessors and annotators. Each time the expressions in +any spec file are evaluated, the profiler will record the time taken to evaluate +each expression. An "expr-performance" subdirectory will be created in the model's +logging directory, and a new log file will be created each time the expressions in +any spec file are evaluated. The file is named according to the `trace_label` found +where the expressions are being evaluated. It will include a list of all the evaluated +expressions from the spec file, along with the time taken to evaluate each expression. +For multi-processed models, each subprocess will create its own log file directory, +similar to the logging directory structure for the other model components. + +## Summary Outputs + +At the end of a model run where the `expression_profile` setting is active, +ActivitySim will also create a pair of summary files in the "expr-performance" +subdirectory. The first is named "expression-timing-subcomponents.html", +and contains a simple concatenation of the runtimes of +expressions in the various subcomponents stored in the log files, +filtered to only include expressions that tool a notable amount of time. +By default, this is set to 0.1 seconds, but can be changed by setting the +[`expression_profile_cutoff`](activitysim.core.configuration.Settings.expression_profile_cutoff) +configuration setting in the model settings. + +The second file, "expression-timing-components.html", shows an aggregate +summary of the runtimes for each expression, +aggregated across all the log files. The aggregation is by model component and +expression, so that this summary includes the total time taken to evaluate each +expression within each model component, recognizing that identical expressions +may be evaluated multiple times in different model subcomponents (e.g. across +different purposes, or tour numbers, etc.). This more aggregated summary is +typically the one that will be most useful for identifying expressions that +provide the most overall potential for performance improvement via streamlining. + +Users should note that the expression profiler is not a substitute for good coding +practices. It will not necessarily identify all performance problems, and it is not +able to suggest improvements to the expressions. It is simply a tool to help users +identify which expressions are taking the most time to evaluate, and therefore +which expressions are the best candidates for improvement. + +Also, users should understand that the expression profiler is not directly measuring the +computational complexity of the expressions, but rather the time taken to evaluate +the expressions. This time can be affected by a number of factors, including the +complexity of the expression, the size of the data being processed, and whether +there are other processes running on the machine at the same time competing for +resources. For multiprocessing model runs, those other processes may include +other the subprocesses of ActivitySim, which may lead to surprising results. + +There is also no adjustment made for parallelization of the expression evaluations. +For example, if the same expression is evaluated in parallel across 8 processes on +a machine with 8 cores, and each process takes 0.1 seconds to evaluate the expression, +the profiler will still show that the expression took 0.8 seconds to evaluate, even +though the total wall clock time taken to evaluate the expression across all processes +was only 0.1 seconds. + +Profiling expressions also adds some overhead to the model run, increasing the +total runtime of the model by a modest but noticeable amount. In consortium +[experiments](https://github.com/ActivitySim/activitysim/pull/936#issuecomment-3165410169) +with this tool, runtime for the full-scale SANDAG model was found to +increase by approximately 12.5% when the profiler was enabled, adding more than +13 minutes to a model run that already took 105 minutes. Users should thus +be careful about using the profiler in production runs. It is recommended turn off +the profiler in production runs, and only use it for debugging and development. + +## Profiling Individual Components + +The expression profiler can also be used to profile individual components, rather +than the entire model. This is done by setting the `compute_settings.performance_log` +attribute for the component in the model settings. This attribute can be set to the +filename where the profiler log file should be written, which will override +the default behavior of writing the log file to the "expr-performance" subdirectory. +This feature only works for components that are run in a single process, and which +have a `compute_settings` attribute. It is generally not recommended to use this +feature unless a specific component is suspected of having atypical performance +problems, as it will not provide the same summary reporting as profiling the entire +model. diff --git a/docs/users-guide/performance/index.md b/docs/users-guide/performance/index.md index 2f722f621..ab807125e 100644 --- a/docs/users-guide/performance/index.md +++ b/docs/users-guide/performance/index.md @@ -23,6 +23,7 @@ These techniques are the focus of this section. Chunking to Reduce Peak Memory Usage Compiling with Sharrow Skim Data Format + Expression Profiling ``` ## Checklist for Performance Tuning diff --git a/test/test_expression_profiling.py b/test/test_expression_profiling.py new file mode 100644 index 000000000..f3b61a6fb --- /dev/null +++ b/test/test_expression_profiling.py @@ -0,0 +1,135 @@ +from __future__ import annotations + +import argparse +import os +from contextlib import contextmanager + +from activitysim.cli.run import add_run_args, run +from activitysim.core import timing, workflow + + +@contextmanager +def change_directory(path): + """ + Context manager to temporarily change the current working directory. + """ + old_cwd = os.getcwd() # Save the current working directory + try: + os.chdir(path) # Change to the new directory + yield # Execute the code within the 'with' block + finally: + os.chdir(old_cwd) # Revert to the original directory + + +def test_expression_profiling_mtc(): + state = workflow.create_example("prototype_mtc", temp=True) + + state.settings.expression_profile = True + state.run.all() + + # generate a summary of slower expression evaluation times + # across all models and write to a file + analyze = timing.AnalyzeEvalTiming(state) + analyze.component_report(style=state.settings.expression_profile_style) + analyze.subcomponent_report(style=state.settings.expression_profile_style) + + workdir = state.filesystem.working_dir + outdir = workdir.joinpath(state.filesystem.output_dir) + timestamp = state.get("run_timestamp", "unknown") + assert timestamp != "unknown", "Run timestamp should not be 'unknown'" + assert outdir.joinpath( + f"log/expr-performance/{timestamp}/expression-timing-subcomponents.html" + ).exists() + assert outdir.joinpath( + f"log/expr-performance/{timestamp}/expression-timing-components.html" + ).exists() + assert outdir.joinpath( + f"log/expr-performance/{timestamp}/tour_mode_choice.work.simple_simulate.eval_nl.eval_utils.log" + ).exists() + + +def test_expression_profiling_semcog(): + # testing a two zone system model + state = workflow.create_example("production_semcog", temp=True) + + state.settings.expression_profile = True + + print("state.filesystem.working_dir=", state.filesystem.working_dir) + # import the extensions module, which is located in the working directory + with change_directory(state.filesystem.working_dir): + import sys + + sys.path.insert(0, ".") + import extensions # noqa: F401 + + sys.path.pop(0) + + state.run.all() + + # generate a summary of slower expression evaluation times + # across all models and write to a file + analyze = timing.AnalyzeEvalTiming(state) + analyze.component_report(style=state.settings.expression_profile_style) + analyze.subcomponent_report(style=state.settings.expression_profile_style) + + workdir = state.filesystem.working_dir + outdir = workdir.joinpath(state.filesystem.output_dir) + + timestamp = state.get("run_timestamp", "unknown") + assert timestamp != "unknown", "Run timestamp should not be 'unknown'" + + assert outdir.joinpath( + f"expr-performance/{timestamp}/expression-timing-subcomponents.html" + ).exists() + assert outdir.joinpath( + f"expr-performance/{timestamp}/expression-timing-components.html" + ).exists() + assert outdir.joinpath( + f"expr-performance/{timestamp}/trip_destination.trip_num_1.atwork.compute_logsums.dp.preprocessor.trip_mode_choice_annotate_trips_preprocessor.log" + ).exists() + + +def test_expression_profiling_mtc_mp(): + state = workflow.create_example("prototype_mtc", temp=True) + # state = workflow.create_example("prototype_mtc", "/tmp/exprprof5") + with state.filesystem.working_dir.joinpath("configs_mp", "settings.yaml").open( + mode="a" + ) as f: + f.write("\n\nexpression_profile: true\n") + + args = [ + # "-c", + # str(state.filesystem.working_dir.joinpath("configs-override")), + "-c", + str(state.filesystem.working_dir.joinpath("configs_mp")), + "-c", + str(state.filesystem.working_dir.joinpath("configs")), + "-d", + str(state.filesystem.working_dir.joinpath("data")), + "-o", + str(state.filesystem.working_dir.joinpath("output")), + ] + + parser = argparse.ArgumentParser() + add_run_args(parser) + args = parser.parse_args(args) + run(args) + + ep_dir = state.filesystem.working_dir.joinpath("output", "log", "expr-performance") + + # list all the subdirectories in the output directory + subdirectories = [item for item in ep_dir.iterdir() if item.is_dir()] + + # should only be one subdirectory with a timestamp + assert ( + len(subdirectories) == 1 + ), "There should be exactly one subdirectory with a timestamp" + + timestamp = subdirectories[0].name + base_dir = ep_dir.joinpath(timestamp) + + assert base_dir.joinpath("expression-timing-subcomponents.html").exists() + assert base_dir.joinpath("expression-timing-components.html").exists() + assert base_dir.joinpath( + "mp_households_0-trip_destination.trip_num_1.atwork.compute_logsums.dp.preprocessor.trip_mode_choice_annotate_trips_preprocessor.log" + ).exists() From ebcaadd48b83949555d9ef9a45e53c0af3104754 Mon Sep 17 00:00:00 2001 From: Jeffrey Newman Date: Thu, 11 Sep 2025 12:38:24 -0500 Subject: [PATCH 11/34] GitHub Action to manually rebuild and publish documentation (#977) * Expression profiling (legacy mode) (#936) * expression profiling * two reports * make simple report sortable * change default to grid * configurable expression_profile_cutoff * works with MP * documentation * expression_profile_style * performance_log can be bool * fix for pandas 2 * test expr profiling * test expression profiling on mtc and semcog examples * set encoding to utf8 because windows * add missing import * add warning about path length in error message * oops, .log not .csv * add timestamping to expression profile logs * fix file naming, update tests * all subprocesses to same timestamp * add note in docs about runtime cost * manual rebuild of docs * add permissions --- .github/workflows/rebuild-docs.yml | 51 ++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 .github/workflows/rebuild-docs.yml diff --git a/.github/workflows/rebuild-docs.yml b/.github/workflows/rebuild-docs.yml new file mode 100644 index 000000000..0a0b6a78a --- /dev/null +++ b/.github/workflows/rebuild-docs.yml @@ -0,0 +1,51 @@ +name: Rebuild Docs +on: + workflow_dispatch: + inputs: + commit: + description: 'Commit SHA or branch/tag to build docs from' + required: true + type: string + version: + description: 'Version number to publish docs as' + required: true + type: string + +jobs: + docbuild: + name: ubuntu-latest py3.9 + runs-on: ubuntu-latest + permissions: + contents: write + defaults: + run: + shell: bash -l {0} + steps: + - uses: actions/checkout@v4 + with: + ref: ${{ github.event.inputs.commit }} + - name: Install uv + uses: astral-sh/setup-uv@v5 + with: + version: "0.7.12" + enable-cache: true + cache-dependency-glob: "uv.lock" + - name: "Set up Python" + uses: actions/setup-python@v5 + with: + python-version-file: ".python-version" + - name: Install activitysim + run: | + uv sync --locked --dev + - name: Build the docs + run: | + cd docs + make clean + make html + - name: Push to GitHub Pages + uses: peaceiris/actions-gh-pages@v3.8.0 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + # Token is created automatically by Github Actions, no other config needed + publish_dir: ./docs/_build/html + destination_dir: ${{ github.event.inputs.version }} From 51fd5e8612f7969dd56c5cb1a39e7bf860d9d35c Mon Sep 17 00:00:00 2001 From: Sijia Wang Date: Thu, 11 Sep 2025 13:48:18 -0400 Subject: [PATCH 12/34] Add telecommute status model (#935) * add explicit telecommute model * Update explicit_telecommute.py * Revert "Update explicit_telecommute.py" This reverts commit 54bc4ccac1d722ab2ac84ffd91b5dc9d3375e5fb. * get work and home zone variable from workplace location model * run explicit telecommute before cdap * set workplace zone to -1 for person who is telecommuting * keep workplace location unchanged * format code with Black * documentation * change the model name to telecommute status * update doc * update doc * Update docs/dev-guide/components/telecommute_status.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update docs/dev-guide/components/telecommute_status.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * alphabetical order * address review comments --------- Co-authored-by: Yue Shuai <48269801+yueshuaing@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- activitysim/abm/models/__init__.py | 1 + activitysim/abm/models/telecommute_status.py | 125 ++++++++++++++++++ .../estimation/larch/simple_simulate.py | 16 +++ .../components/telecommute_status.md | 66 +++++++++ 4 files changed, 208 insertions(+) create mode 100644 activitysim/abm/models/telecommute_status.py create mode 100644 docs/dev-guide/components/telecommute_status.md diff --git a/activitysim/abm/models/__init__.py b/activitysim/abm/models/__init__.py index 138366843..44534fa53 100644 --- a/activitysim/abm/models/__init__.py +++ b/activitysim/abm/models/__init__.py @@ -33,6 +33,7 @@ stop_frequency, summarize, telecommute_frequency, + telecommute_status, tour_mode_choice, tour_od_choice, tour_scheduling_probabilistic, diff --git a/activitysim/abm/models/telecommute_status.py b/activitysim/abm/models/telecommute_status.py new file mode 100644 index 000000000..795405259 --- /dev/null +++ b/activitysim/abm/models/telecommute_status.py @@ -0,0 +1,125 @@ +# ActivitySim +# See full license in LICENSE.txt. +from __future__ import annotations + +import logging + +import numpy as np +import pandas as pd + +from activitysim.core import ( + config, + estimation, + expressions, + simulate, + tracing, + workflow, +) +from activitysim.core.configuration.base import PreprocessorSettings, PydanticReadable +from activitysim.core.configuration.logit import LogitComponentSettings + +logger = logging.getLogger("activitysim") + + +class TelecommuteStatusSettings(LogitComponentSettings, extra="forbid"): + """ + Settings for the `telecommute_status` component. + """ + + TELECOMMUTE_ALT: int + """Value that specifies if the worker is telecommuting on the simulation day.""" + + CHOOSER_FILTER_COLUMN_NAME: str = "is_worker" + """Column name in the dataframe to represent worker.""" + + +@workflow.step +def telecommute_status( + state: workflow.State, + persons_merged: pd.DataFrame, + persons: pd.DataFrame, + model_settings: TelecommuteStatusSettings | None = None, + model_settings_file_name: str = "telecommute_status.yaml", + trace_label: str = "telecommute_status", +) -> None: + """ + This model predicts whether a person (worker) telecommutes on the simulation day. + The output from this model is TRUE (if telecommutes) or FALSE (if does not telecommute). + """ + if model_settings is None: + model_settings = TelecommuteStatusSettings.read_settings_file( + state.filesystem, + model_settings_file_name, + ) + + choosers = persons_merged + chooser_filter_column_name = model_settings.CHOOSER_FILTER_COLUMN_NAME + choosers = choosers[(choosers[chooser_filter_column_name])] + logger.info("Running %s with %d persons", trace_label, len(choosers)) + + estimator = estimation.manager.begin_estimation(state, "telecommute_status") + + constants = config.get_model_constants(model_settings) + + # - preprocessor + expressions.annotate_preprocessors( + state, + df=choosers, + locals_dict=constants, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) + + model_spec = state.filesystem.read_model_spec(file_name=model_settings.SPEC) + coefficients_df = state.filesystem.read_model_coefficients(model_settings) + model_spec = simulate.eval_coefficients( + state, model_spec, coefficients_df, estimator + ) + nest_spec = config.get_logit_model_settings(model_settings) + + if estimator: + estimator.write_model_settings(model_settings, model_settings_file_name) + estimator.write_spec(model_settings) + estimator.write_coefficients(coefficients_df, model_settings) + estimator.write_choosers(choosers) + + choices = simulate.simple_simulate( + state, + choosers=choosers, + spec=model_spec, + nest_spec=nest_spec, + locals_d=constants, + trace_label=trace_label, + trace_choice_name="is_telecommuting", + estimator=estimator, + compute_settings=model_settings.compute_settings, + ) + + telecommute_alt = model_settings.TELECOMMUTE_ALT + choices = choices == telecommute_alt + + if estimator: + estimator.write_choices(choices) + choices = estimator.get_survey_values(choices, "persons", "is_telecommuting") + estimator.write_override_choices(choices) + estimator.end_estimation() + + persons["is_telecommuting"] = choices.reindex(persons.index).fillna(0).astype(bool) + + state.add_table("persons", persons) + + tracing.print_summary( + "telecommute_status", persons.is_telecommuting, value_counts=True + ) + + if state.settings.trace_hh_id: + state.tracing.trace_df(persons, label=trace_label, warn_if_empty=True) + + expressions.annotate_tables( + state, + locals_dict=constants, + skims=None, + model_settings=model_settings, + trace_label=trace_label, + ) diff --git a/activitysim/estimation/larch/simple_simulate.py b/activitysim/estimation/larch/simple_simulate.py index e608a5008..59c83d345 100644 --- a/activitysim/estimation/larch/simple_simulate.py +++ b/activitysim/estimation/larch/simple_simulate.py @@ -257,6 +257,22 @@ def work_from_home_model( ) +def telecommute_status_model( + name="telecommute_status", + edb_directory="output/estimation_data_bundle/{name}/", + return_data=False, +): + return simple_simulate_model( + name=name, + edb_directory=edb_directory, + return_data=return_data, + choices={ + True: 1, + False: 2, + }, # True is telecommute, false is does not telecommute, names match spec positions + ) + + def mandatory_tour_frequency_model( name="mandatory_tour_frequency", edb_directory="output/estimation_data_bundle/{name}/", diff --git a/docs/dev-guide/components/telecommute_status.md b/docs/dev-guide/components/telecommute_status.md new file mode 100644 index 000000000..c889f7e32 --- /dev/null +++ b/docs/dev-guide/components/telecommute_status.md @@ -0,0 +1,66 @@ +(component-telecommute_status)= +# Telecommute Status + +```{eval-rst} +.. currentmodule:: activitysim.abm.models.telecommute_status +``` + +ActivitySim telecommute representation consists of two long term submodels - +a person [work_from_home](work_from_home) model and +a person [telecommute_frequency](telecommute_frequency) model. +The work from home model predicts if a worker works exclusively from home, +whereas the telecommute frequency model predicts number of days in a week a worker telecommutes, +if they do not exclusively work from home. +However, neither of them predicts whether a worker telecommutes or not on the simulation day. +This telecommute status model extends the previous two models to predict for all workers whether +they telecommute on the simulation day. + +A simple implementation of the telecommute status model can be based on the worker's telecommute frequency. +For example, if a worker telecommutes 4 days a week, then there is a 80% probability for them +to telecommute on the simulation day. +The telecommute status model software can accommodate more complex model forms if needed. + +There have been discussions about where to place the telecommute status model within the model sequence, +particularly regarding its interation with the Coordinated Daily Activity Pattern (CDAP) model. +Some have proposed expanding the CDAP definition of the "Mandatory" day pattern to include commuting, telecommuting and working from home, +and then applying the telecommute status model to workers with a "Mandatory" day pattern. +While this idea had merit, it would require re-defining and re-estimating CDAP for many regions, which presents practical challenges. + +During Phase 9B development, the Consortium collaboratively reached a consensus on a preferred design for explicitly modeling telecommuting. +It was decided that the existing CDAP definitions would remain unchanged. The new design introduces the ability +to model hybrid workers—those who work both in-home and out-of-home on the simulation day. To support this, +the Consortium recommended adding two new models: a Telecommute Arrangement model and an In-Home Work Activity Duration model. + +As of August 2025, these two models remain at the design stage and have not yet been implemented. Once deployed, +they will supersede the current telecommute status model, which will no longer be needed. In the interim, +the telecommute status model can be used to flag telecommuters in the simulation. + +The main interface to the telecommute status model is the +[telecommute_status](activitysim.abm.models.telecommute_status) function. This +function is registered as an Inject step in the example Pipeline. + +## Structure + +- *Configuration File*: `telecommute_status.yaml` +- *Core Table*: `persons` +- *Result Table*: `is_telecommuting` + + +## Configuration + +```{eval-rst} +.. autopydantic_model:: TelecommuteStatusSettings + :inherited-members: BaseModel, PydanticReadable + :show-inheritance: +``` + +### Examples + +- [Example SANDAG ABM3](https://github.com/ActivitySim/sandag-abm3-example/tree/main/configs/resident/telecommute_status.yaml) + + +## Implementation + +```{eval-rst} +.. autofunction:: telecommute_status +``` From 8b45d5adeac5827044710278f5554855d9beea5e Mon Sep 17 00:00:00 2001 From: David Hensle <51132108+dhensle@users.noreply.github.com> Date: Thu, 11 Sep 2025 11:11:11 -0700 Subject: [PATCH 13/34] Alts Preprocessor Typo (#972) * initial batch of models with pre and post processing added * nonmand sched and transit pass models * first pass at preprocessing and annotate functionality in all models * fixing bugs in jtf and trip purpose * adding persons back in to locals_d in jtc * model name missing in tour scheduling * missing expressions import in tour sched prob * ci unit tests & fixing estimation test error * addressing review comments * fixing typo in location alts preprocessor names --------- Co-authored-by: Ali Etezady <58451076+aletzdy@users.noreply.github.com> --- activitysim/abm/models/location_choice.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/activitysim/abm/models/location_choice.py b/activitysim/abm/models/location_choice.py index 8efd0003c..e1b886cc9 100644 --- a/activitysim/abm/models/location_choice.py +++ b/activitysim/abm/models/location_choice.py @@ -703,7 +703,7 @@ def run_location_simulate( skims=None, model_settings=model_settings, trace_label=trace_label, - preprocessor_setting_name="alts_preprocessor_sample", + preprocessor_setting_name="alts_preprocessor_simulate", ) if estimator: From 758775da19c1fdee9abf84f5cacfea4c643dfe8e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 25 Sep 2025 14:09:25 -0500 Subject: [PATCH 14/34] Bump pypa/gh-action-pypi-publish in /.github/workflows (#974) Bumps [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) from 1.5.1 to 1.13.0. - [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases) - [Commits](https://github.com/pypa/gh-action-pypi-publish/compare/v1.5.1...v1.13.0) --- updated-dependencies: - dependency-name: pypa/gh-action-pypi-publish dependency-version: 1.13.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/deployment.yml | 4 ++-- .github/workflows/test-deploy.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/deployment.yml b/.github/workflows/deployment.yml index 879e6ff02..b3766f0a2 100644 --- a/.github/workflows/deployment.yml +++ b/.github/workflows/deployment.yml @@ -68,7 +68,7 @@ jobs: python -m activitysim --version - name: Publish package to TestPyPI if: github.event_name == 'push' - uses: pypa/gh-action-pypi-publish@v1.5.1 + uses: pypa/gh-action-pypi-publish@v1.13.0 with: user: __token__ password: ${{ secrets.TESTPYPI_TOKEN }} @@ -125,7 +125,7 @@ jobs: name: releases path: dist - name: Publish package to PyPI - uses: pypa/gh-action-pypi-publish@v1.5.1 + uses: pypa/gh-action-pypi-publish@v1.13.0 with: user: __token__ password: ${{ secrets.PYPI_TOKEN }} diff --git a/.github/workflows/test-deploy.yml b/.github/workflows/test-deploy.yml index bbcd938b3..bf626b3e7 100644 --- a/.github/workflows/test-deploy.yml +++ b/.github/workflows/test-deploy.yml @@ -72,7 +72,7 @@ jobs: python -m activitysim --version - name: Publish package to TestPyPI if: github.event_name == 'push' - uses: pypa/gh-action-pypi-publish@v1.5.1 + uses: pypa/gh-action-pypi-publish@v1.13.0 with: user: __token__ password: ${{ secrets.TESTPYPI_TOKEN }} From 10f8f4408c3555ac75e1993d69dc569a453eb73f Mon Sep 17 00:00:00 2001 From: Jeffrey Newman Date: Fri, 26 Sep 2025 00:05:10 -0500 Subject: [PATCH 15/34] fix branch on sandag external test (#978) * fix branch on sandag external test * locked * group not only-group * test in dir * rootdir for pytest * test pointer * move uv * one layer off --- .github/workflows/core_tests.yml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/core_tests.yml b/.github/workflows/core_tests.yml index 16f63a506..5bfada0a8 100644 --- a/.github/workflows/core_tests.yml +++ b/.github/workflows/core_tests.yml @@ -39,7 +39,7 @@ jobs: - name: Install activitysim run: | - uv sync --locked --only-group github-action + uv sync --locked --group github-action --no-dev - name: Lint with Black run: | @@ -105,7 +105,7 @@ jobs: - name: Install activitysim run: | - uv sync --locked --only-group github-action + uv sync --locked --group github-action --no-dev - name: Lint with Black run: | @@ -171,7 +171,7 @@ jobs: - name: Install activitysim run: | - uv sync --locked --only-group github-action + uv sync --locked --group github-action --no-dev # TODO: Cache sharrow compiled flows? The contents of __pycache__ appear to # be ignored, so this is not working as expected right now @@ -215,7 +215,7 @@ jobs: - region: Standard 2-Zone Example (SANDAG) region-org: ActivitySim region-repo: sandag-abm3-example - region-branch: pandas2 + region-branch: main fail-fast: false defaults: run: @@ -240,7 +240,7 @@ jobs: - name: Install activitysim run: | - uv sync --locked --only-group github-action + uv sync --locked --group github-action --no-dev - name: Checkout Example uses: actions/checkout@v4 @@ -251,8 +251,8 @@ jobs: - name: Test ${{ matrix.region }} run: | - cd ${{ matrix.region-repo }}/test - uv run pytest . + cd ${{ matrix.region-repo }} + uv run --project .. --locked --group github-action --no-dev pytest ./test random_seed_generation: needs: foundation @@ -282,7 +282,7 @@ jobs: - name: Install activitysim run: | - uv sync --locked --only-group github-action + uv sync --locked --group github-action --no-dev - name: Test Random Seed Generation run: | @@ -315,7 +315,7 @@ jobs: - name: Install activitysim run: | - uv sync --locked --only-group github-action + uv sync --locked --group github-action --no-dev - name: Test Estimation Mode run: | @@ -348,7 +348,7 @@ jobs: - name: Install activitysim run: | - uv sync --locked --only-group github-action + uv sync --locked --group github-action --no-dev - name: Test Expression Profiling run: | @@ -380,7 +380,7 @@ jobs: python-version-file: ".python-version" - name: Install activitysim run: | - uv sync --locked --only-group github-action + uv sync --locked --group github-action --no-dev - name: localize version switcher run: | python .github/workflows/localize-base-urls.py docs/_static/switcher.json From 1a94629e1bba5a128963ea757243a72891cd3447 Mon Sep 17 00:00:00 2001 From: David Hensle <51132108+dhensle@users.noreply.github.com> Date: Fri, 26 Sep 2025 05:21:04 -0700 Subject: [PATCH 16/34] Estimation Enhancements (#917) * multiprocess initial commit * blacken * parquet format for EDBs * adding pkl, fixing edb concat and write * fixing double naming of coefficient files * blacken * fixing missing cdap coefficients file, write pickle function * combact edb writing, index duplication, parquet datatypes * sorting dest choice bundles * adding coalesce edbs as its own step * CI testing initial commit * infer.py CI testing * estimation sampling for non-mandatory and joint tours * adding survey choice to choices_df in interaction_sample * adding option to delete the mp edb subdirs * changes supporting sandag abm3 estimation mode * running test sandag example through trip dest sample * Estimation Pydantic (#2) * pydantic for estimation settings * allow df as type in config * fix table_info * repair for Pydantic * df is attribute * Estimation settings pydantic update * new compact formatting * handling multiple columns for parquet write * dropping duplicate columns * actually removing duplicate columns * dfs with correct indexes and correct mp sorting * ignore index on sort for mp coalesce edbs * updating estimation checks to allow for non-zero household_sample_size * Re-estimation (#3) * pydantic for estimation settings * allow df as type in config * fix table_info * auto ownership * repair for pydantic * update for ruff * updated for simple models * repair for Pydantic * simple simulate and location choice * df is attribute * scheduling * stop freq * test locations * cdap * nonmand_and_joint_tour_dest_choice * nonmand_tour_freq * fix ci to stop using mamba * test updates * use larch6 from pip * use numba for stop freq * fix for pandas 1.5 * fix stop freq test for numba * Sharrow Cache Dir Setting (#893) * setting necessary filesystem changes from settings file * set for multiprocessing * repair github actions * github action updates (#903) * script to make data * unified script for making data * remove older * bug * doc note * load from parquet if available * add original alt ids to EDB output when using compact * fix MP race * script arg to skip to EDB * clean up CDAP and blacken * refactor model_estimation_table_types change to estimation_table_types, to avoid pydantic namespace clash * repair drop_dupes * blacken * location choice with compact * choice_def for compact * spec changes for simple-simulate * re-estimation demo for auto ownership * clean up status messages * change name to stop pydantic warnings * edit configs * default estimation sample size is same as regular sample size * allow location alts not in cv format * dummy zones for location choice * update scheduling model estimation * various cleanup * stop freq * tidy build script * update 02 school location for larger example * update notebook 04 * editable model re-estimation for location choice * fix test names * update notebooks * cdap print filenames as loading * notebook 07 * tests thru 07 * notebooks 08 09 * build the data first * runnable script * change larch version dependency * keep pandas<2 * notebooks 10 11 * notebook 12 * remove odd print * add matplotlib * notebook 13 14 * test all the notebooks * add xlsxwriter to tests * notebook 15 * CDAP revise model spec demo * notebook 16 * notebook 17 * longer timeout * notebook 18 * notebook 19 * notebook 20 * smaller notebook 15 * configurable est mode setup * notebook 21 * notebook 22 * config sample size in GA * notebook 23 * updates for larch and graphviz * change default to compact * compare model 03 * test updates * rename test targets * repair_av_zq * move doctor up * add another repair * oops --------- Co-authored-by: David Hensle <51132108+dhensle@users.noreply.github.com> * Removing estimation.yaml settings that are no longer needed * fixing unit tests, setting parquet edb default * one more missed estimation.yaml * using df.items for pandas 2 compatibility * tidy doc * updating edb file name for NMTF * updating numba and pandas in the conda env files * Improve test stability (#4) * handle dev versions of Larch * test stability * pin multimethod < 2.0 * add availability_expression * starting est docs * Resolve package version conflicts (#923) * limit multimethod version to 2.0 and earlier * add multimethod version to other settings * [makedocs] update installer download link * [makedocs] update branch docs * GitHub Actions updates (#926) * use libmamba solver * add permissions [makedocs] * add write permission for dev docs [makedocs] * conda-solver: classic * trace proto tables if available, otherwise synthetic population (#901) Co-authored-by: Jeffrey Newman * release instructions (#927) * use libmamba solver * add permissions [makedocs] * add write permission for dev docs [makedocs] * conda-solver: classic * include workflow dispatch option for tests * update release instructions * add installer build to instructions * Pin mamba for now, per https://github.com/conda-incubator/setup-miniconda/issues/392 * conda-remove-defaults * when no unavailability parameters are included * some general estimation docs * Use pandas 2 for docbuild environment (#928) * fix link * allow failure to import larch * workflow * blacken * try some pins * speed up docbuild * use pandas 2 for docs * oops wrong file * restore foundation * Update HOW_TO_RELEASE.md * refactor(shadow_pricing.py): remove a duplicated `default_segment_to_name_dict` (#930) * fix typo * fixing disaggregate accessibility bug in zone sampler * Revert "fixing disaggregate accessibility bug in zone sampler" This reverts commit be5d093a972905d2fb4694fed6fa143cda58f581. * notes on size terms * clean up docbuild * fix version check * add some doc * tidy * estimation docs * more on alternative avail * model evaluation * add doc on component_model * documentation enhancements * larch6 is now larch>6 * branch docs on workflow_dispatch * missing doc section on model respec --------- Co-authored-by: Yue Shuai <48269801+yueshuaing@users.noreply.github.com> Co-authored-by: David Hensle <51132108+dhensle@users.noreply.github.com> Co-authored-by: amarin <17020181+asiripanich@users.noreply.github.com> Co-authored-by: Ali Etezady <58451076+aletzdy@users.noreply.github.com> Co-authored-by: Sijia Wang * handling missing data or availability conditions * add docs on locking size terms * include constants in CDAP * bump larch requirement * require larch 6.0.40 * add xlsxwriter to envs * require larch 6.0.41 * add links * fix typos and formatting * cdap hh and per parquet read match csv * add missing x_validator for mode choice and nonmand tour freq * add tour mode choice edit example * add to docs * union not addition on sets * restore nb kernel * blacken * replacing conda with uv in estimation tests * add requests to github-action dependencies * running with created virtual env instead * Fix estimation notebook tests (#8) * Update scheduling.py --------- Co-authored-by: Jeffrey Newman Co-authored-by: Yue Shuai <48269801+yueshuaing@users.noreply.github.com> Co-authored-by: amarin <17020181+asiripanich@users.noreply.github.com> Co-authored-by: Ali Etezady <58451076+aletzdy@users.noreply.github.com> Co-authored-by: Sijia Wang --- .github/workflows/core_tests.yml | 79 +- activitysim/abm/models/cdap.py | 4 +- .../abm/models/disaggregate_accessibility.py | 11 +- .../abm/models/joint_tour_frequency.py | 5 +- activitysim/abm/models/location_choice.py | 37 +- .../models/non_mandatory_tour_frequency.py | 18 +- activitysim/abm/models/school_escorting.py | 5 +- activitysim/abm/models/stop_frequency.py | 18 +- activitysim/abm/models/trip_destination.py | 69 +- activitysim/abm/models/util/cdap.py | 6 +- .../abm/models/util/tour_destination.py | 87 +- activitysim/cli/run.py | 5 +- activitysim/core/configuration/filesystem.py | 3 +- activitysim/core/configuration/logit.py | 17 +- activitysim/core/estimation.py | 625 +- activitysim/core/interaction_sample.py | 36 + activitysim/core/steps/output.py | 161 + activitysim/estimation/larch/__init__.py | 57 +- .../estimation/larch/auto_ownership.py | 80 - activitysim/estimation/larch/cdap.py | 107 +- activitysim/estimation/larch/general.py | 101 +- .../estimation/larch/location_choice.py | 283 +- activitysim/estimation/larch/mode_choice.py | 36 +- .../estimation/larch/nonmand_tour_freq.py | 106 +- activitysim/estimation/larch/scheduling.py | 108 +- .../estimation/larch/simple_simulate.py | 102 +- .../estimation/larch/stop_frequency.py | 77 +- .../configs_estimation/.gitignore | 2 + .../estimation_template.yaml | 81 + .../configs_estimation/logging.yaml | 67 + .../configs_estimation/settings_template.yaml | 165 + .../test/test_edb_creation/outputs/.gitignore | 2 + .../outputs/infer_output/.gitignore | 1 + .../survey_data/final_households.csv | 51 + .../final_joint_tour_participants.csv | 8 + .../survey_data/final_persons.csv | 91 + .../survey_data/final_tours.csv | 118 + .../survey_data/final_trips.csv | 278 + .../survey_data/override_households.csv | 51 + .../override_joint_tour_participants.csv | 8 + .../survey_data/override_persons.csv | 91 + .../survey_data/override_tours.csv | 118 + .../survey_data/override_trips.csv | 278 + .../survey_data/survey_households.csv | 51 + .../survey_joint_tour_participants.csv | 8 + .../survey_data/survey_persons.csv | 91 + .../survey_data/survey_tours.csv | 118 + .../survey_data/survey_trips.csv | 278 + .../test_edb_creation/test_edb_formation.py | 276 + .../estimation/test/test_larch_estimation.py | 31 +- .../test_larch_estimation/test_cdap_model.csv | 324 +- .../test_cdap_model_loglike.csv | 2 +- .../test_joint_tour_scheduling_loglike.csv | 2 +- ...twork_subtour_destination_BHHH_loglike.csv | 2 + ...rk_subtour_destination_BHHH_size_spec.csv} | 2 +- ...loc_atwork_subtour_destination_loglike.csv | 2 - ..._loc_atwork_subtour_scheduling_loglike.csv | 2 - ...ndatory_tour_destination_SLSQP_loglike.csv | 2 + ...tory_tour_destination_SLSQP_size_spec.csv} | 20 +- ...non_mandatory_tour_destination_loglike.csv | 2 - ..._non_mandatory_tour_scheduling_loglike.csv | 2 - .../test_loc_school_location_BHHH_loglike.csv | 2 + ...est_loc_school_location_BHHH_size_spec.csv | 23 + ...test_loc_school_location_SLSQP_loglike.csv | 2 + ...st_loc_school_location_SLSQP_size_spec.csv | 23 + .../test_loc_school_location_loglike.csv | 2 +- .../test_loc_school_location_size_spec.csv | 10 +- ...test_loc_trip_destination_BHHH_loglike.csv | 2 + ...st_loc_trip_destination_BHHH_size_spec.csv | 23 + ...est_loc_trip_destination_SLSQP_loglike.csv | 2 + ..._loc_trip_destination_SLSQP_size_spec.csv} | 16 +- .../test_loc_trip_destination_loglike.csv | 2 - ...t_loc_workplace_location_SLSQP_loglike.csv | 2 + ...oc_workplace_location_SLSQP_size_spec.csv} | 8 +- .../test_loc_workplace_location_loglike.csv | 2 - ..._atwork_subtour_destination_BHHH_None_.csv | 22 +- ...mandatory_tour_destination_SLSQP_None_.csv | 72 +- ...ation_model_school_location_BHHH_None_.csv | 21 + ...tion_model_school_location_SLSQP_None_.csv | 42 +- ...tion_model_trip_destination_BHHH_None_.csv | 48 + ...ion_model_trip_destination_SLSQP_0_12_.csv | 48 - ...ion_model_trip_destination_SLSQP_None_.csv | 48 + ...n_model_workplace_location_SLSQP_None_.csv | 70 +- ...ndatory_tour_scheduling_school_loglike.csv | 2 +- ...mandatory_tour_scheduling_work_loglike.csv | 2 +- ..._non_mandatory_tour_scheduling_loglike.csv | 2 +- ...est_nonmand_and_joint_tour_dest_choice.csv | 72 +- ...and_and_joint_tour_dest_choice_loglike.csv | 2 +- .../test_nonmand_tour_freq.csv | 852 +- .../test_nonmand_tour_freq_loglike.csv | 16 +- ...model_atwork_subtour_scheduling_SLSQP_.csv | 50 - ...ing_model_joint_tour_scheduling_SLSQP_.csv | 120 +- ...andatory_tour_scheduling_school_SLSQP_.csv | 112 +- ..._mandatory_tour_scheduling_work_SLSQP_.csv | 128 +- ...l_non_mandatory_tour_scheduling_SLSQP_.csv | 180 +- .../test_school_location.csv | 42 +- .../test_school_location_loglike.csv | 2 +- .../test_school_location_size_spec.csv | 10 +- ...mulate_atwork_subtour_frequency_SLSQP_.csv | 222 +- ...atwork_subtour_frequency_SLSQP_loglike.csv | 2 +- ...t_simple_simulate_auto_ownership_BHHH_.csv | 2 +- ...est_simple_simulate_free_parking_BHHH_.csv | 2 +- ...simulate_joint_tour_composition_SLSQP_.csv | 64 +- ...e_joint_tour_composition_SLSQP_loglike.csv | 2 +- ...e_simulate_joint_tour_frequency_SLSQP_.csv | 154 +- ...mulate_joint_tour_participation_SLSQP_.csv | 120 +- ...imulate_mandatory_tour_frequency_BHHH_.csv | 108 +- ...mulate_mandatory_tour_frequency_SLSQP_.csv | 108 +- ...mandatory_tour_frequency_SLSQP_loglike.csv | 2 +- ...imple_simulate_trip_mode_choice_SLSQP_.csv | 546 +- .../test_stop_freq_model.csv | 378 +- .../test_stop_frequency_loglike.csv | 2 +- .../test_tour_and_subtour_mode_choice.csv | 604 +- .../test_workplace_location.csv | 70 +- .../test_workplace_location_loglike.csv | 2 +- .../test_workplace_location_size_spec.csv | 8 +- .../build_full_mtc_example.py | 196 + .../configs/estimation.yaml | 50 +- .../configs_estimation/estimation.yaml | 80 + .../configs_estimation/logging.yaml | 67 + .../configs_estimation/settings.yaml | 165 + .../notebooks/02_school_location.ipynb | 2156 ++- .../notebooks/03_work_location.ipynb | 5631 +++--- .../notebooks/04_auto_ownership.ipynb | 5670 ++++-- .../notebooks/05_free_parking.ipynb | 1003 +- .../notebooks/06_cdap.ipynb | 7651 +++++--- .../notebooks/07_mand_tour_freq.ipynb | 3057 ++- .../notebooks/08_work_tour_scheduling.ipynb | 2732 +-- .../notebooks/09_school_tour_scheduling.ipynb | 3694 ++-- .../notebooks/10_joint_tour_freq.ipynb | 2543 +-- .../notebooks/11_joint_tour_composition.ipynb | 2003 +- .../12_joint_tour_participation.ipynb | 3320 ++-- .../13_joint_nonmand_tour_dest.ipynb | 3323 ++-- .../notebooks/14_joint_tour_scheduling.ipynb | 3824 ++-- .../notebooks/15_non_mand_tour_freq.ipynb | 11795 ++++++++---- .../16_nonmand_tour_scheduling.ipynb | 3410 ++-- .../notebooks/17_tour_mode_choice.ipynb | 15322 ++++++++++++---- .../notebooks/18_atwork_subtour_freq.ipynb | 3380 ++-- .../notebooks/19_atwork_subtour_dest.ipynb | 1864 +- .../20_atwork_subtour_scheduling.ipynb | 3425 ++-- .../notebooks/21_stop_frequency.ipynb | 5693 +++--- .../notebooks/22_trip_dest.ipynb | 3497 ++-- .../notebooks/23_trip_mode_choice.ipynb | 5809 +++--- .../notebooks/est_mode_setup.py | 83 + .../example_estimation/scripts/infer.py | 19 +- .../configs/tour_scheduling_school.csv | 2 +- .../configs/tour_scheduling_school.csv | 2 +- .../configs/estimation.yaml | 50 +- conda-environments/activitysim-dev-base.yml | 0 conda-environments/activitysim-dev.yml | 0 conda-environments/docbuild.yml | 0 conda-environments/github-actions-tests.yml | 0 docs/dev-guide/changes.md | 15 + docs/users-guide/estimation-mode/asim-est.md | 34 + docs/users-guide/estimation-mode/index.md | 58 + .../users-guide/estimation-mode/larch-api.rst | 50 + docs/users-guide/estimation-mode/larch.md | 321 + docs/users-guide/index.rst | 1 + docs/users-guide/model_dev.rst | 56 +- pyproject.toml | 17 +- uv.lock | 29 +- 161 files changed, 68669 insertions(+), 42774 deletions(-) delete mode 100644 activitysim/estimation/larch/auto_ownership.py create mode 100644 activitysim/estimation/test/test_edb_creation/configs_estimation/.gitignore create mode 100644 activitysim/estimation/test/test_edb_creation/configs_estimation/estimation_template.yaml create mode 100644 activitysim/estimation/test/test_edb_creation/configs_estimation/logging.yaml create mode 100644 activitysim/estimation/test/test_edb_creation/configs_estimation/settings_template.yaml create mode 100644 activitysim/estimation/test/test_edb_creation/outputs/.gitignore create mode 100644 activitysim/estimation/test/test_edb_creation/outputs/infer_output/.gitignore create mode 100644 activitysim/estimation/test/test_edb_creation/survey_data/final_households.csv create mode 100644 activitysim/estimation/test/test_edb_creation/survey_data/final_joint_tour_participants.csv create mode 100644 activitysim/estimation/test/test_edb_creation/survey_data/final_persons.csv create mode 100644 activitysim/estimation/test/test_edb_creation/survey_data/final_tours.csv create mode 100644 activitysim/estimation/test/test_edb_creation/survey_data/final_trips.csv create mode 100644 activitysim/estimation/test/test_edb_creation/survey_data/override_households.csv create mode 100644 activitysim/estimation/test/test_edb_creation/survey_data/override_joint_tour_participants.csv create mode 100644 activitysim/estimation/test/test_edb_creation/survey_data/override_persons.csv create mode 100644 activitysim/estimation/test/test_edb_creation/survey_data/override_tours.csv create mode 100644 activitysim/estimation/test/test_edb_creation/survey_data/override_trips.csv create mode 100644 activitysim/estimation/test/test_edb_creation/survey_data/survey_households.csv create mode 100644 activitysim/estimation/test/test_edb_creation/survey_data/survey_joint_tour_participants.csv create mode 100644 activitysim/estimation/test/test_edb_creation/survey_data/survey_persons.csv create mode 100644 activitysim/estimation/test/test_edb_creation/survey_data/survey_tours.csv create mode 100644 activitysim/estimation/test/test_edb_creation/survey_data/survey_trips.csv create mode 100644 activitysim/estimation/test/test_edb_creation/test_edb_formation.py create mode 100644 activitysim/estimation/test/test_larch_estimation/test_loc_atwork_subtour_destination_BHHH_loglike.csv rename activitysim/estimation/test/test_larch_estimation/{test_loc_atwork_subtour_destination_size_spec.csv => test_loc_atwork_subtour_destination_BHHH_size_spec.csv} (97%) delete mode 100644 activitysim/estimation/test/test_larch_estimation/test_loc_atwork_subtour_destination_loglike.csv delete mode 100644 activitysim/estimation/test/test_larch_estimation/test_loc_atwork_subtour_scheduling_loglike.csv create mode 100644 activitysim/estimation/test/test_larch_estimation/test_loc_non_mandatory_tour_destination_SLSQP_loglike.csv rename activitysim/estimation/test/test_larch_estimation/{test_loc_non_mandatory_tour_destination_size_spec.csv => test_loc_non_mandatory_tour_destination_SLSQP_size_spec.csv} (51%) delete mode 100644 activitysim/estimation/test/test_larch_estimation/test_loc_non_mandatory_tour_destination_loglike.csv delete mode 100644 activitysim/estimation/test/test_larch_estimation/test_loc_non_mandatory_tour_scheduling_loglike.csv create mode 100644 activitysim/estimation/test/test_larch_estimation/test_loc_school_location_BHHH_loglike.csv create mode 100644 activitysim/estimation/test/test_larch_estimation/test_loc_school_location_BHHH_size_spec.csv create mode 100644 activitysim/estimation/test/test_larch_estimation/test_loc_school_location_SLSQP_loglike.csv create mode 100644 activitysim/estimation/test/test_larch_estimation/test_loc_school_location_SLSQP_size_spec.csv create mode 100644 activitysim/estimation/test/test_larch_estimation/test_loc_trip_destination_BHHH_loglike.csv create mode 100644 activitysim/estimation/test/test_larch_estimation/test_loc_trip_destination_BHHH_size_spec.csv create mode 100644 activitysim/estimation/test/test_larch_estimation/test_loc_trip_destination_SLSQP_loglike.csv rename activitysim/estimation/test/test_larch_estimation/{test_loc_trip_destination_size_spec.csv => test_loc_trip_destination_SLSQP_size_spec.csv} (63%) delete mode 100644 activitysim/estimation/test/test_larch_estimation/test_loc_trip_destination_loglike.csv create mode 100644 activitysim/estimation/test/test_larch_estimation/test_loc_workplace_location_SLSQP_loglike.csv rename activitysim/estimation/test/test_larch_estimation/{test_loc_workplace_location_size_spec.csv => test_loc_workplace_location_SLSQP_size_spec.csv} (72%) delete mode 100644 activitysim/estimation/test/test_larch_estimation/test_loc_workplace_location_loglike.csv create mode 100644 activitysim/estimation/test/test_larch_estimation/test_location_model_school_location_BHHH_None_.csv create mode 100644 activitysim/estimation/test/test_larch_estimation/test_location_model_trip_destination_BHHH_None_.csv delete mode 100644 activitysim/estimation/test/test_larch_estimation/test_location_model_trip_destination_SLSQP_0_12_.csv create mode 100644 activitysim/estimation/test/test_larch_estimation/test_location_model_trip_destination_SLSQP_None_.csv delete mode 100644 activitysim/estimation/test/test_larch_estimation/test_scheduling_model_atwork_subtour_scheduling_SLSQP_.csv create mode 100644 activitysim/examples/example_estimation/build_full_mtc_example.py create mode 100644 activitysim/examples/example_estimation/configs_estimation/estimation.yaml create mode 100644 activitysim/examples/example_estimation/configs_estimation/logging.yaml create mode 100644 activitysim/examples/example_estimation/configs_estimation/settings.yaml create mode 100644 activitysim/examples/example_estimation/notebooks/est_mode_setup.py create mode 100644 conda-environments/activitysim-dev-base.yml create mode 100644 conda-environments/activitysim-dev.yml create mode 100644 conda-environments/docbuild.yml create mode 100644 conda-environments/github-actions-tests.yml create mode 100644 docs/users-guide/estimation-mode/asim-est.md create mode 100644 docs/users-guide/estimation-mode/index.md create mode 100644 docs/users-guide/estimation-mode/larch-api.rst create mode 100644 docs/users-guide/estimation-mode/larch.md diff --git a/.github/workflows/core_tests.yml b/.github/workflows/core_tests.yml index 5bfada0a8..2c583275c 100644 --- a/.github/workflows/core_tests.yml +++ b/.github/workflows/core_tests.yml @@ -321,6 +321,83 @@ jobs: run: | uv run pytest activitysim/estimation/test/test_larch_estimation.py --durations=0 + estimation_notebooks: + needs: foundation + env: + python-version: "3.10" + label: win-64 + defaults: + run: + shell: pwsh + name: Estimation Notebooks Test + runs-on: windows-latest + steps: + - uses: actions/checkout@v4 + + - name: "Set up Python" + uses: actions/setup-python@v5 + with: + python-version-file: ".python-version" + + - name: Install uv + uses: astral-sh/setup-uv@v5 + with: + version: "0.7.12" + enable-cache: true + cache-dependency-glob: "uv.lock" + + - name: setup graphviz + uses: ts-graphviz/setup-graphviz@v2 + + - name: Install activitysim + run: | + uv sync --locked --group github-action + + - name: Create Estimation Data + run: > + uv run --group github-action python activitysim/examples/example_estimation/notebooks/est_mode_setup.py + --household_sample_size 5000 + + - name: Test Estimation Notebooks + run: > + uv run --group github-action pytest activitysim/examples/example_estimation/notebooks + --nbmake-timeout=3000 + --ignore=activitysim/examples/example_estimation/notebooks/01_estimation_mode.ipynb + --ignore-glob=activitysim/examples/example_estimation/notebooks/test-estimation-data/** + + estimation_edb_creation: + needs: foundation + env: + python-version: "3.10" + label: win-64 + defaults: + run: + shell: pwsh + name: estimation_edb_creation_test + runs-on: windows-latest + steps: + - uses: actions/checkout@v4 + + - name: Install uv + uses: astral-sh/setup-uv@v5 + with: + version: "0.7.12" + enable-cache: true + cache-dependency-glob: "uv.lock" + + - name: "Set up Python" + uses: actions/setup-python@v5 + with: + python-version-file: ".python-version" + + - name: Install activitysim + run: | + uv sync --locked --only-group github-action + + - name: Test Estimation EDB Creation + run: | + uv run pytest activitysim/estimation/test/test_edb_creation/test_edb_formation.py --durations=0 + expression-profiling: needs: foundation env: @@ -397,4 +474,4 @@ jobs: github_token: ${{ secrets.GITHUB_TOKEN }} # Token is created automatically by Github Actions, no other config needed publish_dir: ./docs/_build/html - destination_dir: develop + destination_dir: develop \ No newline at end of file diff --git a/activitysim/abm/models/cdap.py b/activitysim/abm/models/cdap.py index f8632da09..d5e92e522 100644 --- a/activitysim/abm/models/cdap.py +++ b/activitysim/abm/models/cdap.py @@ -195,7 +195,7 @@ def cdap_simulate( estimator.write_coefficients(coefficients_df, model_settings) estimator.write_table( cdap_interaction_coefficients, - "interaction_coefficients", + "cdap_interaction_coefficients", index=False, append=False, ) @@ -204,7 +204,7 @@ def cdap_simulate( spec = cdap.get_cached_spec(state, hhsize) estimator.write_table(spec, "spec_%s" % hhsize, append=False) if add_joint_tour_utility: - joint_spec = cdap.get_cached_joint_spec(hhsize) + joint_spec = cdap.get_cached_joint_spec(state, hhsize) estimator.write_table( joint_spec, "joint_spec_%s" % hhsize, append=False ) diff --git a/activitysim/abm/models/disaggregate_accessibility.py b/activitysim/abm/models/disaggregate_accessibility.py index 0ae3167c8..df229c6ad 100644 --- a/activitysim/abm/models/disaggregate_accessibility.py +++ b/activitysim/abm/models/disaggregate_accessibility.py @@ -764,11 +764,12 @@ def get_disaggregate_logsums( state.filesystem, model_name + ".yaml" ) model_settings.SAMPLE_SIZE = disagg_model_settings.DESTINATION_SAMPLE_SIZE - estimator = estimation.manager.begin_estimation(state, trace_label) - if estimator: - location_choice.write_estimation_specs( - state, estimator, model_settings, model_name + ".yaml" - ) + # estimator = estimation.manager.begin_estimation(state, trace_label) + # if estimator: + # location_choice.write_estimation_specs( + # state, estimator, model_settings, model_name + ".yaml" + # ) + estimator = None # Append table references in settings with "proto_" # This avoids having to make duplicate copies of config files for disagg accessibilities diff --git a/activitysim/abm/models/joint_tour_frequency.py b/activitysim/abm/models/joint_tour_frequency.py index 1b9fde94b..cace98d7d 100644 --- a/activitysim/abm/models/joint_tour_frequency.py +++ b/activitysim/abm/models/joint_tour_frequency.py @@ -192,8 +192,11 @@ def joint_tour_frequency( print(f"len(joint_tours) {len(joint_tours)}") different = False + # need to check households as well because the full survey sample may not be used + # (e.g. if we set household_sample_size in settings.yaml) survey_tours_not_in_tours = survey_tours[ ~survey_tours.index.isin(joint_tours.index) + & survey_tours.household_id.isin(households.index) ] if len(survey_tours_not_in_tours) > 0: print(f"survey_tours_not_in_tours\n{survey_tours_not_in_tours}") @@ -201,7 +204,7 @@ def joint_tour_frequency( tours_not_in_survey_tours = joint_tours[ ~joint_tours.index.isin(survey_tours.index) ] - if len(survey_tours_not_in_tours) > 0: + if len(tours_not_in_survey_tours) > 0: print(f"tours_not_in_survey_tours\n{tours_not_in_survey_tours}") different = True assert not different diff --git a/activitysim/abm/models/location_choice.py b/activitysim/abm/models/location_choice.py index e1b886cc9..e21653cf9 100644 --- a/activitysim/abm/models/location_choice.py +++ b/activitysim/abm/models/location_choice.py @@ -19,7 +19,6 @@ from activitysim.core.interaction_sample_simulate import interaction_sample_simulate from activitysim.core.util import reindex - """ The school/workplace location model predicts the zones in which various people will work or attend school. @@ -140,7 +139,7 @@ def _location_sample( sample_size = model_settings.SAMPLE_SIZE - if estimator: + if estimator and model_settings.ESTIMATION_SAMPLE_SIZE >= 0: sample_size = model_settings.ESTIMATION_SAMPLE_SIZE logger.info( f"Estimation mode for {trace_label} using sample size of {sample_size}" @@ -423,7 +422,7 @@ def location_presample( # choose a MAZ for each DEST_TAZ choice, choice probability based on MAZ size_term fraction of TAZ total maz_choices = tour_destination.choose_MAZ_for_TAZ( - state, taz_sample, MAZ_size_terms, trace_label + state, taz_sample, MAZ_size_terms, trace_label, model_settings ) assert DEST_MAZ in maz_choices @@ -512,38 +511,6 @@ def run_location_sample( trace_label=trace_label, ) - # adding observed choice to alt set when running in estimation mode - if estimator: - # grabbing survey values - survey_persons = estimation.manager.get_survey_table("persons") - if "school_location" in trace_label: - survey_choices = survey_persons["school_zone_id"].reset_index() - elif ("workplace_location" in trace_label) and ("external" not in trace_label): - survey_choices = survey_persons["workplace_zone_id"].reset_index() - else: - return choices - survey_choices.columns = ["person_id", "alt_dest"] - survey_choices = survey_choices[ - survey_choices["person_id"].isin(choices.index) - & (survey_choices.alt_dest > 0) - ] - # merging survey destination into table if not available - joined_data = survey_choices.merge( - choices, on=["person_id", "alt_dest"], how="left", indicator=True - ) - missing_rows = joined_data[joined_data["_merge"] == "left_only"] - missing_rows["pick_count"] = 1 - if len(missing_rows) > 0: - new_choices = missing_rows[ - ["person_id", "alt_dest", "prob", "pick_count"] - ].set_index("person_id") - choices = choices.append(new_choices, ignore_index=False).sort_index() - # making probability the mean of all other sampled destinations by person - # FIXME is there a better way to do this? Does this even matter for estimation? - choices["prob"] = choices["prob"].fillna( - choices.groupby("person_id")["prob"].transform("mean") - ) - return choices diff --git a/activitysim/abm/models/non_mandatory_tour_frequency.py b/activitysim/abm/models/non_mandatory_tour_frequency.py index 175a4b1bf..8afe368d8 100644 --- a/activitysim/abm/models/non_mandatory_tour_frequency.py +++ b/activitysim/abm/models/non_mandatory_tour_frequency.py @@ -289,14 +289,22 @@ def non_mandatory_tour_frequency( ) if estimator: - estimator.write_spec(model_settings, bundle_directory=True) + bundle_directory = True + # writing to separte subdirectory for each segment if multiprocessing + if state.settings.multiprocess: + bundle_directory = False + estimator.write_spec(model_settings, bundle_directory=bundle_directory) estimator.write_model_settings( - model_settings, model_settings_file_name, bundle_directory=True + model_settings, + model_settings_file_name, + bundle_directory=bundle_directory, ) # preserving coefficients file name makes bringing back updated coefficients more straightforward estimator.write_coefficients(coefficients_df, segment_settings) estimator.write_choosers(chooser_segment) - estimator.write_alternatives(alternatives, bundle_directory=True) + estimator.write_alternatives( + alternatives, bundle_directory=bundle_directory + ) # FIXME #interaction_simulate_estimation_requires_chooser_id_in_df_column # shuold we do it here or have interaction_simulate do it? @@ -435,8 +443,10 @@ def non_mandatory_tour_frequency( if estimator: # make sure they created the right tours survey_tours = estimation.manager.get_survey_table("tours").sort_index() + # need the household_id check below incase household_sample_size != 0 non_mandatory_survey_tours = survey_tours[ - survey_tours.tour_category == "non_mandatory" + (survey_tours.tour_category == "non_mandatory") + & survey_tours.household_id.isin(persons.household_id) ] # need to remove the pure-escort tours from the survey tours table for comparison below if state.is_table("school_escort_tours"): diff --git a/activitysim/abm/models/school_escorting.py b/activitysim/abm/models/school_escorting.py index e4955dc03..32e5058e7 100644 --- a/activitysim/abm/models/school_escorting.py +++ b/activitysim/abm/models/school_escorting.py @@ -503,7 +503,10 @@ def school_escorting( coefficients_df, file_name=stage.upper() + "_COEFFICIENTS" ) estimator.write_choosers(choosers) - estimator.write_alternatives(alts, bundle_directory=True) + if state.settings.multiprocess: + estimator.write_alternatives(alts, bundle_directory=False) + else: + estimator.write_alternatives(alts, bundle_directory=True) # FIXME #interaction_simulate_estimation_requires_chooser_id_in_df_column # shuold we do it here or have interaction_simulate do it? diff --git a/activitysim/abm/models/stop_frequency.py b/activitysim/abm/models/stop_frequency.py index ec1d4961d..634eb0cd1 100644 --- a/activitysim/abm/models/stop_frequency.py +++ b/activitysim/abm/models/stop_frequency.py @@ -191,9 +191,15 @@ def stop_frequency( if estimator: estimator.write_spec(segment_settings, bundle_directory=False) - estimator.write_model_settings( - model_settings, model_settings_file_name, bundle_directory=True - ) + # writing to separte subdirectory for each segment if multiprocessing + if state.settings.multiprocess: + estimator.write_model_settings( + model_settings, model_settings_file_name, bundle_directory=False + ) + else: + estimator.write_model_settings( + model_settings, model_settings_file_name, bundle_directory=True + ) estimator.write_coefficients(coefficients_df, segment_settings) estimator.write_choosers(chooser_segment) @@ -265,7 +271,11 @@ def stop_frequency( survey_trips = estimation.manager.get_survey_table(table_name="trips") different = False - survey_trips_not_in_trips = survey_trips[~survey_trips.index.isin(trips.index)] + # need the check below on household_id incase household_sample_size != 0 + survey_trips_not_in_trips = survey_trips[ + ~survey_trips.index.isin(trips.index) + & survey_trips.household_id.isin(trips.household_id) + ] if len(survey_trips_not_in_trips) > 0: print(f"survey_trips_not_in_trips\n{survey_trips_not_in_trips}") different = True diff --git a/activitysim/abm/models/trip_destination.py b/activitysim/abm/models/trip_destination.py index 79dd1661c..6584134ef 100644 --- a/activitysim/abm/models/trip_destination.py +++ b/activitysim/abm/models/trip_destination.py @@ -170,15 +170,17 @@ def _destination_sample( ) sample_size = model_settings.SAMPLE_SIZE - if state.settings.disable_destination_sampling or ( - estimator and estimator.want_unsampled_alternatives - ): - # FIXME interaction_sample will return unsampled complete alternatives with probs and pick_count + if estimator and model_settings.ESTIMATION_SAMPLE_SIZE >= 0: + sample_size = model_settings.ESTIMATION_SAMPLE_SIZE logger.info( - f"Estimation mode for {trace_label} using " - f"unsampled alternatives short_circuit_choices" + f"Estimation mode for {trace_label} using sample size of {sample_size}" ) + + if state.settings.disable_destination_sampling: sample_size = 0 + logger.info( + f"SAMPLE_SIZE set to 0 for {trace_label} because disable_destination_sampling is set" + ) locals_dict = state.get_global_constants().copy() locals_dict.update(model_settings.CONSTANTS) @@ -290,6 +292,7 @@ def choose_MAZ_for_TAZ( network_los, alt_dest_col_name, trace_label, + model_settings, ): """ Convert taz_sample table with TAZ zone sample choices to a table with a MAZ zone chosen for each TAZ @@ -529,6 +532,57 @@ def choose_MAZ_for_TAZ( transpose=False, ) + if estimation.manager.enabled and ( + model_settings.ESTIMATION_SAMPLE_SIZE > 0 + or ( + model_settings.ESTIMATION_SAMPLE_SIZE < 0 and model_settings.SAMPLE_SIZE > 0 + ) + ): + # want to ensure the override choice is in the choice set + survey_choices = estimation.manager.get_survey_destination_choices( + state, chooser_df, trace_label + ) + if survey_choices is not None: + assert ( + chooser_df.index == survey_choices.index + ).all(), "survey_choices index should match chooser_df index" + survey_choices.name = DEST_MAZ + survey_choices = survey_choices.dropna().astype(taz_choices[DEST_MAZ].dtype) + # merge maz_sizes onto survey choices + maz_sizes["MAZ_prob"] = maz_sizes.groupby(DEST_TAZ)["size_term"].transform( + lambda x: x / x.sum() + ) + survey_choices = pd.merge( + survey_choices.reset_index(), + maz_sizes[[DEST_MAZ, DEST_TAZ, "MAZ_prob"]], + on=[DEST_MAZ], + how="left", + ) + # merge TAZ_prob from taz_choices onto survey choices + survey_choices = pd.merge( + survey_choices, + # dropping duplicates to avoid duplicate rows as the same TAZ can be chosen multiple times + taz_choices[[chooser_id_col, DEST_TAZ, "TAZ_prob"]].drop_duplicates( + subset=[chooser_id_col, DEST_TAZ] + ), + on=[chooser_id_col, DEST_TAZ], + how="left", + ) + survey_choices["prob"] = ( + survey_choices["TAZ_prob"] * survey_choices["MAZ_prob"] + ) + + # Don't care about getting dest_TAZ correct as it gets dropped later + survey_choices.fillna(0, inplace=True) + + # merge survey choices back into choices_df and sort by chooser + taz_choices = pd.concat( + [taz_choices, survey_choices[taz_choices.columns]], ignore_index=True + ) + taz_choices.sort_values( + by=[chooser_id_col, DEST_TAZ], inplace=True, ignore_index=True + ) + taz_choices = taz_choices.drop(columns=["TAZ_prob", "MAZ_prob"]) taz_choices = taz_choices.groupby([chooser_id_col, DEST_MAZ]).agg( prob=("prob", "max"), pick_count=("prob", "count") @@ -602,6 +656,7 @@ def destination_presample( network_los, alt_dest_col_name, trace_label, + model_settings, ) assert alt_dest_col_name in maz_sample @@ -1323,6 +1378,8 @@ def run_trip_destination( # expect all the same trips survey_trips = estimator.get_survey_table("trips").sort_index() + # need to check household_id incase household_sample_size != 0 + survey_trips = survey_trips[survey_trips.household_id.isin(trips.household_id)] assert survey_trips.index.equals(trips.index) first = survey_trips.trip_num == 1 diff --git a/activitysim/abm/models/util/cdap.py b/activitysim/abm/models/util/cdap.py index 11aac561f..3b4c41466 100644 --- a/activitysim/abm/models/util/cdap.py +++ b/activitysim/abm/models/util/cdap.py @@ -965,6 +965,7 @@ def household_activity_choices( spec, choosers, trace_label=trace_label, + have_trace_targets=(trace_hh_id in choosers.index), chunk_sizer=chunk_sizer, compute_settings=compute_settings, ) @@ -980,14 +981,15 @@ def household_activity_choices( interaction_coefficients, hhsize, trace_spec=(trace_hh_id in choosers.index), - trace_label=trace_label, + trace_label=tracing.extend_trace_label(trace_label, "joint"), ) joint_tour_utils = simulate.eval_utilities( state, joint_tour_spec, choosers, - trace_label=trace_label, + trace_label=tracing.extend_trace_label(trace_label, "joint"), + have_trace_targets=(trace_hh_id in choosers.index), chunk_sizer=chunk_sizer, compute_settings=compute_settings, ) diff --git a/activitysim/abm/models/util/tour_destination.py b/activitysim/abm/models/util/tour_destination.py index db34a7f1a..2032d21b9 100644 --- a/activitysim/abm/models/util/tour_destination.py +++ b/activitysim/abm/models/util/tour_destination.py @@ -9,7 +9,15 @@ from activitysim.abm.models.util import logsums as logsum from activitysim.abm.tables.size_terms import tour_destination_size_terms -from activitysim.core import config, los, simulate, tracing, workflow, expressions +from activitysim.core import ( + config, + estimation, + los, + simulate, + tracing, + workflow, + expressions, +) from activitysim.core.configuration.logit import TourLocationComponentSettings from activitysim.core.interaction_sample import interaction_sample from activitysim.core.interaction_sample_simulate import interaction_sample_simulate @@ -87,15 +95,17 @@ def _destination_sample( logger.info("running %s with %d tours", trace_label, len(choosers)) sample_size = model_settings.SAMPLE_SIZE - if state.settings.disable_destination_sampling or ( - estimator and estimator.want_unsampled_alternatives - ): - # FIXME interaction_sample will return unsampled complete alternatives with probs and pick_count + if estimator and model_settings.ESTIMATION_SAMPLE_SIZE >= 0: + sample_size = model_settings.ESTIMATION_SAMPLE_SIZE logger.info( - "Estimation mode for %s using unsampled alternatives short_circuit_choices" - % (trace_label,) + f"Estimation mode for {trace_label} using sample size of {sample_size}" ) + + if state.settings.disable_destination_sampling: sample_size = 0 + logger.info( + f"SAMPLE_SIZE set to 0 for {trace_label} because disable_destination_sampling is set" + ) locals_d = { "skims": skims, @@ -253,7 +263,9 @@ def aggregate_size_terms(dest_size_terms, network_los): return MAZ_size_terms, TAZ_size_terms -def choose_MAZ_for_TAZ(state: workflow.State, taz_sample, MAZ_size_terms, trace_label): +def choose_MAZ_for_TAZ( + state: workflow.State, taz_sample, MAZ_size_terms, trace_label, model_settings +): """ Convert taz_sample table with TAZ zone sample choices to a table with a MAZ zone chosen for each TAZ choose MAZ probabilistically (proportionally by size_term) from set of MAZ zones in parent TAZ @@ -329,7 +341,7 @@ def choose_MAZ_for_TAZ(state: workflow.State, taz_sample, MAZ_size_terms, trace_ # taz_choices index values should be contiguous assert ( - taz_choices[chooser_id_col] == np.repeat(chooser_df.index, taz_sample_size) + (taz_choices[chooser_id_col] == np.repeat(chooser_df.index, taz_sample_size)) ).all() # we need to choose a MAZ for each DEST_TAZ choice @@ -474,6 +486,59 @@ def choose_MAZ_for_TAZ(state: workflow.State, taz_sample, MAZ_size_terms, trace_ transpose=False, ) + if estimation.manager.enabled and ( + model_settings.ESTIMATION_SAMPLE_SIZE > 0 + or ( + model_settings.ESTIMATION_SAMPLE_SIZE < 0 and model_settings.SAMPLE_SIZE > 0 + ) + ): + # want to ensure the override choice is in the choice set + survey_choices = estimation.manager.get_survey_destination_choices( + state, chooser_df, trace_label + ) + + if survey_choices is not None: + assert ( + chooser_df.index == survey_choices.index + ).all(), "survey_choices index should match chooser_df index" + survey_choices.name = DEST_MAZ + survey_choices = survey_choices.dropna().astype(taz_choices[DEST_MAZ].dtype) + # merge maz_sizes onto survey choices + MAZ_size_terms["MAZ_prob"] = MAZ_size_terms.groupby("dest_TAZ")[ + "size_term" + ].transform(lambda x: x / x.sum()) + survey_choices = pd.merge( + survey_choices.reset_index(), + MAZ_size_terms.rename(columns={"zone_id": DEST_MAZ}), + on=[DEST_MAZ], + how="left", + ) + # merge TAZ_prob from taz_choices onto survey choices + survey_choices = pd.merge( + survey_choices, + # dropping duplicates to avoid duplicate rows as the same TAZ can be chosen multiple times + taz_choices[[chooser_id_col, "dest_TAZ", "TAZ_prob"]].drop_duplicates( + subset=[chooser_id_col, "dest_TAZ"] + ), + on=[chooser_id_col, "dest_TAZ"], + how="left", + ) + + survey_choices["prob"] = ( + survey_choices["TAZ_prob"] * survey_choices["MAZ_prob"] + ) + + # Don't care about getting dest_TAZ correct as it gets dropped later + survey_choices.fillna(0, inplace=True) + + # merge survey choices back into choices_df and sort by chooser + taz_choices = pd.concat( + [taz_choices, survey_choices[taz_choices.columns]], ignore_index=True + ) + taz_choices.sort_values( + by=[chooser_id_col, "dest_TAZ"], inplace=True, ignore_index=True + ) + taz_choices = taz_choices.drop(columns=["TAZ_prob", "MAZ_prob"]) taz_choices = taz_choices.groupby([chooser_id_col, DEST_MAZ]).agg( prob=("prob", "max"), pick_count=("prob", "count") @@ -532,7 +597,9 @@ def destination_presample( ) # choose a MAZ for each DEST_TAZ choice, choice probability based on MAZ size_term fraction of TAZ total - maz_choices = choose_MAZ_for_TAZ(state, taz_sample, MAZ_size_terms, trace_label) + maz_choices = choose_MAZ_for_TAZ( + state, taz_sample, MAZ_size_terms, trace_label, model_settings + ) assert DEST_MAZ in maz_choices maz_choices = maz_choices.rename(columns={DEST_MAZ: alt_dest_col_name}) diff --git a/activitysim/cli/run.py b/activitysim/cli/run.py index 233267051..1293fa2c7 100644 --- a/activitysim/cli/run.py +++ b/activitysim/cli/run.py @@ -377,7 +377,10 @@ def run(args): ] for cfg_key in np_info_keys: - info = np.__config__.get_info(cfg_key) + try: + info = np.__config__.get_info(cfg_key) + except AttributeError: + info = np.show_config("dicts").get(cfg_key, "MISSING") if info: for info_key in ["libraries"]: if info_key in info: diff --git a/activitysim/core/configuration/filesystem.py b/activitysim/core/configuration/filesystem.py index 704e179a1..ba2049e31 100644 --- a/activitysim/core/configuration/filesystem.py +++ b/activitysim/core/configuration/filesystem.py @@ -169,7 +169,8 @@ def get_output_dir(self, subdir=None) -> Path: if subdir is not None: out = out.joinpath(subdir) if not out.exists(): - out.mkdir(parents=True) + out.mkdir(parents=True, exist_ok=True) + # we set exist_ok=True so we avoid multiprocess race conditions return out def get_output_file_path(self, file_name) -> Path: diff --git a/activitysim/core/configuration/logit.py b/activitysim/core/configuration/logit.py index a7c615d0c..a97143f2d 100644 --- a/activitysim/core/configuration/logit.py +++ b/activitysim/core/configuration/logit.py @@ -212,6 +212,14 @@ class LocationComponentSettings(BaseLogitComponentSettings): SAMPLE_SIZE: int """This many candidate alternatives will be sampled for each choice.""" + ESTIMATION_SAMPLE_SIZE: int = -1 + """ + The number of alternatives to sample for estimation mode. + If zero, then all alternatives are used. If negative, then the regular + `SAMPLE_SIZE` is used. + Truth alternative will be included in the sample. + """ + LOGSUM_SETTINGS: Path | None = None """ Settings for the logsum computation. @@ -263,15 +271,6 @@ class TourLocationComponentSettings(LocationComponentSettings, extra="forbid"): ORIG_ZONE_ID: str | None = None """This setting appears to do nothing...""" - ESTIMATION_SAMPLE_SIZE: int = 0 - """ - The number of alternatives to sample for estimation mode. - If zero, then all alternatives are used. - Truth alternative will be included in the sample. - Larch does not yet support sampling alternatives for estimation, - but this setting is still helpful for estimation mode runtime. - """ - class TourModeComponentSettings(TemplatedLogitComponentSettings, extra="forbid"): MODE_CHOICE_LOGSUM_COLUMN_NAME: str | None = None diff --git a/activitysim/core/estimation.py b/activitysim/core/estimation.py index 6e02aca76..5b29de696 100644 --- a/activitysim/core/estimation.py +++ b/activitysim/core/estimation.py @@ -5,11 +5,14 @@ import logging import os import shutil +from pathlib import Path +from typing import Literal import pandas as pd -import yaml +from pydantic import model_validator from activitysim.core import simulate, workflow +from activitysim.core.configuration import PydanticReadable from activitysim.core.configuration.base import PydanticBase from activitysim.core.util import reindex from activitysim.core.yaml_tools import safe_dump @@ -18,22 +21,188 @@ ESTIMATION_SETTINGS_FILE_NAME = "estimation.yaml" +ESTIMATION_TABLE_RECIPES = { + "interaction_sample_simulate": { + "omnibus_tables": { + "choosers_combined": ["choices", "override_choices", "choosers"], + "alternatives_combined": [ + "interaction_sample_alternatives", + "interaction_expression_values", + ], + }, + "omnibus_tables_append_columns": ["choosers_combined", "alternatives_combined"], + }, + "interaction_simulate": { + "omnibus_tables": { + "choosers_combined": ["choices", "override_choices", "choosers"], + "alternatives_combined": ["interaction_expression_values"], + }, + "omnibus_tables_append_columns": ["choosers_combined", "alternatives_combined"], + }, + "simple_simulate": { + "omnibus_tables": { + "values_combined": [ + "choices", + "override_choices", + "expression_values", + "choosers", + ] + }, + "omnibus_tables_append_columns": ["values_combined"], + }, + "cdap_simulate": { + "omnibus_tables": { + "values_combined": ["choices", "override_choices", "choosers"] + }, + "omnibus_tables_append_columns": ["values_combined"], + }, + "simple_probabilistic": { + "omnibus_tables": { + "values_combined": ["choices", "override_choices", "choosers", "probs"] + }, + "omnibus_tables_append_columns": ["values_combined"], + }, +} + + +def unlink_files(directory_path, file_types=("csv", "yaml", "parquet", "pkl")): + """ + Deletes existing files in directory_path with file_types extensions. + """ + if not os.path.exists(directory_path): + return -def unlink_files(directory_path, file_types=("csv", "yaml")): for file_name in os.listdir(directory_path): if file_name.endswith(file_types): file_path = os.path.join(directory_path, file_name) try: if os.path.isfile(file_path): os.unlink(file_path) - print(f"deleted {file_path}") + logger.debug(f"deleted {file_path}") except Exception as e: - print(e) + logger.error(e) + + +def estimation_enabled(state): + """ + Returns True if estimation.yaml exists in the configs directory. + """ + settings = state.filesystem.read_model_settings( + ESTIMATION_SETTINGS_FILE_NAME, mandatory=False + ) + return settings is not None + + +class SurveyTableConfig(PydanticBase): + file_name: str + index_col: str + + # The dataframe is stored in the loaded config dynamically but not given + # directly in the config file, as it's not a simple serializable object that + # can be written in a YAML file. + class Config: + arbitrary_types_allowed = True + + df: pd.DataFrame | None = None + + +class EstimationTableRecipeConfig(PydanticBase): + omnibus_tables: dict[str, list[str]] + omnibus_tables_append_columns: list[str] + + +class EstimationConfig(PydanticReadable): + SKIP_BUNDLE_WRITE_FOR: list[str] = [] + """List of bundle names to skip writing to disk. + + This is useful for saving disk space and decreasing runtime + if you do not care about the estimation output for all models. + """ + + EDB_FILETYPE: Literal["csv", "parquet", "pkl"] = "parquet" + """File type for dataframes written to the estimation data bundles. + + Options are 'csv', 'parquet', or 'pkl'. When set to 'parquet', if file + writing fails for any reason, it will fall back to 'pkl'. This typically + will happen when the data types in the dataframe are not compatible with + parquet (e.g. Python 'object' dtype with mixed format content). + + Legacy ActivitySim used 'csv' to maximize compatibility with other software. + As of version 1.4, the default changed to 'parquet', which is more efficient + and better preserves data types. + """ + + DELETE_MP_SUBDIRS: bool = True + """Flag to delete the multiprocessing subdirectories after coalescing the results. + + Typically only used for debugging purposes. + """ + + enable: bool = False + """Flag to enable estimation.""" + + bundles: list[str] = [] + """List of component names to create EDBs for.""" + + estimation_table_types: dict[str, str] = {} + """Mapping of component names to estimation table types. + + The keys of this mapping are the model component names, and the values are the + names of the estimation table recipes that should be used to generate the + estimation tables for the model component. The recipes are generally related + to the generic model types, such as 'simple_simulate', 'interaction_simulate', + 'interaction_sample_simulate', etc. + """ + + estimation_table_recipes: dict[str, EstimationTableRecipeConfig] = None + """This option has been removed from the user-facing configuration file. + + Mapping of estimation table recipe names to their configurations. + + The keys of this mapping are the names of the estimation table recipes. + The recipes are generally related to the generic model types, such as + 'simple_simulate', 'interaction_simulate', 'interaction_sample_simulate', + etc. The values are the configurations for the estimation table recipes. + """ + + @model_validator(mode="before") + def check_estimation_table_recipes(cls, values): + if ( + "estimation_table_recipes" in values + and values["estimation_table_recipes"] is not None + ): + raise ValueError( + "estimation_table_recipes is no longer an accepted input. Please delete it from your estimation.yaml file." + ) + return values + + survey_tables: dict[str, SurveyTableConfig] = {} + """Mapping of survey table names to their configurations. + + Each survey table should have a file name and an index column. These files + are where the survey data is read from while running in estimation mode.""" + + # pydantic class validator to ensure that the estimation_table_types + # dictionary is a valid dictionary with string keys and string values, and + # that all the values are in the estimation_table_recipes dictionary + @model_validator(mode="after") + def validate_estimation_table_types(self): + for key, value in self.estimation_table_types.items(): + if value not in ESTIMATION_TABLE_RECIPES: + raise ValueError( + f"estimation_table_types value '{value}' not in estimation_table_recipes" + ) + return self class Estimator: def __init__( - self, state: workflow.State, bundle_name, model_name, estimation_table_recipes + self, + state: workflow.State, + bundle_name: str, + model_name: str, + estimation_table_recipe: EstimationTableRecipeConfig, + settings: EstimationConfig, ): logger.info("Initialize Estimator for'%s'" % (model_name,)) @@ -41,8 +210,9 @@ def __init__( self.bundle_name = bundle_name self.model_name = model_name self.settings_name = model_name - self.estimation_table_recipes = estimation_table_recipes + self.estimation_table_recipe = estimation_table_recipe self.estimating = True + self.settings = settings # ensure the output data directory exists output_dir = self.output_directory() @@ -50,22 +220,21 @@ def __init__( os.makedirs(output_dir) # make directory if needed # delete estimation files - unlink_files(self.output_directory(), file_types=("csv", "yaml")) + unlink_files(self.output_directory()) if self.bundle_name != self.model_name: # kind of inelegant to always delete these, but ok as they are redundantly recreated for each sub model unlink_files( self.output_directory(bundle_directory=True), - file_types=("csv", "yaml"), ) # FIXME - not required? # assert 'override_choices' in self.model_settings, \ # "override_choices not found for %s in %s." % (model_name, ESTIMATION_SETTINGS_FILE_NAME) - self.omnibus_tables = self.estimation_table_recipes["omnibus_tables"] - self.omnibus_tables_append_columns = self.estimation_table_recipes[ - "omnibus_tables_append_columns" - ] + self.omnibus_tables = self.estimation_table_recipe.omnibus_tables + self.omnibus_tables_append_columns = ( + self.estimation_table_recipe.omnibus_tables_append_columns + ) self.tables = {} self.tables_to_cache = [ table_name @@ -139,6 +308,9 @@ def output_directory(self, bundle_directory=False): if self.bundle_name != self.model_name and not bundle_directory: dir = os.path.join(dir, self.model_name) + if self.state.settings.multiprocess: + dir = os.path.join(dir, self.state.get_injectable("pipeline_file_prefix")) + return dir def output_file_path(self, table_name, file_type=None, bundle_directory=False): @@ -150,7 +322,9 @@ def output_file_path(self, table_name, file_type=None, bundle_directory=False): if bundle_directory: file_name = f"{self.bundle_name}_{table_name}" else: - if self.model_name == self.bundle_name: + if "_coefficients" in table_name: + file_name = f"{table_name}" + elif self.model_name == self.bundle_name: file_name = f"{self.model_name}_{table_name}" else: file_name = f"{self.bundle_name}_{table_name}" @@ -160,8 +334,87 @@ def output_file_path(self, table_name, file_type=None, bundle_directory=False): return os.path.join(output_dir, file_name) + def write_parquet(self, df, file_path, index, append=False): + """Convert DF to be parquet compliant and write to disk""" + # Ensure column names are strings for parquet + df.columns = df.columns.astype(str) + + assert (not os.path.isfile(file_path)) or ( + append == True + ), f"file already exists: {file_path}" + + # Explicitly set the data types of the columns + for col_name, col_data in df.items(): + if "int" in str(col_data.dtype): + pass + elif ( + col_data.dtype == "float16" + ): # Handle halffloat type not allowed in parquet + df[col_name] = col_data.astype("float32") + elif "float" in str(col_data.dtype): + pass + elif col_data.dtype == "bool": + pass + elif col_data.dtype == "object": + # first try converting to numeric, if that fails, convert to string + try: + df[col_name] = pd.to_numeric(col_data, errors="raise") + except ValueError: + df[col_name] = col_data.astype(str) + else: + # Convert any other unsupported types to string + df[col_name] = col_data.astype(str) + + self.debug(f"writing table: {file_path}") + # want parquet file to be exactly the same as df read from csv + # therefore we are resetting the index into a column if we want to keep it + # if we don't want to keep it, we are dropping it on write with index=False + if index: + if df.index.name in df.columns: + # replace old index with new one + df.drop(columns=[df.index.name], inplace=True) + df = df.reset_index(drop=False) + + if append and os.path.isfile(file_path): + df.to_parquet(file_path, engine="fastparquet", append=True, index=False) + else: + df.to_parquet(file_path, index=False) + + def write_pickle(self, df, file_path, index, append=False): + """Write DF to disk as pickle""" + file_path = file_path.replace(".csv", ".pkl").replace(".parquet", ".pkl") + assert file_path.endswith(".pkl") + + # want pickle file to be exactly the same as df read from csv + # therefore we are resetting the index into a column if we want to keep it + # if we don't want to keep it, we are dropping it on write with index=False + if index: + if df.index.name in df.columns: + # replace old index with new one + df.drop(columns=[df.index.name], inplace=True) + df = df.reset_index(drop=False) + else: + df = df.reset_index(drop=True) + + assert (not os.path.isfile(file_path)) or ( + append == True + ), f"file already exists: {file_path}" + + if append and os.path.isfile(file_path): + # read the previous df and concat + prev_df = pd.read_pickle(file_path) + df = pd.concat([prev_df, df]) + + df.to_pickle(file_path) + def write_table( - self, df, table_name, index=True, append=True, bundle_directory=False + self, + df, + table_name, + index=True, + append=True, + bundle_directory=False, + filetype="csv", ): """ @@ -173,6 +426,8 @@ def write_table( index: booelan append: boolean bundle_directory: boolean + filetype: str + csv or parquet or pkl """ @@ -186,21 +441,38 @@ def cache_table(df, table_name, append): else: self.tables[table_name] = df.copy() - def write_table(df, table_name, index, append, bundle_directory): - if table_name.endswith(".csv"): - # pass through filename without adding model or bundle name prefix - file_path = os.path.join( - self.output_directory(bundle_directory), table_name - ) - else: - file_path = self.output_file_path(table_name, "csv", bundle_directory) + def write_table(df, table_name, index, append, bundle_directory, filetype): + # remove file extension if present + table_name = Path(table_name).stem + # set new full file path with desired file type + file_path = self.output_file_path(table_name, filetype, bundle_directory) + + # check if file exists file_exists = os.path.isfile(file_path) if file_exists and not append: raise RuntimeError( "write_table %s append=False and file exists: %s" % (table_name, file_path) ) - df.to_csv(file_path, mode="a", index=index, header=(not file_exists)) + if filetype == "csv": + # check if index is in columns and drop it if so + if index and (df.index.name in df.columns): + df.drop(columns=df.index.name, inplace=True) + df.to_csv(file_path, mode="a", index=index, header=(not file_exists)) + elif filetype == "parquet": + try: + self.write_parquet(df, file_path, index, append) + except Exception as e: + logger.error( + f"Error writing parquet: {file_path} because {e}, falling back to pickle" + ) + self.write_pickle(df, file_path, index, append) + elif filetype == "pkl": + self.write_pickle(df, file_path, index, append) + else: + raise RuntimeError( + f"Unsupported filetype: {filetype}, allowed options are csv, parquet, pkl" + ) assert self.estimating @@ -213,18 +485,14 @@ def write_table(df, table_name, index, append, bundle_directory): self.debug("write_table cache: %s" % table_name) if write: - write_table(df, table_name, index, append, bundle_directory) + write_table(df, table_name, index, append, bundle_directory, filetype) self.debug("write_table write: %s" % table_name) def write_omnibus_table(self): if len(self.omnibus_tables) == 0: return - settings = self.state.filesystem.read_model_settings( - ESTIMATION_SETTINGS_FILE_NAME, mandatory=False - ) - - edbs_to_skip = settings.get("SKIP_BUNDLE_WRITE_FOR", []) + edbs_to_skip = self.settings.SKIP_BUNDLE_WRITE_FOR if self.bundle_name in edbs_to_skip: self.debug(f"Skipping write to disk for {self.bundle_name}") return @@ -252,16 +520,53 @@ def write_omnibus_table(self): else: df = pd.concat([self.tables[t] for t in table_names], axis=concat_axis) + # remove duplicated columns, keeping the first instance + df = df.loc[:, ~df.columns.duplicated()] + + # set index if not already set according to lowest level heirarchy + # df missing index is typically coming from interaction_simulate expression values + # important for sorting and thus for multiprocessing to be consistent with single + if df.index.name is None: + if "trip_id" in df.columns: + df.set_index("trip_id", inplace=True) + elif "tour_id" in df.columns: + df.set_index("tour_id", inplace=True) + elif "person_id" in df.columns: + df.set_index("person_id", inplace=True) + elif "household_id" in df.columns: + df.set_index("household_id", inplace=True) + else: + RuntimeError( + f"No index column found in omnibus table {omnibus_table}: {df}" + ) + self.debug(f"sorting tables: {table_names}") df.sort_index(ascending=True, inplace=True, kind="mergesort") - file_path = self.output_file_path(omnibus_table, "csv") - assert not os.path.isfile(file_path) + filetype = self.settings.EDB_FILETYPE - self.debug(f"writing table: {file_path}") - df.to_csv(file_path, mode="a", index=True, header=True) + if filetype == "csv": + file_path = self.output_file_path(omnibus_table, "csv") + assert not os.path.isfile(file_path) + + self.debug(f"writing table: {file_path}") + # check if index is in columns and drop it if so + if df.index.name in df.columns: + df.drop(columns=df.index.name, inplace=True) + df.to_csv(file_path, mode="a", index=True, header=True) - self.debug("write_omnibus_choosers: %s" % file_path) + elif filetype == "parquet": + file_path = self.output_file_path(omnibus_table, "parquet") + self.write_parquet(df, file_path, index=True, append=False) + + elif filetype == "pkl": + file_path = self.output_file_path(omnibus_table, "pkl") + self.write_pickle(df, file_path, index=True, append=False) + + else: + raise RuntimeError(f"Unsupported filetype: {filetype}") + + self.debug("wrote_omnibus_choosers: %s" % file_path) def write_dict(self, d, dict_name, bundle_directory): assert self.estimating @@ -304,33 +609,48 @@ def write_coefficients( base_file_name = os.path.basename(file_name) assert self.estimating - self.write_table(coefficients_df, base_file_name, append=False) + self.write_table(coefficients_df, base_file_name, append=False, filetype="csv") def write_coefficients_template(self, model_settings): assert self.estimating if isinstance(model_settings, PydanticBase): - model_settings = model_settings.dict() + model_settings = model_settings.model_dump() coefficients_df = simulate.read_model_coefficient_template( self.state.filesystem, model_settings ) tag = "coefficients_template" - self.write_table(coefficients_df, tag, append=False) + self.write_table(coefficients_df, tag, append=False, filetype="csv") def write_choosers(self, choosers_df): - self.write_table(choosers_df, "choosers", append=True) + self.write_table( + choosers_df, + "choosers", + append=True, + filetype=self.settings.EDB_FILETYPE, + ) def write_choices(self, choices): if isinstance(choices, pd.Series): choices = choices.to_frame(name="model_choice") assert list(choices.columns) == ["model_choice"] - self.write_table(choices, "choices", append=True) + self.write_table( + choices, + "choices", + append=True, + filetype=self.settings.EDB_FILETYPE, + ) def write_override_choices(self, choices): if isinstance(choices, pd.Series): choices = choices.to_frame(name="override_choice") assert list(choices.columns) == ["override_choice"] - self.write_table(choices, "override_choices", append=True) + self.write_table( + choices, + "override_choices", + append=True, + filetype=self.settings.EDB_FILETYPE, + ) def write_constants(self, constants): self.write_dict(self, constants, "model_constants") @@ -368,7 +688,7 @@ def write_model_settings( ) assert not os.path.isfile(file_path) with open(file_path, "w") as f: - safe_dump(model_settings.dict(), f) + safe_dump(model_settings.model_dump(), f) else: if "include_settings" in model_settings: file_path = self.output_file_path( @@ -386,68 +706,21 @@ def write_model_settings( model_settings, "inherited_model_settings", bundle_directory ) - def melt_alternatives(self, df): - alt_id_name = self.alt_id_column_name - - assert alt_id_name is not None, ( - "alt_id not set. Did you forget to call set_alt_id()? (%s)" - % self.model_name - ) - assert ( - alt_id_name in df - ), "alt_id_column_name '%s' not in alternatives table (%s)" % ( - alt_id_name, - self.model_name, - ) - - variable_column = "variable" - - # alt_dest util_dist_0_1 util_dist_1_2 ... - # person_id ... - # 31153 1 1.0 0.75 ... - # 31153 2 1.0 0.46 ... - # 31153 3 1.0 0.28 ... - - if df.index.name is not None: - chooser_name = df.index.name - assert self.chooser_id_column_name in (chooser_name, None) - df = df.reset_index() - else: - assert self.chooser_id_column_name is not None - chooser_name = self.chooser_id_column_name - assert chooser_name in df - - # mergesort is the only stable sort, and we want the expressions to appear in original df column order - melt_df = ( - pd.melt(df, id_vars=[chooser_name, alt_id_name]) - .sort_values(by=chooser_name, kind="mergesort") - .rename(columns={"variable": variable_column}) - ) - - # person_id,alt_dest,expression,value - # 31153,1,util_dist_0_1,1.0 - # 31153,2,util_dist_0_1,1.0 - # 31153,3,util_dist_0_1,1.0 - - melt_df = melt_df.set_index( - [chooser_name, variable_column, alt_id_name] - ).unstack(2) - melt_df.columns = melt_df.columns.droplevel(0) - melt_df = melt_df.reset_index(1) - - # person_id,expression,1,2,3,4,5,... - # 31153,util_dist_0_1,0.75,0.46,0.27,0.63,0.48,... - # 31153,util_dist_1_2,0.0,0.0,0.0,0.0,0.0,... - # 31153,util_dist_2_3,0.0,0.0,0.0,0.0,0.0,... - - return melt_df - def write_interaction_expression_values(self, df): - df = self.melt_alternatives(df) - self.write_table(df, "interaction_expression_values", append=True) + self.write_table( + df, + "interaction_expression_values", + append=True, + filetype=self.settings.EDB_FILETYPE, + ) def write_expression_values(self, df): - self.write_table(df, "expression_values", append=True) + self.write_table( + df, + "expression_values", + append=True, + filetype=self.settings.EDB_FILETYPE, + ) def write_alternatives(self, alternatives_df, bundle_directory=False): self.write_table( @@ -458,15 +731,19 @@ def write_alternatives(self, alternatives_df, bundle_directory=False): ) def write_interaction_sample_alternatives(self, alternatives_df): - alternatives_df = self.melt_alternatives(alternatives_df) self.write_table( - alternatives_df, "interaction_sample_alternatives", append=True + alternatives_df, + "interaction_sample_alternatives", + append=True, + filetype=self.settings.EDB_FILETYPE, ) def write_interaction_simulate_alternatives(self, interaction_df): - interaction_df = self.melt_alternatives(interaction_df) self.write_table( - interaction_df, "interaction_simulate_alternatives", append=True + interaction_df, + "interaction_simulate_alternatives", + append=True, + filetype=self.settings.EDB_FILETYPE, ) def get_survey_values(self, model_values, table_name, column_names): @@ -498,9 +775,11 @@ class EstimationManager(object): def __init__(self): self.settings_initialized = False self.bundles = [] - self.estimation_table_recipes = {} - self.model_estimation_table_types = {} + self.estimation_table_recipes: dict[str, EstimationTableRecipeConfig] = {} + self.estimation_table_types: dict[str, str] = {} self.estimating = {} + self.settings = None + self.enabled = False def initialize_settings(self, state): # FIXME - can't we just initialize in init and handle no-presence of settings file as not enabled @@ -508,46 +787,53 @@ def initialize_settings(self, state): return assert not self.settings_initialized - settings = state.filesystem.read_model_settings( - ESTIMATION_SETTINGS_FILE_NAME, mandatory=False + self.settings = EstimationConfig.read_settings_file( + state.filesystem, ESTIMATION_SETTINGS_FILE_NAME, mandatory=False ) - if not settings: - # if the model settings file is not found, we are not in estimation mode. + if not self.settings: + # if the model self.settings file is not found, we are not in estimation mode. self.enabled = False else: - self.enabled = settings.get("enable", "True") - self.bundles = settings.get("bundles", []) + self.enabled = self.settings.enable + self.bundles = self.settings.bundles - self.model_estimation_table_types = settings.get( - "model_estimation_table_types", {} - ) - self.estimation_table_recipes = settings.get("estimation_table_recipes", {}) + self.estimation_table_types = self.settings.estimation_table_types + self.estimation_table_recipes = ESTIMATION_TABLE_RECIPES if self.enabled: - self.survey_tables = settings.get("survey_tables", {}) + self.survey_tables = self.settings.survey_tables for table_name, table_info in self.survey_tables.items(): assert ( - "file_name" in table_info - ), "No file name specified for survey_table '%s' in %s" % ( - table_name, - ESTIMATION_SETTINGS_FILE_NAME, - ) + table_info.file_name + ), f"No file name specified for survey_table '{table_name}' in {ESTIMATION_SETTINGS_FILE_NAME}" file_path = state.filesystem.get_data_file_path( - table_info["file_name"], mandatory=True + table_info.file_name, mandatory=True ) assert os.path.exists( file_path ), "File for survey table '%s' not found: %s" % (table_name, file_path) df = pd.read_csv(file_path) - index_col = table_info.get("index_col") + index_col = table_info.index_col if index_col is not None: assert ( index_col in df.columns ), "Index col '%s' not in survey_table '%s' in file: %s % (index_col, table_name, file_path)" df.set_index(index_col, inplace=True) + # if multiprocessing then only return the households that are in the pipeline + if state.settings.multiprocess: + pipeline_hh_ids = state.get_table("households").index + if table_name == "households": + df = df.reindex(pipeline_hh_ids) + assert pipeline_hh_ids.equals( + df.index + ), "household_ids not equal between survey and pipeline" + else: + assert "household_id" in df.columns + df = df[df.household_id.isin(pipeline_hh_ids)] + # add the table df to survey_tables - table_info["df"] = df + table_info.df = df self.settings_initialized = True @@ -589,13 +875,13 @@ def begin_estimation( ), "Cant begin estimating %s - already estimating that model." % (model_name,) assert ( - bundle_name in self.model_estimation_table_types + bundle_name in self.estimation_table_types ), "No estimation_table_type for %s in %s." % ( bundle_name, ESTIMATION_SETTINGS_FILE_NAME, ) - model_estimation_table_type = self.model_estimation_table_types[bundle_name] + model_estimation_table_type = self.estimation_table_types[bundle_name] assert ( model_estimation_table_type in self.estimation_table_recipes @@ -609,9 +895,10 @@ def begin_estimation( state, bundle_name, model_name, - estimation_table_recipes=self.estimation_table_recipes[ - model_estimation_table_type - ], + estimation_table_recipe=EstimationTableRecipeConfig( + **self.estimation_table_recipes[model_estimation_table_type] + ), + settings=self.settings, ) return self.estimating[model_name] @@ -626,7 +913,7 @@ def get_survey_table(self, table_name): "EstimationManager. get_survey_table: survey table '%s' not in survey_tables" % table_name ) - df = self.survey_tables[table_name].get("df") + df = self.survey_tables[table_name].df return df def get_survey_values(self, model_values, table_name, column_names): @@ -736,5 +1023,81 @@ def get_survey_values(self, model_values, table_name, column_names): return values[column_name] if column_name else values + def get_survey_destination_choices(self, state, choosers, trace_label): + """ + Returning the survey choices for the destination choice model. + This gets called from inside interaction_sample and is used to + ensure the choices include the override choices when sampling alternatives. + + Parameters + ---------- + state : workflow.State + trace_label : str + The model name. + + Returns + ------- + pd.Series : The survey choices for the destination choice model. + """ + if "accessibilities" in trace_label: + # accessibilities models to not have survey values + return None + + model = trace_label.split(".")[0] + if model == "school_location": + survey_choices = manager.get_survey_values( + choosers.index, "persons", "school_zone_id" + ) + elif model == "workplace_location": + survey_choices = manager.get_survey_values( + choosers.index, "persons", "workplace_zone_id" + ) + elif model in [ + "joint_tour_destination", + "atwork_subtour_destination", + "non_mandatory_tour_destination", + ]: + survey_choices = manager.get_survey_values( + choosers.index, "tours", "destination" + ) + elif model == "trip_destination": + survey_choices = manager.get_survey_values( + choosers.index, "trips", "destination" + ) + elif model == "parking_location": + # need to grab parking location column name from its settings + from activitysim.abm.models.parking_location_choice import ( + ParkingLocationSettings, + ) + + model_settings = ParkingLocationSettings.read_settings_file( + state.filesystem, + "parking_location_choice.yaml", + ) + survey_choices = manager.get_survey_values( + choosers.index, "trips", model_settings.ALT_DEST_COL_NAME + ) + else: + # since this fucntion is called from inside interaction_sample, + # we don't want to return anything for other models that aren't destination choice + # not implemented models include scheduling models and tour_od_choice + logger.debug(f"Not grabbing survey choices for {model}.") + return None + + if "presample.interaction_sample" in trace_label: + # presampling happens for destination choice of two-zone systems. + # They are pre-sampling TAZs but the survey value destination is MAZs. + land_use = state.get_table("land_use") + TAZ_col = "TAZ" if "TAZ" in land_use.columns else "taz" + assert ( + TAZ_col in land_use.columns + ), "Cannot find TAZ column in land_use table." + maz_to_taz_map = land_use[TAZ_col].to_dict() + # allow for unmapped TAZs + maz_to_taz_map[-1] = -1 + survey_choices = survey_choices.map(maz_to_taz_map) + + return survey_choices + manager = EstimationManager() diff --git a/activitysim/core/interaction_sample.py b/activitysim/core/interaction_sample.py index cf1048b0e..8db19a416 100644 --- a/activitysim/core/interaction_sample.py +++ b/activitysim/core/interaction_sample.py @@ -9,6 +9,7 @@ from activitysim.core import ( chunk, + estimation, interaction_simulate, logit, simulate, @@ -500,6 +501,41 @@ def _interaction_sample( chunk_sizer.log_df(trace_label, "choices_df", choices_df) + if estimation.manager.enabled and sample_size > 0: + # we need to ensure chosen alternative is included in the sample + survey_choices = estimation.manager.get_survey_destination_choices( + state, choosers, trace_label + ) + if survey_choices is not None: + assert ( + survey_choices.index == choosers.index + ).all(), "survey_choices and choosers must have the same index" + survey_choices.name = alt_col_name + survey_choices = survey_choices.dropna().astype( + choices_df[alt_col_name].dtype + ) + + # merge all survey choices onto choices_df + probs_df = probs.reset_index().melt( + id_vars=[choosers.index.name], + var_name=alt_col_name, + value_name="prob", + ) + # probs are numbered 0..n-1 so we need to map back to alt ids + zone_map = pd.Series(alternatives.index).to_dict() + probs_df[alt_col_name] = probs_df[alt_col_name].map(zone_map) + + survey_choices = pd.merge( + survey_choices, + probs_df, + on=[choosers.index.name, alt_col_name], + how="left", + ) + survey_choices["rand"] = 0 + survey_choices["prob"].fillna(0, inplace=True) + choices_df = pd.concat([choices_df, survey_choices], ignore_index=True) + choices_df.sort_values(by=[choosers.index.name], inplace=True) + del probs chunk_sizer.log_df(trace_label, "probs", None) diff --git a/activitysim/core/steps/output.py b/activitysim/core/steps/output.py index b9d7cc13d..ea543c8aa 100644 --- a/activitysim/core/steps/output.py +++ b/activitysim/core/steps/output.py @@ -4,6 +4,9 @@ import logging import sys +import os +import shutil +from pathlib import Path import numpy as np import pandas as pd @@ -13,6 +16,7 @@ from activitysim.core import configuration, workflow from activitysim.core.workflow.checkpoint import CHECKPOINT_NAME +from activitysim.core.estimation import estimation_enabled, EstimationConfig logger = logging.getLogger(__name__) @@ -224,6 +228,144 @@ def write_data_dictionary(state: workflow.State) -> None: print(f"{info}\n", file=output_file) +def find_lowest_level_directories(starting_directory): + lowest_dirs = list() + + for root, dirs, files in os.walk(starting_directory): + if not dirs: + lowest_dirs.append(root) + + return lowest_dirs + + +def concat_and_write_edb(df_concat_dict, write_dir): + # concatenate the dataframes and output final file + for table_name, df_array in df_concat_dict.items(): + df = pd.concat(df_array) + + # sort the dataframe by index + if df.index.name is not None: + df = df.sort_index() + else: + df = df.sort_values(by=df.columns[0], kind="mergesort", ignore_index=True) + + if table_name.endswith(".csv"): + df.to_csv(os.path.join(write_dir, table_name), index=False) + elif table_name.endswith(".parquet"): + df.to_parquet(os.path.join(write_dir, table_name), index=True) + elif table_name.endswith(".pkl"): + df.to_pickle(os.path.join(write_dir, table_name)) + else: + raise ValueError(f"Unknown file type {table_name}") + + +def _coalesce_estimation_data_bundles(state): + """ + In estimation mode, estimation data bundles are written to separate subdirectories for each subprocess. + This model will go through each subdirectory and move the files to the parent directory. + This will only occur if the lowest level directory contains the multiprocess step names. + Only multiprocess step names are used because that's how EDBs are written in estimation mode. + """ + + logger.info("Coalescing Estimation Data Bundles") + + edb_dir = state.filesystem.get_output_dir("estimation_data_bundle") + estimation_settings = EstimationConfig.read_settings_file( + state.filesystem, "estimation.yaml", mandatory=True + ) + + lowest_dirs = find_lowest_level_directories(edb_dir) + + multiprocessing_step_names = [ + step.name for step in state.settings.multiprocess_steps + ] + lowest_dirs = [ + dir + for dir in lowest_dirs + if any(step in dir for step in multiprocessing_step_names) + ] + + if len(lowest_dirs) == 0: + logger.info("No estimation data bundles to coalesce") + return + + prev_edb = None + df_concat_dict = {} + + # loop through each lowest level directory + for dir in lowest_dirs: + logger.debug(f"Coalescing {dir}") + # get the parent directory + cur_edb = Path(dir).parent.absolute() + if prev_edb is None: + prev_edb = cur_edb + + # check if we have moved onto a new EDB + is_same_edb = cur_edb == prev_edb + + # if we have moved onto a new EDB, concatenate the dataframes and write the final files + if ( + (not is_same_edb) + and (len(df_concat_dict) > 0) + # and (len(df_concat_dict[list(df_concat_dict.keys())[0]]) > 1) + ): + concat_and_write_edb(df_concat_dict, prev_edb) + + # reset edb dir and dictionary + prev_edb = cur_edb + df_concat_dict = {} + + for i, file in enumerate(os.listdir(dir)): + + # get the file path + file_path = os.path.join(dir, file) + + # look for files that are duplicated across subprocesses + is_coefs_file = file.endswith(".csv") and "coef" in file + is_settings_file = file.endswith(".yaml") + is_spec_file = file.endswith(".csv") and ("spec" in file.lower()) + is_landuse_file = file.endswith("_landuse.csv") + is_size_terms_file = file.endswith("_size_terms.csv") + is_duplicate_file = ( + is_coefs_file + or is_spec_file + or is_settings_file + or is_landuse_file + or is_size_terms_file + ) + + if is_duplicate_file and not os.path.exists(os.path.join(cur_edb, file)): + # copy the file to the parent directory + shutil.copy(file_path, os.path.join(cur_edb, file)) + + if not is_duplicate_file: + # read file and store in dictionary + if file.endswith(".csv"): + df = pd.read_csv(file_path, low_memory=False) + elif file.endswith(".parquet"): + df = pd.read_parquet(file_path) + elif file.endswith(".pkl"): + df = pd.read_pickle(file_path) + else: + raise ValueError( + f"Unknown file type found {file}, expect csv, parquet, or pkl" + ) + + if file in df_concat_dict.keys(): + df_concat_dict[file].append(df) + else: + df_concat_dict[file] = [df] + + # delete the directory now that we have gone through all the files + if estimation_settings.DELETE_MP_SUBDIRS: + shutil.rmtree(dir) + + # need to concatenate the last set of dataframes + concat_and_write_edb(df_concat_dict, cur_edb) + + return + + @workflow.step def write_tables(state: workflow.State) -> None: """ @@ -434,3 +576,22 @@ def map_func(x): parquet.write_table(dt, file_path) else: raise ValueError(f"unknown file_type {file_type}") + + +@workflow.step +def coalesce_estimation_data_bundles(state: workflow.State) -> None: + """ + In estimation mode, estimation data bundles are written to separate subdirectories for each subprocess. + This model will go through each subdirectory and concat / copy the files to the parent directory. + This will only occur if the lowest level directory contains the multiprocess step names. + Only multiprocess step names are used because that's how EDBs are written in estimation mode. + + """ + is_estimation = estimation_enabled(state) + if state.settings.multiprocess and is_estimation: + _coalesce_estimation_data_bundles(state) + else: + logger.info( + "Not in estimation mode or not using multiprocess. Nothing to coalesce." + ) + return diff --git a/activitysim/estimation/larch/__init__.py b/activitysim/estimation/larch/__init__.py index 37fb042fb..f1baa2404 100644 --- a/activitysim/estimation/larch/__init__.py +++ b/activitysim/estimation/larch/__init__.py @@ -1,7 +1,8 @@ -try: - import larch -except ImportError: - larch = None +from __future__ import annotations + +from typing import Iterable + +from packaging.version import Version from .cdap import * from .data_maker import * @@ -13,8 +14,50 @@ from .simple_simulate import * from .stop_frequency import * +try: + import larch as lx +except ImportError: + lx = None +else: + # if larch is installed, require larch version 6.0.0 or later + if Version(lx.__version__) < Version("6.0.0"): + # when installed from source without a full git history including version + # tags, sometimes development versions of larch default to version 0.1.devX + if not lx.__version__.startswith("0.1.dev"): + raise ImportError( + f"activitysim estimation mode requires larch version 6.0.0 or later. Found {lx.__version__}" + ) + + +def component_model(name: str | Iterable[str], *args, **kwargs): + """ + Load a component model from the estimation data bundle (EDB). + + Parameters + ---------- + name : str or iterable of str + The name of the model to load. If an iterable is provided, a ModelGroup + will be returned, which will be the collection of models named. + *args, **kwargs + Additional arguments and keyword arguments to pass to the model constructor. + Usually these will include `edb_directory` (a path to the EDB directory), + and `return_data` (a boolean indicating whether to return the data objects. -def component_model(name, *args, **kwargs): + Returns + ------- + Model or ModelGroup + The loaded model or ModelGroup. + Dict or list[Dict], optional + The data objects associated with the model. If `return_data` is True, this may + include the coefficients, chooser data, and alternative values, and possibly + other data objects depending on the model. If `name` is a single string, a + single data object will be returned. If `name` is an iterable, a list of data + objects will be returned, one for each model in the ModelGroup. Note these + data objects are primarily for the user to review, and are not the same + objects used by the Model or ModelGroup for estimation. If some data transformation + or manipulation is needed, it should be done on the data embedded in the + Model(s). + """ if isinstance(name, str): m = globals().get(f"{name}_model") if m: @@ -28,6 +71,6 @@ def component_model(name, *args, **kwargs): models.append(model) all_data.extend(data) if all_data: - return ModelGroup(models), all_data + return lx.ModelGroup(models), all_data else: - return ModelGroup(models) + return lx.ModelGroup(models) diff --git a/activitysim/estimation/larch/auto_ownership.py b/activitysim/estimation/larch/auto_ownership.py deleted file mode 100644 index b008683be..000000000 --- a/activitysim/estimation/larch/auto_ownership.py +++ /dev/null @@ -1,80 +0,0 @@ -import os -from typing import Collection - -import numpy as np -import pandas as pd -import yaml -from larch import DataFrames, Model, P, X -from larch.util import Dict - -from .general import ( - apply_coefficients, - dict_of_linear_utility_from_spec, - remove_apostrophes, -) -from .simple_simulate import simple_simulate_data - - -def auto_ownership_model( - name="auto_ownership", - edb_directory="output/estimation_data_bundle/{name}/", - return_data=False, -): - data = simple_simulate_data( - name=name, - edb_directory=edb_directory, - values_index_col="household_id", - ) - coefficients = data.coefficients - # coef_template = data.coef_template # not used - spec = data.spec - chooser_data = data.chooser_data - settings = data.settings - - altnames = list(spec.columns[3:]) - altcodes = range(len(altnames)) - - chooser_data = remove_apostrophes(chooser_data) - chooser_data.fillna(0, inplace=True) - - # Remove choosers with invalid observed choice - chooser_data = chooser_data[chooser_data["override_choice"] >= 0] - - m = Model() - # One of the alternatives is coded as 0, so - # we need to explicitly initialize the MNL nesting graph - # and set to root_id to a value other than zero. - m.initialize_graph(alternative_codes=altcodes, root_id=99) - - m.utility_co = dict_of_linear_utility_from_spec( - spec, - "Label", - dict(zip(altnames, altcodes)), - ) - - apply_coefficients(coefficients, m) - - d = DataFrames( - co=chooser_data, - av=True, - alt_codes=altcodes, - alt_names=altnames, - ) - - m.dataservice = d - m.choice_co_code = "override_choice" - - if return_data: - return ( - m, - Dict( - edb_directory=data.edb_directory, - chooser_data=chooser_data, - coefficients=coefficients, - spec=spec, - altnames=altnames, - altcodes=altcodes, - ), - ) - - return m diff --git a/activitysim/estimation/larch/cdap.py b/activitysim/estimation/larch/cdap.py index 60fcce6fe..ba63ec3c3 100644 --- a/activitysim/estimation/larch/cdap.py +++ b/activitysim/estimation/larch/cdap.py @@ -9,24 +9,23 @@ import numpy as np import pandas as pd +import xarray as xr import yaml from ...abm.models.util import cdap from .general import apply_coefficients, explicit_value_parameters try: - import larch + import larch as lx except ImportError: - larch = None + lx = None logger_name = "larch" else: - from larch import DataFrames, Model, P, X - from larch.log import logger_name - from larch.model.model_group import ModelGroup + from larch import P, X from larch.util import Dict -_logger = logging.getLogger(logger_name) +_logger = logging.getLogger("larch") MAX_HHSIZE = 5 @@ -112,11 +111,17 @@ def cdap_base_utility_by_person( if n_persons == 1: for i in spec.index: if not pd.isna(spec.loc[i, "M"]): - model.utility_co[1] += X(spec.Expression[i]) * P(spec.loc[i, "M"]) + model.utility_co[1] += X(spec.Expression[i].lstrip("@")) * P( + spec.loc[i, "M"] + ) if not pd.isna(spec.loc[i, "N"]): - model.utility_co[2] += X(spec.Expression[i]) * P(spec.loc[i, "N"]) + model.utility_co[2] += X(spec.Expression[i].lstrip("@")) * P( + spec.loc[i, "N"] + ) if not pd.isna(spec.loc[i, "H"]): - model.utility_co[3] += X(spec.Expression[i]) * P(spec.loc[i, "H"]) + model.utility_co[3] += X(spec.Expression[i].lstrip("@")) * P( + spec.loc[i, "H"] + ) else: if alts is None: alts = generate_alternatives(n_persons, add_joint) @@ -129,7 +134,9 @@ def cdap_base_utility_by_person( x = apply_replacements( spec.Expression[i], f"p{pnum}", value_tokens ) - model.utility_co[anum] += X(x) * P(spec.loc[i, aname[z]]) + model.utility_co[anum] += X(x.lstrip("@")) * P( + spec.loc[i, aname[z]] + ) def interact_pattern(n_persons, select_persons, tag): @@ -281,7 +288,7 @@ def cdap_joint_tour_utility(model, n_persons, alts, joint_coef, values): expression_value = "&".join(expression_list) # FIXME only apply to alternative if dependency satisfied - bug + raise NotImplementedError("bug") model.utility_co[anum] += X(expression_value) * P(coefficient) elif "_px" in expression: @@ -289,7 +296,7 @@ def cdap_joint_tour_utility(model, n_persons, alts, joint_coef, values): dependency_name = row.dependency.replace("x", str(pnum)) expression = row.Expression.replace("x", str(pnum)) # FIXME only apply to alternative if dependency satisfied - bug + raise NotImplementedError("bug") model.utility_co[anum] += X(expression) * P(coefficient) else: @@ -335,48 +342,25 @@ def cdap_split_data(households, values, add_joint): return cdap_data -def cdap_dataframes(households, values, add_joint): +def cdap_dataframes(households, values, add_joint) -> dict[int, lx.Dataset]: data = cdap_split_data(households, values, add_joint) dfs = {} for hhsize in data.keys(): alts = generate_alternatives(hhsize, add_joint) - dfs[hhsize] = DataFrames( - co=data[hhsize], - alt_names=alts.keys(), - alt_codes=alts.values(), - av=1, - ch=data[hhsize].override_choice.map(alts), + dfs[hhsize] = lx.Dataset.construct.from_idco( + data[hhsize], + alts=dict(zip(alts.values(), alts.keys())), + ) + # convert override_choice to alternative code from alternative name + dfs[hhsize]["override_choice"] = xr.DataArray( + np.vectorize(alts.get)(dfs[hhsize].override_choice.data), + coords=dfs[hhsize].override_choice.coords, + dims=dfs[hhsize].override_choice.dims, + name="override_choice", ) return dfs -# def _cdap_model(households, values, spec1, interaction_coef, coefficients): -# cdap_data = cdap_dataframes(households, values) -# m = {} -# _logger.info(f"building for model 1") -# m[1] = Model(dataservice=cdap_data[1]) -# cdap_base_utility_by_person(m[1], n_persons=1, spec=spec1) -# m[1].choice_any = True -# m[1].availability_any = True -# -# # Add cardinality into interaction_coef if not present -# if 'cardinality' not in interaction_coef: -# interaction_coef['cardinality'] = interaction_coef['interaction_ptypes'].str.len() -# for s in [2, 3, 4, 5]: -# _logger.info(f"building for model {s}") -# m[s] = Model(dataservice=cdap_data[s]) -# alts = generate_alternatives(s) -# cdap_base_utility_by_person(m[s], s, spec1, alts, values.columns) -# cdap_interaction_utility(m[s], s, alts, interaction_coef, coefficients) -# m[s].choice_any = True -# m[s].availability_any = True -# -# result = ModelGroup(m.values()) -# explicit_value_parameters(result) -# apply_coefficients(coefficients, result) -# return result - - def cdap_data( name="cdap", edb_directory="output/estimation_data_bundle/{name}/", @@ -394,11 +378,22 @@ def cdap_data( raise FileNotFoundError(edb_directory) def read_csv(filename, **kwargs): - filename = filename.format(name=name) - return pd.read_csv(os.path.join(edb_directory, filename), **kwargs) + filename = Path(edb_directory).joinpath(filename.format(name=name)).resolve() + if filename.with_suffix(".parquet").exists(): + if "comment" in kwargs: + del kwargs["comment"] + print(f"Reading {filename.with_suffix('.parquet')}") + df = pd.read_parquet(filename.with_suffix(".parquet"), **kwargs) + if df.index.name is not None: + # want the data to be read in the same as csv format -- without the index + df = df.reset_index(drop=False) + return df + print(f"Reading {filename}") + return pd.read_csv(filename, **kwargs) def read_yaml(filename, **kwargs): filename = filename.format(name=name) + print(f"Reading {os.path.join(edb_directory, filename)}") with open(os.path.join(edb_directory, filename), "rt") as f: return yaml.load(f, Loader=yaml.SafeLoader, **kwargs) @@ -442,7 +437,7 @@ def read_yaml(filename, **kwargs): except FileNotFoundError: joint_coef = None add_joint = False - print("Including joint tour utiltiy?:", add_joint) + print("Including joint tour utility?:", add_joint) spec1 = read_csv(spec1_file, comment="#") values = read_csv(chooser_data_file, comment="#") @@ -499,13 +494,17 @@ def cdap_model( interaction_coef = d.interaction_coef coefficients = d.coefficients add_joint = d.add_joint + extra_vars = d.settings.get("CONSTANTS", {}) cdap_dfs = cdap_dataframes(households, values, add_joint) m = {} _logger.info(f"building for model 1") - m[1] = Model(dataservice=cdap_dfs[1]) + m[1] = lx.Model( + datatree=cdap_dfs[1].dc.as_tree("df", extra_vars=extra_vars), + compute_engine="numba", + ) cdap_base_utility_by_person(m[1], n_persons=1, spec=spec1) - m[1].choice_any = True + m[1].choice_co_code = "override_choice" m[1].availability_any = True # Add cardinality into interaction_coef if not present @@ -516,16 +515,16 @@ def cdap_model( for s in range(2, MAX_HHSIZE + 1): # for s in [2, 3, 4, 5]: _logger.info(f"building for model {s}") - m[s] = Model(dataservice=cdap_dfs[s]) + m[s] = lx.Model(datatree=cdap_dfs[s].dc.as_tree("df", extra_vars=extra_vars)) alts = generate_alternatives(s, add_joint) cdap_base_utility_by_person(m[s], s, spec1, alts, values.columns) cdap_interaction_utility(m[s], s, alts, interaction_coef, coefficients) # if add_joint: # cdap_joint_tour_utility(m[s], s, alts, d.joint_coef, values) - m[s].choice_any = True + m[s].choice_co_code = "override_choice" m[s].availability_any = True - model = ModelGroup(m.values()) + model = lx.ModelGroup(m.values()) explicit_value_parameters(model) apply_coefficients(coefficients, model) if return_data: diff --git a/activitysim/estimation/larch/general.py b/activitysim/estimation/larch/general.py index 14f8bd3f6..cfb81c756 100644 --- a/activitysim/estimation/larch/general.py +++ b/activitysim/estimation/larch/general.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import logging import os from pathlib import Path @@ -7,18 +9,17 @@ import pandas as pd try: - import larch + # Larch is an optional dependency, and we don't want to fail when importing + # this module simply because larch is not installed. + import larch as lx except ImportError: - larch = None - logger_name = "larch" + lx = None else: - from larch import DataFrames, Model, P, X # noqa: F401 - from larch.log import logger_name - from larch.model.abstract_model import AbstractChoiceModel + from larch import Model, P, X # noqa: F401 from larch.model.tree import NestingTree from larch.util import Dict # noqa: F401 -_logger = logging.getLogger(logger_name) +_logger = logging.getLogger("larch") def cv_to_ca(alt_values, dtype="float64", required_labels=None): @@ -74,7 +75,12 @@ def cv_to_ca(alt_values, dtype="float64", required_labels=None): x_ca_tall = x_ca_tall.astype(dtype) # Unstack the variables dimension - x_ca = x_ca_tall.unstack(1) + x_ca = ( + x_ca_tall.reset_index() + .drop_duplicates() + .set_index(x_ca_tall.index.names) + .unstack(1) + ) # Code above added a dummy top level to columns, remove it here. x_ca.columns = x_ca.columns.droplevel(0) @@ -111,7 +117,9 @@ def str_repr(x): return x -def linear_utility_from_spec(spec, x_col, p_col, ignore_x=(), segment_id=None): +def linear_utility_from_spec( + spec, x_col, p_col, ignore_x=(), segment_id=None, x_validator=None, expr_col=None +): """ Create a linear function from a spec DataFrame. @@ -136,6 +144,13 @@ def linear_utility_from_spec(spec, x_col, p_col, ignore_x=(), segment_id=None): The CHOOSER_SEGMENT_COLUMN_NAME identified for ActivitySim. This value is ignored if `p_col` is a string, and required if `p_col` is a dict. + x_validator : Container, optional + A container of valid values for the x_col. If given, the + x_col values will be used if they are `in` the x_validator, + otherwise the value from `expr_col` will be used. + expr_col : str, optional + The name of the column to use when the x_col value is not + in the x_validator. Returns ------- @@ -151,6 +166,8 @@ def linear_utility_from_spec(spec, x_col, p_col, ignore_x=(), segment_id=None): x_col, seg_p_col, ignore_x, + x_validator=x_validator, + expr_col=expr_col, ) * X(f"{segment_id}=={str_repr(segval)}") return sum(partial_utility.values()) parts = [] @@ -163,6 +180,16 @@ def linear_utility_from_spec(spec, x_col, p_col, ignore_x=(), segment_id=None): _x = None else: raise + + # when a validator is given, use the expression column if the original + # x value is not in the validator + if _x is not None and _x not in ignore_x: + if x_validator is not None and _x not in x_validator: + _x = spec.loc[i, expr_col] + if _x.startswith("@"): + _x = _x[1:] + + # handle the parameter... _p = spec.loc[i, p_col] if _x is not None and (_x not in ignore_x) and not pd.isna(_p): @@ -201,7 +228,9 @@ def linear_utility_from_spec(spec, x_col, p_col, ignore_x=(), segment_id=None): return sum(parts) -def dict_of_linear_utility_from_spec(spec, x_col, p_col, ignore_x=()): +def dict_of_linear_utility_from_spec( + spec, x_col, p_col, ignore_x=(), x_validator=None, expr_col=None +): """ Create a linear function from a spec DataFrame. @@ -223,6 +252,13 @@ def dict_of_linear_utility_from_spec(spec, x_col, p_col, ignore_x=()): The CHOOSER_SEGMENT_COLUMN_NAME identified for ActivitySim. This value is ignored if `p_col` is a string, and required if `p_col` is a dict. + x_validator : Container, optional + A container of valid values for the x_col. If given, the + x_col values will be used if they are `in` the x_validator, + otherwise the value from `expr_col` will be used. + expr_col : str, optional + The name of the column to use when the x_col value is not + in the x_validator. Returns ------- @@ -231,7 +267,12 @@ def dict_of_linear_utility_from_spec(spec, x_col, p_col, ignore_x=()): utils = {} for altname, altcode in p_col.items(): utils[altcode] = linear_utility_from_spec( - spec, x_col, altname, ignore_x=ignore_x + spec, + x_col, + altname, + ignore_x=ignore_x, + x_validator=x_validator, + expr_col=expr_col, ) return utils @@ -295,15 +336,7 @@ def explicit_value_parameters(model): except Exception: pass else: - model.set_value( - i, - value=j, - initvalue=j, - nullvalue=j, - minimum=j, - maximum=j, - holdfast=True, - ) + model.lock_value(i, value=j) def apply_coefficients(coefficients, model, minimum=None, maximum=None): @@ -333,25 +366,22 @@ def apply_coefficients(coefficients, model, minimum=None, maximum=None): ) coefficients["constrain"] = "F" assert coefficients.index.name == "coefficient_name" - assert isinstance(model, AbstractChoiceModel) + # assert isinstance(model, AbstractChoiceModel) explicit_value_parameters(model) for i in coefficients.itertuples(): - if i.Index in model: + if i.Index in model.pnames: holdfast = i.constrain == "T" if holdfast: - minimum_ = i.value - maximum_ = i.value + model.lock_value(i.Index, value=i.value) else: - minimum_ = minimum - maximum_ = maximum - model.set_value( - i.Index, - value=i.value, - initvalue=i.value, - holdfast=holdfast, - minimum=minimum_, - maximum=maximum_, - ) + model.set_value( + i.Index, + value=i.value, + initvalue=i.value, + holdfast=holdfast, + minimum=minimum, + maximum=maximum, + ) def apply_coef_template(linear_utility, template_col, condition=None): @@ -426,7 +456,8 @@ def make_nest(cfg, parent_code=0): else: make_nest(a, parent_code=nest_names_to_codes[cfg["name"]]) - make_nest(nesting_settings) + if nesting_settings: + make_nest(nesting_settings) return tree diff --git a/activitysim/estimation/larch/location_choice.py b/activitysim/estimation/larch/location_choice.py index 75814ff6f..5c50f6b73 100644 --- a/activitysim/estimation/larch/location_choice.py +++ b/activitysim/estimation/larch/location_choice.py @@ -1,7 +1,9 @@ from __future__ import annotations +import collections import os import pickle +import warnings from datetime import datetime from pathlib import Path from typing import Collection @@ -21,11 +23,12 @@ ) try: - import larch + # Larch is an optional dependency, and we don't want to fail when importing + # this module simply because larch is not installed. + import larch as lx except ImportError: - larch = None + lx = None else: - from larch import DataFrames, Model, P, X from larch.util import Dict @@ -43,6 +46,23 @@ def size_coefficients_from_spec(size_spec): return size_coef +LocationChoiceData = collections.namedtuple( + "LocationChoiceData", + field_names=[ + "edb_directory", + "alt_values", + "chooser_data", + "coefficients", + "landuse", + "spec", + "size_spec", + "master_size_spec", + "model_selector", + "settings", + ], +) + + def location_choice_model( name="workplace_location", edb_directory="output/estimation_data_bundle/{name}/", @@ -56,7 +76,60 @@ def location_choice_model( return_data=False, alt_values_to_feather=False, chunking_size=None, -): + *, + alts_in_cv_format=False, + availability_expression=None, +) -> lx.Model | tuple[lx.Model, LocationChoiceData]: + """ + Construct a location choice model from the estimation data bundle. + + Parameters + ---------- + name : str, optional + The name of the location choice model. The default is "workplace_location". + edb_directory : str, optional + The directory containing the estimation data bundle. The default is + "output/estimation_data_bundle/{name}/", where "{name}" is the name of + the model (see above). + coefficients_file : str, optional + The name of the coefficients file. The default is "{name}_coefficients.csv", + where "{name}" is the name of the model (see above). + spec_file : str, optional + The name of the spec file. The default is "{name}_SPEC.csv", where "{name}" + is the name of the model (see above). + size_spec_file : str, optional + The name of the size spec file. The default is "{name}_size_terms.csv", where + "{name}" is the name of the model (see above). + alt_values_file : str, optional + The name of the alternative values file. The default is + "{name}_alternatives_combined.csv", where "{name}" is the name of the model + (see above). + chooser_file : str, optional + The name of the chooser file. The default is "{name}_choosers_combined.csv", + where "{name}" is the name of the model (see above). + settings_file : str, optional + The name of the settings file. The default is "{name}_model_settings.yaml", + where "{name}" is the name of the model (see above). + landuse_file : str, optional + The name of the land use file. The default is "{name}_landuse.csv", where + "{name}" is the name of the model (see above). + return_data : bool, optional + If True, return a tuple containing the model and the location choice data. + The default is False, which returns only the model. + alt_values_to_feather : bool, default False + If True, convert the alternative values to a feather file. + chunking_size : int, optional + The number of rows per chunk for processing the alternative values. The default + is None, which processes all rows at once. + alts_in_cv_format : bool, default False + If True, the alternatives are in CV format. The default is False. + availability_expression : str, optional + The name of the availability expression. This is the "Label" from the + spec file that identifies an expression that evaluates truthy (non-zero) + if the alternative is available, and falsey otherwise. If not provided, + the code will attempt to infer the availability expression from the + expressions, but this is not reliable. The default is None. + """ model_selector = name.replace("_location", "") model_selector = model_selector.replace("_destination", "") model_selector = model_selector.replace("_subtour", "") @@ -66,8 +139,12 @@ def location_choice_model( edb_directory = edb_directory.format(name=name) def _read_csv(filename, **kwargs): - filename = filename.format(name=name) - return pd.read_csv(os.path.join(edb_directory, filename), **kwargs) + filename = Path(edb_directory).joinpath(filename.format(name=name)) + if filename.with_suffix(".parquet").exists(): + print("loading from", filename.with_suffix(".parquet")) + return pd.read_parquet(filename.with_suffix(".parquet"), **kwargs) + print("loading from", filename) + return pd.read_csv(filename, **kwargs) def _read_feather(filename, **kwargs): filename = filename.format(name=name) @@ -185,7 +262,10 @@ def _file_exists(filename): if label_column_name == "Expression": spec.insert(0, "Label", spec["Expression"].map(expression_labels)) - alt_values["variable"] = alt_values["variable"].map(expression_labels) + if alts_in_cv_format: + alt_values["variable"] = alt_values["variable"].map(expression_labels) + else: + alt_values = alt_values.rename(columns=expression_labels) label_column_name = "Label" if name == "trip_destination": @@ -200,44 +280,58 @@ def split(a, n): k, m = divmod(len(a), n) return (a[i * k + min(i, m) : (i + 1) * k + min(i + 1, m)] for i in range(n)) - # process x_ca with cv_to_ca with or without chunking - x_ca_pickle_file = "{name}_x_ca.pkl" - if chunking_size == None: - x_ca = cv_to_ca( - alt_values.set_index([chooser_index_name, alt_values.columns[1]]) - ) - elif _file_exists(x_ca_pickle_file): - # if pickle file from previous x_ca processing exist, load it to save time - time_start = datetime.now() - x_ca = _read_pickle(x_ca_pickle_file) - print( - f"x_ca data loaded from {name}_x_ca.fea - time elapsed {(datetime.now() - time_start).total_seconds()}" - ) - else: - time_start = datetime.now() - # calculate num_chunks based on chunking_size (or max number of rows per chunk) - num_chunks = int(len(alt_values) / chunking_size) - id_col_name = alt_values.columns[0] - all_ids = list(alt_values[id_col_name].unique()) - split_ids = list(split(all_ids, num_chunks)) - x_ca_list = [] - i = 0 - for chunk_ids in split_ids: - alt_values_i = alt_values[alt_values[id_col_name].isin(chunk_ids)] - x_ca_i = cv_to_ca( - alt_values_i.set_index([chooser_index_name, alt_values_i.columns[1]]) + if alts_in_cv_format: + # if alternatives are in CV format, convert them to CA format. + # The CV format has the chooser index as the first column and the variable name + # as the second column, with values for each alternative in the remaining columns. + # This format is inefficient and deprecated as of ActivitySim version 1.4. + + # process x_ca with cv_to_ca with or without chunking + x_ca_pickle_file = "{name}_x_ca.pkl" + if chunking_size == None: + x_ca = cv_to_ca( + alt_values.set_index([chooser_index_name, alt_values.columns[1]]) ) - x_ca_list.append(x_ca_i) + elif _file_exists(x_ca_pickle_file): + # if pickle file from previous x_ca processing exist, load it to save time + time_start = datetime.now() + x_ca = _read_pickle(x_ca_pickle_file) print( - f"\rx_ca_i compute done for chunk {i}/{num_chunks} - time elapsed {(datetime.now() - time_start).total_seconds()}" + f"x_ca data loaded from {name}_x_ca.fea - time elapsed {(datetime.now() - time_start).total_seconds()}" ) - i = i + 1 - x_ca = pd.concat(x_ca_list, axis=0) - # save final x_ca result as pickle file to save time for future data loading - _to_pickle(df=x_ca, filename=x_ca_pickle_file) - print( - f"x_ca compute done - time elapsed {(datetime.now() - time_start).total_seconds()}" - ) + else: + time_start = datetime.now() + # calculate num_chunks based on chunking_size (or max number of rows per chunk) + num_chunks = int(len(alt_values) / chunking_size) + id_col_name = alt_values.columns[0] + all_ids = list(alt_values[id_col_name].unique()) + split_ids = list(split(all_ids, num_chunks)) + x_ca_list = [] + i = 0 + for chunk_ids in split_ids: + alt_values_i = alt_values[alt_values[id_col_name].isin(chunk_ids)] + x_ca_i = cv_to_ca( + alt_values_i.set_index( + [chooser_index_name, alt_values_i.columns[1]] + ) + ) + x_ca_list.append(x_ca_i) + print( + f"\rx_ca_i compute done for chunk {i}/{num_chunks} - time elapsed {(datetime.now() - time_start).total_seconds()}" + ) + i = i + 1 + x_ca = pd.concat(x_ca_list, axis=0) + # save final x_ca result as pickle file to save time for future data loading + _to_pickle(df=x_ca, filename=x_ca_pickle_file) + print( + f"x_ca compute done - time elapsed {(datetime.now() - time_start).total_seconds()}" + ) + else: + # otherwise, we assume that the alternatives are already in the correct IDCA format with + # the cases and alternatives as the first two columns, and the variables as the + # remaining columns. This is a much more efficient format for the data. + assert alt_values.columns[0] == chooser_index_name + x_ca = alt_values.set_index([chooser_index_name, alt_values.columns[1]]) if CHOOSER_SEGMENT_COLUMN_NAME is not None: # label segments with names @@ -256,6 +350,10 @@ def split(a, n): total_size_segment += ( landuse[land_use_field] * size_spec.loc[segment, land_use_field] ) + if -1 in x_co["override_choice"].values: + print("Warning: override_choice contains -1, adding 0 to total_size") + print("You should probably remove data containing -1 from your data") + total_size_segment.loc[-1] = 0 x_co["total_size_" + segment] = total_size_segment.loc[ x_co["override_choice"] ].to_numpy() @@ -269,46 +367,91 @@ def split(a, n): # Remove choosers with invalid observed choice (appropriate total size value = 0) valid_observed_zone = x_co["total_size_segment"] > 0 + prior_n_cases = len(x_co) x_co = x_co[valid_observed_zone] x_ca = x_ca[x_ca.index.get_level_values(chooser_index_name).isin(x_co.index)] + after_n_cases = len(x_co) + if prior_n_cases != after_n_cases: + warnings.warn( + f"Removed {prior_n_cases - after_n_cases} choosers with invalid (zero-sized) observed choice", + stacklevel=2, + ) # Merge land use characteristics into CA data - try: - x_ca_1 = pd.merge(x_ca, landuse, on="zone_id", how="left") - except KeyError: - # Missing the zone_id variable? - # Use the alternative id's instead, which assumes no sampling of alternatives - x_ca_1 = pd.merge( - x_ca, - landuse, - left_on=x_ca.index.get_level_values(1), - right_index=True, - how="left", - ) - x_ca_1.index = x_ca.index + x_ca_1 = pd.merge( + x_ca, landuse, left_on=x_ca.index.get_level_values(1), right_index=True + ) + x_ca_1 = x_ca_1.sort_index() + + # relabel zones to reduce memory usage. + # We will core the original zone ids in a new column _original_zone_id, + # and create a new index with a dummy zone id. This way, if we have sampled + # only a subset of 30 zones, then we only need 30 unique alternatives in the + # data structure. + original_zone_ids = x_ca_1.index.get_level_values(1) + + dummy_zone_ids_index = pd.MultiIndex.from_arrays( + [ + x_ca_1.index.get_level_values(0), + x_ca_1.groupby(level=0).cumcount() + 1, + ], + names=[x_ca_1.index.names[0], "dummy_zone_id"], + ) + x_ca_1.index = dummy_zone_ids_index + x_ca_1["_original_zone_id"] = original_zone_ids + choice_def = {"choice_ca_var": "override_choice == _original_zone_id"} # Availability of choice zones - if "util_no_attractions" in x_ca_1: + if availability_expression is not None and availability_expression in x_ca_1: + av = ( + x_ca_1[availability_expression] + .apply(lambda x: False if x == 1 else True) + .astype(np.int8) + .to_xarray() + ) + elif "util_no_attractions" in x_ca_1: av = ( x_ca_1["util_no_attractions"] .apply(lambda x: False if x == 1 else True) .astype(np.int8) + .to_xarray() ) elif "@df['size_term']==0" in x_ca_1: av = ( x_ca_1["@df['size_term']==0"] .apply(lambda x: False if x == 1 else True) .astype(np.int8) + .to_xarray() + ) + elif expression_labels is not None and "@df['size_term']==0" in expression_labels: + av = ( + x_ca_1[expression_labels["@df['size_term']==0"]] + .apply(lambda x: False if x == 1 else True) + .astype(np.int8) + .to_xarray() ) else: - av = 1 + av = None assert len(x_co) > 0, "Empty chooser dataframe" assert len(x_ca_1) > 0, "Empty alternatives dataframe" - d = DataFrames(co=x_co, ca=x_ca_1, av=av) + d_ca = lx.Dataset.construct.from_idca(x_ca_1) + d_co = lx.Dataset.construct.from_idco(x_co) + d = d_ca.merge(d_co) + if av is not None: + d["_avail_"] = av + + m = lx.Model(datatree=d, compute_engine="numba") + + # One of the alternatives might be coded as 0, so + # we need to explicitly initialize the MNL nesting graph + # and set to root_id to a value other than zero. + root_id = 0 + if root_id in d.dc.altids(): + root_id = -1 + m.initialize_graph(alternative_codes=d.dc.altids(), root_id=root_id) - m = Model(dataservice=d) if len(spec.columns) == 4 and all( spec.columns == ["Label", "Description", "Expression", "coefficient"] ): @@ -317,6 +460,8 @@ def split(a, n): x_col="Label", p_col=spec.columns[-1], ignore_x=("local_dist",), + x_validator=d, + expr_col="Expression", ) elif ( len(spec.columns) == 4 @@ -329,6 +474,8 @@ def split(a, n): x_col="Label", p_col=spec.columns[-1], ignore_x=("local_dist",), + x_validator=d, + expr_col="Expression", ) else: m.utility_ca = linear_utility_from_spec( @@ -337,21 +484,23 @@ def split(a, n): p_col=SEGMENT_IDS, ignore_x=("local_dist",), segment_id=CHOOSER_SEGMENT_COLUMN_NAME, + x_validator=d, + expr_col="Expression", ) if CHOOSER_SEGMENT_COLUMN_NAME is None: assert len(size_spec) == 1 m.quantity_ca = sum( - P(f"{i}_{q}") * X(q) + lx.P(f"{i}_{q}") * lx.X(q) for i in size_spec.index for q in size_spec.columns if size_spec.loc[i, q] != 0 ) else: m.quantity_ca = sum( - P(f"{i}_{q}") - * X(q) - * X(f"{CHOOSER_SEGMENT_COLUMN_NAME}=={str_repr(SEGMENT_IDS[i])}") + lx.P(f"{i}_{q}") + * lx.X(q) + * lx.X(f"{CHOOSER_SEGMENT_COLUMN_NAME}=={str_repr(SEGMENT_IDS[i])}") for i in size_spec.index for q in size_spec.columns if size_spec.loc[i, q] != 0 @@ -360,12 +509,16 @@ def split(a, n): apply_coefficients(coefficients, m, minimum=-25, maximum=25) apply_coefficients(size_coef, m, minimum=-6, maximum=6) - m.choice_co_code = "override_choice" + m.choice_def(choice_def) + if av is not None: + m.availability_ca_var = "_avail_" + else: + m.availability_any = True if return_data: return ( m, - Dict( + LocationChoiceData( edb_directory=Path(edb_directory), alt_values=alt_values, chooser_data=chooser_data, diff --git a/activitysim/estimation/larch/mode_choice.py b/activitysim/estimation/larch/mode_choice.py index 74aa4d1be..f3d933d3f 100644 --- a/activitysim/estimation/larch/mode_choice.py +++ b/activitysim/estimation/larch/mode_choice.py @@ -6,6 +6,7 @@ import numpy as np import pandas as pd +import xarray as xr import yaml from .general import ( @@ -19,11 +20,12 @@ from .simple_simulate import construct_availability, simple_simulate_data try: - import larch + # Larch is an optional dependency, and we don't want to fail when importing + # this module simply because larch is not installed. + import larch as lx except ImportError: - larch = None + lx = None else: - from larch import DataFrames, Model, P, X from larch.util import Dict @@ -62,7 +64,10 @@ def mode_choice_model( purposes.remove("atwork") # Setup purpose specific models - m = {purpose: Model(graph=tree, title=purpose) for purpose in purposes} + m = { + purpose: lx.Model(graph=tree, title=purpose, compute_engine="numba") + for purpose in purposes + } for alt_code, alt_name in tree.elemental_names().items(): # Read in base utility function for this alt_name u = linear_utility_from_spec( @@ -70,42 +75,43 @@ def mode_choice_model( x_col="Label", p_col=alt_name, ignore_x=("#",), + x_validator=chooser_data.columns, + expr_col="Expression", ) for purpose in purposes: # Modify utility function based on template for purpose u_purp = sum( - (P(coef_template[purpose].get(i.param, i.param)) * i.data * i.scale) + (lx.P(coef_template[purpose].get(i.param, i.param)) * i.data * i.scale) for i in u ) m[purpose].utility_co[alt_code] = u_purp for model in m.values(): explicit_value_parameters(model) + model.availability_ca_var = "_avail_" apply_coefficients(coefficients, m) avail = construct_availability( m[purposes[0]], chooser_data, data.alt_codes_to_names ) - d = DataFrames( - co=chooser_data, - av=avail, - alt_codes=data.alt_codes, - alt_names=data.alt_names, + d = lx.Dataset.construct.from_idco( + chooser_data, alts=dict(zip(data.alt_codes, data.alt_names)) ) + d["_avail_"] = xr.DataArray(avail, dims=(d.dc.CASEID, d.dc.ALTID)) if "atwork" not in name: for purpose, model in m.items(): - model.dataservice = d.selector_co(f"tour_type=='{purpose}'") + model.datatree = d.dc.query_cases(f"tour_type=='{purpose}'") model.choice_co_code = "override_choice_code" else: for purpose, model in m.items(): - model.dataservice = d + model.datatree = d model.choice_co_code = "override_choice_code" - from larch.model.model_group import ModelGroup - - mg = ModelGroup(m.values()) + mg = lx.ModelGroup(m.values()) + explicit_value_parameters(mg) + apply_coefficients(coefficients, mg) if return_data: return ( diff --git a/activitysim/estimation/larch/nonmand_tour_freq.py b/activitysim/estimation/larch/nonmand_tour_freq.py index 9fbcbb1ed..c35d44453 100644 --- a/activitysim/estimation/larch/nonmand_tour_freq.py +++ b/activitysim/estimation/larch/nonmand_tour_freq.py @@ -1,5 +1,6 @@ from __future__ import annotations +import glob import logging import os import pickle @@ -17,17 +18,16 @@ ) try: - import larch + # Larch is an optional dependency, and we don't want to fail when importing + # this module simply because larch is not installed. + import larch as lx except ImportError: - larch = None - logger_name = "larch" + lx = None else: - from larch import DataFrames, Model - from larch.log import logger_name from larch.util import Dict -_logger = logging.getLogger(logger_name) +_logger = logging.getLogger("larch") def interaction_simulate_data( @@ -38,17 +38,48 @@ def interaction_simulate_data( alt_def_file="{name}_alternatives.csv", coefficients_files="{segment_name}/{name}_coefficients_{segment_name}.csv", chooser_data_files="{segment_name}/{name}_choosers_combined.csv", - alt_values_files="{segment_name}/{name}_interaction_expression_values.csv", - segment_subset=[], + alt_values_files="{segment_name}/{name}_alternatives_combined.csv", + segment_subset=(), ): edb_directory = edb_directory.format(name=name) def _read_csv(filename, **kwargs): - filename = filename.format(name=name) - return pd.read_csv(os.path.join(edb_directory, filename), **kwargs) + filename = Path(edb_directory).joinpath(filename.format(name=name)) + if filename.with_suffix(".parquet").exists(): + print("loading from", filename.with_suffix(".parquet")) + if "comment" in kwargs: + kwargs.pop("comment") + return pd.read_parquet(filename.with_suffix(".parquet"), **kwargs) + if filename.exists(): + print("loading from", filename) + return pd.read_csv(filename, **kwargs) + # if the file does not exist, try to load parquet from a subdirectory + search_glob = os.path.join( + edb_directory, "*", filename.with_suffix(".parquet").name + ) + files = glob.glob(search_glob) + if files: + print("loading from", files[0]) + return pd.read_parquet(files[0], **kwargs) + # otherwise try to load csv from a subdirectory + search_glob = os.path.join(edb_directory, "*", filename.name) + files = glob.glob(search_glob) + if files: + print("loading from", files[0]) + return pd.read_csv(files[0], **kwargs) + raise FileNotFoundError(f"File {filename} not found") settings_file = settings_file.format(name=name) - with open(os.path.join(edb_directory, settings_file), "r") as yf: + settings_file_resolved = os.path.join(edb_directory, settings_file) + if not os.path.exists(settings_file_resolved): + search_glob = os.path.join(edb_directory, "*", settings_file) + settings_files = glob.glob(search_glob) + if not settings_files: + raise FileNotFoundError(f"Settings file {settings_file} not found") + else: + settings_file_resolved = settings_files[0] + + with open(settings_file_resolved) as yf: settings = yaml.load( yf, Loader=yaml.SafeLoader, @@ -123,7 +154,7 @@ def link_same_value_coefficients(segment_names, coefficients, spec): def unavail_parameters(model): - return model.pf.index[(model.pf.value < -900) & (model.pf.holdfast != 0)] + return model.pnames[(model.pvals < -900) & (model.pholdfast != 0)] def unavail_data_cols(model): @@ -133,10 +164,15 @@ def unavail_data_cols(model): def unavail(model, x_ca): lock_data = unavail_data_cols(model) + # intialize unavail to False array of same length as x_ca + unav = pd.Series(False, index=x_ca.index) if len(lock_data): unav = x_ca[lock_data[0]] > 0 for j in lock_data[1:]: unav |= x_ca[j] > 0 + else: + # no unavailability parameters are included + return pd.DataFrame(0, index=x_ca.index, columns=["_avail_"]) return unav @@ -212,8 +248,10 @@ def nonmand_tour_freq_model( edb_directory="output/estimation_data_bundle/{name}/", return_data=False, condense_parameters=False, - segment_subset=[], + segment_subset=(), num_chunks=1, + *, + alts_in_cv_format=False, ): """ Prepare nonmandatory tour frequency models for estimation. @@ -253,10 +291,13 @@ def nonmand_tour_freq_model( alt_values = data.alt_values alt_def = data.alt_def + # deduplicate rows in alt_def + alt_def = alt_def[~alt_def.index.duplicated(keep="first")] + m = {} for segment_name in segment_names: print(f"Creating larch model for {segment_name}") - segment_model = m[segment_name] = Model() + segment_model = m[segment_name] = lx.Model(compute_engine="numba") # One of the alternatives is coded as 0, so # we need to explicitly initialize the MNL nesting graph # and set to root_id to a value other than zero. @@ -267,6 +308,9 @@ def nonmand_tour_freq_model( spec, x_col="Label", p_col=segment_name, + x_validator=set(chooser_data[segment_name].columns) + | set(alt_values[segment_name].columns), + expr_col="Expression", ) apply_coefficients(coefficients[segment_name], segment_model) segment_model.choice_co_code = "override_choice" @@ -277,21 +321,29 @@ def nonmand_tour_freq_model( .set_index("person_id") .rename(columns={"TAZ": "HOMETAZ"}) ) - print("\t performing cv to ca step") - # x_ca = cv_to_ca(alt_values[segment_name].set_index(["person_id", "variable"])) - x_ca = get_x_ca_df( - alt_values=alt_values[segment_name].set_index(["person_id", "variable"]), - name=segment_name, - edb_directory=edb_directory.format(name="non_mandatory_tour_frequency"), - num_chunks=num_chunks, - ) + if alts_in_cv_format: + print("\t performing cv to ca step") + x_ca = get_x_ca_df( + alt_values=alt_values[segment_name].set_index( + ["person_id", "variable"] + ), + name=segment_name, + edb_directory=edb_directory.format(name="non_mandatory_tour_frequency"), + num_chunks=num_chunks, + ) + else: + x_ca = alt_values[segment_name].set_index(["person_id", "alt_id"]) - d = DataFrames( - co=x_co, - ca=x_ca, - av=~unavail(segment_model, x_ca), + d_co = lx.Dataset.construct.from_idco( + x_co, + alts=alt_def.index.rename("alt_id"), ) - m[segment_name].dataservice = d + x_ca["_avail_"] = ~unavail(segment_model, x_ca) + # we set crack to False here so that we do not dissolve zero variance IDCAs + d_ca = lx.Dataset.construct.from_idca(x_ca, crack=False) + d = d_ca.merge(d_co) + m[segment_name].datatree = d + m[segment_name].availability_ca_var = "_avail_" if return_data: return m, data diff --git a/activitysim/estimation/larch/scheduling.py b/activitysim/estimation/larch/scheduling.py index 7d9461b5c..e0adb34e5 100644 --- a/activitysim/estimation/larch/scheduling.py +++ b/activitysim/estimation/larch/scheduling.py @@ -21,11 +21,13 @@ ) try: - import larch + # Larch is an optional dependency, and we don't want to fail when importing + # this module simply because larch is not installed. + import larch as lx except ImportError: - larch = None + lx = None else: - from larch import DataFrames, Model, P, X + from larch import P, X from larch.util import Dict @@ -38,6 +40,8 @@ def schedule_choice_model( chooser_file="{name}_choosers_combined.csv", settings_file="{name}_model_settings.yaml", return_data=False, + *, + alts_in_cv_format=False, ): model_selector = name.replace("_location", "") model_selector = model_selector.replace("_destination", "") @@ -46,14 +50,16 @@ def schedule_choice_model( edb_directory = edb_directory.format(name=name) def _read_csv(filename, optional=False, **kwargs): - filename = filename.format(name=name) - try: - return pd.read_csv(os.path.join(edb_directory, filename), **kwargs) - except FileNotFoundError: - if optional: - return None - else: - raise + filename = Path(edb_directory).joinpath(filename.format(name=name)) + if filename.with_suffix(".parquet").exists(): + print("loading from", filename.with_suffix(".parquet")) + return pd.read_parquet(filename.with_suffix(".parquet"), **kwargs) + if filename.exists(): + print("loading from", filename) + return pd.read_csv(filename, **kwargs) + if optional: + return None + raise FileNotFoundError(filename) settings_file = settings_file.format(name=name) with open(os.path.join(edb_directory, settings_file), "r") as yf: @@ -106,7 +112,7 @@ def _read_csv(filename, optional=False, **kwargs): else: raise ValueError("cannot find Label or Expression in spec file") - m = Model() + m = lx.Model(compute_engine="numba") if len(spec.columns) == 4 and ( [c.lower() for c in spec.columns] == ["label", "description", "expression", "coefficient"] @@ -141,12 +147,16 @@ def _read_csv(filename, optional=False, **kwargs): apply_coefficients(coefficients, m, minimum=-25, maximum=25) chooser_index_name = chooser_data.columns[0] - x_co = chooser_data.set_index(chooser_index_name) + x_co = chooser_data.set_index(chooser_index_name).dropna(axis=1, how="all") alt_values.fillna(0, inplace=True) - x_ca = cv_to_ca( - alt_values.set_index([chooser_index_name, alt_values.columns[1]]), - required_labels=spec[label_column_name], - ) + if alts_in_cv_format: + x_ca = cv_to_ca( + alt_values.set_index([chooser_index_name, alt_values.columns[1]]), + required_labels=spec[label_column_name], + ) + else: + # the alternative code is "tdd" + x_ca = alt_values.set_index([chooser_index_name, "tdd"]) # if CHOOSER_SEGMENT_COLUMN_NAME is not None: # # label segments with names @@ -158,22 +168,36 @@ def _read_csv(filename, optional=False, **kwargs): # x_co["_segment_label"] = size_spec.index[0] alt_codes = np.arange(len(x_ca.index.levels[1])) + 1 - x_ca.index = x_ca.index.set_levels(alt_codes, 1) + x_ca.index = x_ca.index.set_levels(alt_codes, level=1) x_co["override_choice_plus1"] = x_co["override_choice"] + 1 x_co["model_choice_plus1"] = x_co["model_choice"] + 1 unavail_coefs = coefficients.query("(constrain == 'T') & (value < -900)").index unavail_data = [i.data for i in m.utility_ca if i.param in unavail_coefs] - if len(unavail_data): + + if "mode_choice_logsum" in x_ca and not len(unavail_data): + joint_avail = "~(mode_choice_logsum_missing)" + elif len(unavail_data): joint_unavail = "|".join(f"({i}>0)" for i in unavail_data) joint_avail = f"~({joint_unavail})" else: - joint_avail = 1 - - d = DataFrames(co=x_co, ca=x_ca, av=joint_avail) - m.dataservice = d + joint_avail = None + + # d = DataFrames(co=x_co, ca=x_ca, av=joint_avail) # larch 5.7 + d_ca = lx.Dataset.construct.from_idca(x_ca) + if joint_avail == "~(mode_choice_logsum_missing)": + tmp = np.isnan(d_ca["mode_choice_logsum"]) + tmp = tmp.drop_vars(tmp.coords) + d_ca = d_ca.assign(mode_choice_logsum_missing=tmp) + d_co = lx.Dataset.construct.from_idco(x_co) + d = d_ca.merge(d_co) + # if joint_avail is not None: + # d["_avail_"] = joint_avail + + m.datatree = d m.choice_co_code = "override_choice_plus1" - # m.choice_co_code = "model_choice_plus1" + if joint_avail is not None: + m.availability_ca_var = joint_avail if return_data: return ( @@ -226,38 +250,64 @@ def construct_availability_ca(model, chooser_data, alt_codes_to_names): return avail -def mandatory_tour_scheduling_work_model(return_data=False): +def mandatory_tour_scheduling_work_model( + edb_directory="output/estimation_data_bundle/{name}/", return_data=False +): return schedule_choice_model( name="mandatory_tour_scheduling_work", + edb_directory=edb_directory, return_data=return_data, coefficients_file="tour_scheduling_work_coefficients.csv", ) -def mandatory_tour_scheduling_school_model(return_data=False): +def mandatory_tour_scheduling_school_model( + edb_directory="output/estimation_data_bundle/{name}/", return_data=False +): return schedule_choice_model( name="mandatory_tour_scheduling_school", + edb_directory=edb_directory, return_data=return_data, coefficients_file="tour_scheduling_school_coefficients.csv", ) -def non_mandatory_tour_scheduling_model(return_data=False): +def mandatory_tour_scheduling_univ_model( + edb_directory="output/estimation_data_bundle/{name}/", return_data=False +): + return schedule_choice_model( + name="mandatory_tour_scheduling_univ", + edb_directory=edb_directory, + return_data=return_data, + coefficients_file="tour_scheduling_univ_coefficients.csv", + ) + + +def non_mandatory_tour_scheduling_model( + edb_directory="output/estimation_data_bundle/{name}/", return_data=False +): return schedule_choice_model( name="non_mandatory_tour_scheduling", + edb_directory=edb_directory, return_data=return_data, ) -def joint_tour_scheduling_model(return_data=False): +def joint_tour_scheduling_model( + edb_directory="output/estimation_data_bundle/{name}/", return_data=False +): return schedule_choice_model( name="joint_tour_scheduling", + edb_directory=edb_directory, return_data=return_data, ) -def atwork_subtour_scheduling_model(return_data=False): +def atwork_subtour_scheduling_model( + edb_directory="output/estimation_data_bundle/{name}/", return_data=False +): return schedule_choice_model( name="atwork_subtour_scheduling", + edb_directory=edb_directory, return_data=return_data, ) diff --git a/activitysim/estimation/larch/simple_simulate.py b/activitysim/estimation/larch/simple_simulate.py index 59c83d345..2ec8a574f 100644 --- a/activitysim/estimation/larch/simple_simulate.py +++ b/activitysim/estimation/larch/simple_simulate.py @@ -1,5 +1,6 @@ from __future__ import annotations +import collections import os from pathlib import Path @@ -17,11 +18,12 @@ ) try: - import larch + # Larch is an optional dependency, and we don't want to fail when importing + # this module simply because larch is not installed. + import larch as lx except ImportError: - larch = None + lx = None else: - from larch import DataFrames, Model from larch.util import Dict @@ -40,7 +42,7 @@ def construct_availability(model, chooser_data, alt_codes_to_names): pandas.DataFrame """ avail = {} - for acode, aname in alt_codes_to_names.items(): + for acode, _aname in alt_codes_to_names.items(): unavail_cols = list( ( chooser_data[i.data] @@ -59,6 +61,37 @@ def construct_availability(model, chooser_data, alt_codes_to_names): return avail +SimpleSimulateData = collections.namedtuple( + "SimpleSimulateData", + field_names=[ + "edb_directory", + "settings", + "chooser_data", + "coefficients", + "coef_template", + "spec", + "alt_names", + "alt_codes", + "alt_names_to_codes", + "alt_codes_to_names", + ], +) + + +def read_spec(filename: str | os.PathLike) -> pd.DataFrame: + """Read a simple simulate spec file""" + print("loading spec from", filename) + spec = pd.read_csv(filename, comment="#") + spec = remove_apostrophes(spec, ["Label"]) + + # remove temp rows from spec, ASim uses them to calculate the other values written + # to the EDB, but they are not actually part of the utility function themselves. + spec = spec.loc[~spec.Expression.isna()] + spec = spec.loc[~spec.Expression.str.startswith("_")].copy() + + return spec + + def simple_simulate_data( name="tour_mode_choice", edb_directory="output/estimation_data_bundle/{name}/", @@ -68,15 +101,20 @@ def simple_simulate_data( settings_file="{name}_model_settings.yaml", chooser_data_file="{name}_values_combined.csv", values_index_col="tour_id", -): - edb_directory = edb_directory.format(name=name) +) -> SimpleSimulateData: + edb_directory = str(edb_directory).format(name=name) def _read_csv(filename, **kwargs): - filename = filename.format(name=name) - return pd.read_csv(os.path.join(edb_directory, filename), **kwargs) + filename = Path(edb_directory).joinpath(filename.format(name=name)) + if filename.with_suffix(".parquet").exists(): + print("loading from", filename.with_suffix(".parquet")) + return pd.read_parquet(filename.with_suffix(".parquet"), **kwargs) + if filename.exists(): + print("loading from", filename) + return pd.read_csv(filename, **kwargs) settings_file = settings_file.format(name=name) - with open(os.path.join(edb_directory, settings_file), "r") as yf: + with open(os.path.join(edb_directory, settings_file)) as yf: settings = yaml.load( yf, Loader=yaml.SafeLoader, @@ -96,23 +134,16 @@ def _read_csv(filename, **kwargs): except FileNotFoundError: coef_template = None - spec = _read_csv(spec_file, comment="#") - spec = remove_apostrophes(spec, ["Label"]) - - # remove temp rows from spec, ASim uses them to calculate the other values written - # to the EDB, but they are not actually part of the utility function themselves. - spec = spec.loc[~spec.Expression.isna()] - spec = spec.loc[~spec.Expression.str.startswith("_")].copy() + spec = read_spec(Path(edb_directory).joinpath(spec_file.format(name=name))) alt_names = list(spec.columns[3:]) alt_codes = np.arange(1, len(alt_names) + 1) - alt_names_to_codes = dict(zip(alt_names, alt_codes)) - alt_codes_to_names = dict(zip(alt_codes, alt_names)) + alt_names_to_codes = dict(zip(alt_names, alt_codes, strict=False)) + alt_codes_to_names = dict(zip(alt_codes, alt_names, strict=False)) chooser_data = _read_csv( chooser_data_file, - index_col=values_index_col, - ) + ).set_index(values_index_col) except Exception: # when an error happens in reading anything other than settings, print settings @@ -121,7 +152,7 @@ def _read_csv(filename, **kwargs): pprint(settings) raise - return Dict( + return SimpleSimulateData( edb_directory=Path(edb_directory), settings=settings, chooser_data=chooser_data, @@ -167,33 +198,40 @@ def simple_simulate_model( if settings.get("LOGIT_TYPE") == "NL": tree = construct_nesting_tree(data.alt_names, settings["NESTS"]) - m = Model(graph=tree) else: - m = Model(alts=data.alt_codes_to_names) + tree = construct_nesting_tree(data.alt_names_to_codes, {}) + m = lx.Model(compute_engine="numba") m.utility_co = dict_of_linear_utility_from_spec( spec, "Label", - dict(zip(alt_names, alt_codes)), + dict(zip(alt_names, alt_codes, strict=False)), + x_validator=chooser_data, + expr_col="Expression", ) apply_coefficients(coefficients, m) if construct_avail: avail = construct_availability(m, chooser_data, data.alt_codes_to_names) + d = lx.Dataset.construct.from_idco( + pd.concat([chooser_data, avail], axis=1), + alts=dict(zip(alt_codes, alt_names, strict=False)), + ) else: avail = True + d = lx.Dataset.construct.from_idco( + chooser_data, alts=dict(zip(alt_codes, alt_names, strict=False)) + ) - d = DataFrames( - co=chooser_data, - av=avail, - alt_codes=alt_codes, - alt_names=alt_names, - ) - - m.dataservice = d + m.datatree = d.dc.as_tree("df") + m.graph = tree m.choice_co_code = "override_choice_code" + # set bounds on unbounded coefficients, so that they don't get big + # and cause numerical errors which some optimizers can't handle + m.set_cap(50) + if return_data: return ( m, diff --git a/activitysim/estimation/larch/stop_frequency.py b/activitysim/estimation/larch/stop_frequency.py index cf36096dd..d3344ad60 100644 --- a/activitysim/estimation/larch/stop_frequency.py +++ b/activitysim/estimation/larch/stop_frequency.py @@ -15,11 +15,12 @@ ) try: - import larch + # Larch is an optional dependency, and we don't want to fail when importing + # this module simply because larch is not installed. + import larch as lx except ImportError: - larch = None + lx = None else: - from larch import DataFrames, Model from larch.util import Dict @@ -33,11 +34,29 @@ def stop_frequency_data( edb_directory = edb_directory.format(name=name) settings_file = settings_file.format(name=name) - with open(os.path.join(edb_directory, settings_file), "r") as yf: - settings = yaml.load( - yf, - Loader=yaml.SafeLoader, - ) + try: + with open(os.path.join(edb_directory, settings_file), "r") as yf: + settings = yaml.load( + yf, + Loader=yaml.SafeLoader, + ) + except FileNotFoundError: + # search in all first level subdirectories for the settings file + for subdir in os.listdir(edb_directory): + if os.path.isdir(os.path.join(edb_directory, subdir)): + try: + with open( + os.path.join(edb_directory, subdir, settings_file), "r" + ) as yf: + settings = yaml.load( + yf, + Loader=yaml.SafeLoader, + ) + break + except FileNotFoundError: + pass + else: + raise segments = [i["primary_purpose"] for i in settings["SPEC_SEGMENTS"]] @@ -117,10 +136,30 @@ def stop_frequency_data( seg_alt_names_to_codes.append(alt_names_to_codes) seg_alt_codes_to_names.append(alt_codes_to_names) - chooser_data = pd.read_csv( - seg_subdir / chooser_data_file.format(name=name), - index_col=values_index_col, - ) + # load parquet if available, otherwise pickle, or if all else fails csv + if ( + (seg_subdir / chooser_data_file.format(name=name)) + .with_suffix(".parquet") + .exists() + ): + chooser_data = pd.read_parquet( + (seg_subdir / chooser_data_file.format(name=name)).with_suffix( + ".parquet" + ), + ).set_index(values_index_col) + elif ( + (seg_subdir / chooser_data_file.format(name=name)) + .with_suffix(".pkl") + .exists() + ): + chooser_data = pd.read_pickle( + (seg_subdir / chooser_data_file.format(name=name)).with_suffix(".pkl"), + ).set_index(values_index_col) + else: + chooser_data = pd.read_csv( + seg_subdir / chooser_data_file.format(name=name), + index_col=values_index_col, + ) seg_chooser_data.append(chooser_data) return Dict( @@ -170,9 +209,9 @@ def stop_frequency_model( if settings.get("LOGIT_TYPE") == "NL": tree = construct_nesting_tree(data.alt_names[n], settings["NESTS"]) - m = Model(graph=tree) + m = lx.Model(graph=tree, compute_engine="numba") else: - m = Model() + m = lx.Model(compute_engine="numba") m.utility_co = dict_of_linear_utility_from_spec( spec, @@ -184,15 +223,13 @@ def stop_frequency_model( avail = True - d = DataFrames( - co=chooser_data, - av=avail, - alt_codes=alt_codes, - alt_names=alt_names, + d = lx.Dataset.construct.from_idco( + chooser_data, alts=dict(zip(alt_codes, alt_names)) ) - m.dataservice = d + m.datatree = d m.choice_co_code = "override_choice_code" + m.availability_any = True models.append(m) from larch.model.model_group import ModelGroup diff --git a/activitysim/estimation/test/test_edb_creation/configs_estimation/.gitignore b/activitysim/estimation/test/test_edb_creation/configs_estimation/.gitignore new file mode 100644 index 000000000..e767d25ce --- /dev/null +++ b/activitysim/estimation/test/test_edb_creation/configs_estimation/.gitignore @@ -0,0 +1,2 @@ +settings.yaml +estimation.yaml \ No newline at end of file diff --git a/activitysim/estimation/test/test_edb_creation/configs_estimation/estimation_template.yaml b/activitysim/estimation/test/test_edb_creation/configs_estimation/estimation_template.yaml new file mode 100644 index 000000000..6cab9136a --- /dev/null +++ b/activitysim/estimation/test/test_edb_creation/configs_estimation/estimation_template.yaml @@ -0,0 +1,81 @@ +EDB_FILETYPE: csv # options: csv, parquet, pkl + +enable: True + +bundles: + - school_location + - workplace_location + - auto_ownership + - vehicle_type_choice + - free_parking + - cdap + - mandatory_tour_frequency + - mandatory_tour_scheduling_work + - mandatory_tour_scheduling_school + - joint_tour_frequency + - joint_tour_composition + - joint_tour_participation + - joint_tour_destination + - joint_tour_scheduling + - non_mandatory_tour_frequency + - non_mandatory_tour_destination + - non_mandatory_tour_scheduling + - tour_mode_choice + - atwork_subtour_frequency + - atwork_subtour_destination + - atwork_subtour_scheduling + - atwork_subtour_mode_choice + - stop_frequency + - trip_purpose + - trip_destination + - trip_scheduling + - trip_mode_choice + +# - atwork_subtour_mode_choice subtours.tour_mode + +survey_tables: + households: + file_name: override_households.csv + index_col: household_id + persons: + file_name: override_persons.csv + index_col: person_id + tours: + file_name: override_tours.csv + index_col: tour_id + joint_tour_participants: + file_name: override_joint_tour_participants.csv + index_col: participant_id + trips: + file_name: override_trips.csv + index_col: trip_id + + +estimation_table_types: + school_location: interaction_sample_simulate + workplace_location: interaction_sample_simulate + auto_ownership: simple_simulate + vehicle_type_choice: interaction_simulate + free_parking: simple_simulate + cdap: cdap_simulate + mandatory_tour_frequency: simple_simulate + mandatory_tour_scheduling_work: interaction_sample_simulate + mandatory_tour_scheduling_school: interaction_sample_simulate + joint_tour_frequency: simple_simulate + joint_tour_composition: simple_simulate + joint_tour_participation: simple_simulate + joint_tour_destination: interaction_sample_simulate + joint_tour_scheduling: interaction_sample_simulate + non_mandatory_tour_frequency: interaction_simulate + non_mandatory_tour_destination: interaction_sample_simulate + non_mandatory_tour_scheduling: interaction_sample_simulate + tour_mode_choice: simple_simulate + atwork_subtour_frequency: simple_simulate + atwork_subtour_destination: interaction_sample_simulate + atwork_subtour_scheduling: interaction_sample_simulate + atwork_subtour_mode_choice: simple_simulate + stop_frequency: simple_simulate + trip_purpose: simple_probabilistic + trip_destination: interaction_sample_simulate + trip_scheduling: simple_probabilistic + trip_mode_choice: simple_simulate diff --git a/activitysim/estimation/test/test_edb_creation/configs_estimation/logging.yaml b/activitysim/estimation/test/test_edb_creation/configs_estimation/logging.yaml new file mode 100644 index 000000000..f4902943d --- /dev/null +++ b/activitysim/estimation/test/test_edb_creation/configs_estimation/logging.yaml @@ -0,0 +1,67 @@ +# Config for logging +# ------------------ +# See http://docs.python.org/2.7/library/logging.config.html#configuration-dictionary-schema + +logging: + version: 1 + disable_existing_loggers: true + + + # Configuring the default (root) logger is highly recommended + root: + level: NOTSET + handlers: [console, logfile, elogfile] + + loggers: + + estimation: + level: DEBUG + handlers: [console, elogfile] + propagate: false + + activitysim: + level: INFO + handlers: [console, logfile] + propagate: false + + orca: + level: WARN + handlers: [console, logfile] + propagate: false + + handlers: + + elogfile: + class: logging.FileHandler + filename: + get_log_file_path: 'estimation.log' + mode: w + formatter: fileFormatter + level: NOTSET + + logfile: + class: logging.FileHandler + filename: + get_log_file_path: 'activitysim.log' + mode: w + formatter: fileFormatter + level: NOTSET + + console: + class: logging.StreamHandler + stream: ext://sys.stdout + formatter: simpleFormatter + level: NOTSET + + formatters: + + simpleFormatter: + class: logging.Formatter + # format: '%(levelname)s - %(name)s - %(message)s' + format: '%(levelname)s - %(message)s' + datefmt: '%d/%m/%Y %H:%M:%S' + + fileFormatter: + class: logging.Formatter + format: '%(asctime)s - %(levelname)s - %(name)s - %(message)s' + datefmt: '%d/%m/%Y %H:%M:%S' diff --git a/activitysim/estimation/test/test_edb_creation/configs_estimation/settings_template.yaml b/activitysim/estimation/test/test_edb_creation/configs_estimation/settings_template.yaml new file mode 100644 index 000000000..75b9720c7 --- /dev/null +++ b/activitysim/estimation/test/test_edb_creation/configs_estimation/settings_template.yaml @@ -0,0 +1,165 @@ + +inherit_settings: True + +# assume enough RAM to not chunk +chunk_training_mode: disabled + +# input tables +input_table_list: + # + # households (table index 'household_id') + # + - tablename: households + filename: override_households.csv + index_col: household_id + keep_columns: + - home_zone_id + - income + - hhsize + - HHT + - auto_ownership + - num_workers + # + # persons (table index 'person_id') + # + - tablename: persons + filename: override_persons.csv + keep_columns: + - household_id + - age + - PNUM + - sex + - pemploy + - pstudent + - ptype + # + # land_use (table index 'zone_id') + # + - tablename: land_use + filename: land_use.csv + rename_columns: + # accept either TAZ or ZONE (but not both) + TAZ: zone_id + ZONE: zone_id + COUNTY: county_id + keep_columns: + - DISTRICT + - SD + - county_id + - TOTHH + - TOTPOP + - TOTACRE + - RESACRE + - CIACRE + - TOTEMP + - AGE0519 + - RETEMPN + - FPSEMPN + - HEREMPN + - OTHEMPN + - AGREMPN + - MWTEMPN + - PRKCST + - OPRKCST + - area_type + - HSENROLL + - COLLFTE + - COLLPTE + - TOPOLOGY + - TERMINAL + +write_raw_tables: False +rng_base_seed: 0 + +fail_fast: True + +use_shadow_pricing: False + +# turn writing of sample_tables on and off for all models +# (if True, tables will be written if DEST_CHOICE_SAMPLE_TABLE_NAME is specified in individual model settings) +want_dest_choice_sample_tables: False + +# number of households to simulate +households_sample_size: 0 + +# to resume after last successful checkpoint, specify resume_after: _ +#resume_after: initialize_households + +trace_hh_id: + +multiprocess: false +num_processes: 2 + + +output_tables: + h5_store: False + action: include + prefix: final_ + sort: True + tables: + - checkpoints + - accessibility + - land_use + - households + - persons + - tours + - trips + - joint_tour_participants + +resume_after: + +models: + - initialize_landuse + - initialize_households + - compute_accessibility + - school_location + - workplace_location + - auto_ownership_simulate + - free_parking + - cdap_simulate + - mandatory_tour_frequency + - mandatory_tour_scheduling + - joint_tour_frequency + - joint_tour_composition + - joint_tour_participation + - joint_tour_destination + - joint_tour_scheduling + - non_mandatory_tour_frequency + - non_mandatory_tour_destination + - non_mandatory_tour_scheduling + - tour_mode_choice_simulate + - atwork_subtour_frequency + - atwork_subtour_destination + - atwork_subtour_scheduling + - atwork_subtour_mode_choice + - stop_frequency + - trip_purpose + - trip_destination +# - trip_purpose_and_destination + - trip_scheduling + - trip_mode_choice +# - write_data_dictionary +# - track_skim_usage +# - write_trip_matrices + - write_tables + - coalesce_estimation_data_bundles + + +multiprocess_steps: + - name: mp_initialize + begin: initialize_landuse + - name: mp_accessibility + begin: compute_accessibility + slice: + tables: + - accessibility + # don't slice any tables not explicitly listed above in slice.tables + exclude: True + - name: mp_households + begin: school_location + slice: + tables: + - households + - persons + - name: mp_summarize + begin: write_tables \ No newline at end of file diff --git a/activitysim/estimation/test/test_edb_creation/outputs/.gitignore b/activitysim/estimation/test/test_edb_creation/outputs/.gitignore new file mode 100644 index 000000000..08194de49 --- /dev/null +++ b/activitysim/estimation/test/test_edb_creation/outputs/.gitignore @@ -0,0 +1,2 @@ +/output*/ +*.csv \ No newline at end of file diff --git a/activitysim/estimation/test/test_edb_creation/outputs/infer_output/.gitignore b/activitysim/estimation/test/test_edb_creation/outputs/infer_output/.gitignore new file mode 100644 index 000000000..16f2dc5fa --- /dev/null +++ b/activitysim/estimation/test/test_edb_creation/outputs/infer_output/.gitignore @@ -0,0 +1 @@ +*.csv \ No newline at end of file diff --git a/activitysim/estimation/test/test_edb_creation/survey_data/final_households.csv b/activitysim/estimation/test/test_edb_creation/survey_data/final_households.csv new file mode 100644 index 000000000..c91fceec9 --- /dev/null +++ b/activitysim/estimation/test/test_edb_creation/survey_data/final_households.csv @@ -0,0 +1,51 @@ +"home_zone_id","income","hhsize","HHT","auto_ownership","num_workers","sample_rate","income_in_thousands","income_segment","median_value_of_time","hh_value_of_time","num_non_workers","num_drivers","num_adults","num_children","num_young_children","num_children_5_to_15","num_children_16_to_17","num_college_age","num_young_adults","non_family","family","home_is_urban","home_is_rural","hh_work_auto_savings_ratio","num_under16_not_at_school","num_travel_active","num_travel_active_adults","num_travel_active_preschoolers","num_travel_active_children","num_travel_active_non_preschoolers","participates_in_jtf_model","joint_tour_frequency","num_hh_joint_tours","household_id" +16,30900,2,5,1,2,0.01,30.9,2,8.81,6.021274002645185,0,2,2,0,0,0,0,0,2,true,false,true,false,0.39972082,0,2,2,0,0,2,true,"0_tours",0,982875 +16,99700,9,2,1,4,0.01,99.7,3,10.44,3.705326363656352,5,8,8,1,1,0,0,3,3,false,true,true,false,0.71195495,0,7,6,1,1,6,true,"0_tours",0,1810015 +20,58160,3,1,1,1,0.01,58.16,2,8.81,10.708809147889093,2,2,2,1,1,0,0,0,0,false,true,true,false,0.2646,0,3,2,1,1,2,true,"0_tours",0,1099626 +6,59220,1,4,1,0,0.01,59.22,2,8.81,10.449019648473794,1,1,1,0,0,0,0,0,0,true,false,true,false,0,0,1,1,0,0,1,false,"0_tours",0,763879 +18,51000,1,4,0,1,0.01,51,2,8.81,17.13534609189038,0,1,1,0,0,0,0,0,1,true,false,true,false,0.18706083,0,1,1,0,0,1,false,"0_tours",0,824207 +8,0,1,0,0,1,0.01,0,1,6.01,7.558195608572484,0,1,1,0,0,0,0,1,0,false,false,true,false,0.20204751,0,1,1,0,0,1,false,"0_tours",0,2822230 +8,0,1,0,0,1,0.01,0,1,6.01,1,0,1,1,0,0,0,0,0,0,false,false,true,false,0.19095585,0,1,1,0,0,1,false,"0_tours",0,2821179 +25,31360,5,1,0,1,0.01,31.36,2,8.81,12.074894163110672,4,2,2,3,2,1,0,0,1,false,true,true,false,0.14576416,0,4,1,2,3,2,true,"0_tours",0,1196298 +24,58300,2,2,1,1,0.01,58.3,2,8.81,10.4823297442415,1,2,2,0,0,0,0,0,0,false,true,true,false,0.12962,0,2,2,0,0,2,true,"0_tours",0,1363467 +16,21000,3,1,1,2,0.01,21,1,6.01,5.098171219655474,1,2,2,1,0,1,0,0,0,false,true,true,false,0.28337085,0,3,2,0,1,3,true,"0_tours",0,386761 +9,133000,2,1,0,2,0.01,133,4,12.86,6.387619611064064,0,2,2,0,0,0,0,0,0,false,true,true,false,0.30083168,0,2,2,0,0,2,true,"0_tours",0,2223027 +7,0,1,0,0,0,0.01,0,1,6.01,3.0402011627479264,1,1,1,0,0,0,0,0,0,false,false,true,false,0,0,1,1,0,0,1,false,"0_tours",0,2832182 +20,118800,2,1,1,2,0.01,118.8,4,12.86,21.606392235487583,0,2,2,0,0,0,0,0,0,false,true,true,false,0.26,0,2,2,0,0,2,true,"0_tours",0,2727273 +14,60000,1,4,0,1,0.01,60,2,8.81,4.0074881716523025,0,1,1,0,0,0,0,0,0,true,false,true,false,0.13325916,0,0,0,0,0,0,false,"0_tours",0,1444715 +16,18000,1,6,1,1,0.01,18,1,6.01,2.647107057372401,0,1,1,0,0,0,0,0,0,true,false,true,false,0.23449998,0,1,1,0,0,1,false,"0_tours",0,112064 +14,61900,1,4,1,1,0.01,61.9,3,10.44,2.5980714149446418,0,1,1,0,0,0,0,0,0,true,false,true,false,0.08287584,0,1,1,0,0,1,false,"0_tours",0,1952792 +16,144100,2,1,0,2,0.01,144.1,4,12.86,7.408554295817758,0,2,2,0,0,0,0,0,2,false,true,true,false,0.4657992,0,2,2,0,0,2,true,"1_Eat",1,2223759 +8,0,1,0,0,1,0.01,0,1,6.01,2.467783203776223,0,1,1,0,0,0,0,1,0,false,false,true,false,0.11770582,0,0,0,0,0,0,false,"0_tours",0,2820538 +10,24000,1,4,0,0,0.01,24,1,6.01,5.584662029883316,1,1,1,0,0,0,0,0,0,true,false,true,false,0,0,1,1,0,0,1,false,"0_tours",0,27726 +21,1500,1,4,0,0,0.01,1.5,1,6.01,10.364201291815256,1,1,1,0,0,0,0,0,0,true,false,true,false,0,0,0,0,0,0,0,false,"0_tours",0,570454 +21,18000,3,2,0,1,0.01,18,1,6.01,4.005080218193281,2,2,2,1,0,1,0,1,0,false,true,true,false,0.1529925,0,1,0,0,1,1,false,"0_tours",0,370497 +8,45000,4,1,1,0,0.01,45,2,8.81,2.9767301704144296,4,2,2,2,0,2,0,0,0,false,true,true,false,0,0,4,2,0,2,4,true,"1_Shop",1,1173905 +11,30000,1,4,1,0,0.01,30,1,6.01,3.6040501851984663,1,1,1,0,0,0,0,0,0,true,false,true,false,0,0,1,1,0,0,1,false,"0_tours",0,1286557 +20,0,1,0,0,0,0.01,0,1,6.01,6.660210105218662,1,1,1,0,0,0,0,0,0,false,false,true,false,0,0,1,1,0,0,1,false,"0_tours",0,2762078 +16,0,1,0,1,0,0.01,0,1,6.01,7.951880936376377,1,1,1,0,0,0,0,0,0,false,false,true,false,0,0,0,0,0,0,0,false,"0_tours",0,2832429 +7,21000,3,1,0,2,0.01,21,1,6.01,4.590650730864872,1,2,2,1,0,1,0,0,0,false,true,true,false,0.2743725,0,3,2,0,1,3,true,"0_tours",0,386699 +8,0,1,0,1,1,0.01,0,1,6.01,10.786630771770398,0,1,1,0,0,0,0,0,0,false,false,true,false,0.10683333,0,1,1,0,0,1,false,"0_tours",0,2822097 +9,34630,1,4,1,0,0.01,34.63,2,8.81,7.593970066915795,1,1,1,0,0,0,0,0,0,true,false,true,false,0,0,1,1,0,0,1,false,"0_tours",0,764150 +8,0,1,0,1,1,0.01,0,1,6.01,1.8304507502262177,0,1,1,0,0,0,0,0,0,false,false,true,false,0.15995501,0,1,1,0,0,1,false,"0_tours",0,2820774 +10,69200,2,1,0,2,0.01,69.2,3,10.44,17.6624037989451,0,2,2,0,0,0,0,0,2,false,true,true,false,0.23833334,0,2,2,0,0,2,true,"0_tours",0,1594621 +16,12000,2,7,0,2,0.01,12,1,6.01,8.417809979092251,0,2,2,0,0,0,0,2,0,true,false,true,false,0.3178517,0,2,2,0,0,2,true,"0_tours",0,257531 +9,92700,2,3,0,0,0.01,92.7,3,10.44,11.518178930487295,2,1,1,1,0,1,0,0,0,false,true,true,false,0,1,2,1,0,1,2,true,"0_tours",0,1645132 +17,4200,1,4,0,0,0.01,4.2,1,6.01,4.768890669889258,1,1,1,0,0,0,0,0,0,true,false,true,false,0,0,1,1,0,0,1,false,"0_tours",0,29625 +25,37200,4,1,1,4,0.01,37.2,2,8.81,10.32100270756728,0,4,4,0,0,0,0,2,0,false,true,true,false,0.56286997,0,4,4,0,0,4,true,"1_Disc",1,1402945 +12,30000,1,4,0,1,0.01,30,1,6.01,4.360890352038947,0,1,1,0,0,0,0,0,0,true,false,true,false,0.06425,0,1,1,0,0,1,false,"0_tours",0,823501 +16,76000,3,1,0,2,0.01,76,3,10.44,15.5812014089547,1,2,2,1,0,1,0,0,0,false,true,true,false,0.3402317,0,3,2,0,1,3,true,"0_tours",0,1747467 +17,68000,1,6,0,1,0.01,68,3,10.44,7.595766438703255,0,1,1,0,0,0,0,0,0,true,false,true,false,0.31015667,0,1,1,0,0,1,false,"0_tours",0,1445222 +8,3500,1,4,0,0,0.01,3.5,1,6.01,41.95868930639066,1,1,1,0,0,0,0,0,0,true,false,true,false,0,0,1,1,0,0,1,false,"0_tours",0,26844 +8,0,1,0,0,1,0.01,0,1,6.01,2.9220038814547133,0,1,1,0,0,0,0,1,0,false,false,true,false,0.12387166,0,1,1,0,0,1,false,"0_tours",0,2822219 +16,5050,1,4,0,1,0.01,5.05,1,6.01,3.9205668642399836,0,1,1,0,0,0,0,0,1,true,false,true,false,0.35884497,0,0,0,0,0,0,false,"0_tours",0,110675 +5,388000,1,4,0,1,0.01,388,4,12.86,6.218529751813423,0,1,1,0,0,0,0,0,0,true,false,true,false,0.26293832,0,1,1,0,0,1,false,"0_tours",0,2048204 +8,34400,1,6,0,0,0.01,34.4,2,8.81,11.48239030277669,1,1,1,0,0,0,0,0,0,true,false,true,false,0,0,1,1,0,0,1,false,"0_tours",0,1286259 +17,8000,1,4,1,0,0.01,8,1,6.01,7.32202829064968,1,1,1,0,0,0,0,0,0,true,false,true,false,0,0,1,1,0,0,1,false,"0_tours",0,568785 +8,0,1,4,0,0,0.01,0,1,6.01,2.84310444200838,1,1,1,0,0,0,0,0,0,true,false,true,false,0,0,1,1,0,0,1,false,"0_tours",0,26686 +8,88600,2,1,0,1,0.01,88.6,3,10.44,4.2960940332239455,1,2,2,0,0,0,0,0,0,false,true,true,false,0.1417767,0,2,2,0,0,2,true,"0_tours",0,1511234 +7,195000,1,4,0,1,0.01,195,4,12.86,8.219354788406312,0,1,1,0,0,0,0,0,1,true,false,true,false,0.15494083,0,1,1,0,0,1,false,"0_tours",0,2048382 +10,27800,2,7,0,2,0.01,27.8,1,6.01,1.5416062020885206,0,2,2,0,0,0,0,2,0,true,false,true,false,0.29182667,0,1,1,0,0,1,false,"0_tours",0,256660 +25,17210,2,1,1,0,0.01,17.21,1,6.01,1.8372202530691708,2,2,2,0,0,0,0,0,0,false,true,true,false,0,0,2,2,0,0,2,true,"0_tours",0,703381 +9,4000,2,1,0,1,0.01,4,1,6.01,2.5758755480394475,1,2,2,0,0,0,0,0,2,false,true,true,false,0.23177332,0,2,2,0,0,2,true,"0_tours",0,226869 +11,50000,1,4,1,1,0.01,50,2,8.81,12.952762239760721,0,1,1,0,0,0,0,0,1,true,false,true,false,0.17517333,0,0,0,0,0,0,false,"0_tours",0,823426 diff --git a/activitysim/estimation/test/test_edb_creation/survey_data/final_joint_tour_participants.csv b/activitysim/estimation/test/test_edb_creation/survey_data/final_joint_tour_participants.csv new file mode 100644 index 000000000..7e7029f73 --- /dev/null +++ b/activitysim/estimation/test/test_edb_creation/survey_data/final_joint_tour_participants.csv @@ -0,0 +1,8 @@ +"tour_id","household_id","person_id","participant_num","participant_id" +220958279,2223759,5389226,1,22095827901 +220958279,2223759,5389227,2,22095827902 +100798519,1173905,2458502,1,10079851903 +100798519,1173905,2458503,2,10079851904 +130727777,1402945,3188483,1,13072777702 +130727777,1402945,3188484,2,13072777703 +130727777,1402945,3188485,3,13072777704 diff --git a/activitysim/estimation/test/test_edb_creation/survey_data/final_persons.csv b/activitysim/estimation/test/test_edb_creation/survey_data/final_persons.csv new file mode 100644 index 000000000..edfe67587 --- /dev/null +++ b/activitysim/estimation/test/test_edb_creation/survey_data/final_persons.csv @@ -0,0 +1,91 @@ +"household_id","age","PNUM","sex","pemploy","pstudent","ptype","age_16_to_19","age_16_p","adult","male","female","has_non_worker","has_retiree","has_preschool_kid","has_driving_kid","has_school_kid","has_full_time","has_part_time","has_university","student_is_employed","nonstudent_to_school","is_student","is_gradeschool","is_highschool","is_university","school_segment","is_worker","home_zone_id","value_of_time","school_zone_id","school_location_logsum","distance_to_school","roundtrip_auto_time_to_school","workplace_zone_id","workplace_location_logsum","distance_to_work","workplace_in_cbd","work_zone_area_type","roundtrip_auto_time_to_work","work_auto_savings","work_auto_savings_ratio","free_parking_at_work","cdap_activity","travel_active","under16_not_at_school","has_preschool_kid_at_home","has_school_kid_at_home","mandatory_tour_frequency","work_and_school_and_worker","work_and_school_and_student","num_mand","num_work_tours","num_joint_tours","non_mandatory_tour_frequency","num_non_mand","num_escort_tours","num_eatout_tours","num_shop_tours","num_maint_tours","num_discr_tours","num_social_tours","num_non_escort_tours","person_id" +26686,39,1,1,3,3,4,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,0,false,8,2.84310444200838,-1,,,0,-1,,,false,,0,0,0,false,"N",true,false,false,false,"",false,false,0,0,0,12,2,0,1,0,1,0,0,2,26686 +26844,51,1,1,3,3,4,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,0,false,8,41.95868930639066,-1,,,0,-1,,,false,,0,0,0,false,"N",true,false,false,false,"",false,false,0,0,0,2,1,0,0,0,0,0,1,1,26844 +27726,52,1,1,3,3,4,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,0,false,10,5.584662029883316,-1,,,0,-1,,,false,,0,0,0,false,"N",true,false,false,false,"",false,false,0,0,0,1,1,0,0,0,0,1,0,1,27726 +29625,61,1,1,3,3,4,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,0,false,17,4.768890669889258,-1,,,0,-1,,,false,,0,0,0,false,"N",true,false,false,false,"",false,false,0,0,0,16,1,0,0,1,0,0,0,1,29625 +110675,30,1,1,2,3,2,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,0,true,16,3.9205668642399836,-1,,,0,19,13.725626729995362,1.6,true,1,9.73,43.061398,0.35884497,false,"H",false,false,false,false,"",false,false,0,0,0,0,0,0,0,0,0,0,0,0,110675 +112064,48,1,2,2,3,2,false,true,true,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,0,true,16,2.647107057372401,-1,,,0,21,15.492083174049057,0.96,true,1,5.26,28.139997,0.23449998,false,"N",true,false,false,false,"",false,false,0,0,0,17,2,0,0,1,0,1,0,2,112064 +226869,28,1,1,2,3,2,false,true,true,true,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,0,true,9,2.5758755480394475,-1,,,0,24,15.354599835527907,1.67,true,0,11.389999,27.812798,0.23177332,false,"M",true,false,false,false,"work1",false,false,1,1,0,0,0,0,0,0,0,0,0,0,264107 +226869,27,2,2,3,3,4,false,true,true,false,true,false,false,false,false,false,false,true,false,false,false,false,false,false,false,0,false,9,2.5758755480394475,-1,,,0,-1,,,false,,0,0,0,false,"N",true,false,false,false,"",false,false,0,0,0,1,1,0,0,0,0,1,0,1,264108 +256660,22,1,2,2,3,2,false,true,true,false,true,false,false,false,false,false,false,true,false,false,false,false,false,false,false,0,true,10,1.5416062020885206,-1,,,0,1,14.098626830690556,1.57,true,0,10.940001,18.8746,0.15728833,false,"M",true,false,false,false,"work1",false,false,1,1,0,0,0,0,0,0,0,0,0,0,323689 +256660,23,2,2,2,3,2,false,true,true,false,true,false,false,false,false,false,false,true,false,false,false,false,false,false,false,0,true,10,1.5416062020885206,-1,,,0,5,14.131499655555483,1.14,true,0,8.049999,16.1446,0.13453834,false,"H",false,false,false,false,"",false,false,0,0,0,0,0,0,0,0,0,0,0,0,323690 +257531,22,1,2,2,3,2,false,true,true,false,true,false,false,false,false,false,false,true,false,false,false,false,false,false,false,0,true,16,8.417809979092251,-1,,,0,12,13.802811148472596,0.67,true,0,4.65,17.645102,0.14704251,false,"M",true,false,false,false,"work1",false,false,1,1,0,0,0,0,0,0,0,0,0,0,325431 +257531,22,2,2,2,3,2,false,true,true,false,true,false,false,false,false,false,false,true,false,false,false,false,false,false,false,0,true,16,8.417809979092251,-1,,,0,2,13.787334502957885,0.66,true,0,5.0699997,20.4971,0.17080918,false,"N",true,false,false,false,"",false,false,0,0,0,16,1,0,0,1,0,0,0,1,325432 +370497,52,1,1,2,3,2,false,true,true,true,false,false,false,false,true,true,false,false,false,false,false,false,false,false,false,0,true,21,4.005080218193281,-1,,,0,4,15.371088271013553,0.88,true,0,5.3900003,18.3591,0.1529925,false,"H",false,false,false,false,"",false,false,0,0,0,0,0,0,0,0,0,0,0,0,595684 +370497,18,2,1,3,1,6,true,true,true,true,false,false,false,false,false,true,false,true,false,false,false,true,false,true,false,2,false,21,4.005080218193281,13,16.12477815830904,0.76,5.08,-1,,,false,,0,0,0,false,"H",false,false,false,false,"",false,false,0,0,0,0,0,0,0,0,0,0,0,0,595685 +370497,14,3,2,4,1,7,false,false,false,false,true,false,false,false,true,false,false,true,false,false,false,true,true,false,false,1,false,21,2.6713885055349182,8,20.920595339763924,0.71,5.07,-1,,,false,,0,0,0,false,"M",true,false,false,false,"school1",false,false,1,0,0,0,0,0,0,0,0,0,0,0,595686 +386699,47,1,1,2,3,2,false,true,true,true,false,false,false,false,false,true,true,false,false,false,false,false,false,false,false,0,true,7,4.590650730864872,-1,,,0,12,15.426483631583249,0.77,true,0,4.81,14.3318,0.11943167,false,"M",true,false,false,false,"work1",false,false,1,1,0,0,0,0,0,0,0,0,0,0,644290 +386699,43,2,2,1,3,1,false,true,true,false,true,false,false,false,false,true,false,true,false,false,false,false,false,false,false,0,true,7,4.590650730864872,-1,,,0,2,15.430078506697235,0.96,true,0,5.88,18.5929,0.15494083,false,"M",true,false,false,false,"work1",false,false,1,1,0,8,1,0,0,0,1,0,0,1,644291 +386699,7,3,1,4,1,7,false,false,false,true,false,false,false,false,false,false,true,true,false,false,false,true,true,false,false,1,false,7,3.0619640374868697,9,20.36118907767507,0.86,4.91,-1,,,false,,0,0,0,false,"M",true,false,false,false,"school1",false,false,1,0,0,0,0,0,0,0,0,0,0,0,644292 +386761,47,1,1,2,3,2,false,true,true,true,false,false,false,false,false,true,true,false,false,false,false,false,false,false,false,0,true,16,5.098171219655474,-1,,,0,4,15.590597722513333,0.68,true,0,4.63,17.6251,0.14687583,false,"M",true,false,false,false,"work1",false,false,1,1,0,41,3,1,0,0,1,1,0,2,644476 +386761,43,2,2,1,3,1,false,true,true,false,true,false,false,false,false,true,false,true,false,false,false,false,false,false,false,0,true,16,5.098171219655474,-1,,,0,15,15.601574170160411,0.47,true,0,3.3899999,16.379402,0.13649502,false,"N",true,false,false,false,"",false,false,0,0,0,16,1,0,0,1,0,0,0,1,644477 +386761,7,3,1,4,1,7,false,false,false,true,false,false,false,false,false,false,true,true,false,false,false,true,true,false,false,1,false,16,3.4004802035102015,20,19.95067445224191,1.49,8.48,-1,,,false,,0,0,0,false,"M",true,false,false,false,"school1",false,false,1,0,0,0,0,0,0,0,0,0,0,0,644478 +568785,80,1,1,3,3,5,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,0,false,17,7.32202829064968,-1,,,0,-1,,,false,,0,0,0,false,"N",true,false,false,false,"",false,false,0,0,0,1,1,0,0,0,0,1,0,1,1265898 +570454,85,1,1,3,3,5,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,0,false,21,10.364201291815256,-1,,,0,-1,,,false,,0,0,0,false,"H",false,false,false,false,"",false,false,0,0,0,0,0,0,0,0,0,0,0,0,1267567 +703381,65,1,1,3,3,5,false,true,true,true,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,0,false,25,1.8372202530691708,-1,,,0,-1,,,false,,0,0,0,false,"N",true,false,false,false,"",false,false,0,0,0,16,1,0,0,1,0,0,0,1,1427193 +703381,69,2,2,3,3,5,false,true,true,false,true,false,true,false,false,false,false,false,false,false,false,false,false,false,false,0,false,25,1.8372202530691708,-1,,,0,-1,,,false,,0,0,0,false,"N",true,false,false,false,"",false,false,0,0,0,10,2,0,0,0,1,0,1,2,1427194 +763879,60,1,1,3,3,4,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,0,false,6,10.449019648473794,-1,,,0,-1,,,false,,0,0,0,false,"N",true,false,false,false,"",false,false,0,0,0,16,1,0,0,1,0,0,0,1,1572659 +764150,52,1,1,3,3,4,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,0,false,9,7.593970066915795,-1,,,0,-1,,,false,,0,0,0,false,"N",true,false,false,false,"",false,false,0,0,0,24,2,0,0,1,1,0,0,2,1572930 +823426,31,1,1,1,3,1,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,0,true,11,12.952762239760721,-1,,,0,2,15.565710510565173,1.02,true,0,6.81,21.0208,0.17517333,false,"H",false,false,false,false,"",false,false,0,0,0,0,0,0,0,0,0,0,0,0,1632206 +823501,36,1,1,1,3,1,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,0,true,12,4.360890352038947,-1,,,0,13,15.700363517892352,0.24,true,0,1.89,7.7099996,0.06425,false,"M",true,false,false,false,"work1",false,false,1,1,0,0,0,0,0,0,0,0,0,0,1632281 +824207,29,1,1,2,3,2,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,0,true,18,17.13534609189038,-1,,,0,4,13.53236354932943,1.26,true,0,7.3900003,22.4473,0.18706083,false,"M",true,false,false,false,"work1",false,false,1,1,0,0,0,0,0,0,0,0,0,0,1632987 +982875,25,1,1,1,3,1,false,true,true,true,false,false,false,false,false,false,false,true,true,false,false,false,false,false,false,0,true,16,6.021274002645185,-1,,,0,10,15.590713009893207,1.61,true,0,9.91,30.3414,0.252845,false,"M",true,false,false,false,"work1",false,false,1,1,0,0,0,0,0,0,0,0,0,0,1875721 +982875,25,2,2,2,2,3,false,true,true,false,true,false,false,false,false,false,true,false,false,true,false,true,false,false,true,3,true,16,6.021274002645185,13,12.760001421247718,0.46,2.99,4,15.603313124205917,0.68,true,0,4.63,17.6251,0.14687583,false,"N",true,false,false,false,"",false,false,0,0,0,4,1,0,1,0,0,0,0,1,1875722 +1099626,35,1,1,1,3,1,false,true,true,true,false,false,false,true,false,false,false,false,true,false,false,false,false,false,false,0,true,20,10.708809147889093,-1,,,0,2,13.499558028231366,1.63,true,0,10.13,31.752003,0.2646,false,"M",true,false,false,false,"work1",false,false,1,1,0,0,0,0,0,0,0,0,0,0,2159057 +1099626,36,2,2,3,2,3,false,true,true,false,true,false,false,true,false,false,true,false,false,false,false,true,false,false,true,3,false,20,10.708809147889093,9,7.716620155624279,0.78,4.6,-1,,,false,,0,0,0,false,"M",true,false,false,false,"school1",false,false,1,0,0,0,0,0,0,0,0,0,0,0,2159058 +1099626,3,3,1,4,1,8,false,false,false,true,false,false,false,false,false,false,true,false,true,false,false,true,true,false,false,1,false,20,7.142775701642026,20,10.16596170222939,0.23,1.4,-1,,,false,,0,0,0,false,"M",true,false,false,false,"school1",false,false,1,0,0,0,0,0,0,0,0,0,0,0,2159059 +1173905,40,1,1,3,3,4,false,true,true,true,false,true,false,false,false,true,false,false,false,false,false,false,false,false,false,0,false,8,2.9767301704144296,-1,,,0,-1,,,false,,0,0,0,false,"N",true,false,false,false,"",false,false,0,0,0,8,1,0,0,0,1,0,0,1,2458500 +1173905,42,2,2,3,3,4,false,true,true,false,true,true,false,false,false,true,false,false,false,false,false,false,false,false,false,0,false,8,2.9767301704144296,-1,,,0,-1,,,false,,0,0,0,false,"N",true,false,false,false,"",false,false,0,0,0,32,1,1,0,0,0,0,0,0,2458501 +1173905,12,3,2,4,1,7,false,false,false,false,true,true,false,false,false,true,false,false,false,false,false,true,true,false,false,1,false,8,1.9854790236664246,8,20.93607187982974,0.12,0.78,-1,,,false,,0,0,0,false,"M",true,false,false,false,"school1",false,false,1,0,1,0,0,0,0,1,0,0,0,0,2458502 +1173905,9,4,1,4,1,7,false,false,false,true,false,true,false,false,false,true,false,false,false,false,false,true,true,false,false,1,false,8,1.9854790236664246,8,20.57860073687866,0.12,0.78,-1,,,false,,0,0,0,false,"M",true,false,false,false,"school1",false,false,1,0,1,0,0,0,0,0,0,0,0,0,2458503 +1196298,36,1,1,1,3,1,false,true,true,true,false,true,false,true,false,true,false,false,false,false,false,false,false,false,false,0,true,25,12.074894163110672,-1,,,0,1,15.551818554287767,0.73,true,0,5.21,17.4917,0.14576416,false,"M",true,false,false,false,"work1",false,false,1,1,0,0,0,0,0,0,0,0,0,0,2566698 +1196298,29,2,2,3,3,4,false,true,true,false,true,false,false,true,false,true,true,false,false,false,false,false,false,false,false,0,false,25,12.074894163110672,-1,,,0,-1,,,false,,0,0,0,false,"H",false,false,false,false,"",false,false,0,0,0,0,0,0,0,0,0,0,0,0,2566699 +1196298,8,3,1,4,1,7,false,false,false,true,false,true,false,true,false,false,true,false,false,false,false,true,true,false,false,1,false,25,8.05395440679482,25,20.139937486434746,0.13,0.86,-1,,,false,,0,0,0,false,"M",true,false,false,false,"school1",false,false,1,0,0,0,0,0,0,0,0,0,0,0,2566700 +1196298,4,4,2,4,1,8,false,false,false,false,true,true,false,true,false,true,true,false,false,false,false,true,true,false,false,1,false,25,8.05395440679482,3,20.285545324456304,0.41,3.5700002,-1,,,false,,0,0,0,false,"M",true,false,false,false,"school1",false,false,1,0,0,0,0,0,0,0,0,0,0,0,2566701 +1196298,2,5,1,4,1,8,false,false,false,true,false,true,false,true,false,true,true,false,false,false,false,true,true,false,false,1,false,25,8.05395440679482,6,20.162884633511972,0.78,5.63,-1,,,false,,0,0,0,false,"M",true,false,false,false,"school1",false,false,1,0,0,0,0,0,0,0,0,0,0,0,2566702 +1286259,67,1,2,3,3,5,false,true,true,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,0,false,8,11.48239030277669,-1,,,0,-1,,,false,,0,0,0,false,"N",true,false,false,false,"",false,false,0,0,0,17,2,0,0,1,0,1,0,2,2936550 +1286557,67,1,1,3,3,5,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,0,false,11,3.6040501851984663,-1,,,0,-1,,,false,,0,0,0,false,"N",true,false,false,false,"",false,false,0,0,0,5,2,0,1,0,0,1,0,2,2936848 +1363467,68,1,1,3,3,5,false,true,true,true,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,0,false,24,10.4823297442415,-1,,,0,-1,,,false,,0,0,0,false,"N",true,false,false,false,"",false,false,0,0,0,16,1,0,0,1,0,0,0,1,3061894 +1363467,63,2,2,2,3,2,false,true,true,false,true,false,true,false,false,false,false,false,false,false,false,false,false,false,false,0,true,24,10.4823297442415,-1,,,0,25,13.759441855802429,0.5,true,0,3.52,15.5543995,0.12962,false,"M",true,false,false,false,"work1",false,false,1,1,0,9,2,0,0,0,1,1,0,2,3061895 +1402945,66,1,1,2,3,2,false,true,true,true,false,false,false,false,false,false,false,true,true,false,false,false,false,false,false,0,true,25,10.32100270756728,-1,,,0,24,15.538000311308064,0.48,true,0,3.52,15.5543995,0.12962,false,"M",true,false,false,false,"work1",false,false,1,1,0,0,0,0,0,0,0,0,0,0,3188482 +1402945,48,2,2,2,3,2,false,true,true,false,true,false,false,false,false,false,false,true,true,false,false,false,false,false,false,0,true,25,10.32100270756728,-1,,,0,2,15.531149525318941,0.45,true,0,3.4699998,17.33,0.14441666,false,"M",true,false,false,false,"work1",false,false,1,1,1,0,0,0,0,0,0,1,0,0,3188483 +1402945,22,3,2,2,2,3,false,true,true,false,true,false,false,false,false,false,false,true,true,true,false,true,false,false,true,3,true,25,10.32100270756728,13,11.401936182943931,0.91,7.08,2,15.547680085581693,0.45,true,0,3.4699998,17.33,0.14441666,false,"M",true,false,false,false,"work_and_school",true,true,2,1,1,0,0,0,0,0,0,0,0,0,3188484 +1402945,19,4,2,2,2,3,true,true,true,false,true,false,false,false,false,false,false,true,true,true,false,true,false,false,true,3,true,25,10.32100270756728,9,11.406264826287744,1.56,10.530001,2,15.533387802712083,0.45,true,0,3.4699998,17.33,0.14441666,false,"M",true,false,false,false,"work1",false,false,1,1,1,0,0,0,0,0,0,0,0,0,3188485 +1444715,42,1,1,2,3,2,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,0,true,14,4.0074881716523025,-1,,,0,8,13.89688636450196,1.18,true,0,8.18,15.9911,0.13325916,false,"H",false,false,false,false,"",false,false,0,0,0,0,0,0,0,0,0,0,0,0,3232955 +1445222,43,1,2,1,3,1,false,true,true,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,0,true,17,7.595766438703255,-1,,,0,22,13.744452615299863,1.36,true,0,7.59,37.2188,0.31015667,false,"M",true,false,false,false,"work1",false,false,1,1,0,17,3,0,0,2,0,1,0,3,3233462 +1511234,53,1,2,1,3,1,false,true,true,false,true,false,false,false,false,false,false,false,true,false,false,false,false,false,false,0,true,8,4.2960940332239455,-1,,,0,1,13.81269859955603,1.05,true,0,7.6400003,17.013203,0.1417767,false,"M",true,false,false,false,"work1",false,false,1,1,0,0,0,0,0,0,0,0,0,0,3328568 +1511234,61,2,1,3,2,3,false,true,true,true,false,false,false,false,false,false,true,false,false,false,false,true,false,false,true,3,false,8,4.2960940332239455,13,8.537371920112303,0.91,6.96,-1,,,false,,0,0,0,false,"N",true,false,false,false,"",false,false,0,0,0,20,2,0,1,1,0,0,0,2,3328569 +1594621,31,1,1,1,3,1,false,true,true,true,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,0,true,10,17.6624037989451,-1,,,0,11,15.65673756421631,0.49,true,0,4.61,14.99,0.124916665,false,"M",true,false,false,false,"work1",false,false,1,1,0,1,1,0,0,0,0,1,0,1,3495342 +1594621,25,2,2,2,3,2,false,true,true,false,true,false,false,false,false,false,true,false,false,false,false,false,false,false,false,0,true,10,17.6624037989451,-1,,,0,9,15.663788754130458,0.49,true,0,2.79,13.610002,0.11341668,false,"M",true,false,false,false,"work1",false,false,1,1,0,0,0,0,0,0,0,0,0,0,3495343 +1645132,56,1,2,3,2,3,false,true,true,false,true,false,false,false,false,true,false,false,false,false,false,true,false,false,true,3,false,9,11.518178930487295,9,9.065704601782443,0.17,1.08,-1,,,false,,0,0,0,false,"N",true,false,false,false,"",false,false,0,0,0,20,2,0,1,1,0,0,0,2,3596364 +1645132,13,2,2,4,1,7,false,false,false,false,true,false,false,false,false,false,false,false,true,false,false,true,true,false,false,1,false,9,7.682625346635026,10,10.997808724651822,0.33,2.79,-1,,,false,,0,0,0,false,"N",true,true,false,false,"",false,false,0,0,0,2,1,0,0,0,0,0,1,1,3596365 +1747467,36,1,2,1,3,1,false,true,true,false,true,false,false,false,false,true,false,true,false,false,false,false,false,false,false,0,true,16,15.5812014089547,-1,,,0,11,15.790768885585281,1.13,true,0,6.85,23.182701,0.19318917,false,"M",true,false,false,false,"work1",false,false,1,1,0,0,0,0,0,0,0,0,0,0,3891102 +1747467,67,2,1,2,3,2,false,true,true,true,false,false,false,false,false,true,true,false,false,false,false,false,false,false,false,0,true,16,15.5812014089547,-1,,,0,12,15.810492366417014,0.67,true,0,4.65,17.645102,0.14704251,false,"N",true,false,false,false,"",false,false,0,0,0,16,1,0,0,1,0,0,0,1,3891103 +1747467,8,3,1,4,1,7,false,false,false,true,false,false,false,false,false,false,true,true,false,false,false,true,true,false,false,1,false,16,10.392661339772785,17,20.51958126009443,0.55,3.84,-1,,,false,,0,0,0,false,"M",true,false,false,false,"school1",false,false,1,0,0,1,2,0,0,0,0,2,0,2,3891104 +1810015,29,1,1,3,2,3,false,true,true,true,false,true,false,true,true,false,true,true,false,false,false,true,false,false,true,3,false,16,3.705326363656352,12,10.535691561088802,0.67,4.65,-1,,,false,,0,0,0,false,"M",true,false,false,false,"school1",false,false,1,0,0,0,0,0,0,0,0,0,0,0,4171615 +1810015,20,2,1,3,3,4,false,true,true,true,false,true,false,true,true,false,true,true,true,false,false,false,false,false,false,0,false,16,3.705326363656352,-1,,,0,-1,,,false,,0,0,0,false,"N",true,false,false,false,"",false,false,0,0,0,8,1,0,0,0,1,0,0,1,4171616 +1810015,27,3,1,1,3,1,false,true,true,true,false,true,false,true,true,false,true,true,true,false,false,false,false,false,false,0,true,16,3.705326363656352,-1,,,0,15,14.465318636285936,0.47,true,0,3.3899999,16.379402,0.13649502,false,"M",true,false,false,false,"work1",false,false,1,1,0,0,0,0,0,0,0,0,0,0,4171617 +1810015,24,4,1,2,3,2,false,true,true,true,false,true,false,true,true,false,true,true,true,false,false,false,false,false,false,0,true,16,3.705326363656352,-1,,,0,13,14.461210466251647,0.46,true,0,2.99,15.41,0.12841667,false,"H",false,false,false,false,"",false,false,0,0,0,0,0,0,0,0,0,0,0,0,4171618 +1810015,58,5,2,3,3,4,false,true,true,false,true,true,false,true,true,false,true,true,true,false,false,false,false,false,false,0,false,16,3.705326363656352,-1,,,0,-1,,,false,,0,0,0,false,"N",true,false,false,false,"",false,false,0,0,0,16,1,0,0,1,0,0,0,1,4171619 +1810015,3,6,2,4,1,8,false,false,false,false,true,true,false,false,true,false,true,true,true,false,false,true,true,false,false,1,false,16,2.4714526845587867,8,11.178622471450844,1.39,9.309999,-1,,,false,,0,0,0,false,"M",true,false,false,false,"school1",false,false,1,0,0,0,0,0,0,0,0,0,0,0,4171620 +1810015,19,7,2,2,1,6,true,true,true,false,true,true,false,true,false,false,true,true,true,true,false,true,false,true,false,2,true,16,3.705326363656352,13,7.554959896288849,0.46,2.99,22,14.475775585095361,1.01,true,0,5.84,25.505198,0.21254331,false,"H",false,false,false,false,"",false,false,0,0,0,0,0,0,0,0,0,0,0,0,4171621 +1810015,31,8,2,3,3,4,false,true,true,false,true,true,false,true,true,false,true,true,true,false,false,false,false,false,false,0,false,16,3.705326363656352,-1,,,0,-1,,,false,,0,0,0,false,"N",true,false,false,false,"",false,false,0,0,0,16,1,0,0,1,0,0,0,1,4171622 +1810015,36,9,2,1,3,1,false,true,true,false,true,true,false,true,true,false,true,true,true,false,false,false,false,false,false,0,true,16,3.705326363656352,-1,,,0,21,14.455337491545183,0.96,true,1,5.26,28.139997,0.23449998,false,"M",true,false,false,false,"work1",false,false,1,1,0,0,0,0,0,0,0,0,0,0,4171623 +1952792,74,1,1,2,3,2,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,0,true,14,2.5980714149446418,-1,,,0,12,15.708211617788441,0.45,true,0,3.15,9.945101,0.08287584,false,"M",true,false,false,false,"work1",false,false,1,1,0,9,2,0,0,0,1,1,0,2,4823797 +2048204,40,1,1,1,3,1,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,0,true,5,6.218529751813423,-1,,,0,23,14.004424311191945,1.46,true,1,9.16,31.552597,0.26293832,false,"M",true,false,false,false,"work1",false,false,1,1,0,0,0,0,0,0,0,0,0,0,5057160 +2048382,33,1,1,1,3,1,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,0,true,7,8.219354788406312,-1,,,0,2,13.895050253457644,0.96,true,0,5.88,18.5929,0.15494083,false,"M",true,false,false,false,"work1",false,false,1,1,0,30,4,0,1,1,1,0,1,4,5057338 +2223027,49,1,1,1,3,1,false,true,true,true,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,0,true,9,6.387619611064064,-1,,,0,4,13.912084249194642,1.23,true,0,8.16,15.9552,0.13296,false,"M",true,false,false,false,"work1",false,false,1,1,0,0,0,0,0,0,0,0,0,0,5387762 +2223027,39,2,2,1,3,1,false,true,true,false,true,false,false,false,false,false,true,false,false,false,false,false,false,false,false,0,true,9,6.387619611064064,-1,,,0,14,13.91744334490833,1.55,true,0,10.71,20.1446,0.16787167,false,"M",true,false,false,false,"work1",false,false,1,1,0,0,0,0,0,0,0,0,0,0,5387763 +2223759,28,1,2,1,3,1,false,true,true,false,true,false,false,false,false,false,true,false,false,false,false,false,false,false,false,0,true,16,7.408554295817758,-1,,,0,1,14.01123384048398,0.51,true,0,3.73,17.6825,0.14735417,false,"M",true,false,false,false,"work1",false,false,1,1,1,0,0,0,1,0,0,0,0,0,5389226 +2223759,29,2,1,1,3,1,false,true,true,true,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,0,true,16,7.408554295817758,-1,,,0,23,14.01521677947659,1.21,true,1,8.01,38.2134,0.31844503,false,"M",true,false,false,false,"work1",false,false,1,1,1,0,0,0,0,0,0,0,0,0,5389227 +2727273,72,1,1,2,3,2,false,true,true,true,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,0,true,20,21.606392235487583,-1,,,0,20,13.845922250496361,0.23,true,1,1.4,7.7999997,0.065,false,"M",true,false,false,false,"work1",false,false,1,1,0,1,1,0,0,0,0,1,0,1,7305540 +2727273,62,2,2,2,3,2,false,true,true,false,true,false,false,false,false,false,false,true,false,false,false,false,false,false,false,0,true,20,21.606392235487583,-1,,,0,9,13.82908782269542,0.78,true,0,4.6,23.4,0.195,false,"M",true,false,false,false,"work2",false,false,2,2,0,0,0,0,0,0,0,0,0,0,7305541 +2762078,57,1,1,3,3,4,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,0,false,20,6.660210105218662,-1,,,0,-1,,,false,,0,0,0,false,"N",true,false,false,false,"",false,false,0,0,0,16,1,0,0,1,0,0,0,1,7453413 +2820538,18,1,1,2,3,2,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,0,true,8,2.467783203776223,-1,,,0,11,15.473764868535847,0.54,true,0,3.6,14.124699,0.11770582,false,"H",false,false,false,false,"",false,false,0,0,0,0,0,0,0,0,0,0,0,0,7511873 +2820774,35,1,1,1,3,1,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,0,true,8,1.8304507502262177,-1,,,0,2,15.359656301391546,0.99,true,0,7.16,19.194601,0.15995501,false,"M",true,false,false,false,"work1",false,false,1,1,0,0,0,0,0,0,0,0,0,0,7512109 +2821179,60,1,1,2,3,2,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,0,true,8,1,-1,,,0,22,15.316797175665155,1.43,true,0,9.67,22.914701,0.19095585,false,"N",true,false,false,false,"",false,false,0,0,0,22,3,0,1,1,0,0,1,3,7512514 +2822097,39,1,2,2,3,2,false,true,true,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,0,true,8,10.786630771770398,-1,,,0,7,15.586470857848573,0.25,true,0,2.38,12.82,0.10683333,false,"M",true,false,false,false,"work1",false,false,1,1,0,0,0,0,0,0,0,0,0,0,7513432 +2822219,18,1,2,1,3,1,true,true,true,false,true,false,false,false,false,false,false,false,false,false,true,false,false,false,false,0,true,8,2.9220038814547133,-1,,,0,9,15.428749460641615,0.53,true,0,3.33,14.864599,0.12387166,false,"M",true,false,false,false,"work1",false,false,1,1,0,0,0,0,0,0,0,0,0,0,7513554 +2822230,19,1,2,2,2,3,true,true,true,false,true,false,false,false,false,false,false,false,false,true,false,true,false,false,true,3,true,8,7.558195608572484,12,12.656259331864534,0.72,6.04,25,15.543074447856814,1.14,true,0,8.04,24.2457,0.20204751,false,"M",true,false,false,false,"work1",false,false,1,1,0,0,0,0,0,0,0,0,0,0,7513565 +2832182,87,1,2,3,3,5,false,true,true,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,0,false,7,3.0402011627479264,-1,,,0,-1,,,false,,0,0,0,false,"N",true,false,false,false,"",false,false,0,0,0,1,1,0,0,0,0,1,0,1,7523517 +2832429,93,1,2,3,3,5,false,true,true,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,0,false,16,7.951880936376377,-1,,,0,-1,,,false,,0,0,0,false,"H",false,false,false,false,"",false,false,0,0,0,0,0,0,0,0,0,0,0,0,7523764 diff --git a/activitysim/estimation/test/test_edb_creation/survey_data/final_tours.csv b/activitysim/estimation/test/test_edb_creation/survey_data/final_tours.csv new file mode 100644 index 000000000..8dc5c1206 --- /dev/null +++ b/activitysim/estimation/test/test_edb_creation/survey_data/final_tours.csv @@ -0,0 +1,118 @@ +"person_id","tour_type","tour_type_count","tour_type_num","tour_num","tour_count","tour_category","number_of_participants","destination","origin","household_id","tdd","start","end","duration","composition","destination_logsum","tour_mode","mode_choice_logsum","atwork_subtour_frequency","parent_tour_id","stop_frequency","primary_purpose","tour_id" +264107,"work",1,1,1,1,"mandatory",1,24,9,226869,49,7,19,12,"",,"WALK_LRF",5.706465236833864,"no_subtours",,"0out_0in","work",10828426 +323689,"work",1,1,1,1,"mandatory",1,1,10,256660,106,11,18,7,"",,"WALK_LRF",5.762750226520877,"no_subtours",,"0out_0in","work",13271288 +325431,"work",1,1,1,1,"mandatory",1,12,16,257531,47,7,17,10,"",,"TNC_SINGLE",5.877301554634767,"no_subtours",,"1out_3in","work",13342710 +595686,"school",1,1,1,1,"mandatory",1,8,21,370497,46,7,16,9,"",,"WALK_LOC",19.487029458680386,"",,"0out_0in","school",24423157 +644290,"work",1,1,1,1,"mandatory",1,12,7,386699,122,12,22,10,"",,"WALK_LOC",5.610320631120498,"no_subtours",,"0out_0in","work",26415929 +644291,"work",1,1,1,1,"mandatory",1,2,7,386699,47,7,17,10,"",,"WALK",5.650927738864148,"no_subtours",,"0out_0in","work",26415970 +644292,"school",1,1,1,1,"mandatory",1,9,7,386699,130,13,19,6,"",,"WALK_LRF",20.42262619148089,"",,"0out_1in","school",26416003 +644476,"work",1,1,1,1,"mandatory",1,4,16,386761,47,7,17,10,"",,"SHARED3FREE",1.761501686723627,"no_subtours",,"0out_0in","work",26423555 +644478,"school",1,1,1,1,"mandatory",1,20,16,386761,107,11,19,8,"",,"WALK_LRF",2.675051981340837,"",,"0out_0in","school",26423629 +1632281,"work",1,1,1,1,"mandatory",1,13,12,823501,49,7,19,12,"",,"TNC_SINGLE",5.737987317212601,"eat",,"0out_0in","work",66923560 +1632987,"work",1,1,1,1,"mandatory",1,4,18,824207,151,15,21,6,"",,"WALK_LRF",6.1374959346320095,"no_subtours",,"0out_0in","work",66952506 +1875721,"work",1,1,1,1,"mandatory",1,10,16,982875,64,8,18,10,"",,"WALK_LOC",0.9683784523915128,"no_subtours",,"0out_0in","work",76904600 +2159057,"work",1,1,1,1,"mandatory",1,2,20,1099626,48,7,18,11,"",,"WALK_LRF",-0.03845876909164505,"no_subtours",,"0out_1in","work",88521376 +2159058,"school",1,1,1,1,"mandatory",1,9,20,1099626,148,15,18,3,"",,"TAXI",0.525351958951068,"",,"0out_0in","univ",88521409 +2159059,"school",1,1,1,1,"mandatory",1,20,20,1099626,59,8,13,5,"",,"WALK",-0.2634059707184708,"",,"0out_0in","school",88521450 +2458502,"school",1,1,1,1,"mandatory",1,8,8,1173905,64,8,18,10,"",,"WALK",0.1992035348928025,"",,"1out_0in","school",100798613 +2458503,"school",1,1,1,1,"mandatory",1,8,8,1173905,60,8,14,6,"",,"WALK",0.2156875433576043,"",,"0out_0in","school",100798654 +2566698,"work",1,1,1,1,"mandatory",1,1,25,1196298,30,6,17,11,"",,"TNC_SINGLE",5.932545072370928,"no_subtours",,"0out_0in","work",105234657 +2566700,"school",1,1,1,1,"mandatory",1,25,25,1196298,45,7,15,8,"",,"WALK",18.287824829249224,"",,"0out_0in","school",105234731 +2566701,"school",1,1,1,1,"mandatory",1,3,25,1196298,59,8,13,5,"",,"WALK",19.073489619505818,"",,"0out_0in","school",105234772 +2566702,"school",1,1,1,1,"mandatory",1,6,25,1196298,120,12,20,8,"",,"WALK_LOC",18.510662532745897,"",,"0out_1in","school",105234813 +3061895,"work",1,1,1,1,"mandatory",1,25,24,1363467,26,6,13,7,"",,"WALK",0.2804129197266325,"no_subtours",,"0out_0in","work",125537734 +3188482,"work",1,1,1,1,"mandatory",1,24,25,1402945,63,8,17,9,"",,"WALK",2.249899545931642,"no_subtours",,"1out_0in","work",130727801 +3188483,"work",1,1,1,1,"mandatory",1,2,25,1402945,78,9,17,8,"",,"WALK_LOC",2.2185417162398577,"no_subtours",,"0out_0in","work",130727842 +3188484,"work",1,1,1,2,"mandatory",1,2,25,1402945,73,9,12,3,"",,"WALK_LOC",2.240731078612465,"no_subtours",,"0out_0in","work",130727883 +3188484,"school",1,1,2,2,"mandatory",1,13,25,1402945,155,16,17,1,"",,"WALK",3.181510470161417,"",,"0out_2in","univ",130727875 +3188485,"work",1,1,1,1,"mandatory",1,2,25,1402945,96,10,21,11,"",,"BIKE",2.1487334423330005,"no_subtours",,"1out_1in","work",130727924 +3233462,"work",1,1,1,1,"mandatory",1,22,17,1445222,53,7,23,16,"",,"TNC_SINGLE",5.922341860291894,"no_subtours",,"0out_0in","work",132571981 +3328568,"work",1,1,1,1,"mandatory",1,1,8,1511234,30,6,17,11,"",,"WALK_LRF",6.052905188790869,"no_subtours",,"0out_0in","work",136471327 +3495342,"work",1,1,1,1,"mandatory",1,11,10,1594621,46,7,16,9,"",,"WALK_LOC",6.106308966698332,"no_subtours",,"0out_0in","work",143309061 +3495343,"work",1,1,1,1,"mandatory",1,9,10,1594621,128,13,17,4,"",,"WALK",6.301543519645703,"eat",,"0out_0in","work",143309102 +3891102,"work",1,1,1,1,"mandatory",1,11,16,1747467,46,7,16,9,"",,"WALK_LOC",5.87041941077222,"no_subtours",,"0out_0in","work",159535221 +3891104,"school",1,1,1,1,"mandatory",1,17,16,1747467,44,7,14,7,"",,"WALK_LRF",20.477184369166057,"",,"0out_0in","school",159535295 +4171615,"school",1,1,1,1,"mandatory",1,12,16,1810015,124,13,13,0,"",,"WALK",2.9751655865930506,"",,"0out_0in","univ",171036246 +4171617,"work",1,1,1,1,"mandatory",1,15,16,1810015,79,9,18,9,"",,"WALK",1.6497477694001255,"no_subtours",,"1out_0in","work",171036336 +4171620,"school",1,1,1,1,"mandatory",1,8,16,1810015,45,7,15,8,"",,"WALK_LOC",1.0091399254943096,"",,"0out_0in","school",171036451 +4171623,"work",1,1,1,1,"mandatory",1,21,16,1810015,69,8,23,15,"",,"WALK",1.3627881263595452,"eat",,"1out_1in","work",171036582 +4823797,"work",1,1,1,1,"mandatory",1,12,14,1952792,103,11,15,4,"",,"BIKE",-0.4317170835900537,"no_subtours",,"0out_0in","work",197775716 +5057160,"work",1,1,1,1,"mandatory",1,23,5,2048204,43,7,13,6,"",,"TNC_SINGLE",5.760634465125435,"no_subtours",,"0out_0in","work",207343599 +5057338,"work",1,1,1,1,"mandatory",1,2,7,2048382,30,6,17,11,"",,"TNC_SINGLE",5.899143436225317,"no_subtours",,"0out_0in","work",207350897 +5387762,"work",1,1,1,1,"mandatory",1,4,9,2223027,47,7,17,10,"",,"WALK_HVY",6.208077244952496,"no_subtours",,"0out_0in","work",220898281 +5387763,"work",1,1,1,1,"mandatory",1,14,9,2223027,63,8,17,9,"",,"WALK_HVY",6.045289166977812,"no_subtours",,"1out_1in","work",220898322 +5389226,"work",1,1,1,1,"mandatory",1,1,16,2223759,79,9,18,9,"",,"WALK",5.842396021294293,"eat",,"0out_0in","work",220958305 +5389227,"work",1,1,1,1,"mandatory",1,23,16,2223759,33,6,20,14,"",,"WALK",5.866576082823254,"no_subtours",,"0out_0in","work",220958346 +7305540,"work",1,1,1,1,"mandatory",1,20,20,2727273,103,11,15,4,"",,"DRIVEALONEFREE",1.9004730948098723,"no_subtours",,"0out_0in","work",299527179 +7305541,"work",2,1,1,2,"mandatory",1,9,20,2727273,26,6,13,7,"",,"WALK",1.920480893206963,"no_subtours",,"0out_0in","work",299527220 +7305541,"work",2,2,2,2,"mandatory",1,9,20,2727273,139,14,18,4,"",,"WALK",1.9391010189034459,"no_subtours",,"0out_0in","work",299527221 +7512109,"work",1,1,1,1,"mandatory",1,2,8,2820774,65,8,19,11,"",,"WALK",-0.14126603138986757,"eat",,"0out_2in","work",307996508 +7513432,"work",1,1,1,1,"mandatory",1,7,8,2822097,10,5,15,10,"",,"BIKE",0.2843400004991259,"no_subtours",,"0out_0in","work",308050751 +7513554,"work",1,1,1,1,"mandatory",1,9,8,2822219,11,5,16,11,"",,"WALK",5.610133706923624,"no_subtours",,"0out_0in","work",308055753 +7513565,"work",1,1,1,1,"mandatory",1,25,8,2822230,79,9,18,9,"",,"WALK",5.728223421490162,"no_subtours",,"1out_0in","work",308056204 +5389226,"eatout",1,1,1,1,"joint",2,13,16,2223759,180,20,20,0,"adults",15.700851700188215,"WALK",0.10567890761343558,"",,"0out_0in","eatout",220958279 +2458502,"shopping",1,1,1,1,"joint",2,5,8,1173905,54,8,8,0,"children",13.054650480322216,"SHARED2FREE",-0.5111781667673684,"",,"0out_0in","shopping",100798519 +3188483,"othdiscr",1,1,1,1,"joint",3,24,25,1402945,70,9,9,0,"adults",14.684837106261803,"WALK",-2.2633078286768997,"",,"0out_0in","othdiscr",130727777 +26686,"othmaint",1,1,1,2,"non_mandatory",1,9,8,26686,113,12,13,1,"",15.128287261384761,"BIKE",1.8681013354742215,"",,"0out_0in","othmaint",1094154 +26686,"eatout",1,1,2,2,"non_mandatory",1,5,8,26686,175,19,19,0,"",15.839748033438521,"WALK",4.389345460274684,"",,"0out_0in","eatout",1094132 +26844,"social",1,1,1,1,"non_mandatory",1,7,8,26844,58,8,12,4,"",14.80937948982704,"WALK",2.3971996226244454,"",,"0out_1in","social",1100640 +27726,"othdiscr",1,1,1,1,"non_mandatory",1,9,10,27726,56,8,10,2,"",15.385947148348619,"WALK",2.8054735464903384,"",,"0out_0in","othdiscr",1136791 +29625,"shopping",1,1,1,1,"non_mandatory",1,17,17,29625,145,15,15,0,"",14.097979049989863,"WALK",2.197070314899941,"",,"0out_0in","shopping",1214658 +112064,"shopping",1,1,1,2,"non_mandatory",1,3,16,112064,155,16,17,1,"",12.863310046769188,"WALK",-0.45236824043048446,"",,"0out_0in","shopping",4594657 +112064,"othdiscr",1,1,2,2,"non_mandatory",1,21,16,112064,114,12,14,2,"",14.175152333791747,"DRIVEALONEFREE",-0.2059367766627193,"",,"0out_0in","othdiscr",4594649 +264108,"othdiscr",1,1,1,1,"non_mandatory",1,19,9,226869,86,10,11,1,"",15.408950294845221,"WALK",1.5151852085832618,"",,"0out_0in","othdiscr",10828453 +325432,"shopping",1,1,1,1,"non_mandatory",1,14,16,257531,113,12,13,1,"",14.164245179577405,"TAXI",2.245802766560401,"",,"0out_0in","shopping",13342745 +644291,"othmaint",1,1,1,1,"non_mandatory",1,2,7,386699,179,19,23,4,"",15.115958969714466,"TNC_SINGLE",1.8502335907456067,"",,"0out_0in","othmaint",26415959 +644476,"escort",1,1,1,3,"non_mandatory",1,11,16,386761,1,5,6,1,"",12.795273575389468,"TNC_SINGLE",-0.7934297704888018,"",,"0out_0in","escort",26423525 +644476,"othmaint",1,1,2,3,"non_mandatory",1,13,16,386761,170,18,19,1,"",14.239645494444684,"WALK",0.5448752034137055,"",,"0out_0in","othmaint",26423544 +644476,"othdiscr",1,1,3,3,"non_mandatory",1,16,16,386761,169,18,18,0,"",14.73709932540282,"WALK",1.901940250188323,"",,"0out_0in","othdiscr",26423541 +644477,"shopping",1,1,1,1,"non_mandatory",1,16,16,386761,135,14,14,0,"",13.817208967526978,"DRIVEALONEFREE",1.9264575100035397,"",,"0out_0in","shopping",26423590 +1265898,"othdiscr",1,1,1,1,"non_mandatory",1,20,17,568785,81,9,20,11,"",14.038862408841926,"WALK_LRF",-0.5585556103261583,"",,"0out_0in","othdiscr",51901843 +1427193,"shopping",1,1,1,1,"non_mandatory",1,14,25,703381,130,13,19,6,"",12.69331890781131,"WALK",-1.0811369726727758,"",,"0out_0in","shopping",58514946 +1427194,"othmaint",1,1,1,2,"non_mandatory",1,14,25,703381,43,7,13,6,"",13.942750115929014,"WALK",-0.9941329062085063,"",,"0out_0in","othmaint",58514982 +1427194,"social",1,1,2,2,"non_mandatory",1,2,25,703381,160,16,22,6,"",13.77700865100175,"WALK",1.0801844297966243,"",,"1out_3in","social",58514990 +1572659,"shopping",1,1,1,1,"non_mandatory",1,24,6,763879,50,7,20,13,"",12.944687277006528,"WALK",-0.5346597893073812,"",,"2out_2in","shopping",64479052 +1572930,"shopping",1,1,1,2,"non_mandatory",1,7,9,764150,104,11,16,5,"",12.871444186599586,"WALK",-0.15716862120827904,"",,"0out_0in","shopping",64490163 +1572930,"othmaint",1,1,2,2,"non_mandatory",1,9,9,764150,57,8,11,3,"",14.115990694346833,"WALK",0.5775008727356886,"",,"1out_0in","othmaint",64490158 +1875722,"eatout",1,1,1,1,"non_mandatory",1,14,16,982875,92,10,17,7,"",14.382991219857317,"WALK",2.162753491521419,"",,"1out_0in","eatout",76904608 +2458500,"othmaint",1,1,1,1,"non_mandatory",1,7,8,1173905,120,12,20,8,"",14.167855032527061,"WALK",0.38559056447197426,"",,"0out_0in","othmaint",100798528 +2458501,"escort",1,1,1,1,"non_mandatory",1,16,8,1173905,146,15,16,1,"",12.678877131453035,"WALK_LOC",-1.932482226653213,"",,"0out_0in","escort",100798550 +2936550,"shopping",1,1,1,2,"non_mandatory",1,11,8,1286259,113,12,13,1,"",14.329923645050131,"WALK",2.380720675067925,"",,"0out_0in","shopping",120398583 +2936550,"othdiscr",1,1,2,2,"non_mandatory",1,6,8,1286259,138,14,17,3,"",15.563753675610899,"WALK",2.937756877729721,"",,"0out_0in","othdiscr",120398575 +2936848,"othdiscr",1,1,1,2,"non_mandatory",1,11,11,1286557,146,15,16,1,"",14.200096334451901,"DRIVEALONEFREE",0.6742944281956302,"",,"1out_0in","othdiscr",120410793 +2936848,"eatout",1,1,2,2,"non_mandatory",1,9,11,1286557,136,14,15,1,"",13.618742937074572,"DRIVEALONEFREE",0.6916712958119103,"",,"0out_0in","eatout",120410774 +3061894,"shopping",1,1,1,1,"non_mandatory",1,20,24,1363467,113,12,13,1,"",12.936400847846238,"DRIVEALONEFREE",-0.419345072964738,"",,"0out_0in","shopping",125537687 +3061895,"othmaint",1,1,1,2,"non_mandatory",1,7,24,1363467,146,15,16,1,"",14.06003170940918,"WALK",-0.16195911293846704,"",,"0out_0in","othmaint",125537723 +3061895,"othdiscr",1,1,2,2,"non_mandatory",1,9,24,1363467,164,17,19,2,"",14.089291551343601,"WALK_HVY",0.30873285639026604,"",,"0out_0in","othdiscr",125537720 +3233462,"shopping",2,1,1,3,"non_mandatory",1,16,17,1445222,19,6,6,0,"",14.283234710901684,"WALK_LRF",2.5866729381679985,"",,"0out_0in","shopping",132571975 +3233462,"shopping",2,2,2,3,"non_mandatory",1,13,17,1445222,37,7,7,0,"",14.291671919294387,"WALK_LOC",1.7366283594420195,"",,"0out_0in","shopping",132571976 +3233462,"othdiscr",1,1,3,3,"non_mandatory",1,14,17,1445222,37,7,7,0,"",15.3475060062512,"WALK_LRF",2.5704471563279228,"",,"0out_0in","othdiscr",132571967 +3328569,"shopping",1,1,1,2,"non_mandatory",1,4,8,1511234,85,10,10,0,"",14.125733968656233,"WALK_LRF",2.38356074513733,"",,"1out_0in","shopping",136471362 +3328569,"eatout",1,1,2,2,"non_mandatory",1,13,8,1511234,137,14,16,2,"",15.597840009148284,"WALK_LRF",3.672048876588288,"",,"0out_0in","eatout",136471335 +3495342,"othdiscr",1,1,1,1,"non_mandatory",1,15,10,1594621,160,16,22,6,"",15.508505478543945,"TNC_SINGLE",2.3148522693391618,"",,"0out_0in","othdiscr",143309047 +3596364,"shopping",1,1,1,2,"non_mandatory",1,22,9,1645132,176,19,20,1,"",14.363714390192708,"WALK_LRF",2.3452602538930165,"",,"0out_2in","shopping",147450957 +3596364,"eatout",1,1,2,2,"non_mandatory",1,5,9,1645132,135,14,14,0,"",15.40958622642079,"WALK",3.8915091275806684,"",,"0out_0in","eatout",147450930 +3596365,"social",1,1,1,1,"non_mandatory",1,9,9,1645132,48,7,18,11,"",14.542235377439113,"TAXI",1.8197268535726026,"",,"0out_0in","social",147451001 +3891103,"shopping",1,1,1,1,"non_mandatory",1,16,16,1747467,127,13,16,3,"",14.345132902591203,"WALK",2.410899830438007,"",,"0out_0in","shopping",159535256 +3891104,"othdiscr",2,1,1,2,"non_mandatory",1,2,16,1747467,136,14,15,1,"",15.50230775562424,"WALK",2.706012062287055,"",,"0out_0in","othdiscr",159535289 +3891104,"othdiscr",2,2,2,2,"non_mandatory",1,19,16,1747467,159,16,21,5,"",15.496659202926004,"WALK_LOC",1.4568065331937983,"",,"0out_0in","othdiscr",159535290 +4171616,"othmaint",1,1,1,1,"non_mandatory",1,3,16,1810015,72,9,11,2,"",14.289824837336404,"WALK",0.18665328796358552,"",,"0out_0in","othmaint",171036284 +4171619,"shopping",1,1,1,1,"non_mandatory",1,1,16,1810015,126,13,15,2,"",13.640567650511668,"WALK",0.9902753937389079,"",,"0out_1in","shopping",171036412 +4171622,"shopping",1,1,1,1,"non_mandatory",1,19,16,1810015,76,9,15,6,"",13.569454077979632,"WALK",-0.6999014421153607,"",,"0out_0in","shopping",171036535 +4823797,"othmaint",1,1,1,2,"non_mandatory",1,7,14,1952792,145,15,15,0,"",14.077945771016731,"DRIVEALONEFREE",0.09809762893266673,"",,"0out_0in","othmaint",197775705 +4823797,"othdiscr",1,1,2,2,"non_mandatory",1,16,14,1952792,156,16,18,2,"",14.148349302926023,"WALK",0.3783571737852308,"",,"0out_0in","othdiscr",197775702 +5057338,"shopping",1,1,1,4,"non_mandatory",1,25,7,2048382,184,21,21,0,"",14.255205007211757,"WALK_LOC",2.101189166034452,"",,"0out_0in","shopping",207350891 +5057338,"othmaint",1,1,2,4,"non_mandatory",1,7,7,2048382,169,18,18,0,"",15.398681601999414,"WALK",2.251684017727115,"",,"0out_0in","othmaint",207350886 +5057338,"eatout",1,1,3,4,"non_mandatory",1,10,7,2048382,180,20,20,0,"",15.673355298407246,"WALK_LRF",3.815469226012807,"",,"0out_0in","eatout",207350864 +5057338,"social",1,1,4,4,"non_mandatory",1,6,7,2048382,170,18,19,1,"",14.470705576395908,"TNC_SINGLE",2.092887419244588,"",,"0out_0in","social",207350894 +7305540,"othdiscr",1,1,1,1,"non_mandatory",1,12,20,2727273,151,15,21,6,"",14.631393485472051,"WALK",0.703051223685245,"",,"0out_0in","othdiscr",299527165 +7453413,"shopping",1,1,1,1,"non_mandatory",1,19,20,2762078,154,16,16,0,"",13.96782273443678,"WALK",1.8263069979086812,"",,"0out_0in","shopping",305589966 +7512514,"shopping",1,1,1,3,"non_mandatory",1,6,8,2821179,164,17,19,2,"",13.761715627405522,"WALK",1.777915016124194,"",,"0out_0in","shopping",308013107 +7512514,"eatout",1,1,2,3,"non_mandatory",1,13,8,2821179,62,8,16,8,"",15.672503858155086,"WALK",3.4520753953932997,"",,"0out_0in","eatout",308013080 +7512514,"social",1,1,3,3,"non_mandatory",1,9,8,2821179,154,16,16,0,"",13.986153838122636,"WALK_LOC",1.0884935003375935,"",,"0out_0in","social",308013110 +7523517,"othdiscr",1,1,1,1,"non_mandatory",1,9,7,2832182,59,8,13,5,"",15.215939189600421,"WALK_LOC",2.3087491550483623,"",,"0out_0in","othdiscr",308464222 +1632281,"eat",1,1,1,1,"atwork",1,8,13,823501,125,13,14,1,"",15.947502350236292,"WALK",5.269628441312229,"",66923560,"1out_0in","atwork",66923525 +3495343,"eat",1,1,1,1,"atwork",1,16,9,1594621,135,14,14,0,"",15.54410431803647,"WALK",4.189553929647487,"",143309102,"3out_0in","atwork",143309067 +4171623,"eat",1,1,1,1,"atwork",1,7,21,1810015,85,10,10,0,"",12.96349084109601,"WALK",-0.21208714075218113,"",171036582,"0out_1in","atwork",171036547 +5389226,"eat",1,1,1,1,"atwork",1,2,1,2223759,124,13,13,0,"",15.712981796209124,"WALK",6.339068060891636,"",220958305,"0out_0in","atwork",220958270 +7512109,"eat",1,1,1,1,"atwork",1,8,2,2820774,85,10,10,0,"",20.633672564068426,"WALK",-0.4712382999322044,"",307996508,"0out_1in","atwork",307996473 diff --git a/activitysim/estimation/test/test_edb_creation/survey_data/final_trips.csv b/activitysim/estimation/test/test_edb_creation/survey_data/final_trips.csv new file mode 100644 index 000000000..e7075be5e --- /dev/null +++ b/activitysim/estimation/test/test_edb_creation/survey_data/final_trips.csv @@ -0,0 +1,278 @@ +"person_id","household_id","primary_purpose","trip_num","outbound","trip_count","destination","origin","tour_id","purpose","destination_logsum","depart","trip_mode","mode_choice_logsum","trip_id" +26686,26686,"eatout",1,true,1,5,8,1094132,"eatout",,19,"WALK",4.457539268772517,8753057 +26686,26686,"eatout",1,false,1,8,5,1094132,"home",,19,"WALK",4.457539268092902,8753061 +26686,26686,"othmaint",1,true,1,9,8,1094154,"othmaint",,12,"BIKE",6.898149355436168,8753233 +26686,26686,"othmaint",1,false,1,8,9,1094154,"home",,13,"WALK",6.898149355330578,8753237 +26844,26844,"social",1,true,1,7,8,1100640,"social",,8,"WALK",8.97158319245669,8805121 +26844,26844,"social",1,false,2,7,7,1100640,"othmaint",43.13165717387488,12,"WALK",9.041583184270134,8805125 +26844,26844,"social",2,false,2,8,7,1100640,"home",,12,"WALK",8.789583223221504,8805126 +27726,27726,"othdiscr",1,true,1,9,10,1136791,"othdiscr",,8,"WALK",10.602053625992742,9094329 +27726,27726,"othdiscr",1,false,1,10,9,1136791,"home",,10,"WALK",10.780613609497287,9094333 +29625,29625,"shopping",1,true,1,17,17,1214658,"shopping",,15,"WALK",6.232122380537646,9717265 +29625,29625,"shopping",1,false,1,17,17,1214658,"home",,15,"WALK",6.232122380537646,9717269 +112064,112064,"othdiscr",1,true,1,21,16,4594649,"othdiscr",,12,"WALK",2.1507947003355725,36757193 +112064,112064,"othdiscr",1,false,1,16,21,4594649,"home",,14,"TAXI",2.361929055638584,36757197 +112064,112064,"shopping",1,true,1,3,16,4594657,"shopping",,16,"WALK",9.171843929425059,36757257 +112064,112064,"shopping",1,false,1,16,3,4594657,"home",,17,"WALK",8.920744017488841,36757261 +264107,226869,"work",1,true,1,24,9,10828426,"work",,7,"WALK_LRF",2.4072481834219825,86627409 +264107,226869,"work",1,false,1,9,24,10828426,"home",,19,"WALK_LRF",2.64270709783459,86627413 +264108,226869,"othdiscr",1,true,1,19,9,10828453,"othdiscr",,10,"WALK",-0.8882719505294207,86627625 +264108,226869,"othdiscr",1,false,1,9,19,10828453,"home",,11,"WALK",-1.083555087607077,86627629 +323689,256660,"work",1,true,1,1,10,13271288,"work",,11,"WALK_LRF",-0.011824703285233131,106170305 +323689,256660,"work",1,false,1,10,1,13271288,"home",,18,"WALK_LRF",-0.027352899414421275,106170309 +325431,257531,"work",1,true,2,25,16,13342710,"shopping",35.382763983172914,7,"WALK",10.195186294548499,106741681 +325431,257531,"work",2,true,2,12,25,13342710,"work",,8,"WALK",4.112435828979324,106741682 +325431,257531,"work",1,false,4,7,12,13342710,"eatout",38.563608123329665,17,"WALK",4.429198666616662,106741685 +325431,257531,"work",2,false,4,25,7,13342710,"shopping",49.069979336099856,17,"WALK_LOC",10.976833414968677,106741686 +325431,257531,"work",3,false,4,7,25,13342710,"escort",49.56683087980666,17,"WALK_LOC",10.645246813510491,106741687 +325431,257531,"work",4,false,4,16,7,13342710,"home",,17,"WALK",10.872836065437152,106741688 +325432,257531,"shopping",1,true,1,14,16,13342745,"shopping",,12,"WALK_LOC",1.5232643877229,106741961 +325432,257531,"shopping",1,false,1,16,14,13342745,"home",,13,"WALK_LOC",1.5693861133527638,106741965 +595686,370497,"school",1,true,1,8,21,24423157,"school",,7,"WALK_LOC",11.180762378631227,195385257 +595686,370497,"school",1,false,1,21,8,24423157,"home",,16,"WALK",11.113688275374244,195385261 +644290,386699,"work",1,true,1,12,7,26415929,"work",,12,"WALK_LOC",4.308779715277221,211327433 +644290,386699,"work",1,false,1,7,12,26415929,"home",,22,"WALK_LOC",4.332367558204261,211327437 +644291,386699,"othmaint",1,true,1,2,7,26415959,"othmaint",,19,"WALK_LOC",0.1926592887611779,211327673 +644291,386699,"othmaint",1,false,1,7,2,26415959,"home",,23,"TNC_SINGLE",0.2090608444298338,211327677 +644291,386699,"work",1,true,1,2,7,26415970,"work",,7,"WALK",-0.6047304841612396,211327761 +644291,386699,"work",1,false,1,7,2,26415970,"home",,17,"WALK",-0.5343416483077198,211327765 +644292,386699,"school",1,true,1,9,7,26416003,"school",,13,"WALK_LOC",9.76993799435511,211328025 +644292,386699,"school",1,false,2,7,9,26416003,"othdiscr",54.47702761519171,19,"WALK_LRF",11.717824347550579,211328029 +644292,386699,"school",2,false,2,7,7,26416003,"home",,19,"WALK",12.412237340788142,211328030 +644476,386761,"escort",1,true,1,11,16,26423525,"escort",,5,"WALK_LOC",4.78915841238078,211388201 +644476,386761,"escort",1,false,1,16,11,26423525,"home",,6,"WALK_LOC",5.050171287433509,211388205 +644476,386761,"othdiscr",1,true,1,16,16,26423541,"othdiscr",,18,"WALK",7.330879513166791,211388329 +644476,386761,"othdiscr",1,false,1,16,16,26423541,"home",,18,"WALK",7.330879513166791,211388333 +644476,386761,"othmaint",1,true,1,13,16,26423544,"othmaint",,18,"WALK",-0.4192505336997586,211388353 +644476,386761,"othmaint",1,false,1,16,13,26423544,"home",,19,"WALK",-0.41925030619506426,211388357 +644476,386761,"work",1,true,1,4,16,26423555,"work",,7,"SHARED2FREE",0.6984134734828816,211388441 +644476,386761,"work",1,false,1,16,4,26423555,"home",,17,"SHARED3FREE",-0.05867188910234502,211388445 +644477,386761,"shopping",1,true,1,16,16,26423590,"shopping",,14,"WALK",5.857453125014367,211388721 +644477,386761,"shopping",1,false,1,16,16,26423590,"home",,14,"WALK",5.857453125014367,211388725 +644478,386761,"school",1,true,1,20,16,26423629,"school",,11,"WALK_LOC",1.530044582582947,211389033 +644478,386761,"school",1,false,1,16,20,26423629,"home",,19,"WALK_LRF",3.76602489416099,211389037 +1265898,568785,"othdiscr",1,true,1,20,17,51901843,"othdiscr",,9,"WALK_LRF",2.7426144387101616,415214745 +1265898,568785,"othdiscr",1,false,1,17,20,51901843,"home",,20,"WALK_LRF",3.0312322271177115,415214749 +1427193,703381,"shopping",1,true,1,14,25,58514946,"shopping",,13,"WALK",0.41368191525132,468119569 +1427193,703381,"shopping",1,false,1,25,14,58514946,"home",,19,"WALK",0.20722357704976505,468119573 +1427194,703381,"othmaint",1,true,1,14,25,58514982,"othmaint",,7,"WALK",0.25954887271815646,468119857 +1427194,703381,"othmaint",1,false,1,25,14,58514982,"home",,13,"WALK",0.13005163957603907,468119861 +1427194,703381,"social",1,true,2,6,25,58514990,"eatout",23.804031444441073,16,"WALK",7.665909210409199,468119921 +1427194,703381,"social",2,true,2,2,6,58514990,"social",,19,"WALK",-0.11373619351391898,468119922 +1427194,703381,"social",1,false,4,6,2,58514990,"social",25.675224145070427,21,"WALK",-0.11373628500729509,468119925 +1427194,703381,"social",2,false,4,8,6,58514990,"shopping",36.086366516709475,22,"WALK",7.728909184292301,468119926 +1427194,703381,"social",3,false,4,7,8,58514990,"social",40.832427907262876,22,"WALK",7.751367569789609,468119927 +1427194,703381,"social",4,false,4,25,7,58514990,"home",,22,"WALK",8.429083086926186,468119928 +1572659,763879,"shopping",1,true,3,25,6,64479052,"othmaint",40.895784325733594,7,"WALK",12.896301701456215,515832417 +1572659,763879,"shopping",2,true,3,25,25,64479052,"escort",40.13139614585728,12,"WALK",13.621701652814899,515832418 +1572659,763879,"shopping",3,true,3,24,25,64479052,"shopping",,17,"WALK",3.0930067693134005,515832419 +1572659,763879,"shopping",1,false,3,25,24,64479052,"shopping",38.41713719577139,18,"WALK",3.0706867412992,515832421 +1572659,763879,"shopping",2,false,3,7,25,64479052,"escort",59.6309483835455,20,"WALK",12.807021629683366,515832422 +1572659,763879,"shopping",3,false,3,6,7,64479052,"home",,20,"WALK",14.258626224164276,515832423 +1572930,764150,"othmaint",1,true,2,7,9,64490158,"othmaint",38.76005910239585,8,"WALK",8.642583134383138,515921265 +1572930,764150,"othmaint",2,true,2,9,7,64490158,"othmaint",,8,"WALK",6.391034808672385,515921266 +1572930,764150,"othmaint",1,false,1,9,9,64490158,"home",,11,"WALK",6.874034571771074,515921269 +1572930,764150,"shopping",1,true,1,7,9,64490163,"shopping",,11,"WALK",13.778746190542957,515921305 +1572930,764150,"shopping",1,false,1,9,7,64490163,"home",,16,"WALK",13.622506184583505,515921309 +1632281,823501,"atwork",1,true,2,9,13,66923525,"work",52.01208618984001,13,"WALK",9.392493718811465,535388201 +1632281,823501,"atwork",2,true,2,8,9,66923525,"atwork",,13,"WALK",12.238334146563448,535388202 +1632281,823501,"atwork",1,false,1,13,8,66923525,"work",,14,"WALK",11.952574143723762,535388205 +1632281,823501,"work",1,true,1,13,12,66923560,"work",,7,"WALK",0.3452900411345135,535388481 +1632281,823501,"work",1,false,1,12,13,66923560,"home",,19,"WALK",0.29278490089518977,535388485 +1632987,824207,"work",1,true,1,4,18,66952506,"work",,15,"WALK_LOC",0.2992185756062765,535620049 +1632987,824207,"work",1,false,1,18,4,66952506,"home",,21,"WALK",0.5557332757868809,535620053 +1875721,982875,"work",1,true,1,10,16,76904600,"work",,8,"WALK_LOC",7.627291076037503,615236801 +1875721,982875,"work",1,false,1,16,10,76904600,"home",,18,"WALK_LOC",7.619393573928726,615236805 +1875722,982875,"eatout",1,true,2,7,16,76904608,"escort",33.332775271121825,10,"WALK",12.852466196970816,615236865 +1875722,982875,"eatout",2,true,2,14,7,76904608,"eatout",,13,"WALK",0.0679239371174617,615236866 +1875722,982875,"eatout",1,false,1,16,14,76904608,"home",,17,"WALK",0.9383092208675533,615236869 +2159057,1099626,"work",1,true,1,2,20,88521376,"work",,7,"WALK",-0.3540033864901755,708171009 +2159057,1099626,"work",1,false,2,8,2,88521376,"shopping",28.059656557964445,18,"WALK",0.34307389812569966,708171013 +2159057,1099626,"work",2,false,2,20,8,88521376,"home",,18,"WALK_LOC",9.930931452887558,708171014 +2159058,1099626,"univ",1,true,1,9,20,88521409,"univ",,15,"WALK_LOC",10.081589126967758,708171273 +2159058,1099626,"univ",1,false,1,20,9,88521409,"home",,18,"WALK_LOC",9.700222902924416,708171277 +2159059,1099626,"school",1,true,1,20,20,88521450,"school",,8,"WALK",2.001157626801728,708171601 +2159059,1099626,"school",1,false,1,20,20,88521450,"home",,13,"WALK",2.001157626801728,708171605 +2458502,1173905,"shopping",1,true,1,5,8,100798519,"shopping",,8,"SHARED2FREE",0.16957406666783342,806388153 +2458502,1173905,"shopping",1,false,1,8,5,100798519,"home",,8,"SHARED2FREE",0.1684460835975957,806388157 +2458500,1173905,"othmaint",1,true,1,7,8,100798528,"othmaint",,12,"WALK",8.971583091962668,806388225 +2458500,1173905,"othmaint",1,false,1,8,7,100798528,"home",,20,"WALK",8.789583098654154,806388229 +2458501,1173905,"escort",1,true,1,16,8,100798550,"escort",,15,"WALK_LOC",6.451456988932713,806388401 +2458501,1173905,"escort",1,false,1,8,16,100798550,"home",,16,"WALK_LOC",6.446188145342157,806388405 +2458502,1173905,"school",1,true,2,7,8,100798613,"social",55.65769426652772,8,"WALK",13.486637386215971,806388905 +2458502,1173905,"school",2,true,2,8,7,100798613,"school",,8,"WALK",11.315206418159061,806388906 +2458502,1173905,"school",1,false,1,8,8,100798613,"home",,18,"WALK",11.737966424070635,806388909 +2458503,1173905,"school",1,true,1,8,8,100798654,"school",,8,"WALK",11.737966424070635,806389233 +2458503,1173905,"school",1,false,1,8,8,100798654,"home",,14,"WALK",11.737966424070635,806389237 +2566698,1196298,"work",1,true,1,1,25,105234657,"work",,6,"WALK",0.5218384234138416,841877257 +2566698,1196298,"work",1,false,1,25,1,105234657,"home",,17,"WALK_LOC",0.4855336440096437,841877261 +2566700,1196298,"school",1,true,1,25,25,105234731,"school",,7,"WALK",12.824615869979219,841877849 +2566700,1196298,"school",1,false,1,25,25,105234731,"home",,15,"WALK",12.824615869979219,841877853 +2566701,1196298,"school",1,true,1,3,25,105234772,"school",,8,"WALK",8.979312480941104,841878177 +2566701,1196298,"school",1,false,1,25,3,105234772,"home",,13,"WALK",8.979312481086987,841878181 +2566702,1196298,"school",1,true,1,6,25,105234813,"school",,12,"WALK_LOC",11.70939586566571,841878505 +2566702,1196298,"school",1,false,2,25,6,105234813,"shopping",51.23589608925055,20,"WALK_LOC",11.23832543650178,841878509 +2566702,1196298,"school",2,false,2,25,25,105234813,"home",,20,"WALK",11.641815891720018,841878510 +2936550,1286259,"othdiscr",1,true,1,6,8,120398575,"othdiscr",,14,"WALK",12.612248980790358,963188601 +2936550,1286259,"othdiscr",1,false,1,8,6,120398575,"home",,17,"WALK",12.322089000527528,963188605 +2936550,1286259,"shopping",1,true,1,11,8,120398583,"shopping",,12,"WALK",4.840354366429668,963188665 +2936550,1286259,"shopping",1,false,1,8,11,120398583,"home",,13,"WALK",4.940794055372203,963188669 +2936848,1286557,"eatout",1,true,1,9,11,120410774,"eatout",,14,"WALK",9.079286100640175,963286193 +2936848,1286557,"eatout",1,false,1,11,9,120410774,"home",,15,"WALK",9.101568714168469,963286197 +2936848,1286557,"othdiscr",1,true,2,10,11,120410793,"escort",33.67980057651356,15,"WALK",8.178730791217355,963286345 +2936848,1286557,"othdiscr",2,true,2,11,10,120410793,"othdiscr",,16,"WALK",3.366293797308929,963286346 +2936848,1286557,"othdiscr",1,false,1,11,11,120410793,"home",,16,"WALK",3.65295752128872,963286349 +3061894,1363467,"shopping",1,true,1,20,24,125537687,"shopping",,12,"TNC_SHARED",0.10121955466253282,1004301497 +3061894,1363467,"shopping",1,false,1,24,20,125537687,"home",,13,"DRIVEALONEFREE",0.019236377431838474,1004301501 +3061895,1363467,"othdiscr",1,true,1,9,24,125537720,"othdiscr",,17,"WALK_HVY",11.684658026322639,1004301761 +3061895,1363467,"othdiscr",1,false,1,24,9,125537720,"home",,19,"WALK_LRF",11.49938905905555,1004301765 +3061895,1363467,"othmaint",1,true,1,7,24,125537723,"othmaint",,15,"WALK",8.131583343724042,1004301785 +3061895,1363467,"othmaint",1,false,1,24,7,125537723,"home",,16,"WALK",8.096583148991245,1004301789 +3061895,1363467,"work",1,true,1,25,24,125537734,"work",,6,"WALK",10.08552703351978,1004301873 +3061895,1363467,"work",1,false,1,24,25,125537734,"home",,13,"WALK",10.103127058632895,1004301877 +3188483,1402945,"othdiscr",1,true,1,24,25,130727777,"othdiscr",,9,"WALK",3.118711021135967,1045822217 +3188483,1402945,"othdiscr",1,false,1,25,24,130727777,"home",,9,"WALK",3.0963906344964696,1045822221 +3188482,1402945,"work",1,true,2,7,25,130727801,"work",34.564591307437105,8,"WALK",10.411761425965901,1045822409 +3188482,1402945,"work",2,true,2,24,7,130727801,"work",,9,"WALK",1.211444903376802,1045822410 +3188482,1402945,"work",1,false,1,25,24,130727801,"home",,17,"WALK",2.091377723899355,1045822413 +3188483,1402945,"work",1,true,1,2,25,130727842,"work",,9,"WALK",0.7316381092221191,1045822737 +3188483,1402945,"work",1,false,1,25,2,130727842,"home",,17,"WALK_LOC",0.6404115318186951,1045822741 +3188484,1402945,"univ",1,true,1,13,25,130727875,"univ",,16,"WALK",-1.5428778623620805,1045823001 +3188484,1402945,"univ",1,false,3,7,13,130727875,"shopping",30.41829198797714,17,"WALK",-1.4237492795265192,1045823005 +3188484,1402945,"univ",2,false,3,7,7,130727875,"othmaint",59.4490857231952,17,"WALK",13.5950373888898,1045823006 +3188484,1402945,"univ",3,false,3,25,7,130727875,"home",,17,"WALK",12.646537396714635,1045823007 +3188484,1402945,"work",1,true,1,2,25,130727883,"work",,9,"WALK",0.7316381092221191,1045823065 +3188484,1402945,"work",1,false,1,25,2,130727883,"home",,12,"WALK_LOC",0.5898827035401254,1045823069 +3188485,1402945,"work",1,true,2,25,25,130727924,"escort",29.779997197410285,10,"BIKE",10.416625527744298,1045823393 +3188485,1402945,"work",2,true,2,2,25,130727924,"work",,12,"BIKE",-0.019493094347113764,1045823394 +3188485,1402945,"work",1,false,2,7,2,130727924,"eatout",29.723531295459807,20,"BIKE",-0.21951892594579855,1045823397 +3188485,1402945,"work",2,false,2,25,7,130727924,"home",,21,"BIKE",10.648166757292298,1045823398 +3233462,1445222,"othdiscr",1,true,1,14,17,132571967,"othdiscr",,7,"WALK",1.8799351940528457,1060575737 +3233462,1445222,"othdiscr",1,false,1,17,14,132571967,"home",,7,"WALK_LOC",1.6549807020273366,1060575741 +3233462,1445222,"shopping",1,true,1,16,17,132571975,"shopping",,6,"WALK",7.8891489495492335,1060575801 +3233462,1445222,"shopping",1,false,1,17,16,132571975,"home",,6,"WALK_LRF",7.904205187610422,1060575805 +3233462,1445222,"shopping",1,true,1,13,17,132571976,"shopping",,7,"WALK_LOC",-0.15795552230629617,1060575809 +3233462,1445222,"shopping",1,false,1,17,13,132571976,"home",,7,"WALK_LOC",-0.22691611232387354,1060575813 +3233462,1445222,"work",1,true,1,22,17,132571981,"work",,7,"WALK_LRF",1.5282754769935067,1060575849 +3233462,1445222,"work",1,false,1,17,22,132571981,"home",,23,"TNC_SINGLE",1.793267333094202,1060575853 +3328568,1511234,"work",1,true,1,1,8,136471327,"work",,6,"WALK_LRF",0.24234305546243562,1091770617 +3328568,1511234,"work",1,false,1,8,1,136471327,"home",,17,"WALK",0.17155654756009,1091770621 +3328569,1511234,"eatout",1,true,1,13,8,136471335,"eatout",,14,"WALK",0.5773709562181402,1091770681 +3328569,1511234,"eatout",1,false,1,8,13,136471335,"home",,16,"WALK_LRF",1.098907001128995,1091770685 +3328569,1511234,"shopping",1,true,2,9,8,136471362,"eatout",33.74288275937864,10,"WALK_LOC",11.097623867544948,1091770897 +3328569,1511234,"shopping",2,true,2,4,9,136471362,"shopping",,10,"WALK_LRF",1.1309568013629243,1091770898 +3328569,1511234,"shopping",1,false,1,8,4,136471362,"home",,10,"WALK_LRF",1.3002912188200697,1091770901 +3495342,1594621,"othdiscr",1,true,1,15,10,143309047,"othdiscr",,16,"WALK_LOC",1.6922670564497784,1146472377 +3495342,1594621,"othdiscr",1,false,1,10,15,143309047,"home",,22,"WALK_LRF",1.7951585505312424,1146472381 +3495342,1594621,"work",1,true,1,11,10,143309061,"work",,7,"WALK_LOC",4.611533756385394,1146472489 +3495342,1594621,"work",1,false,1,10,11,143309061,"home",,16,"WALK",4.609280148452949,1146472493 +3495343,1594621,"atwork",1,true,4,6,9,143309067,"othmaint",43.892801127843825,14,"WALK",12.430369125011044,1146472537 +3495343,1594621,"atwork",2,true,4,6,6,143309067,"shopping",43.85860241624266,14,"WALK",13.016929006188157,1146472538 +3495343,1594621,"atwork",3,true,4,7,6,143309067,"escort",46.55936296536758,14,"WALK",14.326586254989872,1146472539 +3495343,1594621,"atwork",4,true,4,16,7,143309067,"atwork",,14,"WALK",5.875801157805464,1146472540 +3495343,1594621,"atwork",1,false,1,9,16,143309067,"work",,14,"WALK",4.620305346152653,1146472541 +3495343,1594621,"work",1,true,1,9,10,143309102,"work",,13,"WALK",8.030042709603043,1146472817 +3495343,1594621,"work",1,false,1,10,9,143309102,"home",,17,"WALK",8.170842677581534,1146472821 +3596364,1645132,"eatout",1,true,1,5,9,147450930,"eatout",,14,"WALK",3.8995482482297024,1179607441 +3596364,1645132,"eatout",1,false,1,9,5,147450930,"home",,14,"WALK",3.983247379767863,1179607445 +3596364,1645132,"shopping",1,true,1,22,9,147450957,"shopping",,19,"WALK_LRF",2.6756101195264512,1179607657 +3596364,1645132,"shopping",1,false,3,8,22,147450957,"shopping",37.58009946460086,20,"WALK_LRF",2.758604912440526,1179607661 +3596364,1645132,"shopping",2,false,3,9,8,147450957,"eatout",54.10980461901021,20,"WALK_LOC",12.741255996041916,1179607662 +3596364,1645132,"shopping",3,false,3,9,9,147450957,"home",,20,"WALK",10.764874611676083,1179607663 +3596365,1645132,"social",1,true,1,9,9,147451001,"social",,7,"WALK",3.544669911588107,1179608009 +3596365,1645132,"social",1,false,1,9,9,147451001,"home",,18,"WALK",3.5446075289165297,1179608013 +3891102,1747467,"work",1,true,1,11,16,159535221,"work",,7,"WALK_LOC",4.3180888605508825,1276281769 +3891102,1747467,"work",1,false,1,16,11,159535221,"home",,16,"WALK_LOC",4.308039287554886,1276281773 +3891103,1747467,"shopping",1,true,1,16,16,159535256,"shopping",,13,"WALK",7.330879778846902,1276282049 +3891103,1747467,"shopping",1,false,1,16,16,159535256,"home",,16,"WALK",7.330879779011079,1276282053 +3891104,1747467,"othdiscr",1,true,1,2,16,159535289,"othdiscr",,14,"WALK",-0.013620982982507432,1276282313 +3891104,1747467,"othdiscr",1,false,1,16,2,159535289,"home",,15,"WALK",-0.20327093589265946,1276282317 +3891104,1747467,"othdiscr",1,true,1,19,16,159535290,"othdiscr",,16,"WALK_LOC",-0.028685356425070176,1276282321 +3891104,1747467,"othdiscr",1,false,1,16,19,159535290,"home",,21,"WALK_LOC",-0.2990566938111557,1276282325 +3891104,1747467,"school",1,true,1,17,16,159535295,"school",,7,"WALK_LRF",6.698072453217584,1276282361 +3891104,1747467,"school",1,false,1,16,17,159535295,"home",,14,"WALK_LRF",6.665980554341056,1276282365 +4171615,1810015,"univ",1,true,1,12,16,171036246,"univ",,13,"WALK",4.061179288088942,1368289969 +4171615,1810015,"univ",1,false,1,16,12,171036246,"home",,13,"WALK",4.06117926693834,1368289973 +4171616,1810015,"othmaint",1,true,1,3,16,171036284,"othmaint",,9,"WALK",5.752949863933666,1368290273 +4171616,1810015,"othmaint",1,false,1,16,3,171036284,"home",,11,"WALK",5.595449988691705,1368290277 +4171617,1810015,"work",1,true,2,8,16,171036336,"social",23.477345398553453,9,"WALK",7.896576327414681,1368290689 +4171617,1810015,"work",2,true,2,15,8,171036336,"work",,12,"WALK",-0.8211572450364255,1368290690 +4171617,1810015,"work",1,false,1,16,15,171036336,"home",,18,"WALK",0.23912905823533456,1368290693 +4171619,1810015,"shopping",1,true,1,1,16,171036412,"shopping",,13,"WALK",-1.0053143437541998,1368291297 +4171619,1810015,"shopping",1,false,2,7,1,171036412,"shopping",29.48393750646727,14,"WALK",-1.5297238905680486,1368291301 +4171619,1810015,"shopping",2,false,2,16,7,171036412,"home",,15,"WALK",12.573466151788852,1368291302 +4171620,1810015,"school",1,true,1,8,16,171036451,"school",,7,"WALK_LOC",10.68060996983474,1368291609 +4171620,1810015,"school",1,false,1,16,8,171036451,"home",,15,"WALK_LOC",10.665116381563836,1368291613 +4171622,1810015,"shopping",1,true,1,19,16,171036535,"shopping",,9,"WALK",-2.394141994327624,1368292281 +4171622,1810015,"shopping",1,false,1,16,19,171036535,"home",,15,"WALK",-2.4219133842589526,1368292285 +4171623,1810015,"atwork",1,true,1,7,21,171036547,"atwork",,10,"WALK",13.897946303660285,1368292377 +4171623,1810015,"atwork",1,false,2,6,7,171036547,"othmaint",62.239483838845736,10,"WALK",14.364186248721689,1368292381 +4171623,1810015,"atwork",2,false,2,21,6,171036547,"work",,10,"WALK",12.200629295549986,1368292382 +4171623,1810015,"work",1,true,2,25,16,171036582,"escort",30.234430836012045,8,"WALK",9.029527074456235,1368292657 +4171623,1810015,"work",2,true,2,21,25,171036582,"work",,8,"WALK",2.001441630738205,1368292658 +4171623,1810015,"work",1,false,2,7,21,171036582,"work",34.72578612209499,23,"WALK",2.5646380272501803,1368292661 +4171623,1810015,"work",2,false,2,16,7,171036582,"home",,23,"WALK",9.584561374619746,1368292662 +4823797,1952792,"othdiscr",1,true,1,16,14,197775702,"othdiscr",,16,"WALK",6.996079351207767,1582205617 +4823797,1952792,"othdiscr",1,false,1,14,16,197775702,"home",,18,"WALK",7.1523193586223615,1582205621 +4823797,1952792,"othmaint",1,true,1,7,14,197775705,"othmaint",,15,"WALK",7.130522181030106,1582205641 +4823797,1952792,"othmaint",1,false,1,14,7,197775705,"home",,15,"WALK",6.973127233279991,1582205645 +4823797,1952792,"work",1,true,1,12,14,197775716,"work",,11,"BIKE",3.423281973078554,1582205729 +4823797,1952792,"work",1,false,1,14,12,197775716,"home",,15,"BIKE",3.4232819641055308,1582205733 +5057160,2048204,"work",1,true,1,23,5,207343599,"work",,7,"WALK_LRF",1.8355968767710429,1658748793 +5057160,2048204,"work",1,false,1,5,23,207343599,"home",,13,"WALK_LOC",1.842947720747105,1658748797 +5057338,2048382,"eatout",1,true,1,10,7,207350864,"eatout",,20,"WALK",11.50286632419377,1658806913 +5057338,2048382,"eatout",1,false,1,7,10,207350864,"home",,20,"WALK",11.0200368363894,1658806917 +5057338,2048382,"othmaint",1,true,1,7,7,207350886,"othmaint",,18,"WALK",9.041583134997413,1658807089 +5057338,2048382,"othmaint",1,false,1,7,7,207350886,"home",,18,"WALK",9.041583134997413,1658807093 +5057338,2048382,"shopping",1,true,1,25,7,207350891,"shopping",,21,"WALK",12.994038320235191,1658807129 +5057338,2048382,"shopping",1,false,1,7,25,207350891,"home",,21,"WALK",13.394104919134762,1658807133 +5057338,2048382,"social",1,true,1,6,7,207350894,"social",,18,"WALK_LOC",7.684253228078017,1658807153 +5057338,2048382,"social",1,false,1,7,6,207350894,"home",,19,"WALK_LOC",7.33402873870212,1658807157 +5057338,2048382,"work",1,true,1,2,7,207350897,"work",,6,"WALK",0.6535205296575887,1658807177 +5057338,2048382,"work",1,false,1,7,2,207350897,"home",,17,"WALK_LOC",0.6994347038785153,1658807181 +5387762,2223027,"work",1,true,1,4,9,220898281,"work",,7,"WALK_HVY",0.8851251729940038,1767186249 +5387762,2223027,"work",1,false,1,9,4,220898281,"home",,17,"WALK_LRF",0.8808191020800481,1767186253 +5387763,2223027,"work",1,true,2,7,9,220898322,"escort",33.115120502248885,8,"WALK",11.45812100506256,1767186577 +5387763,2223027,"work",2,true,2,14,7,220898322,"work",,8,"WALK_LOC",1.0900866492604258,1767186578 +5387763,2223027,"work",1,false,2,9,14,220898322,"othmaint",32.045095679314514,17,"WALK_LRF",1.600735778924674,1767186581 +5387763,2223027,"work",2,false,2,9,9,220898322,"home",,17,"WALK",8.75484607474322,1767186582 +5389226,2223759,"atwork",1,true,1,2,1,220958270,"atwork",,13,"WALK",0.5422067947215797,1767666161 +5389226,2223759,"atwork",1,false,1,1,2,220958270,"work",,13,"WALK",0.44445625677441347,1767666165 +5389226,2223759,"eatout",1,true,1,13,16,220958279,"eatout",,20,"TNC_SINGLE",-0.053423172630162746,1767666233 +5389226,2223759,"eatout",1,false,1,16,13,220958279,"home",,20,"TAXI",-0.053623759329434514,1767666237 +5389226,2223759,"work",1,true,1,1,16,220958305,"work",,9,"WALK",-1.121725266718706,1767666441 +5389226,2223759,"work",1,false,1,16,1,220958305,"home",,18,"WALK",-1.2712056171232493,1767666445 +5389227,2223759,"work",1,true,1,23,16,220958346,"work",,6,"WALK",0.7526667284662408,1767666769 +5389227,2223759,"work",1,false,1,16,23,220958346,"home",,20,"WALK",0.40072266203872847,1767666773 +7305540,2727273,"othdiscr",1,true,1,12,20,299527165,"othdiscr",,15,"WALK",3.8685996173550423,2396217321 +7305540,2727273,"othdiscr",1,false,1,20,12,299527165,"home",,21,"WALK",3.5896037288320892,2396217325 +7305540,2727273,"work",1,true,1,20,20,299527179,"work",,11,"WALK",1.104068131386293,2396217433 +7305540,2727273,"work",1,false,1,20,20,299527179,"home",,15,"WALK",1.053200360752169,2396217437 +7305541,2727273,"work",1,true,1,9,20,299527220,"work",,6,"WALK",7.774842814489909,2396217761 +7305541,2727273,"work",1,false,1,20,9,299527220,"home",,13,"WALK",7.915642733452835,2396217765 +7305541,2727273,"work",1,true,1,9,20,299527221,"work",,14,"WALK",7.774842814936839,2396217769 +7305541,2727273,"work",1,false,1,20,9,299527221,"home",,18,"WALK",7.91564273351867,2396217773 +7453413,2762078,"shopping",1,true,1,19,20,305589966,"shopping",,16,"WALK",-0.35226970200906427,2444719729 +7453413,2762078,"shopping",1,false,1,20,19,305589966,"home",,16,"WALK",-0.30764319648513383,2444719733 +7512109,2820774,"atwork",1,true,1,8,2,307996473,"atwork",,10,"WALK",11.717494374110142,2463971785 +7512109,2820774,"atwork",1,false,2,7,8,307996473,"work",60.69572620723573,10,"WALK",12.448894080618153,2463971789 +7512109,2820774,"atwork",2,false,2,2,7,307996473,"work",,10,"WALK",13.86034632280424,2463971790 +7512109,2820774,"work",1,true,1,2,8,307996508,"work",,8,"WALK",-0.6314685269146993,2463972065 +7512109,2820774,"work",1,false,3,8,2,307996508,"shopping",25.44599794712168,18,"WALK",-0.7722559635889226,2463972069 +7512109,2820774,"work",2,false,3,8,8,307996508,"shopping",46.27968294620515,19,"WALK",9.5289762031843,2463972070 +7512109,2820774,"work",3,false,3,8,8,307996508,"home",,19,"WALK",9.5289762031843,2463972071 +7512514,2821179,"eatout",1,true,1,13,8,308013080,"eatout",,8,"WALK",-1.171759971785514,2464104641 +7512514,2821179,"eatout",1,false,1,8,13,308013080,"home",,16,"WALK",-1.238718768693438,2464104645 +7512514,2821179,"shopping",1,true,1,6,8,308013107,"shopping",,17,"WALK",12.612248978887928,2464104857 +7512514,2821179,"shopping",1,false,1,8,6,308013107,"home",,19,"WALK",12.322088998148224,2464104861 +7512514,2821179,"social",1,true,1,9,8,308013110,"social",,16,"WALK",6.292424410910544,2464104881 +7512514,2821179,"social",1,false,1,8,9,308013110,"home",,16,"WALK_LOC",6.322192231184283,2464104885 +7513432,2822097,"work",1,true,1,7,8,308050751,"work",,5,"BIKE",11.002889267549957,2464406009 +7513432,2822097,"work",1,false,1,8,7,308050751,"home",,15,"BIKE",10.880760381185553,2464406013 +7513554,2822219,"work",1,true,1,9,8,308055753,"work",,5,"WALK",7.994842572799317,2464446025 +7513554,2822219,"work",1,false,1,8,9,308055753,"home",,16,"WALK",7.994842572767652,2464446029 +7513565,2822230,"work",1,true,2,9,8,308056204,"univ",40.040196758213916,9,"WALK",7.9948426686587775,2464449633 +7513565,2822230,"work",2,true,2,25,9,308056204,"work",,9,"WALK",8.34752700809022,2464449634 +7513565,2822230,"work",1,false,1,8,25,308056204,"home",,18,"WALK",9.31552710851258,2464449637 +7523517,2832182,"othdiscr",1,true,1,9,7,308464222,"othdiscr",,8,"WALK",10.67469554537436,2467713777 +7523517,2832182,"othdiscr",1,false,1,7,9,308464222,"home",,13,"WALK",10.735094428557618,2467713781 diff --git a/activitysim/estimation/test/test_edb_creation/survey_data/override_households.csv b/activitysim/estimation/test/test_edb_creation/survey_data/override_households.csv new file mode 100644 index 000000000..b0910c786 --- /dev/null +++ b/activitysim/estimation/test/test_edb_creation/survey_data/override_households.csv @@ -0,0 +1,51 @@ +household_id,home_zone_id,income,hhsize,HHT,auto_ownership,num_workers,joint_tour_frequency +982875,16,30900,2,5,1,2,0_tours +1810015,16,99700,9,2,1,4,0_tours +1099626,20,58160,3,1,1,1,0_tours +763879,6,59220,1,4,1,0,0_tours +824207,18,51000,1,4,0,1,0_tours +2822230,8,0,1,0,0,1,0_tours +2821179,8,0,1,0,0,1,0_tours +1196298,25,31360,5,1,0,1,0_tours +1363467,24,58300,2,2,1,1,0_tours +386761,16,21000,3,1,1,2,0_tours +2223027,9,133000,2,1,0,2,0_tours +2832182,7,0,1,0,0,0,0_tours +2727273,20,118800,2,1,1,2,0_tours +1444715,14,60000,1,4,0,1,0_tours +112064,16,18000,1,6,1,1,0_tours +1952792,14,61900,1,4,1,1,0_tours +2223759,16,144100,2,1,0,2,1_Eat +2820538,8,0,1,0,0,1,0_tours +27726,10,24000,1,4,0,0,0_tours +570454,21,1500,1,4,0,0,0_tours +370497,21,18000,3,2,0,1,0_tours +1173905,8,45000,4,1,1,0,1_Shop +1286557,11,30000,1,4,1,0,0_tours +2762078,20,0,1,0,0,0,0_tours +2832429,16,0,1,0,1,0,0_tours +386699,7,21000,3,1,0,2,0_tours +2822097,8,0,1,0,1,1,0_tours +764150,9,34630,1,4,1,0,0_tours +2820774,8,0,1,0,1,1,0_tours +1594621,10,69200,2,1,0,2,0_tours +257531,16,12000,2,7,0,2,0_tours +1645132,9,92700,2,3,0,0,0_tours +29625,17,4200,1,4,0,0,0_tours +1402945,25,37200,4,1,1,4,1_Disc +823501,12,30000,1,4,0,1,0_tours +1747467,16,76000,3,1,0,2,0_tours +1445222,17,68000,1,6,0,1,0_tours +26844,8,3500,1,4,0,0,0_tours +2822219,8,0,1,0,0,1,0_tours +110675,16,5050,1,4,0,1,0_tours +2048204,5,388000,1,4,0,1,0_tours +1286259,8,34400,1,6,0,0,0_tours +568785,17,8000,1,4,1,0,0_tours +26686,8,0,1,4,0,0,0_tours +1511234,8,88600,2,1,0,1,0_tours +2048382,7,195000,1,4,0,1,0_tours +256660,10,27800,2,7,0,2,0_tours +703381,25,17210,2,1,1,0,0_tours +226869,9,4000,2,1,0,1,0_tours +823426,11,50000,1,4,1,1,0_tours diff --git a/activitysim/estimation/test/test_edb_creation/survey_data/override_joint_tour_participants.csv b/activitysim/estimation/test/test_edb_creation/survey_data/override_joint_tour_participants.csv new file mode 100644 index 000000000..a19d8616a --- /dev/null +++ b/activitysim/estimation/test/test_edb_creation/survey_data/override_joint_tour_participants.csv @@ -0,0 +1,8 @@ +survey_participant_id,survey_tour_id,household_id,person_id,participant_num,tour_id,participant_id +220958279010,2209582790,2223759,5389226,1,220958279,22095827901 +220958279020,2209582790,2223759,5389227,2,220958279,22095827902 +100798519030,1007985190,1173905,2458502,1,100798519,10079851903 +100798519040,1007985190,1173905,2458503,2,100798519,10079851904 +130727777020,1307277770,1402945,3188483,1,130727777,13072777702 +130727777030,1307277770,1402945,3188484,2,130727777,13072777703 +130727777040,1307277770,1402945,3188485,3,130727777,13072777704 diff --git a/activitysim/estimation/test/test_edb_creation/survey_data/override_persons.csv b/activitysim/estimation/test/test_edb_creation/survey_data/override_persons.csv new file mode 100644 index 000000000..030bcafa7 --- /dev/null +++ b/activitysim/estimation/test/test_edb_creation/survey_data/override_persons.csv @@ -0,0 +1,91 @@ +person_id,household_id,age,PNUM,sex,pemploy,pstudent,ptype,school_zone_id,workplace_zone_id,free_parking_at_work,cdap_activity,mandatory_tour_frequency,_escort,_shopping,_othmaint,_othdiscr,_eatout,_social,non_mandatory_tour_frequency +26686,26686,39,1,1,3,3,4,-1,-1,False,N,,0,0,1,0,1,0,12 +26844,26844,51,1,1,3,3,4,-1,-1,False,N,,0,0,0,0,0,1,2 +27726,27726,52,1,1,3,3,4,-1,-1,False,N,,0,0,0,1,0,0,1 +29625,29625,61,1,1,3,3,4,-1,-1,False,N,,0,1,0,0,0,0,16 +110675,110675,30,1,1,2,3,2,-1,19,False,H,,0,0,0,0,0,0,0 +112064,112064,48,1,2,2,3,2,-1,21,False,N,,0,1,0,1,0,0,17 +264107,226869,28,1,1,2,3,2,-1,24,False,M,work1,0,0,0,0,0,0,0 +264108,226869,27,2,2,3,3,4,-1,-1,False,N,,0,0,0,1,0,0,1 +323689,256660,22,1,2,2,3,2,-1,1,False,M,work1,0,0,0,0,0,0,0 +323690,256660,23,2,2,2,3,2,-1,5,False,H,,0,0,0,0,0,0,0 +325431,257531,22,1,2,2,3,2,-1,12,False,M,work1,0,0,0,0,0,0,0 +325432,257531,22,2,2,2,3,2,-1,2,False,N,,0,1,0,0,0,0,16 +595684,370497,52,1,1,2,3,2,-1,4,False,H,,0,0,0,0,0,0,0 +595685,370497,18,2,1,3,1,6,13,-1,False,H,,0,0,0,0,0,0,0 +595686,370497,14,3,2,4,1,7,8,-1,False,M,school1,0,0,0,0,0,0,0 +644290,386699,47,1,1,2,3,2,-1,12,False,M,work1,0,0,0,0,0,0,0 +644291,386699,43,2,2,1,3,1,-1,2,False,M,work1,0,0,1,0,0,0,8 +644292,386699,7,3,1,4,1,7,9,-1,False,M,school1,0,0,0,0,0,0,0 +644476,386761,47,1,1,2,3,2,-1,4,False,M,work1,1,0,1,1,0,0,41 +644477,386761,43,2,2,1,3,1,-1,15,False,N,,0,1,0,0,0,0,16 +644478,386761,7,3,1,4,1,7,20,-1,False,M,school1,0,0,0,0,0,0,0 +1265898,568785,80,1,1,3,3,5,-1,-1,False,N,,0,0,0,1,0,0,1 +1267567,570454,85,1,1,3,3,5,-1,-1,False,H,,0,0,0,0,0,0,0 +1427193,703381,65,1,1,3,3,5,-1,-1,False,N,,0,1,0,0,0,0,16 +1427194,703381,69,2,2,3,3,5,-1,-1,False,N,,0,0,1,0,0,1,10 +1572659,763879,60,1,1,3,3,4,-1,-1,False,N,,0,1,0,0,0,0,16 +1572930,764150,52,1,1,3,3,4,-1,-1,False,N,,0,1,1,0,0,0,24 +1632206,823426,31,1,1,1,3,1,-1,2,False,H,,0,0,0,0,0,0,0 +1632281,823501,36,1,1,1,3,1,-1,13,False,M,work1,0,0,0,0,0,0,0 +1632987,824207,29,1,1,2,3,2,-1,4,False,M,work1,0,0,0,0,0,0,0 +1875721,982875,25,1,1,1,3,1,-1,10,False,M,work1,0,0,0,0,0,0,0 +1875722,982875,25,2,2,2,2,3,13,4,False,N,,0,0,0,0,1,0,4 +2159057,1099626,35,1,1,1,3,1,-1,2,False,M,work1,0,0,0,0,0,0,0 +2159058,1099626,36,2,2,3,2,3,9,-1,False,M,school1,0,0,0,0,0,0,0 +2159059,1099626,3,3,1,4,1,8,20,-1,False,M,school1,0,0,0,0,0,0,0 +2458500,1173905,40,1,1,3,3,4,-1,-1,False,N,,0,0,1,0,0,0,8 +2458501,1173905,42,2,2,3,3,4,-1,-1,False,N,,1,0,0,0,0,0,32 +2458502,1173905,12,3,2,4,1,7,8,-1,False,M,school1,0,0,0,0,0,0,0 +2458503,1173905,9,4,1,4,1,7,8,-1,False,M,school1,0,0,0,0,0,0,0 +2566698,1196298,36,1,1,1,3,1,-1,1,False,M,work1,0,0,0,0,0,0,0 +2566699,1196298,29,2,2,3,3,4,-1,-1,False,H,,0,0,0,0,0,0,0 +2566700,1196298,8,3,1,4,1,7,25,-1,False,M,school1,0,0,0,0,0,0,0 +2566701,1196298,4,4,2,4,1,8,3,-1,False,M,school1,0,0,0,0,0,0,0 +2566702,1196298,2,5,1,4,1,8,6,-1,False,M,school1,0,0,0,0,0,0,0 +2936550,1286259,67,1,2,3,3,5,-1,-1,False,N,,0,1,0,1,0,0,17 +2936848,1286557,67,1,1,3,3,5,-1,-1,False,N,,0,0,0,1,1,0,5 +3061894,1363467,68,1,1,3,3,5,-1,-1,False,N,,0,1,0,0,0,0,16 +3061895,1363467,63,2,2,2,3,2,-1,25,False,M,work1,0,0,1,1,0,0,9 +3188482,1402945,66,1,1,2,3,2,-1,24,False,M,work1,0,0,0,0,0,0,0 +3188483,1402945,48,2,2,2,3,2,-1,2,False,M,work1,0,0,0,0,0,0,0 +3188484,1402945,22,3,2,2,2,3,13,2,False,M,work_and_school,0,0,0,0,0,0,0 +3188485,1402945,19,4,2,2,2,3,9,2,False,M,work1,0,0,0,0,0,0,0 +3232955,1444715,42,1,1,2,3,2,-1,8,False,H,,0,0,0,0,0,0,0 +3233462,1445222,43,1,2,1,3,1,-1,22,False,M,work1,0,2,0,1,0,0,17 +3328568,1511234,53,1,2,1,3,1,-1,1,False,M,work1,0,0,0,0,0,0,0 +3328569,1511234,61,2,1,3,2,3,13,-1,False,N,,0,1,0,0,1,0,20 +3495342,1594621,31,1,1,1,3,1,-1,11,False,M,work1,0,0,0,1,0,0,1 +3495343,1594621,25,2,2,2,3,2,-1,9,False,M,work1,0,0,0,0,0,0,0 +3596364,1645132,56,1,2,3,2,3,9,-1,False,N,,0,1,0,0,1,0,20 +3596365,1645132,13,2,2,4,1,7,10,-1,False,N,,0,0,0,0,0,1,2 +3891102,1747467,36,1,2,1,3,1,-1,11,False,M,work1,0,0,0,0,0,0,0 +3891103,1747467,67,2,1,2,3,2,-1,12,False,N,,0,1,0,0,0,0,16 +3891104,1747467,8,3,1,4,1,7,17,-1,False,M,school1,0,0,0,2,0,0,1 +4171615,1810015,29,1,1,3,2,3,12,-1,False,M,school1,0,0,0,0,0,0,0 +4171616,1810015,20,2,1,3,3,4,-1,-1,False,N,,0,0,1,0,0,0,8 +4171617,1810015,27,3,1,1,3,1,-1,15,False,M,work1,0,0,0,0,0,0,0 +4171618,1810015,24,4,1,2,3,2,-1,13,False,H,,0,0,0,0,0,0,0 +4171619,1810015,58,5,2,3,3,4,-1,-1,False,N,,0,1,0,0,0,0,16 +4171620,1810015,3,6,2,4,1,8,8,-1,False,M,school1,0,0,0,0,0,0,0 +4171621,1810015,19,7,2,2,1,6,13,22,False,H,,0,0,0,0,0,0,0 +4171622,1810015,31,8,2,3,3,4,-1,-1,False,N,,0,1,0,0,0,0,16 +4171623,1810015,36,9,2,1,3,1,-1,21,False,M,work1,0,0,0,0,0,0,0 +4823797,1952792,74,1,1,2,3,2,-1,12,False,M,work1,0,0,1,1,0,0,9 +5057160,2048204,40,1,1,1,3,1,-1,23,False,M,work1,0,0,0,0,0,0,0 +5057338,2048382,33,1,1,1,3,1,-1,2,False,M,work1,0,1,1,0,1,1,30 +5387762,2223027,49,1,1,1,3,1,-1,4,False,M,work1,0,0,0,0,0,0,0 +5387763,2223027,39,2,2,1,3,1,-1,14,False,M,work1,0,0,0,0,0,0,0 +5389226,2223759,28,1,2,1,3,1,-1,1,False,M,work1,0,0,0,0,0,0,0 +5389227,2223759,29,2,1,1,3,1,-1,23,False,M,work1,0,0,0,0,0,0,0 +7305540,2727273,72,1,1,2,3,2,-1,20,False,M,work1,0,0,0,1,0,0,1 +7305541,2727273,62,2,2,2,3,2,-1,9,False,M,work2,0,0,0,0,0,0,0 +7453413,2762078,57,1,1,3,3,4,-1,-1,False,N,,0,1,0,0,0,0,16 +7511873,2820538,18,1,1,2,3,2,-1,11,False,H,,0,0,0,0,0,0,0 +7512109,2820774,35,1,1,1,3,1,-1,2,False,M,work1,0,0,0,0,0,0,0 +7512514,2821179,60,1,1,2,3,2,-1,22,False,N,,0,1,0,0,1,1,22 +7513432,2822097,39,1,2,2,3,2,-1,7,False,M,work1,0,0,0,0,0,0,0 +7513554,2822219,18,1,2,1,3,1,-1,9,False,M,work1,0,0,0,0,0,0,0 +7513565,2822230,19,1,2,2,2,3,12,25,False,M,work1,0,0,0,0,0,0,0 +7523517,2832182,87,1,2,3,3,5,-1,-1,False,N,,0,0,0,1,0,0,1 +7523764,2832429,93,1,2,3,3,5,-1,-1,False,H,,0,0,0,0,0,0,0 diff --git a/activitysim/estimation/test/test_edb_creation/survey_data/override_tours.csv b/activitysim/estimation/test/test_edb_creation/survey_data/override_tours.csv new file mode 100644 index 000000000..be63b500f --- /dev/null +++ b/activitysim/estimation/test/test_edb_creation/survey_data/override_tours.csv @@ -0,0 +1,118 @@ +tour_id,survey_tour_id,person_id,household_id,tour_type,tour_category,destination,origin,start,end,tour_mode,survey_parent_tour_id,parent_tour_id,composition,tdd,atwork_subtour_frequency,stop_frequency +10828426,108284260,264107,226869,work,mandatory,24,9,7,19,WALK_LRF,,,,49,no_subtours,0out_0in +13271288,132712880,323689,256660,work,mandatory,1,10,11,18,WALK_LRF,,,,106,no_subtours,0out_0in +13342710,133427100,325431,257531,work,mandatory,12,16,7,17,TNC_SINGLE,,,,47,no_subtours,1out_3in +24423157,244231570,595686,370497,school,mandatory,8,21,7,16,WALK_LOC,,,,46,,0out_0in +26415929,264159290,644290,386699,work,mandatory,12,7,12,22,WALK_LOC,,,,122,no_subtours,0out_0in +26415970,264159700,644291,386699,work,mandatory,2,7,7,17,WALK,,,,47,no_subtours,0out_0in +26416003,264160030,644292,386699,school,mandatory,9,7,13,19,WALK_LRF,,,,130,,0out_1in +26423555,264235550,644476,386761,work,mandatory,4,16,7,17,SHARED3FREE,,,,47,no_subtours,0out_0in +26423629,264236290,644478,386761,school,mandatory,20,16,11,19,WALK_LRF,,,,107,,0out_0in +66923560,669235600,1632281,823501,work,mandatory,13,12,7,19,TNC_SINGLE,,,,49,eat,0out_0in +66952506,669525060,1632987,824207,work,mandatory,4,18,15,21,WALK_LRF,,,,151,no_subtours,0out_0in +76904600,769046000,1875721,982875,work,mandatory,10,16,8,18,WALK_LOC,,,,64,no_subtours,0out_0in +88521376,885213760,2159057,1099626,work,mandatory,2,20,7,18,WALK_LRF,,,,48,no_subtours,0out_1in +88521409,885214090,2159058,1099626,school,mandatory,9,20,15,18,TAXI,,,,148,,0out_0in +88521450,885214500,2159059,1099626,school,mandatory,20,20,8,13,WALK,,,,59,,0out_0in +100798613,1007986130,2458502,1173905,school,mandatory,8,8,8,18,WALK,,,,64,,1out_0in +100798654,1007986540,2458503,1173905,school,mandatory,8,8,8,14,WALK,,,,60,,0out_0in +105234657,1052346570,2566698,1196298,work,mandatory,1,25,6,17,TNC_SINGLE,,,,30,no_subtours,0out_0in +105234731,1052347310,2566700,1196298,school,mandatory,25,25,7,15,WALK,,,,45,,0out_0in +105234772,1052347720,2566701,1196298,school,mandatory,3,25,8,13,WALK,,,,59,,0out_0in +105234813,1052348130,2566702,1196298,school,mandatory,6,25,12,20,WALK_LOC,,,,120,,0out_1in +125537734,1255377340,3061895,1363467,work,mandatory,25,24,6,13,WALK,,,,26,no_subtours,0out_0in +130727801,1307278010,3188482,1402945,work,mandatory,24,25,8,17,WALK,,,,63,no_subtours,1out_0in +130727842,1307278420,3188483,1402945,work,mandatory,2,25,9,17,WALK_LOC,,,,78,no_subtours,0out_0in +130727883,1307278830,3188484,1402945,work,mandatory,2,25,9,12,WALK_LOC,,,,73,no_subtours,0out_0in +130727875,1307278750,3188484,1402945,school,mandatory,13,25,16,17,WALK,,,,155,,0out_2in +130727924,1307279240,3188485,1402945,work,mandatory,2,25,10,21,BIKE,,,,96,no_subtours,1out_1in +132571981,1325719810,3233462,1445222,work,mandatory,22,17,7,23,TNC_SINGLE,,,,53,no_subtours,0out_0in +136471327,1364713270,3328568,1511234,work,mandatory,1,8,6,17,WALK_LRF,,,,30,no_subtours,0out_0in +143309061,1433090610,3495342,1594621,work,mandatory,11,10,7,16,WALK_LOC,,,,46,no_subtours,0out_0in +143309102,1433091020,3495343,1594621,work,mandatory,9,10,13,17,WALK,,,,128,eat,0out_0in +159535221,1595352210,3891102,1747467,work,mandatory,11,16,7,16,WALK_LOC,,,,46,no_subtours,0out_0in +159535295,1595352950,3891104,1747467,school,mandatory,17,16,7,14,WALK_LRF,,,,44,,0out_0in +171036246,1710362460,4171615,1810015,school,mandatory,12,16,13,13,WALK,,,,124,,0out_0in +171036336,1710363360,4171617,1810015,work,mandatory,15,16,9,18,WALK,,,,79,no_subtours,1out_0in +171036451,1710364510,4171620,1810015,school,mandatory,8,16,7,15,WALK_LOC,,,,45,,0out_0in +171036582,1710365820,4171623,1810015,work,mandatory,21,16,8,23,WALK,,,,69,eat,1out_1in +197775716,1977757160,4823797,1952792,work,mandatory,12,14,11,15,BIKE,,,,103,no_subtours,0out_0in +207343599,2073435990,5057160,2048204,work,mandatory,23,5,7,13,TNC_SINGLE,,,,43,no_subtours,0out_0in +207350897,2073508970,5057338,2048382,work,mandatory,2,7,6,17,TNC_SINGLE,,,,30,no_subtours,0out_0in +220898281,2208982810,5387762,2223027,work,mandatory,4,9,7,17,WALK_HVY,,,,47,no_subtours,0out_0in +220898322,2208983220,5387763,2223027,work,mandatory,14,9,8,17,WALK_HVY,,,,63,no_subtours,1out_1in +220958305,2209583050,5389226,2223759,work,mandatory,1,16,9,18,WALK,,,,79,eat,0out_0in +220958346,2209583460,5389227,2223759,work,mandatory,23,16,6,20,WALK,,,,33,no_subtours,0out_0in +299527179,2995271790,7305540,2727273,work,mandatory,20,20,11,15,DRIVEALONEFREE,,,,103,no_subtours,0out_0in +299527220,2995272200,7305541,2727273,work,mandatory,9,20,6,13,WALK,,,,26,no_subtours,0out_0in +299527221,2995272210,7305541,2727273,work,mandatory,9,20,14,18,WALK,,,,139,no_subtours,0out_0in +307996508,3079965080,7512109,2820774,work,mandatory,2,8,8,19,WALK,,,,65,eat,0out_2in +308050751,3080507510,7513432,2822097,work,mandatory,7,8,5,15,BIKE,,,,10,no_subtours,0out_0in +308055753,3080557530,7513554,2822219,work,mandatory,9,8,5,16,WALK,,,,11,no_subtours,0out_0in +308056204,3080562040,7513565,2822230,work,mandatory,25,8,9,18,WALK,,,,79,no_subtours,1out_0in +220958279,2209582790,5389226,2223759,eatout,joint,13,16,20,20,WALK,,,adults,180,,0out_0in +100798519,1007985190,2458502,1173905,shopping,joint,5,8,8,8,SHARED2FREE,,,children,54,,0out_0in +130727777,1307277770,3188483,1402945,othdiscr,joint,24,25,9,9,WALK,,,adults,70,,0out_0in +1094154,10941540,26686,26686,othmaint,non_mandatory,9,8,12,13,BIKE,,,,113,,0out_0in +1094132,10941320,26686,26686,eatout,non_mandatory,5,8,19,19,WALK,,,,175,,0out_0in +1100640,11006400,26844,26844,social,non_mandatory,7,8,8,12,WALK,,,,58,,0out_1in +1136791,11367910,27726,27726,othdiscr,non_mandatory,9,10,8,10,WALK,,,,56,,0out_0in +1214658,12146580,29625,29625,shopping,non_mandatory,17,17,15,15,WALK,,,,145,,0out_0in +4594657,45946570,112064,112064,shopping,non_mandatory,3,16,16,17,WALK,,,,155,,0out_0in +4594649,45946490,112064,112064,othdiscr,non_mandatory,21,16,12,14,DRIVEALONEFREE,,,,114,,0out_0in +10828453,108284530,264108,226869,othdiscr,non_mandatory,19,9,10,11,WALK,,,,86,,0out_0in +13342745,133427450,325432,257531,shopping,non_mandatory,14,16,12,13,TAXI,,,,113,,0out_0in +26415959,264159590,644291,386699,othmaint,non_mandatory,2,7,19,23,TNC_SINGLE,,,,179,,0out_0in +26423525,264235250,644476,386761,escort,non_mandatory,11,16,5,6,TNC_SINGLE,,,,1,,0out_0in +26423544,264235440,644476,386761,othmaint,non_mandatory,13,16,18,19,WALK,,,,170,,0out_0in +26423541,264235410,644476,386761,othdiscr,non_mandatory,16,16,18,18,WALK,,,,169,,0out_0in +26423590,264235900,644477,386761,shopping,non_mandatory,16,16,14,14,DRIVEALONEFREE,,,,135,,0out_0in +51901843,519018430,1265898,568785,othdiscr,non_mandatory,20,17,9,20,WALK_LRF,,,,81,,0out_0in +58514946,585149460,1427193,703381,shopping,non_mandatory,14,25,13,19,WALK,,,,130,,0out_0in +58514982,585149820,1427194,703381,othmaint,non_mandatory,14,25,7,13,WALK,,,,43,,0out_0in +58514990,585149900,1427194,703381,social,non_mandatory,2,25,16,22,WALK,,,,160,,1out_3in +64479052,644790520,1572659,763879,shopping,non_mandatory,24,6,7,20,WALK,,,,50,,2out_2in +64490163,644901630,1572930,764150,shopping,non_mandatory,7,9,11,16,WALK,,,,104,,0out_0in +64490158,644901580,1572930,764150,othmaint,non_mandatory,9,9,8,11,WALK,,,,57,,1out_0in +76904608,769046080,1875722,982875,eatout,non_mandatory,14,16,10,17,WALK,,,,92,,1out_0in +100798528,1007985280,2458500,1173905,othmaint,non_mandatory,7,8,12,20,WALK,,,,120,,0out_0in +100798550,1007985500,2458501,1173905,escort,non_mandatory,16,8,15,16,WALK_LOC,,,,146,,0out_0in +120398583,1203985830,2936550,1286259,shopping,non_mandatory,11,8,12,13,WALK,,,,113,,0out_0in +120398575,1203985750,2936550,1286259,othdiscr,non_mandatory,6,8,14,17,WALK,,,,138,,0out_0in +120410793,1204107930,2936848,1286557,othdiscr,non_mandatory,11,11,15,16,DRIVEALONEFREE,,,,146,,1out_0in +120410774,1204107740,2936848,1286557,eatout,non_mandatory,9,11,14,15,DRIVEALONEFREE,,,,136,,0out_0in +125537687,1255376870,3061894,1363467,shopping,non_mandatory,20,24,12,13,DRIVEALONEFREE,,,,113,,0out_0in +125537723,1255377230,3061895,1363467,othmaint,non_mandatory,7,24,15,16,WALK,,,,146,,0out_0in +125537720,1255377200,3061895,1363467,othdiscr,non_mandatory,9,24,17,19,WALK_HVY,,,,164,,0out_0in +132571975,1325719750,3233462,1445222,shopping,non_mandatory,16,17,6,6,WALK_LRF,,,,19,,0out_0in +132571976,1325719760,3233462,1445222,shopping,non_mandatory,13,17,7,7,WALK_LOC,,,,37,,0out_0in +132571967,1325719670,3233462,1445222,othdiscr,non_mandatory,14,17,7,7,WALK_LRF,,,,37,,0out_0in +136471362,1364713620,3328569,1511234,shopping,non_mandatory,4,8,10,10,WALK_LRF,,,,85,,1out_0in +136471335,1364713350,3328569,1511234,eatout,non_mandatory,13,8,14,16,WALK_LRF,,,,137,,0out_0in +143309047,1433090470,3495342,1594621,othdiscr,non_mandatory,15,10,16,22,TNC_SINGLE,,,,160,,0out_0in +147450957,1474509570,3596364,1645132,shopping,non_mandatory,22,9,19,20,WALK_LRF,,,,176,,0out_2in +147450930,1474509300,3596364,1645132,eatout,non_mandatory,5,9,14,14,WALK,,,,135,,0out_0in +147451001,1474510010,3596365,1645132,social,non_mandatory,9,9,7,18,TAXI,,,,48,,0out_0in +159535256,1595352560,3891103,1747467,shopping,non_mandatory,16,16,13,16,WALK,,,,127,,0out_0in +159535289,1595352890,3891104,1747467,othdiscr,non_mandatory,2,16,14,15,WALK,,,,136,,0out_0in +159535290,1595352900,3891104,1747467,othdiscr,non_mandatory,19,16,16,21,WALK_LOC,,,,159,,0out_0in +171036284,1710362840,4171616,1810015,othmaint,non_mandatory,3,16,9,11,WALK,,,,72,,0out_0in +171036412,1710364120,4171619,1810015,shopping,non_mandatory,1,16,13,15,WALK,,,,126,,0out_1in +171036535,1710365350,4171622,1810015,shopping,non_mandatory,19,16,9,15,WALK,,,,76,,0out_0in +197775705,1977757050,4823797,1952792,othmaint,non_mandatory,7,14,15,15,DRIVEALONEFREE,,,,145,,0out_0in +197775702,1977757020,4823797,1952792,othdiscr,non_mandatory,16,14,16,18,WALK,,,,156,,0out_0in +207350891,2073508910,5057338,2048382,shopping,non_mandatory,25,7,21,21,WALK_LOC,,,,184,,0out_0in +207350886,2073508860,5057338,2048382,othmaint,non_mandatory,7,7,18,18,WALK,,,,169,,0out_0in +207350864,2073508640,5057338,2048382,eatout,non_mandatory,10,7,20,20,WALK_LRF,,,,180,,0out_0in +207350894,2073508940,5057338,2048382,social,non_mandatory,6,7,18,19,TNC_SINGLE,,,,170,,0out_0in +299527165,2995271650,7305540,2727273,othdiscr,non_mandatory,12,20,15,21,WALK,,,,151,,0out_0in +305589966,3055899660,7453413,2762078,shopping,non_mandatory,19,20,16,16,WALK,,,,154,,0out_0in +308013107,3080131070,7512514,2821179,shopping,non_mandatory,6,8,17,19,WALK,,,,164,,0out_0in +308013080,3080130800,7512514,2821179,eatout,non_mandatory,13,8,8,16,WALK,,,,62,,0out_0in +308013110,3080131100,7512514,2821179,social,non_mandatory,9,8,16,16,WALK_LOC,,,,154,,0out_0in +308464222,3084642220,7523517,2832182,othdiscr,non_mandatory,9,7,8,13,WALK_LOC,,,,59,,0out_0in +66923525,669235250,1632281,823501,eat,atwork,8,13,13,14,WALK,669235600.0,66923560.0,,125,,1out_0in +143309067,1433090670,3495343,1594621,eat,atwork,16,9,14,14,WALK,1433091020.0,143309102.0,,135,,3out_0in +171036547,1710365470,4171623,1810015,eat,atwork,7,21,10,10,WALK,1710365820.0,171036582.0,,85,,0out_1in +220958270,2209582700,5389226,2223759,eat,atwork,2,1,13,13,WALK,2209583050.0,220958305.0,,124,,0out_0in +307996473,3079964730,7512109,2820774,eat,atwork,8,2,10,10,WALK,3079965080.0,307996508.0,,85,,0out_1in diff --git a/activitysim/estimation/test/test_edb_creation/survey_data/override_trips.csv b/activitysim/estimation/test/test_edb_creation/survey_data/override_trips.csv new file mode 100644 index 000000000..e2f36dab7 --- /dev/null +++ b/activitysim/estimation/test/test_edb_creation/survey_data/override_trips.csv @@ -0,0 +1,278 @@ +trip_id,survey_trip_id,person_id,household_id,survey_tour_id,outbound,purpose,destination,origin,depart,trip_mode,tour_id,trip_num +8753057,87530570,26686,26686,10941320,True,eatout,5,8,19,WALK,1094132,1 +8753061,87530610,26686,26686,10941320,False,home,8,5,19,WALK,1094132,1 +8753233,87532330,26686,26686,10941540,True,othmaint,9,8,12,BIKE,1094154,1 +8753237,87532370,26686,26686,10941540,False,home,8,9,13,WALK,1094154,1 +8805121,88051210,26844,26844,11006400,True,social,7,8,8,WALK,1100640,1 +8805125,88051250,26844,26844,11006400,False,othmaint,7,7,12,WALK,1100640,1 +8805126,88051260,26844,26844,11006400,False,home,8,7,12,WALK,1100640,2 +9094329,90943290,27726,27726,11367910,True,othdiscr,9,10,8,WALK,1136791,1 +9094333,90943330,27726,27726,11367910,False,home,10,9,10,WALK,1136791,1 +9717265,97172650,29625,29625,12146580,True,shopping,17,17,15,WALK,1214658,1 +9717269,97172690,29625,29625,12146580,False,home,17,17,15,WALK,1214658,1 +36757193,367571930,112064,112064,45946490,True,othdiscr,21,16,12,WALK,4594649,1 +36757197,367571970,112064,112064,45946490,False,home,16,21,14,TAXI,4594649,1 +36757257,367572570,112064,112064,45946570,True,shopping,3,16,16,WALK,4594657,1 +36757261,367572610,112064,112064,45946570,False,home,16,3,17,WALK,4594657,1 +86627409,866274090,264107,226869,108284260,True,work,24,9,7,WALK_LRF,10828426,1 +86627413,866274130,264107,226869,108284260,False,home,9,24,19,WALK_LRF,10828426,1 +86627625,866276250,264108,226869,108284530,True,othdiscr,19,9,10,WALK,10828453,1 +86627629,866276290,264108,226869,108284530,False,home,9,19,11,WALK,10828453,1 +106170305,1061703050,323689,256660,132712880,True,work,1,10,11,WALK_LRF,13271288,1 +106170309,1061703090,323689,256660,132712880,False,home,10,1,18,WALK_LRF,13271288,1 +106741681,1067416810,325431,257531,133427100,True,shopping,25,16,7,WALK,13342710,1 +106741682,1067416820,325431,257531,133427100,True,work,12,25,8,WALK,13342710,2 +106741685,1067416850,325431,257531,133427100,False,eatout,7,12,17,WALK,13342710,1 +106741686,1067416860,325431,257531,133427100,False,shopping,25,7,17,WALK_LOC,13342710,2 +106741687,1067416870,325431,257531,133427100,False,escort,7,25,17,WALK_LOC,13342710,3 +106741688,1067416880,325431,257531,133427100,False,home,16,7,17,WALK,13342710,4 +106741961,1067419610,325432,257531,133427450,True,shopping,14,16,12,WALK_LOC,13342745,1 +106741965,1067419650,325432,257531,133427450,False,home,16,14,13,WALK_LOC,13342745,1 +195385257,1953852570,595686,370497,244231570,True,school,8,21,7,WALK_LOC,24423157,1 +195385261,1953852610,595686,370497,244231570,False,home,21,8,16,WALK,24423157,1 +211327433,2113274330,644290,386699,264159290,True,work,12,7,12,WALK_LOC,26415929,1 +211327437,2113274370,644290,386699,264159290,False,home,7,12,22,WALK_LOC,26415929,1 +211327673,2113276730,644291,386699,264159590,True,othmaint,2,7,19,WALK_LOC,26415959,1 +211327677,2113276770,644291,386699,264159590,False,home,7,2,23,TNC_SINGLE,26415959,1 +211327761,2113277610,644291,386699,264159700,True,work,2,7,7,WALK,26415970,1 +211327765,2113277650,644291,386699,264159700,False,home,7,2,17,WALK,26415970,1 +211328025,2113280250,644292,386699,264160030,True,school,9,7,13,WALK_LOC,26416003,1 +211328029,2113280290,644292,386699,264160030,False,othdiscr,7,9,19,WALK_LRF,26416003,1 +211328030,2113280300,644292,386699,264160030,False,home,7,7,19,WALK,26416003,2 +211388201,2113882010,644476,386761,264235250,True,escort,11,16,5,WALK_LOC,26423525,1 +211388205,2113882050,644476,386761,264235250,False,home,16,11,6,WALK_LOC,26423525,1 +211388329,2113883290,644476,386761,264235410,True,othdiscr,16,16,18,WALK,26423541,1 +211388333,2113883330,644476,386761,264235410,False,home,16,16,18,WALK,26423541,1 +211388353,2113883530,644476,386761,264235440,True,othmaint,13,16,18,WALK,26423544,1 +211388357,2113883570,644476,386761,264235440,False,home,16,13,19,WALK,26423544,1 +211388441,2113884410,644476,386761,264235550,True,work,4,16,7,SHARED2FREE,26423555,1 +211388445,2113884450,644476,386761,264235550,False,home,16,4,17,SHARED3FREE,26423555,1 +211388721,2113887210,644477,386761,264235900,True,shopping,16,16,14,WALK,26423590,1 +211388725,2113887250,644477,386761,264235900,False,home,16,16,14,WALK,26423590,1 +211389033,2113890330,644478,386761,264236290,True,school,20,16,11,WALK_LOC,26423629,1 +211389037,2113890370,644478,386761,264236290,False,home,16,20,19,WALK_LRF,26423629,1 +415214745,4152147450,1265898,568785,519018430,True,othdiscr,20,17,9,WALK_LRF,51901843,1 +415214749,4152147490,1265898,568785,519018430,False,home,17,20,20,WALK_LRF,51901843,1 +468119569,4681195690,1427193,703381,585149460,True,shopping,14,25,13,WALK,58514946,1 +468119573,4681195730,1427193,703381,585149460,False,home,25,14,19,WALK,58514946,1 +468119857,4681198570,1427194,703381,585149820,True,othmaint,14,25,7,WALK,58514982,1 +468119861,4681198610,1427194,703381,585149820,False,home,25,14,13,WALK,58514982,1 +468119921,4681199210,1427194,703381,585149900,True,eatout,6,25,16,WALK,58514990,1 +468119922,4681199220,1427194,703381,585149900,True,social,2,6,19,WALK,58514990,2 +468119925,4681199250,1427194,703381,585149900,False,social,6,2,21,WALK,58514990,1 +468119926,4681199260,1427194,703381,585149900,False,shopping,8,6,22,WALK,58514990,2 +468119927,4681199270,1427194,703381,585149900,False,social,7,8,22,WALK,58514990,3 +468119928,4681199280,1427194,703381,585149900,False,home,25,7,22,WALK,58514990,4 +515832417,5158324170,1572659,763879,644790520,True,othmaint,25,6,7,WALK,64479052,1 +515832418,5158324180,1572659,763879,644790520,True,escort,25,25,12,WALK,64479052,2 +515832419,5158324190,1572659,763879,644790520,True,shopping,24,25,17,WALK,64479052,3 +515832421,5158324210,1572659,763879,644790520,False,shopping,25,24,18,WALK,64479052,1 +515832422,5158324220,1572659,763879,644790520,False,escort,7,25,20,WALK,64479052,2 +515832423,5158324230,1572659,763879,644790520,False,home,6,7,20,WALK,64479052,3 +515921265,5159212650,1572930,764150,644901580,True,othmaint,7,9,8,WALK,64490158,1 +515921266,5159212660,1572930,764150,644901580,True,othmaint,9,7,8,WALK,64490158,2 +515921269,5159212690,1572930,764150,644901580,False,home,9,9,11,WALK,64490158,1 +515921305,5159213050,1572930,764150,644901630,True,shopping,7,9,11,WALK,64490163,1 +515921309,5159213090,1572930,764150,644901630,False,home,9,7,16,WALK,64490163,1 +535388201,5353882010,1632281,823501,669235250,True,work,9,13,13,WALK,66923525,1 +535388202,5353882020,1632281,823501,669235250,True,atwork,8,9,13,WALK,66923525,2 +535388205,5353882050,1632281,823501,669235250,False,work,13,8,14,WALK,66923525,1 +535388481,5353884810,1632281,823501,669235600,True,work,13,12,7,WALK,66923560,1 +535388485,5353884850,1632281,823501,669235600,False,home,12,13,19,WALK,66923560,1 +535620049,5356200490,1632987,824207,669525060,True,work,4,18,15,WALK_LOC,66952506,1 +535620053,5356200530,1632987,824207,669525060,False,home,18,4,21,WALK,66952506,1 +615236801,6152368010,1875721,982875,769046000,True,work,10,16,8,WALK_LOC,76904600,1 +615236805,6152368050,1875721,982875,769046000,False,home,16,10,18,WALK_LOC,76904600,1 +615236865,6152368650,1875722,982875,769046080,True,escort,7,16,10,WALK,76904608,1 +615236866,6152368660,1875722,982875,769046080,True,eatout,14,7,13,WALK,76904608,2 +615236869,6152368690,1875722,982875,769046080,False,home,16,14,17,WALK,76904608,1 +708171009,7081710090,2159057,1099626,885213760,True,work,2,20,7,WALK,88521376,1 +708171013,7081710130,2159057,1099626,885213760,False,shopping,8,2,18,WALK,88521376,1 +708171014,7081710140,2159057,1099626,885213760,False,home,20,8,18,WALK_LOC,88521376,2 +708171273,7081712730,2159058,1099626,885214090,True,univ,9,20,15,WALK_LOC,88521409,1 +708171277,7081712770,2159058,1099626,885214090,False,home,20,9,18,WALK_LOC,88521409,1 +708171601,7081716010,2159059,1099626,885214500,True,school,20,20,8,WALK,88521450,1 +708171605,7081716050,2159059,1099626,885214500,False,home,20,20,13,WALK,88521450,1 +806388153,8063881530,2458502,1173905,1007985190,True,shopping,5,8,8,SHARED2FREE,100798519,1 +806388157,8063881570,2458502,1173905,1007985190,False,home,8,5,8,SHARED2FREE,100798519,1 +806388225,8063882250,2458500,1173905,1007985280,True,othmaint,7,8,12,WALK,100798528,1 +806388229,8063882290,2458500,1173905,1007985280,False,home,8,7,20,WALK,100798528,1 +806388401,8063884010,2458501,1173905,1007985500,True,escort,16,8,15,WALK_LOC,100798550,1 +806388405,8063884050,2458501,1173905,1007985500,False,home,8,16,16,WALK_LOC,100798550,1 +806388905,8063889050,2458502,1173905,1007986130,True,social,7,8,8,WALK,100798613,1 +806388906,8063889060,2458502,1173905,1007986130,True,school,8,7,8,WALK,100798613,2 +806388909,8063889090,2458502,1173905,1007986130,False,home,8,8,18,WALK,100798613,1 +806389233,8063892330,2458503,1173905,1007986540,True,school,8,8,8,WALK,100798654,1 +806389237,8063892370,2458503,1173905,1007986540,False,home,8,8,14,WALK,100798654,1 +841877257,8418772570,2566698,1196298,1052346570,True,work,1,25,6,WALK,105234657,1 +841877261,8418772610,2566698,1196298,1052346570,False,home,25,1,17,WALK_LOC,105234657,1 +841877849,8418778490,2566700,1196298,1052347310,True,school,25,25,7,WALK,105234731,1 +841877853,8418778530,2566700,1196298,1052347310,False,home,25,25,15,WALK,105234731,1 +841878177,8418781770,2566701,1196298,1052347720,True,school,3,25,8,WALK,105234772,1 +841878181,8418781810,2566701,1196298,1052347720,False,home,25,3,13,WALK,105234772,1 +841878505,8418785050,2566702,1196298,1052348130,True,school,6,25,12,WALK_LOC,105234813,1 +841878509,8418785090,2566702,1196298,1052348130,False,shopping,25,6,20,WALK_LOC,105234813,1 +841878510,8418785100,2566702,1196298,1052348130,False,home,25,25,20,WALK,105234813,2 +963188601,9631886010,2936550,1286259,1203985750,True,othdiscr,6,8,14,WALK,120398575,1 +963188605,9631886050,2936550,1286259,1203985750,False,home,8,6,17,WALK,120398575,1 +963188665,9631886650,2936550,1286259,1203985830,True,shopping,11,8,12,WALK,120398583,1 +963188669,9631886690,2936550,1286259,1203985830,False,home,8,11,13,WALK,120398583,1 +963286193,9632861930,2936848,1286557,1204107740,True,eatout,9,11,14,WALK,120410774,1 +963286197,9632861970,2936848,1286557,1204107740,False,home,11,9,15,WALK,120410774,1 +963286345,9632863450,2936848,1286557,1204107930,True,escort,10,11,15,WALK,120410793,1 +963286346,9632863460,2936848,1286557,1204107930,True,othdiscr,11,10,16,WALK,120410793,2 +963286349,9632863490,2936848,1286557,1204107930,False,home,11,11,16,WALK,120410793,1 +1004301497,10043014970,3061894,1363467,1255376870,True,shopping,20,24,12,TNC_SHARED,125537687,1 +1004301501,10043015010,3061894,1363467,1255376870,False,home,24,20,13,DRIVEALONEFREE,125537687,1 +1004301761,10043017610,3061895,1363467,1255377200,True,othdiscr,9,24,17,WALK_HVY,125537720,1 +1004301765,10043017650,3061895,1363467,1255377200,False,home,24,9,19,WALK_LRF,125537720,1 +1004301785,10043017850,3061895,1363467,1255377230,True,othmaint,7,24,15,WALK,125537723,1 +1004301789,10043017890,3061895,1363467,1255377230,False,home,24,7,16,WALK,125537723,1 +1004301873,10043018730,3061895,1363467,1255377340,True,work,25,24,6,WALK,125537734,1 +1004301877,10043018770,3061895,1363467,1255377340,False,home,24,25,13,WALK,125537734,1 +1045822217,10458222170,3188483,1402945,1307277770,True,othdiscr,24,25,9,WALK,130727777,1 +1045822221,10458222210,3188483,1402945,1307277770,False,home,25,24,9,WALK,130727777,1 +1045822409,10458224090,3188482,1402945,1307278010,True,work,7,25,8,WALK,130727801,1 +1045822410,10458224100,3188482,1402945,1307278010,True,work,24,7,9,WALK,130727801,2 +1045822413,10458224130,3188482,1402945,1307278010,False,home,25,24,17,WALK,130727801,1 +1045822737,10458227370,3188483,1402945,1307278420,True,work,2,25,9,WALK,130727842,1 +1045822741,10458227410,3188483,1402945,1307278420,False,home,25,2,17,WALK_LOC,130727842,1 +1045823001,10458230010,3188484,1402945,1307278750,True,univ,13,25,16,WALK,130727875,1 +1045823005,10458230050,3188484,1402945,1307278750,False,shopping,7,13,17,WALK,130727875,1 +1045823006,10458230060,3188484,1402945,1307278750,False,othmaint,7,7,17,WALK,130727875,2 +1045823007,10458230070,3188484,1402945,1307278750,False,home,25,7,17,WALK,130727875,3 +1045823065,10458230650,3188484,1402945,1307278830,True,work,2,25,9,WALK,130727883,1 +1045823069,10458230690,3188484,1402945,1307278830,False,home,25,2,12,WALK_LOC,130727883,1 +1045823393,10458233930,3188485,1402945,1307279240,True,escort,25,25,10,BIKE,130727924,1 +1045823394,10458233940,3188485,1402945,1307279240,True,work,2,25,12,BIKE,130727924,2 +1045823397,10458233970,3188485,1402945,1307279240,False,eatout,7,2,20,BIKE,130727924,1 +1045823398,10458233980,3188485,1402945,1307279240,False,home,25,7,21,BIKE,130727924,2 +1060575737,10605757370,3233462,1445222,1325719670,True,othdiscr,14,17,7,WALK,132571967,1 +1060575741,10605757410,3233462,1445222,1325719670,False,home,17,14,7,WALK_LOC,132571967,1 +1060575801,10605758010,3233462,1445222,1325719750,True,shopping,16,17,6,WALK,132571975,1 +1060575805,10605758050,3233462,1445222,1325719750,False,home,17,16,6,WALK_LRF,132571975,1 +1060575809,10605758090,3233462,1445222,1325719760,True,shopping,13,17,7,WALK_LOC,132571976,1 +1060575813,10605758130,3233462,1445222,1325719760,False,home,17,13,7,WALK_LOC,132571976,1 +1060575849,10605758490,3233462,1445222,1325719810,True,work,22,17,7,WALK_LRF,132571981,1 +1060575853,10605758530,3233462,1445222,1325719810,False,home,17,22,23,TNC_SINGLE,132571981,1 +1091770617,10917706170,3328568,1511234,1364713270,True,work,1,8,6,WALK_LRF,136471327,1 +1091770621,10917706210,3328568,1511234,1364713270,False,home,8,1,17,WALK,136471327,1 +1091770681,10917706810,3328569,1511234,1364713350,True,eatout,13,8,14,WALK,136471335,1 +1091770685,10917706850,3328569,1511234,1364713350,False,home,8,13,16,WALK_LRF,136471335,1 +1091770897,10917708970,3328569,1511234,1364713620,True,eatout,9,8,10,WALK_LOC,136471362,1 +1091770898,10917708980,3328569,1511234,1364713620,True,shopping,4,9,10,WALK_LRF,136471362,2 +1091770901,10917709010,3328569,1511234,1364713620,False,home,8,4,10,WALK_LRF,136471362,1 +1146472377,11464723770,3495342,1594621,1433090470,True,othdiscr,15,10,16,WALK_LOC,143309047,1 +1146472381,11464723810,3495342,1594621,1433090470,False,home,10,15,22,WALK_LRF,143309047,1 +1146472489,11464724890,3495342,1594621,1433090610,True,work,11,10,7,WALK_LOC,143309061,1 +1146472493,11464724930,3495342,1594621,1433090610,False,home,10,11,16,WALK,143309061,1 +1146472537,11464725370,3495343,1594621,1433090670,True,othmaint,6,9,14,WALK,143309067,1 +1146472538,11464725380,3495343,1594621,1433090670,True,shopping,6,6,14,WALK,143309067,2 +1146472539,11464725390,3495343,1594621,1433090670,True,escort,7,6,14,WALK,143309067,3 +1146472540,11464725400,3495343,1594621,1433090670,True,atwork,16,7,14,WALK,143309067,4 +1146472541,11464725410,3495343,1594621,1433090670,False,work,9,16,14,WALK,143309067,1 +1146472817,11464728170,3495343,1594621,1433091020,True,work,9,10,13,WALK,143309102,1 +1146472821,11464728210,3495343,1594621,1433091020,False,home,10,9,17,WALK,143309102,1 +1179607441,11796074410,3596364,1645132,1474509300,True,eatout,5,9,14,WALK,147450930,1 +1179607445,11796074450,3596364,1645132,1474509300,False,home,9,5,14,WALK,147450930,1 +1179607657,11796076570,3596364,1645132,1474509570,True,shopping,22,9,19,WALK_LRF,147450957,1 +1179607661,11796076610,3596364,1645132,1474509570,False,shopping,8,22,20,WALK_LRF,147450957,1 +1179607662,11796076620,3596364,1645132,1474509570,False,eatout,9,8,20,WALK_LOC,147450957,2 +1179607663,11796076630,3596364,1645132,1474509570,False,home,9,9,20,WALK,147450957,3 +1179608009,11796080090,3596365,1645132,1474510010,True,social,9,9,7,WALK,147451001,1 +1179608013,11796080130,3596365,1645132,1474510010,False,home,9,9,18,WALK,147451001,1 +1276281769,12762817690,3891102,1747467,1595352210,True,work,11,16,7,WALK_LOC,159535221,1 +1276281773,12762817730,3891102,1747467,1595352210,False,home,16,11,16,WALK_LOC,159535221,1 +1276282049,12762820490,3891103,1747467,1595352560,True,shopping,16,16,13,WALK,159535256,1 +1276282053,12762820530,3891103,1747467,1595352560,False,home,16,16,16,WALK,159535256,1 +1276282313,12762823130,3891104,1747467,1595352890,True,othdiscr,2,16,14,WALK,159535289,1 +1276282317,12762823170,3891104,1747467,1595352890,False,home,16,2,15,WALK,159535289,1 +1276282321,12762823210,3891104,1747467,1595352900,True,othdiscr,19,16,16,WALK_LOC,159535290,1 +1276282325,12762823250,3891104,1747467,1595352900,False,home,16,19,21,WALK_LOC,159535290,1 +1276282361,12762823610,3891104,1747467,1595352950,True,school,17,16,7,WALK_LRF,159535295,1 +1276282365,12762823650,3891104,1747467,1595352950,False,home,16,17,14,WALK_LRF,159535295,1 +1368289969,13682899690,4171615,1810015,1710362460,True,univ,12,16,13,WALK,171036246,1 +1368289973,13682899730,4171615,1810015,1710362460,False,home,16,12,13,WALK,171036246,1 +1368290273,13682902730,4171616,1810015,1710362840,True,othmaint,3,16,9,WALK,171036284,1 +1368290277,13682902770,4171616,1810015,1710362840,False,home,16,3,11,WALK,171036284,1 +1368290689,13682906890,4171617,1810015,1710363360,True,social,8,16,9,WALK,171036336,1 +1368290690,13682906900,4171617,1810015,1710363360,True,work,15,8,12,WALK,171036336,2 +1368290693,13682906930,4171617,1810015,1710363360,False,home,16,15,18,WALK,171036336,1 +1368291297,13682912970,4171619,1810015,1710364120,True,shopping,1,16,13,WALK,171036412,1 +1368291301,13682913010,4171619,1810015,1710364120,False,shopping,7,1,14,WALK,171036412,1 +1368291302,13682913020,4171619,1810015,1710364120,False,home,16,7,15,WALK,171036412,2 +1368291609,13682916090,4171620,1810015,1710364510,True,school,8,16,7,WALK_LOC,171036451,1 +1368291613,13682916130,4171620,1810015,1710364510,False,home,16,8,15,WALK_LOC,171036451,1 +1368292281,13682922810,4171622,1810015,1710365350,True,shopping,19,16,9,WALK,171036535,1 +1368292285,13682922850,4171622,1810015,1710365350,False,home,16,19,15,WALK,171036535,1 +1368292377,13682923770,4171623,1810015,1710365470,True,atwork,7,21,10,WALK,171036547,1 +1368292381,13682923810,4171623,1810015,1710365470,False,othmaint,6,7,10,WALK,171036547,1 +1368292382,13682923820,4171623,1810015,1710365470,False,work,21,6,10,WALK,171036547,2 +1368292657,13682926570,4171623,1810015,1710365820,True,escort,25,16,8,WALK,171036582,1 +1368292658,13682926580,4171623,1810015,1710365820,True,work,21,25,8,WALK,171036582,2 +1368292661,13682926610,4171623,1810015,1710365820,False,work,7,21,23,WALK,171036582,1 +1368292662,13682926620,4171623,1810015,1710365820,False,home,16,7,23,WALK,171036582,2 +1582205617,15822056170,4823797,1952792,1977757020,True,othdiscr,16,14,16,WALK,197775702,1 +1582205621,15822056210,4823797,1952792,1977757020,False,home,14,16,18,WALK,197775702,1 +1582205641,15822056410,4823797,1952792,1977757050,True,othmaint,7,14,15,WALK,197775705,1 +1582205645,15822056450,4823797,1952792,1977757050,False,home,14,7,15,WALK,197775705,1 +1582205729,15822057290,4823797,1952792,1977757160,True,work,12,14,11,BIKE,197775716,1 +1582205733,15822057330,4823797,1952792,1977757160,False,home,14,12,15,BIKE,197775716,1 +1658748793,16587487930,5057160,2048204,2073435990,True,work,23,5,7,WALK_LRF,207343599,1 +1658748797,16587487970,5057160,2048204,2073435990,False,home,5,23,13,WALK_LOC,207343599,1 +1658806913,16588069130,5057338,2048382,2073508640,True,eatout,10,7,20,WALK,207350864,1 +1658806917,16588069170,5057338,2048382,2073508640,False,home,7,10,20,WALK,207350864,1 +1658807089,16588070890,5057338,2048382,2073508860,True,othmaint,7,7,18,WALK,207350886,1 +1658807093,16588070930,5057338,2048382,2073508860,False,home,7,7,18,WALK,207350886,1 +1658807129,16588071290,5057338,2048382,2073508910,True,shopping,25,7,21,WALK,207350891,1 +1658807133,16588071330,5057338,2048382,2073508910,False,home,7,25,21,WALK,207350891,1 +1658807153,16588071530,5057338,2048382,2073508940,True,social,6,7,18,WALK_LOC,207350894,1 +1658807157,16588071570,5057338,2048382,2073508940,False,home,7,6,19,WALK_LOC,207350894,1 +1658807177,16588071770,5057338,2048382,2073508970,True,work,2,7,6,WALK,207350897,1 +1658807181,16588071810,5057338,2048382,2073508970,False,home,7,2,17,WALK_LOC,207350897,1 +1767186249,17671862490,5387762,2223027,2208982810,True,work,4,9,7,WALK_HVY,220898281,1 +1767186253,17671862530,5387762,2223027,2208982810,False,home,9,4,17,WALK_LRF,220898281,1 +1767186577,17671865770,5387763,2223027,2208983220,True,escort,7,9,8,WALK,220898322,1 +1767186578,17671865780,5387763,2223027,2208983220,True,work,14,7,8,WALK_LOC,220898322,2 +1767186581,17671865810,5387763,2223027,2208983220,False,othmaint,9,14,17,WALK_LRF,220898322,1 +1767186582,17671865820,5387763,2223027,2208983220,False,home,9,9,17,WALK,220898322,2 +1767666161,17676661610,5389226,2223759,2209582700,True,atwork,2,1,13,WALK,220958270,1 +1767666165,17676661650,5389226,2223759,2209582700,False,work,1,2,13,WALK,220958270,1 +1767666233,17676662330,5389226,2223759,2209582790,True,eatout,13,16,20,TNC_SINGLE,220958279,1 +1767666237,17676662370,5389226,2223759,2209582790,False,home,16,13,20,TAXI,220958279,1 +1767666441,17676664410,5389226,2223759,2209583050,True,work,1,16,9,WALK,220958305,1 +1767666445,17676664450,5389226,2223759,2209583050,False,home,16,1,18,WALK,220958305,1 +1767666769,17676667690,5389227,2223759,2209583460,True,work,23,16,6,WALK,220958346,1 +1767666773,17676667730,5389227,2223759,2209583460,False,home,16,23,20,WALK,220958346,1 +2396217321,23962173210,7305540,2727273,2995271650,True,othdiscr,12,20,15,WALK,299527165,1 +2396217325,23962173250,7305540,2727273,2995271650,False,home,20,12,21,WALK,299527165,1 +2396217433,23962174330,7305540,2727273,2995271790,True,work,20,20,11,WALK,299527179,1 +2396217437,23962174370,7305540,2727273,2995271790,False,home,20,20,15,WALK,299527179,1 +2396217761,23962177610,7305541,2727273,2995272200,True,work,9,20,6,WALK,299527220,1 +2396217765,23962177650,7305541,2727273,2995272200,False,home,20,9,13,WALK,299527220,1 +2396217769,23962177690,7305541,2727273,2995272210,True,work,9,20,14,WALK,299527221,1 +2396217773,23962177730,7305541,2727273,2995272210,False,home,20,9,18,WALK,299527221,1 +2444719729,24447197290,7453413,2762078,3055899660,True,shopping,19,20,16,WALK,305589966,1 +2444719733,24447197330,7453413,2762078,3055899660,False,home,20,19,16,WALK,305589966,1 +2463971785,24639717850,7512109,2820774,3079964730,True,atwork,8,2,10,WALK,307996473,1 +2463971789,24639717890,7512109,2820774,3079964730,False,work,7,8,10,WALK,307996473,1 +2463971790,24639717900,7512109,2820774,3079964730,False,work,2,7,10,WALK,307996473,2 +2463972065,24639720650,7512109,2820774,3079965080,True,work,2,8,8,WALK,307996508,1 +2463972069,24639720690,7512109,2820774,3079965080,False,shopping,8,2,18,WALK,307996508,1 +2463972070,24639720700,7512109,2820774,3079965080,False,shopping,8,8,19,WALK,307996508,2 +2463972071,24639720710,7512109,2820774,3079965080,False,home,8,8,19,WALK,307996508,3 +2464104641,24641046410,7512514,2821179,3080130800,True,eatout,13,8,8,WALK,308013080,1 +2464104645,24641046450,7512514,2821179,3080130800,False,home,8,13,16,WALK,308013080,1 +2464104857,24641048570,7512514,2821179,3080131070,True,shopping,6,8,17,WALK,308013107,1 +2464104861,24641048610,7512514,2821179,3080131070,False,home,8,6,19,WALK,308013107,1 +2464104881,24641048810,7512514,2821179,3080131100,True,social,9,8,16,WALK,308013110,1 +2464104885,24641048850,7512514,2821179,3080131100,False,home,8,9,16,WALK_LOC,308013110,1 +2464406009,24644060090,7513432,2822097,3080507510,True,work,7,8,5,BIKE,308050751,1 +2464406013,24644060130,7513432,2822097,3080507510,False,home,8,7,15,BIKE,308050751,1 +2464446025,24644460250,7513554,2822219,3080557530,True,work,9,8,5,WALK,308055753,1 +2464446029,24644460290,7513554,2822219,3080557530,False,home,8,9,16,WALK,308055753,1 +2464449633,24644496330,7513565,2822230,3080562040,True,univ,9,8,9,WALK,308056204,1 +2464449634,24644496340,7513565,2822230,3080562040,True,work,25,9,9,WALK,308056204,2 +2464449637,24644496370,7513565,2822230,3080562040,False,home,8,25,18,WALK,308056204,1 +2467713777,24677137770,7523517,2832182,3084642220,True,othdiscr,9,7,8,WALK,308464222,1 +2467713781,24677137810,7523517,2832182,3084642220,False,home,7,9,13,WALK,308464222,1 diff --git a/activitysim/estimation/test/test_edb_creation/survey_data/survey_households.csv b/activitysim/estimation/test/test_edb_creation/survey_data/survey_households.csv new file mode 100644 index 000000000..77ae6411d --- /dev/null +++ b/activitysim/estimation/test/test_edb_creation/survey_data/survey_households.csv @@ -0,0 +1,51 @@ +household_id,home_zone_id,income,hhsize,HHT,auto_ownership,num_workers +982875,16,30900,2,5,1,2 +1810015,16,99700,9,2,1,4 +1099626,20,58160,3,1,1,1 +763879,6,59220,1,4,1,0 +824207,18,51000,1,4,0,1 +2822230,8,0,1,0,0,1 +2821179,8,0,1,0,0,1 +1196298,25,31360,5,1,0,1 +1363467,24,58300,2,2,1,1 +386761,16,21000,3,1,1,2 +2223027,9,133000,2,1,0,2 +2832182,7,0,1,0,0,0 +2727273,20,118800,2,1,1,2 +1444715,14,60000,1,4,0,1 +112064,16,18000,1,6,1,1 +1952792,14,61900,1,4,1,1 +2223759,16,144100,2,1,0,2 +2820538,8,0,1,0,0,1 +27726,10,24000,1,4,0,0 +570454,21,1500,1,4,0,0 +370497,21,18000,3,2,0,1 +1173905,8,45000,4,1,1,0 +1286557,11,30000,1,4,1,0 +2762078,20,0,1,0,0,0 +2832429,16,0,1,0,1,0 +386699,7,21000,3,1,0,2 +2822097,8,0,1,0,1,1 +764150,9,34630,1,4,1,0 +2820774,8,0,1,0,1,1 +1594621,10,69200,2,1,0,2 +257531,16,12000,2,7,0,2 +1645132,9,92700,2,3,0,0 +29625,17,4200,1,4,0,0 +1402945,25,37200,4,1,1,4 +823501,12,30000,1,4,0,1 +1747467,16,76000,3,1,0,2 +1445222,17,68000,1,6,0,1 +26844,8,3500,1,4,0,0 +2822219,8,0,1,0,0,1 +110675,16,5050,1,4,0,1 +2048204,5,388000,1,4,0,1 +1286259,8,34400,1,6,0,0 +568785,17,8000,1,4,1,0 +26686,8,0,1,4,0,0 +1511234,8,88600,2,1,0,1 +2048382,7,195000,1,4,0,1 +256660,10,27800,2,7,0,2 +703381,25,17210,2,1,1,0 +226869,9,4000,2,1,0,1 +823426,11,50000,1,4,1,1 diff --git a/activitysim/estimation/test/test_edb_creation/survey_data/survey_joint_tour_participants.csv b/activitysim/estimation/test/test_edb_creation/survey_data/survey_joint_tour_participants.csv new file mode 100644 index 000000000..c7c2f6128 --- /dev/null +++ b/activitysim/estimation/test/test_edb_creation/survey_data/survey_joint_tour_participants.csv @@ -0,0 +1,8 @@ +participant_id,tour_id,household_id,person_id,participant_num +22095827901,220958279,2223759,5389226,1 +22095827902,220958279,2223759,5389227,2 +10079851903,100798519,1173905,2458502,1 +10079851904,100798519,1173905,2458503,2 +13072777702,130727777,1402945,3188483,1 +13072777703,130727777,1402945,3188484,2 +13072777704,130727777,1402945,3188485,3 diff --git a/activitysim/estimation/test/test_edb_creation/survey_data/survey_persons.csv b/activitysim/estimation/test/test_edb_creation/survey_data/survey_persons.csv new file mode 100644 index 000000000..e2f1c5c62 --- /dev/null +++ b/activitysim/estimation/test/test_edb_creation/survey_data/survey_persons.csv @@ -0,0 +1,91 @@ +person_id,household_id,age,PNUM,sex,pemploy,pstudent,ptype,school_zone_id,workplace_zone_id,free_parking_at_work +26686,26686,39,1,1,3,3,4,-1,-1,False +26844,26844,51,1,1,3,3,4,-1,-1,False +27726,27726,52,1,1,3,3,4,-1,-1,False +29625,29625,61,1,1,3,3,4,-1,-1,False +110675,110675,30,1,1,2,3,2,-1,19,False +112064,112064,48,1,2,2,3,2,-1,21,False +264107,226869,28,1,1,2,3,2,-1,24,False +264108,226869,27,2,2,3,3,4,-1,-1,False +323689,256660,22,1,2,2,3,2,-1,1,False +323690,256660,23,2,2,2,3,2,-1,5,False +325431,257531,22,1,2,2,3,2,-1,12,False +325432,257531,22,2,2,2,3,2,-1,2,False +595684,370497,52,1,1,2,3,2,-1,4,False +595685,370497,18,2,1,3,1,6,13,-1,False +595686,370497,14,3,2,4,1,7,8,-1,False +644290,386699,47,1,1,2,3,2,-1,12,False +644291,386699,43,2,2,1,3,1,-1,2,False +644292,386699,7,3,1,4,1,7,9,-1,False +644476,386761,47,1,1,2,3,2,-1,4,False +644477,386761,43,2,2,1,3,1,-1,15,False +644478,386761,7,3,1,4,1,7,20,-1,False +1265898,568785,80,1,1,3,3,5,-1,-1,False +1267567,570454,85,1,1,3,3,5,-1,-1,False +1427193,703381,65,1,1,3,3,5,-1,-1,False +1427194,703381,69,2,2,3,3,5,-1,-1,False +1572659,763879,60,1,1,3,3,4,-1,-1,False +1572930,764150,52,1,1,3,3,4,-1,-1,False +1632206,823426,31,1,1,1,3,1,-1,2,False +1632281,823501,36,1,1,1,3,1,-1,13,False +1632987,824207,29,1,1,2,3,2,-1,4,False +1875721,982875,25,1,1,1,3,1,-1,10,False +1875722,982875,25,2,2,2,2,3,13,4,False +2159057,1099626,35,1,1,1,3,1,-1,2,False +2159058,1099626,36,2,2,3,2,3,9,-1,False +2159059,1099626,3,3,1,4,1,8,20,-1,False +2458500,1173905,40,1,1,3,3,4,-1,-1,False +2458501,1173905,42,2,2,3,3,4,-1,-1,False +2458502,1173905,12,3,2,4,1,7,8,-1,False +2458503,1173905,9,4,1,4,1,7,8,-1,False +2566698,1196298,36,1,1,1,3,1,-1,1,False +2566699,1196298,29,2,2,3,3,4,-1,-1,False +2566700,1196298,8,3,1,4,1,7,25,-1,False +2566701,1196298,4,4,2,4,1,8,3,-1,False +2566702,1196298,2,5,1,4,1,8,6,-1,False +2936550,1286259,67,1,2,3,3,5,-1,-1,False +2936848,1286557,67,1,1,3,3,5,-1,-1,False +3061894,1363467,68,1,1,3,3,5,-1,-1,False +3061895,1363467,63,2,2,2,3,2,-1,25,False +3188482,1402945,66,1,1,2,3,2,-1,24,False +3188483,1402945,48,2,2,2,3,2,-1,2,False +3188484,1402945,22,3,2,2,2,3,13,2,False +3188485,1402945,19,4,2,2,2,3,9,2,False +3232955,1444715,42,1,1,2,3,2,-1,8,False +3233462,1445222,43,1,2,1,3,1,-1,22,False +3328568,1511234,53,1,2,1,3,1,-1,1,False +3328569,1511234,61,2,1,3,2,3,13,-1,False +3495342,1594621,31,1,1,1,3,1,-1,11,False +3495343,1594621,25,2,2,2,3,2,-1,9,False +3596364,1645132,56,1,2,3,2,3,9,-1,False +3596365,1645132,13,2,2,4,1,7,10,-1,False +3891102,1747467,36,1,2,1,3,1,-1,11,False +3891103,1747467,67,2,1,2,3,2,-1,12,False +3891104,1747467,8,3,1,4,1,7,17,-1,False +4171615,1810015,29,1,1,3,2,3,12,-1,False +4171616,1810015,20,2,1,3,3,4,-1,-1,False +4171617,1810015,27,3,1,1,3,1,-1,15,False +4171618,1810015,24,4,1,2,3,2,-1,13,False +4171619,1810015,58,5,2,3,3,4,-1,-1,False +4171620,1810015,3,6,2,4,1,8,8,-1,False +4171621,1810015,19,7,2,2,1,6,13,22,False +4171622,1810015,31,8,2,3,3,4,-1,-1,False +4171623,1810015,36,9,2,1,3,1,-1,21,False +4823797,1952792,74,1,1,2,3,2,-1,12,False +5057160,2048204,40,1,1,1,3,1,-1,23,False +5057338,2048382,33,1,1,1,3,1,-1,2,False +5387762,2223027,49,1,1,1,3,1,-1,4,False +5387763,2223027,39,2,2,1,3,1,-1,14,False +5389226,2223759,28,1,2,1,3,1,-1,1,False +5389227,2223759,29,2,1,1,3,1,-1,23,False +7305540,2727273,72,1,1,2,3,2,-1,20,False +7305541,2727273,62,2,2,2,3,2,-1,9,False +7453413,2762078,57,1,1,3,3,4,-1,-1,False +7511873,2820538,18,1,1,2,3,2,-1,11,False +7512109,2820774,35,1,1,1,3,1,-1,2,False +7512514,2821179,60,1,1,2,3,2,-1,22,False +7513432,2822097,39,1,2,2,3,2,-1,7,False +7513554,2822219,18,1,2,1,3,1,-1,9,False +7513565,2822230,19,1,2,2,2,3,12,25,False +7523517,2832182,87,1,2,3,3,5,-1,-1,False +7523764,2832429,93,1,2,3,3,5,-1,-1,False diff --git a/activitysim/estimation/test/test_edb_creation/survey_data/survey_tours.csv b/activitysim/estimation/test/test_edb_creation/survey_data/survey_tours.csv new file mode 100644 index 000000000..02a2a170f --- /dev/null +++ b/activitysim/estimation/test/test_edb_creation/survey_data/survey_tours.csv @@ -0,0 +1,118 @@ +tour_id,person_id,household_id,tour_type,tour_category,destination,origin,start,end,tour_mode,parent_tour_id +10828426,264107,226869,work,mandatory,24,9,7,19,WALK_LRF, +13271288,323689,256660,work,mandatory,1,10,11,18,WALK_LRF, +13342710,325431,257531,work,mandatory,12,16,7,17,TNC_SINGLE, +24423157,595686,370497,school,mandatory,8,21,7,16,WALK_LOC, +26415929,644290,386699,work,mandatory,12,7,12,22,WALK_LOC, +26415970,644291,386699,work,mandatory,2,7,7,17,WALK, +26416003,644292,386699,school,mandatory,9,7,13,19,WALK_LRF, +26423555,644476,386761,work,mandatory,4,16,7,17,SHARED3FREE, +26423629,644478,386761,school,mandatory,20,16,11,19,WALK_LRF, +66923560,1632281,823501,work,mandatory,13,12,7,19,TNC_SINGLE, +66952506,1632987,824207,work,mandatory,4,18,15,21,WALK_LRF, +76904600,1875721,982875,work,mandatory,10,16,8,18,WALK_LOC, +88521376,2159057,1099626,work,mandatory,2,20,7,18,WALK_LRF, +88521409,2159058,1099626,school,mandatory,9,20,15,18,TAXI, +88521450,2159059,1099626,school,mandatory,20,20,8,13,WALK, +100798613,2458502,1173905,school,mandatory,8,8,8,18,WALK, +100798654,2458503,1173905,school,mandatory,8,8,8,14,WALK, +105234657,2566698,1196298,work,mandatory,1,25,6,17,TNC_SINGLE, +105234731,2566700,1196298,school,mandatory,25,25,7,15,WALK, +105234772,2566701,1196298,school,mandatory,3,25,8,13,WALK, +105234813,2566702,1196298,school,mandatory,6,25,12,20,WALK_LOC, +125537734,3061895,1363467,work,mandatory,25,24,6,13,WALK, +130727801,3188482,1402945,work,mandatory,24,25,8,17,WALK, +130727842,3188483,1402945,work,mandatory,2,25,9,17,WALK_LOC, +130727883,3188484,1402945,work,mandatory,2,25,9,12,WALK_LOC, +130727875,3188484,1402945,school,mandatory,13,25,16,17,WALK, +130727924,3188485,1402945,work,mandatory,2,25,10,21,BIKE, +132571981,3233462,1445222,work,mandatory,22,17,7,23,TNC_SINGLE, +136471327,3328568,1511234,work,mandatory,1,8,6,17,WALK_LRF, +143309061,3495342,1594621,work,mandatory,11,10,7,16,WALK_LOC, +143309102,3495343,1594621,work,mandatory,9,10,13,17,WALK, +159535221,3891102,1747467,work,mandatory,11,16,7,16,WALK_LOC, +159535295,3891104,1747467,school,mandatory,17,16,7,14,WALK_LRF, +171036246,4171615,1810015,school,mandatory,12,16,13,13,WALK, +171036336,4171617,1810015,work,mandatory,15,16,9,18,WALK, +171036451,4171620,1810015,school,mandatory,8,16,7,15,WALK_LOC, +171036582,4171623,1810015,work,mandatory,21,16,8,23,WALK, +197775716,4823797,1952792,work,mandatory,12,14,11,15,BIKE, +207343599,5057160,2048204,work,mandatory,23,5,7,13,TNC_SINGLE, +207350897,5057338,2048382,work,mandatory,2,7,6,17,TNC_SINGLE, +220898281,5387762,2223027,work,mandatory,4,9,7,17,WALK_HVY, +220898322,5387763,2223027,work,mandatory,14,9,8,17,WALK_HVY, +220958305,5389226,2223759,work,mandatory,1,16,9,18,WALK, +220958346,5389227,2223759,work,mandatory,23,16,6,20,WALK, +299527179,7305540,2727273,work,mandatory,20,20,11,15,DRIVEALONEFREE, +299527220,7305541,2727273,work,mandatory,9,20,6,13,WALK, +299527221,7305541,2727273,work,mandatory,9,20,14,18,WALK, +307996508,7512109,2820774,work,mandatory,2,8,8,19,WALK, +308050751,7513432,2822097,work,mandatory,7,8,5,15,BIKE, +308055753,7513554,2822219,work,mandatory,9,8,5,16,WALK, +308056204,7513565,2822230,work,mandatory,25,8,9,18,WALK, +220958279,5389226,2223759,eatout,joint,13,16,20,20,WALK, +100798519,2458502,1173905,shopping,joint,5,8,8,8,SHARED2FREE, +130727777,3188483,1402945,othdiscr,joint,24,25,9,9,WALK, +1094154,26686,26686,othmaint,non_mandatory,9,8,12,13,BIKE, +1094132,26686,26686,eatout,non_mandatory,5,8,19,19,WALK, +1100640,26844,26844,social,non_mandatory,7,8,8,12,WALK, +1136791,27726,27726,othdiscr,non_mandatory,9,10,8,10,WALK, +1214658,29625,29625,shopping,non_mandatory,17,17,15,15,WALK, +4594657,112064,112064,shopping,non_mandatory,3,16,16,17,WALK, +4594649,112064,112064,othdiscr,non_mandatory,21,16,12,14,DRIVEALONEFREE, +10828453,264108,226869,othdiscr,non_mandatory,19,9,10,11,WALK, +13342745,325432,257531,shopping,non_mandatory,14,16,12,13,TAXI, +26415959,644291,386699,othmaint,non_mandatory,2,7,19,23,TNC_SINGLE, +26423525,644476,386761,escort,non_mandatory,11,16,5,6,TNC_SINGLE, +26423544,644476,386761,othmaint,non_mandatory,13,16,18,19,WALK, +26423541,644476,386761,othdiscr,non_mandatory,16,16,18,18,WALK, +26423590,644477,386761,shopping,non_mandatory,16,16,14,14,DRIVEALONEFREE, +51901843,1265898,568785,othdiscr,non_mandatory,20,17,9,20,WALK_LRF, +58514946,1427193,703381,shopping,non_mandatory,14,25,13,19,WALK, +58514982,1427194,703381,othmaint,non_mandatory,14,25,7,13,WALK, +58514990,1427194,703381,social,non_mandatory,2,25,16,22,WALK, +64479052,1572659,763879,shopping,non_mandatory,24,6,7,20,WALK, +64490163,1572930,764150,shopping,non_mandatory,7,9,11,16,WALK, +64490158,1572930,764150,othmaint,non_mandatory,9,9,8,11,WALK, +76904608,1875722,982875,eatout,non_mandatory,14,16,10,17,WALK, +100798528,2458500,1173905,othmaint,non_mandatory,7,8,12,20,WALK, +100798550,2458501,1173905,escort,non_mandatory,16,8,15,16,WALK_LOC, +120398583,2936550,1286259,shopping,non_mandatory,11,8,12,13,WALK, +120398575,2936550,1286259,othdiscr,non_mandatory,6,8,14,17,WALK, +120410793,2936848,1286557,othdiscr,non_mandatory,11,11,15,16,DRIVEALONEFREE, +120410774,2936848,1286557,eatout,non_mandatory,9,11,14,15,DRIVEALONEFREE, +125537687,3061894,1363467,shopping,non_mandatory,20,24,12,13,DRIVEALONEFREE, +125537723,3061895,1363467,othmaint,non_mandatory,7,24,15,16,WALK, +125537720,3061895,1363467,othdiscr,non_mandatory,9,24,17,19,WALK_HVY, +132571975,3233462,1445222,shopping,non_mandatory,16,17,6,6,WALK_LRF, +132571976,3233462,1445222,shopping,non_mandatory,13,17,7,7,WALK_LOC, +132571967,3233462,1445222,othdiscr,non_mandatory,14,17,7,7,WALK_LRF, +136471362,3328569,1511234,shopping,non_mandatory,4,8,10,10,WALK_LRF, +136471335,3328569,1511234,eatout,non_mandatory,13,8,14,16,WALK_LRF, +143309047,3495342,1594621,othdiscr,non_mandatory,15,10,16,22,TNC_SINGLE, +147450957,3596364,1645132,shopping,non_mandatory,22,9,19,20,WALK_LRF, +147450930,3596364,1645132,eatout,non_mandatory,5,9,14,14,WALK, +147451001,3596365,1645132,social,non_mandatory,9,9,7,18,TAXI, +159535256,3891103,1747467,shopping,non_mandatory,16,16,13,16,WALK, +159535289,3891104,1747467,othdiscr,non_mandatory,2,16,14,15,WALK, +159535290,3891104,1747467,othdiscr,non_mandatory,19,16,16,21,WALK_LOC, +171036284,4171616,1810015,othmaint,non_mandatory,3,16,9,11,WALK, +171036412,4171619,1810015,shopping,non_mandatory,1,16,13,15,WALK, +171036535,4171622,1810015,shopping,non_mandatory,19,16,9,15,WALK, +197775705,4823797,1952792,othmaint,non_mandatory,7,14,15,15,DRIVEALONEFREE, +197775702,4823797,1952792,othdiscr,non_mandatory,16,14,16,18,WALK, +207350891,5057338,2048382,shopping,non_mandatory,25,7,21,21,WALK_LOC, +207350886,5057338,2048382,othmaint,non_mandatory,7,7,18,18,WALK, +207350864,5057338,2048382,eatout,non_mandatory,10,7,20,20,WALK_LRF, +207350894,5057338,2048382,social,non_mandatory,6,7,18,19,TNC_SINGLE, +299527165,7305540,2727273,othdiscr,non_mandatory,12,20,15,21,WALK, +305589966,7453413,2762078,shopping,non_mandatory,19,20,16,16,WALK, +308013107,7512514,2821179,shopping,non_mandatory,6,8,17,19,WALK, +308013080,7512514,2821179,eatout,non_mandatory,13,8,8,16,WALK, +308013110,7512514,2821179,social,non_mandatory,9,8,16,16,WALK_LOC, +308464222,7523517,2832182,othdiscr,non_mandatory,9,7,8,13,WALK_LOC, +66923525,1632281,823501,eat,atwork,8,13,13,14,WALK,66923560.0 +143309067,3495343,1594621,eat,atwork,16,9,14,14,WALK,143309102.0 +171036547,4171623,1810015,eat,atwork,7,21,10,10,WALK,171036582.0 +220958270,5389226,2223759,eat,atwork,2,1,13,13,WALK,220958305.0 +307996473,7512109,2820774,eat,atwork,8,2,10,10,WALK,307996508.0 diff --git a/activitysim/estimation/test/test_edb_creation/survey_data/survey_trips.csv b/activitysim/estimation/test/test_edb_creation/survey_data/survey_trips.csv new file mode 100644 index 000000000..c8b273247 --- /dev/null +++ b/activitysim/estimation/test/test_edb_creation/survey_data/survey_trips.csv @@ -0,0 +1,278 @@ +trip_id,person_id,household_id,tour_id,outbound,purpose,destination,origin,depart,trip_mode +8753057,26686,26686,1094132,True,eatout,5,8,19,WALK +8753061,26686,26686,1094132,False,home,8,5,19,WALK +8753233,26686,26686,1094154,True,othmaint,9,8,12,BIKE +8753237,26686,26686,1094154,False,home,8,9,13,WALK +8805121,26844,26844,1100640,True,social,7,8,8,WALK +8805125,26844,26844,1100640,False,othmaint,7,7,12,WALK +8805126,26844,26844,1100640,False,home,8,7,12,WALK +9094329,27726,27726,1136791,True,othdiscr,9,10,8,WALK +9094333,27726,27726,1136791,False,home,10,9,10,WALK +9717265,29625,29625,1214658,True,shopping,17,17,15,WALK +9717269,29625,29625,1214658,False,home,17,17,15,WALK +36757193,112064,112064,4594649,True,othdiscr,21,16,12,WALK +36757197,112064,112064,4594649,False,home,16,21,14,TAXI +36757257,112064,112064,4594657,True,shopping,3,16,16,WALK +36757261,112064,112064,4594657,False,home,16,3,17,WALK +86627409,264107,226869,10828426,True,work,24,9,7,WALK_LRF +86627413,264107,226869,10828426,False,home,9,24,19,WALK_LRF +86627625,264108,226869,10828453,True,othdiscr,19,9,10,WALK +86627629,264108,226869,10828453,False,home,9,19,11,WALK +106170305,323689,256660,13271288,True,work,1,10,11,WALK_LRF +106170309,323689,256660,13271288,False,home,10,1,18,WALK_LRF +106741681,325431,257531,13342710,True,shopping,25,16,7,WALK +106741682,325431,257531,13342710,True,work,12,25,8,WALK +106741685,325431,257531,13342710,False,eatout,7,12,17,WALK +106741686,325431,257531,13342710,False,shopping,25,7,17,WALK_LOC +106741687,325431,257531,13342710,False,escort,7,25,17,WALK_LOC +106741688,325431,257531,13342710,False,home,16,7,17,WALK +106741961,325432,257531,13342745,True,shopping,14,16,12,WALK_LOC +106741965,325432,257531,13342745,False,home,16,14,13,WALK_LOC +195385257,595686,370497,24423157,True,school,8,21,7,WALK_LOC +195385261,595686,370497,24423157,False,home,21,8,16,WALK +211327433,644290,386699,26415929,True,work,12,7,12,WALK_LOC +211327437,644290,386699,26415929,False,home,7,12,22,WALK_LOC +211327673,644291,386699,26415959,True,othmaint,2,7,19,WALK_LOC +211327677,644291,386699,26415959,False,home,7,2,23,TNC_SINGLE +211327761,644291,386699,26415970,True,work,2,7,7,WALK +211327765,644291,386699,26415970,False,home,7,2,17,WALK +211328025,644292,386699,26416003,True,school,9,7,13,WALK_LOC +211328029,644292,386699,26416003,False,othdiscr,7,9,19,WALK_LRF +211328030,644292,386699,26416003,False,home,7,7,19,WALK +211388201,644476,386761,26423525,True,escort,11,16,5,WALK_LOC +211388205,644476,386761,26423525,False,home,16,11,6,WALK_LOC +211388329,644476,386761,26423541,True,othdiscr,16,16,18,WALK +211388333,644476,386761,26423541,False,home,16,16,18,WALK +211388353,644476,386761,26423544,True,othmaint,13,16,18,WALK +211388357,644476,386761,26423544,False,home,16,13,19,WALK +211388441,644476,386761,26423555,True,work,4,16,7,SHARED2FREE +211388445,644476,386761,26423555,False,home,16,4,17,SHARED3FREE +211388721,644477,386761,26423590,True,shopping,16,16,14,WALK +211388725,644477,386761,26423590,False,home,16,16,14,WALK +211389033,644478,386761,26423629,True,school,20,16,11,WALK_LOC +211389037,644478,386761,26423629,False,home,16,20,19,WALK_LRF +415214745,1265898,568785,51901843,True,othdiscr,20,17,9,WALK_LRF +415214749,1265898,568785,51901843,False,home,17,20,20,WALK_LRF +468119569,1427193,703381,58514946,True,shopping,14,25,13,WALK +468119573,1427193,703381,58514946,False,home,25,14,19,WALK +468119857,1427194,703381,58514982,True,othmaint,14,25,7,WALK +468119861,1427194,703381,58514982,False,home,25,14,13,WALK +468119921,1427194,703381,58514990,True,eatout,6,25,16,WALK +468119922,1427194,703381,58514990,True,social,2,6,19,WALK +468119925,1427194,703381,58514990,False,social,6,2,21,WALK +468119926,1427194,703381,58514990,False,shopping,8,6,22,WALK +468119927,1427194,703381,58514990,False,social,7,8,22,WALK +468119928,1427194,703381,58514990,False,home,25,7,22,WALK +515832417,1572659,763879,64479052,True,othmaint,25,6,7,WALK +515832418,1572659,763879,64479052,True,escort,25,25,12,WALK +515832419,1572659,763879,64479052,True,shopping,24,25,17,WALK +515832421,1572659,763879,64479052,False,shopping,25,24,18,WALK +515832422,1572659,763879,64479052,False,escort,7,25,20,WALK +515832423,1572659,763879,64479052,False,home,6,7,20,WALK +515921265,1572930,764150,64490158,True,othmaint,7,9,8,WALK +515921266,1572930,764150,64490158,True,othmaint,9,7,8,WALK +515921269,1572930,764150,64490158,False,home,9,9,11,WALK +515921305,1572930,764150,64490163,True,shopping,7,9,11,WALK +515921309,1572930,764150,64490163,False,home,9,7,16,WALK +535388201,1632281,823501,66923525,True,work,9,13,13,WALK +535388202,1632281,823501,66923525,True,atwork,8,9,13,WALK +535388205,1632281,823501,66923525,False,work,13,8,14,WALK +535388481,1632281,823501,66923560,True,work,13,12,7,WALK +535388485,1632281,823501,66923560,False,home,12,13,19,WALK +535620049,1632987,824207,66952506,True,work,4,18,15,WALK_LOC +535620053,1632987,824207,66952506,False,home,18,4,21,WALK +615236801,1875721,982875,76904600,True,work,10,16,8,WALK_LOC +615236805,1875721,982875,76904600,False,home,16,10,18,WALK_LOC +615236865,1875722,982875,76904608,True,escort,7,16,10,WALK +615236866,1875722,982875,76904608,True,eatout,14,7,13,WALK +615236869,1875722,982875,76904608,False,home,16,14,17,WALK +708171009,2159057,1099626,88521376,True,work,2,20,7,WALK +708171013,2159057,1099626,88521376,False,shopping,8,2,18,WALK +708171014,2159057,1099626,88521376,False,home,20,8,18,WALK_LOC +708171273,2159058,1099626,88521409,True,univ,9,20,15,WALK_LOC +708171277,2159058,1099626,88521409,False,home,20,9,18,WALK_LOC +708171601,2159059,1099626,88521450,True,school,20,20,8,WALK +708171605,2159059,1099626,88521450,False,home,20,20,13,WALK +806388153,2458502,1173905,100798519,True,shopping,5,8,8,SHARED2FREE +806388157,2458502,1173905,100798519,False,home,8,5,8,SHARED2FREE +806388225,2458500,1173905,100798528,True,othmaint,7,8,12,WALK +806388229,2458500,1173905,100798528,False,home,8,7,20,WALK +806388401,2458501,1173905,100798550,True,escort,16,8,15,WALK_LOC +806388405,2458501,1173905,100798550,False,home,8,16,16,WALK_LOC +806388905,2458502,1173905,100798613,True,social,7,8,8,WALK +806388906,2458502,1173905,100798613,True,school,8,7,8,WALK +806388909,2458502,1173905,100798613,False,home,8,8,18,WALK +806389233,2458503,1173905,100798654,True,school,8,8,8,WALK +806389237,2458503,1173905,100798654,False,home,8,8,14,WALK +841877257,2566698,1196298,105234657,True,work,1,25,6,WALK +841877261,2566698,1196298,105234657,False,home,25,1,17,WALK_LOC +841877849,2566700,1196298,105234731,True,school,25,25,7,WALK +841877853,2566700,1196298,105234731,False,home,25,25,15,WALK +841878177,2566701,1196298,105234772,True,school,3,25,8,WALK +841878181,2566701,1196298,105234772,False,home,25,3,13,WALK +841878505,2566702,1196298,105234813,True,school,6,25,12,WALK_LOC +841878509,2566702,1196298,105234813,False,shopping,25,6,20,WALK_LOC +841878510,2566702,1196298,105234813,False,home,25,25,20,WALK +963188601,2936550,1286259,120398575,True,othdiscr,6,8,14,WALK +963188605,2936550,1286259,120398575,False,home,8,6,17,WALK +963188665,2936550,1286259,120398583,True,shopping,11,8,12,WALK +963188669,2936550,1286259,120398583,False,home,8,11,13,WALK +963286193,2936848,1286557,120410774,True,eatout,9,11,14,WALK +963286197,2936848,1286557,120410774,False,home,11,9,15,WALK +963286345,2936848,1286557,120410793,True,escort,10,11,15,WALK +963286346,2936848,1286557,120410793,True,othdiscr,11,10,16,WALK +963286349,2936848,1286557,120410793,False,home,11,11,16,WALK +1004301497,3061894,1363467,125537687,True,shopping,20,24,12,TNC_SHARED +1004301501,3061894,1363467,125537687,False,home,24,20,13,DRIVEALONEFREE +1004301761,3061895,1363467,125537720,True,othdiscr,9,24,17,WALK_HVY +1004301765,3061895,1363467,125537720,False,home,24,9,19,WALK_LRF +1004301785,3061895,1363467,125537723,True,othmaint,7,24,15,WALK +1004301789,3061895,1363467,125537723,False,home,24,7,16,WALK +1004301873,3061895,1363467,125537734,True,work,25,24,6,WALK +1004301877,3061895,1363467,125537734,False,home,24,25,13,WALK +1045822217,3188483,1402945,130727777,True,othdiscr,24,25,9,WALK +1045822221,3188483,1402945,130727777,False,home,25,24,9,WALK +1045822409,3188482,1402945,130727801,True,work,7,25,8,WALK +1045822410,3188482,1402945,130727801,True,work,24,7,9,WALK +1045822413,3188482,1402945,130727801,False,home,25,24,17,WALK +1045822737,3188483,1402945,130727842,True,work,2,25,9,WALK +1045822741,3188483,1402945,130727842,False,home,25,2,17,WALK_LOC +1045823001,3188484,1402945,130727875,True,univ,13,25,16,WALK +1045823005,3188484,1402945,130727875,False,shopping,7,13,17,WALK +1045823006,3188484,1402945,130727875,False,othmaint,7,7,17,WALK +1045823007,3188484,1402945,130727875,False,home,25,7,17,WALK +1045823065,3188484,1402945,130727883,True,work,2,25,9,WALK +1045823069,3188484,1402945,130727883,False,home,25,2,12,WALK_LOC +1045823393,3188485,1402945,130727924,True,escort,25,25,10,BIKE +1045823394,3188485,1402945,130727924,True,work,2,25,12,BIKE +1045823397,3188485,1402945,130727924,False,eatout,7,2,20,BIKE +1045823398,3188485,1402945,130727924,False,home,25,7,21,BIKE +1060575737,3233462,1445222,132571967,True,othdiscr,14,17,7,WALK +1060575741,3233462,1445222,132571967,False,home,17,14,7,WALK_LOC +1060575801,3233462,1445222,132571975,True,shopping,16,17,6,WALK +1060575805,3233462,1445222,132571975,False,home,17,16,6,WALK_LRF +1060575809,3233462,1445222,132571976,True,shopping,13,17,7,WALK_LOC +1060575813,3233462,1445222,132571976,False,home,17,13,7,WALK_LOC +1060575849,3233462,1445222,132571981,True,work,22,17,7,WALK_LRF +1060575853,3233462,1445222,132571981,False,home,17,22,23,TNC_SINGLE +1091770617,3328568,1511234,136471327,True,work,1,8,6,WALK_LRF +1091770621,3328568,1511234,136471327,False,home,8,1,17,WALK +1091770681,3328569,1511234,136471335,True,eatout,13,8,14,WALK +1091770685,3328569,1511234,136471335,False,home,8,13,16,WALK_LRF +1091770897,3328569,1511234,136471362,True,eatout,9,8,10,WALK_LOC +1091770898,3328569,1511234,136471362,True,shopping,4,9,10,WALK_LRF +1091770901,3328569,1511234,136471362,False,home,8,4,10,WALK_LRF +1146472377,3495342,1594621,143309047,True,othdiscr,15,10,16,WALK_LOC +1146472381,3495342,1594621,143309047,False,home,10,15,22,WALK_LRF +1146472489,3495342,1594621,143309061,True,work,11,10,7,WALK_LOC +1146472493,3495342,1594621,143309061,False,home,10,11,16,WALK +1146472537,3495343,1594621,143309067,True,othmaint,6,9,14,WALK +1146472538,3495343,1594621,143309067,True,shopping,6,6,14,WALK +1146472539,3495343,1594621,143309067,True,escort,7,6,14,WALK +1146472540,3495343,1594621,143309067,True,atwork,16,7,14,WALK +1146472541,3495343,1594621,143309067,False,work,9,16,14,WALK +1146472817,3495343,1594621,143309102,True,work,9,10,13,WALK +1146472821,3495343,1594621,143309102,False,home,10,9,17,WALK +1179607441,3596364,1645132,147450930,True,eatout,5,9,14,WALK +1179607445,3596364,1645132,147450930,False,home,9,5,14,WALK +1179607657,3596364,1645132,147450957,True,shopping,22,9,19,WALK_LRF +1179607661,3596364,1645132,147450957,False,shopping,8,22,20,WALK_LRF +1179607662,3596364,1645132,147450957,False,eatout,9,8,20,WALK_LOC +1179607663,3596364,1645132,147450957,False,home,9,9,20,WALK +1179608009,3596365,1645132,147451001,True,social,9,9,7,WALK +1179608013,3596365,1645132,147451001,False,home,9,9,18,WALK +1276281769,3891102,1747467,159535221,True,work,11,16,7,WALK_LOC +1276281773,3891102,1747467,159535221,False,home,16,11,16,WALK_LOC +1276282049,3891103,1747467,159535256,True,shopping,16,16,13,WALK +1276282053,3891103,1747467,159535256,False,home,16,16,16,WALK +1276282313,3891104,1747467,159535289,True,othdiscr,2,16,14,WALK +1276282317,3891104,1747467,159535289,False,home,16,2,15,WALK +1276282321,3891104,1747467,159535290,True,othdiscr,19,16,16,WALK_LOC +1276282325,3891104,1747467,159535290,False,home,16,19,21,WALK_LOC +1276282361,3891104,1747467,159535295,True,school,17,16,7,WALK_LRF +1276282365,3891104,1747467,159535295,False,home,16,17,14,WALK_LRF +1368289969,4171615,1810015,171036246,True,univ,12,16,13,WALK +1368289973,4171615,1810015,171036246,False,home,16,12,13,WALK +1368290273,4171616,1810015,171036284,True,othmaint,3,16,9,WALK +1368290277,4171616,1810015,171036284,False,home,16,3,11,WALK +1368290689,4171617,1810015,171036336,True,social,8,16,9,WALK +1368290690,4171617,1810015,171036336,True,work,15,8,12,WALK +1368290693,4171617,1810015,171036336,False,home,16,15,18,WALK +1368291297,4171619,1810015,171036412,True,shopping,1,16,13,WALK +1368291301,4171619,1810015,171036412,False,shopping,7,1,14,WALK +1368291302,4171619,1810015,171036412,False,home,16,7,15,WALK +1368291609,4171620,1810015,171036451,True,school,8,16,7,WALK_LOC +1368291613,4171620,1810015,171036451,False,home,16,8,15,WALK_LOC +1368292281,4171622,1810015,171036535,True,shopping,19,16,9,WALK +1368292285,4171622,1810015,171036535,False,home,16,19,15,WALK +1368292377,4171623,1810015,171036547,True,atwork,7,21,10,WALK +1368292381,4171623,1810015,171036547,False,othmaint,6,7,10,WALK +1368292382,4171623,1810015,171036547,False,work,21,6,10,WALK +1368292657,4171623,1810015,171036582,True,escort,25,16,8,WALK +1368292658,4171623,1810015,171036582,True,work,21,25,8,WALK +1368292661,4171623,1810015,171036582,False,work,7,21,23,WALK +1368292662,4171623,1810015,171036582,False,home,16,7,23,WALK +1582205617,4823797,1952792,197775702,True,othdiscr,16,14,16,WALK +1582205621,4823797,1952792,197775702,False,home,14,16,18,WALK +1582205641,4823797,1952792,197775705,True,othmaint,7,14,15,WALK +1582205645,4823797,1952792,197775705,False,home,14,7,15,WALK +1582205729,4823797,1952792,197775716,True,work,12,14,11,BIKE +1582205733,4823797,1952792,197775716,False,home,14,12,15,BIKE +1658748793,5057160,2048204,207343599,True,work,23,5,7,WALK_LRF +1658748797,5057160,2048204,207343599,False,home,5,23,13,WALK_LOC +1658806913,5057338,2048382,207350864,True,eatout,10,7,20,WALK +1658806917,5057338,2048382,207350864,False,home,7,10,20,WALK +1658807089,5057338,2048382,207350886,True,othmaint,7,7,18,WALK +1658807093,5057338,2048382,207350886,False,home,7,7,18,WALK +1658807129,5057338,2048382,207350891,True,shopping,25,7,21,WALK +1658807133,5057338,2048382,207350891,False,home,7,25,21,WALK +1658807153,5057338,2048382,207350894,True,social,6,7,18,WALK_LOC +1658807157,5057338,2048382,207350894,False,home,7,6,19,WALK_LOC +1658807177,5057338,2048382,207350897,True,work,2,7,6,WALK +1658807181,5057338,2048382,207350897,False,home,7,2,17,WALK_LOC +1767186249,5387762,2223027,220898281,True,work,4,9,7,WALK_HVY +1767186253,5387762,2223027,220898281,False,home,9,4,17,WALK_LRF +1767186577,5387763,2223027,220898322,True,escort,7,9,8,WALK +1767186578,5387763,2223027,220898322,True,work,14,7,8,WALK_LOC +1767186581,5387763,2223027,220898322,False,othmaint,9,14,17,WALK_LRF +1767186582,5387763,2223027,220898322,False,home,9,9,17,WALK +1767666161,5389226,2223759,220958270,True,atwork,2,1,13,WALK +1767666165,5389226,2223759,220958270,False,work,1,2,13,WALK +1767666233,5389226,2223759,220958279,True,eatout,13,16,20,TNC_SINGLE +1767666237,5389226,2223759,220958279,False,home,16,13,20,TAXI +1767666441,5389226,2223759,220958305,True,work,1,16,9,WALK +1767666445,5389226,2223759,220958305,False,home,16,1,18,WALK +1767666769,5389227,2223759,220958346,True,work,23,16,6,WALK +1767666773,5389227,2223759,220958346,False,home,16,23,20,WALK +2396217321,7305540,2727273,299527165,True,othdiscr,12,20,15,WALK +2396217325,7305540,2727273,299527165,False,home,20,12,21,WALK +2396217433,7305540,2727273,299527179,True,work,20,20,11,WALK +2396217437,7305540,2727273,299527179,False,home,20,20,15,WALK +2396217761,7305541,2727273,299527220,True,work,9,20,6,WALK +2396217765,7305541,2727273,299527220,False,home,20,9,13,WALK +2396217769,7305541,2727273,299527221,True,work,9,20,14,WALK +2396217773,7305541,2727273,299527221,False,home,20,9,18,WALK +2444719729,7453413,2762078,305589966,True,shopping,19,20,16,WALK +2444719733,7453413,2762078,305589966,False,home,20,19,16,WALK +2463971785,7512109,2820774,307996473,True,atwork,8,2,10,WALK +2463971789,7512109,2820774,307996473,False,work,7,8,10,WALK +2463971790,7512109,2820774,307996473,False,work,2,7,10,WALK +2463972065,7512109,2820774,307996508,True,work,2,8,8,WALK +2463972069,7512109,2820774,307996508,False,shopping,8,2,18,WALK +2463972070,7512109,2820774,307996508,False,shopping,8,8,19,WALK +2463972071,7512109,2820774,307996508,False,home,8,8,19,WALK +2464104641,7512514,2821179,308013080,True,eatout,13,8,8,WALK +2464104645,7512514,2821179,308013080,False,home,8,13,16,WALK +2464104857,7512514,2821179,308013107,True,shopping,6,8,17,WALK +2464104861,7512514,2821179,308013107,False,home,8,6,19,WALK +2464104881,7512514,2821179,308013110,True,social,9,8,16,WALK +2464104885,7512514,2821179,308013110,False,home,8,9,16,WALK_LOC +2464406009,7513432,2822097,308050751,True,work,7,8,5,BIKE +2464406013,7513432,2822097,308050751,False,home,8,7,15,BIKE +2464446025,7513554,2822219,308055753,True,work,9,8,5,WALK +2464446029,7513554,2822219,308055753,False,home,8,9,16,WALK +2464449633,7513565,2822230,308056204,True,univ,9,8,9,WALK +2464449634,7513565,2822230,308056204,True,work,25,9,9,WALK +2464449637,7513565,2822230,308056204,False,home,8,25,18,WALK +2467713777,7523517,2832182,308464222,True,othdiscr,9,7,8,WALK +2467713781,7523517,2832182,308464222,False,home,7,9,13,WALK diff --git a/activitysim/estimation/test/test_edb_creation/test_edb_formation.py b/activitysim/estimation/test/test_edb_creation/test_edb_formation.py new file mode 100644 index 000000000..9268ef41a --- /dev/null +++ b/activitysim/estimation/test/test_edb_creation/test_edb_formation.py @@ -0,0 +1,276 @@ +import os +import pandas as pd +import numpy as np +import pandas.testing as pdt +import yaml + + +configs_estimation_dir = ( + "activitysim/estimation/test/test_edb_creation/configs_estimation" +) +configs_dir = "activitysim/examples/prototype_mtc/configs" +survey_data_dir = "activitysim/estimation/test/test_edb_creation/survey_data" +data_dir = "activitysim/examples/prototype_mtc/data" +base_output_dir = "activitysim/estimation/test/test_edb_creation/outputs" + + +def launch_est_example(output_dir, multiprocess, fileformat): + + # setting multiprocess setting + settings_template_file = os.path.join( + configs_estimation_dir, "settings_template.yaml" + ) + settings_file = os.path.join(configs_estimation_dir, "settings.yaml") + settings = yaml.safe_load(open(settings_template_file)) + assert multiprocess in [True, False] + settings["multiprocess"] = multiprocess + yaml.dump(settings, open(settings_file, "w")) + + # setting fileformat setting + settings_template_file = os.path.join( + configs_estimation_dir, "estimation_template.yaml" + ) + est_settings_file = os.path.join(configs_estimation_dir, "estimation.yaml") + est_settings = yaml.safe_load(open(settings_template_file)) + assert fileformat in ["csv", "parquet", "pkl"] + est_settings["EDB_FILETYPE"] = fileformat + yaml.dump(est_settings, open(est_settings_file, "w")) + + run_cmd = f"activitysim run -c {configs_estimation_dir} -c {configs_dir} -d {survey_data_dir} -d {data_dir} -o {base_output_dir}/{output_dir}" + print( + f"launching with options output_dir={output_dir} multiprocess={multiprocess} fileformat={fileformat}" + ) + print("launching from ", os.getcwd()) + result = os.system(run_cmd) + assert result == 0, "ActivitySim run failed" + + +def read_table(file_name): + if file_name.endswith(".csv"): + return pd.read_csv(file_name, low_memory=False) + elif file_name.endswith(".parquet"): + df = pd.read_parquet(file_name).reset_index(drop=True) + df.columns.name = None + return df + elif file_name.endswith(".pkl"): + df = pd.read_pickle(file_name).reset_index(drop=True) + df.columns = df.columns.astype(str) + df.columns.name = None + return df + else: + raise ValueError(f"Unsupported file format: {file_name}") + + +def process_table(df): + if "variable" == df.columns[1]: + # need to sort variable column + df = df.sort_values(by=[df.columns[0], "variable"]).reset_index(drop=True) + df.columns.name = None + + if "chunk_id" in df.columns: + # remove chunk_id column + df = df.drop(columns=["chunk_id"]) + + return df + + +def find_lowest_level_directories(starting_directory): + lowest_dirs = list() + + for root, dirs, files in os.walk(starting_directory): + if not dirs: + lowest_dirs.append(root) + + return lowest_dirs + + +def try_compare_with_same_dtypes(ser1, ser2, rtol, atol): + try: + concatenated = pd.concat([ser1, ser2]) + common_type = concatenated.dtype + pdt.assert_series_equal( + ser1.astype(common_type), + ser2.astype(common_type), + check_dtype=False, + rtol=rtol, + atol=atol, + ) + except (ValueError, AssertionError) as e: + return False + return True + + +def try_compare_with_numeric(ser1, ser2, rtol, atol): + try: + ser1_num = pd.to_numeric(ser1, errors="coerce") + ser2_num = pd.to_numeric(ser2, errors="coerce") + pdt.assert_series_equal( + ser1_num, ser2_num, check_dtype=False, rtol=rtol, atol=atol + ) + except AssertionError as e: + return False + return True + + +def try_compare_with_strings(ser1, ser2): + try: + pdt.assert_series_equal(ser1.astype(str), ser2.astype(str), check_dtype=False) + except AssertionError as e: + return False + return True + + +def try_compare_with_combination(ser1, ser2, rtol=1e-5, atol=1e-8): + """ + This is necessary because we have columns like this: + [index]: [0, 1, 2, 3, 4, 5, ...] + [left]: [False, False, 1, 6, AM, -1.3037984712857993, EA, ...] + [right]: [False, False, 1, 6, AM, -1.3037984712857994, EA, ...] + (notice the machine precision difference in the float) + """ + # replace annoying string values of bools + ser1 = ser1.replace({"True": True, "False": False}) + ser2 = ser2.replace({"True": True, "False": False}) + # Separate numerical and non-numerical values + ser1_num = pd.to_numeric(ser1, errors="coerce") + ser2_num = pd.to_numeric(ser2, errors="coerce") + ser1_non_num = ser1[ser1_num.isna()] + ser2_non_num = ser2[ser2_num.isna()] + ser1_num = ser1_num.dropna() + ser2_num = ser2_num.dropna() + try: + pdt.assert_series_equal( + ser1_num, ser2_num, check_dtype=False, rtol=rtol, atol=atol + ) + pdt.assert_series_equal(ser1_non_num, ser2_non_num, check_dtype=False) + except AssertionError as e: + return False + return True + + +def compare_dataframes_with_tolerance(df1, df2, rtol=1e-3, atol=1e-3): + dfs_are_same = True + e_msg = "" + try: + pdt.assert_frame_equal(df1, df2, check_dtype=False, rtol=rtol, atol=atol) + return dfs_are_same, e_msg + except AssertionError as e: + print(e) + print("trying to compare columns individually") + for col in df1.columns: + try: + if try_compare_with_same_dtypes(df1[col], df2[col], rtol, atol): + continue + elif try_compare_with_numeric(df1[col], df2[col], rtol, atol): + continue + elif try_compare_with_strings(df1[col], df2[col]): + continue + elif try_compare_with_combination( + df1[col], df2[col], rtol=rtol, atol=atol + ): + continue + else: + dfs_are_same = False + e_msg += f"Column '{col}' failed: {df1[col]} vs {df2[col]}\n" + print(f"Column '{col}' failed:\n {df1[col]} vs {df2[col]}\n") + except Exception as e: + dfs_are_same = False + e_msg = e + + return dfs_are_same, e_msg + + +def regress_EDBs(regress_folder, output_folder, fileformat="csv"): + edb_file = os.path.join(base_output_dir, regress_folder, "estimation_data_bundle") + + edb_dirs = find_lowest_level_directories(edb_file) + + for dir in edb_dirs: + dir_basename = dir.split("estimation_data_bundle")[1][1:] + output_dir = os.path.join( + base_output_dir, output_folder, "estimation_data_bundle", dir_basename + ) + + for file in os.listdir(dir): + if file.endswith(".yaml"): + continue + print(f"Regressing {file}") + + regress_path = os.path.join(dir, file) + output_path = os.path.join(output_dir, file) + + # regress against csv for parquet, but regress against parquet for pkl (faster) + if not os.path.exists(output_path) and (fileformat == "parquet"): + output_path = output_path.replace(".csv", ".parquet") + if not os.path.exists(output_path) and (fileformat == "pkl"): + output_path = output_path.replace(".parquet", ".pkl") + + try: + regress_df = read_table(regress_path) + output_df = read_table(output_path) + except FileNotFoundError as e: + assert False, f"File not found: {e}" + + regress_df = process_table(regress_df) + output_df = process_table(output_df) + + dfs_are_same, e = compare_dataframes_with_tolerance(regress_df, output_df) + if not dfs_are_same: + assert False, f"Regression test failed for {file} with error: {e}" + return + + +def test_infer(): + infer_file = r"activitysim/examples/example_estimation/scripts/infer.py" + data_dir = r"activitysim/estimation/test/test_edb_creation" + configs_dir = r"activitysim/examples/prototype_mtc/configs" + output_dir = r"activitysim/estimation/test/test_edb_creation/outputs/infer_output" + run_cmd = f"python {infer_file} {data_dir} {configs_dir} {output_dir}" + print(f"launching {run_cmd} from {os.getcwd()}") + result = os.system(run_cmd) + assert result == 0, "Infer.py run failed" + + for file in os.listdir(output_dir): + if not file.endswith(".csv"): + continue + print("Regressing ", file) + regress_df = pd.read_csv(os.path.join(data_dir, "survey_data", file)) + output_df = pd.read_csv(os.path.join(output_dir, file)) + + pdt.assert_frame_equal(regress_df, output_df) + + +def test_generating_sp_csv(): + # first generate original tables + output_dir = "output_single_csv" + launch_est_example(output_dir, False, "csv") + + +def test_sp_parquet(): + # multiprocess = False, fileformat = "parquet" + output_dir = "output_single_parquet" + launch_est_example(output_dir, False, "parquet") + regress_EDBs("output_single_csv", output_dir, "parquet") + + +def test_sp_pkl(): + # multiprocess = False, fileformat = "pkl" + output_dir = "output_single_pkl" + launch_est_example(output_dir, False, "pkl") + regress_EDBs("output_single_parquet", output_dir, "pkl") + + +def test_mp_parquet(): + # multiprocess = True, fileformat = "parquet" + output_dir = "output_multiprocess_parquet" + launch_est_example(output_dir, True, "parquet") + regress_EDBs("output_single_parquet", output_dir, "parquet") + + +if __name__ == "__main__": + + test_infer() + test_generating_sp_csv() + test_sp_pkl() + test_sp_parquet() + test_mp_parquet() diff --git a/activitysim/estimation/test/test_larch_estimation.py b/activitysim/estimation/test/test_larch_estimation.py index 09355f846..2d2427c41 100644 --- a/activitysim/estimation/test/test_larch_estimation.py +++ b/activitysim/estimation/test/test_larch_estimation.py @@ -39,7 +39,7 @@ def _regression_check(dataframe_regression, df, basename=None, rtol=None): rtol = 0.1 dataframe_regression.check( df.select_dtypes("number") - .drop(columns=["holdfast"], errors="ignore") + .drop(columns=["holdfast", "minimum", "maximum"], errors="ignore") .clip(-9e9, 9e9), # pandas 1.3 handles int8 dtypes as actual numbers, so holdfast needs to be dropped manually # we're dropping it not adding to the regression check so older pandas will also work. @@ -73,7 +73,7 @@ def test_simple_simulate(est_data, num_regression, dataframe_regression, name, m m.load_data() m.doctor(repair_ch_av="-") loglike_prior = m.loglike() - r = m.maximize_loglike(method=method, options={"maxiter": 1000}) + r = m.maximize_loglike(method=method, options={"maxiter": 1000, "ftol": 1e-9}) num_regression.check( {"loglike_prior": loglike_prior, "loglike_converge": r.loglike}, basename=f"test_simple_simulate_{name}_{method}_loglike", @@ -87,9 +87,11 @@ def test_simple_simulate(est_data, num_regression, dataframe_regression, name, m [ ("workplace_location", "SLSQP", None), ("school_location", "SLSQP", None), + ("school_location", "BHHH", None), ("non_mandatory_tour_destination", "SLSQP", None), ("atwork_subtour_destination", "BHHH", None), - ("trip_destination", "SLSQP", 0.12), + ("trip_destination", "BHHH", None), + ("trip_destination", "SLSQP", None), # trip_destination model has unusual parameter variance on a couple # parameters when switching platforms, possibly related to default data # types and high standard errors. Most parameters and the overall @@ -103,12 +105,19 @@ def test_location_model( from activitysim.estimation.larch import component_model, update_size_spec m, data = component_model(name, return_data=True) - m.load_data() + + if name == "trip_destination": + # this model is overspecified in the example, so we need to lock a + # parameter to make it identifiable. + m.lock_value("coef_prox_dest_outbound_work", 0.0) + m.set_cap(25.0) + + m.doctor(repair_av_zq="-", repair_nan_utility=True) loglike_prior = m.loglike() - r = m.maximize_loglike(method=method, options={"maxiter": 1000}) + r = m.maximize_loglike(method=method, options={"maxiter": 1000, "ftol": 1.0e-8}) num_regression.check( {"loglike_prior": loglike_prior, "loglike_converge": r.loglike}, - basename=f"test_loc_{name}_loglike", + basename=f"test_loc_{name}_{method}_loglike", ) _regression_check(dataframe_regression, m.pf, rtol=rtol) size_spec = update_size_spec( @@ -119,7 +128,7 @@ def test_location_model( ) dataframe_regression.check( size_spec, - basename=f"test_loc_{name}_size_spec", + basename=f"test_loc_{name}_{method}_size_spec", default_tolerance=dict(atol=1e-6, rtol=5e-2) # set a little loose, as there is sometimes a little variance in these # results when switching backend implementations. @@ -143,7 +152,7 @@ def test_scheduling_model(est_data, num_regression, dataframe_regression, name, m.load_data() m.doctor(repair_ch_av="-") loglike_prior = m.loglike() - r = m.maximize_loglike(method=method) + r = m.maximize_loglike(method=method, options={"maxiter": 1000, "ftol": 1.0e-9}) num_regression.check( {"loglike_prior": loglike_prior, "loglike_converge": r.loglike}, basename=f"test_{name}_loglike", @@ -158,7 +167,7 @@ def test_stop_freq_model(est_data, num_regression, dataframe_regression): m, data = component_model(name, return_data=True) m.load_data() loglike_prior = m.loglike() - r = m.maximize_loglike() + r = m.maximize_loglike(method="SLSQP", options={"maxiter": 1000, "ftol": 1.0e-9}) num_regression.check( {"loglike_prior": loglike_prior, "loglike_converge": r.loglike}, basename=f"test_{name}_loglike", @@ -222,7 +231,7 @@ def test_cdap_model(est_data, num_regression, dataframe_regression): m = cdap_model() m.load_data() loglike_prior = m.loglike() - r = m.maximize_loglike(method="SLSQP", options={"maxiter": 1000}) + r = m.maximize_loglike(method="SLSQP", options={"maxiter": 1000, "ftol": 1.0e-7}) num_regression.check( {"loglike_prior": loglike_prior, "loglike_converge": r.loglike}, basename="test_cdap_model_loglike", @@ -260,7 +269,7 @@ def test_tour_and_subtour_mode_choice(est_data, num_regression, dataframe_regres m.load_data() m.doctor(repair_ch_av="-") loglike_prior = m.loglike() - r = m.maximize_loglike(method="SLSQP", options={"maxiter": 1000}) + r = m.maximize_loglike(method="SLSQP", options={"maxiter": 1000, "ftol": 1.0e-9}) num_regression.check( {"loglike_prior": loglike_prior, "loglike_converge": r.loglike}, basename="test_tour_mode_choice_loglike", diff --git a/activitysim/estimation/test/test_larch_estimation/test_cdap_model.csv b/activitysim/estimation/test/test_larch_estimation/test_cdap_model.csv index a9e237b23..400eb2fb9 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_cdap_model.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_cdap_model.csv @@ -1,162 +1,162 @@ -,value,initvalue,nullvalue,minimum,maximum,best -coef_UNAVAILABLE,-999,-999,0,-999,-999,-999 -coef_child_who_is_in_school_or_too_young_for_school_interaction_with_off_peak_accessibility_to_retail_N,0.87159546592932291,0.08233,0,,,0.87159546592932291 -coef_driving_age_child_who_is_in_school_asc_M,0.74815228797618816,2.3309186849999999,0,,,0.74815228797618816 -coef_driving_age_child_who_is_in_school_asc_N,-9.0640177490324412,-0.59911911200000001,0,,,-9.0640177490324412 -coef_driving_age_child_who_is_in_school_interaction_income_between_50k_and_100k_H,-0.90601686275009163,-0.50309999999999999,0,,,-0.90601686275009163 -coef_driving_age_child_who_is_in_school_interaction_with_fewer_cars_than_workers_H,0.42727506400961712,0.64749999999999996,0,,,0.42727506400961712 -coef_driving_age_child_who_is_in_school_interaction_with_income_more_than_100k_H,-1.7272824609972235,-2.0459999999999998,0,,,-1.7272824609972235 -coef_driving_age_child_who_is_in_school_interaction_with_less_than_20k_H,0.45396678614268526,1.3069999999999999,0,,,0.45396678614268526 -coef_full_time_worker_asc_M,0.98435866822120488,1.3787345790000001,0,,,0.98435866822120488 -coef_full_time_worker_asc_N,0.73324510331920412,0.62266239099999998,0,,,0.73324510331920412 -coef_full_time_worker_interaction_with_age_less_than_40_M,0.44443952843908197,0.20910000000000001,0,,,0.44443952843908197 -coef_full_time_worker_interaction_with_female_gender_M,0.038410812572387439,-0.12590000000000001,0,,,0.038410812572387439 -coef_full_time_worker_interaction_with_fewer_cars_than_workers_H,0.41538570763618882,0.50390000000000001,0,,,0.41538570763618882 -coef_full_time_worker_interaction_with_income_less_than_20k_H,0.44991051165021323,0.53129999999999999,0,,,0.44991051165021323 -coef_full_time_worker_intraction_with_peak_accessibility_to_all_employment_M,0.15132046128679377,0.1212,0,,,0.15132046128679377 -coef_non_working_adult_asc_N,0.61315184259117572,0.59464538600000005,0,,,0.61315184259117572 -coef_non_working_adult_interaction_with_female_gender_M,-0.74299999999999999,-0.74299999999999999,0,,,-0.74299999999999999 -coef_non_working_adult_interaction_with_fewer_cars_than_workers_H,0.80008083982324651,0.89649999999999996,0,,,0.80008083982324651 -coef_non_working_adult_interaction_with_income_between_50k_and_100k_H,-1.135877229516298,-0.56020000000000003,0,,,-1.135877229516298 -coef_non_working_adult_interaction_with_income_more_than_100k_H,-0.53695636446511075,-0.71879999999999999,0,,,-0.53695636446511075 -coef_non_working_adult_interaction_with_more_cars_than_workers_M,0.65149999999999997,0.65149999999999997,0,,,0.65149999999999997 -coef_non_working_adult_interaction_with_more_cars_than_workers_N,1.4756696612117433,0.81679999999999997,0,,,1.4756696612117433 -coef_non_working_adult_interaction_with_peak_accessibility_to_all_employment_M,0.23139999999999999,0.23139999999999999,0,,,0.23139999999999999 -coef_non_working_adult_retired_or_univ_student_interaction_with_off_peak_accessibility_to_all_employment_N,0.05369614335005668,0.072069999999999995,0,,,0.05369614335005668 -coef_part_time_worker_asc_M,4.6632375293425374,-0.71882373799999999,0,,,4.6632375293425374 -coef_part_time_worker_asc_N,0.63327669200378511,0.63603246700000005,0,,,0.63327669200378511 -coef_part_time_worker_interaction_with_income_between_50k_and_100k_H,0.084764438455744495,-0.4032,0,,,0.084764438455744495 -coef_part_time_worker_interaction_with_income_less_than_20k_H,0.38471102017852971,0.32319999999999999,0,,,0.38471102017852971 -coef_part_time_worker_interaction_with_income_more_than_100k_H,-1.3396802216835464,-0.35339999999999999,0,,,-1.3396802216835464 -coef_part_time_worker_interaction_with_income_more_than_100k_N,0.57320315896108665,0.42070000000000002,0,,,0.57320315896108665 -coef_part_time_worker_interaction_with_peak_accessibility_to_all_employment_M,-0.22927275954114743,0.20039999999999999,0,,,-0.22927275954114743 -coef_pre_driving_age_child_who_is_in_school_asc_M,3.9697740814213565,3.295863529,0,,,3.9697740814213565 -coef_pre_driving_age_child_who_is_in_school_asc_N,-6.9669814176755258,0.57142433999999998,0,,,-6.9669814176755258 -coef_pre_driving_age_child_who_is_in_school_interaction_with_age_13_to_15_M,-1.5862536567965162,-0.71409999999999996,0,,,-1.5862536567965162 -coef_pre_driving_age_child_who_is_in_school_interaction_with_age_13_to_15_N,-1.1444471156694567,-0.67200000000000004,0,,,-1.1444471156694567 -coef_pre_driving_age_child_who_is_in_school_interaction_with_age_6_to_9_M,-0.71694326641444928,-0.29430000000000001,0,,,-0.71694326641444928 -coef_pre_driving_age_child_who_is_in_school_interaction_with_fewer_cars_than_workers_H,1.0962667615224149,0.58620000000000005,0,,,1.0962667615224149 -coef_pre_driving_age_child_who_is_too_young_for_school_asc_M,0.92486435043901694,1.052531189,0,,,0.92486435043901694 -coef_pre_driving_age_child_who_is_too_young_for_school_asc_N,-8.6130259294995177,-0.83756777599999999,0,,,-8.6130259294995177 -coef_pre_driving_age_child_who_is_too_young_for_school_interaction_with_age_0_to_1_M,-0.94468281293415513,-0.45150000000000001,0,,,-0.94468281293415513 -coef_pre_driving_age_child_who_is_too_young_for_school_interaction_with_age_4_to_5_M,0.23268035055770159,0.61070000000000002,0,,,0.23268035055770159 -coef_pre_driving_age_child_who_is_too_young_for_school_interaction_with_fewer_cars_than_workers_H,-0.056007934757943807,0.50609999999999999,0,,,-0.056007934757943807 -coef_pre_driving_age_child_who_is_too_young_for_school_interaction_with_income_between_50k_and_100k_H,-0.71502868941234388,-0.57079999999999997,0,,,-0.71502868941234388 -coef_pre_driving_age_child_who_is_too_young_for_school_interaction_with_income_more_than_100k_H,-0.7760438496909059,-0.61860000000000004,0,,,-0.7760438496909059 -coef_pre_driving_age_child_who_is_too_young_for_school_interaction_with_more_cars_than_workers_N,0.77447196962877585,0.29909999999999998,0,,,0.77447196962877585 -coef_retired_asc_N,1.1425900456454805,0.408202071,0,,,1.1425900456454805 -coef_retired_interaction_with_age_more_than_80_H,1.1363693439466673,0.76659999999999995,0,,,1.1363693439466673 -coef_retired_interaction_with_female_M,0.47689999999999999,0.47689999999999999,0,,,0.47689999999999999 -coef_retired_interaction_with_fewer_cars_than_workers_H,1.1295952477348739,0.54959999999999998,0,,,1.1295952477348739 -coef_retired_interaction_with_income_less_than_20k_H,0.65398902348188781,0.53300000000000003,0,,,0.65398902348188781 -coef_retired_interaction_with_more_cars_than_workers_M,2.992,2.992,0,,,2.992 -coef_retired_interaction_with_more_cars_than_workers_N,0.76262176538305015,1.056,0,,,0.76262176538305015 -coef_retired_interaction_with_peak_accessibility_to_all_employment_M,0.2792,0.2792,0,,,0.2792 -coef_university_student_asc_M,2.1206612172447477,2.3535951759999998,0,,,2.1206612172447477 -coef_university_student_asc_N,0.47323909115586493,0.609709846,0,,,0.47323909115586493 --999.0,-999,-999,-999,-999,-999,-999 -coef_H_11,1.5446242163709172,1.6259999999999999,0,,,1.5446242163709172 -coef_H_12,0.15833568776463425,0.74070000000000003,0,,,0.15833568776463425 -coef_H_13,1.5389002358533881,1.1830000000000001,0,,,1.5389002358533881 -coef_H_14,1.3436422025992563,0.94359999999999999,0,,,1.3436422025992563 -coef_H_15,0.62460727406650574,1.298,0,,,0.62460727406650574 -coef_H_16,1.521735383660767,2.0640000000000001,0,,,1.521735383660767 -coef_H_17,1.4606474415665514,1.5009999999999999,0,,,1.4606474415665514 -coef_H_18,1.2139109701831139,0.99119999999999997,0,,,1.2139109701831139 -coef_H_22,-15.923116744497655,0.8911,0,,,-15.923116744497655 -coef_H_23,0.73052600611455265,1.6419999999999999,0,,,0.73052600611455265 -coef_H_24,1.0651655384578942,0.70569999999999999,0,,,1.0651655384578942 -coef_H_25,-16.202420121437097,0.46300000000000002,0,,,-16.202420121437097 -coef_H_26,4.156194778954351,3.0569999999999999,0,,,4.156194778954351 -coef_H_27,0.40222213291144671,0.76849999999999996,0,,,0.40222213291144671 -coef_H_28,-15.469749038901073,1.0700000000000001,0,,,-15.469749038901073 -coef_H_33,0.99710939823398292,1.018,0,,,0.99710939823398292 -coef_H_34,1.6743259141961955,1.7809999999999999,0,,,1.6743259141961955 -coef_H_35,-17.763631508602064,0.48349999999999999,0,,,-17.763631508602064 -coef_H_36,1.546,1.546,0,,,1.546 -coef_H_37,1.552,1.552,0,,,1.552 -coef_H_38,1.3400000000000001,1.3400000000000001,0,,,1.3400000000000001 -coef_H_44,1.7326164145508278,1.3520000000000001,0,,,1.7326164145508278 -coef_H_45,2.1749474138597793,1.2090000000000001,0,,,2.1749474138597793 -coef_H_46,0.52429999999999999,0.52429999999999999,0,,,0.52429999999999999 -coef_H_47,0.81120000000000003,0.81120000000000003,0,,,0.81120000000000003 -coef_H_48,1.167,1.167,0,,,1.167 -coef_H_55,0.98410006600474542,1.407,0,,,0.98410006600474542 -coef_H_56_57_58,0.86319999999999997,0.86319999999999997,0,,,0.86319999999999997 -coef_H_66,18.485095476410191,2.198,0,,,18.485095476410191 -coef_H_67,-18.838145375909068,0.97699999999999998,0,,,-18.838145375909068 -coef_H_68,1.4670000000000001,1.4670000000000001,0,,,1.4670000000000001 -coef_H_77,2.4644108765258532,2.7999999999999998,0,,,2.4644108765258532 -coef_H_78,16.353710938881033,1.4339999999999999,0,,,16.353710938881033 -coef_H_88,1.189203293091496,1.3779999999999999,0,,,1.189203293091496 -coef_M_11,-0.069163059806229873,0.14099999999999999,0,,,-0.069163059806229873 -coef_M_12,0.27916204731988919,0.088450000000000001,0,,,0.27916204731988919 -coef_M_13,0.29314801601836593,0.42730000000000001,0,,,0.29314801601836593 -coef_M_16,0.39262282583718466,0.38419999999999999,0,,,0.39262282583718466 -coef_M_17,-0.10503260073739486,0.26229999999999998,0,,,-0.10503260073739486 -coef_M_18,0.28872595185423811,0.51180000000000003,0,,,0.28872595185423811 -coef_M_22,0.94589050141866338,1.135,0,,,0.94589050141866338 -coef_M_23,0.1879379616749213,0.17299999999999999,0,,,0.1879379616749213 -coef_M_26,1.9267776692819061,1.103,0,,,1.9267776692819061 -coef_M_27,0.1161255949291411,0.30790000000000001,0,,,0.1161255949291411 -coef_M_28,0.40930716183312305,0.50739999999999996,0,,,0.40930716183312305 -coef_M_33,0.42731234923519629,0.87260000000000004,0,,,0.42731234923519629 -coef_M_36,-0.0020999999999999999,-0.0020999999999999999,0,,,-0.0020999999999999999 -coef_M_37,0.29749999999999999,0.29749999999999999,0,,,0.29749999999999999 -coef_M_38,0.22539999999999999,0.22539999999999999,0,,,0.22539999999999999 -coef_M_66,16.866971034774586,0.47939999999999999,0,,,16.866971034774586 -coef_M_67,-18.934085377461077,0.5151,0,,,-18.934085377461077 -coef_M_68,0.55159999999999998,0.55159999999999998,0,,,0.55159999999999998 -coef_M_77,1.1689185377597398,0.97309999999999997,0,,,1.1689185377597398 -coef_M_78,-1.5331233891804061,0.59609999999999996,0,,,-1.5331233891804061 -coef_M_88,1.1505839302746146,1.651,0,,,1.1505839302746146 -coef_N_11,0.87318887937108214,1.123,0,,,0.87318887937108214 -coef_N_12,0.24183915201361481,0.49469999999999997,0,,,0.24183915201361481 -coef_N_13,0.59192245194065063,0.55230000000000001,0,,,0.59192245194065063 -coef_N_14,-0.11520399026943709,0.021860000000000001,0,,,-0.11520399026943709 -coef_N_15,0.35837177201195769,0.3115,0,,,0.35837177201195769 -coef_N_16,0.87560206874032775,0.40949999999999998,0,,,0.87560206874032775 -coef_N_17,-0.12677865514794309,0.6008,0,,,-0.12677865514794309 -coef_N_18,0.10704226969734577,0.751,0,,,0.10704226969734577 -coef_N_22,0.72707556913323979,1.032,0,,,0.72707556913323979 -coef_N_23,0.54094331873208856,0.33550000000000002,0,,,0.54094331873208856 -coef_N_24,1.2778673813277723,0.74770000000000003,0,,,1.2778673813277723 -coef_N_25,-0.44876565834828996,0.098309999999999995,0,,,-0.44876565834828996 -coef_N_26,-14.897952319514477,0.495,0,,,-14.897952319514477 -coef_N_27,0.3031034553268101,0.89839999999999998,0,,,0.3031034553268101 -coef_N_28,0.90141537238007852,1.452,0,,,0.90141537238007852 -coef_N_33,0.94126692083673891,1.054,0,,,0.94126692083673891 -coef_N_34,-0.17640412257232874,0.193,0,,,-0.17640412257232874 -coef_N_35,0.10306375422257623,0.40649999999999997,0,,,0.10306375422257623 -coef_N_36,1.6200000000000001,1.6200000000000001,0,,,1.6200000000000001 -coef_N_37,0.51649999999999996,0.51649999999999996,0,,,0.51649999999999996 -coef_N_38,0.89729999999999999,0.89729999999999999,0,,,0.89729999999999999 -coef_N_44,0.18753988004006014,0.69840000000000002,0,,,0.18753988004006014 -coef_N_45,0.10139966319988514,0.18640000000000001,0,,,0.10139966319988514 -coef_N_46,0.68010000000000004,0.68010000000000004,0,,,0.68010000000000004 -coef_N_47,0.56459999999999999,0.56459999999999999,0,,,0.56459999999999999 -coef_N_48,1.1639999999999999,1.1639999999999999,0,,,1.1639999999999999 -coef_N_55,0.71481848079980614,0.72909999999999997,0,,,0.71481848079980614 -coef_N_56_57_58,0.29189999999999999,0.29189999999999999,0,,,0.29189999999999999 -coef_N_66,-2.4730624946698345,1.512,0,,,-2.4730624946698345 -coef_N_67,-14.740556739194025,1.4219999999999999,0,,,-14.740556739194025 -coef_N_68,1.2729999999999999,1.2729999999999999,0,,,1.2729999999999999 -coef_N_77,2.3130640609159334,1.5529999999999999,0,,,2.3130640609159334 -coef_N_78,-0.30407334622872023,0.61839999999999995,0,,,-0.30407334622872023 -coef_N_88,-0.15881741099470906,0.87709999999999999,0,,,-0.15881741099470906 -coef_H_124_122_144,0.33133065098679593,0.95730000000000004,0,,,0.33133065098679593 -coef_H_126_146,1.5514557242593745,0.29389999999999999,0,,,1.5514557242593745 -coef_H_222_224_244,-9.203498518007823,0.98809999999999998,0,,,-9.203498518007823 -coef_H_226_246_446,34.311085923988777,0.43740000000000001,0,,,34.311085923988777 -coef_H_266_466,0.47470000000000001,0.47470000000000001,0,,,0.47470000000000001 -coef_H_xxxxx,-4.3950349906415909,-8.6210000000000004,0,,,-4.3950349906415909 -coef_M_111,0.22029613237472445,0.31330000000000002,0,,,0.22029613237472445 -coef_M_112_114,-0.0040326112064052802,0.34949999999999998,0,,,-0.0040326112064052802 -coef_M_666,-0.3906,-0.3906,0,,,-0.3906 -coef_M_xxxxx,-0.094419014924773184,-1.528,0,,,-0.094419014924773184 -coef_N_112_114,0.38961790319791489,0.4637,0,,,0.38961790319791489 -coef_N_124_122_144,0.58723976265654321,0.34910000000000002,0,,,0.58723976265654321 -coef_N_166,-1.6454258220246625,0.3553,0,,,-1.6454258220246625 -coef_N_222_224_444,-0.73749437161692599,-1.3859999999999999,0,,,-0.73749437161692599 -coef_N_246_226_446,-0.85860667485009734,-0.85709999999999997,0,,,-0.85860667485009734 -coef_N_xxxxx,-1.0332955358547824,-3.4529999999999998,0,,,-1.0332955358547824 +param_name,value,best,initvalue,nullvalue +-999.0,-999,-999,-999,0 +coef_H_11,1.5419336578228711,1.5419336578228711,1.6259999999999999,0 +coef_H_12,0.1568571252329849,0.1568571252329849,0.74070000000000003,0 +coef_H_124_122_144,0.32986113267128092,0.32986113267128092,0.95730000000000004,0 +coef_H_126_146,1.4938156680605212,1.4938156680605212,0.29389999999999999,0 +coef_H_13,1.530278002377929,1.530278002377929,1.1830000000000001,0 +coef_H_14,1.3497694853851858,1.3497694853851858,0.94359999999999999,0 +coef_H_15,0.62685358911701483,0.62685358911701483,1.298,0 +coef_H_16,1.5291894067209522,1.5291894067209522,2.0640000000000001,0 +coef_H_17,1.4687422769805925,1.4687422769805925,1.5009999999999999,0 +coef_H_18,1.216086235948181,1.216086235948181,0.99119999999999997,0 +coef_H_22,-4.3063697707024655,-4.3063697707024655,0.8911,0 +coef_H_222_224_244,-1.6197321462997589,-1.6197321462997589,0.98809999999999998,0 +coef_H_226_246_446,12.098686405137819,12.098686405137819,0.43740000000000001,0 +coef_H_23,0.68825135369938106,0.68825135369938106,1.6419999999999999,0 +coef_H_24,1.0820165622653497,1.0820165622653497,0.70569999999999999,0 +coef_H_25,-6.6250196452915038,-6.6250196452915038,0.46300000000000002,0 +coef_H_26,4.3850586248092194,4.3850586248092194,3.0569999999999999,0 +coef_H_266_466,0.47470000000000001,0.47470000000000001,0.47470000000000001,0 +coef_H_27,0.37427672206710327,0.37427672206710327,0.76849999999999996,0 +coef_H_28,-6.5629206600849752,-6.5629206600849752,1.0700000000000001,0 +coef_H_33,0.97934875367483343,0.97934875367483343,1.018,0 +coef_H_34,1.6682416041299686,1.6682416041299686,1.7809999999999999,0 +coef_H_35,-7.6611808359029645,-7.6611808359029645,0.48349999999999999,0 +coef_H_36,1.546,1.546,1.546,0 +coef_H_37,1.552,1.552,1.552,0 +coef_H_38,1.3400000000000001,1.3400000000000001,1.3400000000000001,0 +coef_H_44,1.7216206652798149,1.7216206652798149,1.3520000000000001,0 +coef_H_45,2.1809912215370213,2.1809912215370213,1.2090000000000001,0 +coef_H_46,0.52429999999999999,0.52429999999999999,0.52429999999999999,0 +coef_H_47,0.81120000000000003,0.81120000000000003,0.81120000000000003,0 +coef_H_48,1.167,1.167,1.167,0 +coef_H_55,0.9809722526114516,0.9809722526114516,1.407,0 +coef_H_56_57_58,0.86319999999999997,0.86319999999999997,0.86319999999999997,0 +coef_H_66,8.4167262944706192,8.4167262944706192,2.198,0 +coef_H_67,0.44723071774676276,0.44723071774676276,0.97699999999999998,0 +coef_H_68,1.4670000000000001,1.4670000000000001,1.4670000000000001,0 +coef_H_77,2.4634580374961481,2.4634580374961481,2.7999999999999998,0 +coef_H_78,8.0627613298133163,8.0627613298133163,1.4339999999999999,0 +coef_H_88,1.1936498396775894,1.1936498396775894,1.3779999999999999,0 +coef_H_xxxxx,-4.438201822964726,-4.438201822964726,-8.6210000000000004,0 +coef_M_11,-0.066577852130294796,-0.066577852130294796,0.14099999999999999,0 +coef_M_111,0.21817216396215119,0.21817216396215119,0.31330000000000002,0 +coef_M_112_114,-0.0091511592429970364,-0.0091511592429970364,0.34949999999999998,0 +coef_M_12,0.27663650974688847,0.27663650974688847,0.088450000000000001,0 +coef_M_13,0.29518704763231096,0.29518704763231096,0.42730000000000001,0 +coef_M_16,0.39054012521608994,0.39054012521608994,0.38419999999999999,0 +coef_M_17,-0.10374731614605871,-0.10374731614605871,0.26229999999999998,0 +coef_M_18,0.29351743522965396,0.29351743522965396,0.51180000000000003,0 +coef_M_22,0.94258669894424363,0.94258669894424363,1.135,0 +coef_M_23,0.17645116723622598,0.17645116723622598,0.17299999999999999,0 +coef_M_26,2.0567045575983358,2.0567045575983358,1.103,0 +coef_M_27,0.11181263755365198,0.11181263755365198,0.30790000000000001,0 +coef_M_28,0.40977163391205312,0.40977163391205312,0.50739999999999996,0 +coef_M_33,0.42794992530878012,0.42794992530878012,0.87260000000000004,0 +coef_M_36,-0.0020999999999999999,-0.0020999999999999999,-0.0020999999999999999,0 +coef_M_37,0.29749999999999999,0.29749999999999999,0.29749999999999999,0 +coef_M_38,0.22539999999999999,0.22539999999999999,0.22539999999999999,0 +coef_M_66,6.8123948779490693,6.8123948779490693,0.47939999999999999,0 +coef_M_666,-0.3906,-0.3906,-0.3906,0 +coef_M_67,-7.3937041904113867,-7.3937041904113867,0.5151,0 +coef_M_68,0.55159999999999998,0.55159999999999998,0.55159999999999998,0 +coef_M_77,1.1962631870344373,1.1962631870344373,0.97309999999999997,0 +coef_M_78,-1.3923814874344116,-1.3923814874344116,0.59609999999999996,0 +coef_M_88,1.1525357532203755,1.1525357532203755,1.651,0 +coef_M_xxxxx,-0.096518689430947144,-0.096518689430947144,-1.528,0 +coef_N_11,0.86795864199959616,0.86795864199959616,1.123,0 +coef_N_112_114,0.39065522090321092,0.39065522090321092,0.4637,0 +coef_N_12,0.2480617301094909,0.2480617301094909,0.49469999999999997,0 +coef_N_124_122_144,0.5961328376142746,0.5961328376142746,0.34910000000000002,0 +coef_N_13,0.59999100559434859,0.59999100559434859,0.55230000000000001,0 +coef_N_14,-0.11674049556223835,-0.11674049556223835,0.021860000000000001,0 +coef_N_15,0.35040961065342302,0.35040961065342302,0.3115,0 +coef_N_16,0.86792547139565934,0.86792547139565934,0.40949999999999998,0 +coef_N_166,-0.60592696880184027,-0.60592696880184027,0.3553,0 +coef_N_17,-0.12905710747041996,-0.12905710747041996,0.6008,0 +coef_N_18,0.099608274686980441,0.099608274686980441,0.751,0 +coef_N_22,0.72885783855767394,0.72885783855767394,1.032,0 +coef_N_222_224_444,-0.71444624999906414,-0.71444624999906414,-1.3859999999999999,0 +coef_N_23,0.52825961143137423,0.52825961143137423,0.33550000000000002,0 +coef_N_24,1.2980868785793294,1.2980868785793294,0.74770000000000003,0 +coef_N_246_226_446,-0.85788521935923545,-0.85788521935923545,-0.85709999999999997,0 +coef_N_25,-0.43179604185147774,-0.43179604185147774,0.098309999999999995,0 +coef_N_26,-1.6215850575786785,-1.6215850575786785,0.495,0 +coef_N_27,0.30168716118388883,0.30168716118388883,0.89839999999999998,0 +coef_N_28,0.90407599542690464,0.90407599542690464,1.452,0 +coef_N_33,0.94281968773235403,0.94281968773235403,1.054,0 +coef_N_34,-0.1808606095370153,-0.1808606095370153,0.193,0 +coef_N_35,0.097592142619067943,0.097592142619067943,0.40649999999999997,0 +coef_N_36,1.6200000000000001,1.6200000000000001,1.6200000000000001,0 +coef_N_37,0.51649999999999996,0.51649999999999996,0.51649999999999996,0 +coef_N_38,0.89729999999999999,0.89729999999999999,0.89729999999999999,0 +coef_N_44,0.17090119236816009,0.17090119236816009,0.69840000000000002,0 +coef_N_45,0.10502837410928217,0.10502837410928217,0.18640000000000001,0 +coef_N_46,0.68010000000000004,0.68010000000000004,0.68010000000000004,0 +coef_N_47,0.56459999999999999,0.56459999999999999,0.56459999999999999,0 +coef_N_48,1.1639999999999999,1.1639999999999999,1.1639999999999999,0 +coef_N_55,0.71685424802473707,0.71685424802473707,0.72909999999999997,0 +coef_N_56_57_58,0.29189999999999999,0.29189999999999999,0.29189999999999999,0 +coef_N_66,-0.33771670602573539,-0.33771670602573539,1.512,0 +coef_N_67,-0.51003034698548388,-0.51003034698548388,1.4219999999999999,0 +coef_N_68,1.2729999999999999,1.2729999999999999,1.2729999999999999,0 +coef_N_77,2.3038032526813228,2.3038032526813228,1.5529999999999999,0 +coef_N_78,-0.050192112434025701,-0.050192112434025701,0.61839999999999995,0 +coef_N_88,-0.12160277921446122,-0.12160277921446122,0.87709999999999999,0 +coef_N_xxxxx,-1.0454032140665002,-1.0454032140665002,-3.4529999999999998,0 +coef_UNAVAILABLE,-999,-999,-999,0 +coef_child_who_is_in_school_or_too_young_for_school_interaction_with_off_peak_accessibility_to_retail_N,0.31817765512188612,0.31817765512188612,0.08233,0 +coef_driving_age_child_who_is_in_school_asc_M,0.76528459302162444,0.76528459302162444,2.3309186849999999,0 +coef_driving_age_child_who_is_in_school_asc_N,-3.5523769241342968,-3.5523769241342968,-0.59911911200000001,0 +coef_driving_age_child_who_is_in_school_interaction_income_between_50k_and_100k_H,-0.94575683546498501,-0.94575683546498501,-0.50309999999999999,0 +coef_driving_age_child_who_is_in_school_interaction_with_fewer_cars_than_workers_H,0.45457650403543642,0.45457650403543642,0.64749999999999996,0 +coef_driving_age_child_who_is_in_school_interaction_with_income_more_than_100k_H,-1.7469955117343503,-1.7469955117343503,-2.0459999999999998,0 +coef_driving_age_child_who_is_in_school_interaction_with_less_than_20k_H,0.45063485271679943,0.45063485271679943,1.3069999999999999,0 +coef_full_time_worker_asc_M,0.74125913107999808,0.74125913107999808,1.3787345790000001,0 +coef_full_time_worker_asc_N,0.73554763956044567,0.73554763956044567,0.62266239099999998,0 +coef_full_time_worker_interaction_with_age_less_than_40_M,0.44384674710175359,0.44384674710175359,0.20910000000000001,0 +coef_full_time_worker_interaction_with_female_gender_M,0.038779513853859825,0.038779513853859825,-0.12590000000000001,0 +coef_full_time_worker_interaction_with_fewer_cars_than_workers_H,0.41683751563975829,0.41683751563975829,0.50390000000000001,0 +coef_full_time_worker_interaction_with_income_less_than_20k_H,0.4546699336623663,0.4546699336623663,0.53129999999999999,0 +coef_full_time_worker_intraction_with_peak_accessibility_to_all_employment_M,0.17061134225870994,0.17061134225870994,0.1212,0 +coef_non_working_adult_asc_N,0.5032527423546157,0.5032527423546157,0.59464538600000005,0 +coef_non_working_adult_interaction_with_female_gender_M,-0.74299999999999999,-0.74299999999999999,-0.74299999999999999,0 +coef_non_working_adult_interaction_with_fewer_cars_than_workers_H,0.79550405235037291,0.79550405235037291,0.89649999999999996,0 +coef_non_working_adult_interaction_with_income_between_50k_and_100k_H,-1.1335473989478433,-1.1335473989478433,-0.56020000000000003,0 +coef_non_working_adult_interaction_with_income_more_than_100k_H,-0.52876095625819419,-0.52876095625819419,-0.71879999999999999,0 +coef_non_working_adult_interaction_with_more_cars_than_workers_M,0.65149999999999997,0.65149999999999997,0.65149999999999997,0 +coef_non_working_adult_interaction_with_more_cars_than_workers_N,1.4789652448709654,1.4789652448709654,0.81679999999999997,0 +coef_non_working_adult_interaction_with_peak_accessibility_to_all_employment_M,0.23139999999999999,0.23139999999999999,0.23139999999999999,0 +coef_non_working_adult_retired_or_univ_student_interaction_with_off_peak_accessibility_to_all_employment_N,0.064939130822218152,0.064939130822218152,0.072069999999999995,0 +coef_part_time_worker_asc_M,6.3592603940417298,6.3592603940417298,-0.71882373799999999,0 +coef_part_time_worker_asc_N,0.62900096289821572,0.62900096289821572,0.63603246700000005,0 +coef_part_time_worker_interaction_with_income_between_50k_and_100k_H,0.083715416192307907,0.083715416192307907,-0.4032,0 +coef_part_time_worker_interaction_with_income_less_than_20k_H,0.37591205189659627,0.37591205189659627,0.32319999999999999,0 +coef_part_time_worker_interaction_with_income_more_than_100k_H,-1.344577739113451,-1.344577739113451,-0.35339999999999999,0 +coef_part_time_worker_interaction_with_income_more_than_100k_N,0.57926282447447563,0.57926282447447563,0.42070000000000002,0 +coef_part_time_worker_interaction_with_peak_accessibility_to_all_employment_M,-0.36291295851748201,-0.36291295851748201,0.20039999999999999,0 +coef_pre_driving_age_child_who_is_in_school_asc_M,3.9364917022114958,3.9364917022114958,3.295863529,0 +coef_pre_driving_age_child_who_is_in_school_asc_N,-1.4901825824862984,-1.4901825824862984,0.57142433999999998,0 +coef_pre_driving_age_child_who_is_in_school_interaction_with_age_13_to_15_M,-1.560760489357776,-1.560760489357776,-0.71409999999999996,0 +coef_pre_driving_age_child_who_is_in_school_interaction_with_age_13_to_15_N,-1.1582880792288159,-1.1582880792288159,-0.67200000000000004,0 +coef_pre_driving_age_child_who_is_in_school_interaction_with_age_6_to_9_M,-0.69702865509680834,-0.69702865509680834,-0.29430000000000001,0 +coef_pre_driving_age_child_who_is_in_school_interaction_with_fewer_cars_than_workers_H,1.0807804461266468,1.0807804461266468,0.58620000000000005,0 +coef_pre_driving_age_child_who_is_too_young_for_school_asc_M,0.93791299554872232,0.93791299554872232,1.052531189,0 +coef_pre_driving_age_child_who_is_too_young_for_school_asc_N,-3.1168217219705499,-3.1168217219705499,-0.83756777599999999,0 +coef_pre_driving_age_child_who_is_too_young_for_school_interaction_with_age_0_to_1_M,-0.97840886625486712,-0.97840886625486712,-0.45150000000000001,0 +coef_pre_driving_age_child_who_is_too_young_for_school_interaction_with_age_4_to_5_M,0.22680433121070148,0.22680433121070148,0.61070000000000002,0 +coef_pre_driving_age_child_who_is_too_young_for_school_interaction_with_fewer_cars_than_workers_H,-0.064351049344718039,-0.064351049344718039,0.50609999999999999,0 +coef_pre_driving_age_child_who_is_too_young_for_school_interaction_with_income_between_50k_and_100k_H,-0.70378572103967652,-0.70378572103967652,-0.57079999999999997,0 +coef_pre_driving_age_child_who_is_too_young_for_school_interaction_with_income_more_than_100k_H,-0.77304583320350251,-0.77304583320350251,-0.61860000000000004,0 +coef_pre_driving_age_child_who_is_too_young_for_school_interaction_with_more_cars_than_workers_N,0.69633632402948109,0.69633632402948109,0.29909999999999998,0 +coef_retired_asc_N,1.0264990433635548,1.0264990433635548,0.408202071,0 +coef_retired_interaction_with_age_more_than_80_H,1.1355402656793447,1.1355402656793447,0.76659999999999995,0 +coef_retired_interaction_with_female_M,0.47689999999999999,0.47689999999999999,0.47689999999999999,0 +coef_retired_interaction_with_fewer_cars_than_workers_H,1.1284456224788169,1.1284456224788169,0.54959999999999998,0 +coef_retired_interaction_with_income_less_than_20k_H,0.65094671152574535,0.65094671152574535,0.53300000000000003,0 +coef_retired_interaction_with_more_cars_than_workers_M,2.992,2.992,2.992,0 +coef_retired_interaction_with_more_cars_than_workers_N,0.76654574573265821,0.76654574573265821,1.056,0 +coef_retired_interaction_with_peak_accessibility_to_all_employment_M,0.2792,0.2792,0.2792,0 +coef_university_student_asc_M,2.1131909971292351,2.1131909971292351,2.3535951759999998,0 +coef_university_student_asc_N,0.35532700566947006,0.35532700566947006,0.609709846,0 diff --git a/activitysim/estimation/test/test_larch_estimation/test_cdap_model_loglike.csv b/activitysim/estimation/test/test_larch_estimation/test_cdap_model_loglike.csv index dcd755572..cf7fc482c 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_cdap_model_loglike.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_cdap_model_loglike.csv @@ -1,2 +1,2 @@ ,loglike_prior,loglike_converge -0,-2460.72797581254872057,-2335.77494762967762654 +0,-2460.7280651590818,-2336.352120296393 diff --git a/activitysim/estimation/test/test_larch_estimation/test_joint_tour_scheduling_loglike.csv b/activitysim/estimation/test/test_larch_estimation/test_joint_tour_scheduling_loglike.csv index a8e60cc38..c5a6e449e 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_joint_tour_scheduling_loglike.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_joint_tour_scheduling_loglike.csv @@ -1,2 +1,2 @@ ,loglike_prior,loglike_converge -0,-1295.3015770898169,-175.64109886722656 +0,-185.1805538740314,-163.38981780168791 diff --git a/activitysim/estimation/test/test_larch_estimation/test_loc_atwork_subtour_destination_BHHH_loglike.csv b/activitysim/estimation/test/test_larch_estimation/test_loc_atwork_subtour_destination_BHHH_loglike.csv new file mode 100644 index 000000000..90f36e10e --- /dev/null +++ b/activitysim/estimation/test/test_larch_estimation/test_loc_atwork_subtour_destination_BHHH_loglike.csv @@ -0,0 +1,2 @@ +,loglike_prior,loglike_converge +0,-1604.7051182769926,-1393.2868770044743 diff --git a/activitysim/estimation/test/test_larch_estimation/test_loc_atwork_subtour_destination_size_spec.csv b/activitysim/estimation/test/test_larch_estimation/test_loc_atwork_subtour_destination_BHHH_size_spec.csv similarity index 97% rename from activitysim/estimation/test/test_larch_estimation/test_loc_atwork_subtour_destination_size_spec.csv rename to activitysim/estimation/test/test_larch_estimation/test_loc_atwork_subtour_destination_BHHH_size_spec.csv index 55915d90a..1472d05ed 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_loc_atwork_subtour_destination_size_spec.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_loc_atwork_subtour_destination_BHHH_size_spec.csv @@ -12,7 +12,7 @@ 10,othmaint,non_mandatory,0,0.48199999999999998,0,0.51800000000000002,0,0,0,0,0,0,0 11,social,non_mandatory,0,0.52200000000000002,0,0.47799999999999998,0,0,0,0,0,0,0 12,othdiscr,non_mandatory,0.25225225225225223,0.2122122122122122,0,0.2722722722722723,0.16516516516516516,0,0,0,0.098098098098098108,0,0 -13,atwork,atwork,0,0.80359528369795752,0,0.19640471630204245,0,0,0,0,0,0,0 +13,atwork,atwork,0,0.9565182592635646,0,0.043481740736435397,0,0,0,0,0,0,0 14,work,trip,0,0.16666666666666666,0.16666666666666666,0.16666666666666666,0.16666666666666666,0.16666666666666666,0.16666666666666666,0,0,0,0 15,escort,trip,0.001,0.22500000000000001,0,0.14399999999999999,0,0,0,0.46400000000000002,0.16600000000000001,0,0 16,shopping,trip,0.001,0.999,0,0,0,0,0,0,0,0,0 diff --git a/activitysim/estimation/test/test_larch_estimation/test_loc_atwork_subtour_destination_loglike.csv b/activitysim/estimation/test/test_larch_estimation/test_loc_atwork_subtour_destination_loglike.csv deleted file mode 100644 index eb025e263..000000000 --- a/activitysim/estimation/test/test_larch_estimation/test_loc_atwork_subtour_destination_loglike.csv +++ /dev/null @@ -1,2 +0,0 @@ -,loglike_prior,loglike_converge -0,-2334.2258751965092,-2329.8700459477177 diff --git a/activitysim/estimation/test/test_larch_estimation/test_loc_atwork_subtour_scheduling_loglike.csv b/activitysim/estimation/test/test_larch_estimation/test_loc_atwork_subtour_scheduling_loglike.csv deleted file mode 100644 index 65489ba05..000000000 --- a/activitysim/estimation/test/test_larch_estimation/test_loc_atwork_subtour_scheduling_loglike.csv +++ /dev/null @@ -1,2 +0,0 @@ -,loglike_prior,loglike_converge -0,-6685.5153616099333,-1437.800794640111 diff --git a/activitysim/estimation/test/test_larch_estimation/test_loc_non_mandatory_tour_destination_SLSQP_loglike.csv b/activitysim/estimation/test/test_larch_estimation/test_loc_non_mandatory_tour_destination_SLSQP_loglike.csv new file mode 100644 index 000000000..77c309087 --- /dev/null +++ b/activitysim/estimation/test/test_larch_estimation/test_loc_non_mandatory_tour_destination_SLSQP_loglike.csv @@ -0,0 +1,2 @@ +,loglike_prior,loglike_converge +0,-8511.5032542114423,-7720.5833427253137 diff --git a/activitysim/estimation/test/test_larch_estimation/test_loc_non_mandatory_tour_destination_size_spec.csv b/activitysim/estimation/test/test_larch_estimation/test_loc_non_mandatory_tour_destination_SLSQP_size_spec.csv similarity index 51% rename from activitysim/estimation/test/test_larch_estimation/test_loc_non_mandatory_tour_destination_size_spec.csv rename to activitysim/estimation/test/test_larch_estimation/test_loc_non_mandatory_tour_destination_SLSQP_size_spec.csv index af3285fe2..9aee2eecc 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_loc_non_mandatory_tour_destination_size_spec.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_loc_non_mandatory_tour_destination_SLSQP_size_spec.csv @@ -1,23 +1,23 @@ ,segment,model_selector,TOTHH,RETEMPN,FPSEMPN,HEREMPN,OTHEMPN,AGREMPN,MWTEMPN,AGE0519,HSENROLL,COLLFTE,COLLPTE -0,work_low,workplace,0,0.12912912912912916,0.19319319319319325,0.38338338338338335,0.12012012012012015,0.010010010010010012,0.1641641641641641,0,0,0,0 -1,work_med,workplace,0,0.12012012012012013,0.19719719719719711,0.32532532532532538,0.13913913913913917,0.0080080080080080097,0.21021021021021022,0,0,0,0 +0,work_low,workplace,0,0.12912912912912911,0.19319319319319317,0.38338338338338335,0.12012012012012011,0.01001001001001001,0.16416416416416416,0,0,0,0 +1,work_med,workplace,0,0.12012012012012012,0.19719719719719719,0.32532532532532532,0.13913913913913914,0.0080080080080080079,0.21021021021021019,0,0,0,0 2,work_high,workplace,0,0.11,0.20699999999999999,0.28399999999999997,0.154,0.0060000000000000001,0.23899999999999999,0,0,0,0 3,work_veryhigh,workplace,0,0.092999999999999999,0.27000000000000002,0.24099999999999999,0.14599999999999999,0.0040000000000000001,0.246,0,0,0,0 -4,university,school,0,0,0,0,0,0,0,0,0,0.59200000000000008,0.40799999999999997 +4,university,school,0,0,0,0,0,0,0,0,0,0.59199999999999997,0.40799999999999997 5,gradeschool,school,0,0,0,0,0,0,0,1,0,0,0 6,highschool,school,0,0,0,0,0,0,0,0,1,0,0 -7,escort,non_mandatory,0,0.34195879720614686,0,0.13084293500721081,0,0,0,0.47127943957016599,0.055918828216476292,0,0 +7,escort,non_mandatory,0,0.46217099216294472,0,0.076417211673566368,0,0,0,0.45632020794852418,0.0050915882149647294,0,0 8,shopping,non_mandatory,0,1,0,0,0,0,0,0,0,0,0 -9,eatout,non_mandatory,0,0.65324866493964562,0,0.34675133506035422,0,0,0,0,0,0,0 -10,othmaint,non_mandatory,0,0.4233662207110353,0,0.57663377928896464,0,0,0,0,0,0,0 -11,social,non_mandatory,0,0.41656965799658413,0,0.58343034200341592,0,0,0,0,0,0,0 -12,othdiscr,non_mandatory,0.29737723981663911,0.27581414711676105,0,0.23370128672645701,0.12262191040591303,0,0,0,0.070485415934229814,0,0 +9,eatout,non_mandatory,0,0.90706301951236668,0,0.092936980487633311,0,0,0,0,0,0,0 +10,othmaint,non_mandatory,0,0.93116571483751687,0,0.068834285162483244,0,0,0,0,0,0,0 +11,social,non_mandatory,0,0.92391195421170202,0,0.076088045788297989,0,0,0,0,0,0,0 +12,othdiscr,non_mandatory,0.52511273726308272,0.27498108262234988,0,0.023448766399240456,0.15609458779050345,0,0,0,0.020362825924823438,0,0 13,atwork,atwork,0,0.74199999999999999,0,0.25800000000000001,0,0,0,0,0,0,0 14,work,trip,0,0.16666666666666666,0.16666666666666666,0.16666666666666666,0.16666666666666666,0.16666666666666666,0.16666666666666666,0,0,0,0 -15,escort,trip,0.0010000000000000002,0.22500000000000003,0,0.14400000000000002,0,0,0,0.46399999999999997,0.16600000000000004,0,0 +15,escort,trip,0.001,0.22500000000000001,0,0.14399999999999999,0,0,0,0.46400000000000002,0.16600000000000001,0,0 16,shopping,trip,0.001,0.999,0,0,0,0,0,0,0,0,0 17,eatout,trip,0,0.74199999999999999,0,0.25800000000000001,0,0,0,0,0,0,0 18,othmaint,trip,0.001,0.48099999999999998,0,0.51800000000000002,0,0,0,0,0,0,0 19,social,trip,0.001,0.52100000000000002,0,0.47799999999999998,0,0,0,0,0,0,0 20,othdiscr,trip,0.25225225225225223,0.2122122122122122,0,0.2722722722722723,0.16516516516516516,0,0,0,0.098098098098098108,0,0 -21,univ,trip,0.000999000999000999,0,0,0,0,0,0,0,0,0.59140859140859148,0.4075924075924075 +21,univ,trip,0.00099900099900099922,0,0,0,0,0,0,0,0,0.59140859140859148,0.40759240759240761 diff --git a/activitysim/estimation/test/test_larch_estimation/test_loc_non_mandatory_tour_destination_loglike.csv b/activitysim/estimation/test/test_larch_estimation/test_loc_non_mandatory_tour_destination_loglike.csv deleted file mode 100644 index c5df93cab..000000000 --- a/activitysim/estimation/test/test_larch_estimation/test_loc_non_mandatory_tour_destination_loglike.csv +++ /dev/null @@ -1,2 +0,0 @@ -,loglike_prior,loglike_converge -0,-12819.670044726949,-12802.203974292237 diff --git a/activitysim/estimation/test/test_larch_estimation/test_loc_non_mandatory_tour_scheduling_loglike.csv b/activitysim/estimation/test/test_larch_estimation/test_loc_non_mandatory_tour_scheduling_loglike.csv deleted file mode 100644 index d774c94c6..000000000 --- a/activitysim/estimation/test/test_larch_estimation/test_loc_non_mandatory_tour_scheduling_loglike.csv +++ /dev/null @@ -1,2 +0,0 @@ -,loglike_prior,loglike_converge -0,-12689.271731526222,-9843.6723572271876 diff --git a/activitysim/estimation/test/test_larch_estimation/test_loc_school_location_BHHH_loglike.csv b/activitysim/estimation/test/test_larch_estimation/test_loc_school_location_BHHH_loglike.csv new file mode 100644 index 000000000..61faa0892 --- /dev/null +++ b/activitysim/estimation/test/test_larch_estimation/test_loc_school_location_BHHH_loglike.csv @@ -0,0 +1,2 @@ +,loglike_prior,loglike_converge +0,-3150.9027927232128,-2472.1256126886806 diff --git a/activitysim/estimation/test/test_larch_estimation/test_loc_school_location_BHHH_size_spec.csv b/activitysim/estimation/test/test_larch_estimation/test_loc_school_location_BHHH_size_spec.csv new file mode 100644 index 000000000..b5a470032 --- /dev/null +++ b/activitysim/estimation/test/test_larch_estimation/test_loc_school_location_BHHH_size_spec.csv @@ -0,0 +1,23 @@ +,segment,model_selector,TOTHH,RETEMPN,FPSEMPN,HEREMPN,OTHEMPN,AGREMPN,MWTEMPN,AGE0519,HSENROLL,COLLFTE,COLLPTE +0,work_low,workplace,0,0.12912912912912911,0.19319319319319317,0.38338338338338335,0.12012012012012011,0.01001001001001001,0.16416416416416416,0,0,0,0 +1,work_med,workplace,0,0.12012012012012012,0.19719719719719719,0.32532532532532532,0.13913913913913914,0.0080080080080080079,0.21021021021021019,0,0,0,0 +2,work_high,workplace,0,0.11,0.20699999999999999,0.28399999999999997,0.154,0.0060000000000000001,0.23899999999999999,0,0,0,0 +3,work_veryhigh,workplace,0,0.092999999999999999,0.27000000000000002,0.24099999999999999,0.14599999999999999,0.0040000000000000001,0.246,0,0,0,0 +4,university,school,0,0,0,0,0,0,0,0,0,1,0 +5,gradeschool,school,0,0,0,0,0,0,0,1,0,0,0 +6,highschool,school,0,0,0,0,0,0,0,0,1,0,0 +7,escort,non_mandatory,0,0.22500000000000001,0,0.14399999999999999,0,0,0,0.46500000000000002,0.16600000000000001,0,0 +8,shopping,non_mandatory,0,1,0,0,0,0,0,0,0,0,0 +9,eatout,non_mandatory,0,0.74199999999999999,0,0.25800000000000001,0,0,0,0,0,0,0 +10,othmaint,non_mandatory,0,0.48199999999999998,0,0.51800000000000002,0,0,0,0,0,0,0 +11,social,non_mandatory,0,0.52200000000000002,0,0.47799999999999998,0,0,0,0,0,0,0 +12,othdiscr,non_mandatory,0.25225225225225223,0.2122122122122122,0,0.2722722722722723,0.16516516516516516,0,0,0,0.098098098098098108,0,0 +13,atwork,atwork,0,0.74199999999999999,0,0.25800000000000001,0,0,0,0,0,0,0 +14,work,trip,0,0.16666666666666666,0.16666666666666666,0.16666666666666666,0.16666666666666666,0.16666666666666666,0.16666666666666666,0,0,0,0 +15,escort,trip,0.001,0.22500000000000001,0,0.14399999999999999,0,0,0,0.46400000000000002,0.16600000000000001,0,0 +16,shopping,trip,0.001,0.999,0,0,0,0,0,0,0,0,0 +17,eatout,trip,0,0.74199999999999999,0,0.25800000000000001,0,0,0,0,0,0,0 +18,othmaint,trip,0.001,0.48099999999999998,0,0.51800000000000002,0,0,0,0,0,0,0 +19,social,trip,0.001,0.52100000000000002,0,0.47799999999999998,0,0,0,0,0,0,0 +20,othdiscr,trip,0.25225225225225223,0.2122122122122122,0,0.2722722722722723,0.16516516516516516,0,0,0,0.098098098098098108,0,0 +21,univ,trip,0.00099900099900099922,0,0,0,0,0,0,0,0,0.59140859140859148,0.40759240759240761 diff --git a/activitysim/estimation/test/test_larch_estimation/test_loc_school_location_SLSQP_loglike.csv b/activitysim/estimation/test/test_larch_estimation/test_loc_school_location_SLSQP_loglike.csv new file mode 100644 index 000000000..11f796f1c --- /dev/null +++ b/activitysim/estimation/test/test_larch_estimation/test_loc_school_location_SLSQP_loglike.csv @@ -0,0 +1,2 @@ +,loglike_prior,loglike_converge +0,-3150.9027927232128,-2472.5944704127669 diff --git a/activitysim/estimation/test/test_larch_estimation/test_loc_school_location_SLSQP_size_spec.csv b/activitysim/estimation/test/test_larch_estimation/test_loc_school_location_SLSQP_size_spec.csv new file mode 100644 index 000000000..569194ef5 --- /dev/null +++ b/activitysim/estimation/test/test_larch_estimation/test_loc_school_location_SLSQP_size_spec.csv @@ -0,0 +1,23 @@ +,segment,model_selector,TOTHH,RETEMPN,FPSEMPN,HEREMPN,OTHEMPN,AGREMPN,MWTEMPN,AGE0519,HSENROLL,COLLFTE,COLLPTE +0,work_low,workplace,0,0.12912912912912911,0.19319319319319317,0.38338338338338335,0.12012012012012011,0.01001001001001001,0.16416416416416416,0,0,0,0 +1,work_med,workplace,0,0.12012012012012012,0.19719719719719719,0.32532532532532532,0.13913913913913914,0.0080080080080080079,0.21021021021021019,0,0,0,0 +2,work_high,workplace,0,0.11,0.20699999999999999,0.28399999999999997,0.154,0.0060000000000000001,0.23899999999999999,0,0,0,0 +3,work_veryhigh,workplace,0,0.092999999999999999,0.27000000000000002,0.24099999999999999,0.14599999999999999,0.0040000000000000001,0.246,0,0,0,0 +4,university,school,0,0,0,0,0,0,0,0,0,0.99583037710619249,0.004169622893807531 +5,gradeschool,school,0,0,0,0,0,0,0,1,0,0,0 +6,highschool,school,0,0,0,0,0,0,0,0,1,0,0 +7,escort,non_mandatory,0,0.22500000000000001,0,0.14399999999999999,0,0,0,0.46500000000000002,0.16600000000000001,0,0 +8,shopping,non_mandatory,0,1,0,0,0,0,0,0,0,0,0 +9,eatout,non_mandatory,0,0.74199999999999999,0,0.25800000000000001,0,0,0,0,0,0,0 +10,othmaint,non_mandatory,0,0.48199999999999998,0,0.51800000000000002,0,0,0,0,0,0,0 +11,social,non_mandatory,0,0.52200000000000002,0,0.47799999999999998,0,0,0,0,0,0,0 +12,othdiscr,non_mandatory,0.25225225225225223,0.2122122122122122,0,0.2722722722722723,0.16516516516516516,0,0,0,0.098098098098098108,0,0 +13,atwork,atwork,0,0.74199999999999999,0,0.25800000000000001,0,0,0,0,0,0,0 +14,work,trip,0,0.16666666666666666,0.16666666666666666,0.16666666666666666,0.16666666666666666,0.16666666666666666,0.16666666666666666,0,0,0,0 +15,escort,trip,0.001,0.22500000000000001,0,0.14399999999999999,0,0,0,0.46400000000000002,0.16600000000000001,0,0 +16,shopping,trip,0.001,0.999,0,0,0,0,0,0,0,0,0 +17,eatout,trip,0,0.74199999999999999,0,0.25800000000000001,0,0,0,0,0,0,0 +18,othmaint,trip,0.001,0.48099999999999998,0,0.51800000000000002,0,0,0,0,0,0,0 +19,social,trip,0.001,0.52100000000000002,0,0.47799999999999998,0,0,0,0,0,0,0 +20,othdiscr,trip,0.25225225225225223,0.2122122122122122,0,0.2722722722722723,0.16516516516516516,0,0,0,0.098098098098098108,0,0 +21,univ,trip,0.00099900099900099922,0,0,0,0,0,0,0,0,0.59140859140859148,0.40759240759240761 diff --git a/activitysim/estimation/test/test_larch_estimation/test_loc_school_location_loglike.csv b/activitysim/estimation/test/test_larch_estimation/test_loc_school_location_loglike.csv index 645ce4977..2e9a9a9bb 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_loc_school_location_loglike.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_loc_school_location_loglike.csv @@ -1,2 +1,2 @@ ,loglike_prior,loglike_converge -0,-4070.349038545839,-4058.2217927321499 +0,-3150.9027927232128,-2472.12561268868057596 diff --git a/activitysim/estimation/test/test_larch_estimation/test_loc_school_location_size_spec.csv b/activitysim/estimation/test/test_larch_estimation/test_loc_school_location_size_spec.csv index 06a6f09b3..569194ef5 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_loc_school_location_size_spec.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_loc_school_location_size_spec.csv @@ -1,9 +1,9 @@ ,segment,model_selector,TOTHH,RETEMPN,FPSEMPN,HEREMPN,OTHEMPN,AGREMPN,MWTEMPN,AGE0519,HSENROLL,COLLFTE,COLLPTE -0,work_low,workplace,0,0.12912912912912916,0.19319319319319325,0.38338338338338335,0.12012012012012015,0.010010010010010012,0.1641641641641641,0,0,0,0 -1,work_med,workplace,0,0.12012012012012013,0.19719719719719711,0.32532532532532538,0.13913913913913917,0.0080080080080080097,0.21021021021021022,0,0,0,0 +0,work_low,workplace,0,0.12912912912912911,0.19319319319319317,0.38338338338338335,0.12012012012012011,0.01001001001001001,0.16416416416416416,0,0,0,0 +1,work_med,workplace,0,0.12012012012012012,0.19719719719719719,0.32532532532532532,0.13913913913913914,0.0080080080080080079,0.21021021021021019,0,0,0,0 2,work_high,workplace,0,0.11,0.20699999999999999,0.28399999999999997,0.154,0.0060000000000000001,0.23899999999999999,0,0,0,0 3,work_veryhigh,workplace,0,0.092999999999999999,0.27000000000000002,0.24099999999999999,0.14599999999999999,0.0040000000000000001,0.246,0,0,0,0 -4,university,school,0,0,0,0,0,0,0,0,0,0.66488586546020301,0.33511413453979705 +4,university,school,0,0,0,0,0,0,0,0,0,0.99583037710619249,0.004169622893807531 5,gradeschool,school,0,0,0,0,0,0,0,1,0,0,0 6,highschool,school,0,0,0,0,0,0,0,0,1,0,0 7,escort,non_mandatory,0,0.22500000000000001,0,0.14399999999999999,0,0,0,0.46500000000000002,0.16600000000000001,0,0 @@ -14,10 +14,10 @@ 12,othdiscr,non_mandatory,0.25225225225225223,0.2122122122122122,0,0.2722722722722723,0.16516516516516516,0,0,0,0.098098098098098108,0,0 13,atwork,atwork,0,0.74199999999999999,0,0.25800000000000001,0,0,0,0,0,0,0 14,work,trip,0,0.16666666666666666,0.16666666666666666,0.16666666666666666,0.16666666666666666,0.16666666666666666,0.16666666666666666,0,0,0,0 -15,escort,trip,0.0010000000000000002,0.22500000000000003,0,0.14400000000000002,0,0,0,0.46399999999999997,0.16600000000000004,0,0 +15,escort,trip,0.001,0.22500000000000001,0,0.14399999999999999,0,0,0,0.46400000000000002,0.16600000000000001,0,0 16,shopping,trip,0.001,0.999,0,0,0,0,0,0,0,0,0 17,eatout,trip,0,0.74199999999999999,0,0.25800000000000001,0,0,0,0,0,0,0 18,othmaint,trip,0.001,0.48099999999999998,0,0.51800000000000002,0,0,0,0,0,0,0 19,social,trip,0.001,0.52100000000000002,0,0.47799999999999998,0,0,0,0,0,0,0 20,othdiscr,trip,0.25225225225225223,0.2122122122122122,0,0.2722722722722723,0.16516516516516516,0,0,0,0.098098098098098108,0,0 -21,univ,trip,0.000999000999000999,0,0,0,0,0,0,0,0,0.59140859140859148,0.4075924075924075 +21,univ,trip,0.00099900099900099922,0,0,0,0,0,0,0,0,0.59140859140859148,0.40759240759240761 diff --git a/activitysim/estimation/test/test_larch_estimation/test_loc_trip_destination_BHHH_loglike.csv b/activitysim/estimation/test/test_larch_estimation/test_loc_trip_destination_BHHH_loglike.csv new file mode 100644 index 000000000..83144fe12 --- /dev/null +++ b/activitysim/estimation/test/test_larch_estimation/test_loc_trip_destination_BHHH_loglike.csv @@ -0,0 +1,2 @@ +,loglike_prior,loglike_converge +0,-21855.73573427651,-8695.4742752868151 diff --git a/activitysim/estimation/test/test_larch_estimation/test_loc_trip_destination_BHHH_size_spec.csv b/activitysim/estimation/test/test_larch_estimation/test_loc_trip_destination_BHHH_size_spec.csv new file mode 100644 index 000000000..ebfe3d5b7 --- /dev/null +++ b/activitysim/estimation/test/test_larch_estimation/test_loc_trip_destination_BHHH_size_spec.csv @@ -0,0 +1,23 @@ +,segment,model_selector,TOTHH,RETEMPN,FPSEMPN,HEREMPN,OTHEMPN,AGREMPN,MWTEMPN,AGE0519,HSENROLL,COLLFTE,COLLPTE +0,work_low,workplace,0,0.12912912912912911,0.19319319319319317,0.38338338338338335,0.12012012012012011,0.01001001001001001,0.16416416416416416,0,0,0,0 +1,work_med,workplace,0,0.12012012012012012,0.19719719719719719,0.32532532532532532,0.13913913913913914,0.0080080080080080079,0.21021021021021019,0,0,0,0 +2,work_high,workplace,0,0.11,0.20699999999999999,0.28399999999999997,0.154,0.0060000000000000001,0.23899999999999999,0,0,0,0 +3,work_veryhigh,workplace,0,0.092999999999999999,0.27000000000000002,0.24099999999999999,0.14599999999999999,0.0040000000000000001,0.246,0,0,0,0 +4,university,school,0,0,0,0,0,0,0,0,0,0.59199999999999997,0.40799999999999997 +5,gradeschool,school,0,0,0,0,0,0,0,1,0,0,0 +6,highschool,school,0,0,0,0,0,0,0,0,1,0,0 +7,escort,non_mandatory,0,0.22500000000000001,0,0.14399999999999999,0,0,0,0.46500000000000002,0.16600000000000001,0,0 +8,shopping,non_mandatory,0,1,0,0,0,0,0,0,0,0,0 +9,eatout,non_mandatory,0,0.74199999999999999,0,0.25800000000000001,0,0,0,0,0,0,0 +10,othmaint,non_mandatory,0,0.48199999999999998,0,0.51800000000000002,0,0,0,0,0,0,0 +11,social,non_mandatory,0,0.52200000000000002,0,0.47799999999999998,0,0,0,0,0,0,0 +12,othdiscr,non_mandatory,0.25225225225225223,0.2122122122122122,0,0.2722722722722723,0.16516516516516516,0,0,0,0.098098098098098108,0,0 +13,atwork,atwork,0,0.74199999999999999,0,0.25800000000000001,0,0,0,0,0,0,0 +14,work,trip,0,0.50988404412746136,2.8830314727604896e-146,0,1.2350245131417982e-12,0.48708399966352267,0.0030319562077810091,0,0,0,0 +15,escort,trip,0.99999999999752021,4.6306836616861319e-13,0,1.8807680387063182e-13,0,0,0,1.4480163162588933e-12,3.8063890886682389e-13,0,0 +16,shopping,trip,0.99999999865706501,1.3429349752304603e-09,0,0,0,0,0,0,0,0,0 +17,eatout,trip,0,1,0,0,0,0,0,0,0,0,0 +18,othmaint,trip,0.99999999998646205,9.0646768310272159e-12,0,4.4735228850332918e-12,0,0,0,0,0,0,0 +19,social,trip,0.99999999999998024,1.5851156966866637e-14,0,3.8443449490946144e-15,0,0,0,0,0,0,0 +20,othdiscr,trip,0.96881871015685461,0.031181191433995798,0,0,0,0,0,0,9.8409149668972833e-08,0,0 +21,univ,trip,1,0,0,0,0,0,0,0,0,4.8326974397473536e-21,0 diff --git a/activitysim/estimation/test/test_larch_estimation/test_loc_trip_destination_SLSQP_loglike.csv b/activitysim/estimation/test/test_larch_estimation/test_loc_trip_destination_SLSQP_loglike.csv new file mode 100644 index 000000000..a2e43ac4f --- /dev/null +++ b/activitysim/estimation/test/test_larch_estimation/test_loc_trip_destination_SLSQP_loglike.csv @@ -0,0 +1,2 @@ +,loglike_prior,loglike_converge +0,-21855.73573427651,-8952.9587499637983 diff --git a/activitysim/estimation/test/test_larch_estimation/test_loc_trip_destination_size_spec.csv b/activitysim/estimation/test/test_larch_estimation/test_loc_trip_destination_SLSQP_size_spec.csv similarity index 63% rename from activitysim/estimation/test/test_larch_estimation/test_loc_trip_destination_size_spec.csv rename to activitysim/estimation/test/test_larch_estimation/test_loc_trip_destination_SLSQP_size_spec.csv index 04abb0cc9..e3f4e0538 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_loc_trip_destination_size_spec.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_loc_trip_destination_SLSQP_size_spec.csv @@ -13,11 +13,11 @@ 11,social,non_mandatory,0,0.52200000000000002,0,0.47799999999999998,0,0,0,0,0,0,0 12,othdiscr,non_mandatory,0.25225225225225223,0.2122122122122122,0,0.2722722722722723,0.16516516516516516,0,0,0,0.098098098098098108,0,0 13,atwork,atwork,0,0.74199999999999999,0,0.25800000000000001,0,0,0,0,0,0,0 -14,work,trip,0,0.24014195523694865,0.00059525239425258316,0.0025343890988937991,0.0013168081587181715,0.75481634271693376,0.00059525239425293412,0,0,0,0 -15,escort,trip,0.0025746521059848222,0.31583599496207332,0,0.0063819245118687607,0,0,0,0.56721029531390887,0.10799713310616434,0,0 -16,shopping,trip,0.28745939613255439,0.71254060386744567,0,0,0,0,0,0,0,0,0 -17,eatout,trip,0,0.98157984232483642,0,0.018420157675163609,0,0,0,0,0,0,0 -18,othmaint,trip,0.066897386356299673,0.76728057159935903,0,0.16582204204434134,0,0,0,0,0,0,0 -19,social,trip,0.028735588735319624,0.90003600813919549,0,0.071228403125484938,0,0,0,0,0,0,0 -20,othdiscr,trip,0.27326163859230651,0.71190812297572337,0,0.0026878884184924783,0.0094544615949851765,0,0,0,0.0026878884184924428,0,0 -21,univ,trip,0.16785552148845903,0,0,0,0,0,0,0,0,0.41607223925575049,0.41607223925579045 +14,work,trip,0,0.74787786056587513,0.0018538038747582422,0.001853803876100025,0.0018538038747592663,0.24470692393187074,0.0018538038766366914,0,0,0,0 +15,escort,trip,4.4398622176416287e-05,0.0018145828132440462,0,0.00025862750482263144,0,0,0,0.97914326797093931,0.018739123088817596,0,0 +16,shopping,trip,0.28745937648450037,0.71254062351549963,0,0,0,0,0,0,0,0,0 +17,eatout,trip,0,0.99667048634136579,0,0.0033295136586341872,0,0,0,0,0,0,0 +18,othmaint,trip,0.16785550808846833,0.41607224595773862,0,0.41607224595379305,0,0,0,0,0,0,0 +19,social,trip,0.00044482261527767418,0.98033336959213913,0,0.019221807792583361,0,0,0,0,0,0,0 +20,othdiscr,trip,0.9406951398181691,0.022347626204726488,0,0.0092529765597407446,0.009252976559785164,0,0,0,0.018451280857578346,0,0 +21,univ,trip,0.16785550808973149,0,0,0,0,0,0,0,0,0.41607224595513576,0.41607224595513281 diff --git a/activitysim/estimation/test/test_larch_estimation/test_loc_trip_destination_loglike.csv b/activitysim/estimation/test/test_larch_estimation/test_loc_trip_destination_loglike.csv deleted file mode 100644 index 7bed7a2ee..000000000 --- a/activitysim/estimation/test/test_larch_estimation/test_loc_trip_destination_loglike.csv +++ /dev/null @@ -1,2 +0,0 @@ -,loglike_prior,loglike_converge -0,-27955.701284580879,-12569.486100216422 diff --git a/activitysim/estimation/test/test_larch_estimation/test_loc_workplace_location_SLSQP_loglike.csv b/activitysim/estimation/test/test_larch_estimation/test_loc_workplace_location_SLSQP_loglike.csv new file mode 100644 index 000000000..4068e18c5 --- /dev/null +++ b/activitysim/estimation/test/test_larch_estimation/test_loc_workplace_location_SLSQP_loglike.csv @@ -0,0 +1,2 @@ +,loglike_prior,loglike_converge +0,-8694.1663931267794,-7268.5499545875718 diff --git a/activitysim/estimation/test/test_larch_estimation/test_loc_workplace_location_size_spec.csv b/activitysim/estimation/test/test_larch_estimation/test_loc_workplace_location_SLSQP_size_spec.csv similarity index 72% rename from activitysim/estimation/test/test_larch_estimation/test_loc_workplace_location_size_spec.csv rename to activitysim/estimation/test/test_larch_estimation/test_loc_workplace_location_SLSQP_size_spec.csv index b568bafc7..2ef299a31 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_loc_workplace_location_size_spec.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_loc_workplace_location_SLSQP_size_spec.csv @@ -1,8 +1,8 @@ ,segment,model_selector,TOTHH,RETEMPN,FPSEMPN,HEREMPN,OTHEMPN,AGREMPN,MWTEMPN,AGE0519,HSENROLL,COLLFTE,COLLPTE -0,work_low,workplace,0,0.04331096924066484,0.17606247084331519,0.37453642466033488,0.16935644669165648,0.000968861288590913,0.23576482727543777,0,0,0,0 -1,work_med,workplace,0,0.11999183383359351,0.14366373395357587,0.25125860903337882,0.079402445282216183,0.0024785834941433989,0.40320479440309209,0,0,0,0 -2,work_high,workplace,0,0.15790294154771911,0.19045576988955706,0.29641460514585227,0.1682066889662423,0.0063903077215986892,0.18062968672903063,0,0,0,0 -3,work_veryhigh,workplace,0,0.062641019242734242,0.11667678718376452,0.13342796655219047,0.056368476597385232,0.51025642529636983,0.12062932512755588,0,0,0,0 +0,work_low,workplace,0,0.81009695995589714,0.015566120986122242,0.038205865646079792,0.059310593251792124,0.061254339173986733,0.015566120986122242,0,0,0,0 +1,work_med,workplace,0,0.8281013406144393,0.017105484027381986,0.031082288899413148,0.052366292140338909,0.054239110291044855,0.017105484027382,0,0,0,0 +2,work_high,workplace,0,0.83264652845133025,0.018762949054789986,0.021130105260407248,0.064579726133974238,0.044117742044708114,0.018762949054789986,0,0,0,0 +3,work_veryhigh,workplace,0,0.85877445882802128,0.022889127413081023,0.032513950668635973,0.027093642194477335,0.035839693482703265,0.022889127413081023,0,0,0,0 4,university,school,0,0,0,0,0,0,0,0,0,0.59199999999999997,0.40799999999999997 5,gradeschool,school,0,0,0,0,0,0,0,1,0,0,0 6,highschool,school,0,0,0,0,0,0,0,0,1,0,0 diff --git a/activitysim/estimation/test/test_larch_estimation/test_loc_workplace_location_loglike.csv b/activitysim/estimation/test/test_larch_estimation/test_loc_workplace_location_loglike.csv deleted file mode 100644 index 71e9b13b1..000000000 --- a/activitysim/estimation/test/test_larch_estimation/test_loc_workplace_location_loglike.csv +++ /dev/null @@ -1,2 +0,0 @@ -,loglike_prior,loglike_converge -0,-13535.154991016063,-13520.930381371694 diff --git a/activitysim/estimation/test/test_larch_estimation/test_location_model_atwork_subtour_destination_BHHH_None_.csv b/activitysim/estimation/test/test_larch_estimation/test_location_model_atwork_subtour_destination_BHHH_None_.csv index f40a770d1..69549a887 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_location_model_atwork_subtour_destination_BHHH_None_.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_location_model_atwork_subtour_destination_BHHH_None_.csv @@ -1,11 +1,11 @@ -,value,initvalue,nullvalue,minimum,maximum,best -atwork_HEREMPN,-1.7073243906685389,-1.3547956940605197,0,-6,6,-1.7073243906685389 -atwork_RETEMPN,-0.29840603581475661,-0.29840603581475661,0,-0.29840603581475661,-0.29840603581475661,-0.29840603581475661 -coef_distance_piecewise_linear_for_15_plus_miles,-0.20450000000000218,-0.20449999999999999,0,-25,25,-0.20450000000000218 -coef_distance_piecewise_linear_from_0_to_1_miles,-1.3641542578406347,-0.79259999999999997,0,-25,25,-1.3641542578406347 -coef_distance_piecewise_linear_from_1_to_2_miles,-0.73953227083074224,-0.79259999999999997,0,-25,25,-0.73953227083074224 -coef_distance_piecewise_linear_from_2_to_5_miles,-0.50452550250971084,-0.51970000000000005,0,-25,25,-0.50452550250971084 -coef_distance_piecewise_linear_from_5_to_15_miles,-0.073402957716087874,-0.20449999999999999,0,-25,25,-0.073402957716087874 -coef_mode_choice_logsum,0.50327067752307442,0.51359999999999995,0,-25,25,0.50327067752307442 -coef_no_attractions_atwork_size_variable_is_0,-999,-999,0,-999,-999,-999 -coef_sample_of_alternatives_correction_factor,1,1,0,1,1,1 +param_name,value,best,initvalue,nullvalue +atwork_HEREMPN,-3.389364816281855,-3.389364816281855,-1.3547956943511963,0 +atwork_RETEMPN,-0.29840603470802307,-0.29840603470802307,-0.29840603470802307,0 +coef_distance_piecewise_linear_for_15_plus_miles,-0.20450000464916254,-0.20450000464916254,-0.20450000464916229,0 +coef_distance_piecewise_linear_from_0_to_1_miles,-0.40672843393342367,-0.40672843393342367,-0.79259997606277466,0 +coef_distance_piecewise_linear_from_1_to_2_miles,0.46709869805144771,0.46709869805144771,-0.79259997606277466,0 +coef_distance_piecewise_linear_from_2_to_5_miles,0.11788881847828234,0.11788881847828234,-0.51969999074935913,0 +coef_distance_piecewise_linear_from_5_to_15_miles,0.25609050297480096,0.25609050297480096,-0.20450000464916229,0 +coef_mode_choice_logsum,0.73082605315228077,0.73082605315228077,0.51359999179840088,0 +coef_no_attractions_atwork_size_variable_is_0,-999,-999,-999,0 +coef_sample_of_alternatives_correction_factor,1,1,1,0 diff --git a/activitysim/estimation/test/test_larch_estimation/test_location_model_non_mandatory_tour_destination_SLSQP_None_.csv b/activitysim/estimation/test/test_larch_estimation/test_location_model_non_mandatory_tour_destination_SLSQP_None_.csv index e771c163a..20b622582 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_location_model_non_mandatory_tour_destination_SLSQP_None_.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_location_model_non_mandatory_tour_destination_SLSQP_None_.csv @@ -1,36 +1,36 @@ -,value,initvalue,nullvalue,minimum,maximum,best --999,-999,-999,-999,-999,-999,-999 -0,0,0,0,0,0,0 -1,1,1,1,1,1,1 -coef_eatout_dist_0_2,-0.84467402735490316,-0.56089999999999995,0,-25,25,-0.84467402735490316 -coef_eatout_dist_2_5,-0.19454520781373841,-0.31919999999999998,0,-25,25,-0.19454520781373841 -coef_eatout_dist_5_plus,-0.24629159495698957,-0.12379999999999999,0,-25,25,-0.24629159495698957 -coef_escort_dist_0_2,0.2228884413970586,-0.14990000000000001,0,-25,25,0.2228884413970586 -coef_escort_dist_2_5,-0.81521338400578147,-0.86709999999999998,0,-25,25,-0.81521338400578147 -coef_escort_dist_5_plus,-0.2563656478267789,-0.2137,0,-25,25,-0.2563656478267789 -coef_mode_logsum,0.65403821794149997,0.67549999999999999,0,-25,25,0.65403821794149997 -coef_othdiscr_dist_0_2,-0.18332164122229277,-0.16769999999999999,0,-25,25,-0.18332164122229277 -coef_othdiscr_dist_2_5,-0.57243431566525749,-0.4955,0,-25,25,-0.57243431566525749 -coef_othdiscr_dist_5_plus,0.022109773636770347,-0.1193,0,-25,25,0.022109773636770347 -coef_othmaint_dist_2_5,-0.56157171580357979,-0.60550000000000004,0,-25,25,-0.56157171580357979 -coef_othmaint_dist_5_plus,-0.22835432716850948,-0.10929999999999999,0,-25,25,-0.22835432716850948 -coef_shopping_dist_2_5,-0.62326413831589389,-0.5655,0,-25,25,-0.62326413831589389 -coef_shopping_dist_5_plus,-0.15909882569148343,-0.1832,0,-25,25,-0.15909882569148343 -coef_social_dist_2_5,-0.22738363386509225,-0.34849999999999998,0,-25,25,-0.22738363386509225 -coef_social_dist_5_plus,-0.17253037782714531,-0.13059999999999999,0,-25,25,-0.17253037782714531 -eatout_HEREMPN,-0.93175594508470749,-1.3547956940605197,0,-6,6,-0.93175594508470749 -eatout_RETEMPN,-0.29840603581475661,-0.29840603581475661,0,-0.29840603581475661,-0.29840603581475661,-0.29840603581475661 -escort_AGE0519,-1.1709029084521012,-0.7657178733947807,0,-6,6,-1.1709029084521012 -escort_HEREMPN,-2.4523610869729757,-1.9379419794061366,0,-6,6,-2.4523610869729757 -escort_HSENROLL,-3.3024337875479479,-1.7957674906255938,0,-6,6,-3.3024337875479479 -escort_RETEMPN,-1.4916548767777169,-1.4916548767777169,0,-1.4916548767777169,-1.4916548767777169,-1.4916548767777169 -othdiscr_HEREMPN,-1.6192946896579288,-1.3019532126861397,0,-6,6,-1.6192946896579288 -othdiscr_HSENROLL,-2.8175790455412613,-2.322787800311565,0,-6,6,-2.8175790455412613 -othdiscr_OTHEMPN,-2.264214574744007,-1.8018098050815563,0,-6,6,-2.264214574744007 -othdiscr_RETEMPN,-1.4536083464363203,-1.5511690043101247,0,-6,6,-1.4536083464363203 -othdiscr_TOTHH,-1.3783261914707137,-1.3783261914707137,0,-1.3783261914707137,-1.3783261914707137,-1.3783261914707137 -othmaint_HEREMPN,-0.42083070691744962,-0.65778003672265395,0,-6,6,-0.42083070691744962 -othmaint_RETEMPN,-0.72981116493153675,-0.72981116493153675,0,-0.72981116493153675,-0.72981116493153675,-0.72981116493153675 -shopping_RETEMPN,0,0,0,0,0,0 -social_HEREMPN,-0.31321849637618082,-0.73814454649068106,0,-6,6,-0.31321849637618082 -social_RETEMPN,-0.65008769109949827,-0.65008769109949827,0,-0.65008769109949827,-0.65008769109949827,-0.65008769109949827 +param_name,value,best,initvalue,nullvalue +-999,-999,-999,-999,0 +0,0,0,0,0 +1,1,1,1,0 +coef_eatout_dist_0_2,-0.36241753757283562,-0.36241753757283562,-0.56089997291564941,0 +coef_eatout_dist_2_5,0.1455948784794848,0.1455948784794848,-0.31920000910758972,0 +coef_eatout_dist_5_plus,-0.10347949759758775,-0.10347949759758775,-0.12380000203847885,0 +coef_escort_dist_0_2,0.37311835505986723,0.37311835505986723,-0.14990000426769257,0 +coef_escort_dist_2_5,0.021780514441237811,0.021780514441237811,-0.86710000038146973,0 +coef_escort_dist_5_plus,-0.11719861112519546,-0.11719861112519546,-0.21369999647140503,0 +coef_mode_logsum,0.58058639629827868,0.58058639629827868,0.67549997568130493,0 +coef_othdiscr_dist_0_2,-0.034089264034826726,-0.034089264034826726,-0.16769999265670776,0 +coef_othdiscr_dist_2_5,-0.064582241662395776,-0.064582241662395776,-0.49549999833106995,0 +coef_othdiscr_dist_5_plus,0.12360016041678727,0.12360016041678727,-0.1193000003695488,0 +coef_othmaint_dist_2_5,0.047194485653217981,0.047194485653217981,-0.6054999828338623,0 +coef_othmaint_dist_5_plus,-0.070139812280223396,-0.070139812280223396,-0.10930000245571136,0 +coef_shopping_dist_2_5,-0.084141591614817768,-0.084141591614817768,-0.56550002098083496,0 +coef_shopping_dist_5_plus,0.023925641427879701,0.023925641427879701,-0.18320000171661377,0 +coef_social_dist_2_5,0.15872711881616419,0.15872711881616419,-0.34850001335144043,0 +coef_social_dist_5_plus,-0.056983193388194325,-0.056983193388194325,-0.13060000538825989,0 +eatout_HEREMPN,-2.5766963293863645,-2.5766963293863645,-1.3547956943511963,0 +eatout_RETEMPN,-0.29840603470802307,-0.29840603470802307,-0.29840603470802307,0 +escort_AGE0519,-1.504395034914503,-1.504395034914503,-0.76571786403656006,0 +escort_HEREMPN,-3.2913818539226063,-3.2913818539226063,-1.9379420280456543,0 +escort_HSENROLL,-6,-6,-1.7957675457000732,0 +escort_RETEMPN,-1.4916548728942871,-1.4916548728942871,-1.4916548728942871,0 +othdiscr_HEREMPN,-4.4871212668473426,-4.4871212668473426,-1.3019531965255737,0 +othdiscr_HSENROLL,-4.6282281748496779,-4.6282281748496779,-2.3227877616882324,0 +othdiscr_OTHEMPN,-2.5914769992848368,-2.5914769992848368,-1.8018097877502441,0 +othdiscr_RETEMPN,-2.0252368499435924,-2.0252368499435924,-1.5511690378189087,0 +othdiscr_TOTHH,-1.3783261775970459,-1.3783261775970459,-1.3783261775970459,0 +othmaint_HEREMPN,-3.3345464979357597,-3.3345464979357597,-0.65778005123138428,0 +othmaint_RETEMPN,-0.72981119155883789,-0.72981119155883789,-0.72981119155883789,0 +shopping_RETEMPN,0,0,0,0 +social_HEREMPN,-3.1468133266863965,-3.1468133266863965,-0.73814451694488525,0 +social_RETEMPN,-0.65008771419525146,-0.65008771419525146,-0.65008771419525146,0 diff --git a/activitysim/estimation/test/test_larch_estimation/test_location_model_school_location_BHHH_None_.csv b/activitysim/estimation/test/test_larch_estimation/test_location_model_school_location_BHHH_None_.csv new file mode 100644 index 000000000..33b657c2c --- /dev/null +++ b/activitysim/estimation/test/test_larch_estimation/test_location_model_school_location_BHHH_None_.csv @@ -0,0 +1,21 @@ +param_name,value,best,initvalue,nullvalue +-999,-999,-999,-999,0 +1,1,1,1,0 +coef_grade_dist_0_1,0.080031235198373782,0.080031235198373782,-1.6418999433517456,0 +coef_grade_dist_15_up,-0.046010368210409304,-0.046010368210409304,-0.046000000089406967,0 +coef_grade_dist_5_15,0.011795679963699891,0.011795679963699891,-0.20309999585151672,0 +coef_high_dist_0_1,-0.48267138976026713,-0.48267138976026713,-0.95230001211166382,0 +coef_high_dist_15_up,-0.18818654818448871,-0.18818654818448871,-0.18819999694824219,0 +coef_high_dist_5_15,-0.12203943917498229,-0.12203943917498229,-0.19300000369548798,0 +coef_high_grade_dist_1_2,-0.2740077638163641,-0.2740077638163641,-0.56999999284744263,0 +coef_high_grade_dist_2_5,-0.12717991662132286,-0.12717991662132286,-0.56999999284744263,0 +coef_mode_logsum,0.28675535602711366,0.28675535602711366,0.53579998016357422,0 +coef_univ_dist_0_1,-0.20246864835878667,-0.20246864835878667,-3.2451000213623047,0 +coef_univ_dist_15_up,-0.072999830047635036,-0.072999830047635036,-0.072999998927116394,0 +coef_univ_dist_1_2,-0.50654663083945994,-0.50654663083945994,-2.7011001110076904,0 +coef_univ_dist_2_5,0.095856729554638809,0.095856729554638809,-0.57069998979568481,0 +coef_univ_dist_5_15,-0.1412133832985831,-0.1412133832985831,-0.50019997358322144,0 +gradeschool_AGE0519,0,0,0,0 +highschool_HSENROLL,0,0,0,0 +university_COLLFTE,-0.52424865961074829,-0.52424865961074829,-0.52424865961074829,0 +university_COLLPTE,-1275009.279056468,-1275009.279056468,-0.89648813009262085,0 diff --git a/activitysim/estimation/test/test_larch_estimation/test_location_model_school_location_SLSQP_None_.csv b/activitysim/estimation/test/test_larch_estimation/test_location_model_school_location_SLSQP_None_.csv index a8d3375ab..1f4a5bf90 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_location_model_school_location_SLSQP_None_.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_location_model_school_location_SLSQP_None_.csv @@ -1,21 +1,21 @@ -,value,initvalue,nullvalue,minimum,maximum,best --999,-999,-999,-999,-999,-999,-999 -1,1,1,1,1,1,1 -coef_grade_dist_0_1,-1.8247870973053,-1.6418999999999999,0,-25,25,-1.8247870973053 -coef_grade_dist_15_up,-0.045999999999999999,-0.045999999999999999,0,-25,25,-0.045999999999999999 -coef_grade_dist_5_15,-0.14366307042924978,-0.2031,0,-25,25,-0.14366307042924978 -coef_high_dist_0_1,-2.1639997502226276,-0.95230000000000004,0,-25,25,-2.1639997502226276 -coef_high_dist_15_up,-0.18820000000000001,-0.18820000000000001,0,-25,25,-0.18820000000000001 -coef_high_dist_5_15,-0.10033338505701977,-0.193,0,-25,25,-0.10033338505701977 -coef_high_grade_dist_1_2,-0.74768688779537662,-0.56999999999999995,0,-25,25,-0.74768688779537662 -coef_high_grade_dist_2_5,-0.66638573965332526,-0.56999999999999995,0,-25,25,-0.66638573965332526 -coef_mode_logsum,0.37504471661044059,0.53580000000000005,0,-25,25,0.37504471661044059 -coef_univ_dist_0_1,-3.3138919948169607,-3.2450999999999999,0,-25,25,-3.3138919948169607 -coef_univ_dist_15_up,-0.072999999999999995,-0.072999999999999995,0,-25,25,-0.072999999999999995 -coef_univ_dist_1_2,-2.8752075620640434,-2.7010999999999998,0,-25,25,-2.8752075620640434 -coef_univ_dist_2_5,-0.45544418705038636,-0.57069999999999999,0,-25,25,-0.45544418705038636 -coef_univ_dist_5_15,-0.57189713873239967,-0.50019999999999998,0,-25,25,-0.57189713873239967 -gradeschool_AGE0519,0,0,0,0,0,0 -highschool_HSENROLL,0,0,0,0,0,0 -university_COLLFTE,-0.52424864409813143,-0.52424864409813143,0,-0.52424864409813143,-0.52424864409813143,-0.52424864409813143 -university_COLLPTE,-1.2091557399547264,-0.89648810457797545,0,-6,6,-1.2091557399547264 +param_name,value,best,initvalue,nullvalue +-999,-999,-999,-999,0 +1,1,1,1,0 +coef_grade_dist_0_1,0.097116326549615037,0.097116329571923371,-1.6418999433517456,0 +coef_grade_dist_15_up,-0.046000000089406967,-0.046000000089406967,-0.046000000089406967,0 +coef_grade_dist_5_15,0.012514539653739084,0.012514539708327558,-0.20309999585151672,0 +coef_high_dist_0_1,-0.4391430660668546,-0.43914306516185797,-0.95230001211166382,0 +coef_high_dist_15_up,-0.18819999694824219,-0.18819999694824219,-0.18819999694824219,0 +coef_high_dist_5_15,-0.12223669864939674,-0.12223669850105187,-0.19300000369548798,0 +coef_high_grade_dist_1_2,-0.27721668286846185,-0.27721668361053109,-0.56999999284744263,0 +coef_high_grade_dist_2_5,-0.12625067319470287,-0.12625067314690649,-0.56999999284744263,0 +coef_mode_logsum,0.28931317404209661,0.28931317414746177,0.53579998016357422,0 +coef_univ_dist_0_1,-0.34044181122123379,-0.34044180684505398,-3.2451000213623047,0 +coef_univ_dist_15_up,-0.072999998927116394,-0.072999998927116394,-0.072999998927116394,0 +coef_univ_dist_1_2,-0.42252956674554115,-0.42252956729334301,-2.7011001110076904,0 +coef_univ_dist_2_5,0.092094672169464362,0.092094672140662429,-0.57069998979568481,0 +coef_univ_dist_5_15,-0.14137251312653148,-0.14137251329149328,-0.50019997358322144,0 +gradeschool_AGE0519,0,0,0,0 +highschool_HSENROLL,0,0,0,0 +university_COLLFTE,-0.52424865961074829,-0.52424865961074829,-0.52424865961074829,0 +university_COLLPTE,-6,-6,-0.89648813009262085,0 diff --git a/activitysim/estimation/test/test_larch_estimation/test_location_model_trip_destination_BHHH_None_.csv b/activitysim/estimation/test/test_larch_estimation/test_location_model_trip_destination_BHHH_None_.csv new file mode 100644 index 000000000..6c9c6beb2 --- /dev/null +++ b/activitysim/estimation/test/test_larch_estimation/test_location_model_trip_destination_BHHH_None_.csv @@ -0,0 +1,48 @@ +param_name,value,best,initvalue,nullvalue +coef_UNAVAILABLE,-999,-999,-999,0 +coef_distance_joint,-0.30113542071627925,-0.30113542071627925,-0.12380000203847885,0 +coef_mode_choice_logsum,0.082682969035499751,0.082682969035499751,1.8209999799728394,0 +coef_one,1,1,1,0 +coef_prox_dest_outbound_work,0,0,0,0 +coef_prox_home_inbound_work,-0.42511545535361761,-0.42511545535361761,-0.15000000596046448,0 +coef_prox_home_outbound_work,-0.015586316153796702,-0.015586316153796702,-0.37999999523162842,0 +coef_util_distance_atwork,-0.12233412535963523,-0.12233412535963523,-0.12233459949493408,0 +coef_util_distance_eatout,-0.31527860777732059,-0.31527860777732059,-0.10289999842643738,0 +coef_util_distance_escort,-0.20896432333181236,-0.20896432333181236,-0.14910000562667847,0 +coef_util_distance_othdiscr,-0.32948686834710317,-0.32948686834710317,-0.12617222964763641,0 +coef_util_distance_othmaint,-0.189836518023934,-0.189836518023934,-0.096199996769428253,0 +coef_util_distance_school,-0.10560055139570937,-0.10560055139570937,-0.10559999942779541,0 +coef_util_distance_shopping,-0.31439120387739444,-0.31439120387739444,-0.11919999867677689,0 +coef_util_distance_social,-0.21252031607377456,-0.21252031607377456,-0.13289999961853027,0 +coef_util_distance_univ,-0.16366566463671706,-0.16366566463671706,-0.061299998313188553,0 +coef_util_distance_work_inbound,-0.43284610617518143,-0.43284610617518143,0.14781327545642853,0 +coef_util_distance_work_outbound,-0.15694162700147077,-0.15694162700147077,-0.049725916236639023,0 +eatout_HEREMPN,-735.35391763180496,-735.35391763180496,-1.3547956943511963,0 +eatout_RETEMPN,-0.29840603470802307,-0.29840603470802307,-0.29840603470802307,0 +escort_AGE0519,-34.146330319047635,-34.146330319047635,-0.76787072420120239,0 +escort_HEREMPN,-36.185934740550735,-36.185934740550735,-1.9379420280456543,0 +escort_HSENROLL,-35.482441440764148,-35.482441440764148,-1.7957675457000732,0 +escort_RETEMPN,-35.28779133946658,-35.28779133946658,-1.4916548728942871,0 +escort_TOTHH,-6.9077553749084473,-6.9077553749084473,-6.9077553749084473,0 +othdiscr_HEREMPN,-1407.1767066933987,-1407.1767066933987,-1.3019531965255737,0 +othdiscr_HSENROLL,-16.410343601026089,-16.410343601026089,-2.3227877616882324,0 +othdiscr_OTHEMPN,-18880.507669912509,-18880.507669912509,-1.8018097877502441,0 +othdiscr_RETEMPN,-4.8145914198400339,-4.8145914198400339,-1.5511690378189087,0 +othdiscr_TOTHH,-1.3783261775970459,-1.3783261775970459,-1.3783261775970459,0 +othmaint_HEREMPN,-33.024962428999153,-33.024962428999153,-0.65778005123138428,0 +othmaint_RETEMPN,-32.319889481391705,-32.319889481391705,-0.73188799619674683,0 +othmaint_TOTHH,-6.9077553749084473,-6.9077553749084473,-6.9077553749084473,0 +shopping_RETEMPN,-23.892728970934463,-23.892728970934463,-0.0010005002841353416,0 +shopping_TOTHH,-6.9077553749084473,-6.9077553749084473,-6.9077553749084473,0 +social_HEREMPN,-40.084022821895907,-40.084022821895907,-0.73814451694488525,0 +social_RETEMPN,-38.668703835173424,-38.668703835173424,-0.65200525522232056,0 +social_TOTHH,-6.9077553749084473,-6.9077553749084473,-6.9077553749084473,0 +univ_COLLFTE,-52.916360377104091,-52.916360377104091,-0.52424865961074829,0 +univ_COLLPTE,-19661.749288729949,-19661.749288729949,-0.89648813009262085,0 +univ_TOTHH,-6.9077553749084473,-6.9077553749084473,-6.9077553749084473,0 +work_AGREMPN,-0.045747060225834933,-0.045747060225834933,0,0 +work_FPSEMPN,-485.71888319359556,-485.71888319359556,0,0 +work_HEREMPN,-138.10600027993303,-138.10600027993303,0,0 +work_MWTEMPN,-5.1249743665982441,-5.1249743665982441,0,0 +work_OTHEMPN,-24.742530479368806,-24.742530479368806,0,0 +work_RETEMPN,0,0,0,0 diff --git a/activitysim/estimation/test/test_larch_estimation/test_location_model_trip_destination_SLSQP_0_12_.csv b/activitysim/estimation/test/test_larch_estimation/test_location_model_trip_destination_SLSQP_0_12_.csv deleted file mode 100644 index abe98d47d..000000000 --- a/activitysim/estimation/test/test_larch_estimation/test_location_model_trip_destination_SLSQP_0_12_.csv +++ /dev/null @@ -1,48 +0,0 @@ -,value,initvalue,nullvalue,minimum,maximum,best -coef_UNAVAILABLE,-999,-999,0,-999,-999,-999 -coef_distance_joint,-0.37640163363394014,-0.12379999999999999,0,-25,25,-0.37640163363394014 -coef_mode_choice_logsum,0.16302637352162752,1.821,0,-25,25,0.16302637352162752 -coef_one,1,1,0,1,1,1 -coef_prox_dest_outbound_work,-0.59976096803081336,-0.26000000000000001,0,-25,25,-0.59976096803081336 -coef_prox_home_inbound_work,-0.17411187178992643,-0.14999999999999999,0,-25,25,-0.17411187178992643 -coef_prox_home_outbound_work,-0.76295690223363544,-0.38,0,-25,25,-0.76295690223363544 -coef_util_distance_atwork,-0.122334597,-0.122334597,0,-25,25,-0.122334597 -coef_util_distance_eatout,-0.36619050394180647,-0.10290000000000001,0,-25,25,-0.36619050394180647 -coef_util_distance_escort,-0.33778430073643445,-0.14910000000000001,0,-25,25,-0.33778430073643445 -coef_util_distance_othdiscr,-0.40879077774005879,-0.126172224,0,-25,25,-0.40879077774005879 -coef_util_distance_othmaint,-0.2579687786027548,-0.096199999999999994,0,-25,25,-0.2579687786027548 -coef_util_distance_school,-0.1056,-0.1056,0,-25,25,-0.1056 -coef_util_distance_shopping,-0.39048426507116651,-0.1192,0,-25,25,-0.39048426507116651 -coef_util_distance_social,-0.33876758749031255,-0.13289999999999999,0,-25,25,-0.33876758749031255 -coef_util_distance_univ,-0.18638287666609779,-0.0613,0,-25,25,-0.18638287666609779 -coef_util_distance_work_inbound,0.14549074690265271,0.147813278663948,0,-25,25,0.14549074690265271 -coef_util_distance_work_outbound,-0.30050379136271688,-0.049725915742290003,0,-25,25,-0.30050379136271688 -eatout_HEREMPN,-4.2741238026831576,-1.3547956940605197,0,-6,6,-4.2741238026831576 -eatout_RETEMPN,-0.29840603581475661,-0.29840603581475661,0,-0.29840603581475661,-0.29840603581475661,-0.29840603581475661 -escort_AGE0519,-1.5127395733276923,-0.76787072675588175,0,-6,6,-1.5127395733276923 -escort_HEREMPN,-5.9999999999999591,-1.9379419794061366,0,-6,6,-5.9999999999999591 -escort_HSENROLL,-3.1713650180398978,-1.7957674906255938,0,-6,6,-3.1713650180398978 -escort_RETEMPN,-2.0982466239249806,-1.4916548767777169,0,-6,6,-2.0982466239249806 -escort_TOTHH,-6.9077552789821368,-6.9077552789821368,0,-6.9077552789821368,-6.9077552789821368,-6.9077552789821368 -othdiscr_HEREMPN,-5.9999999999999867,-1.3019532126861397,0,-6,6,-5.9999999999999867 -othdiscr_HSENROLL,-6,-2.322787800311565,0,-6,6,-6 -othdiscr_OTHEMPN,-4.7422691542793025,-1.8018098050815563,0,-6,6,-4.7422691542793025 -othdiscr_RETEMPN,-0.42080704850071809,-1.5511690043101247,0,-6,6,-0.42080704850071809 -othdiscr_TOTHH,-1.3783261914707137,-1.3783261914707137,0,-1.3783261914707137,-1.3783261914707137,-1.3783261914707137 -othmaint_HEREMPN,-5.9999999999977494,-0.65778003672265395,0,-6,6,-5.9999999999977494 -othmaint_RETEMPN,-4.4680626390475311,-0.73188800887637595,0,-6,6,-4.4680626390475311 -othmaint_TOTHH,-6.9077552789821368,-6.9077552789821368,0,-6.9077552789821368,-6.9077552789821368,-6.9077552789821368 -shopping_RETEMPN,-5.9999999999990461,-0.0010005003335835344,0,-6,6,-5.9999999999990461 -shopping_TOTHH,-6.9077552789821368,-6.9077552789821368,0,-6.9077552789821368,-6.9077552789821368,-6.9077552789821368 -social_HEREMPN,-5.9999999999996891,-0.73814454649068106,0,-6,6,-5.9999999999996891 -social_RETEMPN,-3.4634568876043041,-0.65200523722877013,0,-6,6,-3.4634568876043041 -social_TOTHH,-6.9077552789821368,-6.9077552789821368,0,-6.9077552789821368,-6.9077552789821368,-6.9077552789821368 -univ_COLLFTE,-5.9999999999981588,-0.52424864409813143,0,-6,6,-5.9999999999981588 -univ_COLLPTE,-5.9999999999980629,-0.89648810457797545,0,-6,6,-5.9999999999980629 -univ_TOTHH,-6.9077552789821368,-6.9077552789821368,0,-6.9077552789821368,-6.9077552789821368,-6.9077552789821368 -work_AGREMPN,1.1452442363377451,0,0,-6,6,1.1452442363377451 -work_FPSEMPN,-5.9999999999998632,0,0,-6,6,-5.9999999999998632 -work_HEREMPN,-4.5512776072689656,0,0,-6,6,-4.5512776072689656 -work_MWTEMPN,-5.9999999999992735,0,0,-6,6,-5.9999999999992735 -work_OTHEMPN,-5.2060194818516452,0,0,-6,6,-5.2060194818516452 -work_RETEMPN,0,0,0,0,0,0 diff --git a/activitysim/estimation/test/test_larch_estimation/test_location_model_trip_destination_SLSQP_None_.csv b/activitysim/estimation/test/test_larch_estimation/test_location_model_trip_destination_SLSQP_None_.csv new file mode 100644 index 000000000..00234b507 --- /dev/null +++ b/activitysim/estimation/test/test_larch_estimation/test_location_model_trip_destination_SLSQP_None_.csv @@ -0,0 +1,48 @@ +param_name,value,best,initvalue,nullvalue +coef_UNAVAILABLE,-999,-999,-999,0 +coef_distance_joint,-0.33134844410661268,-0.33135365019482871,-0.12380000203847885,0 +coef_mode_choice_logsum,0.10404782558776673,0.10404902119734737,1.8209999799728394,0 +coef_one,1,1,1,0 +coef_prox_dest_outbound_work,0,0,0,0 +coef_prox_home_inbound_work,-0.43355983407617132,-0.43356515858610667,-0.15000000596046448,0 +coef_prox_home_outbound_work,-0.013630490468606973,-0.013630962107906125,-0.37999999523162842,0 +coef_util_distance_atwork,-0.12233459949493408,-0.12233459949493408,-0.12233459949493408,0 +coef_util_distance_eatout,-0.30369611711207345,-0.30370280168537217,-0.10289999842643738,0 +coef_util_distance_escort,-0.20130525011921385,-0.20130417694904884,-0.14910000562667847,0 +coef_util_distance_othdiscr,-0.31715754635603827,-0.31715481907154325,-0.12617222964763641,0 +coef_util_distance_othmaint,-0.1812975225573846,-0.18128613104067043,-0.096199996769428253,0 +coef_util_distance_school,-0.10559999942779541,-0.10559999942779541,-0.10559999942779541,0 +coef_util_distance_shopping,-0.3307589512022982,-0.33076061020463604,-0.11919999867677689,0 +coef_util_distance_social,-0.2659252249486278,-0.265920931953054,-0.13289999961853027,0 +coef_util_distance_univ,-0.14321261083041822,-0.14321492496348073,-0.061299998313188553,0 +coef_util_distance_work_inbound,-0.42854398962663698,-0.42853407623707079,0.14781327545642853,0 +coef_util_distance_work_outbound,-0.14563469653404526,-0.14563242024181883,-0.049725916236639023,0 +eatout_HEREMPN,-5.9999999999987965,-5.9999999998720117,-1.3547956943511963,0 +eatout_RETEMPN,-0.29840603470802307,-0.29840603470802307,-0.29840603470802307,0 +escort_AGE0519,3.0934694401381719,3.0934669149506493,-0.76787072420120239,0 +escort_HEREMPN,-5.1455749906308634,-5.1455755332943429,-1.9379420280456543,0 +escort_HSENROLL,-0.86259505065782127,-0.86258990666041102,-1.7957675457000732,0 +escort_RETEMPN,-3.197352946486133,-3.1973553524377385,-1.4916548728942871,0 +escort_TOTHH,-6.9077553749084473,-6.9077553749084473,-6.9077553749084473,0 +othdiscr_HEREMPN,-5.9999999999996385,-5.9999999999615348,-1.3019531965255737,0 +othdiscr_HSENROLL,-5.3098114987510021,-5.3098141692353842,-2.3227877616882324,0 +othdiscr_OTHEMPN,-5.9999999999948379,-5.9999999994512185,-1.8018097877502441,0 +othdiscr_RETEMPN,-5.1182251846633031,-5.1182380614929812,-1.5511690378189087,0 +othdiscr_TOTHH,-1.3783261775970459,-1.3783261775970459,-1.3783261775970459,0 +othmaint_HEREMPN,-5.999999999995695,-5.9999999995423137,-0.65778005123138428,0 +othmaint_RETEMPN,-5.9999999999862119,-5.9999999985341876,-0.73188799619674683,0 +othmaint_TOTHH,-6.9077553749084473,-6.9077553749084473,-6.9077553749084473,0 +shopping_RETEMPN,-5.9999999999999991,-5.9999999999999076,-0.0010005002841353416,0 +shopping_TOTHH,-6.9077553749084473,-6.9077553749084473,-6.9077553749084473,0 +social_HEREMPN,-3.1416302242642606,-3.1416126892727569,-0.73814451694488525,0 +social_RETEMPN,0.79021700560209307,0.79019473285367858,-0.65200525522232056,0 +social_TOTHH,-6.9077553749084473,-6.9077553749084473,-6.9077553749084473,0 +univ_COLLFTE,-5.9999999999999929,-5.9999999999999938,-0.52424865961074829,0 +univ_COLLPTE,-6,-5.9999999999999902,-0.89648813009262085,0 +univ_TOTHH,-6.9077553749084473,-6.9077553749084473,-6.9077553749084473,0 +work_AGREMPN,-1.1171784109856115,-1.1171768623786988,0,0 +work_FPSEMPN,-6,-5.9999999999999938,0,0 +work_HEREMPN,-5.9999999992762003,-5.9999999993504787,0,0 +work_MWTEMPN,-5.9999999989867057,-5.9999999990906927,0,0 +work_OTHEMPN,-5.9999999999994476,-5.999999999941287,0,0 +work_RETEMPN,0,0,0,0 diff --git a/activitysim/estimation/test/test_larch_estimation/test_location_model_workplace_location_SLSQP_None_.csv b/activitysim/estimation/test/test_larch_estimation/test_location_model_workplace_location_SLSQP_None_.csv index 4fbab9890..d4b8d728d 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_location_model_workplace_location_SLSQP_None_.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_location_model_workplace_location_SLSQP_None_.csv @@ -1,35 +1,35 @@ -,value,initvalue,nullvalue,minimum,maximum,best --999,-999,-999,-999,-999,-999,-999 -1,1,1,1,1,1,1 -coef_dist_0_1,-1.0822922946274103,-0.84279999999999999,0,-25,25,-1.0822922946274103 -coef_dist_0_5_high,0.1207879915621165,0.14999999999999999,0,-25,25,0.1207879915621165 -coef_dist_15_up,-0.091700000000000004,-0.091700000000000004,0,-25,25,-0.091700000000000004 -coef_dist_1_2,-0.24766620079389307,-0.31040000000000001,0,-25,25,-0.24766620079389307 -coef_dist_2_5,-0.3685512775196465,-0.37830000000000003,0,-25,25,-0.3685512775196465 -coef_dist_5_15,-0.15169975841932976,-0.1285,0,-25,25,-0.15169975841932976 -coef_dist_5_up_high,-0.015068815366553389,0.02,0,-25,25,-0.015068815366553389 -coef_mode_logsum,0.1608428973358158,0.29999999999999999,0,-25,25,0.1608428973358158 -work_high_AGREMPN,-5.414473039484391,-5.1159958097540823,0,-6,6,-5.414473039484391 -work_high_FPSEMPN,-2.0198354749074623,-1.575036485716768,0,-6,6,-2.0198354749074623 -work_high_HEREMPN,-1.5774962961301324,-1.258781040820931,0,-6,6,-1.5774962961301324 -work_high_MWTEMPN,-2.0728064576402221,-1.4312917270506265,0,-6,6,-2.0728064576402221 -work_high_OTHEMPN,-2.1440619487784449,-1.870802676568508,0,-6,6,-2.1440619487784449 -work_high_RETEMPN,-2.2072749131897207,-2.2072749131897207,0,-2.2072749131897207,-2.2072749131897207,-2.2072749131897207 -work_low_AGREMPN,-5.8479826351063204,-4.6051701859880909,0,-6,6,-5.8479826351063204 -work_low_FPSEMPN,-0.64550992870675994,-1.6450650900772514,0,-6,6,-0.64550992870675994 -work_low_HEREMPN,0.10934025159883133,-0.95972028980149104,0,-6,6,0.10934025159883133 -work_low_MWTEMPN,-0.35351399513998311,-1.8078888511579385,0,-6,6,-0.35351399513998311 -work_low_OTHEMPN,-0.68434316293298214,-2.120263536200091,0,-6,6,-0.68434316293298214 -work_low_RETEMPN,-2.0479428746204649,-2.0479428746204649,0,-2.0479428746204649,-2.0479428746204649,-2.0479428746204649 -work_med_AGREMPN,-6,-4.8283137373023015,0,-6,6,-6 -work_med_FPSEMPN,-1.9402118373687092,-1.6245515502441485,0,-6,6,-1.9402118373687092 -work_med_HEREMPN,-1.3812045016840873,-1.1239300966523995,0,-6,6,-1.3812045016840873 -work_med_MWTEMPN,-0.90824261771266779,-1.5606477482646683,0,-6,6,-0.90824261771266779 -work_med_OTHEMPN,-2.533158060495702,-1.9732813458514451,0,-6,6,-2.533158060495702 -work_med_RETEMPN,-2.120263536200091,-2.120263536200091,0,-2.120263536200091,-2.120263536200091,-2.120263536200091 -work_veryhigh_AGREMPN,-0.27766271475654764,-5.521460917862246,0,-6,6,-0.27766271475654764 -work_veryhigh_FPSEMPN,-1.7531684994723506,-1.3093333199837622,0,-6,6,-1.7531684994723506 -work_veryhigh_HEREMPN,-1.6190143529862893,-1.422958345491482,0,-6,6,-1.6190143529862893 -work_veryhigh_MWTEMPN,-1.7198536938187046,-1.4024237430497744,0,-6,6,-1.7198536938187046 -work_veryhigh_OTHEMPN,-2.4806660321461727,-1.9241486572738007,0,-6,6,-2.4806660321461727 -work_veryhigh_RETEMPN,-2.375155785828881,-2.375155785828881,0,-2.375155785828881,-2.375155785828881,-2.375155785828881 +param_name,value,best,initvalue,nullvalue +-999,-999,-999,-999,0 +1,1,1,1,0 +coef_dist_0_1,-0.29614981943016305,-0.29614981943016305,-0.84280002117156982,0 +coef_dist_0_5_high,-0.037934685148704593,-0.037934685148704593,0.15000000596046448,0 +coef_dist_15_up,-0.091700002551078796,-0.091700002551078796,-0.091700002551078796,0 +coef_dist_1_2,0.36470038809157851,0.36470038809157851,-0.31040000915527344,0 +coef_dist_2_5,0.074882919278809829,0.074882919278809829,-0.3783000111579895,0 +coef_dist_5_15,0.042000918183646346,0.042000918183646346,-0.12849999964237213,0 +coef_dist_5_up_high,-0.09087337502871097,-0.09087337502871097,0.019999999552965164,0 +coef_mode_logsum,0.30896144806031556,0.30896144806031556,0.30000001192092896,0 +work_high_AGREMPN,-5.1450221148210131,-5.1450221148210131,-5.1159958839416504,0 +work_high_FPSEMPN,-6,-6,-1.5750365257263184,0 +work_high_HEREMPN,-5.8811853171285584,-5.8811853171285584,-1.2587810754776001,0 +work_high_MWTEMPN,-6,-6,-1.4312916994094849,0 +work_high_OTHEMPN,-4.7639836057101634,-4.7639836057101634,-1.870802640914917,0 +work_high_RETEMPN,-2.2072749137878418,-2.2072749137878418,-2.2072749137878418,0 +work_low_AGREMPN,-4.6300621303951566,-4.6300621303951566,-4.6051702499389648,0 +work_low_FPSEMPN,-6,-6,-1.6450650691986084,0 +work_low_HEREMPN,-5.1021077661983387,-5.1021077661983387,-0.95972031354904175,0 +work_low_MWTEMPN,-6,-6,-1.8078888654708862,0 +work_low_OTHEMPN,-4.6623088926077152,-4.6623088926077152,-2.1202635765075684,0 +work_low_RETEMPN,-2.0479428768157959,-2.0479428768157959,-2.0479428768157959,0 +work_med_AGREMPN,-4.8459968751410516,-4.8459968751410516,-4.8283138275146484,0 +work_med_FPSEMPN,-6,-6,-1.62455153465271,0 +work_med_HEREMPN,-5.4027609472499369,-5.4027609472499369,-1.1239300966262817,0 +work_med_MWTEMPN,-5.9999999999999991,-5.9999999999999991,-1.56064772605896,0 +work_med_OTHEMPN,-4.8811360108806872,-4.8811360108806872,-1.9732813835144043,0 +work_med_RETEMPN,-2.1202635765075684,-2.1202635765075684,-2.1202635765075684,0 +work_veryhigh_AGREMPN,-5.5516059766686876,-5.5516059766686876,-5.521461009979248,0 +work_veryhigh_FPSEMPN,-6,-6,-1.309333324432373,0 +work_veryhigh_HEREMPN,-5.6489927637825792,-5.6489927637825792,-1.4229583740234375,0 +work_veryhigh_MWTEMPN,-6,-6,-1.4024237394332886,0 +work_veryhigh_OTHEMPN,-5.8313629173672439,-5.8313629173672439,-1.9241486787796021,0 +work_veryhigh_RETEMPN,-2.3751556873321533,-2.3751556873321533,-2.3751556873321533,0 diff --git a/activitysim/estimation/test/test_larch_estimation/test_mandatory_tour_scheduling_school_loglike.csv b/activitysim/estimation/test/test_larch_estimation/test_mandatory_tour_scheduling_school_loglike.csv index e76a45b3f..13b40bf6a 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_mandatory_tour_scheduling_school_loglike.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_mandatory_tour_scheduling_school_loglike.csv @@ -1,2 +1,2 @@ ,loglike_prior,loglike_converge -0,-2475.6453326598094,-2344.7409183750583 +0,-2372.124053104777,-2329.0008675965573 diff --git a/activitysim/estimation/test/test_larch_estimation/test_mandatory_tour_scheduling_work_loglike.csv b/activitysim/estimation/test/test_larch_estimation/test_mandatory_tour_scheduling_work_loglike.csv index 6970d3e66..66fdd2bfd 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_mandatory_tour_scheduling_work_loglike.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_mandatory_tour_scheduling_work_loglike.csv @@ -1,2 +1,2 @@ ,loglike_prior,loglike_converge -0,-9138.134506637969,-8404.2487574734187 +0,-8343.7438769575056,-8319.0773809188413 diff --git a/activitysim/estimation/test/test_larch_estimation/test_non_mandatory_tour_scheduling_loglike.csv b/activitysim/estimation/test/test_larch_estimation/test_non_mandatory_tour_scheduling_loglike.csv index 3282b45e7..027ad8ce1 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_non_mandatory_tour_scheduling_loglike.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_non_mandatory_tour_scheduling_loglike.csv @@ -1,2 +1,2 @@ ,loglike_prior,loglike_converge -0,-12772.911183835131,-9506.0541725800285 +0,-9330.0289068958136,-9291.4339963381062 diff --git a/activitysim/estimation/test/test_larch_estimation/test_nonmand_and_joint_tour_dest_choice.csv b/activitysim/estimation/test/test_larch_estimation/test_nonmand_and_joint_tour_dest_choice.csv index 5a8bf11db..95558980d 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_nonmand_and_joint_tour_dest_choice.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_nonmand_and_joint_tour_dest_choice.csv @@ -1,36 +1,36 @@ -,value,initvalue,nullvalue,minimum,maximum,best --999,-999,-999,-999,-999,-999,-999 -0,0,0,0,0,0,0 -1,1,1,1,1,1,1 -coef_eatout_dist_0_2,-0.76797916075917105,-0.56089999999999995,0,-25,25,-0.76797916075917105 -coef_eatout_dist_2_5,-0.22644636259204301,-0.31919999999999998,0,-25,25,-0.22644636259204301 -coef_eatout_dist_5_plus,-0.18814992028058361,-0.12379999999999999,0,-25,25,-0.18814992028058361 -coef_escort_dist_0_2,0.22669529391335932,-0.14990000000000001,0,-25,25,0.22669529391335932 -coef_escort_dist_2_5,-0.81349761658617425,-0.86709999999999998,0,-25,25,-0.81349761658617425 -coef_escort_dist_5_plus,-0.25505635884043121,-0.2137,0,-25,25,-0.25505635884043121 -coef_mode_logsum,0.66293335178956303,0.67549999999999999,0,-25,25,0.66293335178956303 -coef_othdiscr_dist_0_2,-0.20320115406190975,-0.16769999999999999,0,-25,25,-0.20320115406190975 -coef_othdiscr_dist_2_5,-0.55094376688046098,-0.4955,0,-25,25,-0.55094376688046098 -coef_othdiscr_dist_5_plus,-0.00014599013956733095,-0.1193,0,-25,25,-0.00014599013956733095 -coef_othmaint_dist_2_5,-0.57993229022084924,-0.60550000000000004,0,-25,25,-0.57993229022084924 -coef_othmaint_dist_5_plus,-0.22966135112433173,-0.10929999999999999,0,-25,25,-0.22966135112433173 -coef_shopping_dist_2_5,-0.62979386608506294,-0.5655,0,-25,25,-0.62979386608506294 -coef_shopping_dist_5_plus,-0.13065191570180024,-0.1832,0,-25,25,-0.13065191570180024 -coef_social_dist_2_5,-0.24518547406208724,-0.34849999999999998,0,-25,25,-0.24518547406208724 -coef_social_dist_5_plus,-0.19021662093061398,-0.13059999999999999,0,-25,25,-0.19021662093061398 -eatout_HEREMPN,-0.94688018419944264,-1.3547956940605197,0,-6,6,-0.94688018419944264 -eatout_RETEMPN,-0.29840603581475661,-0.29840603581475661,0,-0.29840603581475661,-0.29840603581475661,-0.29840603581475661 -escort_AGE0519,-1.1713218472625264,-0.7657178733947807,0,-6,6,-1.1713218472625264 -escort_HEREMPN,-2.4501503469929982,-1.9379419794061366,0,-6,6,-2.4501503469929982 -escort_HSENROLL,-3.3045642735486878,-1.7957674906255938,0,-6,6,-3.3045642735486878 -escort_RETEMPN,-1.4916548767777169,-1.4916548767777169,0,-1.4916548767777169,-1.4916548767777169,-1.4916548767777169 -othdiscr_HEREMPN,-1.5849006741800804,-1.3019532126861397,0,-6,6,-1.5849006741800804 -othdiscr_HSENROLL,-2.4667805407825685,-2.322787800311565,0,-6,6,-2.4667805407825685 -othdiscr_OTHEMPN,-2.3703426620470296,-1.8018098050815563,0,-6,6,-2.3703426620470296 -othdiscr_RETEMPN,-1.2385802852918961,-1.5511690043101247,0,-6,6,-1.2385802852918961 -othdiscr_TOTHH,-1.3783261914707137,-1.3783261914707137,0,-1.3783261914707137,-1.3783261914707137,-1.3783261914707137 -othmaint_HEREMPN,-0.66895307929197778,-0.65778003672265395,0,-6,6,-0.66895307929197778 -othmaint_RETEMPN,-0.72981116493153675,-0.72981116493153675,0,-0.72981116493153675,-0.72981116493153675,-0.72981116493153675 -shopping_RETEMPN,0,0,0,0,0,0 -social_HEREMPN,-0.3028654470570214,-0.73814454649068106,0,-6,6,-0.3028654470570214 -social_RETEMPN,-0.65008769109949827,-0.65008769109949827,0,-0.65008769109949827,-0.65008769109949827,-0.65008769109949827 +param_name,value,best,initvalue,nullvalue +-999,-999,-999,-999,0 +0,0,0,0,0 +1,1,1,1,0 +coef_eatout_dist_0_2,-0.27121792391961891,-0.27121792391961891,-0.56089997291564941,0 +coef_eatout_dist_2_5,0.10608796923916697,0.10608796923916697,-0.31920000910758972,0 +coef_eatout_dist_5_plus,-0.030055040831786589,-0.030055040831786589,-0.12380000203847885,0 +coef_escort_dist_0_2,0.36566723960275005,0.36566723960275005,-0.14990000426769257,0 +coef_escort_dist_2_5,0.028378662901016108,0.028378662901016108,-0.86710000038146973,0 +coef_escort_dist_5_plus,-0.11708701992134836,-0.11708701992134836,-0.21369999647140503,0 +coef_mode_logsum,0.59887430720061385,0.59887430720061385,0.67549997568130493,0 +coef_othdiscr_dist_0_2,-0.034497995271121927,-0.034497995271121927,-0.16769999265670776,0 +coef_othdiscr_dist_2_5,-0.050531906736139574,-0.050531906736139574,-0.49549999833106995,0 +coef_othdiscr_dist_5_plus,0.10722115306679328,0.10722115306679328,-0.1193000003695488,0 +coef_othmaint_dist_2_5,0.021990226822960424,0.021990226822960424,-0.6054999828338623,0 +coef_othmaint_dist_5_plus,-0.069040145806240003,-0.069040145806240003,-0.10930000245571136,0 +coef_shopping_dist_2_5,-0.088053277034711469,-0.088053277034711469,-0.56550002098083496,0 +coef_shopping_dist_5_plus,0.053178032652148891,0.053178032652148891,-0.18320000171661377,0 +coef_social_dist_2_5,0.13875731050537282,0.13875731050537282,-0.34850001335144043,0 +coef_social_dist_5_plus,-0.093851542275907265,-0.093851542275907265,-0.13060000538825989,0 +eatout_HEREMPN,-2.6485746777114287,-2.6485746777114287,-1.3547956943511963,0 +eatout_RETEMPN,-0.29840603470802307,-0.29840603470802307,-0.29840603470802307,0 +escort_AGE0519,-1.5700822201838556,-1.5700822201838556,-0.76571786403656006,0 +escort_HEREMPN,-3.381566795567077,-3.381566795567077,-1.9379420280456543,0 +escort_HSENROLL,-5.5115296809721706,-5.5115296809721706,-1.7957675457000732,0 +escort_RETEMPN,-1.4916548728942871,-1.4916548728942871,-1.4916548728942871,0 +othdiscr_HEREMPN,-4.3767539149782362,-4.3767539149782362,-1.3019531965255737,0 +othdiscr_HSENROLL,-4.0323913073099753,-4.0323913073099753,-2.3227877616882324,0 +othdiscr_OTHEMPN,-2.6010090126387664,-2.6010090126387664,-1.8018097877502441,0 +othdiscr_RETEMPN,-1.8907979924961573,-1.8907979924961573,-1.5511690378189087,0 +othdiscr_TOTHH,-1.3783261775970459,-1.3783261775970459,-1.3783261775970459,0 +othmaint_HEREMPN,-3.5067524801333883,-3.5067524801333883,-0.65778005123138428,0 +othmaint_RETEMPN,-0.72981119155883789,-0.72981119155883789,-0.72981119155883789,0 +shopping_RETEMPN,0,0,0,0 +social_HEREMPN,-3.1930226314841379,-3.1930226314841379,-0.73814451694488525,0 +social_RETEMPN,-0.65008771419525146,-0.65008771419525146,-0.65008771419525146,0 diff --git a/activitysim/estimation/test/test_larch_estimation/test_nonmand_and_joint_tour_dest_choice_loglike.csv b/activitysim/estimation/test/test_larch_estimation/test_nonmand_and_joint_tour_dest_choice_loglike.csv index 3d4d12de9..60449226e 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_nonmand_and_joint_tour_dest_choice_loglike.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_nonmand_and_joint_tour_dest_choice_loglike.csv @@ -1,2 +1,2 @@ ,loglike_prior,loglike_converge -0,-13284.574594749327,-13268.709190928732 +0,-8815.2207980563562,-8000.0090578510162 diff --git a/activitysim/estimation/test/test_larch_estimation/test_nonmand_tour_freq.csv b/activitysim/estimation/test/test_larch_estimation/test_nonmand_tour_freq.csv index c69badeb9..a5798dcda 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_nonmand_tour_freq.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_nonmand_tour_freq.csv @@ -1,426 +1,426 @@ -,value,initvalue,nullvalue,minimum,maximum,best -coef_0_auto_household_and_escorting_tour,-2,-2,0,-2,-2,-2 -coef_1_escort_tour_constant,0.3190372575850004,0.0298,0,,,0.3190372575850004 -coef_1_plus_eating_out_tours_constant,-1.0128556061868639,0.0097000000000000003,0,,,-1.0128556061868639 -coef_1_plus_maintenance_tours_constant,-2.8426429307763517,0.1202,0,,,-2.8426429307763517 -coef_1_plus_other_discretionary_tours_constant,10.543978753178383,0.74119999999999997,0,,,10.543978753178383 -coef_1_plus_shopping_tours_constant,7.1839137908242963,0.47739999999999999,0,,,7.1839137908242963 -coef_1_plus_visting_tours_constant,-0.3208195851541456,0.052200000000000003,0,,,-0.3208195851541456 -coef_2_plus_escort_tours_constant,0.60671030252342817,0.74019999999999997,0,,,0.60671030252342817 -coef_at_home_pre_driving_school_kid_and_escorting_tour,-0.92647632492670284,-0.27460000000000001,0,,,-0.92647632492670284 -coef_at_home_pre_school_kid_and_discretionary_tour,-0.65566150836617298,-0.4703,0,,,-0.65566150836617298 -coef_at_home_pre_school_kid_and_escorting_tour,-0.79299240501544976,-1.5674999999999999,0,,,-0.79299240501544976 -coef_auto_access_to_retail_and_discretionary,-1.0508623054596398,0.084400000000000003,0,,,-1.0508623054596398 -coef_auto_access_to_retail_and_maintenance,0.27881164131795588,0.074899999999999994,0,,,0.27881164131795588 -coef_auto_access_to_retail_and_shopping,-0.6308268427373509,0.1067,0,,,-0.6308268427373509 -coef_car_surplus_vs_workers_and_tour_frequency_is_5_plus,0.16837878665395392,0.13039999999999999,0,,,0.16837878665395392 -coef_female_and_escorting_tour,0.60135724689113756,0.18240000000000001,0,,,0.60135724689113756 -coef_female_and_tour_frequency_is_1,-0.31583892945263869,-0.076600000000000001,0,,,-0.31583892945263869 -coef_female_and_tour_frequency_is_2,-0.5828100966419405,-0.1062,0,,,-0.5828100966419405 -coef_female_and_tour_frequency_is_5,0.022734817568325703,-0.32740000000000002,0,,,0.022734817568325703 -coef_high_income_group_and_discretionary_tour,-0.060443076774255075,0.25650000000000001,0,,,-0.060443076774255075 -coef_high_income_group_and_eating_out_tour,0.72620905564966565,0.55810000000000004,0,,,0.72620905564966565 -coef_high_income_group_and_tour_frequency_is_1,1.1372979170796778,0.51890000000000003,0,,,1.1372979170796778 -coef_high_income_group_and_tour_frequency_is_2,2.2159303224114666,1.1335999999999999,0,,,2.2159303224114666 -coef_high_income_group_and_tour_frequency_is_5_plus,0.10501223044514314,1.3898999999999999,0,,,0.10501223044514314 -coef_high_income_group_and_visiting_tour,-0.86265476671748431,-0.24229999999999999,0,,,-0.86265476671748431 -coef_logged_maximum_residual_window_tour_frequency_is_1,1.3354533697510027,1.2562,0,,,1.3354533697510027 -coef_logged_maximum_residual_window_tour_frequency_is_2,1.4260046446625716,1.2867999999999999,0,,,1.4260046446625716 -coef_logged_maximum_residual_window_tour_frequency_is_5_plus,0.64024624278385667,1.3993,0,,,0.64024624278385667 -coef_mediumhigh_income_group_and_tour_frequency_is_1,1.0937153306192198,0.49809999999999999,0,,,1.0937153306192198 -coef_mediumhigh_income_group_and_tour_frequency_is_2,1.8148765360700809,0.83450000000000002,0,,,1.8148765360700809 -coef_mediumhigh_income_group_and_tour_frequency_is_5_plus,1.0390643994599666,1.0213000000000001,0,,,1.0390643994599666 -coef_number_of_joint_eating_out_tours,-9.9809215555613431,-0.58660000000000001,0,,,-9.9809215555613431 -coef_number_of_mandatory_tours_and_tour_frequency_is_2,-1.4334081077188456,-0.88870000000000005,0,,,-1.4334081077188456 -coef_number_of_mandatory_tours_and_tour_frequency_is_5_plus,-1.6366589797047477,-2.3342999999999998,0,,,-1.6366589797047477 -coef_presence_of_driving_school_kid_and_discretionary_tour,0.38403906373496743,-0.39629999999999999,0,,,0.38403906373496743 -coef_presence_of_driving_school_kid_and_escorting_tour,-0.21108592167092743,0.36009999999999998,0,,,-0.21108592167092743 -coef_presence_of_full_time_worker_and_discretionary_tour,-0.78342819804391672,-0.66700000000000004,0,,,-0.78342819804391672 -coef_presence_of_full_time_worker_and_eating_out_tour,-0.74762089644693475,-0.35709999999999997,0,,,-0.74762089644693475 -coef_presence_of_full_time_worker_and_maintenance_tour,-0.34233564267666977,-0.16850000000000001,0,,,-0.34233564267666977 -coef_presence_of_full_time_worker_and_shopping_tour,-0.63058521173008519,-0.30590000000000001,0,,,-0.63058521173008519 -coef_presence_of_non_worker_and_discretionary_tour,-1.2669707808842081,-0.42809999999999998,0,,,-1.2669707808842081 -coef_presence_of_non_worker_and_eating_out_tour,-0.44503023956321403,-0.2014,0,,,-0.44503023956321403 -coef_presence_of_non_worker_and_escorting_tour,-0.85427331034949039,-0.48149999999999998,0,,,-0.85427331034949039 -coef_presence_of_non_worker_and_maintenance_tour,-0.20935037072535292,-0.32369999999999999,0,,,-0.20935037072535292 -coef_presence_of_non_worker_and_shopping_tour,-0.84441949424610041,-0.41599999999999998,0,,,-0.84441949424610041 -coef_presence_of_part_time_worker_and_discretionary_tour,-0.041239276355498081,-0.2102,0,,,-0.041239276355498081 -coef_presence_of_part_time_worker_and_maintenance_tour,-0.18336221092296712,-0.15840000000000001,0,,,-0.18336221092296712 -coef_presence_of_part_time_worker_and_shopping_tour,-0.14852190396109033,-0.15409999999999999,0,,,-0.14852190396109033 -coef_presence_of_pre_driving_school_kid_and_discretionary_tour,-0.12585844615812486,-0.39589999999999997,0,,,-0.12585844615812486 -coef_presence_of_pre_driving_school_kid_and_escorting_tour,1.4021102250286928,1.3974,0,,,1.4021102250286928 -coef_presence_of_pre_school_kid_and_discretionary_tour,-0.017076036823995389,-0.5081,0,,,-0.017076036823995389 -coef_presence_of_pre_school_kid_and_eating_out_tour,-0.84547304246409216,-0.42249999999999999,0,,,-0.84547304246409216 -coef_presence_of_pre_school_kid_and_escorting_tour,0.74822720714906121,0.68420000000000003,0,,,0.74822720714906121 -coef_presence_of_pre_school_kid_and_shopping_tour,-0.006143364129761947,-0.20799999999999999,0,,,-0.006143364129761947 -coef_presence_of_retiree_and_discretionary_tour,-0.5968298706214118,-0.91039999999999999,0,,,-0.5968298706214118 -coef_presence_of_retiree_and_eating_out_tour,-1.2874101904899586,-0.57079999999999997,0,,,-1.2874101904899586 -coef_presence_of_retiree_and_escorting_tour,-12.931599172963331,-0.80800000000000005,0,,,-12.931599172963331 -coef_presence_of_university_student_and_discretionary_tour,-0.40727682870124049,-0.85509999999999997,0,,,-0.40727682870124049 -coef_total_number_of_tours_is_1,-7.5238510045347198,-7.3571999999999997,0,,,-7.5238510045347198 -coef_total_number_of_tours_is_2,-10.052745008623061,-10.647,0,,,-10.052745008623061 -coef_total_number_of_tours_is_3,-11.089117141589441,-13.500500000000001,0,,,-11.089117141589441 -coef_total_number_of_tours_is_4,-12.79747158559379,-16.3965,0,,,-12.79747158559379 -coef_total_number_of_tours_is_5,-21.780097785311945,-19.6843,0,,,-21.780097785311945 -coef_total_number_of_tours_is_6_plus,-999,-999,0,-999,-999,-999 -coef_transit_access_to_retail_and_tour_frequency_is_5_plus,0.07445921318512129,0.022599999999999999,0,,,0.07445921318512129 -coef_urban_and_discretionary_tour,0,0,0,0,0,0 -coef_urban_and_escorting_tour,-0.40934213736815739,-0.43159999999999998,0,,,-0.40934213736815739 -coef_walk_access_to_retail_and_discretionary,0.16052040097513201,0.0567,0,,,0.16052040097513201 -coef_walk_access_to_retail_and_eating_out,0.21128946397868445,0.14499999999999999,0,,,0.21128946397868445 -coef_walk_access_to_retail_and_escorting,-0.10528530451785624,0.045100000000000001,0,,,-0.10528530451785624 -coef_walk_access_to_retail_and_shopping,0.030181871306816859,0.033000000000000002,0,,,0.030181871306816859 -coef_zero_car_ownership_and_tour_frequency_is_5_plus,-0.22749157163698558,-0.34860000000000002,0,,,-0.22749157163698558 -coef_0_auto_household_and_escorting_tour,-2,-2,0,-2,-2,-2 -coef_1_escort_tour_constant,0.77792661515451589,0.5272,0,,,0.77792661515451589 -coef_1_plus_eating_out_tours_constant,1.6650752768925599,0.69140000000000001,0,,,1.6650752768925599 -coef_1_plus_maintenance_tours_constant,1.2147335336677649,0.55330000000000001,0,,,1.2147335336677649 -coef_1_plus_other_discretionary_tours_constant,1.7838713459166913,0.79890000000000005,0,,,1.7838713459166913 -coef_1_plus_shopping_tours_constant,1.5216128214649225,0.75690000000000002,0,,,1.5216128214649225 -coef_1_plus_visting_tours_constant,1.0454819231998753,0.14050000000000001,0,,,1.0454819231998753 -coef_2_plus_escort_tours_constant,1.8826614596684659,1.5987,0,,,1.8826614596684659 -coef_car_shortage_vs_workers_and_tour_frequency_is_5_plus,0.049231503501832231,-0.54979999999999996,0,,,0.049231503501832231 -coef_female_and_discretionary_tour,0.4392516750827225,0.30719999999999997,0,,,0.4392516750827225 -coef_female_and_shopping_tour,0.75313279306505232,0.45240000000000002,0,,,0.75313279306505232 -coef_high_income_group_and_discretionary_tour,0.23650597334594267,0.29599999999999999,0,,,0.23650597334594267 -coef_high_income_group_and_maintenance_tour,1.3851001428210838,0.67630000000000001,0,,,1.3851001428210838 -coef_high_income_group_and_shopping_tour,0.8194174808417779,0.70660000000000001,0,,,0.8194174808417779 -coef_high_income_group_and_tour_frequency_is_1,1.1457147075553702,0.86819999999999997,0,,,1.1457147075553702 -coef_high_income_group_and_tour_frequency_is_2,1.3475187007328813,1.5362,0,,,1.3475187007328813 -coef_high_income_group_and_tour_frequency_is_5_plus,1.4989029758459638,1.9331,0,,,1.4989029758459638 -coef_high_income_group_and_visiting_tour,-0.51731565603377461,-0.68679999999999997,0,,,-0.51731565603377461 -coef_logged_maximum_residual_window_tour_frequency_is_1,0.7685190519346432,1.5748,0,,,0.7685190519346432 -coef_logged_maximum_residual_window_tour_frequency_is_5_plus,1.2439948002596291,2.0026000000000002,0,,,1.2439948002596291 -coef_mediumhigh_income_group_and_shopping_tour,0.6050472895465131,0.44209999999999999,0,,,0.6050472895465131 -coef_mediumlow_income_group_and_tour_frequency_is_1,0.78437721900423418,0.59809999999999997,0,,,0.78437721900423418 -coef_mediumlow_income_group_and_tour_frequency_is_2,0.77646590224476053,0.91779999999999995,0,,,0.77646590224476053 -coef_mediumlow_income_group_and_tour_frequency_is_5_plus,0.85089808758167285,1.7539,0,,,0.85089808758167285 -coef_number_of_joint_tours_and_tour_frequency_is_4,-1.3476574161190644,-1.1986000000000001,0,,,-1.3476574161190644 -coef_number_of_joint_tours_and_tour_frequency_is_5_plus,-999,-999,0,-999,-999,-999 -coef_number_of_mandatory_tours_and_tour_frequency_is_1,-0.98906870125269652,-0.23899999999999999,0,,,-0.98906870125269652 -coef_number_of_mandatory_tours_and_tour_frequency_is_2,-2.8297942396940736,-1.8208,0,,,-2.8297942396940736 -coef_number_of_mandatory_tours_and_tour_frequency_is_5_plus,-2.7856768576922941,-2.5922999999999998,0,,,-2.7856768576922941 -coef_presence_of_driving_school_kid_and_escorting_tour,1.029446605173121,0.41639999999999999,0,,,1.029446605173121 -coef_presence_of_full_time_worker_and_maintenance_tour,-0.48499903259305888,-0.31309999999999999,0,,,-0.48499903259305888 -coef_presence_of_non_worker_and_discretionary_tour,-0.55680343236172403,-1.0370999999999999,0,,,-0.55680343236172403 -coef_presence_of_non_worker_and_eating_out_tour,-0.23160785989506891,-0.65449999999999997,0,,,-0.23160785989506891 -coef_presence_of_non_worker_and_escorting_tour,-0.61711333679139824,-0.52629999999999999,0,,,-0.61711333679139824 -coef_presence_of_part_time_worker_and_maintenance_tour,-1.0349086974724879,-0.56210000000000004,0,,,-1.0349086974724879 -coef_presence_of_pre_driving_school_kid_and_escorting_tour,1.8088903614971785,1.5794999999999999,0,,,1.8088903614971785 -coef_presence_of_pre_school_kid_and_escorting_tour,0.29170166111444701,0.54139999999999999,0,,,0.29170166111444701 -coef_presence_of_preschool_kid_in_household_and_tour_frequency_is_1,0.3086114999500732,-0.15590000000000001,0,,,0.3086114999500732 -coef_presence_of_preschool_kid_in_household_and_tour_frequency_is_5,-0.53068484571189922,-0.56810000000000005,0,,,-0.53068484571189922 -coef_presence_of_retiree_and_eating_out_tour,0.10920851120872498,-1.389,0,,,0.10920851120872498 -coef_presence_of_retiree_and_escorting_tour,-0.46115035352397654,-0.75160000000000005,0,,,-0.46115035352397654 -coef_presence_of_university_student_and_eating_out_tour,-1.7593233495192167,-1.4318,0,,,-1.7593233495192167 -coef_total_number_of_tours_is_1,-6.8126152336072634,-7.6391,0,,,-6.8126152336072634 -coef_total_number_of_tours_is_2,-9.848059513629396,-10.4557,0,,,-9.848059513629396 -coef_total_number_of_tours_is_3,-12.828277375142353,-14.0176,0,,,-12.828277375142353 -coef_total_number_of_tours_is_4,-17.097027294518412,-16.971699999999998,0,,,-17.097027294518412 -coef_urban_and_discretionary_tour,0,0,0,0,0,0 -coef_urban_and_escorting_tour,0.42574953449141995,-0.39290000000000003,0,,,0.42574953449141995 -coef_walk_access_to_retail_and_tour_frequency_is_1,0.080139740576734939,0.089899999999999994,0,,,0.080139740576734939 -coef_walk_access_to_retail_and_tour_frequency_is_2,0.10381957230648611,0.1447,0,,,0.10381957230648611 -coef_walk_access_to_retail_and_tour_frequency_is_5_plus,0.050631059321334597,0.34789999999999999,0,,,0.050631059321334597 -coef_0_auto_household_and_escorting_tour,-2,-2,0,-2,-2,-2 -coef_1_escort_tour_constant,1.8515063856421023,1.7028000000000001,0,,,1.8515063856421023 -coef_1_plus_eating_out_tours_constant,-13.970900895148123,2.0722999999999998,0,,,-13.970900895148123 -coef_1_plus_maintenance_tours_constant,-0.33803118769084733,0.33479999999999999,0,,,-0.33803118769084733 -coef_1_plus_other_discretionary_tours_constant,-1.4739923019690557,1.3389,0,,,-1.4739923019690557 -coef_1_plus_shopping_tours_constant,2.0188727174813774,1.8403,0,,,2.0188727174813774 -coef_1_plus_visting_tours_constant,1.1323634825734481,1.2172000000000001,0,,,1.1323634825734481 -coef_2_plus_escort_tours_constant,2.7388802993288452,2.8378999999999999,0,,,2.7388802993288452 -coef_auto_access_to_retail_and_discretionary,0.6683734729533154,0.094,0,,,0.6683734729533154 -coef_auto_access_to_retail_and_eating_out,3.3138758891504487,0.1018,0,,,3.3138758891504487 -coef_car_shortage_vs_workers_and_tour_frequency_is_5_plus,-1.1118144810513726,-0.58099999999999996,0,,,-1.1118144810513726 -coef_female_and_discretionary_tour,-0.25441035312551963,-0.3266,0,,,-0.25441035312551963 -coef_female_and_eatingout_tour,-0.67597119919881721,-0.65680000000000005,0,,,-0.67597119919881721 -coef_female_and_tour_frequency_is_1,-0.50912757178913237,0.097299999999999998,0,,,-0.50912757178913237 -coef_female_and_tour_frequency_is_2,0.67536539039172305,0.2361,0,,,0.67536539039172305 -coef_female_and_tour_frequency_is_5,1.992028104740627,1.9001999999999999,0,,,1.992028104740627 -coef_high_income_group_and_eating_out_tour,-1.7911774479045783,-0.72070000000000001,0,,,-1.7911774479045783 -coef_high_income_group_and_shopping_tour,0.0036422160874866197,0.56930000000000003,0,,,0.0036422160874866197 -coef_high_income_group_and_tour_frequency_is_1,1.4404498701731279,0.39860000000000001,0,,,1.4404498701731279 -coef_high_income_group_and_tour_frequency_is_2,0.83745190593386265,0.80089999999999995,0,,,0.83745190593386265 -coef_high_income_group_and_tour_frequency_is_5_plus,-16.251792370439588,0.82540000000000002,0,,,-16.251792370439588 -coef_high_income_group_and_visiting_tour,-0.82404884406611401,-0.36940000000000001,0,,,-0.82404884406611401 -coef_logged_maximum_residual_window_tour_frequency_is_0,0.2804768002125545,1.1858,0,,,0.2804768002125545 -coef_logged_maximum_residual_window_tour_frequency_is_5_plus,2.3895231997864537,1.4842,0,,,2.3895231997864537 -coef_mediumhigh_income_group_and_tour_frequency_is_1,0.50210130383758622,0.1109,0,,,0.50210130383758622 -coef_mediumhigh_income_group_and_tour_frequency_is_2,2.1358136364876388,0.39140000000000003,0,,,2.1358136364876388 -coef_mediumhigh_income_group_and_tour_frequency_is_5_plus,3.8895054347112406,0.61370000000000002,0,,,3.8895054347112406 -coef_number_of_joint_discretionary_tours,-12.752183693752794,0.67130000000000001,0,,,-12.752183693752794 -coef_number_of_joint_shopping_tours,-26.373288193463711,-0.71299999999999997,0,,,-26.373288193463711 -coef_number_of_joint_tours_and_tour_frequency_is_2,-13.926155494658921,-0.31530000000000002,0,,,-13.926155494658921 -coef_number_of_joint_tours_and_tour_frequency_is_3,-1.3634750179314692,-0.73509999999999998,0,,,-1.3634750179314692 -coef_number_of_joint_tours_and_tour_frequency_is_5_plus,-999,-999,0,-999,-999,-999 -coef_number_of_mandatory_tours_and_tour_frequency_is_1,-0.80994304158323804,-0.1852,0,,,-0.80994304158323804 -coef_number_of_mandatory_tours_and_tour_frequency_is_2,-1.9296858293686057,-0.87529999999999997,0,,,-1.9296858293686057 -coef_number_of_mandatory_tours_and_tour_frequency_is_3,-3.1165358610084146,-1.6157999999999999,0,,,-3.1165358610084146 -coef_presence_of_full_time_worker_and_discretionary_tour,-1.0912632357636489,-0.48330000000000001,0,,,-1.0912632357636489 -coef_presence_of_full_time_worker_and_eating_out_tour,0.77587232422920438,-0.52510000000000001,0,,,0.77587232422920438 -coef_presence_of_full_time_worker_and_shopping_tour,-0.47914248744882598,-0.77280000000000004,0,,,-0.47914248744882598 -coef_presence_of_non_worker_and_discretionary_tour,-0.59191766592824591,0.97809999999999997,0,,,-0.59191766592824591 -coef_presence_of_non_worker_and_tour_frequency_is_1,0.20739098927232799,-0.85060000000000002,0,,,0.20739098927232799 -coef_presence_of_non_worker_and_tour_frequency_is_5,-0.10809095623412202,-1.1803999999999999,0,,,-0.10809095623412202 -coef_presence_of_part_time_worker_and_eating_out_tour,-3.2046073684551888,-1.9795,0,,,-3.2046073684551888 -coef_presence_of_part_time_worker_and_escorting_tour,-2.2247073118309659,-1.8212999999999999,0,,,-2.2247073118309659 -coef_presence_of_part_time_worker_and_shopping_tour,-0.72896673490600039,-0.51990000000000003,0,,,-0.72896673490600039 -coef_presence_of_pre_driving_school_kid_and_escorting_tour,-0.075902664875801412,0.94889999999999997,0,,,-0.075902664875801412 -coef_presence_of_pre_driving_school_kid_and_maintenance_tour,0.072697095095962505,0.38629999999999998,0,,,0.072697095095962505 -coef_presence_of_pre_school_kid_and_escorting_tour,1.7499151704017379,2.1465000000000001,0,,,1.7499151704017379 -coef_presence_of_pre_school_kid_and_maintenance_tour,-0.61302038898844102,0.96940000000000004,0,,,-0.61302038898844102 -coef_presence_of_pre_school_kid_and_shopping_tour,0.4218433052411511,1.3134999999999999,0,,,0.4218433052411511 -coef_presence_of_preschool_kid_in_household_and_tour_frequency_is_1,-2.0284687546419584,-0.99609999999999999,0,,,-2.0284687546419584 -coef_presence_of_preschool_kid_in_household_and_tour_frequency_is_2,-0.79737893556046791,-1.9096,0,,,-0.79737893556046791 -coef_presence_of_preschool_kid_in_household_and_tour_frequency_is_5,-0.31913117480031128,-2.8469000000000002,0,,,-0.31913117480031128 -coef_presence_of_university_student_and_discretionary_tour,0.090801806893705261,-0.6542,0,,,0.090801806893705261 -coef_presence_of_university_student_and_eating_out_tour,-0.42835318314992721,-0.65290000000000004,0,,,-0.42835318314992721 -coef_total_number_of_tours_is_1,-8.5863403053428833,-6.2138,0,,,-8.5863403053428833 -coef_total_number_of_tours_is_2,-11.31949482279566,-8.9079999999999995,0,,,-11.31949482279566 -coef_total_number_of_tours_is_3,-14.109861113838994,-12.3261,0,,,-14.109861113838994 -coef_total_number_of_tours_is_4,-17.545826976965291,-15.811400000000001,0,,,-17.545826976965291 -coef_transit_access_to_retail_and_discretionary,0,0,0,0,0,0 -coef_transit_access_to_retail_and_maintenance,0.25755159606468364,0.031399999999999997,0,,,0.25755159606468364 -coef_transit_access_to_retail_and_tour_frequency_is_5_plus,0.20705109302348529,0.066400000000000001,0,,,0.20705109302348529 -coef_urban_and_discretionary_tour,-1.8565923019691735,0.95630000000000004,0,,,-1.8565923019691735 -coef_urban_and_eatingout_tour,-15.36320089514812,0.68000000000000005,0,,,-15.36320089514812 -coef_urban_and_escorting_tour,0.80226698426219045,0.85160000000000002,0,,,0.80226698426219045 -coef_urban_and_maintenance_tour,0.35876881230913166,1.0316000000000001,0,,,0.35876881230913166 -coef_urban_and_shopping_tour,0.71157271748139417,0.53300000000000003,0,,,0.71157271748139417 -coef_urban_and_tour_frequency_is_1,-3.5373403053428834,-1.1648000000000001,0,,,-3.5373403053428834 -coef_urban_and_tour_frequency_is_2,-4.7291948227956535,-2.3176999999999999,0,,,-4.7291948227956535 -coef_urban_and_tour_frequency_is_5_plus,-6.0208880908118116,-2.5026999999999999,0,,,-6.0208880908118116 -coef_walk_access_to_retail_and_shopping,0.10237878294870741,0.097199999999999995,0,,,0.10237878294870741 -coef_0_auto_household_and_escorting_tour,-2,-2,0,-2,-2,-2 -coef_1_escort_tour_constant,-4.6370945761626077,-0.062899999999999998,0,,,-4.6370945761626077 -coef_1_plus_eating_out_tours_constant,-4.7784926750203027,-0.1429,0,,,-4.7784926750203027 -coef_1_plus_maintenance_tours_constant,-9.9288535518266823,-0.065299999999999997,0,,,-9.9288535518266823 -coef_1_plus_other_discretionary_tours_constant,-4.8073687191051899,0.33339999999999997,0,,,-4.8073687191051899 -coef_1_plus_shopping_tours_constant,-4.0132353551593232,0.46829999999999999,0,,,-4.0132353551593232 -coef_1_plus_visting_tours_constant,-4.8733834129994724,-0.12720000000000001,0,,,-4.8733834129994724 -coef_2_plus_escort_tours_constant,-8.967938948525461,0.92730000000000001,0,,,-8.967938948525461 -coef_at_home_pre_driving_school_kid_and_escorting_tour,-0.85247075086999724,-1.1479999999999999,0,,,-0.85247075086999724 -coef_at_home_pre_school_kid_and_eating_out_tour,0.60985731009359834,-0.3926,0,,,0.60985731009359834 -coef_at_home_pre_school_kid_and_escorting_tour,-0.061265250325528015,-0.13730000000000001,0,,,-0.061265250325528015 -coef_auto_access_to_retail_and_maintenance,0.61777145381329102,0.095600000000000004,0,,,0.61777145381329102 -coef_car_shortage_vs_workers_and_tour_frequency_is_1,-0.33803024620733235,-0.36230000000000001,0,,,-0.33803024620733235 -coef_car_shortage_vs_workers_and_tour_frequency_is_2,-1.4819665998101139,-1.272,0,,,-1.4819665998101139 -coef_car_shortage_vs_workers_and_tour_frequency_is_5_plus,-2.5557207485506246,-1.9307000000000001,0,,,-2.5557207485506246 -coef_car_surplus_vs_workers_and_tour_frequency_is_5_plus,3.121774566538436,0.77380000000000004,0,,,3.121774566538436 -coef_female_and_maintenance_tour,-0.24639047530045038,-0.24640000000000001,0,,,-0.24639047530045038 -coef_female_and_tour_frequency_is_1,0.74864834160230664,0.39019999999999999,0,,,0.74864834160230664 -coef_female_and_tour_frequency_is_2,0.67696554036131518,0.5323,0,,,0.67696554036131518 -coef_female_and_tour_frequency_is_3,1.281698729380099,0.74519999999999997,0,,,1.281698729380099 -coef_female_and_tour_frequency_is_5,2.3807456280650667,1.1294,0,,,2.3807456280650667 -coef_high_income_group_and_discretionary_tour,0.51835922730368678,0.88460000000000005,0,,,0.51835922730368678 -coef_high_income_group_and_eating_out_tour,1.5486575358906367,0.70860000000000001,0,,,1.5486575358906367 -coef_high_income_group_and_shopping_tour,0.72862383681691834,0.97760000000000002,0,,,0.72862383681691834 -coef_high_income_group_and_tour_frequency_is_2,19.097882832130001,1.0632999999999999,0,,,19.097882832130001 -coef_high_income_group_and_tour_frequency_is_3,19.408558066997916,1.7742,0,,,19.408558066997916 -coef_high_income_group_and_tour_frequency_is_5_plus,19.832444995943295,2.3940999999999999,0,,,19.832444995943295 -coef_high_income_group_and_visiting_tour,-0.54232747274109727,-0.94489999999999996,0,,,-0.54232747274109727 -coef_logged_maximum_residual_window_tour_frequency_is_1,6.5467446485012912,1.7637,0,,,6.5467446485012912 -coef_logged_maximum_residual_window_tour_frequency_is_5_plus,7.3593803409865783,1.7927999999999999,0,,,7.3593803409865783 -coef_mediumhigh_income_group_and_discretionary_tour,0.18835358603238547,0.50090000000000001,0,,,0.18835358603238547 -coef_mediumhigh_income_group_and_eating_out_tour,-0.18198447365326542,0.46310000000000001,0,,,-0.18198447365326542 -coef_mediumhigh_income_group_and_shopping_tour,1.2220802803491335,0.89059999999999995,0,,,1.2220802803491335 -coef_mediumhigh_income_group_and_tour_frequency_is_1,19.971750133805212,0.74260000000000004,0,,,19.971750133805212 -coef_mediumhigh_income_group_and_tour_frequency_is_2,19.468344647994446,0.85460000000000003,0,,,19.468344647994446 -coef_mediumhigh_income_group_and_tour_frequency_is_5_plus,19.731739849414112,1.0791999999999999,0,,,19.731739849414112 -coef_mediumhigh_income_group_and_visiting_tour,0.027868052585523006,-0.26700000000000002,0,,,0.027868052585523006 -coef_mediumlow_income_group_and_discretionary_tour,-0.31620776069124212,0.17069999999999999,0,,,-0.31620776069124212 -coef_mediumlow_income_group_and_eating_out_tour,0.64577775646714697,0.27660000000000001,0,,,0.64577775646714697 -coef_mediumlow_income_group_and_shopping_tour,0.55581824053699758,0.77339999999999998,0,,,0.55581824053699758 -coef_mediumlow_income_group_and_tour_frequency_is_1,17.934259369140999,0.57089999999999996,0,,,17.934259369140999 -coef_mediumlow_income_group_and_tour_frequency_is_5_plus,18.117542759840582,0.83150000000000002,0,,,18.117542759840582 -coef_number_of_joint_eating_out_tours,-13.182546391318507,-0.77270000000000005,0,,,-13.182546391318507 -coef_number_of_joint_shopping_tours,-16.839997040358107,-0.23910000000000001,0,,,-16.839997040358107 -coef_number_of_joint_tours_and_tour_frequency_is_1,-7.786577241296107,-0.1699,0,,,-7.786577241296107 -coef_number_of_joint_tours_and_tour_frequency_is_2,-9.7470048997804675,-0.42849999999999999,0,,,-9.7470048997804675 -coef_number_of_joint_tours_and_tour_frequency_is_3,-9.2917736869942509,-0.65510000000000002,0,,,-9.2917736869942509 -coef_number_of_joint_tours_and_tour_frequency_is_5_plus,-9.5554593661807772,-1.0410999999999999,0,,,-9.5554593661807772 -coef_number_of_mandatory_tours_and_tour_frequency_is_1,-0.67659999999999998,-0.67659999999999998,0,,,-0.67659999999999998 -coef_number_of_mandatory_tours_and_tour_frequency_is_3,-1.0518000000000001,-1.0518000000000001,0,,,-1.0518000000000001 -coef_number_of_mandatory_tours_and_tour_frequency_is_5_plus,-999,-999,0,-999,-999,-999 -coef_presence_of_full_time_worker_and_eating_out_tour,-1.3147958654758525,-0.4667,0,,,-1.3147958654758525 -coef_presence_of_full_time_worker_and_escorting_tour,0.35065195049774833,0.3947,0,,,0.35065195049774833 -coef_presence_of_non_worker_and_eating_out_tour,-0.40882607128740478,-0.49759999999999999,0,,,-0.40882607128740478 -coef_presence_of_non_worker_and_tour_frequency_is_1,1.8072738927257486,-0.37630000000000002,0,,,1.8072738927257486 -coef_presence_of_non_worker_and_tour_frequency_is_2,1.6043590091288431,-0.71899999999999997,0,,,1.6043590091288431 -coef_presence_of_non_worker_and_tour_frequency_is_5,2.2189804494458247,-1.0228999999999999,0,,,2.2189804494458247 -coef_presence_of_part_time_worker_and_discretionary_tour,-0.47082010921072343,-0.35449999999999998,0,,,-0.47082010921072343 -coef_presence_of_part_time_worker_and_escorting_tour,-0.93192205579588727,-0.58609999999999995,0,,,-0.93192205579588727 -coef_presence_of_pre_driving_school_kid_and_escorting_tour,1.6418290951424679,1.3773,0,,,1.6418290951424679 -coef_presence_of_pre_school_kid_and_escorting_tour,0.7399830171990065,0.71940000000000004,0,,,0.7399830171990065 -coef_presence_of_predriving_school_kid_in_household_and_tour_frequency_is_1,-3.592889456087303,0.14860000000000001,0,,,-3.592889456087303 -coef_presence_of_predriving_school_kid_in_household_and_tour_frequency_is_5,-3.4708451274125283,0.48399999999999999,0,,,-3.4708451274125283 -coef_presence_of_preschool_kid_in_household_and_tour_frequency_is_5,-3.861870451391785,-0.71609999999999996,0,,,-3.861870451391785 -coef_presence_of_retiree_and_eating_out_tour,-1.019099347827936,-0.69110000000000005,0,,,-1.019099347827936 -coef_presence_of_retiree_and_tour_frequency_is_1,2.0287807170341305,-0.46400000000000002,0,,,2.0287807170341305 -coef_presence_of_retiree_and_tour_frequency_is_5,1.9825418671121779,-0.47949999999999998,0,,,1.9825418671121779 -coef_total_number_of_tours_is_1,-23.000695056294269,-8.9791000000000007,0,,,-23.000695056294269 -coef_total_number_of_tours_is_2,-21.149512681682054,-12.024800000000001,0,,,-21.149512681682054 -coef_total_number_of_tours_is_3,-20.410765355763306,-14.851599999999999,0,,,-20.410765355763306 -coef_total_number_of_tours_is_4,-18.774647425097385,-17.703700000000001,0,,,-18.774647425097385 -coef_urban_and_discretionary_tour,0,0,0,0,0,0 -coef_walk_access_to_retail_and_discretionary,0.21406620307694346,0.077200000000000005,0,,,0.21406620307694346 -coef_walk_access_to_retail_and_shopping,0.039842855774011393,0.059799999999999999,0,,,0.039842855774011393 -coef_walk_access_to_retail_and_tour_frequency_is_1,-0.50693837400775899,0.071300000000000002,0,,,-0.50693837400775899 -coef_walk_access_to_retail_and_tour_frequency_is_2,-0.40382295711954785,0.12559999999999999,0,,,-0.40382295711954785 -coef_walk_access_to_retail_and_tour_frequency_is_5_plus,-0.26053331276767533,0.15079999999999999,0,,,-0.26053331276767533 -coef_0_auto_household_and_escorting_tour,-2,-2,0,-2,-2,-2 -coef_1_escort_tour_constant,-2.730596441707033,-0.3992,0,,,-2.730596441707033 -coef_1_plus_eating_out_tours_constant,-2.5833046285296968,0.024500000000000001,0,,,-2.5833046285296968 -coef_1_plus_maintenance_tours_constant,-2.2992187432888329,0.1046,0,,,-2.2992187432888329 -coef_1_plus_other_discretionary_tours_constant,-2.2431962112746411,0.42820000000000003,0,,,-2.2431962112746411 -coef_1_plus_shopping_tours_constant,-1.9166425444609607,0.59470000000000001,0,,,-1.9166425444609607 -coef_1_plus_visting_tours_constant,-2.3440181385910446,0.27889999999999998,0,,,-2.3440181385910446 -coef_2_plus_escort_tours_constant,-4.9359365117262612,0.51749999999999996,0,,,-4.9359365117262612 -coef_car_surplus_vs_workers_and_tour_frequency_is_1,3.0947542803847758,0.79649999999999999,0,,,3.0947542803847758 -coef_car_surplus_vs_workers_and_tour_frequency_is_5_plus,3.4758535212559294,2.1301999999999999,0,,,3.4758535212559294 -coef_female_and_discretionary_tour,0.54152756838822758,0.49540000000000001,0,,,0.54152756838822758 -coef_female_and_maintenance_tour,0.70832787326060975,0.74239999999999995,0,,,0.70832787326060975 -coef_female_and_shopping_tour,0.60931588761842026,0.96879999999999999,0,,,0.60931588761842026 -coef_female_and_tour_frequency_is_1,-2.5191550523228474,-0.93479999999999996,0,,,-2.5191550523228474 -coef_female_and_tour_frequency_is_2,-2.7271688013300479,-1.3028,0,,,-2.7271688013300479 -coef_female_and_tour_frequency_is_5,-4.1602031889993674,-2.266,0,,,-4.1602031889993674 -coef_high_income_group_and_discretionary_tour,0.92588438224313008,1.0095000000000001,0,,,0.92588438224313008 -coef_high_income_group_and_eating_out_tour,1.6244927835124816,1.4842,0,,,1.6244927835124816 -coef_high_income_group_and_maintenance_tour,1.0061046178584812,1.3794999999999999,0,,,1.0061046178584812 -coef_high_income_group_and_shopping_tour,1.1051711361584451,1.0949,0,,,1.1051711361584451 -coef_high_income_group_and_visiting_tour,-0.65666362660607858,-0.51370000000000005,0,,,-0.65666362660607858 -coef_logged_maximum_residual_window_tour_frequency_is_1,2.9665568629163652,1.8357000000000001,0,,,2.9665568629163652 -coef_logged_maximum_residual_window_tour_frequency_is_2,5.581416234805145,2.2707000000000002,0,,,5.581416234805145 -coef_logged_maximum_residual_window_tour_frequency_is_5_plus,31.909531343908711,4.4023000000000003,0,,,31.909531343908711 -coef_mediumhigh_income_group_and_eating_out_tour,0.96427913024112555,1.181,0,,,0.96427913024112555 -coef_mediumhigh_income_group_and_maintenance_tour,0.46535126543893468,0.76480000000000004,0,,,0.46535126543893468 -coef_mediumhigh_income_group_and_visiting_tour,-0.47816865355794147,-0.43680000000000002,0,,,-0.47816865355794147 -coef_mediumlow_income_group_and_eating_out_tour,0.87748591593357028,0.97689999999999999,0,,,0.87748591593357028 -coef_number_of_joint_shopping_tours,-0.29099820983920754,-0.80720000000000003,0,,,-0.29099820983920754 -coef_number_of_joint_tours_and_tour_frequency_is_2,-6.3271431915064547,-0.94999999999999996,0,,,-6.3271431915064547 -coef_number_of_joint_tours_and_tour_frequency_is_3,-85.627388567464422,-7.1429999999999998,0,,,-85.627388567464422 -coef_number_of_joint_tours_and_tour_frequency_is_5_plus,-999,-999,0,-999,-999,-999 -coef_number_of_mandatory_tours_and_tour_frequency_is_3,-5.0195999999999996,-5.0195999999999996,0,,,-5.0195999999999996 -coef_presence_of_full_time_worker_and_discretionary_tour,-0.33198445309738206,-0.48349999999999999,0,,,-0.33198445309738206 -coef_presence_of_full_time_worker_and_shopping_tour,-0.20732525834821677,-0.3609,0,,,-0.20732525834821677 -coef_presence_of_non_worker_and_discretionary_tour,-0.084103900991314984,-0.56030000000000002,0,,,-0.084103900991314984 -coef_presence_of_non_worker_and_eating_out_tour,-0.70153618577934562,-0.78800000000000003,0,,,-0.70153618577934562 -coef_presence_of_non_worker_and_tour_frequency_is_1,1.1906806536749803,0.224,0,,,1.1906806536749803 -coef_presence_of_non_worker_and_tour_frequency_is_2,1.3741954582206455,0.24360000000000001,0,,,1.3741954582206455 -coef_presence_of_non_worker_and_tour_frequency_is_3,2.1568221868185788,0.62,0,,,2.1568221868185788 -coef_presence_of_non_worker_and_tour_frequency_is_5,3.6943030762883984,3.3742000000000001,0,,,3.6943030762883984 -coef_presence_of_pre_driving_school_kid_and_escorting_tour,1.6828802924993791,1.4903,0,,,1.6828802924993791 -coef_presence_of_pre_school_kid_and_escorting_tour,0.64181265687243838,0.50270000000000004,0,,,0.64181265687243838 -coef_presence_of_retiree_and_eating_out_tour,-0.9446797599672041,-0.92820000000000003,0,,,-0.9446797599672041 -coef_presence_of_retiree_and_tour_frequency_is_1,0.32142426327796303,-0.44579999999999997,0,,,0.32142426327796303 -coef_presence_of_retiree_and_tour_frequency_is_5,-0.05124161320643273,-0.53149999999999997,0,,,-0.05124161320643273 -coef_total_number_of_tours_is_1,-14.532344602813701,-8.5684000000000005,0,,,-14.532344602813701 -coef_total_number_of_tours_is_2,-15.267479639550283,-12.7416,0,,,-15.267479639550283 -coef_total_number_of_tours_is_3,-15.029318290282511,-15.097799999999999,0,,,-15.029318290282511 -coef_total_number_of_tours_is_4,-14.905139738811323,-19.543900000000001,0,,,-14.905139738811323 -coef_total_number_of_tours_is_5,-27.549766404642561,-20.7897,0,,,-27.549766404642561 -coef_urban_and_discretionary_tour,0,0,0,0,0,0 -coef_walk_access_to_retail_and_tour_frequency_is_5_plus,0.69108202810785446,0.061600000000000002,0,,,0.69108202810785446 -coef_0_auto_household_and_escorting_tour,-289.81943839376481,-2,0,,,-289.81943839376481 -coef_1_escort_tour_constant,-6434.9613170821285,-0.49340000000000001,0,,,-6434.9613170821285 -coef_1_plus_eating_out_tours_constant,-3885.4119129943556,-0.024199999999999999,0,,,-3885.4119129943556 -coef_1_plus_maintenance_tours_constant,-1195.8070135696348,-0.43440000000000001,0,,,-1195.8070135696348 -coef_1_plus_other_discretionary_tours_constant,-2406.8061209898142,-0.26019999999999999,0,,,-2406.8061209898142 -coef_1_plus_shopping_tours_constant,-2389.30594524151,0.53200000000000003,0,,,-2389.30594524151 -coef_1_plus_visting_tours_constant,-2389.3059957968449,0.23669999999999999,0,,,-2389.3059957968449 -coef_2_plus_escort_tours_constant,-5667.6854005226833,1.4155,0,,,-5667.6854005226833 -coef_auto_access_to_retail_and_tour_frequency_is_5_plus,-44.188372748106481,0.1004,0,,,-44.188372748106481 -coef_car_shortage_vs_workers_and_tour_frequency_is_5_plus,-17232.832070588393,-0.63690000000000002,0,,,-17232.832070588393 -coef_car_surplus_vs_workers_and_tour_frequency_is_1,-4035.619541886927,0.29020000000000001,0,,,-4035.619541886927 -coef_car_surplus_vs_workers_and_tour_frequency_is_5_plus,15225.992542144893,2.0352000000000001,0,,,15225.992542144893 -coef_high_income_group_and_discretionary_tour,4481.0843932231746,2.327,0,,,4481.0843932231746 -coef_high_income_group_and_eating_out_tour,-3157.2738344019517,0.49159999999999998,0,,,-3157.2738344019517 -coef_high_income_group_and_maintenance_tour,4461.4848620401744,0.3982,0,,,4461.4848620401744 -coef_high_income_group_and_shopping_tour,4461.3908032762156,0.24429999999999999,0,,,4461.3908032762156 -coef_high_income_group_and_visiting_tour,4461.3908519450242,0.2858,0,,,4461.3908519450242 -coef_logged_maximum_residual_window_tour_frequency_is_1,16.594329465647881,1.3298000000000001,0,,,16.594329465647881 -coef_logged_maximum_residual_window_tour_frequency_is_2,-19742.937757107196,1.3758999999999999,0,,,-19742.937757107196 -coef_logged_maximum_residual_window_tour_frequency_is_5_plus,-11491.665678473473,3.2808000000000002,0,,,-11491.665678473473 -coef_mediumhigh_income_group_and_discretionary_tour,572.84750941634763,1.405,0,,,572.84750941634763 -coef_mediumlow_income_group_and_discretionary_tour,-4429.9422108889057,0.91690000000000005,0,,,-4429.9422108889057 -coef_number_of_joint_tours_and_tour_frequency_is_1,-4180.3539679243559,-0.2162,0,,,-4180.3539679243559 -coef_number_of_joint_tours_and_tour_frequency_is_2,-1606.5028797398816,-0.35870000000000002,0,,,-1606.5028797398816 -coef_number_of_joint_tours_and_tour_frequency_is_3,-109.81932871468001,-4.2701000000000002,0,,,-109.81932871468001 -coef_number_of_joint_tours_and_tour_frequency_is_5_plus,-999,-999,0,-999,-999,-999 -coef_number_of_mandatory_tours_and_tour_frequency_is_1,-16877.023969621659,-0.23400000000000001,0,,,-16877.023969621659 -coef_number_of_mandatory_tours_and_tour_frequency_is_2,12620.764595473987,-0.92310000000000003,0,,,12620.764595473987 -coef_number_of_mandatory_tours_and_tour_frequency_is_3,-4861.9979116103832,-6.5834999999999999,0,,,-4861.9979116103832 -coef_presence_of_driving_school_kid_and_discretionary_tour,-578.87207263924711,-0.92020000000000002,0,,,-578.87207263924711 -coef_presence_of_driving_school_kid_and_eating_out_tour,6.3817283359748718,-0.63770000000000004,0,,,6.3817283359748718 -coef_presence_of_non_worker_and_tour_frequency_is_2,878.00882728962233,-0.65710000000000002,0,,,878.00882728962233 -coef_presence_of_non_worker_and_tour_frequency_is_5,-1944.9226435678067,-1.4044000000000001,0,,,-1944.9226435678067 -coef_presence_of_pre_driving_school_kid_and_eating_out_tour,-164.90625497529834,-1.5698000000000001,0,,,-164.90625497529834 -coef_presence_of_pre_school_kid_and_eating_out_tour,313.47630877463621,-0.29870000000000002,0,,,313.47630877463621 -coef_presence_of_predriving_school_kid_in_household_and_tour_frequency_is_1,4033.5668708392936,-0.32190000000000002,0,,,4033.5668708392936 -coef_presence_of_predriving_school_kid_in_household_and_tour_frequency_is_5,10149.331976157329,-1.0873999999999999,0,,,10149.331976157329 -coef_presence_of_university_student_and_discretionary_tour,3906.3784034663036,-1.2834000000000001,0,,,3906.3784034663036 -coef_total_number_of_tours_is_1,15200.662336544106,-7.1505999999999998,0,,,15200.662336544106 -coef_total_number_of_tours_is_2,-1638.5561861275439,-11.1214,0,,,-1638.5561861275439 -coef_total_number_of_tours_is_3,-14010.60832366959,-13.175000000000001,0,,,-14010.60832366959 -coef_urban_and_discretionary_tour,0,0,0,0,0,0 -coef_urban_and_maintenance_tour,-1194.333213569586,1.0394000000000001,0,,,-1194.333213569586 -coef_0_auto_household_and_escorting_tour,-2,-2,0,-2,-2,-2 -coef_1_escort_tour_constant,-1.5720814237734582,-0.75509999999999999,0,,,-1.5720814237734582 -coef_1_plus_eating_out_tours_constant,-2.2222102013387453,1.1145,0,,,-2.2222102013387453 -coef_1_plus_maintenance_tours_constant,-1.4971354138568955,-0.50600000000000001,0,,,-1.4971354138568955 -coef_1_plus_other_discretionary_tours_constant,0.090817823541839565,0.46339999999999998,0,,,0.090817823541839565 -coef_1_plus_shopping_tours_constant,1.4746879181605808,0.4783,0,,,1.4746879181605808 -coef_1_plus_visting_tours_constant,-1.7926081421309932,-0.40060000000000001,0,,,-1.7926081421309932 -coef_2_plus_escort_tours_constant,-2.0596227390284212,-0.0086,0,,,-2.0596227390284212 -coef_auto_access_to_retail_and_escorting,0.55510802136078319,0.062899999999999998,0,,,0.55510802136078319 -coef_high_income_group_and_eating_out_tour,-1.3619797807034295,-0.70099999999999996,0,,,-1.3619797807034295 -coef_high_income_group_and_shopping_tour,-3.7366703425339884,-0.65059999999999996,0,,,-3.7366703425339884 -coef_high_income_group_and_tour_frequency_is_5_plus,16.017262145435474,2.0175000000000001,0,,,16.017262145435474 -coef_logged_maximum_residual_window_tour_frequency_is_5_plus,1.5260250309714616,1.5603,0,,,1.5260250309714616 -coef_mediumhigh_income_group_and_tour_frequency_is_5_plus,15.096813647053857,1.5197000000000001,0,,,15.096813647053857 -coef_mediumlow_income_group_and_tour_frequency_is_5_plus,14.227758877255997,1.0872999999999999,0,,,14.227758877255997 -coef_number_of_joint_maintenance_tours,-1.3475999999999999,-1.3475999999999999,0,,,-1.3475999999999999 -coef_number_of_joint_tours_and_tour_frequency_is_2,-1.1971153311644798,-0.6149,0,,,-1.1971153311644798 -coef_number_of_joint_tours_and_tour_frequency_is_5_plus,-999,-999,0,-999,-999,-999 -coef_number_of_mandatory_tours_and_tour_frequency_is_1,-9.8896793584290901,-1.0330999999999999,0,,,-9.8896793584290901 -coef_number_of_mandatory_tours_and_tour_frequency_is_3,-10.675107092433787,-2.7444999999999999,0,,,-10.675107092433787 -coef_presence_of_full_time_worker_and_discretionary_tour,0.16721747201730811,0.75260000000000005,0,,,0.16721747201730811 -coef_presence_of_non_worker_and_eating_out_tour,-1.2956623157773164,-1.3073999999999999,0,,,-1.2956623157773164 -coef_presence_of_non_worker_and_shopping_tour,-1.353669617377284,-0.64500000000000002,0,,,-1.353669617377284 -coef_presence_of_non_worker_and_tour_frequency_is_5,-0.43468555779873808,0.2177,0,,,-0.43468555779873808 -coef_presence_of_part_time_worker_and_discretionary_tour,-0.34215511287271527,0.37209999999999999,0,,,-0.34215511287271527 -coef_presence_of_pre_driving_school_kid_and_shopping_tour,1.4153790711463878,0.9365,0,,,1.4153790711463878 -coef_presence_of_predriving_school_kid_in_household_and_tour_frequency_is_5,0.29018085236023033,-0.22639999999999999,0,,,0.29018085236023033 -coef_presence_of_preschool_kid_in_household_and_tour_frequency_is_5,0.32894398996272695,-0.44390000000000002,0,,,0.32894398996272695 -coef_total_number_of_tours_is_1,-11.291182385016718,-7.4863,0,,,-11.291182385016718 -coef_total_number_of_tours_is_2,-13.228339349370408,-10.718,0,,,-13.228339349370408 -coef_total_number_of_tours_is_3,-14.184904611232321,-13.788399999999999,0,,,-14.184904611232321 -coef_urban_and_discretionary_tour,0,0,0,0,0,0 -coef_urban_and_escorting_tour,-4.4838269018301071,0.43519999999999998,0,,,-4.4838269018301071 -coef_walk_access_to_retail_and_eating_out,0.40010315143817771,0.073800000000000004,0,,,0.40010315143817771 -coef_0_auto_household_and_escorting_tour,-2,-2,0,-2,-2,-2 -coef_1_escort_tour_constant,0.17965076785235903,0.36220000000000002,0,,,0.17965076785235903 -coef_1_plus_eating_out_tours_constant,0.20482664652109922,0.96120000000000005,0,,,0.20482664652109922 -coef_1_plus_maintenance_tours_constant,0.073169219104483346,0.67879999999999996,0,,,0.073169219104483346 -coef_1_plus_other_discretionary_tours_constant,1.1336617402336022,1.4935,0,,,1.1336617402336022 -coef_1_plus_shopping_tours_constant,0.78536748101077303,1.6919,0,,,0.78536748101077303 -coef_1_plus_visting_tours_constant,-0.01128610640731513,0.44240000000000002,0,,,-0.01128610640731513 -coef_2_plus_escort_tours_constant,1.7444288874445422,2.2219000000000002,0,,,1.7444288874445422 -coef_discretionary_tour,0.54316174023360153,0.90300000000000002,0,,,0.54316174023360153 -coef_escorting_tour,1.3535085427415612,2.4910000000000001,0,,,1.3535085427415612 -coef_maintenance_tour,0.41636921910448493,1.022,0,,,0.41636921910448493 -coef_presence_of_full_time_worker_and_escorting_tour,-0.61349175561144009,-0.89300000000000002,0,,,-0.61349175561144009 -coef_presence_of_non_worker_and_discretionary_tour,0.01387890311352221,0.79100000000000004,0,,,0.01387890311352221 -coef_presence_of_non_worker_and_eating_out_tour,1.1150524768977683,1.157,0,,,1.1150524768977683 -coef_presence_of_non_worker_and_escorting_tour,0.89099305834953102,0.89000000000000001,0,,,0.89099305834953102 -coef_presence_of_non_worker_and_shopping_tour,0.23105344171814296,0.80800000000000005,0,,,0.23105344171814296 -coef_presence_of_part_time_worker_and_eating_out_tour,1.3926752534763249,1.0369999999999999,0,,,1.3926752534763249 -coef_presence_of_part_time_worker_and_shopping_tour,1.0440437570455019,1.155,0,,,1.0440437570455019 -coef_total_number_of_tours_is_1,-4.4367465516985458,-5.7590000000000003,0,,,-4.4367465516985458 -coef_total_number_of_tours_is_2,-9.0395579310490177,-11.516999999999999,0,,,-9.0395579310490177 -coef_total_number_of_tours_is_3,-12.714428561518217,-17.276,0,,,-12.714428561518217 -coef_total_number_of_tours_is_4,-29.080351094611324,-23.035,0,,,-29.080351094611324 -coef_total_number_of_tours_is_6_plus,-999,-999,0,-999,-999,-999 -coef_urban_and_discretionary_tour,0,0,0,0,0,0 -coef_visiting_or_social_tour,0.31531389359268519,0.76900000000000002,0,,,0.31531389359268519 +param_name,value,best,initvalue,nullvalue +coef_0_auto_household_and_escorting_tour,-2,-2,-2,0 +coef_1_escort_tour_constant,0.4427992642013524,0.4427992642013524,0.029799999669194221,0 +coef_1_plus_eating_out_tours_constant,-0.55916615444423889,-0.55916615444423889,0.0097000002861022949,0 +coef_1_plus_maintenance_tours_constant,-0.048218934526752716,-0.048218934526752716,0.12020000070333481,0 +coef_1_plus_other_discretionary_tours_constant,1.1187985007824965,1.1187985007824965,0.74119997024536133,0 +coef_1_plus_shopping_tours_constant,0.80935601218553088,0.80935601218553088,0.47740000486373901,0 +coef_1_plus_visting_tours_constant,0.32772255127625538,0.32772255127625538,0.052200000733137131,0 +coef_2_plus_escort_tours_constant,0.86516558906506291,0.86516558906506291,0.7401999831199646,0 +coef_at_home_pre_driving_school_kid_and_escorting_tour,-1.1058628439891163,-1.1058628439891163,-0.27459999918937683,0 +coef_at_home_pre_school_kid_and_discretionary_tour,-0.70795142385539511,-0.70795142385539511,-0.47029998898506165,0 +coef_at_home_pre_school_kid_and_escorting_tour,-0.59160407292839623,-0.59160407292839623,-1.5674999952316284,0 +coef_auto_access_to_retail_and_discretionary,0.045130482105384076,0.045130482105384076,0.084399998188018799,0 +coef_auto_access_to_retail_and_maintenance,0.066126086285235641,0.066126086285235641,0.074900001287460327,0 +coef_auto_access_to_retail_and_shopping,0.12409575232027123,0.12409575232027123,0.10670000314712524,0 +coef_car_surplus_vs_workers_and_tour_frequency_is_5_plus,0.17885689584708081,0.17885689584708081,0.13040000200271606,0 +coef_female_and_escorting_tour,0.56410426544507486,0.56410426544507486,0.18240000307559967,0 +coef_female_and_tour_frequency_is_1,-0.30708391029855547,-0.30708391029855547,-0.076600000262260437,0 +coef_female_and_tour_frequency_is_2,-0.55559756867326349,-0.55559756867326349,-0.10620000213384628,0 +coef_female_and_tour_frequency_is_5,0.018075964162005607,0.018075964162005607,-0.32739999890327454,0 +coef_high_income_group_and_discretionary_tour,-0.091486067503143295,-0.091486067503143295,0.2565000057220459,0 +coef_high_income_group_and_eating_out_tour,0.72625729628634217,0.72625729628634217,0.55809998512268066,0 +coef_high_income_group_and_tour_frequency_is_1,1.155230706967018,1.155230706967018,0.51889997720718384,0 +coef_high_income_group_and_tour_frequency_is_2,2.3389197436575069,2.3389197436575069,1.1335999965667725,0 +coef_high_income_group_and_tour_frequency_is_5_plus,0.47586062840136895,0.47586062840136895,1.3898999691009521,0 +coef_high_income_group_and_visiting_tour,-0.86542592778132377,-0.86542592778132377,-0.24230000376701355,0 +coef_logged_maximum_residual_window_tour_frequency_is_1,1.3596125256366514,1.3596125256366514,1.2561999559402466,0 +coef_logged_maximum_residual_window_tour_frequency_is_2,1.4369987512243636,1.4369987512243636,1.2868000268936157,0 +coef_logged_maximum_residual_window_tour_frequency_is_5_plus,0.84347379326069005,0.84347379326069005,1.3992999792098999,0 +coef_mediumhigh_income_group_and_tour_frequency_is_1,1.1094796643673868,1.1094796643673868,0.49810001254081726,0 +coef_mediumhigh_income_group_and_tour_frequency_is_2,1.9181926670959439,1.9181926670959439,0.8345000147819519,0 +coef_mediumhigh_income_group_and_tour_frequency_is_5_plus,1.3393581345532311,1.3393581345532311,1.0212999582290649,0 +coef_number_of_joint_eating_out_tours,-1.7726850801344511,-1.7726850801344511,-0.58660000562667847,0 +coef_number_of_mandatory_tours_and_tour_frequency_is_2,-1.4026438175955793,-1.4026438175955793,-0.88870000839233398,0 +coef_number_of_mandatory_tours_and_tour_frequency_is_5_plus,-2.025313408839498,-2.025313408839498,-2.3343000411987305,0 +coef_presence_of_driving_school_kid_and_discretionary_tour,0.33629833566221962,0.33629833566221962,-0.39629998803138733,0 +coef_presence_of_driving_school_kid_and_escorting_tour,-0.19071865882881728,-0.19071865882881728,0.36010000109672546,0 +coef_presence_of_full_time_worker_and_discretionary_tour,-0.75882600647076048,-0.75882600647076048,-0.66699999570846558,0 +coef_presence_of_full_time_worker_and_eating_out_tour,-0.73960069695319364,-0.73960069695319364,-0.35710000991821289,0 +coef_presence_of_full_time_worker_and_maintenance_tour,-0.38630750284054705,-0.38630750284054705,-0.16850000619888306,0 +coef_presence_of_full_time_worker_and_shopping_tour,-0.60182073500121425,-0.60182073500121425,-0.30590000748634338,0 +coef_presence_of_non_worker_and_discretionary_tour,-1.2394724190464534,-1.2394724190464534,-0.42809998989105225,0 +coef_presence_of_non_worker_and_eating_out_tour,-0.43749171051759073,-0.43749171051759073,-0.20139999687671661,0 +coef_presence_of_non_worker_and_escorting_tour,-0.92810302506396747,-0.92810302506396747,-0.48149999976158142,0 +coef_presence_of_non_worker_and_maintenance_tour,-0.25135759242376515,-0.25135759242376515,-0.32370001077651978,0 +coef_presence_of_non_worker_and_shopping_tour,-0.81193650011085927,-0.81193650011085927,-0.41600000858306885,0 +coef_presence_of_part_time_worker_and_discretionary_tour,-0.037914012004716779,-0.037914012004716779,-0.2101999968290329,0 +coef_presence_of_part_time_worker_and_maintenance_tour,-0.18845880952367774,-0.18845880952367774,-0.15839999914169312,0 +coef_presence_of_part_time_worker_and_shopping_tour,-0.13360094221187135,-0.13360094221187135,-0.15410000085830688,0 +coef_presence_of_pre_driving_school_kid_and_discretionary_tour,-0.098195561407346782,-0.098195561407346782,-0.39590001106262207,0 +coef_presence_of_pre_driving_school_kid_and_escorting_tour,1.4005304562436685,1.4005304562436685,1.3974000215530396,0 +coef_presence_of_pre_school_kid_and_discretionary_tour,0.0018788117570303462,0.0018788117570303462,-0.50809997320175171,0 +coef_presence_of_pre_school_kid_and_eating_out_tour,-0.86481034258984602,-0.86481034258984602,-0.42250001430511475,0 +coef_presence_of_pre_school_kid_and_escorting_tour,0.74141629258937403,0.74141629258937403,0.6841999888420105,0 +coef_presence_of_pre_school_kid_and_shopping_tour,-0.018826868013972368,-0.018826868013972368,-0.20800000429153442,0 +coef_presence_of_retiree_and_discretionary_tour,-0.56414341094868059,-0.56414341094868059,-0.91039997339248657,0 +coef_presence_of_retiree_and_eating_out_tour,-1.2971397912010263,-1.2971397912010263,-0.57080000638961792,0 +coef_presence_of_retiree_and_escorting_tour,-3.9791405866488541,-3.9791405866488541,-0.80800002813339233,0 +coef_presence_of_university_student_and_discretionary_tour,-0.35370106427869641,-0.35370106427869641,-0.85509997606277466,0 +coef_total_number_of_tours_is_1,-8.0929871920905487,-8.0929871920905487,-7.3572001457214355,0 +coef_total_number_of_tours_is_2,-11.373665685061901,-11.373665685061901,-10.647000312805176,0 +coef_total_number_of_tours_is_3,-13.230959643793058,-13.230959643793058,-13.500499725341797,0 +coef_total_number_of_tours_is_4,-15.595277265944466,-15.595277265944466,-16.396499633789062,0 +coef_total_number_of_tours_is_5,-19.867033359049749,-19.867033359049749,-19.684299468994141,0 +coef_total_number_of_tours_is_6_plus,-999,-999,-999,0 +coef_transit_access_to_retail_and_tour_frequency_is_5_plus,0.050586414602862534,0.050586414602862534,0.022600000724196434,0 +coef_urban_and_discretionary_tour,0,0,0,0 +coef_urban_and_escorting_tour,0.23133047198776119,0.23133047198776119,-0.43160000443458557,0 +coef_walk_access_to_retail_and_discretionary,0.035768845177126592,0.035768845177126592,0.056699998676776886,0 +coef_walk_access_to_retail_and_eating_out,0.23990162152188213,0.23990162152188213,0.14499999582767487,0 +coef_walk_access_to_retail_and_escorting,-0.12003056391798796,-0.12003056391798796,0.045099999755620956,0 +coef_walk_access_to_retail_and_shopping,-0.045608290266312995,-0.045608290266312995,0.032999999821186066,0 +coef_zero_car_ownership_and_tour_frequency_is_5_plus,-0.2160690015503576,-0.2160690015503576,-0.34860000014305115,0 +coef_0_auto_household_and_escorting_tour,-2,-2,-2,0 +coef_1_escort_tour_constant,0.78022647864874106,0.78022647864874106,0.52719998359680176,0 +coef_1_plus_eating_out_tours_constant,1.6369882471832848,1.6369882471832848,0.69139999151229858,0 +coef_1_plus_maintenance_tours_constant,1.2611597485996247,1.2611597485996247,0.55330002307891846,0 +coef_1_plus_other_discretionary_tours_constant,1.8042028984875396,1.8042028984875396,0.79890000820159912,0 +coef_1_plus_shopping_tours_constant,1.4577278573241144,1.4577278573241144,0.75690001249313354,0 +coef_1_plus_visting_tours_constant,1.0730718283709404,1.0730718283709404,0.14049999415874481,0 +coef_2_plus_escort_tours_constant,1.8729239069881625,1.8729239069881625,1.5987000465393066,0 +coef_car_shortage_vs_workers_and_tour_frequency_is_5_plus,0.047550202162169208,0.047550202162169208,-0.54979997873306274,0 +coef_female_and_discretionary_tour,0.44246508408459873,0.44246508408459873,0.30720001459121704,0 +coef_female_and_shopping_tour,0.72280754095601429,0.72280754095601429,0.45239999890327454,0 +coef_high_income_group_and_discretionary_tour,0.17993929507162121,0.17993929507162121,0.29600000381469727,0 +coef_high_income_group_and_maintenance_tour,1.2972259045977341,1.2972259045977341,0.67629998922348022,0 +coef_high_income_group_and_shopping_tour,0.87248673602279736,0.87248673602279736,0.70660001039505005,0 +coef_high_income_group_and_tour_frequency_is_1,1.2363061506956392,1.2363061506956392,0.86820000410079956,0 +coef_high_income_group_and_tour_frequency_is_2,1.3997702009895265,1.3997702009895265,1.5362000465393066,0 +coef_high_income_group_and_tour_frequency_is_5_plus,1.5247592588483323,1.5247592588483323,1.9330999851226807,0 +coef_high_income_group_and_visiting_tour,-0.58407376090955276,-0.58407376090955276,-0.68680000305175781,0 +coef_logged_maximum_residual_window_tour_frequency_is_1,0.78207461828672042,0.78207461828672042,1.5748000144958496,0 +coef_logged_maximum_residual_window_tour_frequency_is_5_plus,1.2295616602720314,1.2295616602720314,2.0025999546051025,0 +coef_mediumhigh_income_group_and_shopping_tour,0.64569736253979326,0.64569736253979326,0.44209998846054077,0 +coef_mediumlow_income_group_and_tour_frequency_is_1,0.88613463643879131,0.88613463643879131,0.59810000658035278,0 +coef_mediumlow_income_group_and_tour_frequency_is_2,0.84850399647408248,0.84850399647408248,0.91780000925064087,0 +coef_mediumlow_income_group_and_tour_frequency_is_5_plus,0.87831822891977274,0.87831822891977274,1.7539000511169434,0 +coef_number_of_joint_tours_and_tour_frequency_is_4,-1.2633997095537546,-1.2633997095537546,-1.1986000537872314,0 +coef_number_of_joint_tours_and_tour_frequency_is_5_plus,-999,-999,-999,0 +coef_number_of_mandatory_tours_and_tour_frequency_is_1,-0.94282353171733657,-0.94282353171733657,-0.23899999260902405,0 +coef_number_of_mandatory_tours_and_tour_frequency_is_2,-2.7338328554607796,-2.7338328554607796,-1.8207999467849731,0 +coef_number_of_mandatory_tours_and_tour_frequency_is_5_plus,-2.6682909569935234,-2.6682909569935234,-2.5922999382019043,0 +coef_presence_of_driving_school_kid_and_escorting_tour,1.0188615044012985,1.0188615044012985,0.41639998555183411,0 +coef_presence_of_full_time_worker_and_maintenance_tour,-0.48961457222493282,-0.48961457222493282,-0.31310001015663147,0 +coef_presence_of_non_worker_and_discretionary_tour,-0.57727792649553333,-0.57727792649553333,-1.0370999574661255,0 +coef_presence_of_non_worker_and_eating_out_tour,-0.21267685745459988,-0.21267685745459988,-0.65450000762939453,0 +coef_presence_of_non_worker_and_escorting_tour,-0.59185572336636527,-0.59185572336636527,-0.52630001306533813,0 +coef_presence_of_part_time_worker_and_maintenance_tour,-1.0186820306196382,-1.0186820306196382,-0.56209999322891235,0 +coef_presence_of_pre_driving_school_kid_and_escorting_tour,1.7856557294189983,1.7856557294189983,1.5794999599456787,0 +coef_presence_of_pre_school_kid_and_escorting_tour,0.27408822617776946,0.27408822617776946,0.54140001535415649,0 +coef_presence_of_preschool_kid_in_household_and_tour_frequency_is_1,0.30438027742581492,0.30438027742581492,-0.15590000152587891,0 +coef_presence_of_preschool_kid_in_household_and_tour_frequency_is_5,-0.52997357567752201,-0.52997357567752201,-0.5680999755859375,0 +coef_presence_of_retiree_and_eating_out_tour,0.057141478624328376,0.057141478624328376,-1.3890000581741333,0 +coef_presence_of_retiree_and_escorting_tour,-0.44904086319222258,-0.44904086319222258,-0.75160002708435059,0 +coef_presence_of_university_student_and_eating_out_tour,-1.819545601982254,-1.819545601982254,-1.4318000078201294,0 +coef_total_number_of_tours_is_1,-7.0159278521309831,-7.0159278521309831,-7.6391000747680664,0 +coef_total_number_of_tours_is_2,-10.006686059458314,-10.006686059458314,-10.455699920654297,0 +coef_total_number_of_tours_is_3,-12.780090082076166,-12.780090082076166,-14.017600059509277,0 +coef_total_number_of_tours_is_4,-17.006726946049447,-17.006726946049447,-16.971700668334961,0 +coef_urban_and_discretionary_tour,0,0,0,0 +coef_urban_and_escorting_tour,0.40857422586786191,0.40857422586786191,-0.39289999008178711,0 +coef_walk_access_to_retail_and_tour_frequency_is_1,0.091591528383907397,0.091591528383907397,0.089900001883506775,0 +coef_walk_access_to_retail_and_tour_frequency_is_2,0.12013944932753479,0.12013944932753479,0.14470000565052032,0 +coef_walk_access_to_retail_and_tour_frequency_is_5_plus,0.043892915968164865,0.043892915968164865,0.34790000319480896,0 +coef_0_auto_household_and_escorting_tour,-2,-2,-2,0 +coef_1_escort_tour_constant,1.8320083268912393,1.8320081212504946,1.7028000354766846,0 +coef_1_plus_eating_out_tours_constant,-13.842117153486281,-13.842113426324161,2.0722999572753906,0 +coef_1_plus_maintenance_tours_constant,-0.36965786889297769,-0.36965847869322271,0.33480000495910645,0 +coef_1_plus_other_discretionary_tours_constant,-1.2004258495977875,-1.2004252032682035,1.3388999700546265,0 +coef_1_plus_shopping_tours_constant,1.9630014272782856,1.9630010920712406,1.8402999639511108,0 +coef_1_plus_visting_tours_constant,1.0077266905164448,1.0077264438102758,1.2172000408172607,0 +coef_2_plus_escort_tours_constant,2.7101792728099783,2.7101793241888337,2.837899923324585,0 +coef_auto_access_to_retail_and_discretionary,0.60576917052564894,0.60576901559373153,0.093999996781349182,0 +coef_auto_access_to_retail_and_eating_out,3.2803304602848562,3.2803296298812761,0.10180000215768814,0 +coef_car_shortage_vs_workers_and_tour_frequency_is_5_plus,-1.1286721006590705,-1.1286716773156127,-0.58099997043609619,0 +coef_female_and_discretionary_tour,-0.27866976927760068,-0.27866980957578169,-0.32659998536109924,0 +coef_female_and_eatingout_tour,-0.71346970397905807,-0.71346918819904392,-0.65679997205734253,0 +coef_female_and_tour_frequency_is_1,-0.48821855191385899,-0.48821751083893139,0.097300000488758087,0 +coef_female_and_tour_frequency_is_2,0.70828217386581849,0.70828183909772424,0.23610000312328339,0 +coef_female_and_tour_frequency_is_5,2.0698314021941049,2.0698320315070937,1.9002000093460083,0 +coef_high_income_group_and_eating_out_tour,-1.7871396439814193,-1.7871393359274383,-0.72070002555847168,0 +coef_high_income_group_and_shopping_tour,-0.0097579376258961487,-0.0097578081985406004,0.56929999589920044,0 +coef_high_income_group_and_tour_frequency_is_1,1.4527093121517425,1.4527099923825588,0.3986000120639801,0 +coef_high_income_group_and_tour_frequency_is_2,0.90039297576289479,0.90039284655601348,0.80089998245239258,0 +coef_high_income_group_and_tour_frequency_is_5_plus,-6.947254854872086,-6.9472539654420844,0.82539999485015869,0 +coef_high_income_group_and_visiting_tour,-0.77942127489278434,-0.77942163984758739,-0.36939999461174011,0 +coef_logged_maximum_residual_window_tour_frequency_is_0,0.26793790497643488,0.26793818025889998,1.1857999563217163,0 +coef_logged_maximum_residual_window_tour_frequency_is_5_plus,2.4020620521081604,2.4020617768256951,1.4842000007629395,0 +coef_mediumhigh_income_group_and_tour_frequency_is_1,0.4738896197844194,0.4738898434218578,0.11089999973773956,0 +coef_mediumhigh_income_group_and_tour_frequency_is_2,2.1475070128100544,2.1475072544785649,0.39140000939369202,0 +coef_mediumhigh_income_group_and_tour_frequency_is_5_plus,3.9137980844922171,3.9137982636389732,0.61369997262954712,0 +coef_number_of_joint_discretionary_tours,-6.8227040161278429,-6.8227030499165631,0.67129999399185181,0 +coef_number_of_joint_shopping_tours,-4.5845196404815836,-4.5845189614516721,-0.71299999952316284,0 +coef_number_of_joint_tours_and_tour_frequency_is_2,-9.1761287341051698,-9.1761275454648299,-0.31529998779296875,0 +coef_number_of_joint_tours_and_tour_frequency_is_3,-1.7257215207841496,-1.7257219586505792,-0.73509997129440308,0 +coef_number_of_joint_tours_and_tour_frequency_is_5_plus,-999,-999,-999,0 +coef_number_of_mandatory_tours_and_tour_frequency_is_1,-0.64122576357731442,-0.64122588480735709,-0.18520000576972961,0 +coef_number_of_mandatory_tours_and_tour_frequency_is_2,-1.7823789287319811,-1.7823796487869576,-0.87529999017715454,0 +coef_number_of_mandatory_tours_and_tour_frequency_is_3,-2.9941269208431893,-2.9941272442555316,-1.6158000230789185,0 +coef_presence_of_full_time_worker_and_discretionary_tour,-1.1123947161390522,-1.1123952221405766,-0.48330000042915344,0 +coef_presence_of_full_time_worker_and_eating_out_tour,0.7644158078010701,0.76441605865788576,-0.5250999927520752,0 +coef_presence_of_full_time_worker_and_shopping_tour,-0.47330099399200232,-0.4733010233040793,-0.7728000283241272,0 +coef_presence_of_non_worker_and_discretionary_tour,-0.59088716119227658,-0.59088747572415357,0.9781000018119812,0 +coef_presence_of_non_worker_and_tour_frequency_is_1,0.1878408165883074,0.18784146495376636,-0.85060000419616699,0 +coef_presence_of_non_worker_and_tour_frequency_is_5,-0.17945867023496131,-0.17945929629633911,-1.180400013923645,0 +coef_presence_of_part_time_worker_and_eating_out_tour,-3.2345296325509101,-3.234529777482781,-1.9795000553131104,0 +coef_presence_of_part_time_worker_and_escorting_tour,-2.2546395276485063,-2.2546394925137023,-1.8213000297546387,0 +coef_presence_of_part_time_worker_and_shopping_tour,-0.7496461309021506,-0.74964534531823057,-0.51990002393722534,0 +coef_presence_of_pre_driving_school_kid_and_escorting_tour,-0.083989210795650721,-0.083989664675771999,0.94889998435974121,0 +coef_presence_of_pre_driving_school_kid_and_maintenance_tour,0.053444488601664397,0.053444497296591398,0.38629999756813049,0 +coef_presence_of_pre_school_kid_and_escorting_tour,1.725644687339964,1.7256441682495762,2.1465001106262207,0 +coef_presence_of_pre_school_kid_and_maintenance_tour,-0.5795847743089354,-0.57958494820750939,0.96939998865127563,0 +coef_presence_of_pre_school_kid_and_shopping_tour,0.45827102667224523,0.45827002311694837,1.3135000467300415,0 +coef_presence_of_preschool_kid_in_household_and_tour_frequency_is_1,-2.0326667193288683,-2.0326652307764594,-0.99610000848770142,0 +coef_presence_of_preschool_kid_in_household_and_tour_frequency_is_2,-0.71238012908852999,-0.71237818006976983,-1.9096000194549561,0 +coef_presence_of_preschool_kid_in_household_and_tour_frequency_is_5,-0.20193836611977739,-0.201935994121831,-2.8468999862670898,0 +coef_presence_of_university_student_and_discretionary_tour,0.066507097009832913,0.066507630930055919,-0.65420001745223999,0 +coef_presence_of_university_student_and_eating_out_tour,-0.42018064953666173,-0.42018066679895533,-0.65289998054504395,0 +coef_total_number_of_tours_is_1,-8.6552470544456295,-8.6552472298372294,-6.2137999534606934,0 +coef_total_number_of_tours_is_2,-11.339670857033484,-11.33967023685339,-8.9079999923706055,0 +coef_total_number_of_tours_is_3,-14.129960972164627,-14.129960682683405,-12.32610034942627,0 +coef_total_number_of_tours_is_4,-17.475109164095372,-17.475108877724633,-15.811400413513184,0 +coef_transit_access_to_retail_and_discretionary,0,0,0,0 +coef_transit_access_to_retail_and_maintenance,0.25155766645491617,0.25155779901079267,0.031399998813867569,0 +coef_transit_access_to_retail_and_tour_frequency_is_5_plus,0.20940431632076822,0.20940454322004187,0.066399998962879181,0 +coef_urban_and_discretionary_tour,-1.5830257994345194,-1.5830251531049353,0.95630002021789551,0 +coef_urban_and_eatingout_tour,-15.234417103609095,-15.234413376446975,0.68000000715255737,0 +coef_urban_and_escorting_tour,0.72536698170688063,0.72536687882384698,0.85159999132156372,0 +coef_urban_and_maintenance_tour,0.32714212462203368,0.32714151482178866,1.0315999984741211,0 +coef_urban_and_shopping_tour,0.65570145569778049,0.65570112049073548,0.53299999237060547,0 +coef_urban_and_tour_frequency_is_1,-3.606247148859373,-3.6062473242509725,-1.1648000478744507,0 +coef_urban_and_tour_frequency_is_2,-4.7493707738730677,-4.7493701536929747,-2.3176999092102051,0 +coef_urban_and_tour_frequency_is_5_plus,-5.9702694637288616,-5.9702688878768999,-2.5027000904083252,0 +coef_walk_access_to_retail_and_shopping,0.10528331492362221,0.1052833269153322,0.097199998795986176,0 +coef_0_auto_household_and_escorting_tour,-2,-2,-2,0 +coef_1_escort_tour_constant,-1.8969002612948864,-1.8972809252170171,-0.06289999932050705,0 +coef_1_plus_eating_out_tours_constant,-2.0443889188163173,-2.0448333669216079,-0.1429000049829483,0 +coef_1_plus_maintenance_tours_constant,-7.7254359495798148,-7.7270897339714733,-0.065300002694129944,0 +coef_1_plus_other_discretionary_tours_constant,-2.0647872487949561,-2.0651921993347462,0.33340001106262207,0 +coef_1_plus_shopping_tours_constant,-1.282411214400667,-1.2827907558560692,0.46830001473426819,0 +coef_1_plus_visting_tours_constant,-2.1187265722127613,-2.119130128830065,-0.12720000743865967,0 +coef_2_plus_escort_tours_constant,-3.4882178837837579,-3.4889221159472918,0.92729997634887695,0 +coef_at_home_pre_driving_school_kid_and_escorting_tour,-0.83394458908199209,-0.83391904211683632,-1.1480000019073486,0 +coef_at_home_pre_school_kid_and_eating_out_tour,0.6315649245505468,0.63153544170594222,-0.39259999990463257,0 +coef_at_home_pre_school_kid_and_escorting_tour,-0.08455563088757391,-0.084558517582898715,-0.13729999959468842,0 +coef_auto_access_to_retail_and_maintenance,0.67210093938356752,0.67223833895969887,0.095600001513957977,0 +coef_car_shortage_vs_workers_and_tour_frequency_is_1,0.22076749188228875,0.22093605520065349,-0.36230000853538513,0 +coef_car_shortage_vs_workers_and_tour_frequency_is_2,-0.9349732023831957,-0.93482141743941694,-1.2719999551773071,0 +coef_car_shortage_vs_workers_and_tour_frequency_is_5_plus,-2.0213316139356832,-2.0212701718601216,-1.9306999444961548,0 +coef_car_surplus_vs_workers_and_tour_frequency_is_5_plus,3.5090722695093683,3.5095724879606411,0.77380001544952393,0 +coef_female_and_maintenance_tour,-0.24827336118817248,-0.24851003473203095,-0.24639999866485596,0 +coef_female_and_tour_frequency_is_1,0.55537913022754337,0.55558571844411853,0.39019998908042908,0 +coef_female_and_tour_frequency_is_2,0.4700121436993433,0.47033652415332988,0.53229999542236328,0 +coef_female_and_tour_frequency_is_3,1.0935778897473212,1.0937278933542067,0.74519997835159302,0 +coef_female_and_tour_frequency_is_5,2.1058304843489379,2.1060351207036332,1.1294000148773193,0 +coef_high_income_group_and_discretionary_tour,0.53542200030194598,0.53532544473639576,0.88459998369216919,0 +coef_high_income_group_and_eating_out_tour,1.5430004952789953,1.5430357486801614,0.70859998464584351,0 +coef_high_income_group_and_shopping_tour,0.72248005627607348,0.72246863725799271,0.97759997844696045,0 +coef_high_income_group_and_tour_frequency_is_2,4.8659060743107148,4.8667865382550879,1.0633000135421753,0 +coef_high_income_group_and_tour_frequency_is_3,5.1569073742137981,5.1577005315354292,1.7741999626159668,0 +coef_high_income_group_and_tour_frequency_is_5_plus,5.5695995714955888,5.5703869156647645,2.3940999507904053,0 +coef_high_income_group_and_visiting_tour,-0.55652923789707232,-0.55654488685220238,-0.94489997625350952,0 +coef_logged_maximum_residual_window_tour_frequency_is_1,6.8143657923425485,6.815671298679093,1.763700008392334,0 +coef_logged_maximum_residual_window_tour_frequency_is_5_plus,7.4778936905915021,7.4792750296860024,1.7927999496459961,0 +coef_mediumhigh_income_group_and_discretionary_tour,0.19484718211939026,0.1949087350001007,0.50089997053146362,0 +coef_mediumhigh_income_group_and_eating_out_tour,-0.17900832259277194,-0.17895101978739814,0.46309998631477356,0 +coef_mediumhigh_income_group_and_shopping_tour,1.2056310249094397,1.2056460380629153,0.89060002565383911,0 +coef_mediumhigh_income_group_and_tour_frequency_is_1,6.1357755555537432,6.1368619389686074,0.74260002374649048,0 +coef_mediumhigh_income_group_and_tour_frequency_is_2,5.6203221150091016,5.621312928169897,0.85460001230239868,0 +coef_mediumhigh_income_group_and_tour_frequency_is_5_plus,5.902275082711002,5.9033024674122805,1.0792000293731689,0 +coef_mediumhigh_income_group_and_visiting_tour,0.0072888420909105259,0.0072425497797064513,-0.2669999897480011,0 +coef_mediumlow_income_group_and_discretionary_tour,-0.29540295644751735,-0.29532964571554288,0.17069999873638153,0 +coef_mediumlow_income_group_and_eating_out_tour,0.65802264858986625,0.65793719500149939,0.27660000324249268,0 +coef_mediumlow_income_group_and_shopping_tour,0.5503864174305747,0.55034836543703713,0.77340000867843628,0 +coef_mediumlow_income_group_and_tour_frequency_is_1,3.6362917244942166,3.6370680682721321,0.57090002298355103,0 +coef_mediumlow_income_group_and_tour_frequency_is_5_plus,3.8030230281375874,3.8037930038540892,0.83149999380111694,0 +coef_number_of_joint_eating_out_tours,-5.7578659480764109,-5.7590292220149779,-0.77270001173019409,0 +coef_number_of_joint_shopping_tours,-10.86032878033782,-10.862820539578552,-0.23909999430179596,0 +coef_number_of_joint_tours_and_tour_frequency_is_1,-3.5806784726726657,-3.5814001794995587,-0.16990000009536743,0 +coef_number_of_joint_tours_and_tour_frequency_is_2,-5.1193513695195279,-5.1202366413321725,-0.42849999666213989,0 +coef_number_of_joint_tours_and_tour_frequency_is_3,-4.6446726603410955,-4.6456045066231875,-0.65509998798370361,0 +coef_number_of_joint_tours_and_tour_frequency_is_5_plus,-4.8470304959707029,-4.8478742633711249,-1.041100025177002,0 +coef_number_of_mandatory_tours_and_tour_frequency_is_1,-0.67659997940063477,-0.67659997940063477,-0.67659997940063477,0 +coef_number_of_mandatory_tours_and_tour_frequency_is_3,-1.051800012588501,-1.051800012588501,-1.051800012588501,0 +coef_number_of_mandatory_tours_and_tour_frequency_is_5_plus,-999,-999,-999,0 +coef_presence_of_full_time_worker_and_eating_out_tour,-1.3129272099813087,-1.3129546317286533,-0.4666999876499176,0 +coef_presence_of_full_time_worker_and_escorting_tour,0.34977167501271478,0.3497410147889421,0.39469999074935913,0 +coef_presence_of_non_worker_and_eating_out_tour,-0.40015678475147548,-0.40015646938307892,-0.49759998917579651,0 +coef_presence_of_non_worker_and_tour_frequency_is_1,1.2564012158056577,1.2568441721992365,-0.37630000710487366,0 +coef_presence_of_non_worker_and_tour_frequency_is_2,1.0428547824447958,1.0433986649176088,-0.71899998188018799,0 +coef_presence_of_non_worker_and_tour_frequency_is_5,1.6729377444156812,1.673362537920315,-1.0228999853134155,0 +coef_presence_of_part_time_worker_and_discretionary_tour,-0.46853620786950861,-0.46851175171192849,-0.35449999570846558,0 +coef_presence_of_part_time_worker_and_escorting_tour,-0.91620401760820491,-0.91626917282183395,-0.58609998226165771,0 +coef_presence_of_pre_driving_school_kid_and_escorting_tour,1.645226868283342,1.6452028413894657,1.3773000240325928,0 +coef_presence_of_pre_school_kid_and_escorting_tour,0.73413015866674558,0.73411877105653434,0.71939998865127563,0 +coef_presence_of_predriving_school_kid_in_household_and_tour_frequency_is_1,-4.2717006949434637,-4.2727718042560454,0.14859999716281891,0 +coef_presence_of_predriving_school_kid_in_household_and_tour_frequency_is_5,-4.1531060929831938,-4.1542847014169757,0.48399999737739563,0 +coef_presence_of_preschool_kid_in_household_and_tour_frequency_is_5,-4.0092293410093136,-4.0100024764367959,-0.71609997749328613,0 +coef_presence_of_retiree_and_eating_out_tour,-0.98695379970331221,-0.98695373145616694,-0.69110000133514404,0 +coef_presence_of_retiree_and_tour_frequency_is_1,2.3328682638704601,2.3340717788338958,-0.46399998664855957,0 +coef_presence_of_retiree_and_tour_frequency_is_5,2.2895526967814139,2.2902926082161419,-0.47949999570846558,0 +coef_total_number_of_tours_is_1,-14.862387943118435,-14.863701190898123,-8.979100227355957,0 +coef_total_number_of_tours_is_2,-15.76114107396082,-15.762046562760142,-12.024800300598145,0 +coef_total_number_of_tours_is_3,-17.754112538361621,-17.754634820463089,-14.85159969329834,0 +coef_total_number_of_tours_is_4,-18.779593636700369,-18.779689721119343,-17.703699111938477,0 +coef_urban_and_discretionary_tour,0,0,0,0 +coef_walk_access_to_retail_and_discretionary,0.21083331596043739,0.21082887854988322,0.07720000296831131,0 +coef_walk_access_to_retail_and_shopping,0.042414728322429048,0.042410061719515363,0.059799998998641968,0 +coef_walk_access_to_retail_and_tour_frequency_is_1,-0.73146719824169415,-0.73175969660042617,0.071299999952316284,0 +coef_walk_access_to_retail_and_tour_frequency_is_2,-0.6224679003604594,-0.62275823201236125,0.12559999525547028,0 +coef_walk_access_to_retail_and_tour_frequency_is_5_plus,-0.48317718182460601,-0.48343535149985983,0.15080000460147858,0 +coef_0_auto_household_and_escorting_tour,-2,-2,-2,0 +coef_1_escort_tour_constant,-1.3838956479528135,-1.3838955598311522,-0.39919999241828918,0 +coef_1_plus_eating_out_tours_constant,-1.2251820468944299,-1.2251815896798568,0.024499999359250069,0 +coef_1_plus_maintenance_tours_constant,-0.9467390901603373,-0.94673868292188801,0.10459999740123749,0 +coef_1_plus_other_discretionary_tours_constant,-0.95705700168035457,-0.95705640502785616,0.42820000648498535,0 +coef_1_plus_shopping_tours_constant,-0.56851096405906976,-0.56851065297640646,0.59469997882843018,0 +coef_1_plus_visting_tours_constant,-0.99997515158264494,-0.99997480861181898,0.27889999747276306,0 +coef_2_plus_escort_tours_constant,-2.2472239741783695,-2.2472230312575778,0.51749998331069946,0 +coef_car_surplus_vs_workers_and_tour_frequency_is_1,2.6263187421217502,2.6263182643290257,0.79650002717971802,0 +coef_car_surplus_vs_workers_and_tour_frequency_is_5_plus,3.0138266039361694,3.0138263991996164,2.1301999092102051,0 +coef_female_and_discretionary_tour,0.57421820949821378,0.57421776265903679,0.49540001153945923,0 +coef_female_and_maintenance_tour,0.7032371772890682,0.70323730968090981,0.74239999055862427,0 +coef_female_and_shopping_tour,0.60749249967525931,0.60749236436044163,0.96880000829696655,0 +coef_female_and_tour_frequency_is_1,-2.3057887932980217,-2.3057879644985477,-0.93480002880096436,0 +coef_female_and_tour_frequency_is_2,-2.5245735788315185,-2.5245730541075631,-1.3028000593185425,0 +coef_female_and_tour_frequency_is_5,-3.9777594453014777,-3.9777585979711256,-2.2660000324249268,0 +coef_high_income_group_and_discretionary_tour,0.96176887062837879,0.9617690305973885,1.0095000267028809,0 +coef_high_income_group_and_eating_out_tour,1.6107399863189256,1.6107399132659015,1.4842000007629395,0 +coef_high_income_group_and_maintenance_tour,0.99860462074351897,0.99860457400478175,1.3795000314712524,0 +coef_high_income_group_and_shopping_tour,1.0955552497273626,1.0955552433296207,1.0949000120162964,0 +coef_high_income_group_and_visiting_tour,-0.62823584789675457,-0.62823569014018499,-0.51370000839233398,0 +coef_logged_maximum_residual_window_tour_frequency_is_1,2.0411409487638097,2.0411408722900823,1.8357000350952148,0 +coef_logged_maximum_residual_window_tour_frequency_is_2,5.0543518983412508,5.0543512662707899,2.2706999778747559,0 +coef_logged_maximum_residual_window_tour_frequency_is_5_plus,5.1028111260779792,5.1028109074006487,4.4022998809814453,0 +coef_mediumhigh_income_group_and_eating_out_tour,0.9601832770329618,0.96018319037111421,1.1809999942779541,0 +coef_mediumhigh_income_group_and_maintenance_tour,0.46026894334674823,0.46026867052213322,0.76480001211166382,0 +coef_mediumhigh_income_group_and_visiting_tour,-0.47448562479929113,-0.47448576085276917,-0.43680000305175781,0 +coef_mediumlow_income_group_and_eating_out_tour,0.8587186097762155,0.85871850010116635,0.97689998149871826,0 +coef_number_of_joint_shopping_tours,-0.34163048458137285,-0.34163086120064357,-0.80720001459121704,0 +coef_number_of_joint_tours_and_tour_frequency_is_2,-7.40575378545664,-7.4057519268091907,-0.94999998807907104,0 +coef_number_of_joint_tours_and_tour_frequency_is_3,-8.2528437399202961,-8.2528434839801079,-7.1430001258850098,0 +coef_number_of_joint_tours_and_tour_frequency_is_5_plus,-999,-999,-999,0 +coef_number_of_mandatory_tours_and_tour_frequency_is_3,-5.0195999145507812,-5.0195999145507812,-5.0195999145507812,0 +coef_presence_of_full_time_worker_and_discretionary_tour,-0.32502706520068697,-0.3250272176315594,-0.48350000381469727,0 +coef_presence_of_full_time_worker_and_shopping_tour,-0.18718310533550805,-0.18718290004050162,-0.36090001463890076,0 +coef_presence_of_non_worker_and_discretionary_tour,-0.080381601681135048,-0.080381489052422414,-0.56029999256134033,0 +coef_presence_of_non_worker_and_eating_out_tour,-0.71343718792066768,-0.71343705083784981,-0.78799998760223389,0 +coef_presence_of_non_worker_and_tour_frequency_is_1,1.3664318707961971,1.3664313016982996,0.22400000691413879,0 +coef_presence_of_non_worker_and_tour_frequency_is_2,1.5541568438314686,1.5541565822514429,0.24359999597072601,0 +coef_presence_of_non_worker_and_tour_frequency_is_3,2.3378066705431362,2.3378063973066343,0.62000000476837158,0 +coef_presence_of_non_worker_and_tour_frequency_is_5,3.886799486754084,3.8867989469114872,3.3742001056671143,0 +coef_presence_of_pre_driving_school_kid_and_escorting_tour,1.6990307296529008,1.6990305339512453,1.4903000593185425,0 +coef_presence_of_pre_school_kid_and_escorting_tour,0.64317839301043844,0.64317845433272425,0.50269997119903564,0 +coef_presence_of_retiree_and_eating_out_tour,-0.93915814650169016,-0.93915820457557886,-0.92820000648498535,0 +coef_presence_of_retiree_and_tour_frequency_is_1,0.53309324048384155,0.53309327034571541,-0.44580000638961792,0 +coef_presence_of_retiree_and_tour_frequency_is_5,0.15143338882997009,0.15143298802740426,-0.53149998188018799,0 +coef_total_number_of_tours_is_1,-12.29669710898526,-12.296696353770589,-8.5684003829956055,0 +coef_total_number_of_tours_is_2,-14.366430853959836,-14.366430219226835,-12.741600036621094,0 +coef_total_number_of_tours_is_3,-15.470851663726473,-15.47085200579302,-15.097800254821777,0 +coef_total_number_of_tours_is_4,-16.697442099429654,-16.697442489781661,-19.543899536132812,0 +coef_total_number_of_tours_is_5,-23.975944547216859,-23.975943616807008,-20.789699554443359,0 +coef_urban_and_discretionary_tour,0,0,0,0 +coef_walk_access_to_retail_and_tour_frequency_is_5_plus,0.50908621780365026,0.50908614236387195,0.061599999666213989,0 +coef_0_auto_household_and_escorting_tour,-2.4007662488833401,-2.4007662488833401,-2,0 +coef_1_escort_tour_constant,-11.100045881453859,-11.100045881453859,-0.49340000748634338,0 +coef_1_plus_eating_out_tours_constant,-12.674000548814972,-12.674000548814972,-0.024199999868869781,0 +coef_1_plus_maintenance_tours_constant,1.4021937042970116,1.4021937042970116,-0.43439999222755432,0 +coef_1_plus_other_discretionary_tours_constant,-2.4760858637499221,-2.4760858637499221,-0.26019999384880066,0 +coef_1_plus_shopping_tours_constant,5.1109144099794959,5.1109144099794959,0.53200000524520874,0 +coef_1_plus_visting_tours_constant,5.1132912897133904,5.1132912897133904,0.23669999837875366,0 +coef_2_plus_escort_tours_constant,-4.7231718945294894,-4.7231718945294894,1.4155000448226929,0 +coef_auto_access_to_retail_and_tour_frequency_is_5_plus,-2.8928262121700787,-2.8928262121700787,0.10040000081062317,0 +coef_car_shortage_vs_workers_and_tour_frequency_is_5_plus,-23.462489242832998,-23.462489242832998,-0.63690000772476196,0 +coef_car_surplus_vs_workers_and_tour_frequency_is_1,-11.054245969090358,-11.054245969090358,0.29019999504089355,0 +coef_car_surplus_vs_workers_and_tour_frequency_is_5_plus,26.810453753037919,26.810453753037919,2.0352001190185547,0 +coef_high_income_group_and_discretionary_tour,9.3746353630306327,9.3746353630306327,2.3269999027252197,0 +coef_high_income_group_and_eating_out_tour,-8.894067988889379,-8.894067988889379,0.49160000681877136,0 +coef_high_income_group_and_maintenance_tour,-0.37810556759048242,-0.37810556759048242,0.39820000529289246,0 +coef_high_income_group_and_shopping_tour,-0.46662150365308386,-0.46662150365308386,0.2442999929189682,0 +coef_high_income_group_and_visiting_tour,-0.46885622247201569,-0.46885622247201569,0.28580000996589661,0 +coef_logged_maximum_residual_window_tour_frequency_is_1,15.538672905979983,15.538672905979983,1.329800009727478,0 +coef_logged_maximum_residual_window_tour_frequency_is_2,-15.31294086052077,-15.31294086052077,1.3759000301361084,0 +coef_logged_maximum_residual_window_tour_frequency_is_5_plus,-2.8783154540415228,-2.8783154540415228,3.2808001041412354,0 +coef_mediumhigh_income_group_and_discretionary_tour,2.8464215562810216,2.8464215562810216,1.4049999713897705,0 +coef_mediumlow_income_group_and_discretionary_tour,-7.8393223758039596,-7.8393223758039596,0.91689997911453247,0 +coef_number_of_joint_tours_and_tour_frequency_is_1,-6.5374366056093152,-6.5374366056093152,-0.21619999408721924,0 +coef_number_of_joint_tours_and_tour_frequency_is_2,-4.4265938354565844,-4.4265938354565844,-0.35870000720024109,0 +coef_number_of_joint_tours_and_tour_frequency_is_3,-4.2928228670338138,-4.2928228670338138,-4.2701001167297363,0 +coef_number_of_joint_tours_and_tour_frequency_is_5_plus,-999,-999,-999,0 +coef_number_of_mandatory_tours_and_tour_frequency_is_1,-20.768569059727319,-20.768569059727319,-0.23399999737739563,0 +coef_number_of_mandatory_tours_and_tour_frequency_is_2,13.166961657521094,13.166961657521094,-0.92309999465942383,0 +coef_number_of_mandatory_tours_and_tour_frequency_is_3,-9.1884865390771271,-9.1884865390771271,-6.5834999084472656,0 +coef_presence_of_driving_school_kid_and_discretionary_tour,-1.5287699271825661,-1.5287699271825661,-0.92019999027252197,0 +coef_presence_of_driving_school_kid_and_eating_out_tour,-0.67899286342910536,-0.67899286342910536,-0.63770002126693726,0 +coef_presence_of_non_worker_and_tour_frequency_is_2,7.8203518915786985,7.8203518915786985,-0.65710002183914185,0 +coef_presence_of_non_worker_and_tour_frequency_is_5,-2.3380879397360088,-2.3380879397360088,-1.4043999910354614,0 +coef_presence_of_pre_driving_school_kid_and_eating_out_tour,-2.8548975360289837,-2.8548975360289837,-1.5698000192642212,0 +coef_presence_of_pre_school_kid_and_eating_out_tour,-1.1155840296979183,-1.1155840296979183,-0.2987000048160553,0 +coef_presence_of_predriving_school_kid_in_household_and_tour_frequency_is_1,7.9990670481874249,7.9990670481874249,-0.32190001010894775,0 +coef_presence_of_predriving_school_kid_in_household_and_tour_frequency_is_5,9.8647248326504506,9.8647248326504506,-1.087399959564209,0 +coef_presence_of_university_student_and_discretionary_tour,4.5866749933879518,4.5866749933879518,-1.2834000587463379,0 +coef_total_number_of_tours_is_1,5.7323576505278915,5.7323576505278915,-7.1505999565124512,0 +coef_total_number_of_tours_is_2,-13.716885058175075,-13.716885058175075,-11.121399879455566,0 +coef_total_number_of_tours_is_3,-24.558188200243801,-24.558188200243801,-13.175000190734863,0 +coef_urban_and_discretionary_tour,0,0,0,0 +coef_urban_and_maintenance_tour,2.8759936780232791,2.8759936780232791,1.0393999814987183,0 +coef_0_auto_household_and_escorting_tour,-2,-2,-2,0 +coef_1_escort_tour_constant,-0.80019821892406418,-0.80019821892406418,-0.75510001182556152,0 +coef_1_plus_eating_out_tours_constant,-2.2137830257191138,-2.2137830257191138,1.1145000457763672,0 +coef_1_plus_maintenance_tours_constant,-0.87384629825268301,-0.87384629825268301,-0.50599998235702515,0 +coef_1_plus_other_discretionary_tours_constant,0.6794818887801406,0.6794818887801406,0.46340000629425049,0 +coef_1_plus_shopping_tours_constant,1.9914236119221842,1.9914236119221842,0.47830000519752502,0 +coef_1_plus_visting_tours_constant,-1.1732951429240632,-1.1732951429240632,-0.40059998631477356,0 +coef_2_plus_escort_tours_constant,-0.52085404537857938,-0.52085404537857938,-0.0086000002920627594,0 +coef_auto_access_to_retail_and_escorting,0.14995921405552753,0.14995921405552753,0.06289999932050705,0 +coef_high_income_group_and_eating_out_tour,-1.2746622030953361,-1.2746622030953361,-0.70099997520446777,0 +coef_high_income_group_and_shopping_tour,-3.6565535610834519,-3.6565535610834519,-0.65060001611709595,0 +coef_high_income_group_and_tour_frequency_is_5_plus,8.6597646574930796,8.6597646574930796,2.0174999237060547,0 +coef_logged_maximum_residual_window_tour_frequency_is_5_plus,1.56299641940097,1.56299641940097,1.5602999925613403,0 +coef_mediumhigh_income_group_and_tour_frequency_is_5_plus,7.735469931243947,7.735469931243947,1.5197000503540039,0 +coef_mediumlow_income_group_and_tour_frequency_is_5_plus,6.8720130507569017,6.8720130507569017,1.0872999429702759,0 +coef_number_of_joint_maintenance_tours,-1.347599983215332,-1.347599983215332,-1.347599983215332,0 +coef_number_of_joint_tours_and_tour_frequency_is_2,-1.2555358714256173,-1.2555358714256173,-0.61489999294281006,0 +coef_number_of_joint_tours_and_tour_frequency_is_5_plus,-999,-999,-999,0 +coef_number_of_mandatory_tours_and_tour_frequency_is_1,-5.0803581001504661,-5.0803581001504661,-1.0331000089645386,0 +coef_number_of_mandatory_tours_and_tour_frequency_is_3,-5.8935586600908669,-5.8935586600908669,-2.7444999217987061,0 +coef_presence_of_full_time_worker_and_discretionary_tour,0.19647967582561615,0.19647967582561615,0.75260001420974731,0 +coef_presence_of_non_worker_and_eating_out_tour,-1.3548917345809393,-1.3548917345809393,-1.3073999881744385,0 +coef_presence_of_non_worker_and_shopping_tour,-1.3398609967955151,-1.3398609967955151,-0.64499998092651367,0 +coef_presence_of_non_worker_and_tour_frequency_is_5,-0.42351455281362266,-0.42351455281362266,0.21770000457763672,0 +coef_presence_of_part_time_worker_and_discretionary_tour,-0.33314199741532502,-0.33314199741532502,0.37209999561309814,0 +coef_presence_of_pre_driving_school_kid_and_shopping_tour,1.4440737444047911,1.4440737444047911,0.93650001287460327,0 +coef_presence_of_predriving_school_kid_in_household_and_tour_frequency_is_5,0.29958946114398161,0.29958946114398161,-0.22640000283718109,0 +coef_presence_of_preschool_kid_in_household_and_tour_frequency_is_5,0.32067429398079011,0.32067429398079011,-0.44389998912811279,0 +coef_total_number_of_tours_is_1,-9.4531005722326533,-9.4531005722326533,-7.486299991607666,0 +coef_total_number_of_tours_is_2,-11.996770119024941,-11.996770119024941,-10.718000411987305,0 +coef_total_number_of_tours_is_3,-13.550028148803801,-13.550028148803801,-13.788399696350098,0 +coef_urban_and_discretionary_tour,0,0,0,0 +coef_urban_and_escorting_tour,-0.6344062915018166,-0.6344062915018166,0.43520000576972961,0 +coef_walk_access_to_retail_and_eating_out,0.48030056947070726,0.48030056947070726,0.073799997568130493,0 +coef_0_auto_household_and_escorting_tour,-2,-2,-2,0 +coef_1_escort_tour_constant,0.39617684877862708,0.39617684877862708,0.36219999194145203,0 +coef_1_plus_eating_out_tours_constant,1.4990449238097932,1.4990449238097932,0.96119999885559082,0 +coef_1_plus_maintenance_tours_constant,0.71287833893706021,0.71287833893706021,0.67879998683929443,0 +coef_1_plus_other_discretionary_tours_constant,1.7799792001679569,1.7799792001679569,1.4934999942779541,0 +coef_1_plus_shopping_tours_constant,2.0942830938898398,2.0942830938898398,1.6919000148773193,0 +coef_1_plus_visting_tours_constant,0.62786207413189388,0.62786207413189388,0.4424000084400177,0 +coef_2_plus_escort_tours_constant,2.1826221262636776,2.1826221262636776,2.2218999862670898,0 +coef_discretionary_tour,1.1894792030289798,1.1894792030289798,0.90299999713897705,0 +coef_escorting_tour,2.4464210738878447,2.4464210738878447,2.4909999370574951,0 +coef_maintenance_tour,1.0560783072750726,1.0560783072750726,1.0219999551773071,0 +coef_presence_of_full_time_worker_and_escorting_tour,-0.6300922367614431,-0.6300922367614431,-0.89300000667572021,0 +coef_presence_of_non_worker_and_discretionary_tour,-0.0080480967981517125,-0.0080480967981517125,0.79100000858306885,0 +coef_presence_of_non_worker_and_eating_out_tour,1.1025455434303448,1.1025455434303448,1.156999945640564,0 +coef_presence_of_non_worker_and_escorting_tour,0.86673078874996601,0.86673078874996601,0.88999998569488525,0 +coef_presence_of_non_worker_and_shopping_tour,0.20878201493509621,0.20878201493509621,0.80800002813339233,0 +coef_presence_of_part_time_worker_and_eating_out_tour,1.3767801830490909,1.3767801830490909,1.0369999408721924,0 +coef_presence_of_part_time_worker_and_shopping_tour,1.0143615015555587,1.0143615015555587,1.1549999713897705,0 +coef_total_number_of_tours_is_1,-5.7103540103201968,-5.7103540103201968,-5.7589998245239258,0 +coef_total_number_of_tours_is_2,-11.596952013557841,-11.596952013557841,-11.517000198364258,0 +coef_total_number_of_tours_is_3,-16.568257064319742,-16.568257064319742,-17.275999069213867,0 +coef_total_number_of_tours_is_4,-23.18757470591768,-23.18757470591768,-23.034999847412109,0 +coef_total_number_of_tours_is_6_plus,-999,-999,-999,0 +coef_urban_and_discretionary_tour,0,0,0,0 +coef_visiting_or_social_tour,0.95446205949299312,0.95446205949299312,0.76899999380111694,0 diff --git a/activitysim/estimation/test/test_larch_estimation/test_nonmand_tour_freq_loglike.csv b/activitysim/estimation/test/test_larch_estimation/test_nonmand_tour_freq_loglike.csv index 7e2418faf..9dea4a6b4 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_nonmand_tour_freq_loglike.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_nonmand_tour_freq_loglike.csv @@ -1,9 +1,9 @@ ,loglike_prior,loglike_converge -0,-36.842915290359244,-13.427352349597697 -1,-1867.7130849406183,-1831.0744991065408 -2,-1076.3668030822264,-1038.9605638228181 -3,-877.44304962652359,-856.8595081575636 -4,-230.6429613110198,-225.00971520122775 -5,-806.81758251120061,-787.40004316431327 -6,-277.18561139007045,-256.78783280769073 -7,-358.3650717429976,-324.85841724064665 +0,-36.842915240821576,-13.63752199393485 +1,-1867.7130819595852,-1832.6445382071518 +2,-1076.3667995930466,-1039.2235240389089 +3,-877.44304860975865,-856.98760672658591 +4,-230.64296021604497,-225.07312798066818 +5,-806.81757896884028,-787.83786863094554 +6,-277.18561178415462,-256.90644089706086 +7,-358.36507163326337,-324.9104211327566 diff --git a/activitysim/estimation/test/test_larch_estimation/test_scheduling_model_atwork_subtour_scheduling_SLSQP_.csv b/activitysim/estimation/test/test_larch_estimation/test_scheduling_model_atwork_subtour_scheduling_SLSQP_.csv deleted file mode 100644 index 1e5284852..000000000 --- a/activitysim/estimation/test/test_larch_estimation/test_scheduling_model_atwork_subtour_scheduling_SLSQP_.csv +++ /dev/null @@ -1,50 +0,0 @@ -,value,initvalue,nullvalue,minimum,maximum,best -coef_am_peak_end,-1.3731693426269276,-2.928312295,0,-25,25,-1.3731693426269276 -coef_am_peak_start_at_6,-20.592813760446127,-6.1567178269999996,0,-25,25,-20.592813760446127 -coef_am_peak_start_at_7,-2.8269839190766564,-4.0617081419999996,0,-25,25,-2.8269839190766564 -coef_am_peak_start_at_8,-1.1965282925054144,-2.330535201,0,-25,25,-1.1965282925054144 -coef_am_peak_start_at_9,-1.6198974929815253,-1.881593386,0,-25,25,-1.6198974929815253 -coef_dummy_for_business_related_purpose_and_duration_from_0_to_1,-0.66312907740821159,-1.5429999999999999,0,-25,25,-0.66312907740821159 -coef_dummy_for_eating_out_purpose_and_departure_at_11,1.1518273421311946,1.5109999999999999,0,-25,25,1.1518273421311946 -coef_dummy_for_eating_out_purpose_and_departure_at_12,2.6254363230451085,2.7210000000000001,0,-25,25,2.6254363230451085 -coef_dummy_for_eating_out_purpose_and_departure_at_13,2.36098076410833,2.1219999999999999,0,-25,25,2.36098076410833 -coef_dummy_for_eating_out_purpose_and_duration_of_1_hour,0.31040519075637613,0.39989999999999998,0,-25,25,0.31040519075637613 -coef_duration_of_0_hours,9.9599848609439601,-0.90668151200000002,0,-25,25,9.9599848609439601 -coef_duration_of_11_to_13_hours,-0.37405450634311865,0.29999999999999999,0,-25,25,-0.37405450634311865 -coef_duration_of_14_to_18_hours,0,0,0,0,0,0 -coef_duration_of_1_hour,0,0,0,0,0,0 -coef_duration_of_2_to_3_hours,9.1812833977279276,-1.3621758020000001,0,-25,25,9.1812833977279276 -coef_duration_of_4_to_5_hours,-0.48314094706644228,-0.81961761600000005,0,-25,25,-0.48314094706644228 -coef_duration_of_6_to_7_hours,10.535613300026082,1.088111072,0,-25,25,10.535613300026082 -coef_duration_of_8_to_10_hours,10.402182684572614,1.734038505,0,-25,25,10.402182684572614 -coef_duration_shift_for_business_related_,0.60004385998820309,0.2646,0,-25,25,0.60004385998820309 -coef_duration_shift_for_first_sub_tour_of_same_work_tour,0.31988469057309121,-0.3992,0,-25,25,0.31988469057309121 -coef_duration_shift_for_inbound_auto_travel_time_off_peak,-0.11857498443158188,0.0098099999999999993,0,-25,25,-0.11857498443158188 -coef_duration_shift_for_number_of_individual_nonmandatory_tours,0.0098944086043264642,-0.042200000000000001,0,-25,25,0.0098944086043264642 -coef_duration_shift_for_number_of_joint_tours,-0.57768141215671864,-0.24970000000000001,0,-25,25,-0.57768141215671864 -coef_duration_shift_for_number_of_mandatory_tours,-1.0587875726336362,-0.7702,0,-25,25,-1.0587875726336362 -coef_duration_shift_for_outbound_auto_travel_time_off_peak,0.1453238873904982,0.0098099999999999993,0,-25,25,0.1453238873904982 -coef_duration_shift_for_subsequent_sub_tour_of_same_work_tour,-10.333603350935554,-0.18440000000000001,0,-25,25,-10.333603350935554 -coef_early_end_at_5_6,-25,-2.928312295,0,-25,25,-25 -coef_early_start_at_5,-2.2040675056867611,-7.7655484760000002,0,-25,25,-2.2040675056867611 -coef_evening_end_at_19_20_21,-4.5210371252389265,-2.3199822600000002,0,-25,25,-4.5210371252389265 -coef_evening_start_at_19_20_21,-0.32574110086394298,-1.015090023,0,-25,25,-0.32574110086394298 -coef_late_end_at_22_23,-11.516564630810274,-2.3199822600000002,0,-25,25,-11.516564630810274 -coef_late_start_at_22_23,-5.1429250271310103,-0.73757005399999997,0,-25,25,-5.1429250271310103 -coef_midday_end_at_10_11_12,-1.3051956922349568,-2.2972643740000001,0,-25,25,-1.3051956922349568 -coef_midday_end_at_13_14,0,0,0,0,0,0 -coef_midday_start_at_10_11_12,0,0,0,0,0,0 -coef_midday_start_at_13_14_15,-1.0515620376346457,-0.77502157999999999,0,-25,25,-1.0515620376346457 -coef_pm_peak_end_at_15,-1.4329808631274803,-0.57834445700000003,0,-25,25,-1.4329808631274803 -coef_pm_peak_end_at_16,-2.0551088799651303,-1.09408722,0,-25,25,-2.0551088799651303 -coef_pm_peak_end_at_17,-2.4042523970600072,-1.1658466000000001,0,-25,25,-2.4042523970600072 -coef_pm_peak_end_at_18,-3.5003721078254548,-1.4961310809999999,0,-25,25,-3.5003721078254548 -coef_pm_peak_start_at_16_17_18,-0.7985883513777744,-0.227528489,0,-25,25,-0.7985883513777744 -coef_start_shift_for_business_related_,-0.083357458155514152,-0.1113,0,-25,25,-0.083357458155514152 -coef_start_shift_for_first_sub_tour_of_same_work_tour,-0.16832429973206386,-0.54330000000000001,0,-25,25,-0.16832429973206386 -coef_start_shift_for_inbound_auto_travel_time_off_peak,-0.09901878555282706,0.00064999999999999997,0,-25,25,-0.09901878555282706 -coef_start_shift_for_number_of_individual_nonmandatory_tours,0.026776673811965086,-0.012800000000000001,0,-25,25,0.026776673811965086 -coef_start_shift_for_number_of_joint_tours,-0.019721699715671427,-0.0206,0,-25,25,-0.019721699715671427 -coef_start_shift_for_number_of_mandatory_tours,0.059018046122538706,-0.019300000000000001,0,-25,25,0.059018046122538706 -coef_start_shift_for_outbound_auto_travel_time_off_peak,0.10034873691181434,0.00064999999999999997,0,-25,25,0.10034873691181434 -coef_start_shift_for_subsequent_sub_tour_of_same_work_tour,-0.36020623998165718,-0.18440000000000001,0,-25,25,-0.36020623998165718 diff --git a/activitysim/estimation/test/test_larch_estimation/test_scheduling_model_joint_tour_scheduling_SLSQP_.csv b/activitysim/estimation/test/test_larch_estimation/test_scheduling_model_joint_tour_scheduling_SLSQP_.csv index 091e76401..51f0e0522 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_scheduling_model_joint_tour_scheduling_SLSQP_.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_scheduling_model_joint_tour_scheduling_SLSQP_.csv @@ -1,60 +1,60 @@ -,value,initvalue,nullvalue,minimum,maximum,best -coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction,-0.028774249414067657,-0.025700000000000001,0,-25,25,-0.028774249414067657 -coef_adjacent_window_exists_after_this_arrival_hour_second_tour_interaction,0.91901966813332936,-0.02734,0,-25,25,0.91901966813332936 -coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction,0.03464166423412067,0.0084419999999999999,0,-25,25,0.03464166423412067 -coef_adjacent_window_exists_before_this_departure_hour_second_tour_interaction,-18.311237242705495,-0.059299999999999999,0,-25,25,-18.311237242705495 -coef_adult_with_children_in_hh_arrive_19_21,0.04436348324103874,0.33600000000000002,0,-25,25,0.04436348324103874 -coef_arrival_constants_am_peak,4.7614100686980576,-8.7288800000000002,0,-25,25,4.7614100686980576 -coef_arrival_constants_early,24.924968513710187,-8.7288800000000002,0,-25,25,24.924968513710187 -coef_arrival_constants_evening,-4.3200714359409025,-2.7489400000000002,0,-25,25,-4.3200714359409025 -coef_arrival_constants_late,-9.6327188982749732,-4.2425300000000004,0,-25,25,-9.6327188982749732 -coef_arrival_constants_midday_1,0,0,0,0,0,0 -coef_arrival_constants_midday_2,2.6541662776744461,1.40804,0,-25,25,2.6541662776744461 -coef_arrival_constants_pm_peak_1,1.8388653479429438,1.0203599999999999,0,-25,25,1.8388653479429438 -coef_arrival_constants_pm_peak_2,1.4625561851708289,1.06863,0,-25,25,1.4625561851708289 -coef_arrival_constants_pm_peak_3,0,0,0,0,0,0 -coef_arrival_constants_pm_peak_4,-1.2333276504506303,-0.59626000000000001,0,-25,25,-1.2333276504506303 -coef_departure_constants_am_peak_1,-25,-11.595050000000001,0,-25,25,-25 -coef_departure_constants_am_peak_2,-4.2487039295223656,-9.0051900000000007,0,-25,25,-4.2487039295223656 -coef_departure_constants_am_peak_3,0.75112055157913948,-2.7331500000000002,0,-25,25,0.75112055157913948 -coef_departure_constants_am_peak_4,1.3921313310397618,0.26654,0,-25,25,1.3921313310397618 -coef_departure_constants_early,-24.394585604972157,-14.477080000000001,0,-25,25,-24.394585604972157 -coef_departure_constants_evening,-14.12448484303447,-18.987369999999999,0,-25,25,-14.12448484303447 -coef_departure_constants_late,-19.873640270611908,-20.27807,0,-25,25,-19.873640270611908 -coef_departure_constants_midday_1,0,0,0,0,0,0 -coef_departure_constants_midday_2,-4.3735430875047783,-1.6026,0,-25,25,-4.3735430875047783 -coef_departure_constants_pm_peak,-12.231456579430871,-17.695979999999999,0,-25,25,-12.231456579430871 -coef_destination_in_cbd_duration_shift_effects,0.56926682397665584,0.1067,0,-25,25,0.56926682397665584 -coef_discretionary_tour_duration_lt_2_hours,-0.96979691863694628,-0.69740000000000002,0,-25,25,-0.96979691863694628 -coef_duration_constants_0_to_1_hours,-2.7866437326016174,-2.2282600000000001,0,-25,25,-2.7866437326016174 -coef_duration_constants_11_to_13_hours,-5.6834374392880065,-0.81518999999999997,0,-25,25,-5.6834374392880065 -coef_duration_constants_14_to_18_hours,-2.7347130621577005,-2.7384400000000002,0,-25,25,-2.7347130621577005 -coef_duration_constants_2_to_3_hours,0,0,0,0,0,0 -coef_duration_constants_4_to_5_hours,0.35927958946513583,-0.56174000000000002,0,-25,25,0.35927958946513583 -coef_duration_constants_6_to_7_hours,0.25829995673545386,-0.65547,0,-25,25,0.25829995673545386 -coef_duration_constants_8_to_10_hours,-10.443272918037978,-0.74061999999999995,0,-25,25,-10.443272918037978 -coef_eat_out_tour_departure_shift_effects,-0.026030105628492072,0.075490000000000002,0,-25,25,-0.026030105628492072 -coef_first_of_2_plus_tours_for_same_purpose_departure_shift_effect,-1.6735672025262123,-0.2364,0,-25,25,-1.6735672025262123 -coef_free_flow_round_trip_auto_time_shift_effects_duration,0.016957888892283637,0.0031949999999999999,0,-25,25,0.016957888892283637 -coef_maintenance_tour_depart_before_7,1.1216498838609328,-0.88260000000000005,0,-25,25,1.1216498838609328 -coef_maintenance_tour_departure_shift_effects,-0.16045036076756827,-0.1489,0,-25,25,-0.16045036076756827 -coef_maintenance_tour_duration_shift_effects,-0.15774061753063057,-0.083720000000000003,0,-25,25,-0.15774061753063057 -coef_number_of_joint_tours_departure_shift_effects,1.3426208902212988,0.052080000000000001,0,-25,25,1.3426208902212988 -coef_number_of_mandatory_tours_departure_shift_effects,0.073116531424716663,0.046730000000000001,0,-25,25,0.073116531424716663 -coef_school_child_age_16_plus_departure_shift_effects,0.072660000000000002,0.072660000000000002,0,-25,25,0.072660000000000002 -coef_school_child_age_16_plus_duration_shift_effects,0.20949999999999999,0.20949999999999999,0,-25,25,0.20949999999999999 -coef_school_child_age_under_16_departure_shift_effects,0.22437768613209164,0.04657,0,-25,25,0.22437768613209164 -coef_school_child_age_under_16_duration_shift_effects,-0.55690620785460743,0.32719999999999999,0,-25,25,-0.55690620785460743 -coef_school_child_under_16_arrive_after_22,-6.2179802555750401,-1.1799999999999999,0,-25,25,-6.2179802555750401 -coef_shopping_tour_arrive_after_22,-6.8841149173847738,-0.60270000000000001,0,-25,25,-6.8841149173847738 -coef_shopping_tour_depart_before_8,1.6329282274649815,-1.0369999999999999,0,-25,25,1.6329282274649815 -coef_shopping_tour_departure_shift_effects,-0.032901677188934476,-0.060150000000000002,0,-25,25,-0.032901677188934476 -coef_shopping_tour_duration_lt_2_hours,0.069480688387001235,0.51680000000000004,0,-25,25,0.069480688387001235 -coef_shopping_tour_duration_shift_effects,-0.41367749415560207,-0.1208,0,-25,25,-0.41367749415560207 -coef_some_previously_scheduled_tour_begins_in_this_arrival_hour,0.46823426868427825,-0.3992,0,-25,25,0.46823426868427825 -coef_some_previously_scheduled_tour_ends_in_this_departure_hour,0.26003373330967577,-0.45619999999999999,0,-25,25,0.26003373330967577 -coef_subsequent_of_2_plus_tours_for_same_purpose_duration_shift_effect,-0.015340339657372392,-0.1731,0,-25,25,-0.015340339657372392 -coef_unavailable,-999,-999,0,-999,-999,-999 -coef_university_student_arrive_after_22,-9.1734571378829219,0.54659999999999997,0,-25,25,-9.1734571378829219 -coef_visit_tour_departure_shift_effects,-0.11236540231411092,0.096879999999999994,0,-25,25,-0.11236540231411092 -coef_visit_tour_duration_shift_effects,-0.13492097024550309,0.1638,0,-25,25,-0.13492097024550309 +param_name,value,best,initvalue,nullvalue +coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction,-0.025656219142801435,-0.025656219142801435,-0.025699999183416367,0 +coef_adjacent_window_exists_after_this_arrival_hour_second_tour_interaction,-0.025716469680719514,-0.025716469680719514,-0.027340000495314598,0 +coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction,0.008442354676521463,0.008442354676521463,0.0084419995546340942,0 +coef_adjacent_window_exists_before_this_departure_hour_second_tour_interaction,-0.05935757810299315,-0.05935757810299315,-0.059300001710653305,0 +coef_adult_with_children_in_hh_arrive_19_21,0.5355161653253353,0.5355161653253353,0.335999995470047,0 +coef_arrival_constants_am_peak,-2.4250190851365487,-2.4250190851365487,-8.7288799285888672,0 +coef_arrival_constants_early,2.2958899169886267,2.2958899169886267,-8.7288799285888672,0 +coef_arrival_constants_evening,-3.3154480276617018,-3.3154480276617018,-2.7489399909973145,0 +coef_arrival_constants_late,-8.3307149468221589,-8.3307149468221589,-4.2425298690795898,0 +coef_arrival_constants_midday_1,0,0,0,0 +coef_arrival_constants_midday_2,1.5294906566988582,1.5294906566988582,1.4080400466918945,0 +coef_arrival_constants_pm_peak_1,1.2175035036665733,1.2175035036665733,1.020359992980957,0 +coef_arrival_constants_pm_peak_2,1.2998241903588883,1.2998241903588883,1.0686299800872803,0 +coef_arrival_constants_pm_peak_3,0,0,0,0 +coef_arrival_constants_pm_peak_4,-0.84944529895620147,-0.84944529895620147,-0.59626001119613647,0 +coef_departure_constants_am_peak_1,-24.483912895120231,-24.483912895120231,-11.595049858093262,0 +coef_departure_constants_am_peak_2,-17.791981333117047,-17.791981333117047,-9.0051898956298828,0 +coef_departure_constants_am_peak_3,-4.1499437678248832,-4.1499437678248832,-2.7331500053405762,0 +coef_departure_constants_am_peak_4,-0.2038777988755586,-0.2038777988755586,0.26653999090194702,0 +coef_departure_constants_early,-24.999999999999986,-24.999999999999986,-14.477080345153809,0 +coef_departure_constants_evening,-24.057955302201297,-24.057955302201297,-18.987369537353516,0 +coef_departure_constants_late,-25,-25,-20.278070449829102,0 +coef_departure_constants_midday_1,0,0,0,0 +coef_departure_constants_midday_2,-2.6945721193468217,-2.6945721193468217,-1.6025999784469604,0 +coef_departure_constants_pm_peak,-22.802101526690983,-22.802101526690983,-17.695980072021484,0 +coef_destination_in_cbd_duration_shift_effects,0.57637590919194726,0.57637590919194726,0.10670000314712524,0 +coef_discretionary_tour_duration_lt_2_hours,-1.2587487442550029,-1.2587487442550029,-0.69739997386932373,0 +coef_duration_constants_0_to_1_hours,-2.7292315354064538,-2.7292315354064538,-2.2282600402832031,0 +coef_duration_constants_11_to_13_hours,-16.641361610345623,-16.641361610345623,-0.81519001722335815,0 +coef_duration_constants_14_to_18_hours,-4.2019174642931754,-4.2019174642931754,-2.7384400367736816,0 +coef_duration_constants_2_to_3_hours,0,0,0,0 +coef_duration_constants_4_to_5_hours,0.041336040196562979,0.041336040196562979,-0.56173998117446899,0 +coef_duration_constants_6_to_7_hours,-0.28010083544612574,-0.28010083544612574,-0.65547001361846924,0 +coef_duration_constants_8_to_10_hours,-11.834841336602297,-11.834841336602297,-0.74062001705169678,0 +coef_eat_out_tour_departure_shift_effects,-0.191471104246424,-0.191471104246424,0.075489997863769531,0 +coef_first_of_2_plus_tours_for_same_purpose_departure_shift_effect,-0.65914361514389619,-0.65914361514389619,-0.23639999330043793,0 +coef_free_flow_round_trip_auto_time_shift_effects_duration,0.0103470192509738,0.0103470192509738,0.0031950001139193773,0 +coef_maintenance_tour_depart_before_7,-0.6995036880611385,-0.6995036880611385,-0.88260000944137573,0 +coef_maintenance_tour_departure_shift_effects,-0.51463329667967828,-0.51463329667967828,-0.14890000224113464,0 +coef_maintenance_tour_duration_shift_effects,-0.37483619241205374,-0.37483619241205374,-0.083719998598098755,0 +coef_number_of_joint_tours_departure_shift_effects,0.5518545554827089,0.5518545554827089,0.052080001682043076,0 +coef_number_of_mandatory_tours_departure_shift_effects,0.15108304860381977,0.15108304860381977,0.046730000525712967,0 +coef_school_child_age_16_plus_departure_shift_effects,0.072659999132156372,0.072659999132156372,0.072659999132156372,0 +coef_school_child_age_16_plus_duration_shift_effects,0.20949999988079071,0.20949999988079071,0.20949999988079071,0 +coef_school_child_age_under_16_departure_shift_effects,0.90140346155759687,0.90140346155759687,0.046569999307394028,0 +coef_school_child_age_under_16_duration_shift_effects,-0.36276804513883948,-0.36276804513883948,0.32719999551773071,0 +coef_school_child_under_16_arrive_after_22,-25,-25,-1.1799999475479126,0 +coef_shopping_tour_arrive_after_22,-16.816060937232734,-16.816060937232734,-0.60269999504089355,0 +coef_shopping_tour_depart_before_8,0.8484680406149383,0.8484680406149383,-1.0369999408721924,0 +coef_shopping_tour_departure_shift_effects,-0.35167841899554614,-0.35167841899554614,-0.06015000119805336,0 +coef_shopping_tour_duration_lt_2_hours,0.1873898983230104,0.1873898983230104,0.51679998636245728,0 +coef_shopping_tour_duration_shift_effects,-0.63534186935788817,-0.63534186935788817,-0.12080000340938568,0 +coef_some_previously_scheduled_tour_begins_in_this_arrival_hour,-0.25327854790648219,-0.25327854790648219,-0.39919999241828918,0 +coef_some_previously_scheduled_tour_ends_in_this_departure_hour,-0.35052002043887132,-0.35052002043887132,-0.4562000036239624,0 +coef_subsequent_of_2_plus_tours_for_same_purpose_duration_shift_effect,-0.035834399723830755,-0.035834399723830755,-0.17309999465942383,0 +coef_unavailable,-999,-999,-999,0 +coef_university_student_arrive_after_22,-15.517205687701349,-15.517205687701349,0.54659998416900635,0 +coef_visit_tour_departure_shift_effects,-0.34370578081497799,-0.34370578081497799,0.096879996359348297,0 +coef_visit_tour_duration_shift_effects,-0.33210961592070104,-0.33210961592070104,0.16380000114440918,0 diff --git a/activitysim/estimation/test/test_larch_estimation/test_scheduling_model_mandatory_tour_scheduling_school_SLSQP_.csv b/activitysim/estimation/test/test_larch_estimation/test_scheduling_model_mandatory_tour_scheduling_school_SLSQP_.csv index 93c03c449..047fcd6a3 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_scheduling_model_mandatory_tour_scheduling_school_SLSQP_.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_scheduling_model_mandatory_tour_scheduling_school_SLSQP_.csv @@ -1,56 +1,56 @@ -,value,initvalue,nullvalue,minimum,maximum,best -coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction,11.716776044898809,-0.0030490000000000001,0,-25,25,11.716776044898809 -coef_adjacent_window_exists_after_this_arrival_hour_second_plus_tour_interaction,-0.58735581754454202,-0.52710000000000001,0,-25,25,-0.58735581754454202 -coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction,9.2169111822551333,0.089749999999999996,0,-25,25,9.2169111822551333 -coef_adjacent_window_exists_before_this_departure_hour_second_plus_tour_interaction,-15.186947397585952,-0.44,0,-25,25,-15.186947397585952 -coef_all_adults_ft_worker_duration,0.0083360428258746171,0.10929999999999999,0,-25,25,0.0083360428258746171 -coef_arrival_constants_am_peak,-2.2525597933199202,-2.4287183990000001,0,-25,25,-2.2525597933199202 -coef_arrival_constants_early,-1.0600927435131249,-2.4287183990000001,0,-25,25,-1.0600927435131249 -coef_arrival_constants_evening,-1.024968926440146,-0.87014690400000005,0,-25,25,-1.024968926440146 -coef_arrival_constants_late,-1.3622777646923283,-1.7520004899999999,0,-25,25,-1.3622777646923283 -coef_arrival_constants_midday_1,-1.3329442334964623,-1.237908768,0,-25,25,-1.3329442334964623 -coef_arrival_constants_midday_2,-0.56302790885535348,-0.53976893100000001,0,-25,25,-0.56302790885535348 -coef_arrival_constants_pm_peak_1,0,0,0,0,0,0 -coef_arrival_constants_pm_peak_2,-0.47120087260372584,-0.38916924800000002,0,-25,25,-0.47120087260372584 -coef_arrival_constants_pm_peak_3,-0.2889635829589125,-0.198120349,0,-25,25,-0.2889635829589125 -coef_arrival_constants_pm_peak_4,-0.42904089312882804,-0.25362468399999999,0,-25,25,-0.42904089312882804 -coef_departure_constants_am_peak_1,-1.8402276885639066,-1.6176440560000001,0,-25,25,-1.8402276885639066 -coef_departure_constants_am_peak_2,0,0,0,0,0,0 -coef_departure_constants_am_peak_3,-0.14762834941122654,-0.073826841000000004,0,-25,25,-0.14762834941122654 -coef_departure_constants_am_peak_4,-2.0052907227909373,-2.0805707689999999,0,-25,25,-2.0052907227909373 -coef_departure_constants_early,-3.6385102149182318,-3.8206624040000001,0,-25,25,-3.6385102149182318 -coef_departure_constants_evening,-5.1709311530899091,-5.2302878359999996,0,-25,25,-5.1709311530899091 -coef_departure_constants_late,-25,-11.88604728,0,-25,25,-25 -coef_departure_constants_midday_1,-3.235655391222839,-2.9857394570000002,0,-25,25,-3.235655391222839 -coef_departure_constants_midday_2,-3.7122959166670451,-3.6284346460000001,0,-25,25,-3.7122959166670451 -coef_departure_constants_pm_peak,-2.9909526474284074,-3.1025051499999998,0,-25,25,-2.9909526474284074 -coef_duration_constants_0_to_2_hours,-1.3817519840859342,-1.409955689,0,-25,25,-1.3817519840859342 -coef_duration_constants_10_hours,-0.85439568067710703,-0.90478898299999999,0,-25,25,-0.85439568067710703 -coef_duration_constants_11_hours,-1.0970644700531507,-1.5211626039999999,0,-25,25,-1.0970644700531507 -coef_duration_constants_12_to_13_hours,-2.6774099148644868,-2.4184889169999999,0,-25,25,-2.6774099148644868 -coef_duration_constants_14_to_18_hours,-2.6488356018470931,-2.5031372950000002,0,-25,25,-2.6488356018470931 -coef_duration_constants_3_to_4_hours,-0.56119226026187308,-0.74589325200000001,0,-25,25,-0.56119226026187308 -coef_duration_constants_5_to_6_hours,-0.52869720683509602,-0.56763662199999998,0,-25,25,-0.52869720683509602 -coef_duration_constants_7_to_8_hours,0,0,0,0,0,0 -coef_duration_constants_9_hours,-0.47578654406256893,-0.65080668399999997,0,-25,25,-0.47578654406256893 -coef_first_of_2plus_school_lt_6_hours,0.36465272850981928,1.4870000000000001,0,-25,25,0.36465272850981928 -coef_first_of_2plus_school_tours_departure,-0.28345842741237504,-0.30020000000000002,0,-25,25,-0.28345842741237504 -coef_first_of_2plus_school_tours_duration,-0.0072205064801072029,-0.1593,0,-25,25,-0.0072205064801072029 -coef_ft_worker_departure,0.39710000000000001,0.39710000000000001,0,-25,25,0.39710000000000001 -coef_ft_worker_duration,-0.1908,-0.1908,0,-25,25,-0.1908 -coef_hh_income_early_departure,-12.781415662231149,-0.88370000000000004,0,-25,25,-12.781415662231149 -coef_hh_income_late_arrival,0.13481375603358139,-0.3533,0,-25,25,0.13481375603358139 -coef_mode_choice_logsum,-0.15485890248282916,2.1269999999999998,0,-25,25,-0.15485890248282916 -coef_non_worker_departure,0.55389999999999995,0.55389999999999995,0,-25,25,0.55389999999999995 -coef_previous_tour_begins_this_arrival_hour,-5.5053579900953125,-1.1020000000000001,0,-25,25,-5.5053579900953125 -coef_previous_tour_ends_this_departure_hour,-15.038466619861389,-0.59950000000000003,0,-25,25,-15.038466619861389 -coef_remaining_work_school_tours_to_be_scheduled_div_number_of_unscheduled_hours,-24.999999999999979,-16.670000000000002,0,-25,25,-24.999999999999979 -coef_roundtrip_auto_time_to_work,0.0053019952333040361,0.0031949999999999999,0,-25,25,0.0053019952333040361 -coef_school_plus_work_tours_by_student_lt_6_hours,-1.1660913354672906,1.73,0,-25,25,-1.1660913354672906 -coef_school_plus_work_tours_by_worker_lt_6_hours,-0.75409133546729057,2.1419999999999999,0,-25,25,-0.75409133546729057 -coef_student_driver_duration,-0.0068046815074113429,0.034639999999999997,0,-25,25,-0.0068046815074113429 -coef_subsequent_2plus_school_tours_duration,-0.21896654709477803,-0.23380000000000001,0,-25,25,-0.21896654709477803 -coef_subsequent_of_2plus_school_lt_6_hours,24.999999999999982,2.1419999999999999,0,-25,25,24.999999999999982 -coef_subsequent_tour_must_start_after_previous_tour_ends,-100,-100,0,-100,-100,-100 -coef_univ_departure,0.22263900806749343,0.28000000000000003,0,-25,25,0.22263900806749343 -coef_univ_duration,-0.41672805296299825,-0.29070000000000001,0,-25,25,-0.41672805296299825 +param_name,value,best,initvalue,nullvalue +coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction,0.080775447776812753,0.080774252667694169,-0.0030489999335259199,0 +coef_adjacent_window_exists_after_this_arrival_hour_second_plus_tour_interaction,-0.51836135663447769,-0.51836174434913773,-0.52710002660751343,0 +coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction,0.73433095650246494,0.73432154552615458,0.089749999344348907,0 +coef_adjacent_window_exists_before_this_departure_hour_second_plus_tour_interaction,-0.99378159059164084,-0.99377515349106949,-0.43999999761581421,0 +coef_all_adults_ft_worker_duration,0.033395472694728347,0.033395444616199747,0.10930000245571136,0 +coef_arrival_constants_am_peak,-2.1992574993931737,-2.1992595446798857,-2.4287183284759521,0 +coef_arrival_constants_early,-1.0152816371137836,-1.0152823898389056,-2.4287183284759521,0 +coef_arrival_constants_evening,-1.089014071549075,-1.089012444258362,-0.87014693021774292,0 +coef_arrival_constants_late,-1.4094125261836428,-1.4094104317113427,-1.7520004510879517,0 +coef_arrival_constants_midday_1,-1.3102781509339738,-1.3102792663184144,-1.2379087209701538,0 +coef_arrival_constants_midday_2,-0.5570164575887101,-0.55701686342809786,-0.53976893424987793,0 +coef_arrival_constants_pm_peak_1,0,0,0,0 +coef_arrival_constants_pm_peak_2,-0.48446733503368733,-0.48446736247771904,-0.38916924595832825,0 +coef_arrival_constants_pm_peak_3,-0.31506510944596333,-0.31506390971297477,-0.1981203556060791,0 +coef_arrival_constants_pm_peak_4,-0.4718642141386703,-0.4718634888383082,-0.25362467765808105,0 +coef_departure_constants_am_peak_1,-1.8553572932845479,-1.8553571741469013,-1.6176440715789795,0 +coef_departure_constants_am_peak_2,0,0,0,0 +coef_departure_constants_am_peak_3,-0.14106707640383398,-0.14106757305590037,-0.07382684201002121,0 +coef_departure_constants_am_peak_4,-1.9882913840565575,-1.988292157571423,-2.0805706977844238,0 +coef_departure_constants_early,-3.6786226227417624,-3.6786220135061134,-3.8206624984741211,0 +coef_departure_constants_evening,-5.2925208449121817,-5.2925240767147788,-5.230288028717041,0 +coef_departure_constants_late,-11.916832030849566,-11.916831561227097,-11.88604736328125,0 +coef_departure_constants_midday_1,-3.2113751054704132,-3.2113771777110944,-2.9857394695281982,0 +coef_departure_constants_midday_2,-3.6981526513555871,-3.6981547479895061,-3.6284346580505371,0 +coef_departure_constants_pm_peak,-2.9973467155658162,-2.9973494814295885,-3.1025052070617676,0 +coef_duration_constants_0_to_2_hours,-1.3996475888297963,-1.3996458652500943,-1.4099557399749756,0 +coef_duration_constants_10_hours,-0.82164737941042931,-0.82164784328828933,-0.90478897094726562,0 +coef_duration_constants_11_hours,-1.0464064831927971,-1.0464075406530777,-1.5211626291275024,0 +coef_duration_constants_12_to_13_hours,-2.5901815246633957,-2.5901814921437252,-2.4184889793395996,0 +coef_duration_constants_14_to_18_hours,-2.5870585605577858,-2.5870607126569682,-2.5031373500823975,0 +coef_duration_constants_3_to_4_hours,-0.56514744374131198,-0.56514595486014574,-0.74589323997497559,0 +coef_duration_constants_5_to_6_hours,-0.53548913813929444,-0.53548808091419775,-0.56763660907745361,0 +coef_duration_constants_7_to_8_hours,0,0,0,0 +coef_duration_constants_9_hours,-0.45285392800018198,-0.4528543455236822,-0.65080666542053223,0 +coef_first_of_2plus_school_lt_6_hours,0.024871811138907744,0.024881803705537723,1.4869999885559082,0 +coef_first_of_2plus_school_tours_departure,-0.29460766022668305,-0.29460728950989984,-0.30019998550415039,0 +coef_first_of_2plus_school_tours_duration,-0.10138864589931282,-0.10138705511807192,-0.15929999947547913,0 +coef_ft_worker_departure,0.39710000157356262,0.39710000157356262,0.39710000157356262,0 +coef_ft_worker_duration,-0.19079999625682831,-0.19079999625682831,-0.19079999625682831,0 +coef_hh_income_early_departure,-2.4518333628592055,-2.4518122384333916,-0.88370001316070557,0 +coef_hh_income_late_arrival,0.0099574185770053714,0.0099600258474820229,-0.35330000519752502,0 +coef_mode_choice_logsum,0.10646038792012041,0.10645974892637354,2.127000093460083,0 +coef_non_worker_departure,0.55390000343322754,0.55390000343322754,0.55390000343322754,0 +coef_previous_tour_begins_this_arrival_hour,-1.1044099604419229,-1.1044099196469588,-1.1019999980926514,0 +coef_previous_tour_ends_this_departure_hour,-0.98618911184573188,-0.98618197798375551,-0.59950000047683716,0 +coef_remaining_work_school_tours_to_be_scheduled_div_number_of_unscheduled_hours,-16.801395249039167,-16.801393279303245,-16.670000076293945,0 +coef_roundtrip_auto_time_to_work,0.0052250922026635376,0.0052251100813601051,0.0031950001139193773,0 +coef_school_plus_work_tours_by_student_lt_6_hours,1.7724913916824447,1.7724908031221758,1.7300000190734863,0 +coef_school_plus_work_tours_by_worker_lt_6_hours,2.1844913325546376,2.1844907439943686,2.1419999599456787,0 +coef_student_driver_duration,-0.0049771487710083039,-0.0049771201652761641,0.034639999270439148,0 +coef_subsequent_2plus_school_tours_duration,-0.22458834432940281,-0.22458959182491992,-0.23379999399185181,0 +coef_subsequent_of_2plus_school_lt_6_hours,2.8438198153956726,2.8438099345673602,2.1419999599456787,0 +coef_subsequent_tour_must_start_after_previous_tour_ends,-100,-100,-100,0 +coef_univ_departure,0.23875445577073184,0.23875440862293787,0.2800000011920929,0 +coef_univ_duration,-0.40329629710371528,-0.40329638768202386,-0.29069998860359192,0 diff --git a/activitysim/estimation/test/test_larch_estimation/test_scheduling_model_mandatory_tour_scheduling_work_SLSQP_.csv b/activitysim/estimation/test/test_larch_estimation/test_scheduling_model_mandatory_tour_scheduling_work_SLSQP_.csv index 9465192ef..70e5cc97c 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_scheduling_model_mandatory_tour_scheduling_work_SLSQP_.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_scheduling_model_mandatory_tour_scheduling_work_SLSQP_.csv @@ -1,64 +1,64 @@ -,value,initvalue,nullvalue,minimum,maximum,best -coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction,25,0.36270000000000002,0,-25,25,25 -coef_adjacent_window_exists_after_this_arrival_hour_second_plus_tour_interaction,0.67172411345437255,-0.1012,0,-25,25,0.67172411345437255 -coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction,-0.2705642011106818,0.17710000000000001,0,-25,25,-0.2705642011106818 -coef_adjacent_window_exists_before_this_departure_hour_second_plus_tour_interaction,2.3126663890343506,-0.21229999999999999,0,-25,25,2.3126663890343506 -coef_arrival_constants_am_peak,-2.5608583720316691,-1.854520626,0,-25,25,-2.5608583720316691 -coef_arrival_constants_early,0,0,0,0,0,0 -coef_arrival_constants_evening,-0.11313543070951976,0.103566251,0,-25,25,-0.11313543070951976 -coef_arrival_constants_late,-1.2047708015331426,-0.96595733900000003,0,-25,25,-1.2047708015331426 -coef_arrival_constants_midday_1,-0.4666152062959858,-0.49597203699999998,0,-25,25,-0.4666152062959858 -coef_arrival_constants_midday_2,-0.37297675905912303,-0.37855408099999999,0,-25,25,-0.37297675905912303 -coef_arrival_constants_pm_peak_1,0,0,0,0,0,0 -coef_arrival_constants_pm_peak_2,0.20356469833981647,0.27608389999999999,0,-25,25,0.20356469833981647 -coef_arrival_constants_pm_peak_3,0.55940049285496218,0.699587132,0,-25,25,0.55940049285496218 -coef_arrival_constants_pm_peak_4,0.69955932869966053,0.79928937700000002,0,-25,25,0.69955932869966053 -coef_departure_constants_am_peak_1,-0.65012576984935755,-0.61618090599999997,0,-25,25,-0.65012576984935755 -coef_departure_constants_am_peak_2,0,0,0,0,0,0 -coef_departure_constants_am_peak_3,-0.32740035887947389,-0.254714726,0,-25,25,-0.32740035887947389 -coef_departure_constants_am_peak_4,-1.2190845361495699,-1.2513460240000001,0,-25,25,-1.2190845361495699 -coef_departure_constants_early,-0.92470832388900248,-0.95272526999999996,0,-25,25,-0.92470832388900248 -coef_departure_constants_evening,-1.8906229365299492,-1.610513243,0,-25,25,-1.8906229365299492 -coef_departure_constants_late,-2.9986176789858154,-2.8834152230000001,0,-25,25,-2.9986176789858154 -coef_departure_constants_midday_1,-1.8241536006077277,-1.7058689920000001,0,-25,25,-1.8241536006077277 -coef_departure_constants_midday_2,-1.8783523324805591,-1.6935705830000001,0,-25,25,-1.8783523324805591 -coef_departure_constants_pm_peak,-1.6396663560770837,-1.4399919619999999,0,-25,25,-1.6396663560770837 -coef_destination_in_cbd_departure_shift_effects,0.04109611455586798,0.047169999999999997,0,-25,25,0.04109611455586798 -coef_destination_in_cbd_duration_shift_effects,0.10130692865710192,0.086790000000000006,0,-25,25,0.10130692865710192 -coef_destination_in_cbd_early_departure_interaction,-0.38984353468069122,-0.45660000000000001,0,-25,25,-0.38984353468069122 -coef_destination_in_cbd_late_arrival_interaction,-0.27055298689359897,-0.2334,0,-25,25,-0.27055298689359897 -coef_duration_constants_0_to_2_hours,-2.1189652588431978,-2.5282663900000002,0,-25,25,-2.1189652588431978 -coef_duration_constants_10_hours,0,0,0,0,0,0 -coef_duration_constants_11_hours,-0.35443610468830039,-0.34779539100000001,0,-25,25,-0.35443610468830039 -coef_duration_constants_12_to_13_hours,-1.1153352032051054,-1.0082223459999999,0,-25,25,-1.1153352032051054 -coef_duration_constants_14_to_18_hours,-1.8418267064323726,-1.701858847,0,-25,25,-1.8418267064323726 -coef_duration_constants_3_to_4_hours,-0.63573505547017051,-0.91897445700000002,0,-25,25,-0.63573505547017051 -coef_duration_constants_5_to_6_hours,-0.35577473775309831,-0.71855028799999998,0,-25,25,-0.35577473775309831 -coef_duration_constants_7_to_8_hours,-0.033757586303302736,-0.139623566,0,-25,25,-0.033757586303302736 -coef_duration_constants_9_hours,0.12934760728519379,0.055706243000000003,0,-25,25,0.12934760728519379 -coef_first_of_2plus_work_tours_departure_shift_effects,-0.27106753260112321,-0.30330000000000001,0,-25,25,-0.27106753260112321 -coef_first_of_2plus_work_tours_duration_lt_8_hrs,1.8948098471889567,1.98,0,-25,25,1.8948098471889567 -coef_first_of_2plus_work_tours_duration_shift_effects,-0.29362220747793244,-0.18609999999999999,0,-25,25,-0.29362220747793244 -coef_free_flow_round_trip_auto_time_shift_effects_departure,0.00054374628944530747,-0.00114,0,-25,25,0.00054374628944530747 -coef_free_flow_round_trip_auto_time_shift_effects_duration,0.0040398779948456849,0.0022100000000000002,0,-25,25,0.0040398779948456849 -coef_full_time_worker_10_to_12_departure_interaction,-0.66614758973349719,-0.51819999999999999,0,-25,25,-0.66614758973349719 -coef_full_time_worker_duration_lt_9_hours_interaction,-1.3694302807642016,-1.2569999999999999,0,-25,25,-1.3694302807642016 -coef_household_income_departure_shift_effects,0.00011200417166098945,0.00020799999999999999,0,-25,25,0.00011200417166098945 -coef_household_income_early_departure_interaction,-0.57489507784478577,-0.4854,0,-25,25,-0.57489507784478577 -coef_household_income_late_arrival_interaction,0.036426020508396037,-0.38390000000000002,0,-25,25,0.036426020508396037 -coef_mode_choice_logsum,0.20613495321472861,1.0269999999999999,0,-25,25,0.20613495321472861 -coef_non_working_adult_duration_shift_effects,-0.1207,-0.1207,0,-25,25,-0.1207 -coef_part_time_worker_13_to_15_arrival_interaction,0.33677938786979689,0.54330000000000001,0,-25,25,0.33677938786979689 -coef_part_time_worker_departure_shift_effects,0.089714285580281661,0.067360000000000003,0,-25,25,0.089714285580281661 -coef_previously_scheduled_tour_begins_in_this_arrival_hour,-6.6033938783133914,-1.3340000000000001,0,-25,25,-6.6033938783133914 -coef_previously_scheduled_tour_ends_in_this_departure_hour,2.4216789099176217,-0.89349999999999996,0,-25,25,2.4216789099176217 -coef_remaining_tours_to_be_scheduled_div_number_of_unscheduled_hours,-6.3408961734536069,-18.68,0,-25,25,-6.3408961734536069 -coef_rural_household_early_departure_interaction,0.40389999999999998,0.40389999999999998,0,-25,25,0.40389999999999998 -coef_rural_household_late_arrival_interaction,-0.34510000000000002,-0.34510000000000002,0,-25,25,-0.34510000000000002 -coef_subsequent_2plus_work_departure_tours_shift_effects,0.015346535529312815,-0.53810000000000002,0,-25,25,0.015346535529312815 -coef_subsequent_2plus_work_duration_tours_shift_effects,-0.12773109887960765,-0.31740000000000002,0,-25,25,-0.12773109887960765 -coef_subsequent_of_2plus_work_tours_duration_lt_8_hrs,3.5917959509926001,2.5819999999999999,0,-25,25,3.5917959509926001 -coef_subsequent_tour_must_start_after_previous_tour_ends,-100,-100,0,-100,-100,-100 -coef_tours_by_student_duration_lt_8_hrs,14.705420185896203,2.5819999999999999,0,-25,25,14.705420185896203 -coef_tours_by_worker_duration_lt_8_hrs,13.036020185896209,0.91259999999999997,0,-25,25,13.036020185896209 -coef_university_student_departure_shift_effects,0.052139288632078368,0.05747,0,-25,25,0.052139288632078368 +param_name,value,best,initvalue,nullvalue +coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction,0.61251353990327295,0.61251327841360381,0.36269998550415039,0 +coef_adjacent_window_exists_after_this_arrival_hour_second_plus_tour_interaction,-0.48096392277398275,-0.48096399411879609,-0.10119999945163727,0 +coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction,-0.2616069716319126,-0.26160684847759125,0.17710000276565552,0 +coef_adjacent_window_exists_before_this_departure_hour_second_plus_tour_interaction,-0.21226499679315533,-0.2122651617637292,-0.21230000257492065,0 +coef_arrival_constants_am_peak,-2.5606473297230243,-2.5606476523528108,-1.8545206785202026,0 +coef_arrival_constants_early,0,0,0,0 +coef_arrival_constants_evening,-0.052167725404331296,-0.052167735953000123,0.1035662516951561,0 +coef_arrival_constants_late,-1.1308494423719302,-1.1308494377605862,-0.96595734357833862,0 +coef_arrival_constants_midday_1,-0.49891346385413454,-0.49891340446037452,-0.49597203731536865,0 +coef_arrival_constants_midday_2,-0.41039411498088946,-0.41039409639542923,-0.3785540759563446,0 +coef_arrival_constants_pm_peak_1,0,0,0,0 +coef_arrival_constants_pm_peak_2,0.19372908430399155,0.19372906136658175,0.27608388662338257,0 +coef_arrival_constants_pm_peak_3,0.56028646263237181,0.5602864708684514,0.69958710670471191,0 +coef_arrival_constants_pm_peak_4,0.71571247641605751,0.71571248954657329,0.79928940534591675,0 +coef_departure_constants_am_peak_1,-0.64620733049904744,-0.6462073659079336,-0.6161808967590332,0 +coef_departure_constants_am_peak_2,0,0,0,0 +coef_departure_constants_am_peak_3,-0.32992168661687343,-0.32992174133643332,-0.2547147274017334,0 +coef_departure_constants_am_peak_4,-1.2230313612788632,-1.2230313737462095,-1.2513459920883179,0 +coef_departure_constants_early,-0.91653242223268816,-0.91653247537180627,-0.95272529125213623,0 +coef_departure_constants_evening,-1.5545124755865074,-1.5545123072441225,-1.6105132102966309,0 +coef_departure_constants_late,-3.4650976197335996,-3.4650970444155127,-2.8834152221679688,0 +coef_departure_constants_midday_1,-1.8459227529362676,-1.845922814199904,-1.7058689594268799,0 +coef_departure_constants_midday_2,-1.872714720755712,-1.8727145745963636,-1.693570613861084,0 +coef_departure_constants_pm_peak,-1.5304306861299761,-1.5304305915064496,-1.4399919509887695,0 +coef_destination_in_cbd_departure_shift_effects,0.046972898038599296,0.046972900170898703,0.047169998288154602,0 +coef_destination_in_cbd_duration_shift_effects,0.10546600473625205,0.10546600158406226,0.086790002882480621,0 +coef_destination_in_cbd_early_departure_interaction,-0.36454380057515523,-0.36454382109906797,-0.45660001039505005,0 +coef_destination_in_cbd_late_arrival_interaction,-0.34125580756261459,-0.34125584021066124,-0.23340000212192535,0 +coef_duration_constants_0_to_2_hours,-2.3611872557258775,-2.3611872136185283,-2.528266429901123,0 +coef_duration_constants_10_hours,0,0,0,0 +coef_duration_constants_11_hours,-0.36305106792718905,-0.36305106353810024,-0.34779539704322815,0 +coef_duration_constants_12_to_13_hours,-1.1336847773846157,-1.1336846557009517,-1.0082223415374756,0 +coef_duration_constants_14_to_18_hours,-1.846775754300668,-1.8467757187472769,-1.7018588781356812,0 +coef_duration_constants_3_to_4_hours,-0.69884369798611612,-0.69884383804256189,-0.91897445917129517,0 +coef_duration_constants_5_to_6_hours,-0.36088550481193393,-0.36088561328123253,-0.71855026483535767,0 +coef_duration_constants_7_to_8_hours,-0.034562406928364778,-0.03456241250333917,-0.13962356746196747,0 +coef_duration_constants_9_hours,0.12410673449583931,0.12410671848676948,0.055706243962049484,0 +coef_first_of_2plus_work_tours_departure_shift_effects,-0.27939395433691766,-0.27939398231314772,-0.30329999327659607,0 +coef_first_of_2plus_work_tours_duration_lt_8_hrs,1.6819917313175938,1.681991727718217,1.9800000190734863,0 +coef_first_of_2plus_work_tours_duration_shift_effects,-0.26704509800964044,-0.26704506536823513,-0.18610000610351562,0 +coef_free_flow_round_trip_auto_time_shift_effects_departure,-4.6712935036587893e-05,-4.6713265092855231e-05,-0.0011399999493733048,0 +coef_free_flow_round_trip_auto_time_shift_effects_duration,0.0034709225619443279,0.0034709219570404487,0.0022100000642240047,0 +coef_full_time_worker_10_to_12_departure_interaction,-0.67084155893679287,-0.67084150978347679,-0.51819998025894165,0 +coef_full_time_worker_duration_lt_9_hours_interaction,-1.3707861942780288,-1.3707861874425684,-1.2569999694824219,0 +coef_household_income_departure_shift_effects,9.8289823547548591e-05,9.8289830800329784e-05,0.00020799999765586108,0 +coef_household_income_early_departure_interaction,-0.59011172274320045,-0.59011172534232015,-0.48539999127388,0 +coef_household_income_late_arrival_interaction,-0.018847335744915452,-0.018847292627549972,-0.383899986743927,0 +coef_mode_choice_logsum,0.41216509072053042,0.41216516341709108,1.0269999504089355,0 +coef_non_working_adult_duration_shift_effects,-0.12070000171661377,-0.12070000171661377,-0.12070000171661377,0 +coef_part_time_worker_13_to_15_arrival_interaction,0.32725200921090258,0.32725199183573034,0.54329997301101685,0 +coef_part_time_worker_departure_shift_effects,0.089866833957687201,0.089866835119917624,0.067359998822212219,0 +coef_previously_scheduled_tour_begins_in_this_arrival_hour,-1.3452365484106898,-1.3452365345169786,-1.3339999914169312,0 +coef_previously_scheduled_tour_ends_in_this_departure_hour,-0.62131382592128181,-0.62131390854231106,-0.89349997043609619,0 +coef_remaining_tours_to_be_scheduled_div_number_of_unscheduled_hours,-18.639061018727794,-18.639061062575436,-18.680000305175781,0 +coef_rural_household_early_departure_interaction,0.40389999747276306,0.40389999747276306,0.40389999747276306,0 +coef_rural_household_late_arrival_interaction,-0.34509998559951782,-0.34509998559951782,-0.34509998559951782,0 +coef_subsequent_2plus_work_departure_tours_shift_effects,-0.3844333665111534,-0.38443334417322472,-0.53810000419616699,0 +coef_subsequent_2plus_work_duration_tours_shift_effects,-0.38214881037696108,-0.38214876273993459,-0.3174000084400177,0 +coef_subsequent_of_2plus_work_tours_duration_lt_8_hrs,1.2383538709437807,1.2383542865170418,2.5820000171661377,0 +coef_subsequent_tour_must_start_after_previous_tour_ends,-100,-100,-100,0 +coef_tours_by_student_duration_lt_8_hrs,2.6806620027310135,2.6806618957074346,2.5820000171661377,0 +coef_tours_by_worker_duration_lt_8_hrs,1.0112619663960221,1.0112618593724432,0.91259998083114624,0 +coef_university_student_departure_shift_effects,0.068330955102533286,0.068330906364886979,0.05747000128030777,0 diff --git a/activitysim/estimation/test/test_larch_estimation/test_scheduling_model_non_mandatory_tour_scheduling_SLSQP_.csv b/activitysim/estimation/test/test_larch_estimation/test_scheduling_model_non_mandatory_tour_scheduling_SLSQP_.csv index 68cc071e8..3c8980345 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_scheduling_model_non_mandatory_tour_scheduling_SLSQP_.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_scheduling_model_non_mandatory_tour_scheduling_SLSQP_.csv @@ -1,90 +1,90 @@ -,value,initvalue,nullvalue,minimum,maximum,best -coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction,0.4470328861441506,-0.025700000000000001,0,-25,25,0.4470328861441506 -coef_adjacent_window_exists_after_this_arrival_hour_second_plus_tour_interaction,0.56540266502429914,-0.02734,0,-25,25,0.56540266502429914 -coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction,1.0259323894447316,0.0084419999999999999,0,-25,25,1.0259323894447316 -coef_adjacent_window_exists_before_this_departure_hour_second_plus_tour_interaction,0.39614317482379957,-0.059299999999999999,0,-25,25,0.39614317482379957 -coef_adult_with_children_in_hh_arrive_19_21,0.31331407963369601,0.33600000000000002,0,-25,25,0.31331407963369601 -coef_arrival_constants_am_peak,0.29950075228772494,-1.814822602,0,-25,25,0.29950075228772494 -coef_arrival_constants_early,2.725267289110473,-0.051990748000000003,0,-25,25,2.725267289110473 -coef_arrival_constants_evening,0,0,0,0,0,0 -coef_arrival_constants_late,-1.1446323020070934,-0.86667131500000005,0,-25,25,-1.1446323020070934 -coef_arrival_constants_midday_1,1.3878018540712422,0.00037150099999999999,0,-25,25,1.3878018540712422 -coef_arrival_constants_midday_2,1.5044255895039795,0.53211603100000004,0,-25,25,1.5044255895039795 -coef_arrival_constants_pm_peak_1,1.3575212925702953,0.62848156700000002,0,-25,25,1.3575212925702953 -coef_arrival_constants_pm_peak_2,1.5579462028570845,0.65052141600000002,0,-25,25,1.5579462028570845 -coef_arrival_constants_pm_peak_3,1.0806181769202525,0.40289440599999998,0,-25,25,1.0806181769202525 -coef_arrival_constants_pm_peak_4,0.69735759210419612,0.154213293,0,-25,25,0.69735759210419612 -coef_departure_constants_am_peak_1,-0.52735012006812276,-0.65416357300000005,0,-25,25,-0.52735012006812276 -coef_departure_constants_am_peak_2,1.1919565496484956,0.554282571,0,-25,25,1.1919565496484956 -coef_departure_constants_am_peak_3,1.4522880996476126,1.0505610869999999,0,-25,25,1.4522880996476126 -coef_departure_constants_am_peak_4,1.5114204226663379,0.97156822799999998,0,-25,25,1.5114204226663379 -coef_departure_constants_early,-0.92104869293940328,-1.7401356610000001,0,-25,25,-0.92104869293940328 -coef_departure_constants_evening,-1.892558890126933,-1.856475096,0,-25,25,-1.892558890126933 -coef_departure_constants_late,-5.6265216713840269,-8.2288801409999994,0,-25,25,-5.6265216713840269 -coef_departure_constants_midday_1,1.3642337556324493,0.88199198599999995,0,-25,25,1.3642337556324493 -coef_departure_constants_midday_2,0.64556751877721019,0.411103634,0,-25,25,0.64556751877721019 -coef_departure_constants_pm_peak,0,0,0,0,0,0 -coef_destination_in_cbd_duration_shift_effects,0.11545735776937631,0.1067,0,-25,25,0.11545735776937631 -coef_discretionary_tour_duration_lt_2_hours,-0.28570443543294716,-0.69740000000000002,0,-25,25,-0.28570443543294716 -coef_duration_constants_0_to_1_hours,0,0,0,0,0,0 -coef_duration_constants_11_to_13_hours,-1.0074136237311473,-0.955635554,0,-25,25,-1.0074136237311473 -coef_duration_constants_14_to_18_hours,-2.9449650044604194,-1.042580879,0,-25,25,-2.9449650044604194 -coef_duration_constants_2_to_3_hours,0.3987726313758776,0.051385565000000001,0,-25,25,0.3987726313758776 -coef_duration_constants_4_to_5_hours,-0.27952507767146284,-0.59395132100000003,0,-25,25,-0.27952507767146284 -coef_duration_constants_6_to_7_hours,-0.65619904538586438,-0.95115532800000002,0,-25,25,-0.65619904538586438 -coef_duration_constants_8_to_10_hours,-0.62326492676484069,-0.828108399,0,-25,25,-0.62326492676484069 -coef_eat_out_tour_departure_shift_effects,0.10408922995281709,0.075490000000000002,0,-25,25,0.10408922995281709 -coef_escort_tour_arrival_constants_am_peak,0,0,0,0,0,0 -coef_escort_tour_arrival_constants_early,0,0,0,0,0,0 -coef_escort_tour_arrival_constants_evening,-0.8931637699400693,-0.53691872799999996,0,-25,25,-0.8931637699400693 -coef_escort_tour_arrival_constants_late,-1.1770797692787565,-1.008290213,0,-25,25,-1.1770797692787565 -coef_escort_tour_arrival_constants_midday_1,0,0,0,0,0,0 -coef_escort_tour_arrival_constants_midday_2,0,0,0,0,0,0 -coef_escort_tour_arrival_constants_pm_peak_1,0,0,0,0,0,0 -coef_escort_tour_arrival_constants_pm_peak_2,0,0,0,0,0,0 -coef_escort_tour_arrival_constants_pm_peak_3,0,0,0,0,0,0 -coef_escort_tour_arrival_constants_pm_peak_4,0,0,0,0,0,0 -coef_escort_tour_departure_constants_am_peak_1,0.48291466233476604,-1.1123577529999999,0,-25,25,0.48291466233476604 -coef_escort_tour_departure_constants_am_peak_2,2.0132225505169186,0.69878818499999995,0,-25,25,2.0132225505169186 -coef_escort_tour_departure_constants_am_peak_3,2.1327074544894873,1.1962688130000001,0,-25,25,2.1327074544894873 -coef_escort_tour_departure_constants_am_peak_4,0.29911257358855436,-0.22525822100000001,0,-25,25,0.29911257358855436 -coef_escort_tour_departure_constants_early,-0.5151665525123571,-1.7401356610000001,0,-25,25,-0.5151665525123571 -coef_escort_tour_departure_constants_evening,-4.7638859598327503,-3.9487328110000002,0,-25,25,-4.7638859598327503 -coef_escort_tour_departure_constants_late,-6.5766274559402813,-8.2288801409999994,0,-25,25,-6.5766274559402813 -coef_escort_tour_departure_constants_midday_1,0.64080123578544568,0.028662017000000001,0,-25,25,0.64080123578544568 -coef_escort_tour_departure_constants_midday_2,0,0,0,0,0,0 -coef_escort_tour_departure_constants_pm_peak,-1.78947739154685,-1.180140161,0,-25,25,-1.78947739154685 -coef_escort_tour_duration_constants_0_to_1_hours,0,0,0,0,0,0 -coef_escort_tour_duration_constants_11_to_13_hours,-6.4203324936004007,-2.9743649759999999,0,-25,25,-6.4203324936004007 -coef_escort_tour_duration_constants_14_to_18_hours,-9.2410499900666672,-2.5074471460000001,0,-25,25,-9.2410499900666672 -coef_escort_tour_duration_constants_2_to_3_hours,-2.600430326093385,-2.0420138969999999,0,-25,25,-2.600430326093385 -coef_escort_tour_duration_constants_4_to_5_hours,-3.5279045037998431,-2.880293896,0,-25,25,-3.5279045037998431 -coef_escort_tour_duration_constants_6_to_7_hours,-3.9930263301758195,-2.9735337309999998,0,-25,25,-3.9930263301758195 -coef_escort_tour_duration_constants_8_to_10_hours,-5.1822459061747068,-3.0202137580000001,0,-25,25,-5.1822459061747068 -coef_first_of_2_plus_tours_for_same_purpose_departure_shift_effect,-0.30486234400858059,-0.2364,0,-25,25,-0.30486234400858059 -coef_free_flow_round_trip_auto_time_shift_effects_duration,0.0050429319781780269,0.0047410000000000004,0,-25,25,0.0050429319781780269 -coef_maintenance_tour_depart_before_7,0.052350894248540496,-0.88260000000000005,0,-25,25,0.052350894248540496 -coef_maintenance_tour_departure_shift_effects,-0.041432645424667555,-0.1489,0,-25,25,-0.041432645424667555 -coef_maintenance_tour_duration_shift_effects,-0.11717847942290449,-0.083720000000000003,0,-25,25,-0.11717847942290449 -coef_number_of_escort_tours_departure_shift_effects,0.1003621581289256,0.020129999999999999,0,-25,25,0.1003621581289256 -coef_number_of_individual_non_mandatory_tours_excluding_escort_departure_shift_effects,0.098215723941853808,0.038960000000000002,0,-25,25,0.098215723941853808 -coef_number_of_joint_tours_departure_shift_effects,0.12273335177942903,0.052080000000000001,0,-25,25,0.12273335177942903 -coef_number_of_mandatory_tours_departure_shift_effects,0.1726876041064854,0.046730000000000001,0,-25,25,0.1726876041064854 -coef_ratio_of_individual_non_mandatory_tours_to_be_scheduled_to_number_of_unscheduled_hours,5.7502384461866223,-13.630000000000001,0,-25,25,5.7502384461866223 -coef_school_child_age_16_plus_departure_shift_effects,0.002334001767561128,0.072660000000000002,0,-25,25,0.002334001767561128 -coef_school_child_age_16_plus_duration_shift_effects,0.30512330091593426,0.20949999999999999,0,-25,25,0.30512330091593426 -coef_school_child_age_under_16_departure_shift_effects,0.1028104094868405,0.04657,0,-25,25,0.1028104094868405 -coef_school_child_age_under_16_duration_shift_effects,0.33667040040989843,0.32719999999999999,0,-25,25,0.33667040040989843 -coef_school_child_under_16_arrive_after_22,-0.29870062575080597,-1.1799999999999999,0,-25,25,-0.29870062575080597 -coef_shopping_tour_arrive_after_22,-2.4414941640980703,-0.60270000000000001,0,-25,25,-2.4414941640980703 -coef_shopping_tour_depart_before_8,-0.84790437236499061,-1.0369999999999999,0,-25,25,-0.84790437236499061 -coef_shopping_tour_departure_shift_effects,0.0090862416686240035,-0.060150000000000002,0,-25,25,0.0090862416686240035 -coef_shopping_tour_duration_lt_2_hours,0.912982413595951,0.51680000000000004,0,-25,25,0.912982413595951 -coef_shopping_tour_duration_shift_effects,-0.08012681553606732,-0.1208,0,-25,25,-0.08012681553606732 -coef_some_previously_scheduled_tour_begins_in_this_arrival_hour,-0.004765610611209883,-0.3992,0,-25,25,-0.004765610611209883 -coef_some_previously_scheduled_tour_ends_in_this_departure_hour,-0.28646699211356075,-0.45619999999999999,0,-25,25,-0.28646699211356075 -coef_subsequent_of_2_plus_tours_for_same_purpose_duration_shift_effect,-0.10477927540016083,-0.1731,0,-25,25,-0.10477927540016083 -coef_subsequent_tour_must_start_after_previous_tour_for_this_purpose_ends,-999,-999,0,-999,-999,-999 -coef_university_student_arrive_after_22,-0.4840281170137713,0.54659999999999997,0,-25,25,-0.4840281170137713 -coef_visit_tour_departure_shift_effects,0.1674492151765343,0.096879999999999994,0,-25,25,0.1674492151765343 -coef_visit_tour_duration_shift_effects,0.15890840399796446,0.1638,0,-25,25,0.15890840399796446 +param_name,value,best,initvalue,nullvalue +coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction,-0.37873530652415688,-0.37876029334525779,-0.025699999183416367,0 +coef_adjacent_window_exists_after_this_arrival_hour_second_plus_tour_interaction,-0.12409933488783795,-0.12412525709082863,-0.027340000495314598,0 +coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction,0.16013173725389518,0.16011972294122639,0.0084419995546340942,0 +coef_adjacent_window_exists_before_this_departure_hour_second_plus_tour_interaction,-0.057675497288593967,-0.057678856669874018,-0.059300001710653305,0 +coef_adult_with_children_in_hh_arrive_19_21,0.26358073098680268,0.26357366595375664,0.335999995470047,0 +coef_arrival_constants_am_peak,-1.618479614096983,-1.6184779227729857,-1.8148225545883179,0 +coef_arrival_constants_early,0.012632463274022693,0.012638163573529756,-0.051990747451782227,0 +coef_arrival_constants_evening,0,0,0,0 +coef_arrival_constants_late,-0.77439458777380288,-0.77440113819912593,-0.86667132377624512,0 +coef_arrival_constants_midday_1,0.16302672327058698,0.16302166341062885,0.0003715009952429682,0 +coef_arrival_constants_midday_2,0.60562412779331609,0.60561823037837537,0.53211605548858643,0 +coef_arrival_constants_pm_peak_1,0.66305388881325122,0.66304628483786687,0.62848156690597534,0 +coef_arrival_constants_pm_peak_2,0.9403736312996136,0.94036844970191236,0.65052139759063721,0 +coef_arrival_constants_pm_peak_3,0.57943549534338168,0.57943058291341509,0.40289440751075745,0 +coef_arrival_constants_pm_peak_4,0.32882206659224378,0.32881862675984186,0.15421329438686371,0 +coef_departure_constants_am_peak_1,-0.8444053940276266,-0.8443867382251623,-0.65416359901428223,0 +coef_departure_constants_am_peak_2,0.61095352829384308,0.6109683536427154,0.554282546043396,0 +coef_departure_constants_am_peak_3,0.89783495233382704,0.89783925656317809,1.0505610704421997,0 +coef_departure_constants_am_peak_4,0.97678705420018241,0.97679068633385335,0.97156822681427002,0 +coef_departure_constants_early,-1.5655173152332842,-1.5655400591434045,-1.740135669708252,0 +coef_departure_constants_evening,-1.6745782734879573,-1.6745908894768251,-1.8564751148223877,0 +coef_departure_constants_late,-5.8677842794743897,-5.867810078393469,-8.2288799285888672,0 +coef_departure_constants_midday_1,0.90219691225188225,0.90220256652108655,0.88199198246002197,0 +coef_departure_constants_midday_2,0.33966490947802791,0.339668134288378,0.41110363602638245,0 +coef_departure_constants_pm_peak,0,0,0,0 +coef_destination_in_cbd_duration_shift_effects,0.12481964214980576,0.12482003975020485,0.10670000314712524,0 +coef_discretionary_tour_duration_lt_2_hours,-0.49111660197637685,-0.49110487979747403,-0.69739997386932373,0 +coef_duration_constants_0_to_1_hours,0,0,0,0 +coef_duration_constants_11_to_13_hours,-0.71826442870005769,-0.71826950153593283,-0.95563554763793945,0 +coef_duration_constants_14_to_18_hours,-1.3448264303153219,-1.3448138847159017,-1.0425808429718018,0 +coef_duration_constants_2_to_3_hours,0.18806168958819869,0.18807127149669869,0.051385566592216492,0 +coef_duration_constants_4_to_5_hours,-0.47110934268158594,-0.4711057056246632,-0.59395134449005127,0 +coef_duration_constants_6_to_7_hours,-0.82518931580282029,-0.82518905004791432,-0.95115530490875244,0 +coef_duration_constants_8_to_10_hours,-0.69268933767290863,-0.6927031726601327,-0.82810837030410767,0 +coef_eat_out_tour_departure_shift_effects,0.051316259249107425,0.051316222550347332,0.075489997863769531,0 +coef_escort_tour_arrival_constants_am_peak,0,0,0,0 +coef_escort_tour_arrival_constants_early,0,0,0,0 +coef_escort_tour_arrival_constants_evening,-0.71223140451440192,-0.71223691887938245,-0.53691869974136353,0 +coef_escort_tour_arrival_constants_late,-0.72737915035423661,-0.72736904512133638,-1.00829017162323,0 +coef_escort_tour_arrival_constants_midday_1,0,0,0,0 +coef_escort_tour_arrival_constants_midday_2,0,0,0,0 +coef_escort_tour_arrival_constants_pm_peak_1,0,0,0,0 +coef_escort_tour_arrival_constants_pm_peak_2,0,0,0,0 +coef_escort_tour_arrival_constants_pm_peak_3,0,0,0,0 +coef_escort_tour_arrival_constants_pm_peak_4,0,0,0,0 +coef_escort_tour_departure_constants_am_peak_1,-1.4235419252088168,-1.4235406297742828,-1.1123577356338501,0 +coef_escort_tour_departure_constants_am_peak_2,0.42531847435099135,0.42534779985548571,0.69878816604614258,0 +coef_escort_tour_departure_constants_am_peak_3,0.83882621454109263,0.83887850091215199,1.1962687969207764,0 +coef_escort_tour_departure_constants_am_peak_4,-0.83712685138635567,-0.83714012331863175,-0.22525821626186371,0 +coef_escort_tour_departure_constants_early,-2.860916885051735,-2.8608848408720089,-1.740135669708252,0 +coef_escort_tour_departure_constants_evening,-3.9409129509835932,-3.9409128427055573,-3.948732852935791,0 +coef_escort_tour_departure_constants_late,-5.7702770461708415,-5.77029206272538,-8.2288799285888672,0 +coef_escort_tour_departure_constants_midday_1,-0.1390533603155775,-0.1390075193706598,0.028662016615271568,0 +coef_escort_tour_departure_constants_midday_2,0,0,0,0 +coef_escort_tour_departure_constants_pm_peak,-1.4131855726269698,-1.4131494988499986,-1.1801401376724243,0 +coef_escort_tour_duration_constants_0_to_1_hours,0,0,0,0 +coef_escort_tour_duration_constants_11_to_13_hours,-3.9202328149945442,-3.9202404500970576,-2.9743649959564209,0 +coef_escort_tour_duration_constants_14_to_18_hours,-3.5604092863860122,-3.5604047727293211,-2.5074472427368164,0 +coef_escort_tour_duration_constants_2_to_3_hours,-2.421823365334085,-2.421833770793457,-2.0420138835906982,0 +coef_escort_tour_duration_constants_4_to_5_hours,-3.0455000043621441,-3.0455133085082999,-2.8802938461303711,0 +coef_escort_tour_duration_constants_6_to_7_hours,-3.1421992928711329,-3.1422099147681193,-2.9735336303710938,0 +coef_escort_tour_duration_constants_8_to_10_hours,-3.7497784769391589,-3.7497803018839528,-3.0202138423919678,0 +coef_first_of_2_plus_tours_for_same_purpose_departure_shift_effect,-0.25834434616162955,-0.25834415314457576,-0.23639999330043793,0 +coef_free_flow_round_trip_auto_time_shift_effects_duration,0.0065276813016913781,0.0065276968976601671,0.0047410000115633011,0 +coef_maintenance_tour_depart_before_7,-0.5056248112333217,-0.50561957768539378,-0.88260000944137573,0 +coef_maintenance_tour_departure_shift_effects,-0.14454038609055034,-0.14454021307852283,-0.14890000224113464,0 +coef_maintenance_tour_duration_shift_effects,-0.12686493168577978,-0.12686440360779777,-0.083719998598098755,0 +coef_number_of_escort_tours_departure_shift_effects,0.010507493295063721,0.010508213446682341,0.02012999914586544,0 +coef_number_of_individual_non_mandatory_tours_excluding_escort_departure_shift_effects,0.044135687848751132,0.044135987290636135,0.03895999863743782,0 +coef_number_of_joint_tours_departure_shift_effects,0.084912280527453296,0.08491252930940224,0.052080001682043076,0 +coef_number_of_mandatory_tours_departure_shift_effects,0.049914049123035174,0.049914648254726204,0.046730000525712967,0 +coef_ratio_of_individual_non_mandatory_tours_to_be_scheduled_to_number_of_unscheduled_hours,-14.166516751822661,-14.166519647615067,-13.630000114440918,0 +coef_school_child_age_16_plus_departure_shift_effects,-0.1010476102967722,-0.10104136957996175,0.072659999132156372,0 +coef_school_child_age_16_plus_duration_shift_effects,0.27141008329162575,0.27140733987575305,0.20949999988079071,0 +coef_school_child_age_under_16_departure_shift_effects,0.040466224371894295,0.040465357220666222,0.046569999307394028,0 +coef_school_child_age_under_16_duration_shift_effects,0.32700056448616932,0.32699981446388821,0.32719999551773071,0 +coef_school_child_under_16_arrive_after_22,-0.2464951245477969,-0.2464607983596627,-1.1799999475479126,0 +coef_shopping_tour_arrive_after_22,-2.0657698295000624,-2.065800932685089,-0.60269999504089355,0 +coef_shopping_tour_depart_before_8,-1.1138212368924993,-1.1138115434095399,-1.0369999408721924,0 +coef_shopping_tour_departure_shift_effects,-0.067931916027145156,-0.067931597698885862,-0.06015000119805336,0 +coef_shopping_tour_duration_lt_2_hours,0.67436877539980855,0.67440552001221821,0.51679998636245728,0 +coef_shopping_tour_duration_shift_effects,-0.10944476789632213,-0.10943885166753625,-0.12080000340938568,0 +coef_some_previously_scheduled_tour_begins_in_this_arrival_hour,-0.30742282105349766,-0.30742665676699332,-0.39919999241828918,0 +coef_some_previously_scheduled_tour_ends_in_this_departure_hour,-0.42079038970222704,-0.42079362641039114,-0.4562000036239624,0 +coef_subsequent_of_2_plus_tours_for_same_purpose_duration_shift_effect,-0.15663240624251576,-0.15663237202517855,-0.17309999465942383,0 +coef_subsequent_tour_must_start_after_previous_tour_for_this_purpose_ends,-999,-999,-999,0 +coef_university_student_arrive_after_22,-0.75698586492006881,-0.7570144484766741,0.54659998416900635,0 +coef_visit_tour_departure_shift_effects,0.093345651330126359,0.093345498661509735,0.096879996359348297,0 +coef_visit_tour_duration_shift_effects,0.15548956158347038,0.15549039376025442,0.16380000114440918,0 diff --git a/activitysim/estimation/test/test_larch_estimation/test_school_location.csv b/activitysim/estimation/test/test_larch_estimation/test_school_location.csv index 9149b65cb..33b657c2c 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_school_location.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_school_location.csv @@ -1,21 +1,21 @@ -,value,initvalue,nullvalue,minimum,maximum,best --999,-999,-999,-999,-999,-999,-999 -1,1,1,1,1,1,1 -coef_grade_dist_0_1,-1.8247599716114487,-1.6418999999999999,0,-25,25,-1.8247599716114487 -coef_grade_dist_15_up,-0.045999999999986392,-0.045999999999999999,0,-25,25,-0.045999999999986392 -coef_grade_dist_5_15,-0.14366066473346295,-0.2031,0,-25,25,-0.14366066473346295 -coef_high_dist_0_1,-2.1639631787042557,-0.95230000000000004,0,-25,25,-2.1639631787042557 -coef_high_dist_15_up,-0.18819999999999787,-0.18820000000000001,0,-25,25,-0.18819999999999787 -coef_high_dist_5_15,-0.10033006353999419,-0.193,0,-25,25,-0.10033006353999419 -coef_high_grade_dist_1_2,-0.747678833666925,-0.56999999999999995,0,-25,25,-0.747678833666925 -coef_high_grade_dist_2_5,-0.66638388058588283,-0.56999999999999995,0,-25,25,-0.66638388058588283 -coef_mode_logsum,0.37505355574886973,0.53580000000000005,0,-25,25,0.37505355574886973 -coef_univ_dist_0_1,-3.3133821471324696,-3.2450999999999999,0,-25,25,-3.3133821471324696 -coef_univ_dist_15_up,-0.072999999999999995,-0.072999999999999995,0,-25,25,-0.072999999999999995 -coef_univ_dist_1_2,-2.8750960133089687,-2.7010999999999998,0,-25,25,-2.8750960133089687 -coef_univ_dist_2_5,-0.45559440871309681,-0.57069999999999999,0,-25,25,-0.45559440871309681 -coef_univ_dist_5_15,-0.5718644285076383,-0.50019999999999998,0,-25,25,-0.5718644285076383 -gradeschool_AGE0519,0,0,0,0,0,0 -highschool_HSENROLL,0,0,0,0,0,0 -university_COLLFTE,-0.52424864409813143,-0.52424864409813143,0,-0.52424864409813143,-0.52424864409813143,-0.52424864409813143 -university_COLLPTE,-1.2088722041237281,-0.89648810457797545,0,-6,6,-1.2088722041237281 +param_name,value,best,initvalue,nullvalue +-999,-999,-999,-999,0 +1,1,1,1,0 +coef_grade_dist_0_1,0.080031235198373782,0.080031235198373782,-1.6418999433517456,0 +coef_grade_dist_15_up,-0.046010368210409304,-0.046010368210409304,-0.046000000089406967,0 +coef_grade_dist_5_15,0.011795679963699891,0.011795679963699891,-0.20309999585151672,0 +coef_high_dist_0_1,-0.48267138976026713,-0.48267138976026713,-0.95230001211166382,0 +coef_high_dist_15_up,-0.18818654818448871,-0.18818654818448871,-0.18819999694824219,0 +coef_high_dist_5_15,-0.12203943917498229,-0.12203943917498229,-0.19300000369548798,0 +coef_high_grade_dist_1_2,-0.2740077638163641,-0.2740077638163641,-0.56999999284744263,0 +coef_high_grade_dist_2_5,-0.12717991662132286,-0.12717991662132286,-0.56999999284744263,0 +coef_mode_logsum,0.28675535602711366,0.28675535602711366,0.53579998016357422,0 +coef_univ_dist_0_1,-0.20246864835878667,-0.20246864835878667,-3.2451000213623047,0 +coef_univ_dist_15_up,-0.072999830047635036,-0.072999830047635036,-0.072999998927116394,0 +coef_univ_dist_1_2,-0.50654663083945994,-0.50654663083945994,-2.7011001110076904,0 +coef_univ_dist_2_5,0.095856729554638809,0.095856729554638809,-0.57069998979568481,0 +coef_univ_dist_5_15,-0.1412133832985831,-0.1412133832985831,-0.50019997358322144,0 +gradeschool_AGE0519,0,0,0,0 +highschool_HSENROLL,0,0,0,0 +university_COLLFTE,-0.52424865961074829,-0.52424865961074829,-0.52424865961074829,0 +university_COLLPTE,-1275009.279056468,-1275009.279056468,-0.89648813009262085,0 diff --git a/activitysim/estimation/test/test_larch_estimation/test_school_location_loglike.csv b/activitysim/estimation/test/test_larch_estimation/test_school_location_loglike.csv index cf413cb0a..61faa0892 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_school_location_loglike.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_school_location_loglike.csv @@ -1,2 +1,2 @@ ,loglike_prior,loglike_converge -0,-4070.349038545839,-4058.2217953154559 +0,-3150.9027927232128,-2472.1256126886806 diff --git a/activitysim/estimation/test/test_larch_estimation/test_school_location_size_spec.csv b/activitysim/estimation/test/test_larch_estimation/test_school_location_size_spec.csv index 44852f23f..b5a470032 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_school_location_size_spec.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_school_location_size_spec.csv @@ -1,9 +1,9 @@ ,segment,model_selector,TOTHH,RETEMPN,FPSEMPN,HEREMPN,OTHEMPN,AGREMPN,MWTEMPN,AGE0519,HSENROLL,COLLFTE,COLLPTE -0,work_low,workplace,0,0.12912912912912916,0.19319319319319325,0.38338338338338335,0.12012012012012015,0.010010010010010012,0.1641641641641641,0,0,0,0 -1,work_med,workplace,0,0.12012012012012013,0.19719719719719711,0.32532532532532538,0.13913913913913917,0.0080080080080080097,0.21021021021021022,0,0,0,0 +0,work_low,workplace,0,0.12912912912912911,0.19319319319319317,0.38338338338338335,0.12012012012012011,0.01001001001001001,0.16416416416416416,0,0,0,0 +1,work_med,workplace,0,0.12012012012012012,0.19719719719719719,0.32532532532532532,0.13913913913913914,0.0080080080080080079,0.21021021021021019,0,0,0,0 2,work_high,workplace,0,0.11,0.20699999999999999,0.28399999999999997,0.154,0.0060000000000000001,0.23899999999999999,0,0,0,0 3,work_veryhigh,workplace,0,0.092999999999999999,0.27000000000000002,0.24099999999999999,0.14599999999999999,0.0040000000000000001,0.246,0,0,0,0 -4,university,school,0,0,0,0,0,0,0,0,0,0.66475996651277125,0.33524003348722875 +4,university,school,0,0,0,0,0,0,0,0,0,1,0 5,gradeschool,school,0,0,0,0,0,0,0,1,0,0,0 6,highschool,school,0,0,0,0,0,0,0,0,1,0,0 7,escort,non_mandatory,0,0.22500000000000001,0,0.14399999999999999,0,0,0,0.46500000000000002,0.16600000000000001,0,0 @@ -14,10 +14,10 @@ 12,othdiscr,non_mandatory,0.25225225225225223,0.2122122122122122,0,0.2722722722722723,0.16516516516516516,0,0,0,0.098098098098098108,0,0 13,atwork,atwork,0,0.74199999999999999,0,0.25800000000000001,0,0,0,0,0,0,0 14,work,trip,0,0.16666666666666666,0.16666666666666666,0.16666666666666666,0.16666666666666666,0.16666666666666666,0.16666666666666666,0,0,0,0 -15,escort,trip,0.0010000000000000002,0.22500000000000003,0,0.14400000000000002,0,0,0,0.46399999999999997,0.16600000000000004,0,0 +15,escort,trip,0.001,0.22500000000000001,0,0.14399999999999999,0,0,0,0.46400000000000002,0.16600000000000001,0,0 16,shopping,trip,0.001,0.999,0,0,0,0,0,0,0,0,0 17,eatout,trip,0,0.74199999999999999,0,0.25800000000000001,0,0,0,0,0,0,0 18,othmaint,trip,0.001,0.48099999999999998,0,0.51800000000000002,0,0,0,0,0,0,0 19,social,trip,0.001,0.52100000000000002,0,0.47799999999999998,0,0,0,0,0,0,0 20,othdiscr,trip,0.25225225225225223,0.2122122122122122,0,0.2722722722722723,0.16516516516516516,0,0,0,0.098098098098098108,0,0 -21,univ,trip,0.000999000999000999,0,0,0,0,0,0,0,0,0.59140859140859148,0.4075924075924075 +21,univ,trip,0.00099900099900099922,0,0,0,0,0,0,0,0,0.59140859140859148,0.40759240759240761 diff --git a/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_atwork_subtour_frequency_SLSQP_.csv b/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_atwork_subtour_frequency_SLSQP_.csv index b05f6c928..a34334c19 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_atwork_subtour_frequency_SLSQP_.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_atwork_subtour_frequency_SLSQP_.csv @@ -1,111 +1,111 @@ -,value,initvalue,nullvalue,minimum,maximum,best -coefficient_at_work_sub_tour_asc_business1,1.4214079856419304,-0.53720000000000001,0,,,1.4214079856419304 -coefficient_at_work_sub_tour_asc_business2,-0.13077793218906725,-2.1337000000000002,0,,,-0.13077793218906725 -coefficient_at_work_sub_tour_asc_eat,5.8090564007216319,0.85760000000000003,0,,,5.8090564007216319 -coefficient_at_work_sub_tour_asc_eat_business,-23.415365723862234,-0.97209999999999996,0,,,-23.415365723862234 -coefficient_at_work_sub_tour_asc_maint,12.910479269683176,-0.61980000000000002,0,,,12.910479269683176 -coefficient_auto_accessibility_to_retail_for_work_taz_business1,-0.23508337555533637,0.053400000000000003,0,,,-0.23508337555533637 -coefficient_auto_accessibility_to_retail_for_work_taz_business2,2.9511349220652563,0.1067,0,,,2.9511349220652563 -coefficient_auto_accessibility_to_retail_for_work_taz_eat,-0.7610481619548336,0.014999999999999999,0,,,-0.7610481619548336 -coefficient_auto_accessibility_to_retail_for_work_taz_eat_business,1.5155478484531482,0.0683,0,,,1.5155478484531482 -coefficient_auto_accessibility_to_retail_for_work_taz_maint,-3.2006512330401198,0.026499999999999999,0,,,-3.2006512330401198 -coefficient_dummy_for_drive_alone_mode_for_work_tour_business1,3.9438022928732326,0.99009999999999998,0,,,3.9438022928732326 -coefficient_dummy_for_drive_alone_mode_for_work_tour_business2,-7.2851228526180369,1.9802,0,,,-7.2851228526180369 -coefficient_dummy_for_drive_alone_mode_for_work_tour_eat,3.2162405355786916,0.48039999999999999,0,,,3.2162405355786916 -coefficient_dummy_for_drive_alone_mode_for_work_tour_eat_business,2.3334830273468778,1.4704999999999999,0,,,2.3334830273468778 -coefficient_dummy_for_drive_alone_mode_for_work_tour_maint,3.8657969968183186,1.153,0,,,3.8657969968183186 -coefficient_dummy_for_full_time_worker_business1,-11.365293683630657,-7.375,0,,,-11.365293683630657 -coefficient_dummy_for_full_time_worker_business2,-13.833915024299738,-14.279999999999999,0,,,-13.833915024299738 -coefficient_dummy_for_full_time_worker_eat,-9.545917028191262,-7.2800000000000002,0,,,-9.545917028191262 -coefficient_dummy_for_full_time_worker_eat_business,-11.192168369499433,-14.789999999999999,0,,,-11.192168369499433 -coefficient_dummy_for_full_time_worker_maint,-5.8807058943821362,-8.093,0,,,-5.8807058943821362 -coefficient_dummy_for_non_full_time_worker_business1,-2.3700983307274996,-8.3190000000000008,0,,,-2.3700983307274996 -coefficient_dummy_for_non_full_time_worker_business2,-12.723162907889261,-14.279999999999999,0,,,-12.723162907889261 -coefficient_dummy_for_non_full_time_worker_eat,-1.3866265710866461,-8.6039999999999992,0,,,-1.3866265710866461 -coefficient_dummy_for_non_full_time_worker_eat_business,-40.831097354363017,-14.789999999999999,0,,,-40.831097354363017 -coefficient_dummy_for_non_full_time_worker_maint,3.1039851640661054,-8.2140000000000004,0,,,3.1039851640661054 -coefficient_dummy_for_non_workers_business1,-5,-5,0,-5,-5,-5 -coefficient_dummy_for_non_workers_business2,-5,-5,0,-5,-5,-5 -coefficient_dummy_for_non_workers_eat,0,0,0,0,0,0 -coefficient_dummy_for_non_workers_eat_business,-5,-5,0,-5,-5,-5 -coefficient_dummy_for_non_workers_maint,-5,-5,0,-5,-5,-5 -coefficient_dummy_for_worker_or_student_with_non_mandatory_tour_business1,0,0,0,0,0,0 -coefficient_dummy_for_worker_or_student_with_non_mandatory_tour_business2,0,0,0,0,0,0 -coefficient_dummy_for_worker_or_student_with_non_mandatory_tour_eat,0,0,0,0,0,0 -coefficient_dummy_for_worker_or_student_with_non_mandatory_tour_eat_business,0,0,0,0,0,0 -coefficient_dummy_for_worker_or_student_with_non_mandatory_tour_maint,-0.44654348916818676,-0.35730000000000001,0,,,-0.44654348916818676 -coefficient_high_hh_income_dummy_business1,-5.6994858911518085,1.0660000000000001,0,,,-5.6994858911518085 -coefficient_high_hh_income_dummy_business2,18.177579828448355,2.1320000000000001,0,,,18.177579828448355 -coefficient_high_hh_income_dummy_eat,-5.3601399728515835,0.86929999999999996,0,,,-5.3601399728515835 -coefficient_high_hh_income_dummy_eat_business,5.9493499938492986,1.9353,0,,,5.9493499938492986 -coefficient_high_hh_income_dummy_maint,-6.8996039582959119,0.1651,0,,,-6.8996039582959119 -coefficient_individual_discretionary_tours_made_by_full_time_worker_business1,-1.4238674423340238,0.70450000000000002,0,,,-1.4238674423340238 -coefficient_individual_discretionary_tours_made_by_full_time_worker_business2,19.497249614698436,1.409,0,,,19.497249614698436 -coefficient_individual_discretionary_tours_made_by_full_time_worker_eat,-1.4579805637692655,0.2334,0,,,-1.4579805637692655 -coefficient_individual_discretionary_tours_made_by_full_time_worker_eat_business,-11.112941997302819,0.93789999999999996,0,,,-11.112941997302819 -coefficient_individual_discretionary_tours_made_by_full_time_worker_maint,-1.7115596112922862,0.50609999999999999,0,,,-1.7115596112922862 -coefficient_individual_discretionary_tours_made_by_part_time_worker_business1,1.7016751707114186,0.70450000000000002,0,,,1.7016751707114186 -coefficient_individual_discretionary_tours_made_by_part_time_worker_business2,1.5313378193861862,1.409,0,,,1.5313378193861862 -coefficient_individual_discretionary_tours_made_by_part_time_worker_eat,0.98156496358878631,0.67759999999999998,0,,,0.98156496358878631 -coefficient_individual_discretionary_tours_made_by_part_time_worker_eat_business,0.21527427337992269,1.3821000000000001,0,,,0.21527427337992269 -coefficient_individual_discretionary_tours_made_by_part_time_worker_maint,0.24944777293344775,0.50609999999999999,0,,,0.24944777293344775 -coefficient_individual_eating_out_tours_made_by_person_business1,0.42490805390828246,0.54339999999999999,0,,,0.42490805390828246 -coefficient_individual_eating_out_tours_made_by_person_business2,16.88422034232115,1.0868,0,,,16.88422034232115 -coefficient_individual_eating_out_tours_made_by_person_eat,-0.21103858651833801,0.54910000000000003,0,,,-0.21103858651833801 -coefficient_individual_eating_out_tours_made_by_person_eat_business,-13.757488989198457,1.0925,0,,,-13.757488989198457 -coefficient_individual_eating_out_tours_made_by_person_maint,0.84779917948707073,0.91659999999999997,0,,,0.84779917948707073 -coefficient_log_of_the_work_tour_duration_business1,10.797431417603184,1.1419999999999999,0,,,10.797431417603184 -coefficient_log_of_the_work_tour_duration_business2,-41.041133510722389,2.2839999999999998,0,,,-41.041133510722389 -coefficient_log_of_the_work_tour_duration_eat,9.912073454627409,1.55,0,,,9.912073454627409 -coefficient_log_of_the_work_tour_duration_eat_business,19.216017820975473,2.6920000000000002,0,,,19.216017820975473 -coefficient_log_of_the_work_tour_duration_maint,10.442610817511719,1.659,0,,,10.442610817511719 -coefficient_main_shop_escort_tours_allocated_to_full_time_worker_business1,5.2452009890599847,-0.1903,0,,,5.2452009890599847 -coefficient_main_shop_escort_tours_allocated_to_full_time_worker_business2,-5.9574096875877984,-0.38059999999999999,0,,,-5.9574096875877984 -coefficient_main_shop_escort_tours_allocated_to_full_time_worker_eat,5.7343399360868084,0.051999999999999998,0,,,5.7343399360868084 -coefficient_main_shop_escort_tours_allocated_to_full_time_worker_eat_business,-11.365551805409792,-0.24229999999999999,0,,,-11.365551805409792 -coefficient_main_shop_escort_tours_allocated_to_full_time_worker_maint,5.726820567850968,0.14460000000000001,0,,,5.726820567850968 -coefficient_main_shop_escort_tours_allocated_to_part_time_worker_business1,-14.379203352289357,-0.1903,0,,,-14.379203352289357 -coefficient_main_shop_escort_tours_allocated_to_part_time_worker_business2,0.18243743982694705,-0.38059999999999999,0,,,0.18243743982694705 -coefficient_main_shop_escort_tours_allocated_to_part_time_worker_eat,6.6450879837969055,-0.30990000000000001,0,,,6.6450879837969055 -coefficient_main_shop_escort_tours_allocated_to_part_time_worker_eat_business,-0.49226068812509693,-0.50019999999999998,0,,,-0.49226068812509693 -coefficient_main_shop_escort_tours_allocated_to_part_time_worker_maint,6.3906386167906994,-0.27229999999999999,0,,,6.3906386167906994 -coefficient_medium_hh_income_dummy_business1,-3.2862939594211058,0.55549999999999999,0,,,-3.2862939594211058 -coefficient_medium_hh_income_dummy_business2,2.0060702575802463,1.111,0,,,2.0060702575802463 -coefficient_medium_hh_income_dummy_eat,-2.5300981505732136,0.60999999999999999,0,,,-2.5300981505732136 -coefficient_medium_hh_income_dummy_eat_business,10.500987924287303,1.1655,0,,,10.500987924287303 -coefficient_medium_hh_income_dummy_maint,-3.0959660718740842,0.1527,0,,,-3.0959660718740842 -coefficient_participation_in_joint_discretionary_tours_business1,0.88783303805250202,-0.26369999999999999,0,,,0.88783303805250202 -coefficient_participation_in_joint_discretionary_tours_business2,-0.41998352565813962,-0.52739999999999998,0,,,-0.41998352565813962 -coefficient_participation_in_joint_discretionary_tours_eat,-0.24481723660555421,0.35880000000000001,0,,,-0.24481723660555421 -coefficient_participation_in_joint_discretionary_tours_eat_business,-2.7238766448704519,0.095100000000000004,0,,,-2.7238766448704519 -coefficient_participation_in_joint_discretionary_tours_maint,2.7458443690817487,0.58220000000000005,0,,,2.7458443690817487 -coefficient_participation_in_joint_shop_main_eat_tours_business1,3.5611554115337705,0.083000000000000004,0,,,3.5611554115337705 -coefficient_participation_in_joint_shop_main_eat_tours_business2,-0.28005028801856696,0.16600000000000001,0,,,-0.28005028801856696 -coefficient_participation_in_joint_shop_main_eat_tours_eat,1.988636928413654,0.24579999999999999,0,,,1.988636928413654 -coefficient_participation_in_joint_shop_main_eat_tours_eat_business,-6.5451744879809857,0.32879999999999998,0,,,-6.5451744879809857 -coefficient_participation_in_joint_shop_main_eat_tours_maint,2.1793324360516571,0.080299999999999996,0,,,2.1793324360516571 -coefficient_two_work_tours_by_person_business1,3.6940239753295181,0.37530000000000002,0,,,3.6940239753295181 -coefficient_two_work_tours_by_person_business2,-4.1046837844384205,0.75060000000000004,0,,,-4.1046837844384205 -coefficient_two_work_tours_by_person_eat,1.927236938048462,-0.98619999999999997,0,,,1.927236938048462 -coefficient_two_work_tours_by_person_eat_business,-5.4249750305237576,-0.6109,0,,,-5.4249750305237576 -coefficient_two_work_tours_by_person_maint,3.2059979015841251,-0.23119999999999999,0,,,3.2059979015841251 -coefficient_walk_accessibility_to_retail_for_work_taz_business1,0,0,0,0,0,0 -coefficient_walk_accessibility_to_retail_for_work_taz_business2,0,0,0,0,0,0 -coefficient_walk_accessibility_to_retail_for_work_taz_eat,0.053293769108333916,0.059999999999999998,0,,,0.053293769108333916 -coefficient_walk_accessibility_to_retail_for_work_taz_eat_business,-0.46901654329224335,0.059999999999999998,0,,,-0.46901654329224335 -coefficient_walk_accessibility_to_retail_for_work_taz_maint,0.39304906249970034,0.040000000000000001,0,,,0.39304906249970034 -coefficient_workplace_suburban_area_dummy_business1,-0.11020000000000001,-0.11020000000000001,0,,,-0.11020000000000001 -coefficient_workplace_suburban_area_dummy_business2,-0.22040000000000001,-0.22040000000000001,0,,,-0.22040000000000001 -coefficient_workplace_suburban_area_dummy_eat,-0.29160000000000003,-0.29160000000000003,0,,,-0.29160000000000003 -coefficient_workplace_suburban_area_dummy_eat_business,-0.40179999999999999,-0.40179999999999999,0,,,-0.40179999999999999 -coefficient_workplace_suburban_area_dummy_maint,0,0,0,0,0,0 -coefficient_workplace_urban_area_dummy_business1,1.7351079856418732,-0.2235,0,,,1.7351079856418732 -coefficient_workplace_urban_area_dummy_business2,1.5559220678109973,-0.44700000000000001,0,,,1.5559220678109973 -coefficient_workplace_urban_area_dummy_eat,4.5332564007214371,-0.41820000000000002,0,,,4.5332564007214371 -coefficient_workplace_urban_area_dummy_eat_business,-23.084965723862449,-0.64170000000000005,0,,,-23.084965723862449 -coefficient_workplace_urban_area_dummy_maint,13.382379269683053,-0.1479,0,,,13.382379269683053 -coefficient_zero_cars_owned_by_hh_dummy_business1,-0.5268759138584419,-0.33910000000000001,0,,,-0.5268759138584419 -coefficient_zero_cars_owned_by_hh_dummy_business2,0,0,0,0,0,0 -coefficient_zero_cars_owned_by_hh_dummy_eat,0,0,0,0,0,0 -coefficient_zero_cars_owned_by_hh_dummy_eat_business,-19.11629098153702,-0.33910000000000001,0,,,-19.11629098153702 -coefficient_zero_cars_owned_by_hh_dummy_maint,0.55934969853310723,0.1762,0,,,0.55934969853310723 +param_name,value,best,initvalue,nullvalue +coefficient_at_work_sub_tour_asc_business1,-4.6364509649106624,-4.636450908579854,-0.53719997406005859,0 +coefficient_at_work_sub_tour_asc_business2,-1.8249400470488537,-1.8249400513348371,-2.133699893951416,0 +coefficient_at_work_sub_tour_asc_eat,-1.2025517519916142,-1.2025517383789965,0.85759997367858887,0 +coefficient_at_work_sub_tour_asc_eat_business,-2.4601386278749016,-2.460138609917645,-0.97210001945495605,0 +coefficient_at_work_sub_tour_asc_maint,6.7188815064577412,6.718881422843042,-0.61979997158050537,0 +coefficient_auto_accessibility_to_retail_for_work_taz_business1,1.5195960607537637,1.5195960534758026,0.053399998694658279,0 +coefficient_auto_accessibility_to_retail_for_work_taz_business2,0.39623374265129618,0.3962337362698467,0.10670000314712524,0 +coefficient_auto_accessibility_to_retail_for_work_taz_eat,1.244843971401054,1.2448439700604323,0.014999999664723873,0 +coefficient_auto_accessibility_to_retail_for_work_taz_eat_business,-1.4936433037222552,-1.4936433133522584,0.068300001323223114,0 +coefficient_auto_accessibility_to_retail_for_work_taz_maint,-1.3971304685665173,-1.397130443936482,0.026499999687075615,0 +coefficient_dummy_for_drive_alone_mode_for_work_tour_business1,2.5403075484019295,2.5403075438954636,0.99010002613067627,0 +coefficient_dummy_for_drive_alone_mode_for_work_tour_business2,-1.5471111587719255,-1.5471111364437549,1.9802000522613525,0 +coefficient_dummy_for_drive_alone_mode_for_work_tour_eat,1.8134290820782721,1.8134290762249321,0.48039999604225159,0 +coefficient_dummy_for_drive_alone_mode_for_work_tour_eat_business,0.81302147728988705,0.81302147967997473,1.4704999923706055,0 +coefficient_dummy_for_drive_alone_mode_for_work_tour_maint,2.4545531149456474,2.4545531005871952,1.1529999971389771,0 +coefficient_dummy_for_full_time_worker_business1,-10.835277488785893,-10.83527745465712,-7.375,0 +coefficient_dummy_for_full_time_worker_business2,-13.651388366502351,-13.651388372174022,-14.279999732971191,0 +coefficient_dummy_for_full_time_worker_eat,-9.4982645189968196,-9.4982645055658654,-7.2800002098083496,0 +coefficient_dummy_for_full_time_worker_eat_business,-12.473124948668486,-12.473124950259384,-14.789999961853027,0 +coefficient_dummy_for_full_time_worker_maint,-5.3599449936662609,-5.3599450339634185,-8.0930004119873047,0 +coefficient_dummy_for_non_full_time_worker_business1,-8.9579737462053064,-8.9579737240032706,-8.319000244140625,0 +coefficient_dummy_for_non_full_time_worker_business2,-14.599851252537475,-14.599851251151787,-14.279999732971191,0 +coefficient_dummy_for_non_full_time_worker_eat,-8.4458875080344917,-8.445887507852829,-8.6040000915527344,0 +coefficient_dummy_for_non_full_time_worker_eat_business,-18.594913583457473,-18.594913563909319,-14.789999961853027,0 +coefficient_dummy_for_non_full_time_worker_maint,-3.6083736885127893,-3.6083737318303313,-8.2139997482299805,0 +coefficient_dummy_for_non_workers_business1,-5,-5,-5,0 +coefficient_dummy_for_non_workers_business2,-5,-5,-5,0 +coefficient_dummy_for_non_workers_eat,0,0,0,0 +coefficient_dummy_for_non_workers_eat_business,-5,-5,-5,0 +coefficient_dummy_for_non_workers_maint,-5,-5,-5,0 +coefficient_dummy_for_worker_or_student_with_non_mandatory_tour_business1,0,0,0,0 +coefficient_dummy_for_worker_or_student_with_non_mandatory_tour_business2,0,0,0,0 +coefficient_dummy_for_worker_or_student_with_non_mandatory_tour_eat,0,0,0,0 +coefficient_dummy_for_worker_or_student_with_non_mandatory_tour_eat_business,0,0,0,0 +coefficient_dummy_for_worker_or_student_with_non_mandatory_tour_maint,-0.41501623497381018,-0.4150162451792187,-0.35730001330375671,0 +coefficient_high_hh_income_dummy_business1,-0.33979337120056141,-0.33979335118765108,1.0659999847412109,0 +coefficient_high_hh_income_dummy_business2,4.2112639057799823,4.2112638870883581,2.1319999694824219,0 +coefficient_high_hh_income_dummy_eat,0.023039749877190804,0.023039775965731642,0.86930000782012939,0 +coefficient_high_hh_income_dummy_eat_business,3.7450872508803248,3.745087211197407,1.9352999925613403,0 +coefficient_high_hh_income_dummy_maint,-1.471897587383632,-1.471897575110541,0.16509999334812164,0 +coefficient_individual_discretionary_tours_made_by_full_time_worker_business1,-0.258886010731674,-0.25888602469708244,0.70450001955032349,0 +coefficient_individual_discretionary_tours_made_by_full_time_worker_business2,10.013216960858641,10.013216913800566,1.409000039100647,0 +coefficient_individual_discretionary_tours_made_by_full_time_worker_eat,-0.27143991243306015,-0.27143990533123996,0.23340000212192535,0 +coefficient_individual_discretionary_tours_made_by_full_time_worker_eat_business,-5.1450511716765561,-5.1450511394525638,0.93790000677108765,0 +coefficient_individual_discretionary_tours_made_by_full_time_worker_maint,-0.54693979952226501,-0.54693977782459402,0.50609999895095825,0 +coefficient_individual_discretionary_tours_made_by_part_time_worker_business1,1.5008073499859345,1.5008073606710928,0.70450001955032349,0 +coefficient_individual_discretionary_tours_made_by_part_time_worker_business2,1.3725147779808102,1.3725147781405138,1.409000039100647,0 +coefficient_individual_discretionary_tours_made_by_part_time_worker_eat,0.8707190441243009,0.8707190632298788,0.67760002613067627,0 +coefficient_individual_discretionary_tours_made_by_part_time_worker_eat_business,0.75707630852833474,0.75707631165373623,1.382099986076355,0 +coefficient_individual_discretionary_tours_made_by_part_time_worker_maint,0.17818258918958901,0.17818255611374761,0.50609999895095825,0 +coefficient_individual_eating_out_tours_made_by_person_business1,1.2291884533614996,1.2291884357040239,0.54339998960494995,0 +coefficient_individual_eating_out_tours_made_by_person_business2,5.3890915350859343,5.3890915063685627,1.0867999792098999,0 +coefficient_individual_eating_out_tours_made_by_person_eat,0.59241286979897301,0.59241286727354991,0.54909998178482056,0 +coefficient_individual_eating_out_tours_made_by_person_eat_business,-4.6396338093217437,-4.6396337749049197,1.0924999713897705,0 +coefficient_individual_eating_out_tours_made_by_person_maint,1.6173408620021299,1.6173408764855761,0.91659998893737793,0 +coefficient_log_of_the_work_tour_duration_business1,2.8745950964750677,2.8745950289586566,1.1419999599456787,0 +coefficient_log_of_the_work_tour_duration_business2,-9.4213725166497184,-9.4213723813479699,2.2839999198913574,0 +coefficient_log_of_the_work_tour_duration_eat,2.0174558496514647,2.0174558005400733,1.5499999523162842,0 +coefficient_log_of_the_work_tour_duration_eat_business,11.401343306668366,11.401343332337083,2.6919999122619629,0 +coefficient_log_of_the_work_tour_duration_maint,2.4549780473709193,2.4549780030282569,1.659000039100647,0 +coefficient_main_shop_escort_tours_allocated_to_full_time_worker_business1,1.1088398218159976,1.1088398127197108,-0.19030000269412994,0 +coefficient_main_shop_escort_tours_allocated_to_full_time_worker_business2,-0.57516973946012429,-0.575169738593175,-0.38060000538825989,0 +coefficient_main_shop_escort_tours_allocated_to_full_time_worker_eat,1.5872866399810972,1.5872866248218596,0.052000001072883606,0 +coefficient_main_shop_escort_tours_allocated_to_full_time_worker_eat_business,-4.2886646505292108,-4.2886646240189545,-0.24230000376701355,0 +coefficient_main_shop_escort_tours_allocated_to_full_time_worker_maint,1.5511079213734775,1.5511079182517966,0.14460000395774841,0 +coefficient_main_shop_escort_tours_allocated_to_part_time_worker_business1,-6.3194536970520918,-6.3194536671381956,-0.19030000269412994,0 +coefficient_main_shop_escort_tours_allocated_to_part_time_worker_business2,-0.45741583885508108,-0.45741583852963658,-0.38060000538825989,0 +coefficient_main_shop_escort_tours_allocated_to_part_time_worker_eat,3.0910693656661703,3.0910693473970023,-0.30989998579025269,0 +coefficient_main_shop_escort_tours_allocated_to_part_time_worker_eat_business,-0.85983485391771264,-0.85983485226518608,-0.50019997358322144,0 +coefficient_main_shop_escort_tours_allocated_to_part_time_worker_maint,2.8923350517436197,2.8923350381209207,-0.27230000495910645,0 +coefficient_medium_hh_income_dummy_business1,-1.1331895926048559,-1.1331895937415595,0.55549997091293335,0 +coefficient_medium_hh_income_dummy_business2,0.81318352183524256,0.81318352315710596,1.1109999418258667,0 +coefficient_medium_hh_income_dummy_eat,-0.34741746210681906,-0.3474174464669022,0.61000001430511475,0 +coefficient_medium_hh_income_dummy_eat_business,5.121964519155811,5.1219645052482301,1.1655000448226929,0 +coefficient_medium_hh_income_dummy_maint,-0.85984100745095871,-0.8598410093684542,0.15270000696182251,0 +coefficient_participation_in_joint_discretionary_tours_business1,0.30193135342719479,0.30193135643871699,-0.26370000839233398,0 +coefficient_participation_in_joint_discretionary_tours_business2,-0.59379173063206181,-0.59379173033201538,-0.52740001678466797,0 +coefficient_participation_in_joint_discretionary_tours_eat,-0.97053293091235093,-0.9705329212314463,0.35879999399185181,0 +coefficient_participation_in_joint_discretionary_tours_eat_business,-0.5490816124017508,-0.54908160890359503,0.095100000500679016,0 +coefficient_participation_in_joint_discretionary_tours_maint,2.0564748805838153,2.056474864093186,0.58219999074935913,0 +coefficient_participation_in_joint_shop_main_eat_tours_business1,1.8768257580478833,1.8768257619258122,0.082999996840953827,0 +coefficient_participation_in_joint_shop_main_eat_tours_business2,0.055786350132296811,0.055786350662721744,0.16599999368190765,0 +coefficient_participation_in_joint_shop_main_eat_tours_eat,0.31370718460939551,0.31370718509133344,0.24580000340938568,0 +coefficient_participation_in_joint_shop_main_eat_tours_eat_business,-1.8724721811608103,-1.8724721667874074,0.32879999279975891,0 +coefficient_participation_in_joint_shop_main_eat_tours_maint,0.53005287839341431,0.53005285912971956,0.080300003290176392,0 +coefficient_two_work_tours_by_person_business1,0.78174817096251792,0.78174816097861666,0.37529999017715454,0 +coefficient_two_work_tours_by_person_business2,0.67460859753132585,0.67460859786572203,0.75059998035430908,0 +coefficient_two_work_tours_by_person_eat,-0.96831618429168598,-0.96831618402710151,-0.98619997501373291,0 +coefficient_two_work_tours_by_person_eat_business,-1.4448302925402916,-1.4448302854771486,-0.61089998483657837,0 +coefficient_two_work_tours_by_person_maint,0.25438972433601764,0.2543897266577953,-0.23119999468326569,0 +coefficient_walk_accessibility_to_retail_for_work_taz_business1,0,0,0,0 +coefficient_walk_accessibility_to_retail_for_work_taz_business2,0,0,0,0 +coefficient_walk_accessibility_to_retail_for_work_taz_eat,0.024318701408312954,0.024318700872964293,0.059999998658895493,0 +coefficient_walk_accessibility_to_retail_for_work_taz_eat_business,-0.098985033594679236,-0.098985043830151581,0.059999998658895493,0 +coefficient_walk_accessibility_to_retail_for_work_taz_maint,0.37714309948187719,0.37714309907729421,0.039999999105930328,0 +coefficient_workplace_suburban_area_dummy_business1,-0.11020000278949738,-0.11020000278949738,-0.11020000278949738,0 +coefficient_workplace_suburban_area_dummy_business2,-0.22040000557899475,-0.22040000557899475,-0.22040000557899475,0 +coefficient_workplace_suburban_area_dummy_eat,-0.29159998893737793,-0.29159998893737793,-0.29159998893737793,0 +coefficient_workplace_suburban_area_dummy_eat_business,-0.4018000066280365,-0.4018000066280365,-0.4018000066280365,0 +coefficient_workplace_suburban_area_dummy_maint,0,0,0,0 +coefficient_workplace_urban_area_dummy_business1,-4.3227509893008715,-4.3227509329700631,-0.22349999845027924,0 +coefficient_workplace_urban_area_dummy_business2,-0.13824014999799764,-0.13824015428398095,-0.44699999690055847,0 +coefficient_workplace_urban_area_dummy_eat,-2.4783517118896161,-2.4783516982769984,-0.41819998621940613,0 +coefficient_workplace_urban_area_dummy_eat_business,-2.1297386377930989,-2.1297386198358423,-0.64170002937316895,0 +coefficient_workplace_urban_area_dummy_maint,7.1907814778236281,7.1907813942089289,-0.14790000021457672,0 +coefficient_zero_cars_owned_by_hh_dummy_business1,-0.48372662658348159,-0.48372661407098899,-0.33910000324249268,0 +coefficient_zero_cars_owned_by_hh_dummy_business2,0,0,0,0 +coefficient_zero_cars_owned_by_hh_dummy_eat,0,0,0,0 +coefficient_zero_cars_owned_by_hh_dummy_eat_business,-7.372632298534227,-7.3726322561599522,-0.33910000324249268,0 +coefficient_zero_cars_owned_by_hh_dummy_maint,0.53982915542758059,0.53982913595117754,0.17620000243186951,0 diff --git a/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_atwork_subtour_frequency_SLSQP_loglike.csv b/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_atwork_subtour_frequency_SLSQP_loglike.csv index 2f32cb32a..b0b7c8331 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_atwork_subtour_frequency_SLSQP_loglike.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_atwork_subtour_frequency_SLSQP_loglike.csv @@ -1,2 +1,2 @@ ,loglike_prior,loglike_converge -0,-339.26475293528824,-311.08163243830268 +0,-339.26475419242206,-311.72832904369682 diff --git a/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_auto_ownership_BHHH_.csv b/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_auto_ownership_BHHH_.csv index 36f7acad3..a45f94482 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_auto_ownership_BHHH_.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_auto_ownership_BHHH_.csv @@ -1,4 +1,4 @@ -,value,initvalue,nullvalue,minimum,maximum,best +param_name,value,initvalue,nullvalue,minimum,maximum,best coef_cars1_asc,4.7447107380921025,1.1865000000000001,0,,,4.7447107380921025 coef_cars1_asc_county,-0.56599882256075029,-0.56599999999999995,0,,,-0.56599882256075029 coef_cars1_asc_marin,-0.24339921273778259,-0.24340000000000001,0,,,-0.24339921273778259 diff --git a/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_free_parking_BHHH_.csv b/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_free_parking_BHHH_.csv index d721934bd..ab1d9efd3 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_free_parking_BHHH_.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_free_parking_BHHH_.csv @@ -1,4 +1,4 @@ -,value,initvalue,nullvalue,minimum,maximum,holdfast,best +param_name,value,initvalue,nullvalue,minimum,maximum,holdfast,best 0.0,0,0,0,0,0,1,0 coef_asc_alameda,-0.10920000000000001,-0.10920000000000001,0,,,0,-0.10920000000000001 coef_asc_san_francisco,-2.4563318326358723,-2.6402999999999999,0,,,0,-2.4563318326358723 diff --git a/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_joint_tour_composition_SLSQP_.csv b/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_joint_tour_composition_SLSQP_.csv index 40c2da343..f6db0bb7d 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_joint_tour_composition_SLSQP_.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_joint_tour_composition_SLSQP_.csv @@ -1,32 +1,32 @@ -,value,initvalue,nullvalue,minimum,maximum,best -coef_asc_children,121.62774629212394,5.3517000000000001,0,,,121.62774629212394 -coef_asc_mixed,-88.249612624384525,5.6289999999999996,0,,,-88.249612624384525 -coef_household_has_more_cars_than_workers_adults,-40.894264494991035,1.3859999999999999,0,,,-40.894264494991035 -coef_household_has_more_cars_than_workers_mixed,153.8152034125998,0.751,0,,,153.8152034125998 -coef_household_in_suburban_area_adults,0.51049999999999995,0.51049999999999995,0,,,0.51049999999999995 -coef_household_in_suburban_area_mixed,0.1283,0.1283,0,,,0.1283 -coef_household_in_urban_area,-21.823333667739977,0.57410000000000005,0,,,-21.823333667739977 -coef_log_max_overlap_of_adults_time_windows,-36.285976396423372,1.1919999999999999,0,,,-36.285976396423372 -coef_log_max_overlap_of_childrens_time_windows,283.69666707732551,1.841,0,,,283.69666707732551 -coef_log_max_overlap_of_time_windows,196.72857307970887,1.958,0,,,196.72857307970887 -coef_low_income_households_adults,-16.894953557817836,1.248,0,,,-16.894953557817836 -coef_low_income_households_mixed,-3.1435928555076917,0.57550000000000001,0,,,-3.1435928555076917 -coef_medium_income_households,-161.72738528562726,0.83689999999999998,0,,,-161.72738528562726 -coef_number_of_children_too_young_for_school_children,-110.04828004959086,0.73060000000000003,0,,,-110.04828004959086 -coef_number_of_children_too_young_for_school_mixed,9.5393263775476171,0.79059999999999997,0,,,9.5393263775476171 -coef_number_of_driving_age_children_children,-172.31193722793208,-0.26669999999999999,0,,,-172.31193722793208 -coef_number_of_driving_age_children_mixed,184.76140753321386,-0.93989999999999996,0,,,184.76140753321386 -coef_number_of_full_time_workers_adults,185.49031080785167,1.024,0,,,185.49031080785167 -coef_number_of_full_time_workers_mixed,50.943192997924122,0.3624,0,,,50.943192997924122 -coef_number_of_non_workers_adults,40.041010494333662,0.62629999999999997,0,,,40.041010494333662 -coef_number_of_non_workers_mixed,-96.438665924994751,-0.37240000000000001,0,,,-96.438665924994751 -coef_number_of_part_time_workers_adults,47.088158071231007,0.54120000000000001,0,,,47.088158071231007 -coef_number_of_part_time_workers_mixed,58.958712458292865,0.31640000000000001,0,,,58.958712458292865 -coef_number_of_pre_driving_age_children_children,12.678858152945852,0.73060000000000003,0,,,12.678858152945852 -coef_number_of_pre_driving_age_children_mixed,158.96026734481441,0.35320000000000001,0,,,158.96026734481441 -coef_number_of_university_students,-5.007830161412854,0.82450000000000001,0,,,-5.007830161412854 -coef_tour_purpose_is_discretionary_adults,0.76480000000000004,0.76480000000000004,0,,,0.76480000000000004 -coef_tour_purpose_is_discretionary_children,0.5101,0.5101,0,,,0.5101 -coef_tour_purpose_is_eating_out_children,-0.96779999999999999,-0.96779999999999999,0,,,-0.96779999999999999 -coef_tour_purpose_is_eating_out_mixed,-0.80269999999999997,-0.80269999999999997,0,,,-0.80269999999999997 -coef_unavailable,-999,-999,0,-999,-999,-999 +param_name,value,best,initvalue,nullvalue +coef_asc_children,31.580459657771478,31.580459657771478,5.3516998291015625,0 +coef_asc_mixed,-8.4815755302186577,-8.4815755302186577,5.629000186920166,0 +coef_household_has_more_cars_than_workers_adults,-14.008943838901908,-14.008943838901908,1.3860000371932983,0 +coef_household_has_more_cars_than_workers_mixed,25.695328937041246,25.695328937041246,0.75099998712539673,0 +coef_household_in_suburban_area_adults,0.51050001382827759,0.51050001382827759,0.51050001382827759,0 +coef_household_in_suburban_area_mixed,0.12829999625682831,0.12829999625682831,0.12829999625682831,0 +coef_household_in_urban_area,-11.544084093965571,-11.544084093965571,0.57410001754760742,0 +coef_log_max_overlap_of_adults_time_windows,-25.921679816393258,-25.921679816393258,1.1920000314712524,0 +coef_log_max_overlap_of_childrens_time_windows,50,50,1.840999960899353,0 +coef_log_max_overlap_of_time_windows,43.185336045455792,43.185336045455792,1.9579999446868896,0 +coef_low_income_households_adults,-4.7176489111037725,-4.7176489111037725,1.2480000257492065,0 +coef_low_income_households_mixed,-9.0408081421508903,-9.0408081421508903,0.5755000114440918,0 +coef_medium_income_households,-34.499486089811263,-34.499486089811263,0.83689999580383301,0 +coef_number_of_children_too_young_for_school_children,-13.855996312009184,-13.855996312009184,0.73059999942779541,0 +coef_number_of_children_too_young_for_school_mixed,4.4802268807421637,4.4802268807421637,0.7906000018119812,0 +coef_number_of_driving_age_children_children,-46.217713310558153,-46.217713310558153,-0.26669999957084656,0 +coef_number_of_driving_age_children_mixed,50,50,-0.9398999810218811,0 +coef_number_of_full_time_workers_adults,28.469430749747154,28.469430749747154,1.0240000486373901,0 +coef_number_of_full_time_workers_mixed,2.5181990493930466,2.5181990493930466,0.36239999532699585,0 +coef_number_of_non_workers_adults,6.8107526564830181,6.8107526564830181,0.62629997730255127,0 +coef_number_of_non_workers_mixed,-27.464491079595931,-27.464491079595931,-0.37239998579025269,0 +coef_number_of_part_time_workers_adults,12.100761555344075,12.100761555344075,0.54119998216629028,0 +coef_number_of_part_time_workers_mixed,-2.6898434127139574,-2.6898434127139574,0.31639999151229858,0 +coef_number_of_pre_driving_age_children_children,6.9278442677705971,6.9278442677705971,0.73059999942779541,0 +coef_number_of_pre_driving_age_children_mixed,34.880087194025478,34.880087194025478,0.35319998860359192,0 +coef_number_of_university_students,-3.4995325852033643,-3.4995325852033643,0.82450002431869507,0 +coef_tour_purpose_is_discretionary_adults,0.76480001211166382,0.76480001211166382,0.76480001211166382,0 +coef_tour_purpose_is_discretionary_children,0.51010000705718994,0.51010000705718994,0.51010000705718994,0 +coef_tour_purpose_is_eating_out_children,-0.96780002117156982,-0.96780002117156982,-0.96780002117156982,0 +coef_tour_purpose_is_eating_out_mixed,-0.8026999831199646,-0.8026999831199646,-0.8026999831199646,0 +coef_unavailable,-999,-999,-999,0 diff --git a/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_joint_tour_composition_SLSQP_loglike.csv b/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_joint_tour_composition_SLSQP_loglike.csv index 449c94c47..1db96994d 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_joint_tour_composition_SLSQP_loglike.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_joint_tour_composition_SLSQP_loglike.csv @@ -1,2 +1,2 @@ ,loglike_prior,loglike_converge -0,-9.9910306200781598,-9.7865975960368618e-07 +0,-9.9910303886936802,-0.01512359141580788 diff --git a/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_joint_tour_frequency_SLSQP_.csv b/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_joint_tour_frequency_SLSQP_.csv index f6102d3c3..833d9f442 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_joint_tour_frequency_SLSQP_.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_joint_tour_frequency_SLSQP_.csv @@ -1,77 +1,77 @@ -,value,initvalue,nullvalue,minimum,maximum,best -coef_asc_0_tours,0,0,0,0,0,0 -coef_asc_1_Disc,-5.8578427473231667,-5.4805999999999999,0,,,-5.8578427473231667 -coef_asc_1_Eat,-5.140469329663599,-6.3757000000000001,0,,,-5.140469329663599 -coef_asc_1_Main,-4.843654155024959,-5.7389000000000001,0,,,-4.843654155024959 -coef_asc_1_Shop,-7.2448952266310895,-6.0148999999999999,0,,,-7.2448952266310895 -coef_asc_1_Visit,-5.9621489630619173,-5.8818000000000001,0,,,-5.9621489630619173 -coef_asc_2_tours,-15.379573080742464,-14.457599999999999,0,,,-15.379573080742464 -coef_drivingAgeStuMandMaxThree_disc,0.26420610778627868,0.19320000000000001,0,,,0.26420610778627868 -coef_drivingAgeStuMandMaxThree_maint,-0.20497838559876363,-0.32369999999999999,0,,,-0.20497838559876363 -coef_fewerCarsThanDrivers_maint,-0.23616022935294756,0.46100000000000002,0,,,-0.23616022935294756 -coef_fewerCarsThanDrivers_shopping,0.61204166063349064,0.25230000000000002,0,,,0.61204166063349064 -coef_fullTimeHomeMaxThree_zero_tours,2.0014370751255011,1.175,0,,,2.0014370751255011 -coef_fullTimeMandMaxThree_maint,-0.46248818198458952,-0.3009,0,,,-0.46248818198458952 -coef_fullTimeMandMaxThree_shopping,0.14353937037596973,-0.2424,0,,,0.14353937037596973 -coef_fullTimeNonMandMaxThree_disc,0.21817599548271277,0.1275,0,,,0.21817599548271277 -coef_fullTimeNonMandMaxThree_eatout,0.32573071809647042,0.22750000000000001,0,,,0.32573071809647042 -coef_fullTimeNonMandMaxThree_maint,0.75962622449225758,0.31730000000000003,0,,,0.75962622449225758 -coef_fullTimeNonMandMaxThree_shopping,-0.88812895503399825,0.20519999999999999,0,,,-0.88812895503399825 -coef_fullTimeNonMandMaxThree_visiting,0.78859263531566071,0.64449999999999996,0,,,0.78859263531566071 -coef_incomeBetween50And100_disc,0.0083529208127054756,0.31669999999999998,0,,,0.0083529208127054756 -coef_incomeBetween50And100_eatout,0.1031885654385253,0.29770000000000002,0,,,0.1031885654385253 -coef_incomeGreaterThan100_disc,0.62493454802487425,0.48599999999999999,0,,,0.62493454802487425 -coef_incomeGreaterThan100_eatout,0.63535874552918015,0.44919999999999999,0,,,0.63535874552918015 -coef_incomeMissing_dummy_always_zero_disc,0.37230000000000002,0.37230000000000002,0,,,0.37230000000000002 -coef_incomeMissing_dummy_always_zero_eatout,0.27800000000000002,0.27800000000000002,0,,,0.27800000000000002 -coef_logTimeWindowOverlapAdultChild_disc,0.1502559618722121,0.22120000000000001,0,,,0.1502559618722121 -coef_logTimeWindowOverlapAdultChild_eatout,-0.32038060987279043,0.092100000000000001,0,,,-0.32038060987279043 -coef_logTimeWindowOverlapAdultChild_maint,0.26959218597469214,0.24429999999999999,0,,,0.26959218597469214 -coef_logTimeWindowOverlapAdultChild_shopping,-0.41532462974126461,0.1086,0,,,-0.41532462974126461 -coef_logTimeWindowOverlapAdult_disc,0.55965786525579331,0.34279999999999999,0,,,0.55965786525579331 -coef_logTimeWindowOverlapAdult_eatout,0.56061433677445105,0.48559999999999998,0,,,0.56061433677445105 -coef_logTimeWindowOverlapAdult_maint,0.4376387335084278,0.37140000000000001,0,,,0.4376387335084278 -coef_logTimeWindowOverlapAdult_shopping,0.86405876135539128,0.59450000000000003,0,,,0.86405876135539128 -coef_logTimeWindowOverlapChild_disc,-0.1693892803512011,0.1162,0,,,-0.1693892803512011 -coef_logTimeWindowOverlapChild_maint,-0.010378552711083917,0.17599999999999999,0,,,-0.010378552711083917 -coef_logTimeWindowOverlapChild_shopping,1.0366536984300598,0.1416,0,,,1.0366536984300598 -coef_moreCarsThanWorkers_eatout,0.079480888637893488,0.38250000000000001,0,,,0.079480888637893488 -coef_moreCarsThanWorkers_shopping,-0.62780216023973168,-0.30270000000000002,0,,,-0.62780216023973168 -coef_nonWorkerHomeMaxThree_zero_tours,-0.16941211649357898,1.514,0,,,-0.16941211649357898 -coef_nonWorkerNonMandMaxThree_disc,-0.11901239265508992,0.28710000000000002,0,,,-0.11901239265508992 -coef_nonWorkerNonMandMaxThree_eatout,-0.35447708036701164,0.182,0,,,-0.35447708036701164 -coef_nonWorkerNonMandMaxThree_maint,0.37255083379371662,0.46429999999999999,0,,,0.37255083379371662 -coef_nonWorkerNonMandMaxThree_shopping,0.52326322821604476,0.70779999999999998,0,,,0.52326322821604476 -coef_nonWorkerNonMandMaxThree_visiting,-0.35989963706226813,0.54749999999999999,0,,,-0.35989963706226813 -coef_partTimeHomeMaxThree_zero_tours,1.7000746681627035,1.4470000000000001,0,,,1.7000746681627035 -coef_partTimeNonMandMaxThree_disc,0.22644058039117623,0.49790000000000001,0,,,0.22644058039117623 -coef_partTimeNonMandMaxThree_eatout,-15.770618924654787,0.3765,0,,,-15.770618924654787 -coef_partTimeNonMandMaxThree_maint,0.12155923236230654,0.2452,0,,,0.12155923236230654 -coef_partTimeNonMandMaxThree_shopping,-0.19149733628062993,0.18659999999999999,0,,,-0.19149733628062993 -coef_partTimeNonMandMaxThree_visiting,0.34840797626260722,0.13320000000000001,0,,,0.34840797626260722 -coef_preDrivingAgeMandMaxThree_disc,0.58830436658291341,0.38619999999999999,0,,,0.58830436658291341 -coef_preDrivingAgeMandMaxThree_maint,0.05724992253344495,0.22989999999999999,0,,,0.05724992253344495 -coef_preDrivingHomeMaxThree_preschool_and_school_zero_tours,-0.26493959294530756,0.53000000000000003,0,,,-0.26493959294530756 -coef_preDrivingNonMandMaxThree_disc,0.46978892402747974,0.53310000000000002,0,,,0.46978892402747974 -coef_preDrivingNonMandMaxThree_eatout,-13.674346835309482,0.3851,0,,,-13.674346835309482 -coef_preDrivingNonMandMaxThree_maint,-0.4780031657291039,0.6482,0,,,-0.4780031657291039 -coef_preDrivingNonMandMaxThree_shopping,0.0054016798205857386,0.5474,0,,,0.0054016798205857386 -coef_preDrivingNonMandMaxThree_visiting,-1.7283257423524336,0.6008,0,,,-1.7283257423524336 -coef_retireeHomeMaxThree_zero_tours,0.3072054262466079,0.60529999999999995,0,,,0.3072054262466079 -coef_retireeNonMandMaxThree_disc,0.59539272893690953,0.61360000000000003,0,,,0.59539272893690953 -coef_retireeNonMandMaxThree_eatout,0.33706472938654847,0.4264,0,,,0.33706472938654847 -coef_retireeNonMandMaxThree_maint,0.93064231251598528,0.90500000000000003,0,,,0.93064231251598528 -coef_retireeNonMandMaxThree_shopping,0.95235573746714874,0.94099999999999995,0,,,0.95235573746714874 -coef_retireeNonMandMaxThree_visiting,0.17432279378364646,0.55789999999999995,0,,,0.17432279378364646 -coef_timeWindowOverlapAdultChild_visiting,0.14049394553264929,0.025600000000000001,0,,,0.14049394553264929 -coef_timeWindowOverlapAdult_visiting,0.11030183056319119,0.0596,0,,,0.11030183056319119 -coef_timeWindowOverlapChild_visiting,-0.060644638255823571,0.0091999999999999998,0,,,-0.060644638255823571 -coef_universityHomeMaxThree_univ_and_driving_zero_tours,-0.41040663722807053,0.56850000000000001,0,,,-0.41040663722807053 -coef_universityNonMandMaxThree_disc,-0.14472811802653573,0.75460000000000005,0,,,-0.14472811802653573 -coef_universityNonMandMaxThree_eatout,-14.080266896152475,0.40970000000000001,0,,,-14.080266896152475 -coef_universityNonMandMaxThree_maint,-0.4377287237690044,0.26429999999999998,0,,,-0.4377287237690044 -coef_universityNonMandMaxThree_shopping,1.1340537653332554,0.76480000000000004,0,,,1.1340537653332554 -coef_universityNonMandMaxThree_visiting,-18.048773540202976,0.28089999999999998,0,,,-18.048773540202976 -coef_walkRetailAccessibility_eatout,-0.027362834622908064,0.062,0,,,-0.027362834622908064 -coef_zeroAutomobiles_disc,-0.53993914183433878,-0.90900000000000003,0,,,-0.53993914183433878 -coef_zeroAutomobiles_visiting,-18.311268197408783,-0.97999999999999998,0,,,-18.311268197408783 +param_name,value,best,initvalue,nullvalue +coef_asc_0_tours,0,0,0,0 +coef_asc_1_Disc,-5.9160878944391584,-5.9160871584456292,-5.4805998802185059,0 +coef_asc_1_Eat,-5.05602837728296,-5.0560299542489355,-6.3756999969482422,0 +coef_asc_1_Main,-4.8254586155918471,-4.8254584245546122,-5.7389001846313477,0 +coef_asc_1_Shop,-7.4469694983528809,-7.4469670187782491,-6.0149002075195312,0 +coef_asc_1_Visit,-5.9551540139107804,-5.9551539232808333,-5.8818001747131348,0 +coef_asc_2_tours,-15.797075280937081,-15.797070989460588,-14.457599639892578,0 +coef_drivingAgeStuMandMaxThree_disc,0.27124464344272958,0.27124444259441294,0.1932000070810318,0 +coef_drivingAgeStuMandMaxThree_maint,-0.20737041043238222,-0.2073702201780428,-0.32370001077651978,0 +coef_fewerCarsThanDrivers_maint,-0.23816146636980665,-0.23816149718467414,0.460999995470047,0 +coef_fewerCarsThanDrivers_shopping,0.61694158860106285,0.61694159482964805,0.25229999423027039,0 +coef_fullTimeHomeMaxThree_zero_tours,1.996135901304358,1.9961359267238226,1.1749999523162842,0 +coef_fullTimeMandMaxThree_maint,-0.46241893261416922,-0.46241924052217082,-0.30090001225471497,0 +coef_fullTimeMandMaxThree_shopping,0.16560459271309827,0.16560432789309174,-0.24240000545978546,0 +coef_fullTimeNonMandMaxThree_disc,0.20480561409516004,0.20480581045554858,0.12749999761581421,0 +coef_fullTimeNonMandMaxThree_eatout,0.33389502103327529,0.33389509678618362,0.22750000655651093,0 +coef_fullTimeNonMandMaxThree_maint,0.76952765626273956,0.76952794806055913,0.31729999184608459,0 +coef_fullTimeNonMandMaxThree_shopping,-0.98031955850826391,-0.98031911603182831,0.20520000159740448,0 +coef_fullTimeNonMandMaxThree_visiting,0.76906716737028125,0.76906729748219271,0.6445000171661377,0 +coef_incomeBetween50And100_disc,0.0095094226633637528,0.0095095849856016851,0.31670001149177551,0 +coef_incomeBetween50And100_eatout,0.090560692608283727,0.09056083387775557,0.29769998788833618,0 +coef_incomeGreaterThan100_disc,0.62453536178251734,0.62453510934345091,0.48600000143051147,0 +coef_incomeGreaterThan100_eatout,0.63786709459088209,0.63786734556950364,0.44920000433921814,0 +coef_incomeMissing_dummy_always_zero_disc,0.37229999899864197,0.37229999899864197,0.37229999899864197,0 +coef_incomeMissing_dummy_always_zero_eatout,0.27799999713897705,0.27799999713897705,0.27799999713897705,0 +coef_logTimeWindowOverlapAdultChild_disc,0.15109942470522381,0.15109971903599334,0.22120000422000885,0 +coef_logTimeWindowOverlapAdultChild_eatout,-0.32364532221490494,-0.32364510943311381,0.092100001871585846,0 +coef_logTimeWindowOverlapAdultChild_maint,0.27843409869332575,0.27843422542528723,0.2442999929189682,0 +coef_logTimeWindowOverlapAdultChild_shopping,-0.42145916023520369,-0.42145897391197473,0.10859999805688858,0 +coef_logTimeWindowOverlapAdult_disc,0.5845950974994687,0.5845947676478761,0.34279999136924744,0 +coef_logTimeWindowOverlapAdult_eatout,0.54628409582637161,0.5462840489123495,0.48559999465942383,0 +coef_logTimeWindowOverlapAdult_maint,0.43015346279128713,0.43015341420863468,0.37139999866485596,0 +coef_logTimeWindowOverlapAdult_shopping,0.94448584150730952,0.94448492089225045,0.59450000524520874,0 +coef_logTimeWindowOverlapChild_disc,-0.18532337973096763,-0.18532355001439704,0.11620000004768372,0 +coef_logTimeWindowOverlapChild_maint,-0.010727634274141281,-0.010727832451482898,0.17599999904632568,0 +coef_logTimeWindowOverlapChild_shopping,1.0468422941706472,1.0468423276707255,0.14159999787807465,0 +coef_moreCarsThanWorkers_eatout,0.076914343292072182,0.076914576167953802,0.38249999284744263,0 +coef_moreCarsThanWorkers_shopping,-0.59564874997193351,-0.59564894067055596,-0.30270001292228699,0 +coef_nonWorkerHomeMaxThree_zero_tours,-0.17003939484477312,-0.17003948323362453,1.5140000581741333,0 +coef_nonWorkerNonMandMaxThree_disc,-0.13432804559300732,-0.13432811971898589,0.28709998726844788,0 +coef_nonWorkerNonMandMaxThree_eatout,-0.33401066087685138,-0.33401068347396745,0.18199999630451202,0 +coef_nonWorkerNonMandMaxThree_maint,0.37323111519137453,0.37323093350637826,0.4643000066280365,0 +coef_nonWorkerNonMandMaxThree_shopping,0.49264301488042911,0.49264292085137712,0.70779997110366821,0 +coef_nonWorkerNonMandMaxThree_visiting,-0.36437091579618403,-0.36437083429284089,0.54750001430511475,0 +coef_partTimeHomeMaxThree_zero_tours,1.7312454999054936,1.7312459096132369,1.4470000267028809,0 +coef_partTimeNonMandMaxThree_disc,0.23705977049445798,0.23705989380574119,0.49790000915527344,0 +coef_partTimeNonMandMaxThree_eatout,-5.6531002354715127,-5.6530850270781112,0.37650001049041748,0 +coef_partTimeNonMandMaxThree_maint,0.11494946476265139,0.11494961705361134,0.24519999325275421,0 +coef_partTimeNonMandMaxThree_shopping,-0.20746715181319589,-0.20746695386959577,0.18659999966621399,0 +coef_partTimeNonMandMaxThree_visiting,0.32137505891849261,0.32137524780407384,0.13320000469684601,0 +coef_preDrivingAgeMandMaxThree_disc,0.60675129362611258,0.60675111363025258,0.38620001077651978,0 +coef_preDrivingAgeMandMaxThree_maint,0.043178367483864805,0.043178519613054106,0.22990000247955322,0 +coef_preDrivingHomeMaxThree_preschool_and_school_zero_tours,-0.25725057670419188,-0.25725026315677951,0.52999997138977051,0 +coef_preDrivingNonMandMaxThree_disc,0.49100040690235336,0.49100032365079044,0.53310000896453857,0 +coef_preDrivingNonMandMaxThree_eatout,-3.5007131527538413,-3.5007016569353477,0.38510000705718994,0 +coef_preDrivingNonMandMaxThree_maint,-0.47732053847248312,-0.47732051937471986,0.64819997549057007,0 +coef_preDrivingNonMandMaxThree_shopping,-0.0012986266652305054,-0.0012987293702714738,0.54739999771118164,0 +coef_preDrivingNonMandMaxThree_visiting,-1.6293887060843797,-1.6293896015520914,0.60079997777938843,0 +coef_retireeHomeMaxThree_zero_tours,0.34966179334551972,0.34966146316807412,0.60530000925064087,0 +coef_retireeNonMandMaxThree_disc,0.59640088460538709,0.59640107482430083,0.61360001564025879,0 +coef_retireeNonMandMaxThree_eatout,0.3499795761045531,0.34997959789937416,0.42640000581741333,0 +coef_retireeNonMandMaxThree_maint,0.93716736904164089,0.93716740436084434,0.90499997138977051,0 +coef_retireeNonMandMaxThree_shopping,0.9325100820582326,0.93251039206065178,0.94099998474121094,0 +coef_retireeNonMandMaxThree_visiting,0.1668284024031404,0.16682870749583406,0.55790001153945923,0 +coef_timeWindowOverlapAdultChild_visiting,0.13881492846958488,0.13881496732242621,0.025599999353289604,0 +coef_timeWindowOverlapAdult_visiting,0.11182157577140597,0.11182154572794807,0.059599999338388443,0 +coef_timeWindowOverlapChild_visiting,-0.059018654499507453,-0.05901868676849447,0.0092000002041459084,0 +coef_universityHomeMaxThree_univ_and_driving_zero_tours,-0.3806558129102493,-0.38065581874970073,0.56849998235702515,0 +coef_universityNonMandMaxThree_disc,-0.15852221488464341,-0.15852211136829161,0.75459998846054077,0 +coef_universityNonMandMaxThree_eatout,-4.1215214477423272,-4.1215091850562358,0.40970000624656677,0 +coef_universityNonMandMaxThree_maint,-0.46680029014718827,-0.46680012462022286,0.26429998874664307,0 +coef_universityNonMandMaxThree_shopping,1.1067199892366495,1.1067201908411548,0.76480001211166382,0 +coef_universityNonMandMaxThree_visiting,-5.6416612820161021,-5.6416452449924739,0.28090000152587891,0 +coef_walkRetailAccessibility_eatout,-0.035796009413743196,-0.035795796225119095,0.061999998986721039,0 +coef_zeroAutomobiles_disc,-0.52859607918243423,-0.52859621558900038,-0.9089999794960022,0 +coef_zeroAutomobiles_visiting,-5.8405847342282176,-5.8405705977466207,-0.98000001907348633,0 diff --git a/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_joint_tour_participation_SLSQP_.csv b/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_joint_tour_participation_SLSQP_.csv index c60173aa0..b9a0635d7 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_joint_tour_participation_SLSQP_.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_joint_tour_participation_SLSQP_.csv @@ -1,60 +1,60 @@ -,value,initvalue,nullvalue,minimum,maximum,best -coef_adult_log_of_max_window_overlap_with_a_child_mixed,4.5940415543572257,2.1890000000000001,0,,,4.5940415543572257 -coef_adult_log_of_max_window_overlap_with_an_adult_adult_only_party,1.6916936883427531,0.84360000000000002,0,,,1.6916936883427531 -coef_adult_more_automobiles_than_workers_adult_only_party,0.31139003577268975,-0.21329999999999999,0,,,0.31139003577268975 -coef_adult_more_automobiles_than_workers_mixed_party,-1.8020541380547712,-0.60309999999999997,0,,,-1.8020541380547712 -coef_adult_number_of_joint_tours_adult_only,-2.1332672475172423,-0.32419999999999999,0,,,-2.1332672475172423 -coef_adult_number_of_joint_tours_mixed,-12.011984079880781,-0.3584,0,,,-12.011984079880781 -coef_adult_number_of_other_adults_in_the_household_adults_only_party,0,0,0,0,0,0 -coef_adult_number_of_other_adults_in_the_household_mixed_party,0,0,0,0,0,0 -coef_child_log_of_max_window_overlap_with_a_child_child,1.296,1.296,0,,,1.296 -coef_child_log_of_max_window_overlap_with_an_adult_mixed,1.538,1.538,0,,,1.538 -coef_child_more_automobiles_than_workers_child_only_party,-0.4214,-0.4214,0,,,-0.4214 -coef_child_more_automobiles_than_workers_mixed_party,-1.5765541380547705,-0.37759999999999999,0,,,-1.5765541380547705 -coef_child_number_of_joint_tours_child_only,25.834459257330721,0.1047,0,,,25.834459257330721 -coef_child_number_of_joint_tours_mixed,89.315973889991952,-0.50890000000000002,0,,,89.315973889991952 -coef_child_number_of_other_children_in_the_household_child_only_party,0,0,0,0,0,0 -coef_child_number_of_other_children_in_the_household_mixed,0,0,0,0,0,0 -coef_child_too_young_for_school_children_only_party,-2.786,-2.786,0,,,-2.786 -coef_child_too_young_for_school_mixed_party,12.484734556961985,-1.893,0,,,12.484734556961985 -coef_child_too_young_for_school_specific_to_discretionary_joint_tours,0.12839999999999999,0.12839999999999999,0,,,0.12839999999999999 -coef_child_too_young_for_school_specific_to_eating_out_joint_tours,0.65890000000000004,0.65890000000000004,0,,,0.65890000000000004 -coef_driving_age_student_children_only_party,-1.8220000000000001,-1.8220000000000001,0,,,-1.8220000000000001 -coef_driving_age_student_mixed_party,-131.65706593958799,-1.353,0,,,-131.65706593958799 -coef_driving_age_student_specific_to_discretionary_joint_tours,-0.66749999999999998,-0.66749999999999998,0,,,-0.66749999999999998 -coef_driving_age_student_specific_to_eating_out_joint_tours,2.3439999999999999,2.3439999999999999,0,,,2.3439999999999999 -coef_dummy_for_high_income_for_adult_in_adult_party,0.1318998436337066,-0.16819999999999999,0,,,0.1318998436337066 -coef_dummy_for_high_income_for_adult_in_mixed_party,-0.38289361131114391,-0.02613,0,,,-0.38289361131114391 -coef_dummy_for_high_income_for_child_in_children_party,-0.56189999999999996,-0.56189999999999996,0,,,-0.56189999999999996 -coef_dummy_for_high_income_for_child_in_mixed_party,-0.50956361131120043,-0.15279999999999999,0,,,-0.50956361131120043 -coef_full_time_worker_mixed_party,-50.846659765191049,-3.5659999999999998,0,,,-50.846659765191049 -coef_full_time_worker_mixed_party_not,0.5,0.5,0,0.5,0.5,0.5 -coef_full_time_worker_specific_to_discretionary_joint_tours,0.43919999999999998,0.43919999999999998,0,,,0.43919999999999998 -coef_full_time_worker_specific_to_discretionary_joint_tours_not,0.5,0.5,0,0.5,0.5,0.5 -coef_full_time_worker_specific_to_eating_out_joint_tours,0.7157,0.7157,0,,,0.7157 -coef_full_time_worker_specific_to_eating_out_joint_tours_not,0.5,0.5,0,0.5,0.5,0.5 -coef_household_in_suburban_area_adult_adult_only_party,0,0,0,0,0,0 -coef_household_in_suburban_area_adult_mixed_party,-0.060069999999999998,-0.060069999999999998,0,,,-0.060069999999999998 -coef_household_in_suburban_area_child_child_only_party,0,0,0,0,0,0 -coef_household_in_suburban_area_child_mixed_party,0,0,0,0,0,0 -coef_household_in_urban_area_adult_adult_only_party,0,0,0,0,0,0 -coef_household_in_urban_area_adult_mixed_party,55.591278075644887,-0.13700000000000001,0,,,55.591278075644887 -coef_household_in_urban_area_child_child_only_party,26.939759257330742,1.21,0,,,26.939759257330742 -coef_household_in_urban_area_child_mixed_party,-101.1258709375923,0.62649999999999995,0,,,-101.1258709375923 -coef_non_worker_adults_only_party,-4.0792805161736174,-3.1640000000000001,0,,,-4.0792805161736174 -coef_non_worker_mixed_party,76.628151288066263,0.71519999999999995,0,,,76.628151288066263 -coef_non_worker_specific_to_discretionary_joint_tours,-0.1835,-0.1835,0,,,-0.1835 -coef_non_worker_specific_to_eating_out_joint_tours,0.16170000000000001,0.16170000000000001,0,,,0.16170000000000001 -coef_part_time_worker_adults_only_party,-3.2478258169504657,-3.5659999999999998,0,,,-3.2478258169504657 -coef_part_time_worker_adults_only_party_not,0.5,0.5,0,0.5,0.5,0.5 -coef_part_time_worker_mixed_party,70.07529311830892,-0.36549999999999999,0,,,70.07529311830892 -coef_part_time_worker_specific_to_discretionary_joint_tours,0.28499999999999998,0.28499999999999998,0,,,0.28499999999999998 -coef_part_time_worker_specific_to_eating_out_joint_tours,2.1880000000000002,2.1880000000000002,0,,,2.1880000000000002 -coef_pre_driving_age_student_children_only_party,25.008059257330711,-0.72170000000000001,0,,,25.008059257330711 -coef_pre_driving_age_student_mixed_party,12.421960445033344,-1.752,0,,,12.421960445033344 -coef_pre_driving_age_student_specific_to_discretionary_joint_tours,0.66259999999999997,0.66259999999999997,0,,,0.66259999999999997 -coef_pre_driving_age_student_specific_to_eating_out_joint_tours,1.391,1.391,0,,,1.391 -coef_unavailable,-999,-999,0,-999,-999,-999 -coef_university_student_mixed_party,-52.255368272022992,-3.0409999999999999,0,,,-52.255368272022992 -coef_university_student_specific_to_discretionary_joint_tours,0,0,0,0,0,0 -coef_university_student_specific_to_eating_out_joint_tours,-0.81999999999999995,-0.81999999999999995,0,,,-0.81999999999999995 +param_name,value,best,initvalue,nullvalue +coef_adult_log_of_max_window_overlap_with_a_child_mixed,4.5951782780582482,4.5951781033354839,2.1889998912811279,0 +coef_adult_log_of_max_window_overlap_with_an_adult_adult_only_party,1.6633592801800163,1.6633593140698184,0.84359997510910034,0 +coef_adult_more_automobiles_than_workers_adult_only_party,0.31066873854811811,0.31066870271882263,-0.21330000460147858,0 +coef_adult_more_automobiles_than_workers_mixed_party,-1.8032448224599575,-1.803244785082267,-0.6031000018119812,0 +coef_adult_number_of_joint_tours_adult_only,-2.0764783287527235,-2.0764784513924197,-0.32420000433921814,0 +coef_adult_number_of_joint_tours_mixed,-4.6560544367999661,-4.6560542069402064,-0.35839998722076416,0 +coef_adult_number_of_other_adults_in_the_household_adults_only_party,0,0,0,0 +coef_adult_number_of_other_adults_in_the_household_mixed_party,0,0,0,0 +coef_child_log_of_max_window_overlap_with_a_child_child,1.2960000038146973,1.2960000038146973,1.2960000038146973,0 +coef_child_log_of_max_window_overlap_with_an_adult_mixed,1.5379999876022339,1.5379999876022339,1.5379999876022339,0 +coef_child_more_automobiles_than_workers_child_only_party,-0.42140001058578491,-0.42140001058578491,-0.42140001058578491,0 +coef_child_more_automobiles_than_workers_mixed_party,-1.5777448348577667,-1.5777447974800762,-0.37760001420974731,0 +coef_child_number_of_joint_tours_child_only,13.579540492742831,13.579540463017146,0.1046999990940094,0 +coef_child_number_of_joint_tours_mixed,20.015257060305416,20.01525831304766,-0.508899986743927,0 +coef_child_number_of_other_children_in_the_household_child_only_party,0,0,0,0 +coef_child_number_of_other_children_in_the_household_mixed,0,0,0,0 +coef_child_too_young_for_school_children_only_party,-2.7860000133514404,-2.7860000133514404,-2.7860000133514404,0 +coef_child_too_young_for_school_mixed_party,8.3656227270333634,8.3656222958055366,-1.8930000066757202,0 +coef_child_too_young_for_school_specific_to_discretionary_joint_tours,0.12839999794960022,0.12839999794960022,0.12839999794960022,0 +coef_child_too_young_for_school_specific_to_eating_out_joint_tours,0.65890002250671387,0.65890002250671387,0.65890002250671387,0 +coef_driving_age_student_children_only_party,-1.8220000267028809,-1.8220000267028809,-1.8220000267028809,0 +coef_driving_age_student_mixed_party,-50,-50,-1.3530000448226929,0 +coef_driving_age_student_specific_to_discretionary_joint_tours,-0.66750001907348633,-0.66750001907348633,-0.66750001907348633,0 +coef_driving_age_student_specific_to_eating_out_joint_tours,2.3440001010894775,2.3440001010894775,2.3440001010894775,0 +coef_dummy_for_high_income_for_adult_in_adult_party,0.12621381061004386,0.12621385992786305,-0.16820000112056732,0 +coef_dummy_for_high_income_for_adult_in_mixed_party,-0.38299804175110763,-0.38299804898262102,-0.026130000129342079,0 +coef_dummy_for_high_income_for_child_in_children_party,-0.56190001964569092,-0.56190001964569092,-0.56190001964569092,0 +coef_dummy_for_high_income_for_child_in_mixed_party,-0.50966803537514371,-0.5096680426066571,-0.15279999375343323,0 +coef_full_time_worker_mixed_party,-18.56632640293509,-18.566326638673267,-3.5659999847412109,0 +coef_full_time_worker_mixed_party_not,0.5,0.5,0.5,0 +coef_full_time_worker_specific_to_discretionary_joint_tours,0.4392000138759613,0.4392000138759613,0.4392000138759613,0 +coef_full_time_worker_specific_to_discretionary_joint_tours_not,0.5,0.5,0.5,0 +coef_full_time_worker_specific_to_eating_out_joint_tours,0.71569997072219849,0.71569997072219849,0.71569997072219849,0 +coef_full_time_worker_specific_to_eating_out_joint_tours_not,0.5,0.5,0.5,0 +coef_household_in_suburban_area_adult_adult_only_party,0,0,0,0 +coef_household_in_suburban_area_adult_mixed_party,-0.06007000058889389,-0.06007000058889389,-0.06007000058889389,0 +coef_household_in_suburban_area_child_child_only_party,0,0,0,0 +coef_household_in_suburban_area_child_mixed_party,0,0,0,0 +coef_household_in_urban_area_adult_adult_only_party,0,0,0,0 +coef_household_in_urban_area_adult_mixed_party,15.95349033775349,15.953490704515609,-0.13699999451637268,0 +coef_household_in_urban_area_child_child_only_party,14.684840531795903,14.684840502070218,1.2100000381469727,0 +coef_household_in_urban_area_child_mixed_party,-27.706374555887564,-27.706375390127885,0.62650001049041748,0 +coef_non_worker_adults_only_party,-4.0512566140539823,-4.0512566665328293,-3.1640000343322754,0 +coef_non_worker_mixed_party,24.232596176450738,24.232596639515961,0.71520000696182251,0 +coef_non_worker_specific_to_discretionary_joint_tours,-0.1835000067949295,-0.1835000067949295,-0.1835000067949295,0 +coef_non_worker_specific_to_eating_out_joint_tours,0.16169999539852142,0.16169999539852142,0.16169999539852142,0 +coef_part_time_worker_adults_only_party,-3.2257432923239446,-3.2257432422956698,-3.5659999847412109,0 +coef_part_time_worker_adults_only_party_not,0.5,0.5,0.5,0 +coef_part_time_worker_mixed_party,22.126834905159047,22.126835266655284,-0.36550000309944153,0 +coef_part_time_worker_specific_to_discretionary_joint_tours,0.28499999642372131,0.28499999642372131,0.28499999642372131,0 +coef_part_time_worker_specific_to_eating_out_joint_tours,2.187999963760376,2.187999963760376,2.187999963760376,0 +coef_pre_driving_age_student_children_only_party,12.753140480965085,12.7531404512394,-0.72170001268386841,0 +coef_pre_driving_age_student_mixed_party,8.3035034193009718,8.3035030162498487,-1.7519999742507935,0 +coef_pre_driving_age_student_specific_to_discretionary_joint_tours,0.66259998083114624,0.66259998083114624,0.66259998083114624,0 +coef_pre_driving_age_student_specific_to_eating_out_joint_tours,1.3910000324249268,1.3910000324249268,1.3910000324249268,0 +coef_unavailable,-999,-999,-999,0 +coef_university_student_mixed_party,-19.976674136225505,-19.976674380042439,-3.0409998893737793,0 +coef_university_student_specific_to_discretionary_joint_tours,0,0,0,0 +coef_university_student_specific_to_eating_out_joint_tours,-0.81999999284744263,-0.81999999284744263,-0.81999999284744263,0 diff --git a/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_mandatory_tour_frequency_BHHH_.csv b/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_mandatory_tour_frequency_BHHH_.csv index 3f5af851e..2c5dc3ee1 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_mandatory_tour_frequency_BHHH_.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_mandatory_tour_frequency_BHHH_.csv @@ -1,54 +1,54 @@ -,value,initvalue,nullvalue,minimum,maximum,best -0,0,0,0,0,0,0 -coef_can_walk_to_work_and_school,0.072221053570087068,0.1391,0,,,0.072221053570087068 -coef_can_walk_to_work_school2,1.368189229871656,0.71140000000000003,0,,,1.368189229871656 -coef_can_walk_to_work_work2,0.6511271300905388,0.52680000000000005,0,,,0.6511271300905388 -coef_driving_age_child_school2_asc,-10.76072459479807,-3.1360000000000001,0,,,-10.76072459479807 -coef_driving_age_child_work_and_school_asc,-58.117517308879499,-4.4362000000000004,0,,,-58.117517308879499 -coef_female_school1,0.2474431563125136,0.15920000000000001,0,,,0.2474431563125136 -coef_female_school2,-0.3012348896462545,0.114,0,,,-0.3012348896462545 -coef_female_work1,-2.2434862184806872,0.17369999999999999,0,,,-2.2434862184806872 -coef_female_work2,-0.3875204207258891,-0.22550000000000001,0,,,-0.3875204207258891 -coef_female_work_and_school,-3.2183973184973143,-0.34420000000000001,0,,,-3.2183973184973143 -coef_few_cars_than_drivers_school2,-0.86352025026207002,-0.57589999999999997,0,,,-0.86352025026207002 -coef_ft_worker_work2_asc,-15.631616769904962,-3.3780999999999999,0,,,-15.631616769904962 -coef_hh_income_gt_50k_school1,0.034700030521069632,0.034700000000000002,0,,,0.034700030521069632 -coef_hh_income_gt_50k_student_work_and_school,-0.92170661372181706,-0.0528,0,,,-0.92170661372181706 -coef_hh_income_gt_50k_work,-1.4190912531326889,-0.0528,0,,,-1.4190912531326889 -coef_hh_income_gt_50k_worker_work_and_school,0.034699971829526256,0.034700000000000002,0,,,0.034699971829526256 -coef_home_urban_school1,-0.13610000344523163,-0.1361,0,,,-0.13610000344523163 -coef_home_urban_school2,-11.830881608079386,0.317,0,,,-11.830881608079386 -coef_home_urban_work1,24.254352793957736,-0.28310000000000002,0,,,24.254352793957736 -coef_home_urban_work2,12.738503782102926,0.23080000000000001,0,,,12.738503782102926 -coef_home_urban_work_and_school,-2.9755482471380152,-0.35089999999999999,0,,,-2.9755482471380152 -coef_no_cars_in_hh_school2,-0.6201622889361833,-1.413,0,,,-0.6201622889361833 -coef_no_cars_in_hh_work2,-0.72588656952288921,-1.306,0,,,-0.72588656952288921 -coef_no_cars_in_hh_work_and_school,-0.7768760244151115,-1.302,0,,,-0.7768760244151115 -coef_non_family_hh_category1,-0.25000005548208493,-0.25,0,,,-0.25000005548208493 -coef_non_family_hh_category2,-18.224089926229215,-0.1792,0,,,-18.224089926229215 -coef_non_student_goes_to_school,3.883000012592801,3.883,0,,,3.883000012592801 -coef_num_non_workers_in_hh_school1,0.25739997881575821,0.25740000000000002,0,,,0.25739997881575821 -coef_num_preschool_in_hh_school1,-0.13350001004490689,-0.13350000000000001,0,,,-0.13350001004490689 -coef_num_preschool_in_hh_school2,0.35689505282246176,-0.55769999999999997,0,,,0.35689505282246176 -coef_num_preschool_in_hh_work1,-2.9320917687605954,0.21909999999999999,0,,,-2.9320917687605954 -coef_num_preschool_in_hh_work2,0.22500429804995042,-0.14779999999999999,0,,,0.22500429804995042 -coef_num_preschool_in_hh_work_and_school,-291.65982798845073,-0.12509999999999999,0,,,-291.65982798845073 -coef_num_under_16_not_at_school_school2,-0.63862137361032489,0.086599999999999996,0,,,-0.63862137361032489 -coef_num_under_16_not_at_school_work2,-0.11866867638023079,0.1804,0,,,-0.11866867638023079 -coef_num_under_16_not_at_school_work_and_school,-18.884178394306563,-0.19550000000000001,0,,,-18.884178394306563 -coef_pre_driving_age_child_school2_asc,7.0553066040769048,-3.9702999999999999,0,,,7.0553066040769048 -coef_pt_worker_work2_asc,-14.856919777024819,-3.0476000000000001,0,,,-14.856919777024819 -coef_round_trip_auto_time_to_work_school2,0.064396584422453232,-0.0033999999999999998,0,,,0.064396584422453232 -coef_round_trip_auto_time_to_work_work2,-0.025902525682352791,-0.0035000000000000001,0,,,-0.025902525682352791 -coef_round_trip_auto_time_to_work_work_and_school,-0.02180773780300839,-0.0030999999999999999,0,,,-0.02180773780300839 -coef_student_employed,61.497344836308677,3.0139999999999998,0,,,61.497344836308677 -coef_unavailable,-999,-999,0,-999,-999,-999 -coef_under_35_school1,0.7218,0.7218,0,,,0.7218 -coef_under_35_school2,27.445525973793494,1.2749999999999999,0,,,27.445525973793494 -coef_under_35_work1,1.0375724814647256,-0.46289999999999998,0,,,1.0375724814647256 -coef_under_35_work2,-0.25382084017500217,-0.13750000000000001,0,,,-0.25382084017500217 -coef_under_35_work_and_school,2.256932391854527,0.97609999999999997,0,,,2.256932391854527 -coef_univ_school2_asc,-19.291663549848391,-3.7429000000000001,0,,,-19.291663549848391 -coef_univ_work1_asc,26.703452792641354,2.1659999999999999,0,,,26.703452792641354 -coef_univ_work2_asc,35.174040311644283,-1.3965000000000001,0,,,35.174040311644283 -coef_univ_work_and_school_asc,51.163969004277625,0.10730000000000001,0,,,51.163969004277625 +param_name,value,best,initvalue,nullvalue +0,0,0,0,0 +coef_can_walk_to_work_and_school,0.071963467898163519,0.071963467898163519,0.13910000026226044,0 +coef_can_walk_to_work_school2,1.3682146498522929,1.3682146498522929,0.71139997243881226,0 +coef_can_walk_to_work_work2,0.65113800717686054,0.65113800717686054,0.52679997682571411,0 +coef_driving_age_child_school2_asc,-10.760724267208685,-10.760724267208685,-3.1359999179840088,0 +coef_driving_age_child_work_and_school_asc,-58.117542193724134,-58.117542193724134,-4.4362001419067383,0 +coef_female_school1,0.24693966666339068,0.24693966666339068,0.15919999778270721,0 +coef_female_school2,-0.30156175637229587,-0.30156175637229587,0.11400000005960464,0 +coef_female_work1,-2.2432731743178365,-2.2432731743178365,0.1737000048160553,0 +coef_female_work2,-0.38747695440528995,-0.38747695440528995,-0.22550000250339508,0 +coef_female_work_and_school,-3.2184568767600301,-3.2184568767600301,-0.34419998526573181,0 +coef_few_cars_than_drivers_school2,-0.86287494081897043,-0.86287494081897043,-0.57590001821517944,0 +coef_ft_worker_work2_asc,-15.631596564333391,-15.631596564333391,-3.3780999183654785,0 +coef_hh_income_gt_50k_school1,0.034699998903999218,0.034699998903999218,0.034699998795986176,0 +coef_hh_income_gt_50k_student_work_and_school,-0.92151889984559776,-0.92151889984559776,-0.052799999713897705,0 +coef_hh_income_gt_50k_work,-1.4188850438199954,-1.4188850438199954,-0.052799999713897705,0 +coef_hh_income_gt_50k_worker_work_and_school,0.034699998835916637,0.034699998835916637,0.034699998795986176,0 +coef_home_urban_school1,-0.1360999941739981,-0.1360999941739981,-0.13609999418258667,0 +coef_home_urban_school2,-11.831044462083096,-11.831044462083096,0.31700000166893005,0 +coef_home_urban_work1,24.254289912474832,24.254289912474832,-0.28310000896453857,0 +coef_home_urban_work2,12.738486792776087,12.738486792776087,0.23080000281333923,0 +coef_home_urban_work_and_school,-2.9754582133928946,-2.9754582133928946,-0.35089999437332153,0 +coef_no_cars_in_hh_school2,-0.62062284302473281,-0.62062284302473281,-1.4129999876022339,0 +coef_no_cars_in_hh_work2,-0.72590052527502258,-0.72590052527502258,-1.3059999942779541,0 +coef_no_cars_in_hh_work_and_school,-0.77649868370275865,-0.77649868370275865,-1.3020000457763672,0 +coef_non_family_hh_category1,-0.25000000001603168,-0.25000000001603168,-0.25,0 +coef_non_family_hh_category2,-18.224086954408719,-18.224086954408719,-0.17919999361038208,0 +coef_non_student_goes_to_school,3.8829998970263762,3.8829998970263762,3.8829998970031738,0 +coef_num_non_workers_in_hh_school1,0.2574000060601766,0.2574000060601766,0.25740000605583191,0 +coef_num_preschool_in_hh_school1,-0.1334999948664459,-0.1334999948664459,-0.13349999487400055,0 +coef_num_preschool_in_hh_school2,0.35679291623910225,0.35679291623910225,-0.55769997835159302,0 +coef_num_preschool_in_hh_work1,-2.9311650176345023,-2.9311650176345023,0.21909999847412109,0 +coef_num_preschool_in_hh_work2,0.22506526227617765,0.22506526227617765,-0.14779999852180481,0 +coef_num_preschool_in_hh_work_and_school,-1120.7076517335183,-1120.7076517335183,-0.12510000169277191,0 +coef_num_under_16_not_at_school_school2,-0.63850525564048144,-0.63850525564048144,0.08659999817609787,0 +coef_num_under_16_not_at_school_work2,-0.11879303600656704,-0.11879303600656704,0.18039999902248383,0 +coef_num_under_16_not_at_school_work_and_school,-72.572511675156974,-72.572511675156974,-0.19550000131130219,0 +coef_pre_driving_age_child_school2_asc,7.0553915333001287,7.0553915333001287,-3.9702999591827393,0 +coef_pt_worker_work2_asc,-14.85688697195045,-14.85688697195045,-3.0476000308990479,0 +coef_round_trip_auto_time_to_work_school2,0.064402441888329359,0.064402441888329359,-0.0034000000450760126,0 +coef_round_trip_auto_time_to_work_work2,-0.025903740882998762,-0.025903740882998762,-0.0035000001080334187,0 +coef_round_trip_auto_time_to_work_work_and_school,-0.021807011903415791,-0.021807011903415791,-0.0031000000890344381,0 +coef_student_employed,61.49730201724514,61.49730201724514,3.0139999389648438,0 +coef_unavailable,-999,-999,-999,0 +coef_under_35_school1,0.72180002927780151,0.72180002927780151,0.72180002927780151,0 +coef_under_35_school2,27.44527439728251,27.44527439728251,1.2749999761581421,0 +coef_under_35_work1,1.0377437873346973,1.0377437873346973,-0.46290001273155212,0 +coef_under_35_work2,-0.25384424363084357,-0.25384424363084357,-0.13750000298023224,0 +coef_under_35_work_and_school,2.2567986605803032,2.2567986605803032,0.97610002756118774,0 +coef_univ_school2_asc,-19.29191150330508,-19.29191150330508,-3.7428998947143555,0 +coef_univ_work1_asc,26.703389810868742,26.703389810868742,2.1659998893737793,0 +coef_univ_work2_asc,35.173970384221057,35.173970384221057,-1.3964999914169312,0 +coef_univ_work_and_school_asc,51.164083831710279,51.164083831710279,0.10729999840259552,0 diff --git a/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_mandatory_tour_frequency_SLSQP_.csv b/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_mandatory_tour_frequency_SLSQP_.csv index fd8238225..457583ab1 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_mandatory_tour_frequency_SLSQP_.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_mandatory_tour_frequency_SLSQP_.csv @@ -1,54 +1,54 @@ -,value,initvalue,nullvalue,minimum,maximum,best -0,0,0,0,0,0,0 -coef_can_walk_to_work_and_school,0.071630314724926147,0.1391,0,,,0.071630314724926147 -coef_can_walk_to_work_school2,1.3680922080710298,0.71140000000000003,0,,,1.3680922080710298 -coef_can_walk_to_work_work2,0.65112015867036332,0.52680000000000005,0,,,0.65112015867036332 -coef_driving_age_child_school2_asc,-13.067731116342266,-3.1360000000000001,0,,,-13.067731116342266 -coef_driving_age_child_work_and_school_asc,-12.605997463132249,-4.4362000000000004,0,,,-12.605997463132249 -coef_female_school1,0.24708609009193822,0.15920000000000001,0,,,0.24708609009193822 -coef_female_school2,-0.30133903622407632,0.114,0,,,-0.30133903622407632 -coef_female_work1,-2.2427478904369504,0.17369999999999999,0,,,-2.2427478904369504 -coef_female_work2,-0.38741093683095679,-0.22550000000000001,0,,,-0.38741093683095679 -coef_female_work_and_school,-3.2182798790112783,-0.34420000000000001,0,,,-3.2182798790112783 -coef_few_cars_than_drivers_school2,-0.86245057209463027,-0.57589999999999997,0,,,-0.86245057209463027 -coef_ft_worker_work2_asc,-5.5179331616722695,-3.3780999999999999,0,,,-5.5179331616722695 -coef_hh_income_gt_50k_school1,0.034700000000000002,0.034700000000000002,0,,,0.034700000000000002 -coef_hh_income_gt_50k_student_work_and_school,-0.92117498986723134,-0.0528,0,,,-0.92117498986723134 -coef_hh_income_gt_50k_work,-1.418550817944235,-0.0528,0,,,-1.418550817944235 -coef_hh_income_gt_50k_worker_work_and_school,0.034700000000000002,0.034700000000000002,0,,,0.034700000000000002 -coef_home_urban_school1,-0.1361,-0.1361,0,,,-0.1361 -coef_home_urban_school2,-8.4556148704436787,0.317,0,,,-8.4556148704436787 -coef_home_urban_work1,4.0267960749153291,-0.28310000000000002,0,,,4.0267960749153291 -coef_home_urban_work2,2.6248540229034232,0.23080000000000001,0,,,2.6248540229034232 -coef_home_urban_work_and_school,-0.44707001996924778,-0.35089999999999999,0,,,-0.44707001996924778 -coef_no_cars_in_hh_school2,-0.62046508539739775,-1.413,0,,,-0.62046508539739775 -coef_no_cars_in_hh_work2,-0.72596662468976358,-1.306,0,,,-0.72596662468976358 -coef_no_cars_in_hh_work_and_school,-0.77593437523044428,-1.302,0,,,-0.77593437523044428 -coef_non_family_hh_category1,-0.25,-0.25,0,,,-0.25 -coef_non_family_hh_category2,5.0007710032851715,-0.1792,0,,,5.0007710032851715 -coef_non_student_goes_to_school,3.883,3.883,0,,,3.883 -coef_num_non_workers_in_hh_school1,0.25740000000000002,0.25740000000000002,0,,,0.25740000000000002 -coef_num_preschool_in_hh_school1,-0.13350000000000001,-0.13350000000000001,0,,,-0.13350000000000001 -coef_num_preschool_in_hh_school2,0.35665962262224188,-0.55769999999999997,0,,,0.35665962262224188 -coef_num_preschool_in_hh_work1,-2.9305005867030882,0.21909999999999999,0,,,-2.9305005867030882 -coef_num_preschool_in_hh_work2,0.22517317861058084,-0.14779999999999999,0,,,0.22517317861058084 -coef_num_preschool_in_hh_work_and_school,-29.197568875282681,-0.12509999999999999,0,,,-29.197568875282681 -coef_num_under_16_not_at_school_school2,-0.63829340447675476,0.086599999999999996,0,,,-0.63829340447675476 -coef_num_under_16_not_at_school_work2,-0.11899114846640058,0.1804,0,,,-0.11899114846640058 -coef_num_under_16_not_at_school_work_and_school,-15.357906680125023,-0.19550000000000001,0,,,-15.357906680125023 -coef_pre_driving_age_child_school2_asc,3.6797262862761189,-3.9702999999999999,0,,,3.6797262862761189 -coef_pt_worker_work2_asc,-4.7432419645081501,-3.0476000000000001,0,,,-4.7432419645081501 -coef_round_trip_auto_time_to_work_school2,0.064410816444162883,-0.0033999999999999998,0,,,0.064410816444162883 -coef_round_trip_auto_time_to_work_work2,-0.025905460423305656,-0.0035000000000000001,0,,,-0.025905460423305656 -coef_round_trip_auto_time_to_work_work_and_school,-0.021803756470739271,-0.0030999999999999999,0,,,-0.021803756470739271 -coef_student_employed,13.457255204029515,3.0139999999999998,0,,,13.457255204029515 -coef_unavailable,-999,-999,0,-999,-999,-999 -coef_under_35_school1,0.7218,0.7218,0,,,0.7218 -coef_under_35_school2,15.011164063565253,1.2749999999999999,0,,,15.011164063565253 -coef_under_35_work1,1.0382419681378368,-0.46289999999999998,0,,,1.0382419681378368 -coef_under_35_work2,-0.25387498090125782,-0.13750000000000001,0,,,-0.25387498090125782 -coef_under_35_work_and_school,2.2570354258963481,0.97609999999999997,0,,,2.2570354258963481 -coef_univ_school2_asc,-10.233810040377643,-3.7429000000000001,0,,,-10.233810040377643 -coef_univ_work1_asc,6.475896074915326,2.1659999999999999,0,,,6.475896074915326 -coef_univ_work2_asc,4.8330291490834876,-1.3965000000000001,0,,,4.8330291490834876 -coef_univ_work_and_school_asc,8.1809274431629717,0.10730000000000001,0,,,8.1809274431629717 +param_name,value,best,initvalue,nullvalue +0,0,0,0,0 +coef_can_walk_to_work_and_school,0.20132027468875283,0.20132027468479921,0.13910000026226044,0 +coef_can_walk_to_work_school2,0.96010731757888212,0.96010731757834789,0.71139997243881226,0 +coef_can_walk_to_work_work2,0.73122607984567289,0.73122607983903865,0.52679997682571411,0 +coef_driving_age_child_school2_asc,-5.7172473630323095,-5.7172473630089566,-3.1359999179840088,0 +coef_driving_age_child_work_and_school_asc,-4.4775478428522311,-4.477547842857807,-4.4362001419067383,0 +coef_female_school1,-1.1179750622419278,-1.117975062224638,0.15919999778270721,0 +coef_female_school2,-0.48952027651274382,-0.48952027650816798,0.11400000005960464,0 +coef_female_work1,-2.0511063704156607,-2.0511063703883035,0.1737000048160553,0 +coef_female_work2,-0.41490266839201562,-0.4149026683981944,-0.22550000250339508,0 +coef_female_work_and_school,-2.9966902230088177,-2.9966902229830907,-0.34419998526573181,0 +coef_few_cars_than_drivers_school2,-0.55452509049148058,-0.55452509048768461,-0.57590001821517944,0 +coef_ft_worker_work2_asc,-3.8025869871232629,-3.8025869871213596,-3.3780999183654785,0 +coef_hh_income_gt_50k_school1,0.034699998795986176,0.034699998795986176,0.034699998795986176,0 +coef_hh_income_gt_50k_student_work_and_school,-0.17920043049685666,-0.17920043049604578,-0.052799999713897705,0 +coef_hh_income_gt_50k_work,-0.66212675917984232,-0.66212675918375841,-0.052799999713897705,0 +coef_hh_income_gt_50k_worker_work_and_school,0.034699998795986176,0.034699998795986176,0.034699998795986176,0 +coef_home_urban_school1,-0.13609999418258667,-0.13609999418258667,-0.13609999418258667,0 +coef_home_urban_school2,-2.1094338222937941,-2.1094338222674192,0.31700000166893005,0 +coef_home_urban_work1,0.34863867027519652,0.34863867026166911,-0.28310000896453857,0 +coef_home_urban_work2,0.76429400769443512,0.76429400769779043,0.23080000281333923,0 +coef_home_urban_work_and_school,-0.33420724299781907,-0.33420724299927923,-0.35089999437332153,0 +coef_no_cars_in_hh_school2,-0.3281459638377332,-0.32814596385333328,-1.4129999876022339,0 +coef_no_cars_in_hh_work2,-0.66209007579299561,-0.66209007577665158,-1.3059999942779541,0 +coef_no_cars_in_hh_work_and_school,-0.92494433055696312,-0.92494433055322656,-1.3020000457763672,0 +coef_non_family_hh_category1,-0.25,-0.25,-0.25,0 +coef_non_family_hh_category2,0.49350779245951959,0.49350779245352627,-0.17919999361038208,0 +coef_non_student_goes_to_school,3.8829998970031738,3.8829998970031738,3.8829998970031738,0 +coef_num_non_workers_in_hh_school1,0.25740000605583191,0.25740000605583191,0.25740000605583191,0 +coef_num_preschool_in_hh_school1,-0.13349999487400055,-0.13349999487400055,-0.13349999487400055,0 +coef_num_preschool_in_hh_school2,0.73590985242441875,0.73590985242576534,-0.55769997835159302,0 +coef_num_preschool_in_hh_work1,-1.6486490740351119,-1.6486490740275117,0.21909999847412109,0 +coef_num_preschool_in_hh_work2,0.24670839988109913,0.2467083998803998,-0.14779999852180481,0 +coef_num_preschool_in_hh_work_and_school,-2.4290259678800297,-2.4290259678663575,-0.12510000169277191,0 +coef_num_under_16_not_at_school_school2,-0.91329132598172835,-0.9132913259601626,0.08659999817609787,0 +coef_num_under_16_not_at_school_work2,-0.11459202927007101,-0.11459202927135456,0.18039999902248383,0 +coef_num_under_16_not_at_school_work_and_school,-2.3336601463508013,-2.3336601463331874,-0.19550000131130219,0 +coef_pre_driving_age_child_school2_asc,-2.6428722793019959,-2.6428722793097204,-3.9702999591827393,0 +coef_pt_worker_work2_asc,-3.0303892540032376,-3.0303892539968387,-3.0476000308990479,0 +coef_round_trip_auto_time_to_work_school2,0.064069158794420475,0.064069158793510952,-0.0034000000450760126,0 +coef_round_trip_auto_time_to_work_work2,-0.020202184952509333,-0.020202184952801051,-0.0035000001080334187,0 +coef_round_trip_auto_time_to_work_work_and_school,-0.015315391311272412,-0.015315391311409078,-0.0031000000890344381,0 +coef_student_employed,4.6032016663231561,4.6032016663032218,3.0139999389648438,0 +coef_unavailable,-999,-999,-999,0 +coef_under_35_school1,0.72180002927780151,0.72180002927780151,0.72180002927780151,0 +coef_under_35_school2,2.1398332789937333,2.1398332789898835,1.2749999761581421,0 +coef_under_35_work1,1.1194222799903866,1.1194222799688391,-0.46290001273155212,0 +coef_under_35_work2,-0.24674628169467161,-0.24674628168879748,-0.13750000298023224,0 +coef_under_35_work_and_school,2.7433316694686765,2.7433316694426049,0.97610002756118774,0 +coef_univ_school2_asc,-4.9155139535095262,-4.9155139534987793,-3.7428998947143555,0 +coef_univ_work1_asc,2.797738568613517,2.7977385685999896,2.1659998893737793,0 +coef_univ_work2_asc,-0.45572969467386271,-0.45572969467880964,-1.3964999914169312,0 +coef_univ_work_and_school_asc,0.16534045072359432,0.16534045072771017,0.10729999840259552,0 diff --git a/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_mandatory_tour_frequency_SLSQP_loglike.csv b/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_mandatory_tour_frequency_SLSQP_loglike.csv index f22660c1e..a593ed154 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_mandatory_tour_frequency_SLSQP_loglike.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_mandatory_tour_frequency_SLSQP_loglike.csv @@ -1,2 +1,2 @@ ,loglike_prior,loglike_converge -0,-434.77803538920688,-410.22015020484497 +0,-434.77803587138652,-412.67417109099858 diff --git a/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_trip_mode_choice_SLSQP_.csv b/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_trip_mode_choice_SLSQP_.csv index 706cb99d1..a54d7e8e1 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_trip_mode_choice_SLSQP_.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_simple_simulate_trip_mode_choice_SLSQP_.csv @@ -1,273 +1,273 @@ -,value,initvalue,nullvalue,minimum,maximum,best --999,-999,-999,-999,-999,-999,-999 -1,1,1,1,1,1,1 -coef_age010_trn,0.36055093747501515,0,0,,,0.36055093747501515 -coef_age1619_da,0.34452990003908374,0,0,,,0.34452990003908374 -coef_age16p_sr,-0.15188561974324261,0,0,,,-0.15188561974324261 -coef_bike_ASC_rh,-7,-7,0,-7,-7,-7 -coef_bike_ASC_walk_work,-2.6591723273807126,-1.8332999999999999,0,,,-2.6591723273807126 -coef_drive_transit_ASC_commuter_work,0.42650515313601794,0.4012,0,,,0.42650515313601794 -coef_drive_transit_ASC_express_work,-0.35539999999999999,-0.35539999999999999,0,,,-0.35539999999999999 -coef_drive_transit_ASC_ferry_work,0.52769999999999995,0.52769999999999995,0,,,0.52769999999999995 -coef_drive_transit_ASC_heavyrail_work,-11.994127899898398,0.3538,0,,,-11.994127899898398 -coef_drive_transit_ASC_lightrail_work,-10.300240827222716,0.46210000000000001,0,,,-10.300240827222716 -coef_drive_transit_ASC_rh,-162.17158272141376,-4.25,0,,,-162.17158272141376 -coef_hhsize1_sr,-0.89092943199297148,-0.73460000000000003,0,,,-0.89092943199297148 -coef_hhsize2_sr,0.039652734237525036,0,0,,,0.039652734237525036 -coef_ivt_work,-0.010154908820341358,-0.021999999999999999,0,,,-0.010154908820341358 -coef_joint_auto_ASC_rh_work_univ_school_escort_atwork,0,0,0,,,0 -coef_joint_auto_ASC_sr2_work_univ_school_escort_atwork,0,0,0,,,0 -coef_joint_auto_ASC_sr3p_work_univ_school_escort_atwork,0,0,0,,,0 -coef_joint_auto_ASC_walk_work_univ_school_escort_atwork,0,0,0,,,0 -coef_joint_bike_ASC_rh_work_univ_school_escort_atwork,0,0,0,,,0 -coef_joint_bike_ASC_walk_work_univ_school_escort_atwork,0,0,0,,,0 -coef_joint_drive_transit_ASC_commuter_work_univ_school_escort_atwork,0,0,0,,,0 -coef_joint_drive_transit_ASC_express_work_univ_school_escort_atwork,0,0,0,,,0 -coef_joint_drive_transit_ASC_ferry_work_univ_school_escort_atwork,0,0,0,,,0 -coef_joint_drive_transit_ASC_heavyrail_work_univ_school_escort_atwork,0,0,0,,,0 -coef_joint_drive_transit_ASC_lightrail_work_univ_school_escort_atwork,0,0,0,,,0 -coef_joint_drive_transit_ASC_rh_work_univ_school_escort_atwork,0,0,0,,,0 -coef_joint_ride_hail_ASC_sr2_work_univ_school_escort_atwork,0,0,0,,,0 -coef_joint_ride_hail_ASC_sr3p_work_univ_school_escort_atwork,0,0,0,,,0 -coef_joint_ride_hail_ASC_taxi_work_univ_school_escort_atwork,0,0,0,,,0 -coef_joint_ride_hail_ASC_tnc_shared,0,0,0,,,0 -coef_joint_ride_hail_ASC_tnc_single_work_univ_school_escort_atwork,0,0,0,,,0 -coef_joint_ride_hail_ASC_walk_transit,0,0,0,,,0 -coef_joint_ride_hail_ASC_walk_work_univ_school_escort_atwork,0,0,0,,,0 -coef_joint_walk_ASC_rh_work_univ_school_escort_atwork,0,0,0,,,0 -coef_joint_walk_transit_ASC_commuter_work_univ_school_escort_atwork,0,0,0,,,0 -coef_joint_walk_transit_ASC_express_work_univ_school_escort_atwork,0,0,0,,,0 -coef_joint_walk_transit_ASC_ferry_work_univ_school_escort_atwork,0,0,0,,,0 -coef_joint_walk_transit_ASC_heavyrail_work_univ_school_escort_atwork,0,0,0,,,0 -coef_joint_walk_transit_ASC_lightrail_work_univ_school_escort_atwork,0,0,0,,,0 -coef_joint_walk_transit_ASC_rh_work_univ_school_escort_atwork,0,0,0,,,0 -coef_joint_walk_transit_ASC_sr2_work_univ_school_escort_atwork,0,0,0,,,0 -coef_joint_walk_transit_ASC_sr3p_work_univ_school_escort_atwork,0,0,0,,,0 -coef_joint_walk_transit_ASC_walk_work_univ_school_escort_atwork,0,0,0,,,0 -coef_nest_AUTO,0.71999999999999997,0.71999999999999997,1,0.71999999999999997,0.71999999999999997,0.71999999999999997 -coef_nest_AUTO_DRIVEALONE,0.34999999999999998,0.34999999999999998,1,0.34999999999999998,0.34999999999999998,0.34999999999999998 -coef_nest_AUTO_SHAREDRIDE2,0.34999999999999998,0.34999999999999998,1,0.34999999999999998,0.34999999999999998,0.34999999999999998 -coef_nest_AUTO_SHAREDRIDE3,0.34999999999999998,0.34999999999999998,1,0.34999999999999998,0.34999999999999998,0.34999999999999998 -coef_nest_NONMOTORIZED,0.71999999999999997,0.71999999999999997,1,0.71999999999999997,0.71999999999999997,0.71999999999999997 -coef_nest_RIDEHAIL,0.35999999999999999,0.35999999999999999,1,0.35999999999999999,0.35999999999999999,0.35999999999999999 -coef_nest_TRANSIT,0.71999999999999997,0.71999999999999997,1,0.71999999999999997,0.71999999999999997,0.71999999999999997 -coef_nest_TRANSIT_DRIVEACCESS,0.5,0.5,1,0.5,0.5,0.5 -coef_nest_TRANSIT_WALKACCESS,0.5,0.5,1,0.5,0.5,0.5 -coef_ride_hail_ASC_sr2_work,-24.964152977906629,-6.1079999999999997,0,,,-24.964152977906629 -coef_ride_hail_ASC_sr3p_work_escort_shopping_othmaint_atwork,-29.66185425032911,-7,0,,,-29.66185425032911 -coef_ride_hail_ASC_taxi_work,-2.5195664524629127,-2.3849999999999998,0,,,-2.5195664524629127 -coef_ride_hail_ASC_tnc_shared,23.268241084943003,0,0,,,23.268241084943003 -coef_ride_hail_ASC_tnc_single_work,23.984210218237873,0.73499999999999999,0,,,23.984210218237873 -coef_ride_hail_ASC_walk_transit,22.114586690634976,0,0,,,22.114586690634976 -coef_ride_hail_ASC_walk_work,21.771187507152565,0.2858,0,,,21.771187507152565 -coef_sov_ASC_rh_work_atwork,-7,-7,0,-7,-7,-7 -coef_sov_ASC_sr2_work_univ_school_shopping_eatout_othmaint_social_othdiscr_atwork,-999,-999,0,-999,-999,-999 -coef_sov_ASC_sr3p_work_univ_school_shopping_eatout_othmaint_social_othdiscr_atwork,-999,-999,0,-999,-999,-999 -coef_sov_ASC_walk_work,-3.007257338441883,-0.83979999999999999,0,,,-3.007257338441883 -coef_sr2_ASC_rh_work_school_escort_shopping_eatout_othmaint_social_othdiscr_atwork,-7,-7,0,-7,-7,-7 -coef_sr2_ASC_sr2_work,0.19745747776996045,0.0149,0,,,0.19745747776996045 -coef_sr2_ASC_sr3p,-999,-999,0,-999,-999,-999 -coef_sr2_ASC_walk_work,-2.2229353369557856,0.126,0,,,-2.2229353369557856 -coef_sr3p_ASC_rh_work,-71.917699999999996,-71.917699999999996,0,,,-71.917699999999996 -coef_sr3p_ASC_sr2_work,-0.95395070192885023,-1.1956,0,,,-0.95395070192885023 -coef_sr3p_ASC_sr3p_work,0.0022823628108995749,-0.18360000000000001,0,,,0.0022823628108995749 -coef_sr3p_ASC_walk_work,-2.3566238207046379,0.21709999999999999,0,,,-2.3566238207046379 -coef_walk_ASC_rh,-7,-7,0,-7,-7,-7 -coef_walk_transit_ASC_commuter_work,0.4012,0.4012,0,,,0.4012 -coef_walk_transit_ASC_express_work,-0.35539999999999999,-0.35539999999999999,0,,,-0.35539999999999999 -coef_walk_transit_ASC_ferry_work,0.52769999999999995,0.52769999999999995,0,,,0.52769999999999995 -coef_walk_transit_ASC_heavyrail_work,0.50253917060490561,0.3538,0,,,0.50253917060490561 -coef_walk_transit_ASC_lightrail_work,0.63259254210688642,0.46210000000000001,0,,,0.63259254210688642 -coef_walk_transit_ASC_rh_work,-2.8695420596058572,-3.7408000000000001,0,,,-2.8695420596058572 -coef_walk_transit_ASC_sr2_work,-2.2566861984974196,-3.6631,0,,,-2.2566861984974196 -coef_walk_transit_ASC_sr3p_work,-2.6534480546215211,-4.1314000000000002,0,,,-2.6534480546215211 -coef_walk_transit_ASC_walk_work,-0.39143818330516583,0.44319999999999998,0,,,-0.39143818330516583 -coef_bike_ASC_walk_univ,-0.33989999999999998,-0.33989999999999998,0,,,-0.33989999999999998 -coef_drive_transit_ASC_commuter_univ_school,0.90820000000000001,0.90820000000000001,0,,,0.90820000000000001 -coef_drive_transit_ASC_express_univ_school,0.32240000000000002,0.32240000000000002,0,,,0.32240000000000002 -coef_drive_transit_ASC_ferry_univ_school,1.7237,1.7237,0,,,1.7237 -coef_drive_transit_ASC_heavyrail_univ_school,0.84899999999999998,0.84899999999999998,0,,,0.84899999999999998 -coef_drive_transit_ASC_lightrail_univ_school,1.4436,1.4436,0,,,1.4436 -coef_ivt_univ_school,-0.0082670637836597533,-0.027099999999999999,0,,,-0.0082670637836597533 -coef_ride_hail_ASC_sr2_univ,-4.3372000000000002,-4.3372000000000002,0,,,-4.3372000000000002 -coef_ride_hail_ASC_sr3p_univ,-4.9219999999999997,-4.9219999999999997,0,,,-4.9219999999999997 -coef_ride_hail_ASC_taxi_univ,-1.5993999999999999,-1.5993999999999999,0,,,-1.5993999999999999 -coef_ride_hail_ASC_tnc_single_univ,0.1081,0.1081,0,,,0.1081 -coef_ride_hail_ASC_walk_univ_escort_shopping_othmaint,-26.322181448888141,-7,0,,,-26.322181448888141 -coef_sov_ASC_rh_univ,-6.649,-6.649,0,,,-6.649 -coef_sov_ASC_walk_univ,-1.0579000000000001,-1.0579000000000001,0,,,-1.0579000000000001 -coef_sr2_ASC_rh_univ,-6.6897000000000002,-6.6897000000000002,0,,,-6.6897000000000002 -coef_sr2_ASC_sr2_univ,0.4304,0.4304,0,,,0.4304 -coef_sr2_ASC_walk_univ,1.3041,1.3041,0,,,1.3041 -coef_sr3p_ASC_rh_univ_escort_shopping_eatout_othmaint_social_othdiscr,-7,-7,0,-7,-7,-7 -coef_sr3p_ASC_sr2_univ,-0.31169999999999998,-0.31169999999999998,0,,,-0.31169999999999998 -coef_sr3p_ASC_sr3p_univ,0.62929999999999997,0.62929999999999997,0,,,0.62929999999999997 -coef_sr3p_ASC_walk_univ,1.6793,1.6793,0,,,1.6793 -coef_walk_transit_ASC_commuter_univ_school,0.90820000000000001,0.90820000000000001,0,,,0.90820000000000001 -coef_walk_transit_ASC_express_univ_school,0.32240000000000002,0.32240000000000002,0,,,0.32240000000000002 -coef_walk_transit_ASC_ferry_univ_school,1.7237,1.7237,0,,,1.7237 -coef_walk_transit_ASC_heavyrail_univ_school,0.86656489716508533,0.84899999999999998,0,,,0.86656489716508533 -coef_walk_transit_ASC_lightrail_univ_school,1.5673078514811689,1.4436,0,,,1.5673078514811689 -coef_walk_transit_ASC_rh_univ,-4.2690999999999999,-4.2690999999999999,0,,,-4.2690999999999999 -coef_walk_transit_ASC_sr2_univ,-4.0049999999999999,-4.0049999999999999,0,,,-4.0049999999999999 -coef_walk_transit_ASC_sr3p_univ,-28.697199999999999,-28.697199999999999,0,,,-28.697199999999999 -coef_walk_transit_ASC_walk_univ,-1.0310999999999999,-1.0310999999999999,0,,,-1.0310999999999999 -coef_bike_ASC_walk_school,-106.06311357570786,-2.0331999999999999,0,,,-106.06311357570786 -coef_ride_hail_ASC_sr2_school,-17.561865296747161,-1.5869,0,,,-17.561865296747161 -coef_ride_hail_ASC_sr3p_school,-17.869354547202143,-2.5362,0,,,-17.869354547202143 -coef_ride_hail_ASC_taxi_school,-1.6385208722849591,-0.58689999999999998,0,,,-1.6385208722849591 -coef_ride_hail_ASC_tnc_single_school,23.693954665409134,0.3201,0,,,23.693954665409134 -coef_ride_hail_ASC_walk_school,-17.881587989266929,0.245,0,,,-17.881587989266929 -coef_sov_ASC_rh_school,-126.45615738910647,-5.6548999999999996,0,,,-126.45615738910647 -coef_sov_ASC_walk_school,-3.1154322443821076,-71.8977,0,,,-3.1154322443821076 -coef_sr2_ASC_sr2_school,-0.54053965419989403,-1.9335,0,,,-0.54053965419989403 -coef_sr2_ASC_walk_school,-2.0412093694429427,-1.0362,0,,,-2.0412093694429427 -coef_sr3p_ASC_rh_school,-167.92322922478724,-6.6714000000000002,0,,,-167.92322922478724 -coef_sr3p_ASC_sr2_school,-1.0175286592825254,-2.7406999999999999,0,,,-1.0175286592825254 -coef_sr3p_ASC_sr3p_school,0.19312416588689055,-1.7718,0,,,0.19312416588689055 -coef_sr3p_ASC_walk_school,-2.4447403802047534,-1.2126999999999999,0,,,-2.4447403802047534 -coef_walk_transit_ASC_rh_school,-4.3619869330314502,-7,0,,,-4.3619869330314502 -coef_walk_transit_ASC_sr2_school,-2.270274862864051,-4.2961,0,,,-2.270274862864051 -coef_walk_transit_ASC_sr3p_school,-2.4067383334703436,-3.8664999999999998,0,,,-2.4067383334703436 -coef_walk_transit_ASC_walk_school,-1.4950397618009084,-1.1828000000000001,0,,,-1.4950397618009084 -coef_bike_ASC_walk_escort,-13.520327232125497,-13.520300000000001,0,,,-13.520327232125497 -coef_drive_transit_ASC_commuter_escort,0.54420000000000002,0.54420000000000002,0,,,0.54420000000000002 -coef_drive_transit_ASC_express_escort,0.75470000000000004,0.75470000000000004,0,,,0.75470000000000004 -coef_drive_transit_ASC_ferry_escort,0.60050000000000003,0.60050000000000003,0,,,0.60050000000000003 -coef_drive_transit_ASC_heavyrail_escort,-14.234170107485145,0.56730000000000003,0,,,-14.234170107485145 -coef_drive_transit_ASC_lightrail_escort,0.5252,0.5252,0,,,0.5252 -coef_ivt_escort_shopping_eatout_othdiscr_atwork,-0.011935317751590301,-0.027900000000000001,0,,,-0.011935317751590301 -coef_ride_hail_ASC_sr2_escort_shopping_othmaint,-23.87393437250816,-5.6482999999999999,0,,,-23.87393437250816 -coef_ride_hail_ASC_taxi_escort_shopping_othmaint,-3.6645734090143596,-3.6629,0,,,-3.6645734090143596 -coef_ride_hail_ASC_tnc_single_escort_shopping_othmaint,24.219922267784732,0.78790000000000004,0,,,24.219922267784732 -coef_sov_ASC_rh_escort_shopping_eatout_othmaint_social_othdiscr,0,0,0,0,0,0 -coef_sov_ASC_sr2_escort,0,0,0,0,0,0 -coef_sov_ASC_sr3p_escort,0,0,0,0,0,0 -coef_sov_ASC_walk_escort,0,0,0,0,0,0 -coef_sr2_ASC_sr2_escort,0.48842589140865728,0.3533,0,,,0.48842589140865728 -coef_sr2_ASC_walk_escort,-25.486556155436141,-2.0528,0,,,-25.486556155436141 -coef_sr3p_ASC_sr2_escort,-0.20651374838779549,-0.26819999999999999,0,,,-0.20651374838779549 -coef_sr3p_ASC_sr3p_escort,0.89578731133543399,0.73580000000000001,0,,,0.89578731133543399 -coef_sr3p_ASC_walk_escort,-3.4160479693862773,-1.0075000000000001,0,,,-3.4160479693862773 -coef_walk_transit_ASC_commuter_escort,0.54420000000000002,0.54420000000000002,0,,,0.54420000000000002 -coef_walk_transit_ASC_express_escort,0.75470000000000004,0.75470000000000004,0,,,0.75470000000000004 -coef_walk_transit_ASC_ferry_escort,0.60050000000000003,0.60050000000000003,0,,,0.60050000000000003 -coef_walk_transit_ASC_heavyrail_escort,0.85028037339339679,0.56730000000000003,0,,,0.85028037339339679 -coef_walk_transit_ASC_lightrail_escort,1.12520509210183,0.5252,0,,,1.12520509210183 -coef_walk_transit_ASC_rh_escort_shopping_othmaint,-2.3595754865729988,-3.1135999999999999,0,,,-2.3595754865729988 -coef_walk_transit_ASC_sr2_escort,-1.0205990135822081,-2.6284000000000001,0,,,-1.0205990135822081 -coef_walk_transit_ASC_sr3p_escort,-184.69692639910483,-3.2073999999999998,0,,,-184.69692639910483 -coef_walk_transit_ASC_walk_escort,-88.120508523406016,-0.99739999999999995,0,,,-88.120508523406016 -coef_bike_ASC_walk_shopping,-23.156539428413335,-1.0245,0,,,-23.156539428413335 -coef_drive_transit_ASC_commuter_shopping_eatout_othmaint_social_othdiscr_atwork,0.51290000000000002,0.51290000000000002,0,,,0.51290000000000002 -coef_drive_transit_ASC_express_shopping_eatout_othmaint_social_othdiscr_atwork,0.66479999999999995,0.66479999999999995,0,,,0.66479999999999995 -coef_drive_transit_ASC_ferry_shopping_eatout_othmaint_social_othdiscr_atwork,0.64659999999999995,0.64659999999999995,0,,,0.64659999999999995 -coef_drive_transit_ASC_heavyrail_shopping_eatout_othmaint_social_othdiscr_atwork,0.5403,0.5403,0,,,0.5403 -coef_drive_transit_ASC_lightrail_shopping_eatout_othmaint_social_othdiscr_atwork,0.53920000000000001,0.53920000000000001,0,,,0.53920000000000001 -coef_joint_auto_ASC_rh_shopping_eatout_othmaint_social_othdiscr,-7,-7,0,,,-7 -coef_joint_auto_ASC_sr2_shopping,2.7753435280365912,0.58750000000000002,0,,,2.7753435280365912 -coef_joint_auto_ASC_sr3p_shopping,-19.06434075519855,-19.045400000000001,0,,,-19.06434075519855 -coef_joint_auto_ASC_walk_shopping,-23.468835890078797,-23.468800000000002,0,,,-23.468835890078797 -coef_joint_bike_ASC_rh_shopping_eatout_othmaint_social_othdiscr,-12.3057,-12.3057,0,,,-12.3057 -coef_joint_bike_ASC_walk_shopping,-7.0476000000000001,-7.0476000000000001,0,,,-7.0476000000000001 -coef_joint_drive_transit_ASC_commuter_shopping_eatout_othmaint_social_othdiscr,0.51290000000000002,0.51290000000000002,0,,,0.51290000000000002 -coef_joint_drive_transit_ASC_express_shopping_eatout_othmaint_social_othdiscr,0.66479999999999995,0.66479999999999995,0,,,0.66479999999999995 -coef_joint_drive_transit_ASC_ferry_shopping_eatout_othmaint_social_othdiscr,0.64659999999999995,0.64659999999999995,0,,,0.64659999999999995 -coef_joint_drive_transit_ASC_heavyrail_shopping_eatout_othmaint_social_othdiscr,0.5403,0.5403,0,,,0.5403 -coef_joint_drive_transit_ASC_lightrail_shopping_eatout_othmaint_social_othdiscr,0.53920000000000001,0.53920000000000001,0,,,0.53920000000000001 -coef_joint_drive_transit_ASC_rh_shopping_eatout_othmaint_social_othdiscr,4.6138000000000003,4.6138000000000003,0,,,4.6138000000000003 -coef_joint_ride_hail_ASC_sr2_shopping_eatout_othmaint_social_othdiscr,-7,-7,0,,,-7 -coef_joint_ride_hail_ASC_sr3p_shopping_eatout_othmaint_social_othdiscr,-7,-7,0,,,-7 -coef_joint_ride_hail_ASC_taxi_shopping_eatout_othmaint_social_othdiscr,-7,-7,0,,,-7 -coef_joint_ride_hail_ASC_tnc_single_shopping_eatout_othmaint_social_othdiscr,-4.7339000000000002,-4.7339000000000002,0,,,-4.7339000000000002 -coef_joint_ride_hail_ASC_walk_shopping_eatout_othmaint_social_othdiscr,-7,-7,0,,,-7 -coef_joint_walk_ASC_rh_shopping_eatout_othmaint_social_othdiscr,-3.0362,-3.0362,0,,,-3.0362 -coef_joint_walk_transit_ASC_commuter_shopping_eatout_othmaint_social_othdiscr,0.51290000000000002,0.51290000000000002,0,,,0.51290000000000002 -coef_joint_walk_transit_ASC_express_shopping_eatout_othmaint_social_othdiscr,0.66479999999999995,0.66479999999999995,0,,,0.66479999999999995 -coef_joint_walk_transit_ASC_ferry_shopping_eatout_othmaint_social_othdiscr,0.64659999999999995,0.64659999999999995,0,,,0.64659999999999995 -coef_joint_walk_transit_ASC_heavyrail_shopping_eatout_othmaint_social_othdiscr,21.596514314322803,0.5403,0,,,21.596514314322803 -coef_joint_walk_transit_ASC_lightrail_shopping_eatout_othmaint_social_othdiscr,0.92447712850041863,0.53920000000000001,0,,,0.92447712850041863 -coef_joint_walk_transit_ASC_rh_shopping_eatout_othmaint_social_othdiscr,3.132294016909416,1.2265999999999999,0,,,3.132294016909416 -coef_joint_walk_transit_ASC_sr2_shopping,-21.576802070713498,-21.576799999999999,0,,,-21.576802070713498 -coef_joint_walk_transit_ASC_sr3p_shopping,-25.595300009753458,-25.595300000000002,0,,,-25.595300009753458 -coef_joint_walk_transit_ASC_walk_shopping,-101.70152139850924,-0.54720000000000002,0,,,-101.70152139850924 -coef_sov_ASC_walk_shopping,-3.7867423367407271,-1.4765999999999999,0,,,-3.7867423367407271 -coef_sr2_ASC_sr2_shopping,1.7463545613015568,1.3765000000000001,0,,,1.7463545613015568 -coef_sr2_ASC_walk_shopping,-3.6530756986244408,-0.11169999999999999,0,,,-3.6530756986244408 -coef_sr3p_ASC_sr2_shopping,0.33630630204547912,-0.078100000000000003,0,,,0.33630630204547912 -coef_sr3p_ASC_sr3p_shopping,1.6427397418976948,1.3394999999999999,0,,,1.6427397418976948 -coef_sr3p_ASC_walk_shopping,-3.9191286556878429,-0.50790000000000002,0,,,-3.9191286556878429 -coef_walk_transit_ASC_commuter_shopping_eatout_othmaint_social_othdiscr_atwork,0.51290000000000002,0.51290000000000002,0,,,0.51290000000000002 -coef_walk_transit_ASC_express_shopping_eatout_othmaint_social_othdiscr_atwork,0.66479999999999995,0.66479999999999995,0,,,0.66479999999999995 -coef_walk_transit_ASC_ferry_shopping_eatout_othmaint_social_othdiscr_atwork,0.64659999999999995,0.64659999999999995,0,,,0.64659999999999995 -coef_walk_transit_ASC_heavyrail_shopping_eatout_othmaint_social_othdiscr_atwork,0.92621641961993106,0.5403,0,,,0.92621641961993106 -coef_walk_transit_ASC_lightrail_shopping_eatout_othmaint_social_othdiscr_atwork,0.83136133693868486,0.53920000000000001,0,,,0.83136133693868486 -coef_walk_transit_ASC_sr2_shopping,-2.1233168743409747,-4.0114999999999998,0,,,-2.1233168743409747 -coef_walk_transit_ASC_sr3p_shopping,-91.093530857559287,-4.3852000000000002,0,,,-91.093530857559287 -coef_walk_transit_ASC_walk_shopping,-0.81350805532373194,-0.1943,0,,,-0.81350805532373194 -coef_bike_ASC_walk_eatout,-174.81611515878677,-2.6989999999999998,0,,,-174.81611515878677 -coef_joint_auto_ASC_sr2_eatout_othmaint_social_othdiscr,0.38104442976260161,-0.063399999999999998,0,,,0.38104442976260161 -coef_joint_auto_ASC_sr3p_eatout_othmaint_social_othdiscr,0.38908646769235944,-0.16250000000000001,0,,,0.38908646769235944 -coef_joint_auto_ASC_walk_eatout_othmaint_social_othdiscr,-4.3794314087625494,-0.71440000000000003,0,,,-4.3794314087625494 -coef_joint_bike_ASC_walk_eatout,-15.5588,-15.5588,0,,,-15.5588 -coef_joint_walk_transit_ASC_sr2_eatout,-14.914319758236871,-14.913399999999999,0,,,-14.914319758236871 -coef_joint_walk_transit_ASC_sr3p_eatout,-16.758772307649721,-16.758700000000001,0,,,-16.758772307649721 -coef_joint_walk_transit_ASC_walk_eatout,1.1018580418672292,2.3016999999999999,0,,,1.1018580418672292 -coef_ride_hail_ASC_sr2_eatout_social_othdiscr,-16.851845961332685,-5.9691999999999998,0,,,-16.851845961332685 -coef_ride_hail_ASC_sr3p_eatout_social_othdiscr,-11.873288203497911,-6.7199,0,,,-11.873288203497911 -coef_ride_hail_ASC_taxi_eatout_social_othdiscr,-2.5632427324461902,-2.5543,0,,,-2.5632427324461902 -coef_ride_hail_ASC_tnc_single_eatout_social_othdiscr,23.995880104391915,0.82740000000000002,0,,,23.995880104391915 -coef_ride_hail_ASC_walk_eatout_social_othdiscr,-17.718714023749605,-3.3603000000000001,0,,,-17.718714023749605 -coef_sov_ASC_walk_eatout,-2.6337956057242367,-1.3443000000000001,0,,,-2.6337956057242367 -coef_sr2_ASC_sr2_eatout,1.1016400029858922,0.99709999999999999,0,,,1.1016400029858922 -coef_sr2_ASC_walk_eatout,-4.5471769897543872,-0.072900000000000006,0,,,-4.5471769897543872 -coef_sr3p_ASC_sr2_eatout,-0.21320006188848084,-0.31780000000000003,0,,,-0.21320006188848084 -coef_sr3p_ASC_sr3p_eatout,1.474080431715626,1.3323,0,,,1.474080431715626 -coef_sr3p_ASC_walk_eatout,-2.5082484326697068,-0.043400000000000001,0,,,-2.5082484326697068 -coef_walk_transit_ASC_rh_eatout_social_othdiscr,-2.6584911065153216,-4.7507999999999999,0,,,-2.6584911065153216 -coef_walk_transit_ASC_sr2_eatout,-2.0069285824622241,-3.1434000000000002,0,,,-2.0069285824622241 -coef_walk_transit_ASC_sr3p_eatout,-2.5231634577013793,-3.8519999999999999,0,,,-2.5231634577013793 -coef_walk_transit_ASC_walk_eatout,0.16642876905750803,1.3504,0,,,0.16642876905750803 -coef_bike_ASC_walk_othmaint,-0.784009151847747,-0.5706,0,,,-0.784009151847747 -coef_ivt_othmaint_social,-0.012116004199731105,-0.017500000000000002,0,,,-0.012116004199731105 -coef_joint_bike_ASC_walk_othmaint,-13.5192,-13.5192,0,,,-13.5192 -coef_joint_walk_transit_ASC_sr2_othmaint,-11.323061152682898,-5.3230000000000004,0,,,-11.323061152682898 -coef_joint_walk_transit_ASC_sr3p_othmaint,-44.010114035526179,-3.9563000000000001,0,,,-44.010114035526179 -coef_joint_walk_transit_ASC_walk_othmaint,-73.569639938685185,1.1876,0,,,-73.569639938685185 -coef_sov_ASC_walk_othmaint,-4.4263069274933464,-1.2992999999999999,0,,,-4.4263069274933464 -coef_sr2_ASC_sr2_othmaint,0.93483638812856495,0.85740000000000005,0,,,0.93483638812856495 -coef_sr2_ASC_walk_othmaint,-3.1386920238871761,-0.59889999999999999,0,,,-3.1386920238871761 -coef_sr3p_ASC_sr2_othmaint,0.042063533996837946,-0.29580000000000001,0,,,0.042063533996837946 -coef_sr3p_ASC_sr3p_othmaint,1.1283362600967743,0.95269999999999999,0,,,1.1283362600967743 -coef_sr3p_ASC_walk_othmaint,-5.0664087819757082,0.042200000000000001,0,,,-5.0664087819757082 -coef_walk_transit_ASC_sr2_othmaint,-34.674600000130781,-34.674599999999998,0,,,-34.674600000130781 -coef_walk_transit_ASC_sr3p_othmaint,-29.385800207697873,-29.3858,0,,,-29.385800207697873 -coef_walk_transit_ASC_walk_othmaint,-0.28811698789154394,0.7248,0,,,-0.28811698789154394 -coef_bike_ASC_walk_social,-13.240952180972661,-13.2384,0,,,-13.240952180972661 -coef_joint_bike_ASC_walk_social,-26.171399999999998,-26.171399999999998,0,,,-26.171399999999998 -coef_joint_walk_transit_ASC_sr2_social,-20.502199999999998,-20.502199999999998,0,,,-20.502199999999998 -coef_joint_walk_transit_ASC_sr3p_social,-34.7378,-34.7378,0,,,-34.7378 -coef_joint_walk_transit_ASC_walk_social,-2.3852136661883132,-2.1301000000000001,0,,,-2.3852136661883132 -coef_sov_ASC_walk_social,-25.269332635237305,-1.8077000000000001,0,,,-25.269332635237305 -coef_sr2_ASC_sr2_social,0.76826858270381293,0.56630000000000003,0,,,0.76826858270381293 -coef_sr2_ASC_walk_social,-2.8506566329280796,-0.79320000000000002,0,,,-2.8506566329280796 -coef_sr3p_ASC_sr2_social,-0.12234716443959485,-0.15559999999999999,0,,,-0.12234716443959485 -coef_sr3p_ASC_sr3p_social,1.2106868400711996,0.83309999999999995,0,,,1.2106868400711996 -coef_sr3p_ASC_walk_social,-3.0801131342084651,-0.31340000000000001,0,,,-3.0801131342084651 -coef_walk_transit_ASC_sr2_social,-2.0645343270844863,-3.3662999999999998,0,,,-2.0645343270844863 -coef_walk_transit_ASC_sr3p_social,-21.63090014868768,-21.6309,0,,,-21.63090014868768 -coef_walk_transit_ASC_walk_social,-2.3146041098832506,-0.7651,0,,,-2.3146041098832506 -coef_bike_ASC_walk_othdiscr,-1.3971872234012017,-1.3576999999999999,0,,,-1.3971872234012017 -coef_joint_bike_ASC_walk_othdiscr,-14.444000000000001,-14.444000000000001,0,,,-14.444000000000001 -coef_joint_walk_transit_ASC_sr2_othdiscr,-14.9801,-14.9801,0,,,-14.9801 -coef_joint_walk_transit_ASC_sr3p_othdiscr,-16.735567652638597,-16.735399999999998,0,,,-16.735567652638597 -coef_joint_walk_transit_ASC_walk_othdiscr,-25.948044836941285,-0.0023999999999999998,0,,,-25.948044836941285 -coef_sov_ASC_walk_othdiscr,-4.9397828512902819,-1.5507,0,,,-4.9397828512902819 -coef_sr2_ASC_sr2_othdiscr,0.85570357875378389,0.74780000000000002,0,,,0.85570357875378389 -coef_sr2_ASC_walk_othdiscr,-2.4704700572535603,-0.026800000000000001,0,,,-2.4704700572535603 -coef_sr3p_ASC_sr2_othdiscr,-0.41762969659077742,-0.61419999999999997,0,,,-0.41762969659077742 -coef_sr3p_ASC_sr3p_othdiscr,0.84494437659483101,0.73980000000000001,0,,,0.84494437659483101 -coef_sr3p_ASC_walk_othdiscr,-5.841028145506157,-0.5272,0,,,-5.841028145506157 -coef_walk_transit_ASC_sr2_othdiscr,-1.2322243797539427,-2.7589999999999999,0,,,-1.2322243797539427 -coef_walk_transit_ASC_sr3p_othdiscr,-1.1992638422488842,-2.5125999999999999,0,,,-1.1992638422488842 -coef_walk_transit_ASC_walk_othdiscr,-0.98049723049553139,-0.49969999999999998,0,,,-0.98049723049553139 +param_name,value,best,initvalue,nullvalue +-999,-999,-999,-999,0 +1,1,1,1,0 +coef_age010_trn,0.35767627741145724,0.35767627741145724,0,0 +coef_age1619_da,0.34333578772407369,0.34333578772407369,0,0 +coef_age16p_sr,-0.14184142530409971,-0.14184142530409971,0,0 +coef_bike_ASC_rh,-7,-7,-7,0 +coef_bike_ASC_walk_eatout,-4.6307472236220351,-4.6307472236220351,-2.6989999999999998,0 +coef_bike_ASC_walk_escort,-13.520300035676909,-13.520300035676909,-13.520300000000001,0 +coef_bike_ASC_walk_othdiscr,-1.3990818215431378,-1.3990818215431378,-1.3576999999999999,0 +coef_bike_ASC_walk_othmaint,-0.7890931685689252,-0.7890931685689252,-0.5706,0 +coef_bike_ASC_walk_school,-4.9873103152859581,-4.9873103152859581,-2.0331999999999999,0 +coef_bike_ASC_walk_shopping,-11.171180371928761,-11.171180371928761,-1.0245,0 +coef_bike_ASC_walk_social,-13.238403309075121,-13.238403309075121,-13.2384,0 +coef_bike_ASC_walk_univ,-0.33989999999999998,-0.33989999999999998,-0.33989999999999998,0 +coef_bike_ASC_walk_work,-2.662073727736936,-2.662073727736936,-1.8332999999999999,0 +coef_drive_transit_ASC_commuter_escort,0.54420000000000002,0.54420000000000002,0.54420000000000002,0 +coef_drive_transit_ASC_commuter_shopping_eatout_othmaint_social_othdiscr_atwork,0.51290000000000002,0.51290000000000002,0.51290000000000002,0 +coef_drive_transit_ASC_commuter_univ_school,0.90820000000000001,0.90820000000000001,0.90820000000000001,0 +coef_drive_transit_ASC_commuter_work,0.42637620615946842,0.42637620615946842,0.4012,0 +coef_drive_transit_ASC_express_escort,0.75470000000000004,0.75470000000000004,0.75470000000000004,0 +coef_drive_transit_ASC_express_shopping_eatout_othmaint_social_othdiscr_atwork,0.66479999999999995,0.66479999999999995,0.66479999999999995,0 +coef_drive_transit_ASC_express_univ_school,0.32240000000000002,0.32240000000000002,0.32240000000000002,0 +coef_drive_transit_ASC_express_work,-0.35539999999999999,-0.35539999999999999,-0.35539999999999999,0 +coef_drive_transit_ASC_ferry_escort,0.60050000000000003,0.60050000000000003,0.60050000000000003,0 +coef_drive_transit_ASC_ferry_shopping_eatout_othmaint_social_othdiscr_atwork,0.64659999999999995,0.64659999999999995,0.64659999999999995,0 +coef_drive_transit_ASC_ferry_univ_school,1.7237,1.7237,1.7237,0 +coef_drive_transit_ASC_ferry_work,0.52769999999999995,0.52769999999999995,0.52769999999999995,0 +coef_drive_transit_ASC_heavyrail_escort,-9.989800530770955,-9.989800530770955,0.56730000000000003,0 +coef_drive_transit_ASC_heavyrail_shopping_eatout_othmaint_social_othdiscr_atwork,0.5403,0.5403,0.5403,0 +coef_drive_transit_ASC_heavyrail_univ_school,0.84899999999999998,0.84899999999999998,0.84899999999999998,0 +coef_drive_transit_ASC_heavyrail_work,-8.7062475359294247,-8.7062475359294247,0.3538,0 +coef_drive_transit_ASC_lightrail_escort,0.5252,0.5252,0.5252,0 +coef_drive_transit_ASC_lightrail_shopping_eatout_othmaint_social_othdiscr_atwork,0.53920000000000001,0.53920000000000001,0.53920000000000001,0 +coef_drive_transit_ASC_lightrail_univ_school,1.4436,1.4436,1.4436,0 +coef_drive_transit_ASC_lightrail_work,-7.4071143692385562,-7.4071143692385562,0.46210000000000001,0 +coef_drive_transit_ASC_rh,-8.0109041770487206,-8.0109041770487206,-4.25,0 +coef_hhsize1_sr,-0.89082809363303117,-0.89082809363303117,-0.73460000000000003,0 +coef_hhsize2_sr,0.039673604461434211,0.039673604461434211,0,0 +coef_ivt_escort_shopping_eatout_othdiscr_atwork,-0.011939751587626005,-0.011939751587626005,-0.027900000000000001,0 +coef_ivt_othmaint_social,-0.012113122493485196,-0.012113122493485196,-0.017500000000000002,0 +coef_ivt_univ_school,-0.0082684909559910397,-0.0082684909559910397,-0.027099999999999999,0 +coef_ivt_work,-0.010154800227496609,-0.010154800227496609,-0.021999999999999999,0 +coef_joint_auto_ASC_rh_shopping_eatout_othmaint_social_othdiscr,-7,-7,-7,0 +coef_joint_auto_ASC_rh_work_univ_school_escort_atwork,0,0,0,0 +coef_joint_auto_ASC_sr2_eatout_othmaint_social_othdiscr,0.37182968511460945,0.37182968511460945,-0.063399999999999998,0 +coef_joint_auto_ASC_sr2_shopping,2.7630522022711443,2.7630522022711443,0.58750000000000002,0 +coef_joint_auto_ASC_sr2_work_univ_school_escort_atwork,0,0,0,0 +coef_joint_auto_ASC_sr3p_eatout_othmaint_social_othdiscr,0.37976650225041186,0.37976650225041186,-0.16250000000000001,0 +coef_joint_auto_ASC_sr3p_shopping,-19.04542622913733,-19.04542622913733,-19.045400000000001,0 +coef_joint_auto_ASC_sr3p_work_univ_school_escort_atwork,0,0,0,0 +coef_joint_auto_ASC_walk_eatout_othmaint_social_othdiscr,-4.375671164481866,-4.375671164481866,-0.71440000000000003,0 +coef_joint_auto_ASC_walk_shopping,-23.468800060392848,-23.468800060392848,-23.468800000000002,0 +coef_joint_auto_ASC_walk_work_univ_school_escort_atwork,0,0,0,0 +coef_joint_bike_ASC_rh_shopping_eatout_othmaint_social_othdiscr,-12.3057,-12.3057,-12.3057,0 +coef_joint_bike_ASC_rh_work_univ_school_escort_atwork,0,0,0,0 +coef_joint_bike_ASC_walk_eatout,-15.5588,-15.5588,-15.5588,0 +coef_joint_bike_ASC_walk_othdiscr,-14.444000000000001,-14.444000000000001,-14.444000000000001,0 +coef_joint_bike_ASC_walk_othmaint,-13.5192,-13.5192,-13.5192,0 +coef_joint_bike_ASC_walk_shopping,-7.0476000000000001,-7.0476000000000001,-7.0476000000000001,0 +coef_joint_bike_ASC_walk_social,-26.171399999999998,-26.171399999999998,-26.171399999999998,0 +coef_joint_bike_ASC_walk_work_univ_school_escort_atwork,0,0,0,0 +coef_joint_drive_transit_ASC_commuter_shopping_eatout_othmaint_social_othdiscr,0.51290000000000002,0.51290000000000002,0.51290000000000002,0 +coef_joint_drive_transit_ASC_commuter_work_univ_school_escort_atwork,0,0,0,0 +coef_joint_drive_transit_ASC_express_shopping_eatout_othmaint_social_othdiscr,0.66479999999999995,0.66479999999999995,0.66479999999999995,0 +coef_joint_drive_transit_ASC_express_work_univ_school_escort_atwork,0,0,0,0 +coef_joint_drive_transit_ASC_ferry_shopping_eatout_othmaint_social_othdiscr,0.64659999999999995,0.64659999999999995,0.64659999999999995,0 +coef_joint_drive_transit_ASC_ferry_work_univ_school_escort_atwork,0,0,0,0 +coef_joint_drive_transit_ASC_heavyrail_shopping_eatout_othmaint_social_othdiscr,0.5403,0.5403,0.5403,0 +coef_joint_drive_transit_ASC_heavyrail_work_univ_school_escort_atwork,0,0,0,0 +coef_joint_drive_transit_ASC_lightrail_shopping_eatout_othmaint_social_othdiscr,0.53920000000000001,0.53920000000000001,0.53920000000000001,0 +coef_joint_drive_transit_ASC_lightrail_work_univ_school_escort_atwork,0,0,0,0 +coef_joint_drive_transit_ASC_rh_shopping_eatout_othmaint_social_othdiscr,4.6138000000000003,4.6138000000000003,4.6138000000000003,0 +coef_joint_drive_transit_ASC_rh_work_univ_school_escort_atwork,0,0,0,0 +coef_joint_ride_hail_ASC_sr2_shopping_eatout_othmaint_social_othdiscr,-7,-7,-7,0 +coef_joint_ride_hail_ASC_sr2_work_univ_school_escort_atwork,0,0,0,0 +coef_joint_ride_hail_ASC_sr3p_shopping_eatout_othmaint_social_othdiscr,-7,-7,-7,0 +coef_joint_ride_hail_ASC_sr3p_work_univ_school_escort_atwork,0,0,0,0 +coef_joint_ride_hail_ASC_taxi_shopping_eatout_othmaint_social_othdiscr,-7,-7,-7,0 +coef_joint_ride_hail_ASC_taxi_work_univ_school_escort_atwork,0,0,0,0 +coef_joint_ride_hail_ASC_tnc_shared,0,0,0,0 +coef_joint_ride_hail_ASC_tnc_single_shopping_eatout_othmaint_social_othdiscr,-4.7339000000000002,-4.7339000000000002,-4.7339000000000002,0 +coef_joint_ride_hail_ASC_tnc_single_work_univ_school_escort_atwork,0,0,0,0 +coef_joint_ride_hail_ASC_walk_shopping_eatout_othmaint_social_othdiscr,-7,-7,-7,0 +coef_joint_ride_hail_ASC_walk_transit,0,0,0,0 +coef_joint_ride_hail_ASC_walk_work_univ_school_escort_atwork,0,0,0,0 +coef_joint_walk_ASC_rh_shopping_eatout_othmaint_social_othdiscr,-3.0362,-3.0362,-3.0362,0 +coef_joint_walk_ASC_rh_work_univ_school_escort_atwork,0,0,0,0 +coef_joint_walk_transit_ASC_commuter_shopping_eatout_othmaint_social_othdiscr,0.51290000000000002,0.51290000000000002,0.51290000000000002,0 +coef_joint_walk_transit_ASC_commuter_work_univ_school_escort_atwork,0,0,0,0 +coef_joint_walk_transit_ASC_express_shopping_eatout_othmaint_social_othdiscr,0.66479999999999995,0.66479999999999995,0.66479999999999995,0 +coef_joint_walk_transit_ASC_express_work_univ_school_escort_atwork,0,0,0,0 +coef_joint_walk_transit_ASC_ferry_shopping_eatout_othmaint_social_othdiscr,0.64659999999999995,0.64659999999999995,0.64659999999999995,0 +coef_joint_walk_transit_ASC_ferry_work_univ_school_escort_atwork,0,0,0,0 +coef_joint_walk_transit_ASC_heavyrail_shopping_eatout_othmaint_social_othdiscr,13.389850481098479,13.389850481098479,0.5403,0 +coef_joint_walk_transit_ASC_heavyrail_work_univ_school_escort_atwork,0,0,0,0 +coef_joint_walk_transit_ASC_lightrail_shopping_eatout_othmaint_social_othdiscr,0.98274193315609293,0.98274193315609293,0.53920000000000001,0 +coef_joint_walk_transit_ASC_lightrail_work_univ_school_escort_atwork,0,0,0,0 +coef_joint_walk_transit_ASC_rh_shopping_eatout_othmaint_social_othdiscr,3.183325294252882,3.183325294252882,1.2265999999999999,0 +coef_joint_walk_transit_ASC_rh_work_univ_school_escort_atwork,0,0,0,0 +coef_joint_walk_transit_ASC_sr2_eatout,-14.913401266030013,-14.913401266030013,-14.913399999999999,0 +coef_joint_walk_transit_ASC_sr2_othdiscr,-14.9801,-14.9801,-14.9801,0 +coef_joint_walk_transit_ASC_sr2_othmaint,-5.3309700517325718,-5.3309700517325718,-5.3230000000000004,0 +coef_joint_walk_transit_ASC_sr2_shopping,-21.576800002987216,-21.576800002987216,-21.576799999999999,0 +coef_joint_walk_transit_ASC_sr2_social,-20.502199999999998,-20.502199999999998,-20.502199999999998,0 +coef_joint_walk_transit_ASC_sr2_work_univ_school_escort_atwork,0,0,0,0 +coef_joint_walk_transit_ASC_sr3p_eatout,-16.758700099536259,-16.758700099536259,-16.758700000000001,0 +coef_joint_walk_transit_ASC_sr3p_othdiscr,-16.735400264288284,-16.735400264288284,-16.735399999999998,0 +coef_joint_walk_transit_ASC_sr3p_othmaint,-4.0140180305790336,-4.0140180305790336,-3.9563000000000001,0 +coef_joint_walk_transit_ASC_sr3p_shopping,-25.595300000014014,-25.595300000014014,-25.595300000000002,0 +coef_joint_walk_transit_ASC_sr3p_social,-34.7378,-34.7378,-34.7378,0 +coef_joint_walk_transit_ASC_sr3p_work_univ_school_escort_atwork,0,0,0,0 +coef_joint_walk_transit_ASC_walk_eatout,1.1571199957158329,1.1571199957158329,2.3016999999999999,0 +coef_joint_walk_transit_ASC_walk_othdiscr,-0.043211155305850707,-0.043211155305850707,-0.0023999999999999998,0 +coef_joint_walk_transit_ASC_walk_othmaint,-5.4736104658626115,-5.4736104658626115,1.1876,0 +coef_joint_walk_transit_ASC_walk_shopping,-5.9428639820608167,-5.9428639820608167,-0.54720000000000002,0 +coef_joint_walk_transit_ASC_walk_social,-2.2714573374616625,-2.2714573374616625,-2.1301000000000001,0 +coef_joint_walk_transit_ASC_walk_work_univ_school_escort_atwork,0,0,0,0 +coef_nest_AUTO,0.71999999999999997,0.71999999999999997,0.71999999999999997,1 +coef_nest_AUTO_DRIVEALONE,0.34999999999999998,0.34999999999999998,0.34999999999999998,1 +coef_nest_AUTO_SHAREDRIDE2,0.34999999999999998,0.34999999999999998,0.34999999999999998,1 +coef_nest_AUTO_SHAREDRIDE3,0.34999999999999998,0.34999999999999998,0.34999999999999998,1 +coef_nest_NONMOTORIZED,0.71999999999999997,0.71999999999999997,0.71999999999999997,1 +coef_nest_RIDEHAIL,0.35999999999999999,0.35999999999999999,0.35999999999999999,1 +coef_nest_TRANSIT,0.71999999999999997,0.71999999999999997,0.71999999999999997,1 +coef_nest_TRANSIT_DRIVEACCESS,0.5,0.5,0.5,1 +coef_nest_TRANSIT_WALKACCESS,0.5,0.5,0.5,1 +coef_ride_hail_ASC_sr2_eatout_social_othdiscr,-6.4237650755245772,-6.4237650755245772,-5.9691999999999998,0 +coef_ride_hail_ASC_sr2_escort_shopping_othmaint,-8.6681239587327461,-8.6681239587327461,-5.6482999999999999,0 +coef_ride_hail_ASC_sr2_school,-9.8588042940530691,-9.8588042940530691,-1.5869,0 +coef_ride_hail_ASC_sr2_univ,-4.3372000000000002,-4.3372000000000002,-4.3372000000000002,0 +coef_ride_hail_ASC_sr2_work,-8.7370618957514985,-8.7370618957514985,-6.1079999999999997,0 +coef_ride_hail_ASC_sr3p_eatout_social_othdiscr,-6.8871198658131894,-6.8871198658131894,-6.7199,0 +coef_ride_hail_ASC_sr3p_school,-7.667321296853344,-7.667321296853344,-2.5362,0 +coef_ride_hail_ASC_sr3p_univ,-4.9219999999999997,-4.9219999999999997,-4.9219999999999997,0 +coef_ride_hail_ASC_sr3p_work_escort_shopping_othmaint_atwork,-8.4993141583621394,-8.4993141583621394,-7,0 +coef_ride_hail_ASC_taxi_eatout_social_othdiscr,-2.5631373967196924,-2.5631373967196924,-2.5543,0 +coef_ride_hail_ASC_taxi_escort_shopping_othmaint,-3.6639503613758153,-3.6639503613758153,-3.6629,0 +coef_ride_hail_ASC_taxi_school,-1.9540410876610597,-1.9540410876610597,-0.58689999999999998,0 +coef_ride_hail_ASC_taxi_univ,-1.5993999999999999,-1.5993999999999999,-1.5993999999999999,0 +coef_ride_hail_ASC_taxi_work,-2.4992280746351052,-2.4992280746351052,-2.3849999999999998,0 +coef_ride_hail_ASC_tnc_shared,6.4746604585247001,6.4746604585247001,0,0 +coef_ride_hail_ASC_tnc_single_eatout_social_othdiscr,7.2023280939010208,7.2023280939010208,0.82740000000000002,0 +coef_ride_hail_ASC_tnc_single_escort_shopping_othmaint,7.4263660209874116,7.4263660209874116,0.78790000000000004,0 +coef_ride_hail_ASC_tnc_single_school,6.9003930265898461,6.9003930265898461,0.3201,0 +coef_ride_hail_ASC_tnc_single_univ,0.1081,0.1081,0.1081,0 +coef_ride_hail_ASC_tnc_single_work,7.1906030498215934,7.1906030498215934,0.73499999999999999,0 +coef_ride_hail_ASC_walk_eatout_social_othdiscr,-8.2700256968569796,-8.2700256968569796,-3.3603000000000001,0 +coef_ride_hail_ASC_walk_school,-13.75516439764165,-13.75516439764165,0.245,0 +coef_ride_hail_ASC_walk_transit,5.320919867286813,5.320919867286813,0,0 +coef_ride_hail_ASC_walk_univ_escort_shopping_othmaint,-7.9623896833175234,-7.9623896833175234,-7,0 +coef_ride_hail_ASC_walk_work,4.9774767261374491,4.9774767261374491,0.2858,0 +coef_sov_ASC_rh_escort_shopping_eatout_othmaint_social_othdiscr,0,0,0,0 +coef_sov_ASC_rh_school,-10.949190676763848,-10.949190676763848,-5.6548999999999996,0 +coef_sov_ASC_rh_univ,-6.649,-6.649,-6.649,0 +coef_sov_ASC_rh_work_atwork,-7,-7,-7,0 +coef_sov_ASC_sr2_escort,0,0,0,0 +coef_sov_ASC_sr2_work_univ_school_shopping_eatout_othmaint_social_othdiscr_atwork,-999,-999,-999,0 +coef_sov_ASC_sr3p_escort,0,0,0,0 +coef_sov_ASC_sr3p_work_univ_school_shopping_eatout_othmaint_social_othdiscr_atwork,-999,-999,-999,0 +coef_sov_ASC_walk_eatout,-2.6351638383156661,-2.6351638383156661,-1.3443000000000001,0 +coef_sov_ASC_walk_escort,0,0,0,0 +coef_sov_ASC_walk_othdiscr,-4.9362989098824706,-4.9362989098824706,-1.5507,0 +coef_sov_ASC_walk_othmaint,-4.4203686413898176,-4.4203686413898176,-1.2992999999999999,0 +coef_sov_ASC_walk_school,-3.1150166914376998,-3.1150166914376998,-71.8977,0 +coef_sov_ASC_walk_shopping,-3.790711593714617,-3.790711593714617,-1.4765999999999999,0 +coef_sov_ASC_walk_social,-15.183480636962726,-15.183480636962726,-1.8077000000000001,0 +coef_sov_ASC_walk_univ,-1.0579000000000001,-1.0579000000000001,-1.0579000000000001,0 +coef_sov_ASC_walk_work,-3.0071231001560492,-3.0071231001560492,-0.83979999999999999,0 +coef_sr2_ASC_rh_univ,-6.6897000000000002,-6.6897000000000002,-6.6897000000000002,0 +coef_sr2_ASC_rh_work_school_escort_shopping_eatout_othmaint_social_othdiscr_atwork,-7,-7,-7,0 +coef_sr2_ASC_sr2_eatout,1.0915911218889376,1.0915911218889376,0.99709999999999999,0 +coef_sr2_ASC_sr2_escort,0.4783058163607723,0.4783058163607723,0.3533,0 +coef_sr2_ASC_sr2_othdiscr,0.84570279022463457,0.84570279022463457,0.74780000000000002,0 +coef_sr2_ASC_sr2_othmaint,0.92430088713320557,0.92430088713320557,0.85740000000000005,0 +coef_sr2_ASC_sr2_school,-0.55142467432696085,-0.55142467432696085,-1.9335,0 +coef_sr2_ASC_sr2_shopping,1.7357779332652892,1.7357779332652892,1.3765000000000001,0 +coef_sr2_ASC_sr2_social,0.75821484443712639,0.75821484443712639,0.56630000000000003,0 +coef_sr2_ASC_sr2_univ,0.4304,0.4304,0.4304,0 +coef_sr2_ASC_sr2_work,0.18734725740026195,0.18734725740026195,0.0149,0 +coef_sr2_ASC_sr3p,-999,-999,-999,0 +coef_sr2_ASC_walk_eatout,-4.5472515289454529,-4.5472515289454529,-0.072900000000000006,0 +coef_sr2_ASC_walk_escort,-23.318883212926828,-23.318883212926828,-2.0528,0 +coef_sr2_ASC_walk_othdiscr,-2.4714996184390858,-2.4714996184390858,-0.026800000000000001,0 +coef_sr2_ASC_walk_othmaint,-3.1513689512096983,-3.1513689512096983,-0.59889999999999999,0 +coef_sr2_ASC_walk_school,-2.0520641973448814,-2.0520641973448814,-1.0362,0 +coef_sr2_ASC_walk_shopping,-3.6616557867959929,-3.6616557867959929,-0.11169999999999999,0 +coef_sr2_ASC_walk_social,-2.8345061083015142,-2.8345061083015142,-0.79320000000000002,0 +coef_sr2_ASC_walk_univ,1.3041,1.3041,1.3041,0 +coef_sr2_ASC_walk_work,-2.2227044743770445,-2.2227044743770445,0.126,0 +coef_sr3p_ASC_rh_school,-10.730125238227592,-10.730125238227592,-6.6714000000000002,0 +coef_sr3p_ASC_rh_univ_escort_shopping_eatout_othmaint_social_othdiscr,-7,-7,-7,0 +coef_sr3p_ASC_rh_work,-71.917699999999996,-71.917699999999996,-71.917699999999996,0 +coef_sr3p_ASC_sr2_eatout,-0.22504507680807895,-0.22504507680807895,-0.31780000000000003,0 +coef_sr3p_ASC_sr2_escort,-0.21630087392009059,-0.21630087392009059,-0.26819999999999999,0 +coef_sr3p_ASC_sr2_othdiscr,-0.42794642963477558,-0.42794642963477558,-0.61419999999999997,0 +coef_sr3p_ASC_sr2_othmaint,0.027657045664653299,0.027657045664653299,-0.29580000000000001,0 +coef_sr3p_ASC_sr2_school,-1.0402498584452382,-1.0402498584452382,-2.7406999999999999,0 +coef_sr3p_ASC_sr2_shopping,0.32506049110749652,0.32506049110749652,-0.078100000000000003,0 +coef_sr3p_ASC_sr2_social,-0.13140596327177012,-0.13140596327177012,-0.15559999999999999,0 +coef_sr3p_ASC_sr2_univ,-0.31169999999999998,-0.31169999999999998,-0.31169999999999998,0 +coef_sr3p_ASC_sr2_work,-0.96412449274578071,-0.96412449274578071,-1.1956,0 +coef_sr3p_ASC_sr3p_eatout,1.4628559194582083,1.4628559194582083,1.3323,0 +coef_sr3p_ASC_sr3p_escort,0.88601825802048151,0.88601825802048151,0.73580000000000001,0 +coef_sr3p_ASC_sr3p_othdiscr,0.83449788039660122,0.83449788039660122,0.73980000000000001,0 +coef_sr3p_ASC_sr3p_othmaint,1.1154991293213483,1.1154991293213483,0.95269999999999999,0 +coef_sr3p_ASC_sr3p_school,0.17070219167279393,0.17070219167279393,-1.7718,0 +coef_sr3p_ASC_sr3p_shopping,1.6317620662617456,1.6317620662617456,1.3394999999999999,0 +coef_sr3p_ASC_sr3p_social,1.2011521984245512,1.2011521984245512,0.83309999999999995,0 +coef_sr3p_ASC_sr3p_univ,0.62929999999999997,0.62929999999999997,0.62929999999999997,0 +coef_sr3p_ASC_sr3p_work,-0.0078556547449509153,-0.0078556547449509153,-0.18360000000000001,0 +coef_sr3p_ASC_walk_eatout,-2.5139966855713642,-2.5139966855713642,-0.043400000000000001,0 +coef_sr3p_ASC_walk_escort,-3.4006765281458122,-3.4006765281458122,-1.0075000000000001,0 +coef_sr3p_ASC_walk_othdiscr,-5.8689862851164607,-5.8689862851164607,-0.5272,0 +coef_sr3p_ASC_walk_othmaint,-5.0613355985663731,-5.0613355985663731,0.042200000000000001,0 +coef_sr3p_ASC_walk_school,-2.4681086096393896,-2.4681086096393896,-1.2126999999999999,0 +coef_sr3p_ASC_walk_shopping,-3.9238148057027744,-3.9238148057027744,-0.50790000000000002,0 +coef_sr3p_ASC_walk_social,-3.0951059771109648,-3.0951059771109648,-0.31340000000000001,0 +coef_sr3p_ASC_walk_univ,1.6793,1.6793,1.6793,0 +coef_sr3p_ASC_walk_work,-2.3560377610366339,-2.3560377610366339,0.21709999999999999,0 +coef_walk_ASC_rh,-7,-7,-7,0 +coef_walk_transit_ASC_commuter_escort,0.54420000000000002,0.54420000000000002,0.54420000000000002,0 +coef_walk_transit_ASC_commuter_shopping_eatout_othmaint_social_othdiscr_atwork,0.51290000000000002,0.51290000000000002,0.51290000000000002,0 +coef_walk_transit_ASC_commuter_univ_school,0.90820000000000001,0.90820000000000001,0.90820000000000001,0 +coef_walk_transit_ASC_commuter_work,0.4012,0.4012,0.4012,0 +coef_walk_transit_ASC_express_escort,0.75470000000000004,0.75470000000000004,0.75470000000000004,0 +coef_walk_transit_ASC_express_shopping_eatout_othmaint_social_othdiscr_atwork,0.66479999999999995,0.66479999999999995,0.66479999999999995,0 +coef_walk_transit_ASC_express_univ_school,0.32240000000000002,0.32240000000000002,0.32240000000000002,0 +coef_walk_transit_ASC_express_work,-0.35539999999999999,-0.35539999999999999,-0.35539999999999999,0 +coef_walk_transit_ASC_ferry_escort,0.60050000000000003,0.60050000000000003,0.60050000000000003,0 +coef_walk_transit_ASC_ferry_shopping_eatout_othmaint_social_othdiscr_atwork,0.64659999999999995,0.64659999999999995,0.64659999999999995,0 +coef_walk_transit_ASC_ferry_univ_school,1.7237,1.7237,1.7237,0 +coef_walk_transit_ASC_ferry_work,0.52769999999999995,0.52769999999999995,0.52769999999999995,0 +coef_walk_transit_ASC_heavyrail_escort,0.82721493724592188,0.82721493724592188,0.56730000000000003,0 +coef_walk_transit_ASC_heavyrail_shopping_eatout_othmaint_social_othdiscr_atwork,0.92635472370348126,0.92635472370348126,0.5403,0 +coef_walk_transit_ASC_heavyrail_univ_school,0.86667504489837865,0.86667504489837865,0.84899999999999998,0 +coef_walk_transit_ASC_heavyrail_work,0.5025352261009528,0.5025352261009528,0.3538,0 +coef_walk_transit_ASC_lightrail_escort,1.1220737240827967,1.1220737240827967,0.5252,0 +coef_walk_transit_ASC_lightrail_shopping_eatout_othmaint_social_othdiscr_atwork,0.83144252485479686,0.83144252485479686,0.53920000000000001,0 +coef_walk_transit_ASC_lightrail_univ_school,1.5673106432418389,1.5673106432418389,1.4436,0 +coef_walk_transit_ASC_lightrail_work,0.63258933455537403,0.63258933455537403,0.46210000000000001,0 +coef_walk_transit_ASC_rh_eatout_social_othdiscr,-2.6606459058042766,-2.6606459058042766,-4.7507999999999999,0 +coef_walk_transit_ASC_rh_escort_shopping_othmaint,-2.3584519726828503,-2.3584519726828503,-3.1135999999999999,0 +coef_walk_transit_ASC_rh_school,-4.3651480868436616,-4.3651480868436616,-7,0 +coef_walk_transit_ASC_rh_univ,-4.2690999999999999,-4.2690999999999999,-4.2690999999999999,0 +coef_walk_transit_ASC_rh_work,-2.8694950408844635,-2.8694950408844635,-3.7408000000000001,0 +coef_walk_transit_ASC_sr2_eatout,-2.0166783466764731,-2.0166783466764731,-3.1434000000000002,0 +coef_walk_transit_ASC_sr2_escort,-0.99918778660088436,-0.99918778660088436,-2.6284000000000001,0 +coef_walk_transit_ASC_sr2_othdiscr,-1.239023652712798,-1.239023652712798,-2.7589999999999999,0 +coef_walk_transit_ASC_sr2_othmaint,-34.674600000000112,-34.674600000000112,-34.674599999999998,0 +coef_walk_transit_ASC_sr2_school,-2.274826392672725,-2.274826392672725,-4.2961,0 +coef_walk_transit_ASC_sr2_shopping,-2.1328304552358719,-2.1328304552358719,-4.0114999999999998,0 +coef_walk_transit_ASC_sr2_social,-2.0833502428062123,-2.0833502428062123,-3.3662999999999998,0 +coef_walk_transit_ASC_sr2_univ,-4.0049999999999999,-4.0049999999999999,-4.0049999999999999,0 +coef_walk_transit_ASC_sr2_work,-2.2668862736328519,-2.2668862736328519,-3.6631,0 +coef_walk_transit_ASC_sr3p_eatout,-2.5264121576158045,-2.5264121576158045,-3.8519999999999999,0 +coef_walk_transit_ASC_sr3p_escort,-5.8381371662273835,-5.8381371662273835,-3.2073999999999998,0 +coef_walk_transit_ASC_sr3p_othdiscr,-1.2063771576374867,-1.2063771576374867,-2.5125999999999999,0 +coef_walk_transit_ASC_sr3p_othmaint,-29.385800000282099,-29.385800000282099,-29.3858,0 +coef_walk_transit_ASC_sr3p_school,-2.4112913709689163,-2.4112913709689163,-3.8664999999999998,0 +coef_walk_transit_ASC_sr3p_shopping,-9.3867562985269899,-9.3867562985269899,-4.3852000000000002,0 +coef_walk_transit_ASC_sr3p_social,-21.630900000230085,-21.630900000230085,-21.6309,0 +coef_walk_transit_ASC_sr3p_univ,-28.697199999999999,-28.697199999999999,-28.697199999999999,0 +coef_walk_transit_ASC_sr3p_work,-2.6637022892916695,-2.6637022892916695,-4.1314000000000002,0 +coef_walk_transit_ASC_walk_eatout,0.16644232569851822,0.16644232569851822,1.3504,0 +coef_walk_transit_ASC_walk_escort,-7.2572232561591434,-7.2572232561591434,-0.99739999999999995,0 +coef_walk_transit_ASC_walk_othdiscr,-0.97975419372738359,-0.97975419372738359,-0.49969999999999998,0 +coef_walk_transit_ASC_walk_othmaint,-0.28905978556563527,-0.28905978556563527,0.7248,0 +coef_walk_transit_ASC_walk_school,-1.4956108248781241,-1.4956108248781241,-1.1828000000000001,0 +coef_walk_transit_ASC_walk_shopping,-0.81195924640993355,-0.81195924640993355,-0.1943,0 +coef_walk_transit_ASC_walk_social,-2.3212936443153995,-2.3212936443153995,-0.7651,0 +coef_walk_transit_ASC_walk_univ,-1.0310999999999999,-1.0310999999999999,-1.0310999999999999,0 +coef_walk_transit_ASC_walk_work,-0.39145632958685811,-0.39145632958685811,0.44319999999999998,0 diff --git a/activitysim/estimation/test/test_larch_estimation/test_stop_freq_model.csv b/activitysim/estimation/test/test_larch_estimation/test_stop_freq_model.csv index fe3ad8745..8226d916b 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_stop_freq_model.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_stop_freq_model.csv @@ -1,189 +1,189 @@ -,value,initvalue,nullvalue,minimum,maximum,best -coef_alternative_specific_constant_for_outbound_stops_1out_0in,-0.64459225156448208,-0.83299999999999996,0,,,-0.64459225156448208 -coef_alternative_specific_constant_for_outbound_stops_2out_0in,-2.4255802366653585,-2.613,0,,,-2.4255802366653585 -coef_alternative_specific_constant_for_outbound_stops_3out_0in,-3.5820111930695417,-3.9340000000000002,0,,,-3.5820111930695417 -coef_alternative_specific_constant_for_return_stops_0out_1in,-0.3361407605068179,-0.44500000000000001,0,,,-0.3361407605068179 -coef_alternative_specific_constant_for_return_stops_0out_2in,-1.4776978296906871,-1.7749999999999999,0,,,-1.4776978296906871 -coef_alternative_specific_constant_for_return_stops_0out_3in,-1.8942287851285506,-2.1389999999999998,0,,,-1.8942287851285506 -coef_alternative_specific_constant_for_the_total_number_of_stops_0out_2in,-0.066082964956457158,0,0,,,-0.066082964956457158 -coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in,0.39410022765664782,0.69499999999999995,0,,,0.39410022765664782 -coef_am_peak_departure_between_6am_and_7_am_including_interacted_with_outbound_tours,-1.9991650147668323,-1.9299999999999999,0,,,-1.9991650147668323 -coef_dummy_for_all_stops_made_by_transit,-0.67359832175323664,-0.69999999999999996,0,,,-0.67359832175323664 -coef_dummy_for_distance_in_miles,0.044964434234324543,0.01,0,,,0.044964434234324543 -coef_dummy_for_distance_less_than_20_miles,-0.706160965748858,-0.22,0,,,-0.706160965748858 -coef_dummy_for_female,0.28231394503923868,0.22,0,,,0.28231394503923868 -coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_11_hours,0.71316112803981435,0.59999999999999998,0,,,0.71316112803981435 -coef_dummy_for_walking_to_all_stops,-1.4873003617932004,-1.54,0,,,-1.4873003617932004 -coef_evening_arrival_19_00_interacted_with_return_tours,0.60673724793430617,0.31,0,,,0.60673724793430617 -coef_high_income_hh,0.24000000000001878,0.23999999999999999,0,,,0.24000000000001878 -coef_mid_to_high_income_hh,0.22999999999999904,0.23000000000000001,0,,,0.22999999999999904 -coef_middle_to_low_income_hh,0.16999999999999266,0.17000000000000001,0,,,0.16999999999999266 -coef_no_stops_if_tour_mode_is_drivetransit,-999,-999,0,,,-999 -coef_num_kids_between_5_and_15_including_years_old,0.092924351471183969,0.080000000000000002,0,,,0.092924351471183969 -coef_number_of_adults_16_years_old_,0.077365010457442138,0.029999999999999999,0,,,0.077365010457442138 -coef_number_of_cars_number_of_workers,-0.066249623271299782,0.16,0,,,-0.066249623271299782 -coef_number_of_escort_tours_tours_undertaken_by_the_person,0.096330730862920849,0.20000000000000001,0,,,0.096330730862920849 -coef_number_of_hh_persons,-0.33185226515031135,-0.31,0,,,-0.33185226515031135 -coef_number_of_school_tours_tours_undertaken_by_the_person,0.08642823107614464,-1.55,0,,,0.08642823107614464 -coef_number_of_shop_tours_undertaken_by_the_houshold,-0.32741940681713538,-0.050000000000000003,0,,,-0.32741940681713538 -coef_number_of_students_in_hh,0.31650418957116999,0.20999999999999999,0,,,0.31650418957116999 -coef_number_of_subtours_in_the_tour,0.33666132961145517,0.19,0,,,0.33666132961145517 -coef_number_of_university_tours_tours_undertaken_by_the_person,-0.48000000000000226,-0.47999999999999998,0,,,-0.48000000000000226 -coef_number_of_work_tours_undertaken_by_the_person,-0.17466645120795349,-0.14999999999999999,0,,,-0.17466645120795349 -coef_presence_of_kids_between_0_and_4_including_years_old,0.56261491842472322,0.73999999999999999,0,,,0.56261491842472322 -coef_presence_of_kids_between_5_and_15_including_years_old,0.1165493262082634,0.26000000000000001,0,,,0.1165493262082634 -coef_alternative_specific_constant_for_outbound_stops_1out_0in_school,-1.7790649191402255,-2.1230000000000002,0,,,-1.7790649191402255 -coef_alternative_specific_constant_for_outbound_stops_2out_0in_school,-4.234917600900892,-3.798,0,,,-4.234917600900892 -coef_alternative_specific_constant_for_outbound_stops_3out_0in_school,-6.1101913112134891,-5.8499999999999996,0,,,-6.1101913112134891 -coef_alternative_specific_constant_for_return_stops_0out_1in_school,-1.2575756776155038,-1.206,0,,,-1.2575756776155038 -coef_alternative_specific_constant_for_return_stops_0out_2in_school,-2.7008487973600204,-2.6720000000000002,0,,,-2.7008487973600204 -coef_alternative_specific_constant_for_return_stops_0out_3in_school,-3.1227065529446167,-3.3639999999999999,0,,,-3.1227065529446167 -coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in,1.474045133717242,0.70099999999999996,0,,,1.474045133717242 -coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_school,1.992911512841014,1.135,0,,,1.992911512841014 -coef_arrival_later_than_17_00_,1.3670454388826592,1.8376999999999999,0,,,1.3670454388826592 -coef_dummy_for_distance_in_miles_school,0.095083267583630102,0.043799999999999999,0,,,0.095083267583630102 -coef_dummy_for_female_school,0.68909925924380133,0.40989999999999999,0,,,0.68909925924380133 -coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours_,1.9145027660467904,0.95489999999999997,0,,,1.9145027660467904 -coef_dummy_for_walking_to_all_stops_school,-1.514711575382329,-1.8163,0,,,-1.514711575382329 -coef_number_of_cars_number_of_workers_school,0.29163991408877671,0.53310000000000002,0,,,0.29163991408877671 -coef_number_of_escort_tours_tours_undertaken_by_the_person_school,2.311650198005148,1.2364999999999999,0,,,2.311650198005148 -coef_number_of_hh_persons_school,-0.59762555971611364,-0.50600000000000001,0,,,-0.59762555971611364 -coef_presence_of_kids_between_5_and_15_including_years_old_school,0.025364840519008454,0.32990000000000003,0,,,0.025364840519008454 -coef_alternative_specific_constant_for_outbound_stops_1out_0in_univ,-2.1635923818442357,-2.6280000000000001,0,,,-2.1635923818442357 -coef_alternative_specific_constant_for_outbound_stops_2out_0in_univ,-3.922683293550401,-3.7410000000000001,0,,,-3.922683293550401 -coef_alternative_specific_constant_for_outbound_stops_3out_0in_univ,-4.4868172910452992,-4.9809999999999999,0,,,-4.4868172910452992 -coef_alternative_specific_constant_for_return_stops_0out_1in_univ,-1.5298270302866508,-2.0030000000000001,0,,,-1.5298270302866508 -coef_alternative_specific_constant_for_return_stops_0out_2in_univ,-3.3006601948863188,-3.5099999999999998,0,,,-3.3006601948863188 -coef_alternative_specific_constant_for_return_stops_0out_3in_univ,-3.7075364155245767,-3.677,0,,,-3.7075364155245767 -coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_univ,1.8522535636157311,1.272,0,,,1.8522535636157311 -coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_univ,1.8679561735778554,1.871,0,,,1.8679561735778554 -coef_arrival_later_than_17_00__univ,0.38609418401942114,0.38900000000000001,0,,,0.38609418401942114 -coef_dummy_for_female_univ,0.51916166319197454,0.7349,0,,,0.51916166319197454 -coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__univ,1.0828661743516874,0.84340000000000004,0,,,1.0828661743516874 -coef_hh_accesibility_for_inbound_tours_interaction,0.24105038323693603,0.24809999999999999,0,,,0.24105038323693603 -coef_number_of_escort_tours_tours_undertaken_by_the_person_univ,1.8575681307186125,0.90180000000000005,0,,,1.8575681307186125 -coef_number_of_hh_persons_univ,-0.33066321661527537,-0.28270000000000001,0,,,-0.33066321661527537 -coef_number_of_vehicles,0.26364695030485774,0.17030000000000001,0,,,0.26364695030485774 -coef_presence_of_kids_between_5_and_15_including_years_old_univ,-0.044568923553371873,0.68230000000000002,0,,,-0.044568923553371873 -coef_alternative_specific_constant_for_outbound_stops_1out_0in_social,-2.311541928791784,-1.081,0,,,-2.311541928791784 -coef_alternative_specific_constant_for_outbound_stops_2out_0in_social,-3.971643113248795,-2.8740000000000001,0,,,-3.971643113248795 -coef_alternative_specific_constant_for_outbound_stops_3out_0in_social,-14.469243911405519,-4.5519999999999996,0,,,-14.469243911405519 -coef_alternative_specific_constant_for_outbound_stops_on_joint_tours_1out_0in,-2.3802074504942019,-1.7829999999999999,0,,,-2.3802074504942019 -coef_alternative_specific_constant_for_outbound_stops_on_joint_tours_2out_0in,-4.719796104655666,-4.0670000000000002,0,,,-4.719796104655666 -coef_alternative_specific_constant_for_outbound_stops_on_joint_tours_3out_0in,-11.749677886071149,-4.9980000000000002,0,,,-11.749677886071149 -coef_alternative_specific_constant_for_return_stops_0out_1in_social,0.20587483859873654,-1.1200000000000001,0,,,0.20587483859873654 -coef_alternative_specific_constant_for_return_stops_0out_2in_social,-2.5883343811753692,-2.7639999999999998,0,,,-2.5883343811753692 -coef_alternative_specific_constant_for_return_stops_0out_3in_social,-3.3206409198297089,-3.4510000000000001,0,,,-3.3206409198297089 -coef_alternative_specific_constant_for_return_stops_on_joint_tours_0out_1in,-1.6522833462248787,-1.329,0,,,-1.6522833462248787 -coef_alternative_specific_constant_for_return_stops_on_joint_tours_0out_2in,-4.1415469266822509,-2.7960000000000003,0,,,-4.1415469266822509 -coef_alternative_specific_constant_for_return_stops_on_joint_tours_0out_3in,-4.0471873952483204,-3.379,0,,,-4.0471873952483204 -coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_social,2.4766471322901977,0.496,0,,,2.4766471322901977 -coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_social,-1.7322797167348338,0.88200000000000001,0,,,-1.7322797167348338 -coef_alternative_specific_constant_for_the_total_number_of_stops_on_joint_tours_0out_2in,0.33004028360351806,0,0,,,0.33004028360351806 -coef_alternative_specific_constant_for_the_total_number_of_stops_on_joint_tours_1out_3in,-4.3574765624568856,0.51800000000000002,0,,,-4.3574765624568856 -coef_alternative_specific_constant_for_the_total_number_of_stops_on_joint_tours_2out_3in,-1.4567085446015828,1.4970000000000001,0,,,-1.4567085446015828 -coef_arrival_later_than_17_00__social,-0.46270836809978866,-0.45000000000000001,0,,,-0.46270836809978866 -coef_at_least_one_kid_and_one_adult_participate_in_the_tour,1.9188835397128035,0.37,0,,,1.9188835397128035 -coef_dummy_for_a_return_visiting_tour,-1.5149329165512258,-0.64000000000000001,0,,,-1.5149329165512258 -coef_dummy_for_a_visiting_tour_with_both_outbound_and_return_leg,0.47207475952054606,0.44,0,,,0.47207475952054606 -coef_dummy_for_an_outbound_visiting_tour,0.23539836860732627,-0.68999999999999995,0,,,0.23539836860732627 -coef_dummy_for_distance_in_miles_social,-0.072029213636538594,-0.01,0,,,-0.072029213636538594 -coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_3_hours_,1.1553718422199695,1.3100000000000001,0,,,1.1553718422199695 -coef_dummy_for_walking_to_all_stops_social,-2.0728871373961595,-1.73,0,,,-2.0728871373961595 -coef_number_of_persons_participating_in_the_tour_outgoing_stops_interaction,-0.050333392255275736,-0.46000000000000002,0,,,-0.050333392255275736 -coef_number_of_shop_tours_undertaken_by_the_person,-0.17568161789582087,-0.23999999999999999,0,,,-0.17568161789582087 -coef_number_of_vehicles_social,-0.15477794105663009,-0.19,0,,,-0.15477794105663009 -coef_number_of_work_tours_undertaken_by_the_person_social,-0.0089584068199000319,-0.28000000000000003,0,,,-0.0089584068199000319 -coef_alternative_specific_constant_for_outbound_stops_1out_0in_shopping,-1.4838947085615379,-1.339,0,,,-1.4838947085615379 -coef_alternative_specific_constant_for_outbound_stops_2out_0in_shopping,-3.2620315739726551,-3.1099999999999999,0,,,-3.2620315739726551 -coef_alternative_specific_constant_for_outbound_stops_3out_0in_shopping,-4.4603602952393357,-4.4870000000000001,0,,,-4.4603602952393357 -coef_alternative_specific_constant_for_return_stops_0out_1in_shopping,-1.2344970570494438,-1.179,0,,,-1.2344970570494438 -coef_alternative_specific_constant_for_return_stops_0out_2in_shopping,-2.4998350943155576,-2.3050000000000002,0,,,-2.4998350943155576 -coef_alternative_specific_constant_for_return_stops_0out_3in_shopping,-3.0179726864409173,-3.024,0,,,-3.0179726864409173 -coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_shopping,0.51786237531360479,0.252,0,,,0.51786237531360479 -coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_shopping,-0.13999198594270704,0.51400000000000001,0,,,-0.13999198594270704 -coef_dummy_for_distance_in_miles_shopping,0.023954475817419198,0.028899999999999999,0,,,0.023954475817419198 -coef_dummy_for_distance_less_than_5_miles,0.16375057013711192,0.37680000000000002,0,,,0.16375057013711192 -coef_dummy_for_female_shopping,0.33555842166191147,0.1721,0,,,0.33555842166191147 -coef_dummy_for_only_adults_participate_in_the_tour,1.8328392426308462,0.19020000000000001,0,,,1.8328392426308462 -coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__shopping,3.0901330214553973,0.90559999999999996,0,,,3.0901330214553973 -coef_dummy_for_walking_to_all_stops_shopping,-1.8757970066056326,-1.4907999999999999,0,,,-1.8757970066056326 -coef_num_kids_between_5_and_15_including_years_old_shopping,-0.041573431257791199,0.0482,0,,,-0.041573431257791199 -coef_number_of_hh_persons_shopping,-0.086440021903122138,-0.1522,0,,,-0.086440021903122138 -coef_number_of_maintenace_tours_tours_undertaken_by_the_person,-0.32594276341704287,-0.19769999999999999,0,,,-0.32594276341704287 -coef_number_of_shop_tours_undertaken_by_the_houshold_shopping,0.148064037095576,-0.073300000000000004,0,,,0.148064037095576 -coef_number_of_university_tours_tours_undertaken_by_the_person_shopping,-0.67089999999999317,-0.67090000000000005,0,,,-0.67089999999999317 -coef_number_of_work_tours_undertaken_by_the_person_shopping,-0.43852307225491766,-0.54799999999999993,0,,,-0.43852307225491766 -coef_alternative_specific_constant_for_outbound_stops_1out_0in_eatout,-1.8947544828670186,-2.1899999999999999,0,,,-1.8947544828670186 -coef_alternative_specific_constant_for_outbound_stops_2out_0in_eatout,-12.056169150387893,-4.516,0,,,-12.056169150387893 -coef_alternative_specific_constant_for_outbound_stops_3out_0in_eatout,-3.6615505167080027,-5.2549999999999999,0,,,-3.6615505167080027 -coef_alternative_specific_constant_for_return_stops_0out_1in_eatout,-1.7027857761249232,-1.7609999999999999,0,,,-1.7027857761249232 -coef_alternative_specific_constant_for_return_stops_0out_2in_eatout,-2.9579857808480341,-3.6970000000000001,0,,,-2.9579857808480341 -coef_alternative_specific_constant_for_return_stops_0out_3in_eatout,-4.7624817489674145,-4.7169999999999996,0,,,-4.7624817489674145 -coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_eatout,-7.6049863056520284,0.93999999999999995,0,,,-7.6049863056520284 -coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_eatout,-6.3461221747969292,2.0259999999999998,0,,,-6.3461221747969292 -coef_alternative_specific_constant_for_outbound_stops_1out_0in_escort,-2.2250757954780624,-2.173,0,,,-2.2250757954780624 -coef_alternative_specific_constant_for_outbound_stops_2out_0in_escort,-4.7895755848191897,-4.2939999999999996,0,,,-4.7895755848191897 -coef_alternative_specific_constant_for_outbound_stops_3out_0in_escort,-4.7102122245889007,-4.758,0,,,-4.7102122245889007 -coef_alternative_specific_constant_for_return_stops_0out_1in_escort,-1.2974740994833047,-0.96799999999999997,0,,,-1.2974740994833047 -coef_alternative_specific_constant_for_return_stops_0out_2in_escort,-2.384295363242952,-2.4100000000000001,0,,,-2.384295363242952 -coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_escort,-4.200646186979724,-1.8069999999999999,0,,,-4.200646186979724 -coef_dummy_for_distance_less_than_5_miles_escort,0.28109442258515044,0.32000000000000001,0,,,0.28109442258515044 -coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__escort,1.399121270410205,0.58999999999999997,0,,,1.399121270410205 -coef_dummy_for_walking_to_all_stops_escort,-0.33797126945456507,-1.9099999999999999,0,,,-0.33797126945456507 -coef_number_of_escort_tours_tours_undertaken_by_the_person_escort,-0.25348532544405961,-0.14999999999999999,0,,,-0.25348532544405961 -coef_number_of_hh_persons_escort,-0.17640711121772834,-0.23999999999999999,0,,,-0.17640711121772834 -coef_number_of_students_in_hh_escort,0.15956368405077143,0.19,0,,,0.15956368405077143 -coef_number_of_work_tours_undertaken_by_the_person_escort,-0.15468473406122965,-0.28999999999999998,0,,,-0.15468473406122965 -coef_alternative_specific_constant_for_outbound_stops_1out_0in_othmaint,-1.7954028317479085,-1.7609999999999999,0,,,-1.7954028317479085 -coef_alternative_specific_constant_for_outbound_stops_2out_0in_othmaint,-2.9624065700982283,-3.661,0,,,-2.9624065700982283 -coef_alternative_specific_constant_for_outbound_stops_3out_0in_othmaint,-3.5347850519252844,-5.4260000000000002,0,,,-3.5347850519252844 -coef_alternative_specific_constant_for_return_stops_0out_1in_othmaint,-0.31247075228968507,-0.58499999999999996,0,,,-0.31247075228968507 -coef_alternative_specific_constant_for_return_stops_0out_2in_othmaint,-0.55780644045958916,-1.48,0,,,-0.55780644045958916 -coef_alternative_specific_constant_for_return_stops_0out_3in_othmaint,-1.4356606147103497,-2.4620000000000002,0,,,-1.4356606147103497 -coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_othmaint,-0.36815794089018233,0.41399999999999998,0,,,-0.36815794089018233 -coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_othmaint,-9.3990479541430307,0.48799999999999999,0,,,-9.3990479541430307 -coef_dummy_for_distance_in_miles_othmaint,0.10402635612778853,0.027300000000000001,0,,,0.10402635612778853 -coef_dummy_for_distance_less_than_20_miles_,-1.1515269947782993,-0.40799999999999997,0,,,-1.1515269947782993 -coef_dummy_for_female_othmaint,0.25071759069742156,0.30120000000000002,0,,,0.25071759069742156 -coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__othmaint,0.15444184637909519,0.51339999999999997,0,,,0.15444184637909519 -coef_dummy_for_walking_to_all_stops_othmaint,-2.3023894742054765,-1.4329000000000001,0,,,-2.3023894742054765 -coef_middle_to_low_income_hh_,0.16999999999999751,0.17000000000000001,0,,,0.16999999999999751 -coef_number_of_maintenace_tours_undertaken_by_the_houshold,-0.28330678921194874,-0.046800000000000001,0,,,-0.28330678921194874 -coef_number_of_persons_participating_in_the_tour_return_stops_interaction,0.86852209944195768,0.4904,0,,,0.86852209944195768 -coef_number_of_shool_tours_tours_undertaken_by_the_person,-8.3600381729826356,-1.4135,0,,,-8.3600381729826356 -coef_number_of_shop_tours_undertaken_by_the_person_othmaint,-0.2135166522304546,-0.14280000000000001,0,,,-0.2135166522304546 -coef_number_of_university_tours_tours_undertaken_by_the_person_othmaint,-0.62519999999999998,-0.62519999999999998,0,,,-0.62519999999999998 -coef_number_of_work_tours_undertaken_by_the_person_othmaint,-0.37594536286827945,-0.36399999999999999,0,,,-0.37594536286827945 -coef_alternative_specific_constant_for_outbound_stops_1out_0in_othdiscr,-1.4221678878531314,-1.581,0,,,-1.4221678878531314 -coef_alternative_specific_constant_for_outbound_stops_2out_0in_othdiscr,-2.8848210033043737,-3.323,0,,,-2.8848210033043737 -coef_alternative_specific_constant_for_outbound_stops_3out_0in_othdiscr,-4.252076697537615,-4.6230000000000002,0,,,-4.252076697537615 -coef_alternative_specific_constant_for_return_stops_0out_1in_othdiscr,-1.0106467090607749,-0.92100000000000004,0,,,-1.0106467090607749 -coef_alternative_specific_constant_for_return_stops_0out_2in_othdiscr,-2.4905380449227463,-2.3359999999999999,0,,,-2.4905380449227463 -coef_alternative_specific_constant_for_return_stops_0out_3in_othdiscr,-2.9393725902979506,-2.927,0,,,-2.9393725902979506 -coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_othdiscr,0.93746509917896281,0.86299999999999999,0,,,0.93746509917896281 -coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_othdiscr,0.1562826739961867,0.93899999999999995,0,,,0.1562826739961867 -coef_arrival_later_than_17_00__othdiscr,-0.36444328163105733,-0.63829999999999998,0,,,-0.36444328163105733 -coef_dummy_for_distance_in_miles_othdiscr,0.050978615843919654,-0.022499999999999999,0,,,0.050978615843919654 -coef_dummy_for_distance_less_than_10_miles_,-0.041691234906133287,0.37559999999999999,0,,,-0.041691234906133287 -coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__othdiscr,0.24111825316596613,0.83350000000000002,0,,,0.24111825316596613 -coef_dummy_for_walking_to_all_stops_othdiscr,-2.0711353545710396,-2.4578000000000002,0,,,-2.0711353545710396 -coef_number_of_maintenace_tours_tours_undertaken_by_the_person_othdiscr,-0.63013749629210336,-0.3715,0,,,-0.63013749629210336 -coef_number_of_shool_tours_tours_undertaken_by_the_person_othdiscr,-0.60717706214459344,-0.81759999999999999,0,,,-0.60717706214459344 -coef_number_of_shop_tours_undertaken_by_the_person_othdiscr,-0.61831778671278581,-0.629,0,,,-0.61831778671278581 -coef_number_of_work_tours_undertaken_by_the_person_othdiscr,-0.48765485585276552,-0.61529999999999996,0,,,-0.48765485585276552 -coef_alternative_specific_constant_for_outbound_stops_1out_0in_atwork,-3.4794056872571746,-3.8959999999999999,0,,,-3.4794056872571746 -coef_alternative_specific_constant_for_outbound_stops_2out_0in_atwork,-5.1779127909529326,-5.7089999999999996,0,,,-5.1779127909529326 -coef_alternative_specific_constant_for_outbound_stops_3out_0in_atwork,-6.8972239265618009,-7.3610000000000007,0,,,-6.8972239265618009 -coef_alternative_specific_constant_for_return_stops_0out_1in_atwork,-3.4084307916883305,-3.6709999999999998,0,,,-3.4084307916883305 -coef_alternative_specific_constant_for_return_stops_0out_2in_atwork,-5.5993645137153578,-5.3879999999999999,0,,,-5.5993645137153578 -coef_alternative_specific_constant_for_return_stops_0out_3in_atwork,-7.6012050846491075,-6.21,0,,,-7.6012050846491075 -coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_atwork,2.1051947898870833,2.1269999999999998,0,,,2.1051947898870833 -coef_dummy_for_subtour_origin_tour_destination_at_exurban_or_rual_areatypes_6_or_7_,0.27000000000000002,0.27000000000000002,0,,,0.27000000000000002 -coef_middle_to_low_income_hh__atwork,0.60212861030437703,0.45000000000000001,0,,,0.60212861030437703 -coef_number_of_eating_tours_tours_undertaken_by_the_person,-0.2548910504386343,-0.28000000000000003,0,,,-0.2548910504386343 -coef_primary_destination_accessibility_log_of_it_,0.17070563536066408,0.17999999999999999,0,,,0.17070563536066408 -coef_subtour_departure_less_than_or_equal_to_11am,0.2690647561783549,0.31,0,,,0.2690647561783549 -coef_subtour_distance_in_miles_from_tour_destination_to_subtour_primary_destination_one_way_,-0.15252472133506134,0.02,0,,,-0.15252472133506134 -coef_subtour_duration_in_hours_integer_,0.68175040347788651,0.56000000000000005,0,,,0.68175040347788651 -coef_subtour_return_time_greater_or_equal_to_2pm,1.5555725209500013,0.34000000000000002,0,,,1.5555725209500013 +param_name,value,best,initvalue,nullvalue +coef_alternative_specific_constant_for_outbound_stops_1out_0in,-0.64664292294462322,-0.64664292294462322,-0.83300000429153442,0 +coef_alternative_specific_constant_for_outbound_stops_1out_0in_atwork,-3.4646908445777185,-3.4646908445777185,-3.8959999084472656,0 +coef_alternative_specific_constant_for_outbound_stops_1out_0in_eatout,-1.9002755809567333,-1.9002755809567333,-2.190000057220459,0 +coef_alternative_specific_constant_for_outbound_stops_1out_0in_escort,-2.2236727981595754,-2.2236727981595754,-2.1730000972747803,0 +coef_alternative_specific_constant_for_outbound_stops_1out_0in_othdiscr,-1.4225160376379478,-1.4225160376379478,-1.5809999704360962,0 +coef_alternative_specific_constant_for_outbound_stops_1out_0in_othmaint,-1.7982672995567395,-1.7982672995567395,-1.7610000371932983,0 +coef_alternative_specific_constant_for_outbound_stops_1out_0in_school,-1.7843866978905401,-1.7843866978905401,-2.122999906539917,0 +coef_alternative_specific_constant_for_outbound_stops_1out_0in_shopping,-1.4865329275382189,-1.4865329275382189,-1.3389999866485596,0 +coef_alternative_specific_constant_for_outbound_stops_1out_0in_social,-2.4183081291403341,-2.4183081291403341,-1.0809999704360962,0 +coef_alternative_specific_constant_for_outbound_stops_1out_0in_univ,-2.1599604516652944,-2.1599604516652944,-2.628000020980835,0 +coef_alternative_specific_constant_for_outbound_stops_2out_0in,-2.4294460976186265,-2.4294460976186265,-2.6129999160766602,0 +coef_alternative_specific_constant_for_outbound_stops_2out_0in_atwork,-5.162092909819334,-5.162092909819334,-5.7090001106262207,0 +coef_alternative_specific_constant_for_outbound_stops_2out_0in_eatout,-12.348235464701929,-12.348235464701929,-4.5159997940063477,0 +coef_alternative_specific_constant_for_outbound_stops_2out_0in_escort,-4.7869220327015922,-4.7869220327015922,-4.2940001487731934,0 +coef_alternative_specific_constant_for_outbound_stops_2out_0in_othdiscr,-2.8878858646220089,-2.8878858646220089,-3.3229999542236328,0 +coef_alternative_specific_constant_for_outbound_stops_2out_0in_othmaint,-2.9665698636514888,-2.9665698636514888,-3.6610000133514404,0 +coef_alternative_specific_constant_for_outbound_stops_2out_0in_school,-4.2448419370273394,-4.2448419370273394,-3.7980000972747803,0 +coef_alternative_specific_constant_for_outbound_stops_2out_0in_shopping,-3.2674224134549679,-3.2674224134549679,-3.1099998950958252,0 +coef_alternative_specific_constant_for_outbound_stops_2out_0in_social,-4.083061579914375,-4.083061579914375,-2.874000072479248,0 +coef_alternative_specific_constant_for_outbound_stops_2out_0in_univ,-3.9124510768537806,-3.9124510768537806,-3.7409999370574951,0 +coef_alternative_specific_constant_for_outbound_stops_3out_0in,-3.5882985172757271,-3.5882985172757271,-3.9340000152587891,0 +coef_alternative_specific_constant_for_outbound_stops_3out_0in_atwork,-6.8802912288167422,-6.8802912288167422,-7.3610000610351562,0 +coef_alternative_specific_constant_for_outbound_stops_3out_0in_eatout,-3.6740988604843077,-3.6740988604843077,-5.255000114440918,0 +coef_alternative_specific_constant_for_outbound_stops_3out_0in_escort,-4.7119993374061275,-4.7119993374061275,-4.7579998970031738,0 +coef_alternative_specific_constant_for_outbound_stops_3out_0in_othdiscr,-4.2547457784063534,-4.2547457784063534,-4.6230001449584961,0 +coef_alternative_specific_constant_for_outbound_stops_3out_0in_othmaint,-3.5457191991847736,-3.5457191991847736,-5.4260001182556152,0 +coef_alternative_specific_constant_for_outbound_stops_3out_0in_school,-6.1404126227480189,-6.1404126227480189,-5.8499999046325684,0 +coef_alternative_specific_constant_for_outbound_stops_3out_0in_shopping,-4.4728129557270648,-4.4728129557270648,-4.4869999885559082,0 +coef_alternative_specific_constant_for_outbound_stops_3out_0in_social,-14.181486266726454,-14.181486266726454,-4.5520000457763672,0 +coef_alternative_specific_constant_for_outbound_stops_3out_0in_univ,-4.4862998759715698,-4.4862998759715698,-4.9809999465942383,0 +coef_alternative_specific_constant_for_outbound_stops_on_joint_tours_1out_0in,-2.3818839828880933,-2.3818839828880933,-1.7829999923706055,0 +coef_alternative_specific_constant_for_outbound_stops_on_joint_tours_2out_0in,-4.7211128189494742,-4.7211128189494742,-4.0669999122619629,0 +coef_alternative_specific_constant_for_outbound_stops_on_joint_tours_3out_0in,-11.512801227605346,-11.512801227605346,-4.9980001449584961,0 +coef_alternative_specific_constant_for_return_stops_0out_1in,-0.33835620803188837,-0.33835620803188837,-0.44499999284744263,0 +coef_alternative_specific_constant_for_return_stops_0out_1in_atwork,-3.3927653179415662,-3.3927653179415662,-3.6710000038146973,0 +coef_alternative_specific_constant_for_return_stops_0out_1in_eatout,-1.7128159843448749,-1.7128159843448749,-1.7610000371932983,0 +coef_alternative_specific_constant_for_return_stops_0out_1in_escort,-1.2952840546510411,-1.2952840546510411,-0.96799999475479126,0 +coef_alternative_specific_constant_for_return_stops_0out_1in_othdiscr,-1.0109237306426695,-1.0109237306426695,-0.92100000381469727,0 +coef_alternative_specific_constant_for_return_stops_0out_1in_othmaint,-0.31261766892443127,-0.31261766892443127,-0.58499997854232788,0 +coef_alternative_specific_constant_for_return_stops_0out_1in_school,-1.263001355242064,-1.263001355242064,-1.2059999704360962,0 +coef_alternative_specific_constant_for_return_stops_0out_1in_shopping,-1.2369710581521229,-1.2369710581521229,-1.1790000200271606,0 +coef_alternative_specific_constant_for_return_stops_0out_1in_social,0.17362744454328641,0.17362744454328641,-1.1200000047683716,0 +coef_alternative_specific_constant_for_return_stops_0out_1in_univ,-1.5271071961686673,-1.5271071961686673,-2.003000020980835,0 +coef_alternative_specific_constant_for_return_stops_0out_2in,-1.4815144916155247,-1.4815144916155247,-1.7749999761581421,0 +coef_alternative_specific_constant_for_return_stops_0out_2in_atwork,-5.5866314294429644,-5.5866314294429644,-5.3880000114440918,0 +coef_alternative_specific_constant_for_return_stops_0out_2in_eatout,-2.9694905231062454,-2.9694905231062454,-3.6970000267028809,0 +coef_alternative_specific_constant_for_return_stops_0out_2in_escort,-2.382475901775571,-2.382475901775571,-2.4100000858306885,0 +coef_alternative_specific_constant_for_return_stops_0out_2in_othdiscr,-2.4932337056093066,-2.4932337056093066,-2.3359999656677246,0 +coef_alternative_specific_constant_for_return_stops_0out_2in_othmaint,-0.559549687865037,-0.559549687865037,-1.4800000190734863,0 +coef_alternative_specific_constant_for_return_stops_0out_2in_school,-2.7043554260825506,-2.7043554260825506,-2.6719999313354492,0 +coef_alternative_specific_constant_for_return_stops_0out_2in_shopping,-2.5050450260948609,-2.5050450260948609,-2.3050000667572021,0 +coef_alternative_specific_constant_for_return_stops_0out_2in_social,-2.6165947696422243,-2.6165947696422243,-2.7639999389648438,0 +coef_alternative_specific_constant_for_return_stops_0out_2in_univ,-3.3021693186962295,-3.3021693186962295,-3.5099999904632568,0 +coef_alternative_specific_constant_for_return_stops_0out_3in,-1.8983525585535195,-1.8983525585535195,-2.1389999389648438,0 +coef_alternative_specific_constant_for_return_stops_0out_3in_atwork,-7.5705523838869704,-7.5705523838869704,-6.2100000381469727,0 +coef_alternative_specific_constant_for_return_stops_0out_3in_eatout,-4.796417149118664,-4.796417149118664,-4.7170000076293945,0 +coef_alternative_specific_constant_for_return_stops_0out_3in_othdiscr,-2.9420323763794887,-2.9420323763794887,-2.9270000457763672,0 +coef_alternative_specific_constant_for_return_stops_0out_3in_othmaint,-1.4387779329032728,-1.4387779329032728,-2.4619998931884766,0 +coef_alternative_specific_constant_for_return_stops_0out_3in_school,-3.1370907253356171,-3.1370907253356171,-3.3640000820159912,0 +coef_alternative_specific_constant_for_return_stops_0out_3in_shopping,-3.0227423732428385,-3.0227423732428385,-3.0239999294281006,0 +coef_alternative_specific_constant_for_return_stops_0out_3in_social,-3.365589571395263,-3.365589571395263,-3.4509999752044678,0 +coef_alternative_specific_constant_for_return_stops_0out_3in_univ,-3.7066457714767771,-3.7066457714767771,-3.6770000457763672,0 +coef_alternative_specific_constant_for_return_stops_on_joint_tours_0out_1in,-1.6502808127233042,-1.6502808127233042,-1.3289999961853027,0 +coef_alternative_specific_constant_for_return_stops_on_joint_tours_0out_2in,-4.1259435861090799,-4.1259435861090799,-2.7960000038146973,0 +coef_alternative_specific_constant_for_return_stops_on_joint_tours_0out_3in,-4.0391454462416165,-4.0391454462416165,-3.3789999485015869,0 +coef_alternative_specific_constant_for_the_total_number_of_stops_0out_2in,-0.063749295179186538,-0.063749295179186538,0,0 +coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in,1.488754315051501,1.488754315051501,0.70099997520446777,0 +coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_atwork,2.075702350960686,2.075702350960686,2.127000093460083,0 +coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_eatout,-7.6034666858545901,-7.6034666858545901,0.93999999761581421,0 +coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_othdiscr,0.94069720899608722,0.94069720899608722,0.86299997568130493,0 +coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_othmaint,-0.36444527841576962,-0.36444527841576962,0.414000004529953,0 +coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_shopping,0.52573690053968991,0.52573690053968991,0.25200000405311584,0 +coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_social,2.4865763319224596,2.4865763319224596,0.49599999189376831,0 +coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_univ,1.8527731047949576,1.8527731047949576,1.2719999551773071,0 +coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in,0.4026073230010761,0.4026073230010761,0.69499999284744263,0 +coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_eatout,-6.1299064789603026,-6.1299064789603026,2.0260000228881836,0 +coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_escort,-3.7134719215772845,-3.7134719215772845,-1.8070000410079956,0 +coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_othdiscr,0.17361191938538348,0.17361191938538348,0.93900001049041748,0 +coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_othmaint,-9.4707846262842086,-9.4707846262842086,0.48800000548362732,0 +coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_school,2.0224057350148397,2.0224057350148397,1.1349999904632568,0 +coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_shopping,-0.12757312512048605,-0.12757312512048605,0.51399999856948853,0 +coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_social,-1.3744527120467618,-1.3744527120467618,0.88200002908706665,0 +coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_univ,1.8597722433784889,1.8597722433784889,1.8710000514984131,0 +coef_alternative_specific_constant_for_the_total_number_of_stops_on_joint_tours_0out_2in,0.32162618139688331,0.32162618139688331,0,0 +coef_alternative_specific_constant_for_the_total_number_of_stops_on_joint_tours_1out_3in,-4.2949115331788805,-4.2949115331788805,0.51800000667572021,0 +coef_alternative_specific_constant_for_the_total_number_of_stops_on_joint_tours_2out_3in,-1.3125472274782721,-1.3125472274782721,1.496999979019165,0 +coef_am_peak_departure_between_6am_and_7_am_including_interacted_with_outbound_tours,-1.9993783388249304,-1.9993783388249304,-1.9299999475479126,0 +coef_arrival_later_than_17_00_,1.3712401433259278,1.3712401433259278,1.8377000093460083,0 +coef_arrival_later_than_17_00__othdiscr,-0.36182578620009853,-0.36182578620009853,-0.63830000162124634,0 +coef_arrival_later_than_17_00__social,-0.45958068481537828,-0.45958068481537828,-0.44999998807907104,0 +coef_arrival_later_than_17_00__univ,0.3855005796150392,0.3855005796150392,0.38899999856948853,0 +coef_at_least_one_kid_and_one_adult_participate_in_the_tour,1.8868763384626477,1.8868763384626477,0.37000000476837158,0 +coef_dummy_for_a_return_visiting_tour,-1.4902612723336455,-1.4902612723336455,-0.63999998569488525,0 +coef_dummy_for_a_visiting_tour_with_both_outbound_and_return_leg,0.4774633750050547,0.4774633750050547,0.43999999761581421,0 +coef_dummy_for_all_stops_made_by_transit,-0.67365004739838075,-0.67365004739838075,-0.69999998807907104,0 +coef_dummy_for_an_outbound_visiting_tour,0.33371222702629083,0.33371222702629083,-0.68999999761581421,0 +coef_dummy_for_distance_in_miles,0.04459896461230884,0.04459896461230884,0.0099999997764825821,0 +coef_dummy_for_distance_in_miles_othdiscr,0.050994204723024648,0.050994204723024648,-0.022500000894069672,0 +coef_dummy_for_distance_in_miles_othmaint,0.10425996435025388,0.10425996435025388,0.027300000190734863,0 +coef_dummy_for_distance_in_miles_school,0.095129477447622096,0.095129477447622096,0.043800000101327896,0 +coef_dummy_for_distance_in_miles_shopping,0.024311169311439184,0.024311169311439184,0.028899999335408211,0 +coef_dummy_for_distance_in_miles_social,-0.071016613228709641,-0.071016613228709641,-0.0099999997764825821,0 +coef_dummy_for_distance_less_than_10_miles_,-0.042062943317224627,-0.042062943317224627,0.37560001015663147,0 +coef_dummy_for_distance_less_than_20_miles,-0.69994214881030159,-0.69994214881030159,-0.2199999988079071,0 +coef_dummy_for_distance_less_than_20_miles_,-1.1529791304602006,-1.1529791304602006,-0.40799999237060547,0 +coef_dummy_for_distance_less_than_5_miles,0.16605718344134035,0.16605718344134035,0.37680000066757202,0 +coef_dummy_for_distance_less_than_5_miles_escort,0.27909765242825124,0.27909765242825124,0.31999999284744263,0 +coef_dummy_for_female,0.28229839587426708,0.28229839587426708,0.2199999988079071,0 +coef_dummy_for_female_othmaint,0.25086336764451594,0.25086336764451594,0.30120000243186951,0 +coef_dummy_for_female_school,0.69500027366692196,0.69500027366692196,0.4099000096321106,0 +coef_dummy_for_female_shopping,0.33523175540304978,0.33523175540304978,0.17209999263286591,0 +coef_dummy_for_female_univ,0.51700991234531735,0.51700991234531735,0.73489999771118164,0 +coef_dummy_for_only_adults_participate_in_the_tour,1.823935137209177,1.823935137209177,0.19020000100135803,0 +coef_dummy_for_subtour_origin_tour_destination_at_exurban_or_rual_areatypes_6_or_7_,0.27000001072883606,0.27000001072883606,0.27000001072883606,0 +coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_11_hours,0.71310000535072282,0.71310000535072282,0.60000002384185791,0 +coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_3_hours_,1.1559795820114029,1.1559795820114029,1.309999942779541,0 +coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours_,1.9112642049973785,1.9112642049973785,0.95490002632141113,0 +coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__escort,1.4016231431941613,1.4016231431941613,0.5899999737739563,0 +coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__othdiscr,0.23693003799296872,0.23693003799296872,0.83350002765655518,0 +coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__othmaint,0.15461331684851626,0.15461331684851626,0.51340001821517944,0 +coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__shopping,3.0905565103897032,3.0905565103897032,0.90560001134872437,0 +coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__univ,1.0776052104148675,1.0776052104148675,0.84340000152587891,0 +coef_dummy_for_walking_to_all_stops,-1.4898874048260706,-1.4898874048260706,-1.5399999618530273,0 +coef_dummy_for_walking_to_all_stops_escort,-0.34448329904128916,-0.34448329904128916,-1.9099999666213989,0 +coef_dummy_for_walking_to_all_stops_othdiscr,-2.0623131666705032,-2.0623131666705032,-2.4577999114990234,0 +coef_dummy_for_walking_to_all_stops_othmaint,-2.2984130311760791,-2.2984130311760791,-1.4328999519348145,0 +coef_dummy_for_walking_to_all_stops_school,-1.5166153192565364,-1.5166153192565364,-1.8163000345230103,0 +coef_dummy_for_walking_to_all_stops_shopping,-1.8770352536650028,-1.8770352536650028,-1.4908000230789185,0 +coef_dummy_for_walking_to_all_stops_social,-2.069393000920547,-2.069393000920547,-1.7300000190734863,0 +coef_evening_arrival_19_00_interacted_with_return_tours,0.606474995858996,0.606474995858996,0.31000000238418579,0 +coef_hh_accesibility_for_inbound_tours_interaction,0.24072323322804254,0.24072323322804254,0.24809999763965607,0 +coef_high_income_hh,0.23999999463558197,0.23999999463558197,0.23999999463558197,0 +coef_mid_to_high_income_hh,0.23000000417232513,0.23000000417232513,0.23000000417232513,0 +coef_middle_to_low_income_hh,0.17000000178813934,0.17000000178813934,0.17000000178813934,0 +coef_middle_to_low_income_hh_,0.17000000178813934,0.17000000178813934,0.17000000178813934,0 +coef_middle_to_low_income_hh__atwork,0.5862265411484473,0.5862265411484473,0.44999998807907104,0 +coef_no_stops_if_tour_mode_is_drivetransit,-999,-999,-999,0 +coef_num_kids_between_5_and_15_including_years_old,0.091794962859674076,0.091794962859674076,0.079999998211860657,0 +coef_num_kids_between_5_and_15_including_years_old_shopping,-0.041937522351757225,-0.041937522351757225,0.048200000077486038,0 +coef_number_of_adults_16_years_old_,0.077287692445891232,0.077287692445891232,0.029999999329447746,0 +coef_number_of_cars_number_of_workers,-0.066693087232745682,-0.066693087232745682,0.15999999642372131,0 +coef_number_of_cars_number_of_workers_school,0.29115625638327919,0.29115625638327919,0.53310000896453857,0 +coef_number_of_eating_tours_tours_undertaken_by_the_person,-0.25037573867732094,-0.25037573867732094,-0.2800000011920929,0 +coef_number_of_escort_tours_tours_undertaken_by_the_person,0.09806050880270635,0.09806050880270635,0.20000000298023224,0 +coef_number_of_escort_tours_tours_undertaken_by_the_person_escort,-0.25353945421619623,-0.25353945421619623,-0.15000000596046448,0 +coef_number_of_escort_tours_tours_undertaken_by_the_person_school,2.3120956941836317,2.3120956941836317,1.2365000247955322,0 +coef_number_of_escort_tours_tours_undertaken_by_the_person_univ,1.830804423840976,1.830804423840976,0.90179997682571411,0 +coef_number_of_hh_persons,-0.33185754187761923,-0.33185754187761923,-0.31000000238418579,0 +coef_number_of_hh_persons_escort,-0.17646847789383999,-0.17646847789383999,-0.23999999463558197,0 +coef_number_of_hh_persons_school,-0.59789398459025822,-0.59789398459025822,-0.50599998235702515,0 +coef_number_of_hh_persons_shopping,-0.086269571752504437,-0.086269571752504437,-0.15219999849796295,0 +coef_number_of_hh_persons_univ,-0.3306926246943428,-0.3306926246943428,-0.28270000219345093,0 +coef_number_of_maintenace_tours_tours_undertaken_by_the_person,-0.32592941005324705,-0.32592941005324705,-0.19769999384880066,0 +coef_number_of_maintenace_tours_tours_undertaken_by_the_person_othdiscr,-0.63285637282069895,-0.63285637282069895,-0.37149998545646667,0 +coef_number_of_maintenace_tours_undertaken_by_the_houshold,-0.28437497321740485,-0.28437497321740485,-0.046799998730421066,0 +coef_number_of_persons_participating_in_the_tour_outgoing_stops_interaction,-0.073331456006935747,-0.073331456006935747,-0.46000000834465027,0 +coef_number_of_persons_participating_in_the_tour_return_stops_interaction,0.86868810623690584,0.86868810623690584,0.49039998650550842,0 +coef_number_of_school_tours_tours_undertaken_by_the_person,0.13029516970232355,0.13029516970232355,-1.5499999523162842,0 +coef_number_of_shool_tours_tours_undertaken_by_the_person,-8.132575401995668,-8.132575401995668,-1.4134999513626099,0 +coef_number_of_shool_tours_tours_undertaken_by_the_person_othdiscr,-0.6130966929400905,-0.6130966929400905,-0.81760001182556152,0 +coef_number_of_shop_tours_undertaken_by_the_houshold,-0.32765232732837346,-0.32765232732837346,-0.05000000074505806,0 +coef_number_of_shop_tours_undertaken_by_the_houshold_shopping,0.14836308529667627,0.14836308529667627,-0.073299996554851532,0 +coef_number_of_shop_tours_undertaken_by_the_person,-0.17448403101684509,-0.17448403101684509,-0.23999999463558197,0 +coef_number_of_shop_tours_undertaken_by_the_person_othdiscr,-0.61731020325001096,-0.61731020325001096,-0.62900000810623169,0 +coef_number_of_shop_tours_undertaken_by_the_person_othmaint,-0.20994314934766711,-0.20994314934766711,-0.14280000329017639,0 +coef_number_of_students_in_hh,0.31655751614649219,0.31655751614649219,0.20999999344348907,0 +coef_number_of_students_in_hh_escort,0.15949746173262461,0.15949746173262461,0.18999999761581421,0 +coef_number_of_subtours_in_the_tour,0.33681763025289185,0.33681763025289185,0.18999999761581421,0 +coef_number_of_university_tours_tours_undertaken_by_the_person,-0.47999998927116394,-0.47999998927116394,-0.47999998927116394,0 +coef_number_of_university_tours_tours_undertaken_by_the_person_othmaint,-0.62519997358322144,-0.62519997358322144,-0.62519997358322144,0 +coef_number_of_university_tours_tours_undertaken_by_the_person_shopping,-0.67089998722076416,-0.67089998722076416,-0.67089998722076416,0 +coef_number_of_vehicles,0.26376160794948833,0.26376160794948833,0.17030000686645508,0 +coef_number_of_vehicles_social,-0.15425969899603631,-0.15425969899603631,-0.18999999761581421,0 +coef_number_of_work_tours_undertaken_by_the_person,-0.17654196807499356,-0.17654196807499356,-0.15000000596046448,0 +coef_number_of_work_tours_undertaken_by_the_person_escort,-0.1509302945890815,-0.1509302945890815,-0.28999999165534973,0 +coef_number_of_work_tours_undertaken_by_the_person_othdiscr,-0.49002581553862051,-0.49002581553862051,-0.61529999971389771,0 +coef_number_of_work_tours_undertaken_by_the_person_othmaint,-0.37756033423406382,-0.37756033423406382,-0.36399999260902405,0 +coef_number_of_work_tours_undertaken_by_the_person_shopping,-0.43906376866089675,-0.43906376866089675,-0.54799997806549072,0 +coef_number_of_work_tours_undertaken_by_the_person_social,-0.0062244254965315264,-0.0062244254965315264,-0.2800000011920929,0 +coef_presence_of_kids_between_0_and_4_including_years_old,0.56347076554717646,0.56347076554717646,0.74000000953674316,0 +coef_presence_of_kids_between_5_and_15_including_years_old,0.1180989290788108,0.1180989290788108,0.25999999046325684,0 +coef_presence_of_kids_between_5_and_15_including_years_old_school,0.02961104507186792,0.02961104507186792,0.32989999651908875,0 +coef_presence_of_kids_between_5_and_15_including_years_old_univ,-0.046419488763570535,-0.046419488763570535,0.68229997158050537,0 +coef_primary_destination_accessibility_log_of_it_,0.17066218967701827,0.17066218967701827,0.18000000715255737,0 +coef_subtour_departure_less_than_or_equal_to_11am,0.26747568517112724,0.26747568517112724,0.31000000238418579,0 +coef_subtour_distance_in_miles_from_tour_destination_to_subtour_primary_destination_one_way_,-0.15255084910340322,-0.15255084910340322,0.019999999552965164,0 +coef_subtour_duration_in_hours_integer_,0.68168671797342328,0.68168671797342328,0.56000000238418579,0 +coef_subtour_return_time_greater_or_equal_to_2pm,1.5553971310301449,1.5553971310301449,0.34000000357627869,0 diff --git a/activitysim/estimation/test/test_larch_estimation/test_stop_frequency_loglike.csv b/activitysim/estimation/test/test_larch_estimation/test_stop_frequency_loglike.csv index c88803278..d60deb239 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_stop_frequency_loglike.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_stop_frequency_loglike.csv @@ -1,2 +1,2 @@ ,loglike_prior,loglike_converge -0,-6184.4158915598673,-6090.2588006296801 +0,-6184.4158913795764,-6090.2665603871901 diff --git a/activitysim/estimation/test/test_larch_estimation/test_tour_and_subtour_mode_choice.csv b/activitysim/estimation/test/test_larch_estimation/test_tour_and_subtour_mode_choice.csv index eb7dd67ad..8d8064cbb 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_tour_and_subtour_mode_choice.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_tour_and_subtour_mode_choice.csv @@ -1,302 +1,302 @@ -,value,initvalue,nullvalue,minimum,maximum,best --999,-999,-999,-999,-999,-999,-999 -1,1,1,1,1,1,1 -bike_ASC_auto_deficient_eatout,-95.05184217157273,-1.5691105999999999,0,,,-95.05184217157273 -bike_ASC_auto_sufficient_eatout,-1.464117844170342,-1.2003470999999999,0,,,-1.464117844170342 -bike_ASC_no_auto_eatout,7.2018489969700603,0.86807095999999995,0,,,7.2018489969700603 -coef_age010_trn_multiplier_eatout_escort_othdiscr_othmaint_shopping_social_work,0.71970855821176882,0,0,,,0.71970855821176882 -coef_age1619_da_multiplier_eatout_escort_othdiscr_othmaint_shopping_social_work,-0.019079686463276232,0,0,,,-0.019079686463276232 -coef_age16p_sr_multiplier_eatout_escort_othdiscr_othmaint_shopping_social,-1.1399641109136807,-1.3660000000000001,0,,,-1.1399641109136807 -coef_hhsize1_sr_multiplier_eatout_escort_othdiscr_othmaint_school_shopping_social_univ_atwork,0.020999157406492247,0,0,,,0.020999157406492247 -coef_hhsize2_sr_multiplier_eatout_escort_othdiscr_othmaint_shopping_social_work_atwork,-0.0039274834138578957,0,0,,,-0.0039274834138578957 -coef_ivt_eatout_escort_othdiscr_othmaint_shopping_social,-0.016936905425988552,-0.017500000000000002,0,,,-0.016936905425988552 -coef_nest_AUTO,0.71999999999999997,0.71999999999999997,1,0.71999999999999997,0.71999999999999997,0.71999999999999997 -coef_nest_AUTO_DRIVEALONE,0.34999999999999998,0.34999999999999998,1,0.34999999999999998,0.34999999999999998,0.34999999999999998 -coef_nest_AUTO_SHAREDRIDE2,0.34999999999999998,0.34999999999999998,1,0.34999999999999998,0.34999999999999998,0.34999999999999998 -coef_nest_AUTO_SHAREDRIDE3,0.34999999999999998,0.34999999999999998,1,0.34999999999999998,0.34999999999999998,0.34999999999999998 -coef_nest_NONMOTORIZED,0.71999999999999997,0.71999999999999997,1,0.71999999999999997,0.71999999999999997,0.71999999999999997 -coef_nest_RIDEHAIL,0.35999999999999999,0.35999999999999999,1,0.35999999999999999,0.35999999999999999,0.35999999999999999 -coef_nest_TRANSIT,0.71999999999999997,0.71999999999999997,1,0.71999999999999997,0.71999999999999997,0.71999999999999997 -coef_nest_TRANSIT_DRIVEACCESS,0.5,0.5,1,0.5,0.5,0.5 -coef_nest_TRANSIT_WALKACCESS,0.5,0.5,1,0.5,0.5,0.5 -commuter_rail_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork,-38.790613234584711,0.72701850000000001,0,,,-38.790613234584711 -drive_ferry_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork,0.94012379999999995,0.94012379999999995,0,,,0.94012379999999995 -drive_light_rail_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork,-25.934367224180519,0.76895475000000002,0,,,-25.934367224180519 -drive_transit_ASC_auto_deficient_eatout,14.683282344019709,0.59980610000000001,0,,,14.683282344019709 -drive_transit_ASC_auto_sufficient_eatout,12.110507359997341,-0.96951586000000001,0,,,12.110507359997341 -drive_transit_ASC_no_auto_all,0,0,0,,,0 -drive_transit_CBD_ASC_eatout_escort_othdiscr_othmaint_shopping_social,0.5534042664919846,0.52500000000000002,0,,,0.5534042664919846 -express_bus_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork,-61.526574455540178,0.96923159999999997,0,,,-61.526574455540178 -heavy_rail_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork,-11.341188179738285,0.77061210000000002,0,,,-11.341188179738285 -joint_bike_ASC_auto_deficient_all,-154.53293340147803,-6.0764149999999999,0,,,-154.53293340147803 -joint_bike_ASC_auto_sufficient_all,-108.23845192023519,-6.3760656999999998,0,,,-108.23845192023519 -joint_bike_ASC_no_auto_all,-47.716366793432869,-2.8671598,0,,,-47.716366793432869 -joint_drive_transit_ASC_auto_deficient_all,-36.092321468347947,-5.9632215000000004,0,,,-36.092321468347947 -joint_drive_transit_ASC_auto_sufficient_all,-24.112388481073179,-8.0452849999999998,0,,,-24.112388481073179 -joint_drive_transit_ASC_no_auto_all,0,0,0,0,0,0 -joint_sr2_ASC_auto_deficient_all,0,0,0,0,0,0 -joint_sr2_ASC_auto_sufficient_all,0,0,0,0,0,0 -joint_sr2_ASC_no_auto_all,0,0,0,0,0,0 -joint_sr3p_ASC_auto_deficient_all,-5.3440373640659899,-1.8841692000000001,0,,,-5.3440373640659899 -joint_sr3p_ASC_auto_sufficient_all,-3.3313993635418799,-2.234826,0,,,-3.3313993635418799 -joint_sr3p_ASC_no_auto_all,0.97681497679456009,0.56306710000000004,0,,,0.97681497679456009 -joint_taxi_ASC_auto_deficient_all,-45.521802684568371,-9.8156999999999996,0,,,-45.521802684568371 -joint_taxi_ASC_auto_sufficient_all,-11.709899999999999,-11.709899999999999,0,-11.709899999999999,-11.709899999999999,-11.709899999999999 -joint_taxi_ASC_no_auto_all,-12.836772689761483,-4.5792000000000002,0,,,-12.836772689761483 -joint_tnc_shared_ASC_auto_deficient_all,-37.818891366620065,-11.1572,0,,,-37.818891366620065 -joint_tnc_shared_ASC_auto_sufficient_all,-13.205,-13.205,0,-13.205,-13.205,-13.205 -joint_tnc_shared_ASC_no_auto_all,-24.544220954818456,-4.3002000000000002,0,,,-24.544220954818456 -joint_tnc_single_ASC_auto_deficient_all,-51.742391051044301,-9.8961000000000006,0,,,-51.742391051044301 -joint_tnc_single_ASC_auto_sufficient_all,-14.0159,-14.0159,0,-14.0159,-14.0159,-14.0159 -joint_tnc_single_ASC_no_auto_all,-16.690109945634145,-4.4916999999999998,0,,,-16.690109945634145 -joint_walk_ASC_auto_deficient_all,-1.3109169286458668,-1.9607706,0,,,-1.3109169286458668 -joint_walk_ASC_auto_sufficient_all,-3.6267323534729816,-3.2352156999999999,0,,,-3.6267323534729816 -joint_walk_ASC_no_auto_all,0.96782165602250947,-0.21274700999999999,0,,,0.96782165602250947 -joint_walk_transit_ASC_auto_deficient_all,4.47692459281539,-5.1634482999999998,0,,,4.47692459281539 -joint_walk_transit_ASC_auto_sufficient_all,-18.266087843452436,-18.264534000000001,0,,,-18.266087843452436 -joint_walk_transit_ASC_no_auto_all,13.576834007614055,0.62292415000000001,0,,,13.576834007614055 -local_bus_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork,-12.586753852403735,-0.090703264000000006,0,,,-12.586753852403735 -sr2_ASC_auto_deficient_eatout,0.23544005287595454,0.58823449999999999,0,,,0.23544005287595454 -sr2_ASC_auto_sufficient_eatout,0.45709380576692815,0.86280555000000003,0,,,0.45709380576692815 -sr2_ASC_no_auto_all,5.3017687689662525,0,0,,,5.3017687689662525 -sr3p_ASC_auto_deficient_eatout,-0.084427303598265835,0.046052360000000001,0,,,-0.084427303598265835 -sr3p_ASC_auto_sufficient_eatout,0.5022326090064464,0.84685960000000005,0,,,0.5022326090064464 -sr3p_ASC_no_auto_eatout,5.8000711004385348,0.3219998,0,,,5.8000711004385348 -taxi_ASC_auto_deficient_eatout_othdiscr_social,-34.267917620077426,-3.1316999999999999,0,,,-34.267917620077426 -taxi_ASC_auto_sufficient_eatout_othdiscr_social,-2.3771385102751132,-3.0373999999999999,0,,,-2.3771385102751132 -taxi_ASC_no_auto_eatout_othdiscr_social,-25.802108248945846,0.99229999999999996,0,,,-25.802108248945846 -tnc_shared_ASC_auto_deficient_eatout_othdiscr_social,-2.9229081712184213,-4.3575999999999997,0,,,-2.9229081712184213 -tnc_shared_ASC_auto_sufficient_eatout_othdiscr_social,-3.4681630975727953,-3.6638000000000002,0,,,-3.4681630975727953 -tnc_shared_ASC_no_auto_eatout_othdiscr_social,5.5019116236636574,0.64639999999999997,0,,,5.5019116236636574 -tnc_single_ASC_auto_deficient_eatout_othdiscr_social,-30.032668619901013,-2.9622999999999999,0,,,-30.032668619901013 -tnc_single_ASC_auto_sufficient_eatout_othdiscr_social,-2.0882587225999232,-2.3239000000000001,0,,,-2.0882587225999232 -tnc_single_ASC_no_auto_eatout_othdiscr_social,6.6972430765281166,1.6852,0,,,6.6972430765281166 -walk_ASC_auto_deficient_eatout,2.9644622570813723,3.2746050000000002,0,,,2.9644622570813723 -walk_ASC_auto_sufficient_eatout,0.80408030631941008,1.5516903,0,,,0.80408030631941008 -walk_ASC_no_auto_eatout,10.214310524095858,5.1251173000000003,0,,,10.214310524095858 -walk_ferry_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork,0.94012379999999995,0.94012379999999995,0,,,0.94012379999999995 -walk_light_rail_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork,-11.57159128546653,0.76895475000000002,0,,,-11.57159128546653 -walk_transit_ASC_auto_deficient_eatout,12.342017037167501,-0.038963240000000003,0,,,12.342017037167501 -walk_transit_ASC_auto_sufficient_eatout,10.754005322077003,-1.1126906000000001,0,,,10.754005322077003 -walk_transit_ASC_no_auto_eatout,20.50374109308898,2.5936368000000001,0,,,20.50374109308898 -walk_transit_CBD_ASC_eatout_escort_othdiscr_othmaint_shopping_social,0.69084760274299939,0.52500000000000002,0,,,0.69084760274299939 -bike_ASC_auto_deficient_escort,-80.815682010385316,-4.5279280000000002,0,,,-80.815682010385316 -bike_ASC_auto_sufficient_escort,-4.2321601413248553,-5.0631084,0,,,-4.2321601413248553 -bike_ASC_no_auto_escort,-82.613015375494186,-0.71621199999999996,0,,,-82.613015375494186 -drive_transit_ASC_auto_deficient_escort,12.026459792966101,-1.1537067000000001,0,,,12.026459792966101 -drive_transit_ASC_auto_sufficient_escort,-38.422040468436286,-4.6014246999999999,0,,,-38.422040468436286 -sr2_ASC_auto_deficient_escort,-0.028872449257253224,0,0,,,-0.028872449257253224 -sr2_ASC_auto_sufficient_escort,-0.44574542118914673,0,0,,,-0.44574542118914673 -sr3p_ASC_auto_deficient_escort,-0.24177007008960669,-0.40818766000000001,0,,,-0.24177007008960669 -sr3p_ASC_auto_sufficient_escort,-0.57332666707255331,-0.057412530000000003,0,,,-0.57332666707255331 -sr3p_ASC_no_auto_escort,-48.558116584856315,-1.8129267,0,,,-48.558116584856315 -taxi_ASC_auto_deficient_escort_othmaint_shopping,0.22119642025031605,0.17660000000000001,0,,,0.22119642025031605 -taxi_ASC_auto_sufficient_escort_othmaint_shopping,-1.8747078913779172,-1.8055000000000001,0,,,-1.8747078913779172 -taxi_ASC_no_auto_escort_othmaint_shopping,7.3609237955139406,1.8938999999999999,0,,,7.3609237955139406 -tnc_shared_ASC_auto_deficient_escort_othmaint_shopping,-0.24413343003260302,-0.38629999999999998,0,,,-0.24413343003260302 -tnc_shared_ASC_auto_sufficient_escort_othmaint_shopping,-2.7057545852498914,-2.4365000000000001,0,,,-2.7057545852498914 -tnc_shared_ASC_no_auto_escort_othmaint_shopping,6.659950525915475,0.93610000000000004,0,,,6.659950525915475 -tnc_single_ASC_auto_deficient_escort_othmaint_shopping,0.8961844796143621,0.67479999999999996,0,,,0.8961844796143621 -tnc_single_ASC_auto_sufficient_escort_othmaint_shopping,-1.7457428565324109,-1.45,0,,,-1.7457428565324109 -tnc_single_ASC_no_auto_escort_othmaint_shopping,7.4428007891764407,1.8605,0,,,7.4428007891764407 -walk_ASC_auto_deficient_escort,-103.0336443777916,-0.90204656000000005,0,,,-103.0336443777916 -walk_ASC_auto_sufficient_escort,-2.1951400279195017,-0.81160659999999996,0,,,-2.1951400279195017 -walk_ASC_no_auto_escort,7.3688522520263184,2.8012068000000001,0,,,7.3688522520263184 -walk_transit_ASC_auto_deficient_escort,8.7582882394391213,-4.9607039999999998,0,,,8.7582882394391213 -walk_transit_ASC_auto_sufficient_escort,7.5679819008069709,-4.9348470000000004,0,,,7.5679819008069709 -walk_transit_ASC_no_auto_escort,-44.292550039991539,-2.2172081000000001,0,,,-44.292550039991539 -bike_ASC_auto_deficient_othdiscr,0.22855250662092905,-0.092468339999999996,0,,,0.22855250662092905 -bike_ASC_auto_sufficient_othdiscr,-1.9167540400011813,-1.0714596999999999,0,,,-1.9167540400011813 -bike_ASC_no_auto_othdiscr,5.4577562038310869,-0.37642320000000001,0,,,5.4577562038310869 -drive_transit_ASC_auto_deficient_othdiscr,-61.370153497008388,0.31993080000000002,0,,,-61.370153497008388 -drive_transit_ASC_auto_sufficient_othdiscr,11.330970889251063,-0.37859169999999998,0,,,11.330970889251063 -sr2_ASC_auto_deficient_othdiscr,0.73863776841688022,0.6601513,0,,,0.73863776841688022 -sr2_ASC_auto_sufficient_othdiscr,0.1229837233438586,0.49684616999999998,0,,,0.1229837233438586 -sr3p_ASC_auto_deficient_othdiscr,0.935476440999231,1.0470965999999999,0,,,0.935476440999231 -sr3p_ASC_auto_sufficient_othdiscr,0.24598820830201615,0.58850205,0,,,0.24598820830201615 -sr3p_ASC_no_auto_othdiscr,6.4061820861081387,0.27216901999999998,0,,,6.4061820861081387 -walk_ASC_auto_deficient_othdiscr,1.6258274516143363,2.2494074999999998,0,,,1.6258274516143363 -walk_ASC_auto_sufficient_othdiscr,1.0941805514117351,1.2633475999999999,0,,,1.0941805514117351 -walk_ASC_no_auto_othdiscr,8.7710297682817657,3.2665945999999999,0,,,8.7710297682817657 -walk_transit_ASC_auto_deficient_othdiscr,13.266819655208037,0.95308839999999995,0,,,13.266819655208037 -walk_transit_ASC_auto_sufficient_othdiscr,11.302586771209716,-0.80636792999999996,0,,,11.302586771209716 -walk_transit_ASC_no_auto_othdiscr,20.427662059570103,2.2437784999999999,0,,,20.427662059570103 -bike_ASC_auto_deficient_othmaint,-1.5527604047004422,-1.5184648999999999,0,,,-1.5527604047004422 -bike_ASC_auto_sufficient_othmaint,-2.4841948233012818,-2.8083024000000001,0,,,-2.4841948233012818 -bike_ASC_no_auto_othmaint,7.0881917223708513,1.5394334000000001,0,,,7.0881917223708513 -drive_transit_ASC_auto_deficient_othmaint,-65.867616159128147,-0.29943228,0,,,-65.867616159128147 -drive_transit_ASC_auto_sufficient_othmaint,-32.152894844805871,-2.6249478000000002,0,,,-32.152894844805871 -sr2_ASC_auto_deficient_othmaint,-0.17432511879711185,0.26215270000000002,0,,,-0.17432511879711185 -sr2_ASC_auto_sufficient_othmaint,0.22153081726667476,0.25817883000000003,0,,,0.22153081726667476 -sr3p_ASC_auto_deficient_othmaint,-1.7678027401708742,-1.3493925,0,,,-1.7678027401708742 -sr3p_ASC_auto_sufficient_othmaint,-0.25110618149419051,-0.075498670000000004,0,,,-0.25110618149419051 -sr3p_ASC_no_auto_othmaint,4.5931064543486562,-0.80318540000000005,0,,,4.5931064543486562 -walk_ASC_auto_deficient_othmaint,1.8335810139202195,1.3690404,0,,,1.8335810139202195 -walk_ASC_auto_sufficient_othmaint,0.88973692144242589,0.79996339999999999,0,,,0.88973692144242589 -walk_ASC_no_auto_othmaint,6.2906587601839359,1.287299,0,,,6.2906587601839359 -walk_transit_ASC_auto_deficient_othmaint,9.407080733783447,-3.0597257999999998,0,,,9.407080733783447 -walk_transit_ASC_auto_sufficient_othmaint,10.958165434769871,-1.5471172,0,,,10.958165434769871 -walk_transit_ASC_no_auto_othmaint,20.617092448325504,2.5643455999999998,0,,,20.617092448325504 -bike_ASC_auto_deficient_school,-0.41778199451832254,-0.52806779999999998,0,,,-0.41778199451832254 -bike_ASC_auto_sufficient_school,-3.5078886893560863,-2.1134686,0,,,-3.5078886893560863 -bike_ASC_no_auto_school,-28.724176190313326,12.098735,0,,,-28.724176190313326 -coef_age010_trn_multiplier_school_univ,-1.1120244370243391,-1.5548,0,,,-1.1120244370243391 -coef_age1619_da_multiplier_school_univ,-1.5951711270563249,-1.3813,0,,,-1.5951711270563249 -coef_age16p_sr_multiplier_school_univ_work_atwork,-0.72100839095028546,0,0,,,-0.72100839095028546 -coef_hhsize2_sr_multiplier_school_univ,-0.53400766253899179,-0.63590000000000002,0,,,-0.53400766253899179 -coef_ivt_school_univ,-0.021192297603561172,-0.0224,0,,,-0.021192297603561172 -commuter_rail_ASC_school_univ,-32.353210620182892,1.0336205999999999,0,,,-32.353210620182892 -drive_ferry_ASC_school_univ,2.0202317000000001,2.0202317000000001,0,,,2.0202317000000001 -drive_light_rail_ASC_school_univ,-19.108400881329299,1.6814003,0,,,-19.108400881329299 -drive_transit_ASC_auto_deficient_school,-95.982095698903436,5.3252654000000001,0,,,-95.982095698903436 -drive_transit_ASC_auto_sufficient_school,-46.151623937860776,1.4013500000000001,0,,,-46.151623937860776 -drive_transit_CBD_ASC_school_univ,62.459413404223476,0.67200000000000004,0,,,62.459413404223476 -express_bus_ASC_school_univ,0.32496937999999997,0.32496937999999997,0,,,0.32496937999999997 -heavy_rail_ASC_school_univ,-12.380133019206522,0.96200377000000004,0,,,-12.380133019206522 -local_bus_ASC_school_univ,-13.872178494981991,-0.065086210000000005,0,,,-13.872178494981991 -sr2_ASC_auto_deficient_school,0.11627333557951013,0.12474365,0,,,0.11627333557951013 -sr2_ASC_auto_sufficient_school,-1.6466117937376035,-1.6062657,0,,,-1.6466117937376035 -sr3p_ASC_auto_deficient_school,0.72079329001052006,0.71495710000000001,0,,,0.72079329001052006 -sr3p_ASC_auto_sufficient_school,-1.1869716638057384,-1.0201935,0,,,-1.1869716638057384 -sr3p_ASC_no_auto_school,-6.0240829874137232,-6.0240827000000001,0,,,-6.0240829874137232 -taxi_ASC_auto_deficient_school,1.5929016972992514,-0.33379999999999999,0,,,1.5929016972992514 -taxi_ASC_auto_sufficient_school,-1.6320342977823235,-2.4293999999999998,0,,,-1.6320342977823235 -taxi_ASC_no_auto_school_univ,-7,-7,0,-7,-7,-7 -tnc_shared_ASC_auto_deficient_school,0.96832753972334895,-1.4745999999999999,0,,,0.96832753972334895 -tnc_shared_ASC_auto_sufficient_school,-2.7739120530297634,-3.7219000000000002,0,,,-2.7739120530297634 -tnc_shared_ASC_no_auto_school,-7,-7,0,-7,-7,-7 -tnc_single_ASC_auto_deficient_school,-3.3648846265737218,-0.5524,0,,,-3.3648846265737218 -tnc_single_ASC_auto_sufficient_school,-2.3704008497944398,-2.8374999999999999,0,,,-2.3704008497944398 -tnc_single_ASC_no_auto_school,-7,-7,0,-7,-7,-7 -walk_ASC_auto_deficient_school,3.2349172133905824,3.2573623999999999,0,,,3.2349172133905824 -walk_ASC_auto_sufficient_school,0.69222756273388997,0.64768559999999997,0,,,0.69222756273388997 -walk_ASC_no_auto_school,31.884868503149736,18.414556999999999,0,,,31.884868503149736 -walk_ferry_ASC_school_univ,2.0202317000000001,2.0202317000000001,0,,,2.0202317000000001 -walk_light_rail_ASC_school_univ,-12.140651343565191,1.6814003,0,,,-12.140651343565191 -walk_transit_ASC_auto_deficient_school,17.064091325381543,4.1207079999999996,0,,,17.064091325381543 -walk_transit_ASC_auto_sufficient_school,14.160601613148902,0.74590873999999996,0,,,14.160601613148902 -walk_transit_ASC_no_auto_school,48.738094718979411,21.383749000000002,0,,,48.738094718979411 -walk_transit_CBD_ASC_school_univ,0.78788966521195125,0.67200000000000004,0,,,0.78788966521195125 -bike_ASC_auto_deficient_shopping,-0.98208504158712495,-0.87584466000000005,0,,,-0.98208504158712495 -bike_ASC_auto_sufficient_shopping,-4.7656989395473435,-2.5662102999999998,0,,,-4.7656989395473435 -bike_ASC_no_auto_shopping,6.3473397917421011,0.83415550000000005,0,,,6.3473397917421011 -drive_transit_ASC_auto_deficient_shopping,-69.120302733575414,-0.41849177999999998,0,,,-69.120302733575414 -drive_transit_ASC_auto_sufficient_shopping,-74.360368326848842,-2.1718937999999999,0,,,-74.360368326848842 -sr2_ASC_auto_deficient_shopping,0.34099442656713952,0.24409755999999999,0,,,0.34099442656713952 -sr2_ASC_auto_sufficient_shopping,0.14451282933821491,0.19770707000000001,0,,,0.14451282933821491 -sr3p_ASC_auto_deficient_shopping,-0.26249087797911946,-0.073370166000000001,0,,,-0.26249087797911946 -sr3p_ASC_auto_sufficient_shopping,-0.2963226415957782,-0.077571294999999998,0,,,-0.2963226415957782 -sr3p_ASC_no_auto_shopping,5.6484952721990362,-0.27978947999999998,0,,,5.6484952721990362 -walk_ASC_auto_deficient_shopping,2.8036057394781277,2.2701733000000002,0,,,2.8036057394781277 -walk_ASC_auto_sufficient_shopping,0.47346256501524292,0.73126630000000004,0,,,0.47346256501524292 -walk_ASC_no_auto_shopping,8.2155350323455529,2.3768772999999999,0,,,8.2155350323455529 -walk_transit_ASC_auto_deficient_shopping,11.256552971319946,-0.84765690000000005,0,,,11.256552971319946 -walk_transit_ASC_auto_sufficient_shopping,9.7542972055490029,-2.2036798000000002,0,,,9.7542972055490029 -walk_transit_ASC_no_auto_shopping,19.703542063063956,2.1067475999999998,0,,,19.703542063063956 -bike_ASC_auto_deficient_social,-0.26949163972926454,0.63452140000000001,0,,,-0.26949163972926454 -bike_ASC_auto_sufficient_social,-0.85401921523485835,-1.368071,0,,,-0.85401921523485835 -bike_ASC_no_auto_social,5.5137426913975727,0.020583210000000001,0,,,5.5137426913975727 -drive_transit_ASC_auto_deficient_social,-52.758046290102875,1.5627195,0,,,-52.758046290102875 -drive_transit_ASC_auto_sufficient_social,-47.996801808437127,-0.61585575000000004,0,,,-47.996801808437127 -sr2_ASC_auto_deficient_social,1.429304838044295,1.8558528000000001,0,,,1.429304838044295 -sr2_ASC_auto_sufficient_social,0.97730089864256342,0.52360249999999997,0,,,0.97730089864256342 -sr3p_ASC_auto_deficient_social,0.67630143929989783,1.5007242999999999,0,,,0.67630143929989783 -sr3p_ASC_auto_sufficient_social,0.75744513577301464,0.50617886000000001,0,,,0.75744513577301464 -sr3p_ASC_no_auto_social,3.972071101285167,-1.4036902,0,,,3.972071101285167 -walk_ASC_auto_deficient_social,3.1688988708714376,2.8701840000000001,0,,,3.1688988708714376 -walk_ASC_auto_sufficient_social,2.6607837167356201,1.7072186,0,,,2.6607837167356201 -walk_ASC_no_auto_social,6.4445317299061999,1.8680915,0,,,6.4445317299061999 -walk_transit_ASC_auto_deficient_social,12.875988741851154,0.97444487000000002,0,,,12.875988741851154 -walk_transit_ASC_auto_sufficient_social,12.613259624057664,-0.34537590000000001,0,,,12.613259624057664 -walk_transit_ASC_no_auto_social,18.966818965194228,1.3814651,0,,,18.966818965194228 -bike_ASC_auto_deficient_univ,-0.66923500000000002,-0.66923500000000002,0,,,-0.66923500000000002 -bike_ASC_auto_sufficient_univ,-1.9397831999999999,-1.9397831999999999,0,,,-1.9397831999999999 -bike_ASC_no_auto_univ,4.2945156000000004,4.2945156000000004,0,,,4.2945156000000004 -drive_transit_ASC_auto_deficient_univ,1.8501175999999999,1.8501175999999999,0,,,1.8501175999999999 -drive_transit_ASC_auto_sufficient_univ,1.3587753,1.3587753,0,,,1.3587753 -sr2_ASC_auto_deficient_univ,-1.6922345999999999,-1.6922345999999999,0,,,-1.6922345999999999 -sr2_ASC_auto_sufficient_univ,-1.8594269999999999,-1.8594269999999999,0,,,-1.8594269999999999 -sr3p_ASC_auto_deficient_univ,-1.7277422,-1.7277422,0,,,-1.7277422 -sr3p_ASC_auto_sufficient_univ,-1.9047098,-1.9047098,0,,,-1.9047098 -sr3p_ASC_no_auto_univ,-6.0560010000000002,-6.0560010000000002,0,,,-6.0560010000000002 -taxi_ASC_auto_deficient_univ,4.2492000000000001,4.2492000000000001,0,,,4.2492000000000001 -taxi_ASC_auto_sufficient_univ,-0.31309999999999999,-0.31309999999999999,0,,,-0.31309999999999999 -tnc_shared_ASC_auto_deficient_univ,3.25,3.25,0,,,3.25 -tnc_shared_ASC_auto_sufficient_univ,-0.90680000000000005,-0.90680000000000005,0,,,-0.90680000000000005 -tnc_shared_ASC_no_auto_univ,-5.8116000000000003,-5.8116000000000003,0,,,-5.8116000000000003 -tnc_single_ASC_auto_deficient_univ,1.0221,1.0221,0,,,1.0221 -tnc_single_ASC_auto_sufficient_univ,0.20880000000000001,0.20880000000000001,0,,,0.20880000000000001 -tnc_single_ASC_no_auto_univ,-2.5190000000000001,-2.5190000000000001,0,,,-2.5190000000000001 -walk_ASC_auto_deficient_univ,4.5059100000000001,4.5059100000000001,0,,,4.5059100000000001 -walk_ASC_auto_sufficient_univ,1.0607664999999999,1.0607664999999999,0,,,1.0607664999999999 -walk_ASC_no_auto_univ,6.4089669999999996,6.4089669999999996,0,,,6.4089669999999996 -walk_transit_ASC_auto_deficient_univ,3.1362554999999999,3.1362554999999999,0,,,3.1362554999999999 -walk_transit_ASC_auto_sufficient_univ,0.47311629999999999,0.47311629999999999,0,,,0.47311629999999999 -walk_transit_ASC_no_auto_univ,8.7860370000000003,8.7860370000000003,0,,,8.7860370000000003 -bike_ASC_auto_deficient_work,0.1093970633711833,0.25318967999999997,0,,,0.1093970633711833 -bike_ASC_auto_sufficient_work,-1.7147321677779845,-1.5800232000000001,0,,,-1.7147321677779845 -bike_ASC_no_auto_work,7.916152782688358,3.1940088000000002,0,,,7.916152782688358 -coef_hhsize1_sr_multiplier_work,-0.6790273309383883,-0.73458800000000002,0,,,-0.6790273309383883 -coef_ivt_work,-0.013061382875350648,-0.0134,0,,,-0.013061382875350648 -commuter_rail_ASC_work,12.116488014803043,0.72550300000000001,0,,,12.116488014803043 -drive_ferry_ASC_work,0.93322605000000003,0.93322605000000003,0,,,0.93322605000000003 -drive_light_rail_ASC_work,-36.000808246088518,0.82555670000000003,0,,,-36.000808246088518 -drive_transit_ASC_auto_deficient_work,-10.817730116154191,0.10081567,0,,,-10.817730116154191 -drive_transit_ASC_auto_sufficient_work,-11.922033211338155,-1.0045459000000001,0,,,-11.922033211338155 -drive_transit_CBD_ASC_work,1.4326312016814422,1.1000000000000001,0,,,1.4326312016814422 -express_bus_ASC_work,-54.606930216243668,-0.51654739999999999,0,,,-54.606930216243668 -heavy_rail_ASC_work,11.025029288750547,0.64772974999999999,0,,,11.025029288750547 -local_bus_ASC_work,10.288307853536837,0.066895070000000001,0,,,10.288307853536837 -sr2_ASC_auto_deficient_work,0.46312369609634996,-0.33803123000000002,0,,,0.46312369609634996 -sr2_ASC_auto_sufficient_work,-0.39096777455191095,-1.0857458,0,,,-0.39096777455191095 -sr3p_ASC_auto_deficient_work,-0.050072021249821817,-0.85270420000000002,0,,,-0.050072021249821817 -sr3p_ASC_auto_sufficient_work,-0.71640219472524347,-1.4699701999999999,0,,,-0.71640219472524347 -sr3p_ASC_no_auto_work,5.2865327465387555,-0.5831269,0,,,5.2865327465387555 -taxi_ASC_auto_deficient_work,-1.3594600760328026,-1.4765999999999999,0,,,-1.3594600760328026 -taxi_ASC_auto_sufficient_work,-55.988330866418792,-4.8509000000000002,0,,,-55.988330866418792 -taxi_ASC_no_auto_work,9.43236827804283,4.7290999999999999,0,,,9.43236827804283 -tnc_shared_ASC_auto_deficient_work,-2.4348067005945464,-2.1435,0,,,-2.4348067005945464 -tnc_shared_ASC_auto_sufficient_work,-63.386791172965488,-5.3574999999999999,0,,,-63.386791172965488 -tnc_shared_ASC_no_auto_work,-47.309135186133922,3.2429000000000001,0,,,-47.309135186133922 -tnc_single_ASC_auto_deficient_work,-0.78812679103952732,-0.80130000000000001,0,,,-0.78812679103952732 -tnc_single_ASC_auto_sufficient_work,-4.8755977035592224,-4.1946000000000003,0,,,-4.8755977035592224 -tnc_single_ASC_no_auto_work,10.295672942342067,5.7854999999999999,0,,,10.295672942342067 -walk_ASC_auto_deficient_work,2.1275102930594469,2.4010416999999999,0,,,2.1275102930594469 -walk_ASC_auto_sufficient_work,0.17637095807617828,0.053265337000000003,0,,,0.17637095807617828 -walk_ASC_no_auto_work,10.356832861443557,5.7672157000000004,0,,,10.356832861443557 -walk_ferry_ASC_work,0.93322605000000003,0.93322605000000003,0,,,0.93322605000000003 -walk_light_rail_ASC_work,11.204407103182628,0.82555670000000003,0,,,11.204407103182628 -walk_transit_ASC_auto_deficient_work,-9.7699412444923333,0.65302855000000004,0,,,-9.7699412444923333 -walk_transit_ASC_auto_sufficient_work,-11.327002198633336,-0.89165070000000002,0,,,-11.327002198633336 -walk_transit_ASC_no_auto_work,-0.8184290314119107,5.0354165999999996,0,,,-0.8184290314119107 -walk_transit_CBD_ASC_work,0.97698021606324725,0.80400000000000005,0,,,0.97698021606324725 -bike_ASC_auto_deficient_atwork,-1.3755365229511889,-0.80740829999999997,0,,,-1.3755365229511889 -bike_ASC_auto_sufficient_atwork,15.727786619761421,15.72017,0,,,15.727786619761421 -bike_ASC_no_auto_atwork,-28.399708381108002,-0.90725845000000005,0,,,-28.399708381108002 -coef_age010_trn_multiplier_atwork,0.00072199999999999999,0.00072199999999999999,0,,,0.00072199999999999999 -coef_age1619_da_multiplier_atwork,-0.80694718452625747,0.0032336000000000001,0,,,-0.80694718452625747 -coef_ivt_atwork,-0.021019454866270101,-0.018800000000000001,0,,,-0.021019454866270101 -drive_transit_ASC_auto_deficient_atwork,-998.81960000000004,-998.81960000000004,0,,,-998.81960000000004 -drive_transit_ASC_auto_sufficient_atwork,-999.21465999999998,-999.21465999999998,0,,,-999.21465999999998 -drive_transit_CBD_ASC_atwork,0.56399999999999995,0.56399999999999995,0,,,0.56399999999999995 -sr2_ASC_auto_deficient_atwork,-1.892695657391221,-2.1102420999999998,0,,,-1.892695657391221 -sr2_ASC_auto_sufficient_atwork,-0.65249983963035285,-1.4450618,0,,,-0.65249983963035285 -sr3p_ASC_auto_deficient_atwork,-2.383158561544211,-2.5146579999999998,0,,,-2.383158561544211 -sr3p_ASC_auto_sufficient_atwork,-0.82204450780308591,-1.652174,0,,,-0.82204450780308591 -sr3p_ASC_no_auto_atwork,6.2362869423849405,0.58266260000000003,0,,,6.2362869423849405 -taxi_ASC_auto_deficient_atwork,-28.540908119718239,-4.4046000000000003,0,,,-28.540908119718239 -taxi_ASC_auto_sufficient_atwork,-28.643971281649424,-2.8803999999999998,0,,,-28.643971281649424 -taxi_ASC_no_auto_atwork,10.212879604829233,4.1021000000000001,0,,,10.212879604829233 -tnc_shared_ASC_auto_deficient_atwork,-3.912212918042727,-4.5088999999999997,0,,,-3.912212918042727 -tnc_shared_ASC_auto_sufficient_atwork,-2.6881377816112022,-3.5396999999999998,0,,,-2.6881377816112022 -tnc_shared_ASC_no_auto_atwork,9.0603158795129275,3.3672,0,,,9.0603158795129275 -tnc_single_ASC_auto_deficient_atwork,-3.1078735470600058,-3.7625999999999999,0,,,-3.1078735470600058 -tnc_single_ASC_auto_sufficient_atwork,-2.6270251391593975,-2.7988,0,,,-2.6270251391593975 -tnc_single_ASC_no_auto_atwork,10.48194785788473,4.4981999999999998,0,,,10.48194785788473 -walk_ASC_auto_deficient_atwork,1.82422508083581,0.92546092999999996,0,,,1.82422508083581 -walk_ASC_auto_sufficient_atwork,1.428722206355812,0.67721600000000004,0,,,1.428722206355812 -walk_ASC_no_auto_atwork,12.824108683156906,6.6692130000000001,0,,,12.824108683156906 -walk_transit_ASC_auto_deficient_atwork,8.9851772342267946,-2.9988291,0,,,8.9851772342267946 -walk_transit_ASC_auto_sufficient_atwork,9.1279962633935359,-3.401027,0,,,9.1279962633935359 -walk_transit_ASC_no_auto_atwork,21.234895822541418,2.7041876,0,,,21.234895822541418 -walk_transit_CBD_ASC_atwork,0.35194949771152162,0.56399999999999995,0,,,0.35194949771152162 +param_name,value,best,initvalue,nullvalue +-999,-999,-999,-999,0 +1,1,1,1,0 +bike_ASC_auto_deficient_atwork,-1.3785489288550536,-1.3785489288550536,-0.80740827322006226,0 +bike_ASC_auto_deficient_eatout,-13.478289059952681,-13.478289059952681,-1.569110631942749,0 +bike_ASC_auto_deficient_escort,-12.549532816371221,-12.549532816371221,-4.5279278755187988,0 +bike_ASC_auto_deficient_othdiscr,0.23084257669564343,0.23084257669564343,-0.092468343675136566,0 +bike_ASC_auto_deficient_othmaint,-1.5508409145945901,-1.5508409145945901,-1.5184649229049683,0 +bike_ASC_auto_deficient_school,-0.4215455293721031,-0.4215455293721031,-0.52806782722473145,0 +bike_ASC_auto_deficient_shopping,-0.98162820928675221,-0.98162820928675221,-0.87584465742111206,0 +bike_ASC_auto_deficient_social,-0.26248269451457257,-0.26248269451457257,0.63452142477035522,0 +bike_ASC_auto_deficient_univ,-0.6692349910736084,-0.6692349910736084,-0.6692349910736084,0 +bike_ASC_auto_deficient_work,0.10890208866785125,0.10890208866785125,0.25318968296051025,0 +bike_ASC_auto_sufficient_atwork,15.720436744241237,15.720436744241237,15.720170021057129,0 +bike_ASC_auto_sufficient_eatout,-1.4652985888010346,-1.4652985888010346,-1.2003470659255981,0 +bike_ASC_auto_sufficient_escort,-4.2292784418487299,-4.2292784418487299,-5.0631084442138672,0 +bike_ASC_auto_sufficient_othdiscr,-1.9171536174387396,-1.9171536174387396,-1.0714596509933472,0 +bike_ASC_auto_sufficient_othmaint,-2.480889498913136,-2.480889498913136,-2.8083024024963379,0 +bike_ASC_auto_sufficient_school,-3.5085898921949115,-3.5085898921949115,-2.1134686470031738,0 +bike_ASC_auto_sufficient_shopping,-4.7741583038198092,-4.7741583038198092,-2.5662102699279785,0 +bike_ASC_auto_sufficient_social,-0.84654185177446273,-0.84654185177446273,-1.3680709600448608,0 +bike_ASC_auto_sufficient_univ,-1.9397832155227661,-1.9397832155227661,-1.9397832155227661,0 +bike_ASC_auto_sufficient_work,-1.7160300530004202,-1.7160300530004202,-1.5800231695175171,0 +bike_ASC_no_auto_atwork,-3.4373940217027688,-3.4373940217027688,-0.90725845098495483,0 +bike_ASC_no_auto_eatout,2.5630036190317327,2.5630036190317327,0.86807096004486084,0 +bike_ASC_no_auto_escort,-10.607463256083799,-10.607463256083799,-0.71621197462081909,0 +bike_ASC_no_auto_othdiscr,0.81582185622492365,0.81582185622492365,-0.37642320990562439,0 +bike_ASC_no_auto_othmaint,2.4455151268361357,2.4455151268361357,1.5394333600997925,0 +bike_ASC_no_auto_school,8.1256976107813834,8.1256976107813834,12.098734855651855,0 +bike_ASC_no_auto_shopping,1.7027997220715445,1.7027997220715445,0.83415549993515015,0 +bike_ASC_no_auto_social,0.87324419595226233,0.87324419595226233,0.02058321051299572,0 +bike_ASC_no_auto_univ,4.2945156097412109,4.2945156097412109,4.2945156097412109,0 +bike_ASC_no_auto_work,3.288259145708162,3.288259145708162,3.1940088272094727,0 +coef_age010_trn_multiplier_atwork,0.00072200002614408731,0.00072200002614408731,0.00072200002614408731,0 +coef_age010_trn_multiplier_eatout_escort_othdiscr_othmaint_shopping_social_work,0.71776731826369955,0.71776731826369955,0,0 +coef_age010_trn_multiplier_school_univ,-1.1170494621014921,-1.1170494621014921,-1.5548000335693359,0 +coef_age1619_da_multiplier_atwork,-0.81723517651260913,-0.81723517651260913,0.0032335999421775341,0 +coef_age1619_da_multiplier_eatout_escort_othdiscr_othmaint_shopping_social_work,-0.019963399047300222,-0.019963399047300222,0,0 +coef_age1619_da_multiplier_school_univ,-1.5953290804661184,-1.5953290804661184,-1.3812999725341797,0 +coef_age16p_sr_multiplier_eatout_escort_othdiscr_othmaint_shopping_social,-1.1377269298937951,-1.1377269298937951,-1.3660000562667847,0 +coef_age16p_sr_multiplier_school_univ_work_atwork,-0.70763139612535009,-0.70763139612535009,0,0 +coef_hhsize1_sr_multiplier_eatout_escort_othdiscr_othmaint_school_shopping_social_univ_atwork,0.020926329864022951,0.020926329864022951,0,0 +coef_hhsize1_sr_multiplier_work,-0.678704061342841,-0.678704061342841,-0.73458802700042725,0 +coef_hhsize2_sr_multiplier_eatout_escort_othdiscr_othmaint_shopping_social_work_atwork,-0.0037484351975650902,-0.0037484351975650902,0,0 +coef_hhsize2_sr_multiplier_school_univ,-0.52956030309171354,-0.52956030309171354,-0.63590002059936523,0 +coef_ivt_atwork,-0.021030839623199092,-0.021030839623199092,-0.018799999728798866,0 +coef_ivt_eatout_escort_othdiscr_othmaint_shopping_social,-0.016938907736903215,-0.016938907736903215,-0.017500000074505806,0 +coef_ivt_school_univ,-0.021216638430089751,-0.021216638430089751,-0.02239999920129776,0 +coef_ivt_work,-0.01305918522300771,-0.01305918522300771,-0.013399999588727951,0 +coef_nest_AUTO,0.72000002861022949,0.72000002861022949,0.72000002861022949,1 +coef_nest_AUTO_DRIVEALONE,0.34999999403953552,0.34999999403953552,0.34999999403953552,1 +coef_nest_AUTO_SHAREDRIDE2,0.34999999403953552,0.34999999403953552,0.34999999403953552,1 +coef_nest_AUTO_SHAREDRIDE3,0.34999999403953552,0.34999999403953552,0.34999999403953552,1 +coef_nest_NONMOTORIZED,0.72000002861022949,0.72000002861022949,0.72000002861022949,1 +coef_nest_RIDEHAIL,0.36000001430511475,0.36000001430511475,0.36000001430511475,1 +coef_nest_TRANSIT,0.72000002861022949,0.72000002861022949,0.72000002861022949,1 +coef_nest_TRANSIT_DRIVEACCESS,0.5,0.5,0.5,1 +coef_nest_TRANSIT_WALKACCESS,0.5,0.5,0.5,1 +commuter_rail_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork,-2.8955274103001964,-2.8955274103001964,0.72701847553253174,0 +commuter_rail_ASC_school_univ,-0.3828325284031272,-0.3828325284031272,1.0336205959320068,0 +commuter_rail_ASC_work,2.8534564834779914,2.8534564834779914,0.72550302743911743,0 +drive_ferry_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork,0.9401237964630127,0.9401237964630127,0.9401237964630127,0 +drive_ferry_ASC_school_univ,2.0202317237854004,2.0202317237854004,2.0202317237854004,0 +drive_ferry_ASC_work,0.93322604894638062,0.93322604894638062,0.93322604894638062,0 +drive_light_rail_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork,-1.00533509415796,-1.00533509415796,0.76895475387573242,0 +drive_light_rail_ASC_school_univ,1.4260795934130517,1.4260795934130517,1.6814002990722656,0 +drive_light_rail_ASC_work,-3.2587187286001322,-3.2587187286001322,0.82555669546127319,0 +drive_transit_ASC_auto_deficient_atwork,-998.819580078125,-998.819580078125,-998.819580078125,0 +drive_transit_ASC_auto_deficient_eatout,3.5996749037366738,3.5996749037366738,0.59980607032775879,0 +drive_transit_ASC_auto_deficient_escort,0.92276171873072177,0.92276171873072177,-1.1537066698074341,0 +drive_transit_ASC_auto_deficient_othdiscr,-6.8970438511600394,-6.8970438511600394,0.3199307918548584,0 +drive_transit_ASC_auto_deficient_othmaint,-8.1349064582353137,-8.1349064582353137,-0.29943227767944336,0 +drive_transit_ASC_auto_deficient_school,-7.2801790952573704,-7.2801790952573704,5.3252654075622559,0 +drive_transit_ASC_auto_deficient_shopping,-9.1219590941274866,-9.1219590941274866,-0.41849178075790405,0 +drive_transit_ASC_auto_deficient_social,-4.499078495566291,-4.499078495566291,1.562719464302063,0 +drive_transit_ASC_auto_deficient_univ,1.850117564201355,1.850117564201355,1.850117564201355,0 +drive_transit_ASC_auto_deficient_work,-1.5562979857982473,-1.5562979857982473,0.10081566870212555,0 +drive_transit_ASC_auto_sufficient_atwork,-999.21466064453125,-999.21466064453125,-999.21466064453125,0 +drive_transit_ASC_auto_sufficient_eatout,1.0207079688485654,1.0207079688485654,-0.96951586008071899,0 +drive_transit_ASC_auto_sufficient_escort,-7.9500240568205331,-7.9500240568205331,-4.6014246940612793,0 +drive_transit_ASC_auto_sufficient_othdiscr,0.25224567100130202,0.25224567100130202,-0.37859168648719788,0 +drive_transit_ASC_auto_sufficient_othmaint,-5.4951856025086832,-5.4951856025086832,-2.6249477863311768,0 +drive_transit_ASC_auto_sufficient_school,-3.3190578583246007,-3.3190578583246007,1.4013500213623047,0 +drive_transit_ASC_auto_sufficient_shopping,-11.522003993598938,-11.522003993598938,-2.171893835067749,0 +drive_transit_ASC_auto_sufficient_social,-5.7724175852315387,-5.7724175852315387,-0.61585575342178345,0 +drive_transit_ASC_auto_sufficient_univ,1.35877525806427,1.35877525806427,1.35877525806427,0 +drive_transit_ASC_auto_sufficient_work,-2.6606417198651755,-2.6606417198651755,-1.0045459270477295,0 +drive_transit_ASC_no_auto_all,0,0,0,0 +drive_transit_CBD_ASC_atwork,0.56400001049041748,0.56400001049041748,0.56400001049041748,0 +drive_transit_CBD_ASC_eatout_escort_othdiscr_othmaint_shopping_social,0.57243952183743552,0.57243952183743552,0.52499997615814209,0 +drive_transit_CBD_ASC_school_univ,8.6081678280152776,8.6081678280152776,0.67199999094009399,0 +drive_transit_CBD_ASC_work,1.4288229016936926,1.4288229016936926,1.1000000238418579,0 +express_bus_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork,-8.1976039135865104,-8.1976039135865104,0.96923160552978516,0 +express_bus_ASC_school_univ,0.32496938109397888,0.32496938109397888,0.32496938109397888,0 +express_bus_ASC_work,-8.6406993130396952,-8.6406993130396952,-0.51654738187789917,0 +heavy_rail_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork,-0.2687341241545948,-0.2687341241545948,0.77061212062835693,0 +heavy_rail_ASC_school_univ,-1.3601210931327823,-1.3601210931327823,0.96200376749038696,0 +heavy_rail_ASC_work,1.7664108281965281,1.7664108281965281,0.64772975444793701,0 +joint_bike_ASC_auto_deficient_all,-22.84817785648125,-22.84817785648125,-6.0764150619506836,0 +joint_bike_ASC_auto_sufficient_all,-18.668876824664544,-18.668876824664544,-6.376065731048584,0 +joint_bike_ASC_no_auto_all,-7.3396332420646599,-7.3396332420646599,-2.8671598434448242,0 +joint_drive_transit_ASC_auto_deficient_all,-8.4548732733491221,-8.4548732733491221,-5.963221549987793,0 +joint_drive_transit_ASC_auto_sufficient_all,-9.2618141878214857,-9.2618141878214857,-8.0452852249145508,0 +joint_drive_transit_ASC_no_auto_all,0,0,0,0 +joint_sr2_ASC_auto_deficient_all,0,0,0,0 +joint_sr2_ASC_auto_sufficient_all,0,0,0,0 +joint_sr2_ASC_no_auto_all,0,0,0,0 +joint_sr3p_ASC_auto_deficient_all,-5.2973107825320627,-5.2973107825320627,-1.8841692209243774,0 +joint_sr3p_ASC_auto_sufficient_all,-3.3177208022324396,-3.3177208022324396,-2.2348260879516602,0 +joint_sr3p_ASC_no_auto_all,0.9763115464901333,0.9763115464901333,0.56306707859039307,0 +joint_taxi_ASC_auto_deficient_all,-12.577952947400721,-12.577952947400721,-9.815699577331543,0 +joint_taxi_ASC_auto_sufficient_all,-11.70989990234375,-11.70989990234375,-11.70989990234375,0 +joint_taxi_ASC_no_auto_all,-4.7921931444441226,-4.7921931444441226,-4.5791997909545898,0 +joint_tnc_shared_ASC_auto_deficient_all,-12.022080317768388,-12.022080317768388,-11.157199859619141,0 +joint_tnc_shared_ASC_auto_sufficient_all,-13.204999923706055,-13.204999923706055,-13.204999923706055,0 +joint_tnc_shared_ASC_no_auto_all,-5.9034013591354828,-5.9034013591354828,-4.3001999855041504,0 +joint_tnc_single_ASC_auto_deficient_all,-13.355636964329875,-13.355636964329875,-9.8961000442504883,0 +joint_tnc_single_ASC_auto_sufficient_all,-14.015899658203125,-14.015899658203125,-14.015899658203125,0 +joint_tnc_single_ASC_no_auto_all,-5.009675416114411,-5.009675416114411,-4.4917001724243164,0 +joint_walk_ASC_auto_deficient_all,-1.2526625344808935,-1.2526625344808935,-1.9607706069946289,0 +joint_walk_ASC_auto_sufficient_all,-3.6119496905604156,-3.6119496905604156,-3.2352156639099121,0 +joint_walk_ASC_no_auto_all,0.98244579409876942,0.98244579409876942,-0.2127470076084137,0 +joint_walk_transit_ASC_auto_deficient_all,-6.5618299422805499,-6.5618299422805499,-5.1634483337402344,0 +joint_walk_transit_ASC_auto_sufficient_all,-18.264613488805086,-18.264613488805086,-18.264533996582031,0 +joint_walk_transit_ASC_no_auto_all,2.5094922199299332,2.5094922199299332,0.62292414903640747,0 +local_bus_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork,-1.5144190210177051,-1.5144190210177051,-0.090703263878822327,0 +local_bus_ASC_school_univ,-2.852538439833872,-2.852538439833872,-0.065086208283901215,0 +local_bus_ASC_work,1.0297166490275502,1.0297166490275502,0.066895067691802979,0 +sr2_ASC_auto_deficient_atwork,-1.9094866667887815,-1.9094866667887815,-2.1102421283721924,0 +sr2_ASC_auto_deficient_eatout,0.23429452839706041,0.23429452839706041,0.58823448419570923,0 +sr2_ASC_auto_deficient_escort,-0.032021381539029239,-0.032021381539029239,0,0 +sr2_ASC_auto_deficient_othdiscr,0.73598217389056986,0.73598217389056986,0.66015130281448364,0 +sr2_ASC_auto_deficient_othmaint,-0.17552012261202324,-0.17552012261202324,0.26215270161628723,0 +sr2_ASC_auto_deficient_school,0.11222789392186802,0.11222789392186802,0.12474364787340164,0 +sr2_ASC_auto_deficient_shopping,0.33836795233816952,0.33836795233816952,0.24409756064414978,0 +sr2_ASC_auto_deficient_social,1.4262844532463008,1.4262844532463008,1.8558528423309326,0 +sr2_ASC_auto_deficient_univ,-1.6922346353530884,-1.6922346353530884,-1.6922346353530884,0 +sr2_ASC_auto_deficient_work,0.44950161477737804,0.44950161477737804,-0.33803123235702515,0 +sr2_ASC_auto_sufficient_atwork,-0.66637185986313596,-0.66637185986313596,-1.4450618028640747,0 +sr2_ASC_auto_sufficient_eatout,0.45475593913715445,0.45475593913715445,0.86280554533004761,0 +sr2_ASC_auto_sufficient_escort,-0.44615942757653276,-0.44615942757653276,0,0 +sr2_ASC_auto_sufficient_othdiscr,0.12095797623142351,0.12095797623142351,0.49684616923332214,0 +sr2_ASC_auto_sufficient_othmaint,0.21943868621422019,0.21943868621422019,0.25817883014678955,0 +sr2_ASC_auto_sufficient_school,-1.6559796285505484,-1.6559796285505484,-1.606265664100647,0 +sr2_ASC_auto_sufficient_shopping,0.14231536811282997,0.14231536811282997,0.19770707190036774,0 +sr2_ASC_auto_sufficient_social,0.97606425892784854,0.97606425892784854,0.52360248565673828,0 +sr2_ASC_auto_sufficient_univ,-1.8594269752502441,-1.8594269752502441,-1.8594269752502441,0 +sr2_ASC_auto_sufficient_work,-0.40462357614303501,-0.40462357614303501,-1.0857458114624023,0 +sr2_ASC_no_auto_all,0.65836707734318189,0.65836707734318189,0,0 +sr3p_ASC_auto_deficient_atwork,-2.3999666913655822,-2.3999666913655822,-2.5146579742431641,0 +sr3p_ASC_auto_deficient_eatout,-0.085344760431453157,-0.085344760431453157,0.046052359044551849,0 +sr3p_ASC_auto_deficient_escort,-0.24492200273215967,-0.24492200273215967,-0.40818765759468079,0 +sr3p_ASC_auto_deficient_othdiscr,0.93306879923521158,0.93306879923521158,1.0470966100692749,0 +sr3p_ASC_auto_deficient_othmaint,-1.7736904601254642,-1.7736904601254642,-1.3493925333023071,0 +sr3p_ASC_auto_deficient_school,0.71657100822891162,0.71657100822891162,0.71495711803436279,0 +sr3p_ASC_auto_deficient_shopping,-0.26599380509424975,-0.26599380509424975,-0.073370166122913361,0 +sr3p_ASC_auto_deficient_social,0.67432169413520315,0.67432169413520315,1.5007243156433105,0 +sr3p_ASC_auto_deficient_univ,-1.7277421951293945,-1.7277421951293945,-1.7277421951293945,0 +sr3p_ASC_auto_deficient_work,-0.063730631602187782,-0.063730631602187782,-0.85270422697067261,0 +sr3p_ASC_auto_sufficient_atwork,-0.83596465725235203,-0.83596465725235203,-1.6521739959716797,0 +sr3p_ASC_auto_sufficient_eatout,0.49982576859422778,0.49982576859422778,0.84685957431793213,0 +sr3p_ASC_auto_sufficient_escort,-0.57373642946501302,-0.57373642946501302,-0.057412531226873398,0 +sr3p_ASC_auto_sufficient_othdiscr,0.24396131625033132,0.24396131625033132,0.58850204944610596,0 +sr3p_ASC_auto_sufficient_othmaint,-0.25319709341107671,-0.25319709341107671,-0.075498670339584351,0 +sr3p_ASC_auto_sufficient_school,-1.196349294926158,-1.196349294926158,-1.0201934576034546,0 +sr3p_ASC_auto_sufficient_shopping,-0.29852686793634708,-0.29852686793634708,-0.077571295201778412,0 +sr3p_ASC_auto_sufficient_social,0.75634628635235579,0.75634628635235579,0.50617885589599609,0 +sr3p_ASC_auto_sufficient_univ,-1.9047098159790039,-1.9047098159790039,-1.9047098159790039,0 +sr3p_ASC_auto_sufficient_work,-0.73008669627997913,-0.73008669627997913,-1.4699702262878418,0 +sr3p_ASC_no_auto_atwork,1.6002322091525814,1.6002322091525814,0.58266258239746094,0 +sr3p_ASC_no_auto_eatout,1.1611036802898103,1.1611036802898103,0.32199978828430176,0 +sr3p_ASC_no_auto_escort,-6.5215997863892774,-6.5215997863892774,-1.8129266500473022,0 +sr3p_ASC_no_auto_othdiscr,1.7619073585553018,1.7619073585553018,0.27216902375221252,0 +sr3p_ASC_no_auto_othmaint,-0.049178972746906281,-0.049178972746906281,-0.80318540334701538,0 +sr3p_ASC_no_auto_school,-6.0240826787580186,-6.0240826787580186,-6.0240826606750488,0 +sr3p_ASC_no_auto_shopping,1.0028021249170127,1.0028021249170127,-0.27978947758674622,0 +sr3p_ASC_no_auto_social,-0.66937012316605804,-0.66937012316605804,-1.4036902189254761,0 +sr3p_ASC_no_auto_univ,-6.0560011863708496,-6.0560011863708496,-6.0560011863708496,0 +sr3p_ASC_no_auto_work,0.64239374779348402,0.64239374779348402,-0.58312690258026123,0 +taxi_ASC_auto_deficient_atwork,-7.2764037594520028,-7.2764037594520028,-4.4046001434326172,0 +taxi_ASC_auto_deficient_eatout_othdiscr_social,-6.7605420231328042,-6.7605420231328042,-3.1317000389099121,0 +taxi_ASC_auto_deficient_escort_othmaint_shopping,0.2213151826043096,0.2213151826043096,0.17659999430179596,0 +taxi_ASC_auto_deficient_school,1.5944172505957981,1.5944172505957981,-0.33379998803138733,0 +taxi_ASC_auto_deficient_univ,4.2491998672485352,4.2491998672485352,4.2491998672485352,0 +taxi_ASC_auto_deficient_work,-1.3601107923957467,-1.3601107923957467,-1.4766000509262085,0 +taxi_ASC_auto_sufficient_atwork,-7.6889417664722703,-7.6889417664722703,-2.8803999423980713,0 +taxi_ASC_auto_sufficient_eatout_othdiscr_social,-2.3754735918032206,-2.3754735918032206,-3.0374000072479248,0 +taxi_ASC_auto_sufficient_escort_othmaint_shopping,-1.8726632364652462,-1.8726632364652462,-1.8055000305175781,0 +taxi_ASC_auto_sufficient_school,-1.6409158383067048,-1.6409158383067048,-2.4293999671936035,0 +taxi_ASC_auto_sufficient_univ,-0.31310001015663147,-0.31310001015663147,-0.31310001015663147,0 +taxi_ASC_auto_sufficient_work,-11.150302914208121,-11.150302914208121,-4.8509001731872559,0 +taxi_ASC_no_auto_atwork,5.6004501864721936,5.6004501864721936,4.1020998954772949,0 +taxi_ASC_no_auto_eatout_othdiscr_social,-5.524877879527982,-5.524877879527982,0.99229997396469116,0 +taxi_ASC_no_auto_escort_othmaint_shopping,2.717506622034064,2.717506622034064,1.8939000368118286,0 +taxi_ASC_no_auto_school_univ,-7,-7,-7,0 +taxi_ASC_no_auto_work,4.8041910743451384,4.8041910743451384,4.729100227355957,0 +tnc_shared_ASC_auto_deficient_atwork,-3.9149417364766528,-3.9149417364766528,-4.5089001655578613,0 +tnc_shared_ASC_auto_deficient_eatout_othdiscr_social,-2.9105616251102258,-2.9105616251102258,-4.357600212097168,0 +tnc_shared_ASC_auto_deficient_escort_othmaint_shopping,-0.24445326581262283,-0.24445326581262283,-0.38629999756813049,0 +tnc_shared_ASC_auto_deficient_school,0.96927830747475263,0.96927830747475263,-1.4745999574661255,0 +tnc_shared_ASC_auto_deficient_univ,3.25,3.25,3.25,0 +tnc_shared_ASC_auto_deficient_work,-2.4365489673978344,-2.4365489673978344,-2.1435000896453857,0 +tnc_shared_ASC_auto_sufficient_atwork,-2.6846061257948191,-2.6846061257948191,-3.5397000312805176,0 +tnc_shared_ASC_auto_sufficient_eatout_othdiscr_social,-3.4664907818210442,-3.4664907818210442,-3.6638000011444092,0 +tnc_shared_ASC_auto_sufficient_escort_othmaint_shopping,-2.7039112348695036,-2.7039112348695036,-2.436500072479248,0 +tnc_shared_ASC_auto_sufficient_school,-2.7805594188321878,-2.7805594188321878,-3.7218999862670898,0 +tnc_shared_ASC_auto_sufficient_univ,-0.90679997205734253,-0.90679997205734253,-0.90679997205734253,0 +tnc_shared_ASC_auto_sufficient_work,-13.430048024425519,-13.430048024425519,-5.3575000762939453,0 +tnc_shared_ASC_no_auto_atwork,4.4461611170955768,4.4461611170955768,3.3671998977661133,0 +tnc_shared_ASC_no_auto_eatout_othdiscr_social,0.86375506709409167,0.86375506709409167,0.64639997482299805,0 +tnc_shared_ASC_no_auto_escort_othmaint_shopping,2.0165028195789745,2.0165028195789745,0.93610000610351562,0 +tnc_shared_ASC_no_auto_school,-7,-7,-7,0 +tnc_shared_ASC_no_auto_univ,-5.8116002082824707,-5.8116002082824707,-5.8116002082824707,0 +tnc_shared_ASC_no_auto_work,-6.5293252685897798,-6.5293252685897798,3.2428998947143555,0 +tnc_single_ASC_auto_deficient_atwork,-3.1118349363927003,-3.1118349363927003,-3.7625999450683594,0 +tnc_single_ASC_auto_deficient_eatout_othdiscr_social,-7.3360155331762984,-7.3360155331762984,-2.9623000621795654,0 +tnc_single_ASC_auto_deficient_escort_othmaint_shopping,0.8959598290368338,0.8959598290368338,0.67479997873306274,0 +tnc_single_ASC_auto_deficient_school,-3.0337956000080539,-3.0337956000080539,-0.55239999294281006,0 +tnc_single_ASC_auto_deficient_univ,1.0220999717712402,1.0220999717712402,1.0220999717712402,0 +tnc_single_ASC_auto_deficient_work,-0.78880830732265783,-0.78880830732265783,-0.80129998922348022,0 +tnc_single_ASC_auto_sufficient_atwork,-2.6230381314800435,-2.6230381314800435,-2.798799991607666,0 +tnc_single_ASC_auto_sufficient_eatout_othdiscr_social,-2.0882039470803662,-2.0882039470803662,-2.3238999843597412,0 +tnc_single_ASC_auto_sufficient_escort_othmaint_shopping,-1.7439251866638874,-1.7439251866638874,-1.4500000476837158,0 +tnc_single_ASC_auto_sufficient_school,-2.378795283304973,-2.378795283304973,-2.8375000953674316,0 +tnc_single_ASC_auto_sufficient_univ,0.20880000293254852,0.20880000293254852,0.20880000293254852,0 +tnc_single_ASC_auto_sufficient_work,-4.8796439361869233,-4.8796439361869233,-4.1946001052856445,0 +tnc_single_ASC_no_auto_atwork,5.868382446572503,5.868382446572503,4.4981999397277832,0 +tnc_single_ASC_no_auto_eatout_othdiscr_social,2.058601711456534,2.058601711456534,1.6851999759674072,0 +tnc_single_ASC_no_auto_escort_othmaint_shopping,2.7993959582491117,2.7993959582491117,1.8604999780654907,0 +tnc_single_ASC_no_auto_school,-7,-7,-7,0 +tnc_single_ASC_no_auto_univ,-2.5190000534057617,-2.5190000534057617,-2.5190000534057617,0 +tnc_single_ASC_no_auto_work,5.6675312824616011,5.6675312824616011,5.7855000495910645,0 +walk_ASC_auto_deficient_atwork,1.8210925632413364,1.8210925632413364,0.92546093463897705,0 +walk_ASC_auto_deficient_eatout,2.9649591418002261,2.9649591418002261,3.2746050357818604,0 +walk_ASC_auto_deficient_escort,-13.769512531812302,-13.769512531812302,-0.9020465612411499,0 +walk_ASC_auto_deficient_othdiscr,1.6274733363939242,1.6274733363939242,2.2494075298309326,0 +walk_ASC_auto_deficient_othmaint,1.8279947844284075,1.8279947844284075,1.3690403699874878,0 +walk_ASC_auto_deficient_school,3.2339563304034473,3.2339563304034473,3.2573623657226562,0 +walk_ASC_auto_deficient_shopping,2.8058704655343694,2.8058704655343694,2.2701733112335205,0 +walk_ASC_auto_deficient_social,3.1684863104981793,3.1684863104981793,2.8701839447021484,0 +walk_ASC_auto_deficient_univ,4.5059099197387695,4.5059099197387695,4.5059099197387695,0 +walk_ASC_auto_deficient_work,2.1268287093168232,2.1268287093168232,2.4010417461395264,0 +walk_ASC_auto_sufficient_atwork,1.4286517853707388,1.4286517853707388,0.67721599340438843,0 +walk_ASC_auto_sufficient_eatout,0.80305835576573759,0.80305835576573759,1.5516903400421143,0 +walk_ASC_auto_sufficient_escort,-2.1981585731262334,-2.1981585731262334,-0.81160658597946167,0 +walk_ASC_auto_sufficient_othdiscr,1.0967272423894308,1.0967272423894308,1.2633476257324219,0 +walk_ASC_auto_sufficient_othmaint,0.88971042840976089,0.88971042840976089,0.79996341466903687,0 +walk_ASC_auto_sufficient_school,0.68722839921502121,0.68722839921502121,0.64768558740615845,0 +walk_ASC_auto_sufficient_shopping,0.47436724640285616,0.47436724640285616,0.7312663197517395,0 +walk_ASC_auto_sufficient_social,2.6647730016556324,2.6647730016556324,1.7072186470031738,0 +walk_ASC_auto_sufficient_univ,1.0607664585113525,1.0607664585113525,1.0607664585113525,0 +walk_ASC_auto_sufficient_work,0.17491465126971134,0.17491465126971134,0.053265336900949478,0 +walk_ASC_no_auto_atwork,8.2102539828822962,8.2102539828822962,6.669212818145752,0 +walk_ASC_no_auto_eatout,5.5759822208817997,5.5759822208817997,5.125117301940918,0 +walk_ASC_no_auto_escort,2.7125215072749826,2.7125215072749826,2.8012068271636963,0 +walk_ASC_no_auto_othdiscr,4.1301524515856975,4.1301524515856975,3.2665946483612061,0 +walk_ASC_no_auto_othmaint,1.6437718725168844,1.6437718725168844,1.2872990369796753,0 +walk_ASC_no_auto_school,18.965223978253537,18.965223978253537,18.414556503295898,0 +walk_ASC_no_auto_shopping,3.5712858700744139,3.5712858700744139,2.3768773078918457,0 +walk_ASC_no_auto_social,1.8061464852559324,1.8061464852559324,1.8680914640426636,0 +walk_ASC_no_auto_univ,6.4089670181274414,6.4089670181274414,6.4089670181274414,0 +walk_ASC_no_auto_work,5.7289551619084005,5.7289551619084005,5.7672157287597656,0 +walk_ferry_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork,0.9401237964630127,0.9401237964630127,0.9401237964630127,0 +walk_ferry_ASC_school_univ,2.0202317237854004,2.0202317237854004,2.0202317237854004,0 +walk_ferry_ASC_work,0.93322604894638062,0.93322604894638062,0.93322604894638062,0 +walk_light_rail_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork,-0.4992168746737472,-0.4992168746737472,0.76895475387573242,0 +walk_light_rail_ASC_school_univ,-1.1206738073437195,-1.1206738073437195,1.6814002990722656,0 +walk_light_rail_ASC_work,1.9458205366633916,1.9458205366633916,0.82555669546127319,0 +walk_transit_ASC_auto_deficient_atwork,-2.087745734137894,-2.087745734137894,-2.9988291263580322,0 +walk_transit_ASC_auto_deficient_eatout,1.2702715178798751,1.2702715178798751,-0.038963239639997482,0 +walk_transit_ASC_auto_deficient_escort,-2.3202251183894047,-2.3202251183894047,-4.9607038497924805,0 +walk_transit_ASC_auto_deficient_othdiscr,2.1954218795721774,2.1954218795721774,0.95308840274810791,0 +walk_transit_ASC_auto_deficient_othmaint,-1.660576732282677,-1.660576732282677,-3.0597257614135742,0 +walk_transit_ASC_auto_deficient_school,6.0476599437483385,6.0476599437483385,4.1207079887390137,0 +walk_transit_ASC_auto_deficient_shopping,0.18271202127675085,0.18271202127675085,-0.84765690565109253,0 +walk_transit_ASC_auto_deficient_social,1.8098477542350777,1.8098477542350777,0.97444486618041992,0 +walk_transit_ASC_auto_deficient_univ,3.1362555027008057,3.1362555027008057,3.1362555027008057,0 +walk_transit_ASC_auto_deficient_work,-0.51182083157614933,-0.51182083157614933,0.65302854776382446,0 +walk_transit_ASC_auto_sufficient_atwork,-1.9428971364123397,-1.9428971364123397,-3.4010269641876221,0 +walk_transit_ASC_auto_sufficient_eatout,-0.32161057194919468,-0.32161057194919468,-1.1126905679702759,0 +walk_transit_ASC_auto_sufficient_escort,-3.5001574343284574,-3.5001574343284574,-4.9348468780517578,0 +walk_transit_ASC_auto_sufficient_othdiscr,0.2299689022545045,0.2299689022545045,-0.80636793375015259,0 +walk_transit_ASC_auto_sufficient_othmaint,-0.1129332445243126,-0.1129332445243126,-1.5471172332763672,0 +walk_transit_ASC_auto_sufficient_school,3.1389271957703655,3.1389271957703655,0.74590873718261719,0 +walk_transit_ASC_auto_sufficient_shopping,-1.3189818719692306,-1.3189818719692306,-2.2036798000335693,0 +walk_transit_ASC_auto_sufficient_social,1.5414229264152464,1.5414229264152464,-0.34537589550018311,0 +walk_transit_ASC_auto_sufficient_univ,0.47311630845069885,0.47311630845069885,0.47311630845069885,0 +walk_transit_ASC_auto_sufficient_work,-2.068884016996956,-2.068884016996956,-0.89165067672729492,0 +walk_transit_ASC_no_auto_atwork,5.5473795796852494,5.5473795796852494,2.7041876316070557,0 +walk_transit_ASC_no_auto_eatout,4.7919626958724812,4.7919626958724812,2.5936367511749268,0 +walk_transit_ASC_no_auto_escort,-6.3455503549741206,-6.3455503549741206,-2.2172081470489502,0 +walk_transit_ASC_no_auto_othdiscr,4.7143623015036109,4.7143623015036109,2.2437784671783447,0 +walk_transit_ASC_no_auto_othmaint,4.9031528637634745,4.9031528637634745,2.5643455982208252,0 +walk_transit_ASC_no_auto_school,24.806205948504321,24.806205948504321,21.383749008178711,0 +walk_transit_ASC_no_auto_shopping,3.9873866943560854,3.9873866943560854,2.1067476272583008,0 +walk_transit_ASC_no_auto_social,3.2552848716526133,3.2552848716526133,1.3814650774002075,0 +walk_transit_ASC_no_auto_univ,8.7860374450683594,8.7860374450683594,8.7860374450683594,0 +walk_transit_ASC_no_auto_work,3.8120013671186221,3.8120013671186221,5.0354166030883789,0 +walk_transit_CBD_ASC_atwork,0.34851829905878767,0.34851829905878767,0.56400001049041748,0 +walk_transit_CBD_ASC_eatout_escort_othdiscr_othmaint_shopping_social,0.69144903771302224,0.69144903771302224,0.52499997615814209,0 +walk_transit_CBD_ASC_school_univ,0.78893465707209709,0.78893465707209709,0.67199999094009399,0 +walk_transit_CBD_ASC_work,0.97702352207787502,0.97702352207787502,0.80400002002716064,0 diff --git a/activitysim/estimation/test/test_larch_estimation/test_workplace_location.csv b/activitysim/estimation/test/test_larch_estimation/test_workplace_location.csv index 4fbab9890..528d77a9b 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_workplace_location.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_workplace_location.csv @@ -1,35 +1,35 @@ -,value,initvalue,nullvalue,minimum,maximum,best --999,-999,-999,-999,-999,-999,-999 -1,1,1,1,1,1,1 -coef_dist_0_1,-1.0822922946274103,-0.84279999999999999,0,-25,25,-1.0822922946274103 -coef_dist_0_5_high,0.1207879915621165,0.14999999999999999,0,-25,25,0.1207879915621165 -coef_dist_15_up,-0.091700000000000004,-0.091700000000000004,0,-25,25,-0.091700000000000004 -coef_dist_1_2,-0.24766620079389307,-0.31040000000000001,0,-25,25,-0.24766620079389307 -coef_dist_2_5,-0.3685512775196465,-0.37830000000000003,0,-25,25,-0.3685512775196465 -coef_dist_5_15,-0.15169975841932976,-0.1285,0,-25,25,-0.15169975841932976 -coef_dist_5_up_high,-0.015068815366553389,0.02,0,-25,25,-0.015068815366553389 -coef_mode_logsum,0.1608428973358158,0.29999999999999999,0,-25,25,0.1608428973358158 -work_high_AGREMPN,-5.414473039484391,-5.1159958097540823,0,-6,6,-5.414473039484391 -work_high_FPSEMPN,-2.0198354749074623,-1.575036485716768,0,-6,6,-2.0198354749074623 -work_high_HEREMPN,-1.5774962961301324,-1.258781040820931,0,-6,6,-1.5774962961301324 -work_high_MWTEMPN,-2.0728064576402221,-1.4312917270506265,0,-6,6,-2.0728064576402221 -work_high_OTHEMPN,-2.1440619487784449,-1.870802676568508,0,-6,6,-2.1440619487784449 -work_high_RETEMPN,-2.2072749131897207,-2.2072749131897207,0,-2.2072749131897207,-2.2072749131897207,-2.2072749131897207 -work_low_AGREMPN,-5.8479826351063204,-4.6051701859880909,0,-6,6,-5.8479826351063204 -work_low_FPSEMPN,-0.64550992870675994,-1.6450650900772514,0,-6,6,-0.64550992870675994 -work_low_HEREMPN,0.10934025159883133,-0.95972028980149104,0,-6,6,0.10934025159883133 -work_low_MWTEMPN,-0.35351399513998311,-1.8078888511579385,0,-6,6,-0.35351399513998311 -work_low_OTHEMPN,-0.68434316293298214,-2.120263536200091,0,-6,6,-0.68434316293298214 -work_low_RETEMPN,-2.0479428746204649,-2.0479428746204649,0,-2.0479428746204649,-2.0479428746204649,-2.0479428746204649 -work_med_AGREMPN,-6,-4.8283137373023015,0,-6,6,-6 -work_med_FPSEMPN,-1.9402118373687092,-1.6245515502441485,0,-6,6,-1.9402118373687092 -work_med_HEREMPN,-1.3812045016840873,-1.1239300966523995,0,-6,6,-1.3812045016840873 -work_med_MWTEMPN,-0.90824261771266779,-1.5606477482646683,0,-6,6,-0.90824261771266779 -work_med_OTHEMPN,-2.533158060495702,-1.9732813458514451,0,-6,6,-2.533158060495702 -work_med_RETEMPN,-2.120263536200091,-2.120263536200091,0,-2.120263536200091,-2.120263536200091,-2.120263536200091 -work_veryhigh_AGREMPN,-0.27766271475654764,-5.521460917862246,0,-6,6,-0.27766271475654764 -work_veryhigh_FPSEMPN,-1.7531684994723506,-1.3093333199837622,0,-6,6,-1.7531684994723506 -work_veryhigh_HEREMPN,-1.6190143529862893,-1.422958345491482,0,-6,6,-1.6190143529862893 -work_veryhigh_MWTEMPN,-1.7198536938187046,-1.4024237430497744,0,-6,6,-1.7198536938187046 -work_veryhigh_OTHEMPN,-2.4806660321461727,-1.9241486572738007,0,-6,6,-2.4806660321461727 -work_veryhigh_RETEMPN,-2.375155785828881,-2.375155785828881,0,-2.375155785828881,-2.375155785828881,-2.375155785828881 +param_name,value,best,initvalue,nullvalue +-999,-999,-999,-999,0 +1,1,1,1,0 +coef_dist_0_1,-0.30581956658755333,-0.30581956658755333,-0.84280002117156982,0 +coef_dist_0_5_high,-0.037591580411684179,-0.037591580411684179,0.15000000596046448,0 +coef_dist_15_up,-0.091700002551078796,-0.091700002551078796,-0.091700002551078796,0 +coef_dist_1_2,0.36403861650270469,0.36403861650270469,-0.31040000915527344,0 +coef_dist_2_5,0.074928140378863833,0.074928140378863833,-0.3783000111579895,0 +coef_dist_5_15,0.042013884570839009,0.042013884570839009,-0.12849999964237213,0 +coef_dist_5_up_high,-0.091028422362310263,-0.091028422362310263,0.019999999552965164,0 +coef_mode_logsum,0.30841772929564437,0.30841772929564437,0.30000001192092896,0 +work_high_AGREMPN,-5.1363934448871946,-5.1363934448871946,-5.1159958839416504,0 +work_high_FPSEMPN,-6,-6,-1.5750365257263184,0 +work_high_HEREMPN,-5.8758079453903402,-5.8758079453903402,-1.2587810754776001,0 +work_high_MWTEMPN,-6,-6,-1.4312916994094849,0 +work_high_OTHEMPN,-4.7871339627162968,-4.7871339627162968,-1.870802640914917,0 +work_high_RETEMPN,-2.2072749137878418,-2.2072749137878418,-2.2072749137878418,0 +work_low_AGREMPN,-4.62261674278023,-4.62261674278023,-4.6051702499389648,0 +work_low_FPSEMPN,-6,-6,-1.6450650691986084,0 +work_low_HEREMPN,-5.0606787642354085,-5.0606787642354085,-0.95972031354904175,0 +work_low_MWTEMPN,-5.9999999999999991,-5.9999999999999991,-1.8078888654708862,0 +work_low_OTHEMPN,-4.6880188560666634,-4.6880188560666634,-2.1202635765075684,0 +work_low_RETEMPN,-2.0479428768157959,-2.0479428768157959,-2.0479428768157959,0 +work_med_AGREMPN,-4.8408567797905402,-4.8408567797905402,-4.8283138275146484,0 +work_med_FPSEMPN,-6,-6,-1.62455153465271,0 +work_med_HEREMPN,-5.4208328700623296,-5.4208328700623296,-1.1239300966262817,0 +work_med_MWTEMPN,-5.8367726149021344,-5.8367726149021344,-1.56064772605896,0 +work_med_OTHEMPN,-4.8724459817438781,-4.8724459817438781,-1.9732813835144043,0 +work_med_RETEMPN,-2.1202635765075684,-2.1202635765075684,-2.1202635765075684,0 +work_veryhigh_AGREMPN,-5.543114854785494,-5.543114854785494,-5.521461009979248,0 +work_veryhigh_FPSEMPN,-6,-6,-1.309333324432373,0 +work_veryhigh_HEREMPN,-5.6530572756846489,-5.6530572756846489,-1.4229583740234375,0 +work_veryhigh_MWTEMPN,-6,-6,-1.4024237394332886,0 +work_veryhigh_OTHEMPN,-5.8240005358464035,-5.8240005358464035,-1.9241486787796021,0 +work_veryhigh_RETEMPN,-2.3751556873321533,-2.3751556873321533,-2.3751556873321533,0 diff --git a/activitysim/estimation/test/test_larch_estimation/test_workplace_location_loglike.csv b/activitysim/estimation/test/test_larch_estimation/test_workplace_location_loglike.csv index 71e9b13b1..dcd02282b 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_workplace_location_loglike.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_workplace_location_loglike.csv @@ -1,2 +1,2 @@ ,loglike_prior,loglike_converge -0,-13535.154991016063,-13520.930381371694 +0,-8694.16639312677943963,-7268.65904321087054996 diff --git a/activitysim/estimation/test/test_larch_estimation/test_workplace_location_size_spec.csv b/activitysim/estimation/test/test_larch_estimation/test_workplace_location_size_spec.csv index b568bafc7..f6d6b1746 100644 --- a/activitysim/estimation/test/test_larch_estimation/test_workplace_location_size_spec.csv +++ b/activitysim/estimation/test/test_larch_estimation/test_workplace_location_size_spec.csv @@ -1,8 +1,8 @@ ,segment,model_selector,TOTHH,RETEMPN,FPSEMPN,HEREMPN,OTHEMPN,AGREMPN,MWTEMPN,AGE0519,HSENROLL,COLLFTE,COLLPTE -0,work_low,workplace,0,0.04331096924066484,0.17606247084331519,0.37453642466033488,0.16935644669165648,0.000968861288590913,0.23576482727543777,0,0,0,0 -1,work_med,workplace,0,0.11999183383359351,0.14366373395357587,0.25125860903337882,0.079402445282216183,0.0024785834941433989,0.40320479440309209,0,0,0,0 -2,work_high,workplace,0,0.15790294154771911,0.19045576988955706,0.29641460514585227,0.1682066889662423,0.0063903077215986892,0.18062968672903063,0,0,0,0 -3,work_veryhigh,workplace,0,0.062641019242734242,0.11667678718376452,0.13342796655219047,0.056368476597385232,0.51025642529636983,0.12062932512755588,0,0,0,0 +0,work_low,workplace,0,0.8096367605074406,0.015557278192424053,0.039799319567405213,0.057772317445170702,0.06167704609513544,0.015557278192424065,0,0,0,0 +1,work_med,workplace,0,0.8254493658270311,0.017050704122867678,0.030427859824865577,0.052654174261774579,0.054344027646221538,0.020073868317239382,0,0,0,0 +2,work_high,workplace,0,0.83346467076784692,0.018781385164327268,0.02126490971714939,0.063163857701673223,0.044543791484676111,0.018781385164327268,0,0,0,0 +3,work_veryhigh,workplace,0,0.85845344910642152,0.022880571461814655,0.032369961125427262,0.027283649594894748,0.03613179724962709,0.022880571461814655,0,0,0,0 4,university,school,0,0,0,0,0,0,0,0,0,0.59199999999999997,0.40799999999999997 5,gradeschool,school,0,0,0,0,0,0,0,1,0,0,0 6,highschool,school,0,0,0,0,0,0,0,0,1,0,0 diff --git a/activitysim/examples/example_estimation/build_full_mtc_example.py b/activitysim/examples/example_estimation/build_full_mtc_example.py new file mode 100644 index 000000000..63878a715 --- /dev/null +++ b/activitysim/examples/example_estimation/build_full_mtc_example.py @@ -0,0 +1,196 @@ +""" +This script builds estimation data bundles for the full MTC example for ActivitySim. + +It does so by running ActivitySim twice: once to create synthetic survey data and then +a second time to create the estimation data bundles. For "real" applications, the +synthetic survey data would not be generated by ActivitySim; it would be real survey data. + +It downloads the necessary example data, runs the ActivitySim model with specified configurations, +and processes the output data. The script accepts the working directory and household sample size +as command-line arguments. + +Functions: + download_example(download_dir: Path) -> Path: + Downloads the prototype MTC extended example data to the specified directory. + + main(working_dir: Path, household_sample_size: int): + Main function that sets up directories, runs the ActivitySim model, and processes the output data. + +Usage: + python build-full-mtc.py -d -s + +Arguments: + -d, --directory: Directory to use as the working directory. Defaults to '/tmp/edb-test'. + -s, --household_sample_size: Household sample size. Defaults to 2000. +""" + +from __future__ import annotations + +import argparse +import os +import shutil +import subprocess +import sys +import time +from pathlib import Path + +from activitysim.examples.external import download_external_example + + +def download_example(download_dir): + example_dir = download_external_example( + name="prototype_mtc_extended", + working_dir=download_dir, + url="https://github.com/ActivitySim/activitysim-prototype-mtc/archive/refs/heads/extended.tar.gz", + assets={ + "data_full.tar.zst": { + "url": "https://github.com/ActivitySim/activitysim-prototype-mtc/releases/download/v1.3.4/data_full.tar.zst", + "sha256": "b402506a61055e2d38621416dd9a5c7e3cf7517c0a9ae5869f6d760c03284ef3", + "unpack": "data_full", + }, + "test/prototype_mtc_reference_pipeline.zip": { + "url": "https://github.com/ActivitySim/activitysim-prototype-mtc/releases/download/v1.3.2/prototype_mtc_extended_reference_pipeline.zip", + "sha256": "4d94b6a8a83225dda17e9ca19c9110bc1df2df5b4b362effa153d1c8d31524f5", + }, + }, + ) + return example_dir + + +def main(working_dir: Path, household_sample_size: int, skip_to_edb: bool = False): + working_dir = Path(working_dir) + working_dir.mkdir(parents=True, exist_ok=True) + + script_dir = Path(__file__).resolve().parent + infer_py = script_dir / "scripts" / "infer.py" + + print(f'The current CONDA environment is {os.getenv("CONDA_DEFAULT_ENV")}') + + configs_dir = working_dir / "activitysim-prototype-mtc-extended" / "configs" + full_data_dir = working_dir / "activitysim-prototype-mtc-extended" / "data_full" + pseudosurvey_dir = working_dir / "activitysim-prototype-mtc-extended" / "output" + + if not skip_to_edb: + download_example(working_dir) + + subprocess.run( + [ + sys.executable, + "-m", + "activitysim", + "run", + "-c", + str(configs_dir), + "-d", + str(full_data_dir), + "-o", + str(pseudosurvey_dir), + "--households_sample_size", + str(household_sample_size), + ], + check=True, + ) + + survey_data_dir = pseudosurvey_dir / "survey_data" + survey_data_dir.mkdir(parents=True, exist_ok=True) + + for file in pseudosurvey_dir.glob("final_*.csv"): + shutil.copy(str(file), str(survey_data_dir)) + + files_to_copy = [ + "final_households.csv", + "final_persons.csv", + "final_tours.csv", + "final_joint_tour_participants.csv", + "final_trips.csv", + ] + + for file_name in files_to_copy: + src = pseudosurvey_dir / file_name + dest = survey_data_dir / file_name.replace("final_", "survey_") + shutil.copy(src, dest) + + output_dir = working_dir / "infer-output" + output_dir.mkdir(parents=True, exist_ok=True) + output_dir.joinpath(".gitignore").write_text("**\n") + + subprocess.run( + [ + sys.executable, + str(infer_py), + str(pseudosurvey_dir), + str(configs_dir), + str(output_dir), + ], + check=True, + ) + + for file in output_dir.glob("override_*.csv"): + shutil.copy(str(file), str(full_data_dir)) + + edb_dir = working_dir / "activitysim-prototype-mtc-extended" / "output-est-mode" + edb_dir.mkdir(parents=True, exist_ok=True) + + subprocess.run( + [ + sys.executable, + "-m", + "activitysim", + "run", + "-c", + str(script_dir / "configs_estimation"), + "-c", + str(configs_dir), + "-d", + str(full_data_dir), + "-o", + str(edb_dir), + ], + check=True, + ) + + # mark the entire created directory as ignored for git + edb_dir.parent.joinpath(".gitignore").write_text("**\n") + + # create a success.txt file to indicate that the EDB was successfully built + completed_at = time.strftime("%Y-%m-%d %H:%M:%S") + edb_dir.joinpath("success.txt").write_text( + f"Successfully built the full MTC estimation data bundle example with {household_sample_size} households.\n" + f"Completed at {completed_at}" + ) + + +def as_needed(working_dir: Path, household_sample_size: int): + """Check if the EDB directory has already been built. If not, build it.""" + edb_dir = ( + Path(working_dir) / "activitysim-prototype-mtc-extended" / "output-est-mode" + ) + if not edb_dir.joinpath("success.txt").exists(): + main(working_dir, household_sample_size) + else: + print("EDB directory already populated.") + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="Build the full MTC example.") + parser.add_argument( + "-d", + "--directory", + type=str, + default="/tmp/edb-test", + help="Directory to use as the working directory. Defaults to '/tmp/edb-test'.", + ) + parser.add_argument( + "-s", + "--household_sample_size", + type=int, + default=2000, + help="Household sample size. Defaults to 2000.", + ) + parser.add_argument( + "--skip_to_edb", + action="store_true", + help="Skip to EDB step. Defaults to False.", + ) + args = parser.parse_args() + main(args.directory, args.household_sample_size, args.skip_to_edb) diff --git a/activitysim/examples/example_estimation/configs/estimation.yaml b/activitysim/examples/example_estimation/configs/estimation.yaml index 7e8112c0f..0c86d786d 100644 --- a/activitysim/examples/example_estimation/configs/estimation.yaml +++ b/activitysim/examples/example_estimation/configs/estimation.yaml @@ -49,55 +49,7 @@ survey_tables: file_name: survey_data/override_trips.csv index_col: trip_id -estimation_table_recipes: - - interaction_sample_simulate: - omnibus_tables: - choosers_combined: - - choices - - override_choices - - choosers - alternatives_combined: - - interaction_sample_alternatives - - interaction_expression_values - omnibus_tables_append_columns: [choosers_combined] - - interaction_simulate: - omnibus_tables: - choosers_combined: - - choices - - override_choices - - choosers - omnibus_tables_append_columns: [choosers_combined] - - simple_simulate: - omnibus_tables: - values_combined: - - choices - - override_choices - - expression_values - - choosers - omnibus_tables_append_columns: [values_combined] - - cdap_simulate: - omnibus_tables: - values_combined: - - choices - - override_choices - - choosers - omnibus_tables_append_columns: [values_combined] - - simple_probabilistic: - omnibus_tables: - values_combined: - - choices - - override_choices - - choosers - - probs - omnibus_tables_append_columns: [values_combined] - - -model_estimation_table_types: +estimation_table_types: school_location: interaction_sample_simulate workplace_location: interaction_sample_simulate auto_ownership: simple_simulate diff --git a/activitysim/examples/example_estimation/configs_estimation/estimation.yaml b/activitysim/examples/example_estimation/configs_estimation/estimation.yaml new file mode 100644 index 000000000..dd9cd0c24 --- /dev/null +++ b/activitysim/examples/example_estimation/configs_estimation/estimation.yaml @@ -0,0 +1,80 @@ +EDB_FILETYPE: parquet # options: csv, parquet, pkl + +enable: True + +bundles: + - school_location + - workplace_location + - auto_ownership + - vehicle_type_choice + - free_parking + - cdap + - mandatory_tour_frequency + - mandatory_tour_scheduling_work + - mandatory_tour_scheduling_school + - joint_tour_frequency + - joint_tour_composition + - joint_tour_participation + - joint_tour_destination + - joint_tour_scheduling + - non_mandatory_tour_frequency + - non_mandatory_tour_destination + - non_mandatory_tour_scheduling + - tour_mode_choice + - atwork_subtour_frequency + - atwork_subtour_destination + - atwork_subtour_scheduling + - atwork_subtour_mode_choice + - stop_frequency + - trip_purpose + - trip_destination + - trip_scheduling + - trip_mode_choice + +# - atwork_subtour_mode_choice subtours.tour_mode + +survey_tables: + households: + file_name: override_households.csv + index_col: household_id + persons: + file_name: override_persons.csv + index_col: person_id + tours: + file_name: override_tours.csv + index_col: tour_id + joint_tour_participants: + file_name: override_joint_tour_participants.csv + index_col: participant_id + trips: + file_name: override_trips.csv + index_col: trip_id + +estimation_table_types: + school_location: interaction_sample_simulate + workplace_location: interaction_sample_simulate + auto_ownership: simple_simulate + vehicle_type_choice: interaction_simulate + free_parking: simple_simulate + cdap: cdap_simulate + mandatory_tour_frequency: simple_simulate + mandatory_tour_scheduling_work: interaction_sample_simulate + mandatory_tour_scheduling_school: interaction_sample_simulate + joint_tour_frequency: simple_simulate + joint_tour_composition: simple_simulate + joint_tour_participation: simple_simulate + joint_tour_destination: interaction_sample_simulate + joint_tour_scheduling: interaction_sample_simulate + non_mandatory_tour_frequency: interaction_simulate + non_mandatory_tour_destination: interaction_sample_simulate + non_mandatory_tour_scheduling: interaction_sample_simulate + tour_mode_choice: simple_simulate + atwork_subtour_frequency: simple_simulate + atwork_subtour_destination: interaction_sample_simulate + atwork_subtour_scheduling: interaction_sample_simulate + atwork_subtour_mode_choice: simple_simulate + stop_frequency: simple_simulate + trip_purpose: simple_probabilistic + trip_destination: interaction_sample_simulate + trip_scheduling: simple_probabilistic + trip_mode_choice: simple_simulate diff --git a/activitysim/examples/example_estimation/configs_estimation/logging.yaml b/activitysim/examples/example_estimation/configs_estimation/logging.yaml new file mode 100644 index 000000000..f4902943d --- /dev/null +++ b/activitysim/examples/example_estimation/configs_estimation/logging.yaml @@ -0,0 +1,67 @@ +# Config for logging +# ------------------ +# See http://docs.python.org/2.7/library/logging.config.html#configuration-dictionary-schema + +logging: + version: 1 + disable_existing_loggers: true + + + # Configuring the default (root) logger is highly recommended + root: + level: NOTSET + handlers: [console, logfile, elogfile] + + loggers: + + estimation: + level: DEBUG + handlers: [console, elogfile] + propagate: false + + activitysim: + level: INFO + handlers: [console, logfile] + propagate: false + + orca: + level: WARN + handlers: [console, logfile] + propagate: false + + handlers: + + elogfile: + class: logging.FileHandler + filename: + get_log_file_path: 'estimation.log' + mode: w + formatter: fileFormatter + level: NOTSET + + logfile: + class: logging.FileHandler + filename: + get_log_file_path: 'activitysim.log' + mode: w + formatter: fileFormatter + level: NOTSET + + console: + class: logging.StreamHandler + stream: ext://sys.stdout + formatter: simpleFormatter + level: NOTSET + + formatters: + + simpleFormatter: + class: logging.Formatter + # format: '%(levelname)s - %(name)s - %(message)s' + format: '%(levelname)s - %(message)s' + datefmt: '%d/%m/%Y %H:%M:%S' + + fileFormatter: + class: logging.Formatter + format: '%(asctime)s - %(levelname)s - %(name)s - %(message)s' + datefmt: '%d/%m/%Y %H:%M:%S' diff --git a/activitysim/examples/example_estimation/configs_estimation/settings.yaml b/activitysim/examples/example_estimation/configs_estimation/settings.yaml new file mode 100644 index 000000000..1e96b0f1a --- /dev/null +++ b/activitysim/examples/example_estimation/configs_estimation/settings.yaml @@ -0,0 +1,165 @@ + +inherit_settings: True + +# assume enough RAM to not chunk +chunk_training_mode: disabled + +# input tables +input_table_list: + # + # households (table index 'household_id') + # + - tablename: households + filename: override_households.csv + index_col: household_id + keep_columns: + - home_zone_id + - income + - hhsize + - HHT + - auto_ownership + - num_workers + # + # persons (table index 'person_id') + # + - tablename: persons + filename: override_persons.csv + keep_columns: + - household_id + - age + - PNUM + - sex + - pemploy + - pstudent + - ptype + # + # land_use (table index 'zone_id') + # + - tablename: land_use + filename: land_use.csv + rename_columns: + # accept either TAZ or ZONE (but not both) + TAZ: zone_id + ZONE: zone_id + COUNTY: county_id + keep_columns: + - DISTRICT + - SD + - county_id + - TOTHH + - TOTPOP + - TOTACRE + - RESACRE + - CIACRE + - TOTEMP + - AGE0519 + - RETEMPN + - FPSEMPN + - HEREMPN + - OTHEMPN + - AGREMPN + - MWTEMPN + - PRKCST + - OPRKCST + - area_type + - HSENROLL + - COLLFTE + - COLLPTE + - TOPOLOGY + - TERMINAL + +write_raw_tables: False +rng_base_seed: 42 + +fail_fast: True + +use_shadow_pricing: False + +# turn writing of sample_tables on and off for all models +# (if True, tables will be written if DEST_CHOICE_SAMPLE_TABLE_NAME is specified in individual model settings) +want_dest_choice_sample_tables: False + +# number of households to simulate +households_sample_size: 0 + +# to resume after last successful checkpoint, specify resume_after: _ +#resume_after: initialize_households + +trace_hh_id: + +multiprocess: true +num_processes: 2 + + +output_tables: + h5_store: False + action: include + prefix: final_ + sort: True + tables: + - checkpoints + - accessibility + - land_use + - households + - persons + - tours + - trips + - joint_tour_participants + +resume_after: + +models: + - initialize_landuse + - initialize_households + - compute_accessibility + - school_location + - workplace_location + - auto_ownership_simulate + - free_parking + - cdap_simulate + - mandatory_tour_frequency + - mandatory_tour_scheduling + - joint_tour_frequency + - joint_tour_composition + - joint_tour_participation + - joint_tour_destination + - joint_tour_scheduling + - non_mandatory_tour_frequency + - non_mandatory_tour_destination + - non_mandatory_tour_scheduling + - tour_mode_choice_simulate + - atwork_subtour_frequency + - atwork_subtour_destination + - atwork_subtour_scheduling + - atwork_subtour_mode_choice + - stop_frequency + - trip_purpose + - trip_destination +# - trip_purpose_and_destination + - trip_scheduling + - trip_mode_choice +# - write_data_dictionary +# - track_skim_usage +# - write_trip_matrices + - write_tables + - coalesce_estimation_data_bundles + + +multiprocess_steps: + - name: mp_initialize + begin: initialize_landuse + - name: mp_accessibility + begin: compute_accessibility + slice: + tables: + - accessibility + # don't slice any tables not explicitly listed above in slice.tables + exclude: True + - name: mp_households + begin: school_location + slice: + tables: + - households + - persons + - name: mp_summarize + begin: write_tables diff --git a/activitysim/examples/example_estimation/notebooks/02_school_location.ipynb b/activitysim/examples/example_estimation/notebooks/02_school_location.ipynb index f83880302..8562928ae 100644 --- a/activitysim/examples/example_estimation/notebooks/02_school_location.ipynb +++ b/activitysim/examples/example_estimation/notebooks/02_school_location.ipynb @@ -26,30 +26,73 @@ "cell_type": "code", "execution_count": 1, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "JAX not found. Some functionality will be unavailable.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'larch': '6.0.31.dev37+gd94e3a6',\n", + " 'sharrow': '2.12.2.dev4+gea8174f',\n", + " 'numpy': '1.26.4',\n", + " 'pandas': '1.5.3',\n", + " 'xarray': '2024.3.0',\n", + " 'numba': '0.60.0'}" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "import larch # !conda install larch #for estimation\n", + "import larch as lx\n", "import pandas as pd\n", - "import numpy as np\n", - "import yaml \n", - "import larch.util.excel\n", - "import os" + "\n", + "lx.versions()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We'll work in our `test` directory, where ActivitySim has saved the estimation data bundles." + "For this demo, we will assume that you have already run ActivitySim in estimation\n", + "mode, and saved the required estimation data bundles (EDB's) to disk. See\n", + "the [first notebook](./01_estimation_mode.ipynb) for details. The following module\n", + "will run a script to set everything up if the example data is not already available." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "EDB directory already populated.\n" + ] + }, + { + "data": { + "text/plain": [ + "PosixPath('test-estimation-data/activitysim-prototype-mtc-extended')" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "os.chdir('test')" + "from est_mode_setup import prepare\n", + "prepare()" ] }, { @@ -72,10 +115,27 @@ "cell_type": "code", "execution_count": 4, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "loading from output-est-mode/estimation_data_bundle/school_location/school_location_coefficients.csv\n", + "loading from output-est-mode/estimation_data_bundle/school_location/school_location_SPEC.csv\n", + "loading from output-est-mode/estimation_data_bundle/school_location/school_location_alternatives_combined.parquet\n", + "loading from output-est-mode/estimation_data_bundle/school_location/school_location_choosers_combined.parquet\n", + "loading from output-est-mode/estimation_data_bundle/school_location/school_location_landuse.csv\n", + "loading from output-est-mode/estimation_data_bundle/school_location/school_location_size_terms.csv\n" + ] + } + ], "source": [ "from activitysim.estimation.larch import component_model\n", - "model, data = component_model(modelname, return_data=True)" + "\n", + "model, data = component_model(\n", + " modelname, return_data=True, \n", + " edb_directory=f\"output-est-mode/estimation_data_bundle/{modelname}/\",\n", + ")" ] }, { @@ -266,148 +326,130 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -429,202 +471,197 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", "
person_idvariable59101213143739...178179180181182184186187189190alt_destprobpick_countmode_choice_logsumsize_termshadow_price_size_term_adjustmentshadow_price_utility_adjustmentutil_dist_0_1util_dist_1_2util_dist_2_5util_dist_5_15util_dist_15_uputil_size_variableutil_utility_adjustmentutil_no_attractionsutil_mode_choice_logsumutil_sample_of_corrections_factor
0629mode_choice_logsum-1.2112310566711697-0.932235390015777-0.9960110406421955-1.2780595287661722-1.4547553701284834-1.4573412829661365-3.8602604963599583-3.8673170163655084...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN1918130.0066881-0.7486112578.276039101.01.003.002.180.0000007.8552640False-0.7486115.007436
1629pick_count1.01.01.01.01.01.01.01918690.0346972-1.2289934541.220657101.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN1.003.000.020.0000008.4211710False-1.2289934.054244
2629prob3.964160543594042e-050.00167816373630599280.00066438955743874150.002793114898696190.00218095283685440940.0004625352628872690.00014199354993792870.00020956937572710045...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN19181330.2493565-0.91645113419.153743101.01.001.460.000.0000009.5045130False-0.9164512.998311
3629shadow_price_size_term_adjustment1.01.01.01.01.01.01.019181850.07378360.075435146.752243101.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN0.090.000.000.0000004.9955370False0.0754354.398386
4629shadow_price_utility_adjustment0.00.00.00.00.00.00.00.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN19181880.56315716-0.49483014849.890384101.01.000.210.000.0000009.6058150False-0.4948303.346785
.....................
157397541072util_mode_choice_logsum0.401352799399892270.6886076440937283-0.196874267615671370.29845718751131060.128933525367319560.11661882054650644-0.6296937346519611-1.8050089284615745...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
157407541072util_no_attractionsFalseFalseFalseFalseFalseFalseFalse28036975601739610.0095872-7.6515462344.192182101.01.003.0010.0012.8400007.7601230False...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
157417541072util_sample_of_corrections_factor7.3899157826177583.631716891606514.0865671414586033.06858033169584983.3293709346992134.8949702670889666.1574555626588955.794602181057687...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
157427541072util_size_variable3.77759816877277157.1020650866127866.01568252532117858.0076215688752837.8552640336705346.4095117009260145.5236883616663575.897955675114184...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
157437541072util_utility_adjustment-7.6515465.340517
280370756017310190.0662763-8.96283319615.000247101.01.003.0010.0015.4500019.8841010False-8.9628333.812534
280371756017311270.0467072-7.2689939729.629299101.01.003.0010.0010.6399999.1830340False-7.2689933.757005
280372756017311980.0076981-10.4703743124.400431101.01.003.0010.0019.7799998.0473180False-10.4703744.866794
280373756190311270.981543314.2188819729.629299101.01.000.320.000.0000009.1830340...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNFalse4.2188813.452616
\n", - "

15744 rows × 192 columns

\n", + "

280374 rows × 18 columns

\n", "" ], "text/plain": [ - " person_id variable 5 \\\n", - "0 629 mode_choice_logsum -1.2112310566711697 \n", - "1 629 pick_count 1.0 \n", - "2 629 prob 3.964160543594042e-05 \n", - "3 629 shadow_price_size_term_adjustment 1.0 \n", - "4 629 shadow_price_utility_adjustment 0.0 \n", - "... ... ... ... \n", - "15739 7541072 util_mode_choice_logsum 0.40135279939989227 \n", - "15740 7541072 util_no_attractions False \n", - "15741 7541072 util_sample_of_corrections_factor 7.389915782617758 \n", - "15742 7541072 util_size_variable 3.7775981687727715 \n", - "15743 7541072 util_utility_adjustment 0 \n", + " person_id alt_dest prob pick_count mode_choice_logsum \\\n", + "0 1918 13 0.006688 1 -0.748611 \n", + "1 1918 69 0.034697 2 -1.228993 \n", + "2 1918 133 0.249356 5 -0.916451 \n", + "3 1918 185 0.073783 6 0.075435 \n", + "4 1918 188 0.563157 16 -0.494830 \n", + "... ... ... ... ... ... \n", + "280369 7560173 961 0.009587 2 -7.651546 \n", + "280370 7560173 1019 0.066276 3 -8.962833 \n", + "280371 7560173 1127 0.046707 2 -7.268993 \n", + "280372 7560173 1198 0.007698 1 -10.470374 \n", + "280373 7561903 1127 0.981543 31 4.218881 \n", "\n", - " 9 10 12 \\\n", - "0 -0.932235390015777 -0.9960110406421955 -1.2780595287661722 \n", - "1 1.0 1.0 1.0 \n", - "2 0.0016781637363059928 0.0006643895574387415 0.00279311489869619 \n", - "3 1.0 1.0 1.0 \n", - "4 0.0 0.0 0.0 \n", - "... ... ... ... \n", - "15739 0.6886076440937283 -0.19687426761567137 0.2984571875113106 \n", - "15740 False False False \n", - "15741 3.63171689160651 4.086567141458603 3.0685803316958498 \n", - "15742 7.102065086612786 6.0156825253211785 8.007621568875283 \n", - "15743 0 0 0 \n", + " size_term shadow_price_size_term_adjustment \\\n", + "0 2578.276039 1 \n", + "1 4541.220657 1 \n", + "2 13419.153743 1 \n", + "3 146.752243 1 \n", + "4 14849.890384 1 \n", + "... ... ... \n", + "280369 2344.192182 1 \n", + "280370 19615.000247 1 \n", + "280371 9729.629299 1 \n", + "280372 3124.400431 1 \n", + "280373 9729.629299 1 \n", "\n", - " 13 14 37 \\\n", - "0 -1.4547553701284834 -1.4573412829661365 -3.8602604963599583 \n", - "1 1.0 1.0 1.0 \n", - "2 0.0021809528368544094 0.000462535262887269 0.0001419935499379287 \n", - "3 1.0 1.0 1.0 \n", - "4 0.0 0.0 0.0 \n", - "... ... ... ... \n", - "15739 0.12893352536731956 0.11661882054650644 -0.6296937346519611 \n", - "15740 False False False \n", - "15741 3.329370934699213 4.894970267088966 6.157455562658895 \n", - "15742 7.855264033670534 6.409511700926014 5.523688361666357 \n", - "15743 0 0 0 \n", + " shadow_price_utility_adjustment util_dist_0_1 util_dist_1_2 \\\n", + "0 0 1.0 1.00 \n", + "1 0 1.0 1.00 \n", + "2 0 1.0 1.00 \n", + "3 0 1.0 0.09 \n", + "4 0 1.0 1.00 \n", + "... ... ... ... \n", + "280369 0 1.0 1.00 \n", + "280370 0 1.0 1.00 \n", + "280371 0 1.0 1.00 \n", + "280372 0 1.0 1.00 \n", + "280373 0 1.0 1.00 \n", "\n", - " 39 ... 178 179 180 181 182 184 186 187 \\\n", - "0 -3.8673170163655084 ... NaN NaN NaN NaN NaN NaN NaN NaN \n", - "1 1.0 ... NaN NaN NaN NaN NaN NaN NaN NaN \n", - "2 0.00020956937572710045 ... NaN NaN NaN NaN NaN NaN NaN NaN \n", - "3 1.0 ... NaN NaN NaN NaN NaN NaN NaN NaN \n", - "4 0.0 ... NaN NaN NaN NaN NaN NaN NaN NaN \n", - "... ... ... ... ... ... ... ... ... ... ... \n", - "15739 -1.8050089284615745 ... NaN NaN NaN NaN NaN NaN NaN NaN \n", - "15740 False ... NaN NaN NaN NaN NaN NaN NaN NaN \n", - "15741 5.794602181057687 ... NaN NaN NaN NaN NaN NaN NaN NaN \n", - "15742 5.897955675114184 ... NaN NaN NaN NaN NaN NaN NaN NaN \n", - "15743 0 ... NaN NaN NaN NaN NaN NaN NaN NaN \n", + " util_dist_2_5 util_dist_5_15 util_dist_15_up util_size_variable \\\n", + "0 3.00 2.18 0.000000 7.855264 \n", + "1 3.00 0.02 0.000000 8.421171 \n", + "2 1.46 0.00 0.000000 9.504513 \n", + "3 0.00 0.00 0.000000 4.995537 \n", + "4 0.21 0.00 0.000000 9.605815 \n", + "... ... ... ... ... \n", + "280369 3.00 10.00 12.840000 7.760123 \n", + "280370 3.00 10.00 15.450001 9.884101 \n", + "280371 3.00 10.00 10.639999 9.183034 \n", + "280372 3.00 10.00 19.779999 8.047318 \n", + "280373 0.32 0.00 0.000000 9.183034 \n", "\n", - " 189 190 \n", - "0 NaN NaN \n", - "1 NaN NaN \n", - "2 NaN NaN \n", - "3 NaN NaN \n", - "4 NaN NaN \n", - "... ... ... \n", - "15739 NaN NaN \n", - "15740 NaN NaN \n", - "15741 NaN NaN \n", - "15742 NaN NaN \n", - "15743 NaN NaN \n", + " util_utility_adjustment util_no_attractions util_mode_choice_logsum \\\n", + "0 0 False -0.748611 \n", + "1 0 False -1.228993 \n", + "2 0 False -0.916451 \n", + "3 0 False 0.075435 \n", + "4 0 False -0.494830 \n", + "... ... ... ... \n", + "280369 0 False -7.651546 \n", + "280370 0 False -8.962833 \n", + "280371 0 False -7.268993 \n", + "280372 0 False -10.470374 \n", + "280373 0 False 4.218881 \n", "\n", - "[15744 rows x 192 columns]" + " util_sample_of_corrections_factor \n", + "0 5.007436 \n", + "1 4.054244 \n", + "2 2.998311 \n", + "3 4.398386 \n", + "4 3.346785 \n", + "... ... \n", + "280369 5.340517 \n", + "280370 3.812534 \n", + "280371 3.757005 \n", + "280372 4.866794 \n", + "280373 3.452616 \n", + "\n", + "[280374 rows x 18 columns]" ] }, "execution_count": 6, @@ -680,48 +717,48 @@ " \n", " \n", " 0\n", - " 629\n", - " 13\n", - " 12\n", - " 131\n", + " 1918\n", + " 188\n", + " 188\n", + " 186\n", " 3\n", - " 629\n", + " 1918\n", " \n", " \n", " 1\n", - " 1274\n", - " 10\n", - " 10\n", - " 166\n", + " 2256\n", + " 133\n", + " 229\n", + " 208\n", " 3\n", - " 1274\n", + " 2256\n", " \n", " \n", " 2\n", - " 27266\n", - " 10\n", - " 12\n", - " 9\n", + " 3215\n", + " 291\n", + " 229\n", + " 252\n", " 3\n", - " 27266\n", + " 3215\n", " \n", " \n", " 3\n", - " 28012\n", - " 5\n", - " 5\n", - " 10\n", + " 4362\n", + " 300\n", + " 342\n", + " 313\n", " 3\n", - " 28012\n", + " 4362\n", " \n", " \n", " 4\n", - " 29368\n", - " 185\n", - " 185\n", - " 16\n", + " 5859\n", + " 490\n", + " 490\n", + " 400\n", " 3\n", - " 29368\n", + " 5859\n", " \n", " \n", " ...\n", @@ -733,83 +770,83 @@ " ...\n", " \n", " \n", - " 979\n", - " 7514214\n", - " 185\n", - " 185\n", - " 56\n", - " 3\n", - " 2822879\n", + " 14984\n", + " 7550994\n", + " 1091\n", + " 1091\n", + " 1124\n", + " 2\n", + " 2859659\n", " \n", " \n", - " 980\n", - " 7514777\n", - " 185\n", - " 185\n", - " 106\n", - " 3\n", - " 2823442\n", + " 14985\n", + " 7552418\n", + " 1270\n", + " 1263\n", + " 1268\n", + " 2\n", + " 2861083\n", " \n", " \n", - " 981\n", - " 7515185\n", - " 188\n", - " 188\n", - " 142\n", - " 3\n", - " 2823850\n", + " 14986\n", + " 7553232\n", + " 1324\n", + " 1324\n", + " 1320\n", + " 2\n", + " 2861897\n", " \n", " \n", - " 982\n", - " 7527597\n", - " 69\n", - " 13\n", - " 188\n", + " 14987\n", + " 7560173\n", + " 557\n", + " 811\n", + " 743\n", " 3\n", - " 2836262\n", + " 2868838\n", " \n", " \n", - " 983\n", - " 7541072\n", - " 112\n", - " 107\n", - " 117\n", + " 14988\n", + " 7561903\n", + " 1127\n", + " 1127\n", + " 1121\n", " 3\n", - " 2849737\n", + " 2870568\n", " \n", " \n", "\n", - "

984 rows × 6 columns

\n", + "

14989 rows × 6 columns

\n", "" ], "text/plain": [ - " person_id model_choice override_choice home_zone_id school_segment \\\n", - "0 629 13 12 131 3 \n", - "1 1274 10 10 166 3 \n", - "2 27266 10 12 9 3 \n", - "3 28012 5 5 10 3 \n", - "4 29368 185 185 16 3 \n", - ".. ... ... ... ... ... \n", - "979 7514214 185 185 56 3 \n", - "980 7514777 185 185 106 3 \n", - "981 7515185 188 188 142 3 \n", - "982 7527597 69 13 188 3 \n", - "983 7541072 112 107 117 3 \n", + " person_id model_choice override_choice home_zone_id school_segment \\\n", + "0 1918 188 188 186 3 \n", + "1 2256 133 229 208 3 \n", + "2 3215 291 229 252 3 \n", + "3 4362 300 342 313 3 \n", + "4 5859 490 490 400 3 \n", + "... ... ... ... ... ... \n", + "14984 7550994 1091 1091 1124 2 \n", + "14985 7552418 1270 1263 1268 2 \n", + "14986 7553232 1324 1324 1320 2 \n", + "14987 7560173 557 811 743 3 \n", + "14988 7561903 1127 1127 1121 3 \n", "\n", - " household_id \n", - "0 629 \n", - "1 1274 \n", - "2 27266 \n", - "3 28012 \n", - "4 29368 \n", - ".. ... \n", - "979 2822879 \n", - "980 2823442 \n", - "981 2823850 \n", - "982 2836262 \n", - "983 2849737 \n", + " household_id \n", + "0 1918 \n", + "1 2256 \n", + "2 3215 \n", + "3 4362 \n", + "4 5859 \n", + "... ... \n", + "14984 2859659 \n", + "14985 2861083 \n", + "14986 2861897 \n", + "14987 2868838 \n", + "14988 2870568 \n", "\n", - "[984 rows x 6 columns]" + "[14989 rows x 6 columns]" ] }, "execution_count": 7, @@ -916,9 +953,9 @@ " 7\n", " ...\n", " 0\n", + " 0.0\n", " 0.00000\n", - " 0.00000\n", - " 0.00000\n", + " 0.0\n", " 3\n", " 5.89564\n", " 2.875000\n", @@ -940,9 +977,9 @@ " 19\n", " ...\n", " 0\n", + " 0.0\n", " 0.00000\n", - " 0.00000\n", - " 0.00000\n", + " 0.0\n", " 1\n", " 5.84871\n", " 5.195214\n", @@ -964,9 +1001,9 @@ " 38\n", " ...\n", " 0\n", + " 0.0\n", " 0.00000\n", - " 0.00000\n", - " 0.00000\n", + " 0.0\n", " 1\n", " 5.53231\n", " 80.470405\n", @@ -988,9 +1025,9 @@ " 20\n", " ...\n", " 0\n", + " 0.0\n", " 0.00000\n", - " 0.00000\n", - " 0.00000\n", + " 0.0\n", " 2\n", " 5.64330\n", " 7.947368\n", @@ -1012,9 +1049,9 @@ " 86\n", " ...\n", " 0\n", - " 0.00000\n", + " 0.0\n", " 72.14684\n", - " 0.00000\n", + " 0.0\n", " 1\n", " 5.52555\n", " 38.187500\n", @@ -1047,188 +1084,188 @@ " ...\n", " \n", " \n", - " 186\n", - " 4\n", - " 4\n", - " 1\n", - " 2779\n", - " 8062\n", - " 376.0\n", - " 172.0\n", - " 15.00000\n", - " 1760\n", - " 1178\n", + " 1450\n", + " 34\n", + " 34\n", + " 9\n", + " 2724\n", + " 6493\n", + " 1320.0\n", + " 630.0\n", + " 69.00000\n", + " 1046\n", + " 1013\n", " ...\n", - " 3\n", - " 0.00000\n", - " 0.00000\n", + " 4\n", + " 0.0\n", " 0.00000\n", + " 0.0\n", " 1\n", - " 2.04173\n", - " 14.860963\n", - " 9.411765\n", - " 5.762347\n", + " 1.12116\n", + " 3.896996\n", + " 1.496423\n", + " 1.081235\n", " False\n", " \n", " \n", - " 187\n", - " 4\n", - " 4\n", - " 1\n", - " 1492\n", - " 4139\n", - " 214.0\n", - " 116.0\n", - " 10.00000\n", - " 808\n", - " 603\n", + " 1451\n", + " 34\n", + " 34\n", + " 9\n", + " 2016\n", + " 4835\n", + " 664.0\n", + " 379.0\n", + " 43.00000\n", + " 757\n", + " 757\n", " ...\n", - " 3\n", - " 0.00000\n", - " 0.00000\n", + " 4\n", + " 0.0\n", " 0.00000\n", - " 2\n", - " 1.73676\n", - " 11.841270\n", - " 6.412698\n", - " 4.159890\n", + " 0.0\n", + " 1\n", + " 1.17116\n", + " 4.777251\n", + " 1.793839\n", + " 1.304140\n", " False\n", " \n", " \n", - " 188\n", - " 4\n", - " 4\n", - " 1\n", - " 753\n", - " 4072\n", - " 232.0\n", - " 11.0\n", - " 178.00000\n", - " 4502\n", - " 1117\n", + " 1452\n", + " 34\n", + " 34\n", + " 9\n", + " 2178\n", + " 5055\n", + " 1068.0\n", + " 602.0\n", + " 35.00000\n", + " 2110\n", + " 789\n", " ...\n", - " 2\n", - " 3961.04761\n", - " 17397.79102\n", - " 11152.93652\n", + " 4\n", + " 0.0\n", + " 0.00000\n", + " 0.0\n", " 1\n", - " 2.28992\n", - " 3.984127\n", - " 23.820106\n", - " 3.413233\n", + " 1.17587\n", + " 3.419152\n", + " 3.312402\n", + " 1.682465\n", " False\n", " \n", " \n", - " 189\n", - " 4\n", - " 4\n", - " 1\n", - " 3546\n", - " 8476\n", - " 201.0\n", - " 72.0\n", - " 6.00000\n", - " 226\n", - " 1057\n", + " 1453\n", + " 34\n", + " 34\n", + " 9\n", + " 298\n", + " 779\n", + " 14195.0\n", + " 429.0\n", + " 4.00000\n", + " 922\n", + " 88\n", " ...\n", - " 2\n", - " 0.00000\n", - " 0.00000\n", + " 5\n", + " 0.0\n", " 0.00000\n", + " 0.0\n", " 1\n", - " 2.88773\n", - " 45.461538\n", - " 2.897436\n", - " 2.723836\n", + " 1.01972\n", + " 0.688222\n", + " 2.129330\n", + " 0.520115\n", " False\n", " \n", " \n", - " 190\n", - " 4\n", - " 4\n", - " 1\n", - " 968\n", - " 1647\n", - " 1381.0\n", - " 14.0\n", - " 28.00000\n", - " 1010\n", - " 114\n", + " 1454\n", + " 34\n", + " 34\n", + " 9\n", + " 1068\n", + " 2337\n", + " 10469.0\n", + " 1114.0\n", + " 27.00000\n", + " 607\n", + " 418\n", " ...\n", - " 3\n", - " 0.00000\n", - " 0.00000\n", + " 5\n", + " 0.0\n", " 0.00000\n", + " 0.0\n", " 1\n", - " 2.60309\n", - " 23.047619\n", - " 24.047619\n", - " 11.768501\n", + " 0.95542\n", + " 0.936021\n", + " 0.531989\n", + " 0.339203\n", " False\n", " \n", " \n", "\n", - "

190 rows × 28 columns

\n", + "

1454 rows × 28 columns

\n", "" ], "text/plain": [ - " DISTRICT SD county_id TOTHH TOTPOP TOTACRE RESACRE CIACRE \\\n", - "zone_id \n", - "1 1 1 1 46 82 20.3 1.0 15.00000 \n", - "2 1 1 1 134 240 31.1 1.0 24.79297 \n", - "3 1 1 1 267 476 14.7 1.0 2.31799 \n", - "4 1 1 1 151 253 19.3 1.0 18.00000 \n", - "5 1 1 1 611 1069 52.7 1.0 15.00000 \n", - "... ... .. ... ... ... ... ... ... \n", - "186 4 4 1 2779 8062 376.0 172.0 15.00000 \n", - "187 4 4 1 1492 4139 214.0 116.0 10.00000 \n", - "188 4 4 1 753 4072 232.0 11.0 178.00000 \n", - "189 4 4 1 3546 8476 201.0 72.0 6.00000 \n", - "190 4 4 1 968 1647 1381.0 14.0 28.00000 \n", + " DISTRICT SD county_id TOTHH TOTPOP TOTACRE RESACRE CIACRE \\\n", + "zone_id \n", + "1 1 1 1 46 82 20.3 1.0 15.00000 \n", + "2 1 1 1 134 240 31.1 1.0 24.79297 \n", + "3 1 1 1 267 476 14.7 1.0 2.31799 \n", + "4 1 1 1 151 253 19.3 1.0 18.00000 \n", + "5 1 1 1 611 1069 52.7 1.0 15.00000 \n", + "... ... .. ... ... ... ... ... ... \n", + "1450 34 34 9 2724 6493 1320.0 630.0 69.00000 \n", + "1451 34 34 9 2016 4835 664.0 379.0 43.00000 \n", + "1452 34 34 9 2178 5055 1068.0 602.0 35.00000 \n", + "1453 34 34 9 298 779 14195.0 429.0 4.00000 \n", + "1454 34 34 9 1068 2337 10469.0 1114.0 27.00000 \n", "\n", - " TOTEMP AGE0519 ... area_type HSENROLL COLLFTE \\\n", - "zone_id ... \n", - "1 27318 7 ... 0 0.00000 0.00000 \n", - "2 42078 19 ... 0 0.00000 0.00000 \n", - "3 2445 38 ... 0 0.00000 0.00000 \n", - "4 22434 20 ... 0 0.00000 0.00000 \n", - "5 15662 86 ... 0 0.00000 72.14684 \n", - "... ... ... ... ... ... ... \n", - "186 1760 1178 ... 3 0.00000 0.00000 \n", - "187 808 603 ... 3 0.00000 0.00000 \n", - "188 4502 1117 ... 2 3961.04761 17397.79102 \n", - "189 226 1057 ... 2 0.00000 0.00000 \n", - "190 1010 114 ... 3 0.00000 0.00000 \n", + " TOTEMP AGE0519 ... area_type HSENROLL COLLFTE COLLPTE \\\n", + "zone_id ... \n", + "1 27318 7 ... 0 0.0 0.00000 0.0 \n", + "2 42078 19 ... 0 0.0 0.00000 0.0 \n", + "3 2445 38 ... 0 0.0 0.00000 0.0 \n", + "4 22434 20 ... 0 0.0 0.00000 0.0 \n", + "5 15662 86 ... 0 0.0 72.14684 0.0 \n", + "... ... ... ... ... ... ... ... \n", + "1450 1046 1013 ... 4 0.0 0.00000 0.0 \n", + "1451 757 757 ... 4 0.0 0.00000 0.0 \n", + "1452 2110 789 ... 4 0.0 0.00000 0.0 \n", + "1453 922 88 ... 5 0.0 0.00000 0.0 \n", + "1454 607 418 ... 5 0.0 0.00000 0.0 \n", "\n", - " COLLPTE TOPOLOGY TERMINAL household_density \\\n", - "zone_id \n", - "1 0.00000 3 5.89564 2.875000 \n", - "2 0.00000 1 5.84871 5.195214 \n", - "3 0.00000 1 5.53231 80.470405 \n", - "4 0.00000 2 5.64330 7.947368 \n", - "5 0.00000 1 5.52555 38.187500 \n", - "... ... ... ... ... \n", - "186 0.00000 1 2.04173 14.860963 \n", - "187 0.00000 2 1.73676 11.841270 \n", - "188 11152.93652 1 2.28992 3.984127 \n", - "189 0.00000 1 2.88773 45.461538 \n", - "190 0.00000 1 2.60309 23.047619 \n", + " TOPOLOGY TERMINAL household_density employment_density \\\n", + "zone_id \n", + "1 3 5.89564 2.875000 1707.375000 \n", + "2 1 5.84871 5.195214 1631.374751 \n", + "3 1 5.53231 80.470405 736.891913 \n", + "4 2 5.64330 7.947368 1180.736842 \n", + "5 1 5.52555 38.187500 978.875000 \n", + "... ... ... ... ... \n", + "1450 1 1.12116 3.896996 1.496423 \n", + "1451 1 1.17116 4.777251 1.793839 \n", + "1452 1 1.17587 3.419152 3.312402 \n", + "1453 1 1.01972 0.688222 2.129330 \n", + "1454 1 0.95542 0.936021 0.531989 \n", "\n", - " employment_density density_index is_cbd \n", - "zone_id \n", - "1 1707.375000 2.870167 False \n", - "2 1631.374751 5.178722 False \n", - "3 736.891913 72.547987 False \n", - "4 1180.736842 7.894233 False \n", - "5 978.875000 36.753679 False \n", - "... ... ... ... \n", - "186 9.411765 5.762347 False \n", - "187 6.412698 4.159890 False \n", - "188 23.820106 3.413233 False \n", - "189 2.897436 2.723836 False \n", - "190 24.047619 11.768501 False \n", + " density_index is_cbd \n", + "zone_id \n", + "1 2.870167 False \n", + "2 5.178722 False \n", + "3 72.547987 False \n", + "4 7.894233 False \n", + "5 36.753679 False \n", + "... ... ... \n", + "1450 1.081235 False \n", + "1451 1.304140 False \n", + "1452 1.682465 False \n", + "1453 0.520115 False \n", + "1454 0.339203 False \n", "\n", - "[190 rows x 28 columns]" + "[1454 rows x 28 columns]" ] }, "execution_count": 8, @@ -1498,31 +1535,129 @@ "data.size_spec" ] }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
keyvalue
ca
['AGE0519*(school_segment==1)',\n",
+       " 'COLLFTE*(school_segment==3)',\n",
+       " 'COLLPTE*(school_segment==3)',\n",
+       " 'HSENROLL*(school_segment==2)',\n",
+       " 'util_dist_0_1*(school_segment==1)',\n",
+       " 'util_dist_0_1*(school_segment==2)',\n",
+       " 'util_dist_0_1*(school_segment==3)',\n",
+       " 'util_dist_15_up*(school_segment==1)',\n",
+       " 'util_dist_15_up*(school_segment==2)',\n",
+       " 'util_dist_15_up*(school_segment==3)',\n",
+       " 'util_dist_1_2*(school_segment==1)',\n",
+       " 'util_dist_1_2*(school_segment==2)',\n",
+       " 'util_dist_1_2*(school_segment==3)',\n",
+       " 'util_dist_2_5*(school_segment==1)',\n",
+       " 'util_dist_2_5*(school_segment==2)',\n",
+       " 'util_dist_2_5*(school_segment==3)',\n",
+       " 'util_dist_5_15*(school_segment==1)',\n",
+       " 'util_dist_5_15*(school_segment==2)',\n",
+       " 'util_dist_5_15*(school_segment==3)',\n",
+       " 'util_mode_choice_logsum*(school_segment==1)',\n",
+       " 'util_mode_choice_logsum*(school_segment==2)',\n",
+       " 'util_mode_choice_logsum*(school_segment==3)',\n",
+       " 'util_no_attractions*(school_segment==1)',\n",
+       " 'util_no_attractions*(school_segment==2)',\n",
+       " 'util_no_attractions*(school_segment==3)',\n",
+       " 'util_sample_of_corrections_factor*(school_segment==1)',\n",
+       " 'util_sample_of_corrections_factor*(school_segment==2)',\n",
+       " 'util_sample_of_corrections_factor*(school_segment==3)']
choice_ca'override_choice == _original_zone_id'
avail_ca'_avail_'
" + ], + "text/plain": [ + "┣ ca: ['AGE0519*(school_segment==1)',\n", + "┃ 'COLLFTE*(school_segment==3)',\n", + "┃ 'COLLPTE*(school_segment==3)',\n", + "┃ 'HSENROLL*(school_segment==2)',\n", + "┃ 'util_dist_0_1*(school_segment==1)',\n", + "┃ 'util_dist_0_1*(school_segment==2)',\n", + "┃ 'util_dist_0_1*(school_segment==3)',\n", + "┃ 'util_dist_15_up*(school_segment==1)',\n", + "┃ 'util_dist_15_up*(school_segment==2)',\n", + "┃ 'util_dist_15_up*(school_segment==3)',\n", + "┃ 'util_dist_1_2*(school_segment==1)',\n", + "┃ 'util_dist_1_2*(school_segment==2)',\n", + "┃ 'util_dist_1_2*(school_segment==3)',\n", + "┃ 'util_dist_2_5*(school_segment==1)',\n", + "┃ 'util_dist_2_5*(school_segment==2)',\n", + "┃ 'util_dist_2_5*(school_segment==3)',\n", + "┃ 'util_dist_5_15*(school_segment==1)',\n", + "┃ 'util_dist_5_15*(school_segment==2)',\n", + "┃ 'util_dist_5_15*(school_segment==3)',\n", + "┃ 'util_mode_choice_logsum*(school_segment==1)',\n", + "┃ 'util_mode_choice_logsum*(school_segment==2)',\n", + "┃ 'util_mode_choice_logsum*(school_segment==3)',\n", + "┃ 'util_no_attractions*(school_segment==1)',\n", + "┃ 'util_no_attractions*(school_segment==2)',\n", + "┃ 'util_no_attractions*(school_segment==3)',\n", + "┃ 'util_sample_of_corrections_factor*(school_segment==1)',\n", + "┃ 'util_sample_of_corrections_factor*(school_segment==2)',\n", + "┃ 'util_sample_of_corrections_factor*(school_segment==3)']\n", + "┣ choice_ca: 'override_choice == _original_zone_id'\n", + "┣ avail_ca: '_avail_'" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.required_data()" + ] + }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# Estimate\n", - "\n", - "With the model setup for estimation, the next step is to estimate the model coefficients. Make sure to use a sufficiently large enough household sample and set of zones to avoid an over-specified model, which does not have a numerically stable likelihood maximizing solution. Larch has a built-in estimation methods including BHHH, and also offers access to more advanced general purpose non-linear optimizers in the `scipy` package, including SLSQP, which allows for bounds and constraints on parameters. BHHH is the default and typically runs faster, but does not follow constraints on parameters." + "Running the `doctor` method will check the model specification for potential issues." ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": {}, "outputs": [ { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "req_data does not request avail_ca or avail_co but it is set and being provided\n" + "dictx()\n" ] - }, + } + ], + "source": [ + "model, problems = model.doctor()\n", + "\n", + "print(problems)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Estimate\n", + "\n", + "With the model setup for estimation, the next step is to estimate the model coefficients. Make sure to use a sufficiently large enough household sample and set of zones to avoid an over-specified model, which does not have a numerically stable likelihood maximizing solution. Larch has a built-in estimation methods including BHHH, and also offers access to more advanced general purpose non-linear optimizers in the `scipy` package, including SLSQP, which allows for bounds and constraints on parameters. BHHH is the default and typically runs faster, but does not follow constraints on parameters." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ { "data": { "text/html": [ - "

Iteration 006 [Optimization terminated successfully.]

" + "

Iteration 013 [Optimization terminated successfully]

" ], "text/plain": [ "" @@ -1534,7 +1669,7 @@ { "data": { "text/html": [ - "

Best LL = -4058.719620832402

" + "

Best LL = -30424.700914962996

" ], "text/plain": [ "" @@ -1565,13 +1700,22 @@ " \n", " \n", " value\n", + " best\n", " initvalue\n", - " nullvalue\n", " minimum\n", " maximum\n", + " nullvalue\n", " holdfast\n", - " note\n", - " best\n", + " \n", + " \n", + " param_name\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1579,301 +1723,261 @@ " -999\n", " -999.000000\n", " -999.000000\n", - " -999.0\n", - " -999.0\n", - " -999.0\n", - " 1\n", - " \n", " -999.000000\n", + " -999.000000\n", + " -999.000000\n", + " 0.0\n", + " 1\n", " \n", " \n", " 1\n", " 1.000000\n", " 1.000000\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1\n", - " \n", " 1.000000\n", + " 1.000000\n", + " 1.000000\n", + " 0.0\n", + " 1\n", " \n", " \n", " coef_grade_dist_0_1\n", - " -1.824840\n", + " -1.886212\n", + " -1.886212\n", " -1.641900\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -1.824840\n", " \n", " \n", " coef_grade_dist_15_up\n", + " -0.103616\n", + " -0.103616\n", " -0.046000\n", - " -0.046000\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.046000\n", " \n", " \n", " coef_grade_dist_5_15\n", - " -0.144663\n", + " -0.285452\n", + " -0.285452\n", " -0.203100\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.144663\n", " \n", " \n", " coef_high_dist_0_1\n", - " -2.106211\n", + " -0.869799\n", + " -0.869799\n", " -0.952300\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -2.106211\n", " \n", " \n", " coef_high_dist_15_up\n", + " -0.233127\n", + " -0.233127\n", " -0.188200\n", - " -0.188200\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.188200\n", " \n", " \n", " coef_high_dist_5_15\n", - " -0.101747\n", + " -0.285690\n", + " -0.285690\n", " -0.193000\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.101747\n", " \n", " \n", " coef_high_grade_dist_1_2\n", - " -0.751852\n", + " -0.931692\n", + " -0.931692\n", " -0.570000\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.751852\n", " \n", " \n", " coef_high_grade_dist_2_5\n", - " -0.667119\n", + " -0.694687\n", + " -0.694687\n", " -0.570000\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.667119\n", " \n", " \n", " coef_mode_logsum\n", - " 0.372245\n", + " 0.074994\n", + " 0.074994\n", " 0.535800\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.372245\n", " \n", " \n", " coef_univ_dist_0_1\n", - " -3.311744\n", + " -2.780799\n", + " -2.780799\n", " -3.245100\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -3.311744\n", " \n", " \n", " coef_univ_dist_15_up\n", + " -0.145257\n", + " -0.145257\n", " -0.073000\n", - " -0.073000\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.073000\n", " \n", " \n", " coef_univ_dist_1_2\n", - " -2.878224\n", + " -3.082102\n", + " -3.082102\n", " -2.701100\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -2.878224\n", " \n", " \n", " coef_univ_dist_2_5\n", - " -0.456009\n", + " -0.668470\n", + " -0.668470\n", " -0.570700\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.456009\n", " \n", " \n", " coef_univ_dist_5_15\n", - " -0.572553\n", + " -0.563338\n", + " -0.563338\n", " -0.500200\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.572553\n", " \n", " \n", " gradeschool_AGE0519\n", " 0.000000\n", " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 1\n", - " \n", - " 0.000000\n", " \n", " \n", " highschool_HSENROLL\n", " 0.000000\n", " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 1\n", - " \n", - " 0.000000\n", " \n", " \n", " university_COLLFTE\n", " -0.524249\n", " -0.524249\n", + " -0.524249\n", + " -0.524249\n", + " -0.524249\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 1\n", - " \n", - " -0.524249\n", " \n", " \n", " university_COLLPTE\n", - " -1.208828\n", + " -0.900765\n", + " -0.900765\n", " -0.896488\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -1.208828\n", " \n", " \n", "\n", "" ], "text/plain": [ - " value initvalue nullvalue minimum maximum \\\n", - "-999 -999.000000 -999.000000 -999.0 -999.0 -999.0 \n", - "1 1.000000 1.000000 1.0 1.0 1.0 \n", - "coef_grade_dist_0_1 -1.824840 -1.641900 0.0 NaN NaN \n", - "coef_grade_dist_15_up -0.046000 -0.046000 0.0 NaN NaN \n", - "coef_grade_dist_5_15 -0.144663 -0.203100 0.0 NaN NaN \n", - "coef_high_dist_0_1 -2.106211 -0.952300 0.0 NaN NaN \n", - "coef_high_dist_15_up -0.188200 -0.188200 0.0 NaN NaN \n", - "coef_high_dist_5_15 -0.101747 -0.193000 0.0 NaN NaN \n", - "coef_high_grade_dist_1_2 -0.751852 -0.570000 0.0 NaN NaN \n", - "coef_high_grade_dist_2_5 -0.667119 -0.570000 0.0 NaN NaN \n", - "coef_mode_logsum 0.372245 0.535800 0.0 NaN NaN \n", - "coef_univ_dist_0_1 -3.311744 -3.245100 0.0 NaN NaN \n", - "coef_univ_dist_15_up -0.073000 -0.073000 0.0 NaN NaN \n", - "coef_univ_dist_1_2 -2.878224 -2.701100 0.0 NaN NaN \n", - "coef_univ_dist_2_5 -0.456009 -0.570700 0.0 NaN NaN \n", - "coef_univ_dist_5_15 -0.572553 -0.500200 0.0 NaN NaN \n", - "gradeschool_AGE0519 0.000000 0.000000 0.0 -6.0 6.0 \n", - "highschool_HSENROLL 0.000000 0.000000 0.0 -6.0 6.0 \n", - "university_COLLFTE -0.524249 -0.524249 0.0 -6.0 6.0 \n", - "university_COLLPTE -1.208828 -0.896488 0.0 -6.0 6.0 \n", + " value best initvalue minimum \\\n", + "param_name \n", + "-999 -999.000000 -999.000000 -999.000000 -999.000000 \n", + "1 1.000000 1.000000 1.000000 1.000000 \n", + "coef_grade_dist_0_1 -1.886212 -1.886212 -1.641900 -25.000000 \n", + "coef_grade_dist_15_up -0.103616 -0.103616 -0.046000 -25.000000 \n", + "coef_grade_dist_5_15 -0.285452 -0.285452 -0.203100 -25.000000 \n", + "coef_high_dist_0_1 -0.869799 -0.869799 -0.952300 -25.000000 \n", + "coef_high_dist_15_up -0.233127 -0.233127 -0.188200 -25.000000 \n", + "coef_high_dist_5_15 -0.285690 -0.285690 -0.193000 -25.000000 \n", + "coef_high_grade_dist_1_2 -0.931692 -0.931692 -0.570000 -25.000000 \n", + "coef_high_grade_dist_2_5 -0.694687 -0.694687 -0.570000 -25.000000 \n", + "coef_mode_logsum 0.074994 0.074994 0.535800 -25.000000 \n", + "coef_univ_dist_0_1 -2.780799 -2.780799 -3.245100 -25.000000 \n", + "coef_univ_dist_15_up -0.145257 -0.145257 -0.073000 -25.000000 \n", + "coef_univ_dist_1_2 -3.082102 -3.082102 -2.701100 -25.000000 \n", + "coef_univ_dist_2_5 -0.668470 -0.668470 -0.570700 -25.000000 \n", + "coef_univ_dist_5_15 -0.563338 -0.563338 -0.500200 -25.000000 \n", + "gradeschool_AGE0519 0.000000 0.000000 0.000000 0.000000 \n", + "highschool_HSENROLL 0.000000 0.000000 0.000000 0.000000 \n", + "university_COLLFTE -0.524249 -0.524249 -0.524249 -0.524249 \n", + "university_COLLPTE -0.900765 -0.900765 -0.896488 -6.000000 \n", "\n", - " holdfast note best \n", - "-999 1 -999.000000 \n", - "1 1 1.000000 \n", - "coef_grade_dist_0_1 0 -1.824840 \n", - "coef_grade_dist_15_up 0 -0.046000 \n", - "coef_grade_dist_5_15 0 -0.144663 \n", - "coef_high_dist_0_1 0 -2.106211 \n", - "coef_high_dist_15_up 0 -0.188200 \n", - "coef_high_dist_5_15 0 -0.101747 \n", - "coef_high_grade_dist_1_2 0 -0.751852 \n", - "coef_high_grade_dist_2_5 0 -0.667119 \n", - "coef_mode_logsum 0 0.372245 \n", - "coef_univ_dist_0_1 0 -3.311744 \n", - "coef_univ_dist_15_up 0 -0.073000 \n", - "coef_univ_dist_1_2 0 -2.878224 \n", - "coef_univ_dist_2_5 0 -0.456009 \n", - "coef_univ_dist_5_15 0 -0.572553 \n", - "gradeschool_AGE0519 1 0.000000 \n", - "highschool_HSENROLL 1 0.000000 \n", - "university_COLLFTE 1 -0.524249 \n", - "university_COLLPTE 0 -1.208828 " + " maximum nullvalue holdfast \n", + "param_name \n", + "-999 -999.000000 0.0 1 \n", + "1 1.000000 0.0 1 \n", + "coef_grade_dist_0_1 25.000000 0.0 0 \n", + "coef_grade_dist_15_up 25.000000 0.0 0 \n", + "coef_grade_dist_5_15 25.000000 0.0 0 \n", + "coef_high_dist_0_1 25.000000 0.0 0 \n", + "coef_high_dist_15_up 25.000000 0.0 0 \n", + "coef_high_dist_5_15 25.000000 0.0 0 \n", + "coef_high_grade_dist_1_2 25.000000 0.0 0 \n", + "coef_high_grade_dist_2_5 25.000000 0.0 0 \n", + "coef_mode_logsum 25.000000 0.0 0 \n", + "coef_univ_dist_0_1 25.000000 0.0 0 \n", + "coef_univ_dist_15_up 25.000000 0.0 0 \n", + "coef_univ_dist_1_2 25.000000 0.0 0 \n", + "coef_univ_dist_2_5 25.000000 0.0 0 \n", + "coef_univ_dist_5_15 25.000000 0.0 0 \n", + "gradeschool_AGE0519 0.000000 0.0 1 \n", + "highschool_HSENROLL 0.000000 0.0 1 \n", + "university_COLLFTE -0.524249 0.0 1 \n", + "university_COLLPTE 6.000000 0.0 0 " ] }, "metadata": {}, "output_type": "display_data" }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.702173976472811e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 7.452131216396507e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.6859854144555066e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.0694117400754151e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 7.262790059748344e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.6292481359929981e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.818811050478879e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.2608013734918816e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n" - ] - }, { "data": { "text/html": [ - "
keyvalue
loglike-4058.719620832402
x\n", + "
keyvalue
loglike-30424.700914962996
x\n", " \n", " \n", " \n", @@ -1891,59 +1995,59 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1959,45 +2063,44 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - "
coef_grade_dist_0_1-1.824840-1.886212
coef_grade_dist_15_up-0.046000-0.103616
coef_grade_dist_5_15-0.144663-0.285452
coef_high_dist_0_1-2.106211-0.869799
coef_high_dist_15_up-0.188200-0.233127
coef_high_dist_5_15-0.101747-0.285690
coef_high_grade_dist_1_2-0.751852-0.931692
coef_high_grade_dist_2_5-0.667119-0.694687
coef_mode_logsum0.3722450.074994
coef_univ_dist_0_1-3.311744-2.780799
coef_univ_dist_15_up-0.073000-0.145257
coef_univ_dist_1_2-2.878224-3.082102
coef_univ_dist_2_5-0.456009-0.668470
coef_univ_dist_5_15-0.572553-0.563338
gradeschool_AGE0519
university_COLLPTE-1.208828-0.900765
tolerance7.272237631812952e-06
stepsarray([1., 1., 1., 1., 1., 1.])
message'Optimization terminated successfully.'
elapsed_time0:00:00.218468
method'BHHH'
n_cases984
iteration_number6
logloss4.124715061821547
" + "
tolerance4.213233078884777e-06stepsarray([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])message'Optimization terminated successfully'elapsed_time0:00:00.994749method'BHHH'n_cases14989iteration_number13
" ], "text/plain": [ - "┣ loglike: -4058.719620832402\n", + "┣ loglike: -30424.700914962996\n", "┣ x: -999 -999.000000\n", "┃ 1 1.000000\n", - "┃ coef_grade_dist_0_1 -1.824840\n", - "┃ coef_grade_dist_15_up -0.046000\n", - "┃ coef_grade_dist_5_15 -0.144663\n", - "┃ coef_high_dist_0_1 -2.106211\n", - "┃ coef_high_dist_15_up -0.188200\n", - "┃ coef_high_dist_5_15 -0.101747\n", - "┃ coef_high_grade_dist_1_2 -0.751852\n", - "┃ coef_high_grade_dist_2_5 -0.667119\n", - "┃ coef_mode_logsum 0.372245\n", - "┃ coef_univ_dist_0_1 -3.311744\n", - "┃ coef_univ_dist_15_up -0.073000\n", - "┃ coef_univ_dist_1_2 -2.878224\n", - "┃ coef_univ_dist_2_5 -0.456009\n", - "┃ coef_univ_dist_5_15 -0.572553\n", + "┃ coef_grade_dist_0_1 -1.886212\n", + "┃ coef_grade_dist_15_up -0.103616\n", + "┃ coef_grade_dist_5_15 -0.285452\n", + "┃ coef_high_dist_0_1 -0.869799\n", + "┃ coef_high_dist_15_up -0.233127\n", + "┃ coef_high_dist_5_15 -0.285690\n", + "┃ coef_high_grade_dist_1_2 -0.931692\n", + "┃ coef_high_grade_dist_2_5 -0.694687\n", + "┃ coef_mode_logsum 0.074994\n", + "┃ coef_univ_dist_0_1 -2.780799\n", + "┃ coef_univ_dist_15_up -0.145257\n", + "┃ coef_univ_dist_1_2 -3.082102\n", + "┃ coef_univ_dist_2_5 -0.668470\n", + "┃ coef_univ_dist_5_15 -0.563338\n", "┃ gradeschool_AGE0519 0.000000\n", "┃ highschool_HSENROLL 0.000000\n", "┃ university_COLLFTE -0.524249\n", - "┃ university_COLLPTE -1.208828\n", + "┃ university_COLLPTE -0.900765\n", "┃ dtype: float64\n", - "┣ tolerance: 7.272237631812952e-06\n", - "┣ steps: array([1., 1., 1., 1., 1., 1.])\n", - "┣ message: 'Optimization terminated successfully.'\n", - "┣ elapsed_time: datetime.timedelta(microseconds=218468)\n", + "┣ tolerance: 4.213233078884777e-06\n", + "┣ steps: array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])\n", + "┣ message: 'Optimization terminated successfully'\n", + "┣ elapsed_time: datetime.timedelta(microseconds=994749)\n", "┣ method: 'BHHH'\n", - "┣ n_cases: 984\n", - "┣ iteration_number: 6\n", - "┣ logloss: 4.124715061821547" + "┣ n_cases: 14989\n", + "┣ iteration_number: 13" ] }, - "execution_count": 11, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -2015,209 +2118,235 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Value Std Err t Stat Signif Null Value Constrained
-999-999. NA NA-999.00fixed value
1 1.00 NA NA 1.00fixed value
coef_grade_dist_0_1-1.82 0.435-4.19*** 0.00
coef_grade_dist_15_up-0.0460 4.66e-15-BIG*** 0.00
coef_grade_dist_5_15-0.145 0.0638-2.27* 0.00
coef_high_dist_0_1-2.11 0.801-2.63** 0.00
coef_high_dist_15_up-0.188 3.34e-15-BIG*** 0.00
coef_high_dist_5_15-0.102 0.143-0.71 0.00
coef_high_grade_dist_1_2-0.752 0.186-4.05*** 0.00
coef_high_grade_dist_2_5-0.667 0.0510-13.09*** 0.00
coef_mode_logsum 0.372 0.0461 8.08*** 0.00
coef_univ_dist_0_1-3.31 0.740-4.47*** 0.00
coef_univ_dist_15_up-0.0730 3.48e-16-BIG*** 0.00
coef_univ_dist_1_2-2.88 0.299-9.64*** 0.00
coef_univ_dist_2_5-0.456 0.0773-5.90*** 0.00
coef_univ_dist_5_15-0.573 0.0938-6.11*** 0.00
gradeschool_AGE0519 0.00 NA NA 0.00fixed value
highschool_HSENROLL 0.00 NA NA 0.00fixed value
university_COLLFTE-0.524 NA NA 0.00fixed value
university_COLLPTE-1.21 0.314-3.85*** 0.00
" + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ValueStd Errt StatSignifNull ValueConstrained
Parameter      
-999-999. 0.00 NA 0.00fixed value
1 1.00 0.00 NA 0.00fixed value
coef_grade_dist_0_1-1.89 0.0843-22.37*** 0.00
coef_grade_dist_15_up-0.104 0.00536-19.34*** 0.00
coef_grade_dist_5_15-0.285 0.00724-39.45*** 0.00
coef_high_dist_0_1-0.870 0.302-2.88** 0.00
coef_high_dist_15_up-0.233 0.0225-10.36*** 0.00
coef_high_dist_5_15-0.286 0.0124-23.10*** 0.00
coef_high_grade_dist_1_2-0.932 0.0424-22.00*** 0.00
coef_high_grade_dist_2_5-0.695 0.0138-50.31*** 0.00
coef_mode_logsum 0.0750 0.0118 6.35*** 0.00
coef_univ_dist_0_1-2.78 0.391-7.11*** 0.00
coef_univ_dist_15_up-0.145 0.0105-13.85*** 0.00
coef_univ_dist_1_2-3.08 0.168-18.34*** 0.00
coef_univ_dist_2_5-0.668 0.0383-17.46*** 0.00
coef_univ_dist_5_15-0.563 0.0167-33.63*** 0.00
gradeschool_AGE0519 0.00 0.00 NA 0.00fixed value
highschool_HSENROLL 0.00 0.00 NA 0.00fixed value
university_COLLFTE-0.524 0.00 NA 0.00fixed value
university_COLLPTE-0.901 0.0959-9.39*** 0.00
\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 12, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -2226,6 +2355,29 @@ "model.parameter_summary()" ] }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
StatisticAggregatePer Case
Number of Cases14989
Log Likelihood at Convergence-30424.70-2.03
Log Likelihood at Null Parameters-71673.19-4.78
Rho Squared w.r.t. Null Parameters0.576
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.estimation_statistics()" + ] + }, { "cell_type": "markdown", "metadata": { @@ -2238,7 +2390,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ @@ -2255,7 +2407,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 17, "metadata": {}, "outputs": [], "source": [ @@ -2274,7 +2426,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -2391,8 +2543,8 @@ " 0.000000\n", " 0.000\n", " 0.000000\n", - " 0.664760\n", - " 0.335240\n", + " 0.593032\n", + " 0.406968\n", " \n", " \n", " 5\n", @@ -2700,7 +2852,7 @@ "1 0.139139 0.008008 0.210210 0.000 0.000000 0.000000 0.000000 \n", "2 0.154000 0.006000 0.239000 0.000 0.000000 0.000000 0.000000 \n", "3 0.146000 0.004000 0.246000 0.000 0.000000 0.000000 0.000000 \n", - "4 0.000000 0.000000 0.000000 0.000 0.000000 0.664760 0.335240 \n", + "4 0.000000 0.000000 0.000000 0.000 0.000000 0.593032 0.406968 \n", "5 0.000000 0.000000 0.000000 1.000 0.000000 0.000000 0.000000 \n", "6 0.000000 0.000000 0.000000 0.000 1.000000 0.000000 0.000000 \n", "7 0.000000 0.000000 0.000000 0.465 0.166000 0.000000 0.000000 \n", @@ -2720,7 +2872,7 @@ "21 0.000000 0.000000 0.000000 0.000 0.000000 0.591409 0.407592 " ] }, - "execution_count": 15, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -2741,7 +2893,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 19, "metadata": {}, "outputs": [], "source": [ @@ -2765,7 +2917,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -2798,85 +2950,85 @@ " \n", " 0\n", " coef_univ_dist_0_1\n", - " -3.311744\n", + " -2.780799\n", " F\n", " \n", " \n", " 1\n", " coef_univ_dist_1_2\n", - " -2.878224\n", + " -3.082102\n", " F\n", " \n", " \n", " 2\n", " coef_univ_dist_2_5\n", - " -0.456009\n", + " -0.668470\n", " F\n", " \n", " \n", " 3\n", " coef_univ_dist_5_15\n", - " -0.572553\n", + " -0.563338\n", " F\n", " \n", " \n", " 4\n", " coef_univ_dist_15_up\n", - " -0.073000\n", + " -0.145257\n", " F\n", " \n", " \n", " 5\n", " coef_high_dist_0_1\n", - " -2.106211\n", + " -0.869799\n", " F\n", " \n", " \n", " 6\n", " coef_high_grade_dist_1_2\n", - " -0.751852\n", + " -0.931692\n", " F\n", " \n", " \n", " 7\n", " coef_high_grade_dist_2_5\n", - " -0.667119\n", + " -0.694687\n", " F\n", " \n", " \n", " 8\n", " coef_high_dist_5_15\n", - " -0.101747\n", + " -0.285690\n", " F\n", " \n", " \n", " 9\n", " coef_high_dist_15_up\n", - " -0.188200\n", + " -0.233127\n", " F\n", " \n", " \n", " 10\n", " coef_grade_dist_0_1\n", - " -1.824840\n", + " -1.886212\n", " F\n", " \n", " \n", " 11\n", " coef_grade_dist_5_15\n", - " -0.144663\n", + " -0.285452\n", " F\n", " \n", " \n", " 12\n", " coef_grade_dist_15_up\n", - " -0.046000\n", + " -0.103616\n", " F\n", " \n", " \n", " 13\n", " coef_mode_logsum\n", - " 0.372245\n", + " 0.074994\n", " F\n", " \n", " \n", @@ -2885,23 +3037,23 @@ ], "text/plain": [ " coefficient_name value constrain\n", - "0 coef_univ_dist_0_1 -3.311744 F\n", - "1 coef_univ_dist_1_2 -2.878224 F\n", - "2 coef_univ_dist_2_5 -0.456009 F\n", - "3 coef_univ_dist_5_15 -0.572553 F\n", - "4 coef_univ_dist_15_up -0.073000 F\n", - "5 coef_high_dist_0_1 -2.106211 F\n", - "6 coef_high_grade_dist_1_2 -0.751852 F\n", - "7 coef_high_grade_dist_2_5 -0.667119 F\n", - "8 coef_high_dist_5_15 -0.101747 F\n", - "9 coef_high_dist_15_up -0.188200 F\n", - "10 coef_grade_dist_0_1 -1.824840 F\n", - "11 coef_grade_dist_5_15 -0.144663 F\n", - "12 coef_grade_dist_15_up -0.046000 F\n", - "13 coef_mode_logsum 0.372245 F" + "0 coef_univ_dist_0_1 -2.780799 F\n", + "1 coef_univ_dist_1_2 -3.082102 F\n", + "2 coef_univ_dist_2_5 -0.668470 F\n", + "3 coef_univ_dist_5_15 -0.563338 F\n", + "4 coef_univ_dist_15_up -0.145257 F\n", + "5 coef_high_dist_0_1 -0.869799 F\n", + "6 coef_high_grade_dist_1_2 -0.931692 F\n", + "7 coef_high_grade_dist_2_5 -0.694687 F\n", + "8 coef_high_dist_5_15 -0.285690 F\n", + "9 coef_high_dist_15_up -0.233127 F\n", + "10 coef_grade_dist_0_1 -1.886212 F\n", + "11 coef_grade_dist_5_15 -0.285452 F\n", + "12 coef_grade_dist_15_up -0.103616 F\n", + "13 coef_mode_logsum 0.074994 F" ] }, - "execution_count": 17, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -2912,7 +3064,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 21, "metadata": {}, "outputs": [ { @@ -3035,8 +3187,8 @@ " 0.000000\n", " 0.000\n", " 0.000000\n", - " 0.664760\n", - " 0.335240\n", + " 0.593032\n", + " 0.406968\n", " \n", " \n", " 5\n", @@ -3361,7 +3513,7 @@ "1 0.325325 0.139139 0.008008 0.210210 0.000 0.000000 0.000000 \n", "2 0.284000 0.154000 0.006000 0.239000 0.000 0.000000 0.000000 \n", "3 0.241000 0.146000 0.004000 0.246000 0.000 0.000000 0.000000 \n", - "4 0.000000 0.000000 0.000000 0.000000 0.000 0.000000 0.664760 \n", + "4 0.000000 0.000000 0.000000 0.000000 0.000 0.000000 0.593032 \n", "5 0.000000 0.000000 0.000000 0.000000 1.000 0.000000 0.000000 \n", "6 0.000000 0.000000 0.000000 0.000000 0.000 1.000000 0.000000 \n", "7 0.144000 0.000000 0.000000 0.000000 0.465 0.166000 0.000000 \n", @@ -3385,7 +3537,7 @@ "1 0.000000 \n", "2 0.000000 \n", "3 0.000000 \n", - "4 0.335240 \n", + "4 0.406968 \n", "5 0.000000 \n", "6 0.000000 \n", "7 0.000000 \n", @@ -3405,7 +3557,7 @@ "21 0.407592 " ] }, - "execution_count": 18, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -3422,7 +3574,7 @@ "toc_visible": true }, "kernelspec": { - "display_name": "Python 3", + "display_name": "ESTER", "language": "python", "name": "python3" }, @@ -3436,7 +3588,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.10.15" }, "toc": { "base_numbering": 1, diff --git a/activitysim/examples/example_estimation/notebooks/03_work_location.ipynb b/activitysim/examples/example_estimation/notebooks/03_work_location.ipynb index 2a9479023..4fc0fbc48 100644 --- a/activitysim/examples/example_estimation/notebooks/03_work_location.ipynb +++ b/activitysim/examples/example_estimation/notebooks/03_work_location.ipynb @@ -25,38 +25,88 @@ { "cell_type": "code", "execution_count": 1, - "metadata": {}, - "outputs": [], + "metadata": { + "jupyter": { + "is_executing": true + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "JAX not found. Some functionality will be unavailable.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'larch': '6.0.33',\n", + " 'sharrow': '2.13.0',\n", + " 'numpy': '1.26.4',\n", + " 'pandas': '1.5.3',\n", + " 'xarray': '2024.3.0',\n", + " 'numba': '0.60.0'}" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "import larch # !conda install larch #for estimation\n", + "import larch as lx # !conda install larch #for estimation\n", "import pandas as pd\n", - "import numpy as np\n", - "import yaml \n", - "import larch.util.excel\n", - "import os" + "\n", + "lx.versions()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We'll work in our `test` directory, where ActivitySim has saved the estimation data bundles." + "For this demo, we will assume that you have already run ActivitySim in estimation\n", + "mode, and saved the required estimation data bundles (EDB's) to disk. See\n", + "the [first notebook](./01_estimation_mode.ipynb) for details. The following module\n", + "will run a script to set everything up if the example data is not already available." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "EDB directory already populated.\n" + ] + }, + { + "data": { + "text/plain": [ + "PosixPath('test-estimation-data/activitysim-prototype-mtc-extended')" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "os.chdir('test')" + "from est_mode_setup import prepare, backup\n", + "\n", + "prepare()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# Load data and prep model for estimation" + "In this demo notebook, we will (later) edit the model spec file. But for demo purposes, we want to\n", + "make sure we are starting from the \"original\" spec file, so we'll check that now. For actual \n", + "applications, this step would not be necessary." ] }, { @@ -65,7 +115,14 @@ "metadata": {}, "outputs": [], "source": [ - "modelname=\"workplace_location\"" + "backup(\"output-est-mode/estimation_data_bundle/workplace_location/workplace_location_SPEC.csv\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Load data and prep model for estimation" ] }, { @@ -73,9 +130,36 @@ "execution_count": 4, "metadata": {}, "outputs": [], + "source": [ + "modelname = \"workplace_location\"" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "loading from output-est-mode/estimation_data_bundle/workplace_location/workplace_location_coefficients.csv\n", + "loading from output-est-mode/estimation_data_bundle/workplace_location/workplace_location_SPEC.csv\n", + "loading from output-est-mode/estimation_data_bundle/workplace_location/workplace_location_alternatives_combined.parquet\n", + "loading from output-est-mode/estimation_data_bundle/workplace_location/workplace_location_choosers_combined.parquet\n", + "loading from output-est-mode/estimation_data_bundle/workplace_location/workplace_location_landuse.csv\n", + "loading from output-est-mode/estimation_data_bundle/workplace_location/workplace_location_size_terms.csv\n" + ] + } + ], "source": [ "from activitysim.estimation.larch import component_model\n", - "model, data = component_model(modelname, return_data=True)" + "\n", + "model, data = component_model(\n", + " modelname,\n", + " edb_directory=f\"output-est-mode/estimation_data_bundle/{modelname}/\",\n", + " return_data=True,\n", + ")" ] }, { @@ -96,7 +180,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -187,7 +271,7 @@ "coef_mode_logsum 0.3000 F" ] }, - "execution_count": 5, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -205,7 +289,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -230,148 +314,142 @@ " \n", " \n", " person_id\n", - " variable\n", - " 1\n", - " 2\n", - " 3\n", - " 4\n", - " 5\n", - " 6\n", - " 7\n", - " 8\n", - " ...\n", - " 181\n", - " 182\n", - " 183\n", - " 184\n", - " 185\n", - " 186\n", - " 187\n", - " 188\n", - " 189\n", - " 190\n", + " alt_dest\n", + " prob\n", + " pick_count\n", + " mode_choice_logsum\n", + " size_term\n", + " shadow_price_size_term_adjustment\n", + " shadow_price_utility_adjustment\n", + " util_dist_0_1\n", + " util_dist_1_2\n", + " util_dist_2_5\n", + " util_dist_5_15\n", + " util_dist_15_up\n", + " util_dist_0_5_high\n", + " util_dist_15_up_high\n", + " util_size_variable\n", + " util_utility_adjustment\n", + " util_no_attractions\n", + " util_mode_logsum\n", + " util_sample_of_corrections_factor\n", " \n", " \n", " \n", " \n", " 0\n", - " 72241\n", - " mode_choice_logsum\n", - " -0.6000073826104492\n", - " -0.4656491845430101\n", - " -0.41794791684660004\n", - " -0.4545880924383482\n", - " -0.3870339464573669\n", - " -0.713189384898449\n", - " -0.6002723120707204\n", - " -0.7303789868909905\n", - " ...\n", - " -1.2551998198820722\n", - " -1.444611856370077\n", - " -1.309689434695158\n", - " -1.2118895631639268\n", - " -1.116133290115392\n", - " -1.1401586021041086\n", - " -1.268242046936546\n", - " -1.1992258811031282\n", - " -1.332212687016352\n", - " -1.4322381548918224\n", + " 72355\n", + " 2\n", + " 0.033018\n", + " 4\n", + " -1.930058\n", + " 8679.220\n", + " 1\n", + " 0\n", + " 1.0\n", + " 1.0\n", + " 3.0\n", + " 1.01\n", + " 0.000000\n", + " 0.0\n", + " 0.0\n", + " 9.068802\n", + " 0\n", + " False\n", + " -1.930058\n", + " 4.796986\n", " \n", " \n", " 1\n", - " 72241\n", - " pick_count\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " ...\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", + " 72355\n", + " 5\n", + " 0.015149\n", + " 1\n", + " -1.727929\n", + " 3811.166\n", + " 1\n", + " 0\n", " 1.0\n", " 1.0\n", + " 3.0\n", + " 0.67\n", + " 0.000000\n", + " 0.0\n", + " 0.0\n", + " 8.245953\n", + " 0\n", + " False\n", + " -1.727929\n", + " 4.189851\n", " \n", " \n", " 2\n", - " 72241\n", - " prob\n", - " 0.044801462203924856\n", - " 0.06764474840448732\n", - " 0.004636496646133522\n", - " 0.038560793011622845\n", - " 0.029432761447063308\n", - " 0.007082161657578104\n", - " 0.021002192072313054\n", - " 0.007080174169833742\n", - " ...\n", - " 9.835213648420107e-05\n", - " 9.37955508970241e-05\n", - " 0.0003916917023644097\n", - " 0.0004549197781990045\n", - " 0.0006986771541699331\n", - " 0.0005700269910735453\n", - " 0.00022288388655805036\n", - " 0.0015168772236387644\n", - " 6.456615866696312e-05\n", - " 0.00038493516540732525\n", + " 72355\n", + " 6\n", + " 0.004282\n", + " 1\n", + " -1.599405\n", + " 1050.528\n", + " 1\n", + " 0\n", + " 1.0\n", + " 1.0\n", + " 3.0\n", + " 0.48\n", + " 0.000000\n", + " 0.0\n", + " 0.0\n", + " 6.958000\n", + " 0\n", + " False\n", + " -1.599405\n", + " 5.453389\n", " \n", " \n", " 3\n", - " 72241\n", - " shadow_price_size_term_adjustment\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " ...\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", + " 72355\n", + " 12\n", + " 0.013401\n", + " 1\n", + " -1.859328\n", + " 3508.389\n", + " 1\n", + " 0\n", " 1.0\n", " 1.0\n", + " 3.0\n", + " 0.98\n", + " 0.000000\n", + " 0.0\n", + " 0.0\n", + " 8.163197\n", + " 0\n", + " False\n", + " -1.859328\n", + " 4.312441\n", " \n", " \n", " 4\n", - " 72241\n", - " shadow_price_utility_adjustment\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " ...\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", + " 72355\n", + " 14\n", + " 0.020545\n", + " 2\n", + " -2.014588\n", + " 5612.293\n", + " 1\n", + " 0\n", + " 1.0\n", + " 1.0\n", + " 3.0\n", + " 1.31\n", + " 0.000000\n", " 0.0\n", " 0.0\n", + " 8.632893\n", + " 0\n", + " False\n", + " -2.014588\n", + " 4.578298\n", " \n", " \n", " ...\n", @@ -395,229 +473,223 @@ " ...\n", " ...\n", " ...\n", - " ...\n", " \n", " \n", - " 46471\n", - " 7515185\n", - " util_mode_logsum\n", - " 5.209319664605113\n", - " 5.263859224685696\n", - " 5.250578793547065\n", - " 5.240693588870104\n", - " 5.266707024418452\n", - " 5.385882663451519\n", - " 5.429836866161502\n", - " 5.413580929225948\n", - " ...\n", - " 3.5638723444203606\n", - " 3.8737395301473363\n", - " 3.939960434175001\n", - " 3.896122982249229\n", - " 4.037021365960745\n", - " 4.008376112238483\n", - " 4.022965354450543\n", - " 4.2561835681622435\n", - " 4.137475938698699\n", - " 3.803872808728852\n", - " \n", - " \n", - " 46472\n", - " 7515185\n", - " util_no_attractions\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " ...\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", + " 766219\n", + " 7539317\n", + " 1392\n", + " 0.012884\n", + " 1\n", + " -1.286404\n", + " 153.501\n", + " 1\n", + " 0\n", + " 1.0\n", + " 1.0\n", + " 3.0\n", + " 3.60\n", + " 0.000000\n", + " 0.0\n", + " 0.0\n", + " 5.040201\n", + " 0\n", " False\n", + " -1.286404\n", + " 4.351731\n", " \n", " \n", - " 46473\n", - " 7515185\n", - " util_sample_of_corrections_factor\n", - " 3.773690429573432\n", - " 3.2901835133378077\n", - " 5.885037102917519\n", - " 3.829120168967722\n", - " 3.995759873960041\n", - " 5.287496147764242\n", - " 4.186480380588901\n", - " 5.144701771913909\n", - " ...\n", - " 8.673308209076758\n", - " 8.543415039654008\n", - " 7.12433751865688\n", - " 7.0286614320788905\n", - " 6.59573872948536\n", - " 6.749128801712912\n", - " 7.618771571501497\n", - " 5.665033450001899\n", - " 8.806332093282728\n", - " 7.046647564016155\n", - " \n", - " \n", - " 46474\n", - " 7515185\n", - " util_size_variable\n", - " 8.607993215742676\n", - " 9.068802152955321\n", - " 6.44746749765505\n", - " 8.457988473558888\n", - " 8.245952810520611\n", - " 6.957999623413992\n", - " 7.998487266140552\n", - " 6.960822948235117\n", - " ...\n", - " 4.315499470829833\n", - " 4.3335976552693785\n", - " 5.721835205763653\n", - " 5.789241258107118\n", - " 6.1502039682537495\n", - " 6.018658905769173\n", - " 5.06677615336607\n", - " 6.994814238173049\n", - " 3.9486056264898335\n", - " 5.759690106594497\n", - " \n", - " \n", - " 46475\n", - " 7515185\n", - " util_utility_adjustment\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " ...\n", - " 0\n", - " 0\n", + " 766220\n", + " 7539317\n", + " 1397\n", + " 0.004689\n", + " 1\n", + " -3.658543\n", + " 303.136\n", + " 1\n", " 0\n", + " 1.0\n", + " 1.0\n", + " 3.0\n", + " 10.00\n", + " 9.440001\n", + " 0.0\n", + " 0.0\n", + " 5.717475\n", " 0\n", + " False\n", + " -3.658543\n", + " 5.362505\n", + " \n", + " \n", + " 766221\n", + " 7539317\n", + " 1401\n", + " 0.005169\n", + " 1\n", + " -4.566126\n", + " 559.322\n", + " 1\n", " 0\n", + " 1.0\n", + " 1.0\n", + " 3.0\n", + " 10.00\n", + " 15.040001\n", + " 0.0\n", + " 0.0\n", + " 6.328512\n", " 0\n", + " False\n", + " -4.566126\n", + " 5.264988\n", + " \n", + " \n", + " 766222\n", + " 7539317\n", + " 1405\n", + " 0.001902\n", + " 1\n", + " -6.448663\n", + " 763.324\n", + " 1\n", " 0\n", + " 1.0\n", + " 1.0\n", + " 3.0\n", + " 10.00\n", + " 29.330002\n", + " 0.0\n", + " 0.0\n", + " 6.638992\n", " 0\n", + " False\n", + " -6.448663\n", + " 6.264901\n", + " \n", + " \n", + " 766223\n", + " 7539317\n", + " 1415\n", + " 0.006110\n", + " 1\n", + " -3.668065\n", + " 402.607\n", + " 1\n", " 0\n", + " 1.0\n", + " 1.0\n", + " 3.0\n", + " 10.00\n", + " 9.639999\n", + " 0.0\n", + " 0.0\n", + " 6.000442\n", " 0\n", + " False\n", + " -3.668065\n", + " 5.097878\n", " \n", " \n", "\n", - "

46476 rows × 192 columns

\n", + "

766224 rows × 20 columns

\n", "" ], "text/plain": [ - " person_id variable 1 \\\n", - "0 72241 mode_choice_logsum -0.6000073826104492 \n", - "1 72241 pick_count 1.0 \n", - "2 72241 prob 0.044801462203924856 \n", - "3 72241 shadow_price_size_term_adjustment 1.0 \n", - "4 72241 shadow_price_utility_adjustment 0.0 \n", - "... ... ... ... \n", - "46471 7515185 util_mode_logsum 5.209319664605113 \n", - "46472 7515185 util_no_attractions False \n", - "46473 7515185 util_sample_of_corrections_factor 3.773690429573432 \n", - "46474 7515185 util_size_variable 8.607993215742676 \n", - "46475 7515185 util_utility_adjustment 0 \n", + " person_id alt_dest prob pick_count mode_choice_logsum \\\n", + "0 72355 2 0.033018 4 -1.930058 \n", + "1 72355 5 0.015149 1 -1.727929 \n", + "2 72355 6 0.004282 1 -1.599405 \n", + "3 72355 12 0.013401 1 -1.859328 \n", + "4 72355 14 0.020545 2 -2.014588 \n", + "... ... ... ... ... ... \n", + "766219 7539317 1392 0.012884 1 -1.286404 \n", + "766220 7539317 1397 0.004689 1 -3.658543 \n", + "766221 7539317 1401 0.005169 1 -4.566126 \n", + "766222 7539317 1405 0.001902 1 -6.448663 \n", + "766223 7539317 1415 0.006110 1 -3.668065 \n", "\n", - " 2 3 4 \\\n", - "0 -0.4656491845430101 -0.41794791684660004 -0.4545880924383482 \n", - "1 1.0 1.0 1.0 \n", - "2 0.06764474840448732 0.004636496646133522 0.038560793011622845 \n", - "3 1.0 1.0 1.0 \n", - "4 0.0 0.0 0.0 \n", - "... ... ... ... \n", - "46471 5.263859224685696 5.250578793547065 5.240693588870104 \n", - "46472 False False False \n", - "46473 3.2901835133378077 5.885037102917519 3.829120168967722 \n", - "46474 9.068802152955321 6.44746749765505 8.457988473558888 \n", - "46475 0 0 0 \n", + " size_term shadow_price_size_term_adjustment \\\n", + "0 8679.220 1 \n", + "1 3811.166 1 \n", + "2 1050.528 1 \n", + "3 3508.389 1 \n", + "4 5612.293 1 \n", + "... ... ... \n", + "766219 153.501 1 \n", + "766220 303.136 1 \n", + "766221 559.322 1 \n", + "766222 763.324 1 \n", + "766223 402.607 1 \n", "\n", - " 5 6 7 \\\n", - "0 -0.3870339464573669 -0.713189384898449 -0.6002723120707204 \n", - "1 1.0 1.0 1.0 \n", - "2 0.029432761447063308 0.007082161657578104 0.021002192072313054 \n", - "3 1.0 1.0 1.0 \n", - "4 0.0 0.0 0.0 \n", - "... ... ... ... \n", - "46471 5.266707024418452 5.385882663451519 5.429836866161502 \n", - "46472 False False False \n", - "46473 3.995759873960041 5.287496147764242 4.186480380588901 \n", - "46474 8.245952810520611 6.957999623413992 7.998487266140552 \n", - "46475 0 0 0 \n", + " shadow_price_utility_adjustment util_dist_0_1 util_dist_1_2 \\\n", + "0 0 1.0 1.0 \n", + "1 0 1.0 1.0 \n", + "2 0 1.0 1.0 \n", + "3 0 1.0 1.0 \n", + "4 0 1.0 1.0 \n", + "... ... ... ... \n", + "766219 0 1.0 1.0 \n", + "766220 0 1.0 1.0 \n", + "766221 0 1.0 1.0 \n", + "766222 0 1.0 1.0 \n", + "766223 0 1.0 1.0 \n", "\n", - " 8 ... 181 182 \\\n", - "0 -0.7303789868909905 ... -1.2551998198820722 -1.444611856370077 \n", - "1 1.0 ... 1.0 1.0 \n", - "2 0.007080174169833742 ... 9.835213648420107e-05 9.37955508970241e-05 \n", - "3 1.0 ... 1.0 1.0 \n", - "4 0.0 ... 0.0 0.0 \n", - "... ... ... ... ... \n", - "46471 5.413580929225948 ... 3.5638723444203606 3.8737395301473363 \n", - "46472 False ... False False \n", - "46473 5.144701771913909 ... 8.673308209076758 8.543415039654008 \n", - "46474 6.960822948235117 ... 4.315499470829833 4.3335976552693785 \n", - "46475 0 ... 0 0 \n", + " util_dist_2_5 util_dist_5_15 util_dist_15_up util_dist_0_5_high \\\n", + "0 3.0 1.01 0.000000 0.0 \n", + "1 3.0 0.67 0.000000 0.0 \n", + "2 3.0 0.48 0.000000 0.0 \n", + "3 3.0 0.98 0.000000 0.0 \n", + "4 3.0 1.31 0.000000 0.0 \n", + "... ... ... ... ... \n", + "766219 3.0 3.60 0.000000 0.0 \n", + "766220 3.0 10.00 9.440001 0.0 \n", + "766221 3.0 10.00 15.040001 0.0 \n", + "766222 3.0 10.00 29.330002 0.0 \n", + "766223 3.0 10.00 9.639999 0.0 \n", "\n", - " 183 184 185 \\\n", - "0 -1.309689434695158 -1.2118895631639268 -1.116133290115392 \n", - "1 1.0 1.0 1.0 \n", - "2 0.0003916917023644097 0.0004549197781990045 0.0006986771541699331 \n", - "3 1.0 1.0 1.0 \n", - "4 0.0 0.0 0.0 \n", - "... ... ... ... \n", - "46471 3.939960434175001 3.896122982249229 4.037021365960745 \n", - "46472 False False False \n", - "46473 7.12433751865688 7.0286614320788905 6.59573872948536 \n", - "46474 5.721835205763653 5.789241258107118 6.1502039682537495 \n", - "46475 0 0 0 \n", + " util_dist_15_up_high util_size_variable util_utility_adjustment \\\n", + "0 0.0 9.068802 0 \n", + "1 0.0 8.245953 0 \n", + "2 0.0 6.958000 0 \n", + "3 0.0 8.163197 0 \n", + "4 0.0 8.632893 0 \n", + "... ... ... ... \n", + "766219 0.0 5.040201 0 \n", + "766220 0.0 5.717475 0 \n", + "766221 0.0 6.328512 0 \n", + "766222 0.0 6.638992 0 \n", + "766223 0.0 6.000442 0 \n", "\n", - " 186 187 188 \\\n", - "0 -1.1401586021041086 -1.268242046936546 -1.1992258811031282 \n", - "1 1.0 1.0 1.0 \n", - "2 0.0005700269910735453 0.00022288388655805036 0.0015168772236387644 \n", - "3 1.0 1.0 1.0 \n", - "4 0.0 0.0 0.0 \n", - "... ... ... ... \n", - "46471 4.008376112238483 4.022965354450543 4.2561835681622435 \n", - "46472 False False False \n", - "46473 6.749128801712912 7.618771571501497 5.665033450001899 \n", - "46474 6.018658905769173 5.06677615336607 6.994814238173049 \n", - "46475 0 0 0 \n", + " util_no_attractions util_mode_logsum \\\n", + "0 False -1.930058 \n", + "1 False -1.727929 \n", + "2 False -1.599405 \n", + "3 False -1.859328 \n", + "4 False -2.014588 \n", + "... ... ... \n", + "766219 False -1.286404 \n", + "766220 False -3.658543 \n", + "766221 False -4.566126 \n", + "766222 False -6.448663 \n", + "766223 False -3.668065 \n", "\n", - " 189 190 \n", - "0 -1.332212687016352 -1.4322381548918224 \n", - "1 1.0 1.0 \n", - "2 6.456615866696312e-05 0.00038493516540732525 \n", - "3 1.0 1.0 \n", - "4 0.0 0.0 \n", - "... ... ... \n", - "46471 4.137475938698699 3.803872808728852 \n", - "46472 False False \n", - "46473 8.806332093282728 7.046647564016155 \n", - "46474 3.9486056264898335 5.759690106594497 \n", - "46475 0 0 \n", + " util_sample_of_corrections_factor \n", + "0 4.796986 \n", + "1 4.189851 \n", + "2 5.453389 \n", + "3 4.312441 \n", + "4 4.578298 \n", + "... ... \n", + "766219 4.351731 \n", + "766220 5.362505 \n", + "766221 5.264988 \n", + "766222 6.264901 \n", + "766223 5.097878 \n", "\n", - "[46476 rows x 192 columns]" + "[766224 rows x 20 columns]" ] }, - "execution_count": 6, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -635,7 +707,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -669,43 +741,43 @@ " \n", " \n", " 0\n", - " 72241\n", - " 13\n", - " 9\n", - " 1\n", + " 72355\n", + " 14\n", " 17\n", + " 1\n", + " 55\n", " \n", " \n", " 1\n", - " 72441\n", - " 100\n", - " 100\n", + " 72384\n", + " 1\n", + " 16\n", " 1\n", - " 60\n", + " 59\n", " \n", " \n", " 2\n", - " 72528\n", - " 139\n", - " 126\n", + " 72407\n", + " 70\n", + " 70\n", " 1\n", - " 69\n", + " 59\n", " \n", " \n", " 3\n", - " 73144\n", - " 77\n", - " 77\n", + " 72459\n", + " 193\n", + " 30\n", " 1\n", - " 125\n", + " 61\n", " \n", " \n", " 4\n", - " 73493\n", - " 117\n", - " 117\n", + " 72529\n", + " 16\n", + " 57\n", " 1\n", - " 133\n", + " 69\n", " \n", " \n", " ...\n", @@ -716,68 +788,68 @@ " ...\n", " \n", " \n", - " 2577\n", - " 7514214\n", - " 80\n", - " 71\n", + " 28276\n", + " 7539071\n", + " 1006\n", + " 1019\n", " 1\n", - " 56\n", + " 1006\n", " \n", " \n", - " 2578\n", - " 7514284\n", - " 187\n", - " 186\n", + " 28277\n", + " 7539203\n", + " 1059\n", + " 1152\n", " 1\n", - " 72\n", + " 1159\n", " \n", " \n", - " 2579\n", - " 7514404\n", - " 105\n", - " 106\n", + " 28278\n", + " 7539217\n", + " 940\n", + " 991\n", " 1\n", - " 81\n", + " 1159\n", " \n", " \n", - " 2580\n", - " 7514777\n", - " 87\n", - " 87\n", + " 28279\n", + " 7539270\n", + " 1162\n", + " 1145\n", " 1\n", - " 106\n", + " 1161\n", " \n", " \n", - " 2581\n", - " 7515185\n", - " 16\n", - " 16\n", + " 28280\n", + " 7539317\n", + " 1390\n", + " 1381\n", " 1\n", - " 142\n", + " 1390\n", " \n", " \n", "\n", - "

2582 rows × 5 columns

\n", + "

28281 rows × 5 columns

\n", "" ], "text/plain": [ - " person_id model_choice override_choice income_segment home_zone_id\n", - "0 72241 13 9 1 17\n", - "1 72441 100 100 1 60\n", - "2 72528 139 126 1 69\n", - "3 73144 77 77 1 125\n", - "4 73493 117 117 1 133\n", - "... ... ... ... ... ...\n", - "2577 7514214 80 71 1 56\n", - "2578 7514284 187 186 1 72\n", - "2579 7514404 105 106 1 81\n", - "2580 7514777 87 87 1 106\n", - "2581 7515185 16 16 1 142\n", + " person_id model_choice override_choice income_segment home_zone_id\n", + "0 72355 14 17 1 55\n", + "1 72384 1 16 1 59\n", + "2 72407 70 70 1 59\n", + "3 72459 193 30 1 61\n", + "4 72529 16 57 1 69\n", + "... ... ... ... ... ...\n", + "28276 7539071 1006 1019 1 1006\n", + "28277 7539203 1059 1152 1 1159\n", + "28278 7539217 940 991 1 1159\n", + "28279 7539270 1162 1145 1 1161\n", + "28280 7539317 1390 1381 1 1390\n", "\n", - "[2582 rows x 5 columns]" + "[28281 rows x 5 columns]" ] }, - "execution_count": 7, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -795,7 +867,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -881,9 +953,9 @@ " 7\n", " ...\n", " 0\n", + " 0.0\n", " 0.00000\n", - " 0.00000\n", - " 0.00000\n", + " 0.0\n", " 3\n", " 5.89564\n", " 2.875000\n", @@ -905,9 +977,9 @@ " 19\n", " ...\n", " 0\n", + " 0.0\n", " 0.00000\n", - " 0.00000\n", - " 0.00000\n", + " 0.0\n", " 1\n", " 5.84871\n", " 5.195214\n", @@ -929,9 +1001,9 @@ " 38\n", " ...\n", " 0\n", + " 0.0\n", " 0.00000\n", - " 0.00000\n", - " 0.00000\n", + " 0.0\n", " 1\n", " 5.53231\n", " 80.470405\n", @@ -953,9 +1025,9 @@ " 20\n", " ...\n", " 0\n", + " 0.0\n", " 0.00000\n", - " 0.00000\n", - " 0.00000\n", + " 0.0\n", " 2\n", " 5.64330\n", " 7.947368\n", @@ -977,9 +1049,9 @@ " 86\n", " ...\n", " 0\n", - " 0.00000\n", + " 0.0\n", " 72.14684\n", - " 0.00000\n", + " 0.0\n", " 1\n", " 5.52555\n", " 38.187500\n", @@ -1012,191 +1084,191 @@ " ...\n", " \n", " \n", - " 186\n", - " 4\n", - " 4\n", - " 1\n", - " 2779\n", - " 8062\n", - " 376.0\n", - " 172.0\n", - " 15.00000\n", - " 1760\n", - " 1178\n", + " 1450\n", + " 34\n", + " 34\n", + " 9\n", + " 2724\n", + " 6493\n", + " 1320.0\n", + " 630.0\n", + " 69.00000\n", + " 1046\n", + " 1013\n", " ...\n", - " 3\n", - " 0.00000\n", - " 0.00000\n", + " 4\n", + " 0.0\n", " 0.00000\n", + " 0.0\n", " 1\n", - " 2.04173\n", - " 14.860963\n", - " 9.411765\n", - " 5.762347\n", + " 1.12116\n", + " 3.896996\n", + " 1.496423\n", + " 1.081235\n", " False\n", " \n", " \n", - " 187\n", - " 4\n", - " 4\n", - " 1\n", - " 1492\n", - " 4139\n", - " 214.0\n", - " 116.0\n", - " 10.00000\n", - " 808\n", - " 603\n", + " 1451\n", + " 34\n", + " 34\n", + " 9\n", + " 2016\n", + " 4835\n", + " 664.0\n", + " 379.0\n", + " 43.00000\n", + " 757\n", + " 757\n", " ...\n", - " 3\n", - " 0.00000\n", - " 0.00000\n", + " 4\n", + " 0.0\n", " 0.00000\n", - " 2\n", - " 1.73676\n", - " 11.841270\n", - " 6.412698\n", - " 4.159890\n", + " 0.0\n", + " 1\n", + " 1.17116\n", + " 4.777251\n", + " 1.793839\n", + " 1.304140\n", " False\n", " \n", " \n", - " 188\n", - " 4\n", - " 4\n", - " 1\n", - " 753\n", - " 4072\n", - " 232.0\n", - " 11.0\n", - " 178.00000\n", - " 4502\n", - " 1117\n", + " 1452\n", + " 34\n", + " 34\n", + " 9\n", + " 2178\n", + " 5055\n", + " 1068.0\n", + " 602.0\n", + " 35.00000\n", + " 2110\n", + " 789\n", " ...\n", - " 2\n", - " 3961.04761\n", - " 17397.79102\n", - " 11152.93652\n", + " 4\n", + " 0.0\n", + " 0.00000\n", + " 0.0\n", " 1\n", - " 2.28992\n", - " 3.984127\n", - " 23.820106\n", - " 3.413233\n", + " 1.17587\n", + " 3.419152\n", + " 3.312402\n", + " 1.682465\n", " False\n", " \n", " \n", - " 189\n", - " 4\n", - " 4\n", - " 1\n", - " 3546\n", - " 8476\n", - " 201.0\n", - " 72.0\n", - " 6.00000\n", - " 226\n", - " 1057\n", + " 1453\n", + " 34\n", + " 34\n", + " 9\n", + " 298\n", + " 779\n", + " 14195.0\n", + " 429.0\n", + " 4.00000\n", + " 922\n", + " 88\n", " ...\n", - " 2\n", - " 0.00000\n", - " 0.00000\n", + " 5\n", + " 0.0\n", " 0.00000\n", + " 0.0\n", " 1\n", - " 2.88773\n", - " 45.461538\n", - " 2.897436\n", - " 2.723836\n", + " 1.01972\n", + " 0.688222\n", + " 2.129330\n", + " 0.520115\n", " False\n", " \n", " \n", - " 190\n", - " 4\n", - " 4\n", - " 1\n", - " 968\n", - " 1647\n", - " 1381.0\n", - " 14.0\n", - " 28.00000\n", - " 1010\n", - " 114\n", + " 1454\n", + " 34\n", + " 34\n", + " 9\n", + " 1068\n", + " 2337\n", + " 10469.0\n", + " 1114.0\n", + " 27.00000\n", + " 607\n", + " 418\n", " ...\n", - " 3\n", - " 0.00000\n", - " 0.00000\n", + " 5\n", + " 0.0\n", " 0.00000\n", + " 0.0\n", " 1\n", - " 2.60309\n", - " 23.047619\n", - " 24.047619\n", - " 11.768501\n", + " 0.95542\n", + " 0.936021\n", + " 0.531989\n", + " 0.339203\n", " False\n", " \n", " \n", "\n", - "

190 rows × 28 columns

\n", + "

1454 rows × 28 columns

\n", "" ], "text/plain": [ - " DISTRICT SD county_id TOTHH TOTPOP TOTACRE RESACRE CIACRE \\\n", - "zone_id \n", - "1 1 1 1 46 82 20.3 1.0 15.00000 \n", - "2 1 1 1 134 240 31.1 1.0 24.79297 \n", - "3 1 1 1 267 476 14.7 1.0 2.31799 \n", - "4 1 1 1 151 253 19.3 1.0 18.00000 \n", - "5 1 1 1 611 1069 52.7 1.0 15.00000 \n", - "... ... .. ... ... ... ... ... ... \n", - "186 4 4 1 2779 8062 376.0 172.0 15.00000 \n", - "187 4 4 1 1492 4139 214.0 116.0 10.00000 \n", - "188 4 4 1 753 4072 232.0 11.0 178.00000 \n", - "189 4 4 1 3546 8476 201.0 72.0 6.00000 \n", - "190 4 4 1 968 1647 1381.0 14.0 28.00000 \n", + " DISTRICT SD county_id TOTHH TOTPOP TOTACRE RESACRE CIACRE \\\n", + "zone_id \n", + "1 1 1 1 46 82 20.3 1.0 15.00000 \n", + "2 1 1 1 134 240 31.1 1.0 24.79297 \n", + "3 1 1 1 267 476 14.7 1.0 2.31799 \n", + "4 1 1 1 151 253 19.3 1.0 18.00000 \n", + "5 1 1 1 611 1069 52.7 1.0 15.00000 \n", + "... ... .. ... ... ... ... ... ... \n", + "1450 34 34 9 2724 6493 1320.0 630.0 69.00000 \n", + "1451 34 34 9 2016 4835 664.0 379.0 43.00000 \n", + "1452 34 34 9 2178 5055 1068.0 602.0 35.00000 \n", + "1453 34 34 9 298 779 14195.0 429.0 4.00000 \n", + "1454 34 34 9 1068 2337 10469.0 1114.0 27.00000 \n", "\n", - " TOTEMP AGE0519 ... area_type HSENROLL COLLFTE \\\n", - "zone_id ... \n", - "1 27318 7 ... 0 0.00000 0.00000 \n", - "2 42078 19 ... 0 0.00000 0.00000 \n", - "3 2445 38 ... 0 0.00000 0.00000 \n", - "4 22434 20 ... 0 0.00000 0.00000 \n", - "5 15662 86 ... 0 0.00000 72.14684 \n", - "... ... ... ... ... ... ... \n", - "186 1760 1178 ... 3 0.00000 0.00000 \n", - "187 808 603 ... 3 0.00000 0.00000 \n", - "188 4502 1117 ... 2 3961.04761 17397.79102 \n", - "189 226 1057 ... 2 0.00000 0.00000 \n", - "190 1010 114 ... 3 0.00000 0.00000 \n", + " TOTEMP AGE0519 ... area_type HSENROLL COLLFTE COLLPTE \\\n", + "zone_id ... \n", + "1 27318 7 ... 0 0.0 0.00000 0.0 \n", + "2 42078 19 ... 0 0.0 0.00000 0.0 \n", + "3 2445 38 ... 0 0.0 0.00000 0.0 \n", + "4 22434 20 ... 0 0.0 0.00000 0.0 \n", + "5 15662 86 ... 0 0.0 72.14684 0.0 \n", + "... ... ... ... ... ... ... ... \n", + "1450 1046 1013 ... 4 0.0 0.00000 0.0 \n", + "1451 757 757 ... 4 0.0 0.00000 0.0 \n", + "1452 2110 789 ... 4 0.0 0.00000 0.0 \n", + "1453 922 88 ... 5 0.0 0.00000 0.0 \n", + "1454 607 418 ... 5 0.0 0.00000 0.0 \n", "\n", - " COLLPTE TOPOLOGY TERMINAL household_density \\\n", - "zone_id \n", - "1 0.00000 3 5.89564 2.875000 \n", - "2 0.00000 1 5.84871 5.195214 \n", - "3 0.00000 1 5.53231 80.470405 \n", - "4 0.00000 2 5.64330 7.947368 \n", - "5 0.00000 1 5.52555 38.187500 \n", - "... ... ... ... ... \n", - "186 0.00000 1 2.04173 14.860963 \n", - "187 0.00000 2 1.73676 11.841270 \n", - "188 11152.93652 1 2.28992 3.984127 \n", - "189 0.00000 1 2.88773 45.461538 \n", - "190 0.00000 1 2.60309 23.047619 \n", + " TOPOLOGY TERMINAL household_density employment_density \\\n", + "zone_id \n", + "1 3 5.89564 2.875000 1707.375000 \n", + "2 1 5.84871 5.195214 1631.374751 \n", + "3 1 5.53231 80.470405 736.891913 \n", + "4 2 5.64330 7.947368 1180.736842 \n", + "5 1 5.52555 38.187500 978.875000 \n", + "... ... ... ... ... \n", + "1450 1 1.12116 3.896996 1.496423 \n", + "1451 1 1.17116 4.777251 1.793839 \n", + "1452 1 1.17587 3.419152 3.312402 \n", + "1453 1 1.01972 0.688222 2.129330 \n", + "1454 1 0.95542 0.936021 0.531989 \n", "\n", - " employment_density density_index is_cbd \n", - "zone_id \n", - "1 1707.375000 2.870167 False \n", - "2 1631.374751 5.178722 False \n", - "3 736.891913 72.547987 False \n", - "4 1180.736842 7.894233 False \n", - "5 978.875000 36.753679 False \n", - "... ... ... ... \n", - "186 9.411765 5.762347 False \n", - "187 6.412698 4.159890 False \n", - "188 23.820106 3.413233 False \n", - "189 2.897436 2.723836 False \n", - "190 24.047619 11.768501 False \n", + " density_index is_cbd \n", + "zone_id \n", + "1 2.870167 False \n", + "2 5.178722 False \n", + "3 72.547987 False \n", + "4 7.894233 False \n", + "5 36.753679 False \n", + "... ... ... \n", + "1450 1.081235 False \n", + "1451 1.304140 False \n", + "1452 1.682465 False \n", + "1453 0.520115 False \n", + "1454 0.339203 False \n", "\n", - "[190 rows x 28 columns]" + "[1454 rows x 28 columns]" ] }, - "execution_count": 8, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -1214,7 +1286,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -1357,7 +1429,7 @@ "9 @np.minimum(np.log(df.pick_count/df.prob), 60) 1 " ] }, - "execution_count": 9, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -1375,7 +1447,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -1466,7 +1538,7 @@ "work_veryhigh 0.093 0.270 0.241 0.146 0.004 0.246" ] }, - "execution_count": 10, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -1486,20 +1558,13 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "req_data does not request avail_ca or avail_co but it is set and being provided\n" - ] - }, { "data": { "text/html": [ - "

Iteration 475 [Optimization terminated successfully.]

" + "

Iteration 009 [Optimization terminated successfully]

" ], "text/plain": [ "" @@ -1511,7 +1576,7 @@ { "data": { "text/html": [ - "

Best LL = -13521.35475538419

" + "

Best LL = -88683.85038605405

" ], "text/plain": [ "" @@ -1542,466 +1607,443 @@ " \n", " \n", " value\n", + " best\n", " initvalue\n", - " nullvalue\n", " minimum\n", " maximum\n", + " nullvalue\n", " holdfast\n", - " note\n", - " best\n", + " \n", + " \n", + " param_name\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " -999\n", + " -9.990000e+02\n", + " -9.990000e+02\n", " -999.000000\n", " -999.000000\n", - " -999.0\n", - " -999.0\n", - " -999.0\n", - " 1\n", - " \n", " -999.000000\n", + " 0.0\n", + " 1\n", " \n", " \n", " 1\n", + " 1.000000e+00\n", + " 1.000000e+00\n", " 1.000000\n", " 1.000000\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1\n", - " \n", " 1.000000\n", + " 0.0\n", + " 1\n", " \n", " \n", " coef_dist_0_1\n", - " -1.084778\n", + " -1.035381e+00\n", + " -1.035381e+00\n", " -0.842800\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -1.084778\n", " \n", " \n", " coef_dist_0_5_high\n", - " 0.120981\n", + " 1.469662e-01\n", + " 1.469662e-01\n", " 0.150000\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.120981\n", " \n", " \n", " coef_dist_15_up\n", + " -1.170512e-01\n", + " -1.170512e-01\n", " -0.091700\n", - " -0.091700\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.091700\n", " \n", " \n", " coef_dist_1_2\n", - " -0.252580\n", + " -4.652491e-01\n", + " -4.652491e-01\n", " -0.310400\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.252580\n", " \n", " \n", " coef_dist_2_5\n", - " -0.369689\n", + " -4.177477e-01\n", + " -4.177477e-01\n", " -0.378300\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.369689\n", " \n", " \n", " coef_dist_5_15\n", - " -0.152259\n", + " -1.558734e-01\n", + " -1.558734e-01\n", " -0.128500\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.152259\n", " \n", " \n", " coef_dist_5_up_high\n", - " -0.015225\n", + " 2.506728e-02\n", + " 2.506728e-02\n", " 0.020000\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.015225\n", " \n", " \n", " coef_mode_logsum\n", - " 0.155426\n", + " 7.423654e-02\n", + " 7.423654e-02\n", " 0.300000\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.155426\n", " \n", " \n", " work_high_AGREMPN\n", - " -14.042031\n", + " -1.856268e+00\n", + " -1.856268e+00\n", " -5.115996\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -14.042031\n", " \n", " \n", " work_high_FPSEMPN\n", - " -2.021234\n", - " -1.575036\n", + " -1.895722e+00\n", + " -1.895722e+00\n", + " -1.575037\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -2.021234\n", " \n", " \n", " work_high_HEREMPN\n", - " -1.578781\n", + " -1.698263e+00\n", + " -1.698263e+00\n", " -1.258781\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -1.578781\n", " \n", " \n", " work_high_MWTEMPN\n", - " -2.074250\n", + " -1.815687e+00\n", + " -1.815687e+00\n", " -1.431292\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -2.074250\n", " \n", " \n", " work_high_OTHEMPN\n", - " -2.145558\n", + " -2.187482e+00\n", + " -2.187482e+00\n", " -1.870803\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -2.145558\n", " \n", " \n", " work_high_RETEMPN\n", + " -2.207275e+00\n", + " -2.207275e+00\n", + " -2.207275\n", " -2.207275\n", " -2.207275\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 1\n", - " \n", - " -2.207275\n", " \n", " \n", " work_low_AGREMPN\n", - " -40.734929\n", + " -7.178467e+01\n", + " -7.178467e+01\n", " -4.605170\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -40.734929\n", " \n", " \n", " work_low_FPSEMPN\n", - " -0.670108\n", + " -1.507959e+00\n", + " -1.507959e+00\n", " -1.645065\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -0.670108\n", " \n", " \n", " work_low_HEREMPN\n", - " 0.087905\n", + " -8.190703e-01\n", + " -8.190703e-01\n", " -0.959720\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " 0.087905\n", " \n", " \n", " work_low_MWTEMPN\n", - " -0.373028\n", + " -1.980587e+00\n", + " -1.980587e+00\n", " -1.807889\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -0.373028\n", " \n", " \n", " work_low_OTHEMPN\n", - " -0.705270\n", + " -2.021455e+00\n", + " -2.021455e+00\n", " -2.120264\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -0.705270\n", " \n", " \n", " work_low_RETEMPN\n", + " -2.047943e+00\n", + " -2.047943e+00\n", + " -2.047943\n", " -2.047943\n", " -2.047943\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 1\n", - " \n", - " -2.047943\n", " \n", " \n", " work_med_AGREMPN\n", - " -14.886841\n", + " -8.087999e+64\n", + " -8.087999e+64\n", " -4.828314\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -14.886841\n", " \n", " \n", " work_med_FPSEMPN\n", - " -1.942050\n", + " -2.151306e+00\n", + " -2.151306e+00\n", " -1.624552\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -1.942050\n", " \n", " \n", " work_med_HEREMPN\n", - " -1.382809\n", + " -1.606036e+00\n", + " -1.606036e+00\n", " -1.123930\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -1.382809\n", " \n", " \n", " work_med_MWTEMPN\n", - " -0.910436\n", + " -2.043992e+00\n", + " -2.043992e+00\n", " -1.560648\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -0.910436\n", " \n", " \n", " work_med_OTHEMPN\n", - " -2.535326\n", + " -2.172089e+00\n", + " -2.172089e+00\n", " -1.973281\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -2.535326\n", " \n", " \n", " work_med_RETEMPN\n", + " -2.120264e+00\n", + " -2.120264e+00\n", + " -2.120264\n", " -2.120264\n", " -2.120264\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 1\n", - " \n", - " -2.120264\n", " \n", " \n", " work_veryhigh_AGREMPN\n", - " -0.277725\n", + " -6.042012e+00\n", + " -6.042012e+00\n", " -5.521461\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -0.277725\n", " \n", " \n", " work_veryhigh_FPSEMPN\n", - " -1.757306\n", + " -1.838134e+00\n", + " -1.838134e+00\n", " -1.309333\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -1.757306\n", " \n", " \n", " work_veryhigh_HEREMPN\n", - " -1.621894\n", + " -1.992130e+00\n", + " -1.992130e+00\n", " -1.422958\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -1.621894\n", " \n", " \n", " work_veryhigh_MWTEMPN\n", - " -1.722069\n", + " -1.763131e+00\n", + " -1.763131e+00\n", " -1.402424\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -1.722069\n", " \n", " \n", " work_veryhigh_OTHEMPN\n", - " -2.483268\n", + " -2.509024e+00\n", + " -2.509024e+00\n", " -1.924149\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -2.483268\n", " \n", " \n", " work_veryhigh_RETEMPN\n", + " -2.375156e+00\n", + " -2.375156e+00\n", + " -2.375156\n", " -2.375156\n", " -2.375156\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 1\n", - " \n", - " -2.375156\n", " \n", " \n", "\n", "" ], "text/plain": [ - " value initvalue nullvalue minimum maximum \\\n", - "-999 -999.000000 -999.000000 -999.0 -999.0 -999.0 \n", - "1 1.000000 1.000000 1.0 1.0 1.0 \n", - "coef_dist_0_1 -1.084778 -0.842800 0.0 NaN NaN \n", - "coef_dist_0_5_high 0.120981 0.150000 0.0 NaN NaN \n", - "coef_dist_15_up -0.091700 -0.091700 0.0 NaN NaN \n", - "coef_dist_1_2 -0.252580 -0.310400 0.0 NaN NaN \n", - "coef_dist_2_5 -0.369689 -0.378300 0.0 NaN NaN \n", - "coef_dist_5_15 -0.152259 -0.128500 0.0 NaN NaN \n", - "coef_dist_5_up_high -0.015225 0.020000 0.0 NaN NaN \n", - "coef_mode_logsum 0.155426 0.300000 0.0 NaN NaN \n", - "work_high_AGREMPN -14.042031 -5.115996 0.0 -6.0 6.0 \n", - "work_high_FPSEMPN -2.021234 -1.575036 0.0 -6.0 6.0 \n", - "work_high_HEREMPN -1.578781 -1.258781 0.0 -6.0 6.0 \n", - "work_high_MWTEMPN -2.074250 -1.431292 0.0 -6.0 6.0 \n", - "work_high_OTHEMPN -2.145558 -1.870803 0.0 -6.0 6.0 \n", - "work_high_RETEMPN -2.207275 -2.207275 0.0 -6.0 6.0 \n", - "work_low_AGREMPN -40.734929 -4.605170 0.0 -6.0 6.0 \n", - "work_low_FPSEMPN -0.670108 -1.645065 0.0 -6.0 6.0 \n", - "work_low_HEREMPN 0.087905 -0.959720 0.0 -6.0 6.0 \n", - "work_low_MWTEMPN -0.373028 -1.807889 0.0 -6.0 6.0 \n", - "work_low_OTHEMPN -0.705270 -2.120264 0.0 -6.0 6.0 \n", - "work_low_RETEMPN -2.047943 -2.047943 0.0 -6.0 6.0 \n", - "work_med_AGREMPN -14.886841 -4.828314 0.0 -6.0 6.0 \n", - "work_med_FPSEMPN -1.942050 -1.624552 0.0 -6.0 6.0 \n", - "work_med_HEREMPN -1.382809 -1.123930 0.0 -6.0 6.0 \n", - "work_med_MWTEMPN -0.910436 -1.560648 0.0 -6.0 6.0 \n", - "work_med_OTHEMPN -2.535326 -1.973281 0.0 -6.0 6.0 \n", - "work_med_RETEMPN -2.120264 -2.120264 0.0 -6.0 6.0 \n", - "work_veryhigh_AGREMPN -0.277725 -5.521461 0.0 -6.0 6.0 \n", - "work_veryhigh_FPSEMPN -1.757306 -1.309333 0.0 -6.0 6.0 \n", - "work_veryhigh_HEREMPN -1.621894 -1.422958 0.0 -6.0 6.0 \n", - "work_veryhigh_MWTEMPN -1.722069 -1.402424 0.0 -6.0 6.0 \n", - "work_veryhigh_OTHEMPN -2.483268 -1.924149 0.0 -6.0 6.0 \n", - "work_veryhigh_RETEMPN -2.375156 -2.375156 0.0 -6.0 6.0 \n", + " value best initvalue minimum \\\n", + "param_name \n", + "-999 -9.990000e+02 -9.990000e+02 -999.000000 -999.000000 \n", + "1 1.000000e+00 1.000000e+00 1.000000 1.000000 \n", + "coef_dist_0_1 -1.035381e+00 -1.035381e+00 -0.842800 -25.000000 \n", + "coef_dist_0_5_high 1.469662e-01 1.469662e-01 0.150000 -25.000000 \n", + "coef_dist_15_up -1.170512e-01 -1.170512e-01 -0.091700 -25.000000 \n", + "coef_dist_1_2 -4.652491e-01 -4.652491e-01 -0.310400 -25.000000 \n", + "coef_dist_2_5 -4.177477e-01 -4.177477e-01 -0.378300 -25.000000 \n", + "coef_dist_5_15 -1.558734e-01 -1.558734e-01 -0.128500 -25.000000 \n", + "coef_dist_5_up_high 2.506728e-02 2.506728e-02 0.020000 -25.000000 \n", + "coef_mode_logsum 7.423654e-02 7.423654e-02 0.300000 -25.000000 \n", + "work_high_AGREMPN -1.856268e+00 -1.856268e+00 -5.115996 -6.000000 \n", + "work_high_FPSEMPN -1.895722e+00 -1.895722e+00 -1.575037 -6.000000 \n", + "work_high_HEREMPN -1.698263e+00 -1.698263e+00 -1.258781 -6.000000 \n", + "work_high_MWTEMPN -1.815687e+00 -1.815687e+00 -1.431292 -6.000000 \n", + "work_high_OTHEMPN -2.187482e+00 -2.187482e+00 -1.870803 -6.000000 \n", + "work_high_RETEMPN -2.207275e+00 -2.207275e+00 -2.207275 -2.207275 \n", + "work_low_AGREMPN -7.178467e+01 -7.178467e+01 -4.605170 -6.000000 \n", + "work_low_FPSEMPN -1.507959e+00 -1.507959e+00 -1.645065 -6.000000 \n", + "work_low_HEREMPN -8.190703e-01 -8.190703e-01 -0.959720 -6.000000 \n", + "work_low_MWTEMPN -1.980587e+00 -1.980587e+00 -1.807889 -6.000000 \n", + "work_low_OTHEMPN -2.021455e+00 -2.021455e+00 -2.120264 -6.000000 \n", + "work_low_RETEMPN -2.047943e+00 -2.047943e+00 -2.047943 -2.047943 \n", + "work_med_AGREMPN -8.087999e+64 -8.087999e+64 -4.828314 -6.000000 \n", + "work_med_FPSEMPN -2.151306e+00 -2.151306e+00 -1.624552 -6.000000 \n", + "work_med_HEREMPN -1.606036e+00 -1.606036e+00 -1.123930 -6.000000 \n", + "work_med_MWTEMPN -2.043992e+00 -2.043992e+00 -1.560648 -6.000000 \n", + "work_med_OTHEMPN -2.172089e+00 -2.172089e+00 -1.973281 -6.000000 \n", + "work_med_RETEMPN -2.120264e+00 -2.120264e+00 -2.120264 -2.120264 \n", + "work_veryhigh_AGREMPN -6.042012e+00 -6.042012e+00 -5.521461 -6.000000 \n", + "work_veryhigh_FPSEMPN -1.838134e+00 -1.838134e+00 -1.309333 -6.000000 \n", + "work_veryhigh_HEREMPN -1.992130e+00 -1.992130e+00 -1.422958 -6.000000 \n", + "work_veryhigh_MWTEMPN -1.763131e+00 -1.763131e+00 -1.402424 -6.000000 \n", + "work_veryhigh_OTHEMPN -2.509024e+00 -2.509024e+00 -1.924149 -6.000000 \n", + "work_veryhigh_RETEMPN -2.375156e+00 -2.375156e+00 -2.375156 -2.375156 \n", "\n", - " holdfast note best \n", - "-999 1 -999.000000 \n", - "1 1 1.000000 \n", - "coef_dist_0_1 0 -1.084778 \n", - "coef_dist_0_5_high 0 0.120981 \n", - "coef_dist_15_up 0 -0.091700 \n", - "coef_dist_1_2 0 -0.252580 \n", - "coef_dist_2_5 0 -0.369689 \n", - "coef_dist_5_15 0 -0.152259 \n", - "coef_dist_5_up_high 0 -0.015225 \n", - "coef_mode_logsum 0 0.155426 \n", - "work_high_AGREMPN 0 -14.042031 \n", - "work_high_FPSEMPN 0 -2.021234 \n", - "work_high_HEREMPN 0 -1.578781 \n", - "work_high_MWTEMPN 0 -2.074250 \n", - "work_high_OTHEMPN 0 -2.145558 \n", - "work_high_RETEMPN 1 -2.207275 \n", - "work_low_AGREMPN 0 -40.734929 \n", - "work_low_FPSEMPN 0 -0.670108 \n", - "work_low_HEREMPN 0 0.087905 \n", - "work_low_MWTEMPN 0 -0.373028 \n", - "work_low_OTHEMPN 0 -0.705270 \n", - "work_low_RETEMPN 1 -2.047943 \n", - "work_med_AGREMPN 0 -14.886841 \n", - "work_med_FPSEMPN 0 -1.942050 \n", - "work_med_HEREMPN 0 -1.382809 \n", - "work_med_MWTEMPN 0 -0.910436 \n", - "work_med_OTHEMPN 0 -2.535326 \n", - "work_med_RETEMPN 1 -2.120264 \n", - "work_veryhigh_AGREMPN 0 -0.277725 \n", - "work_veryhigh_FPSEMPN 0 -1.757306 \n", - "work_veryhigh_HEREMPN 0 -1.621894 \n", - "work_veryhigh_MWTEMPN 0 -1.722069 \n", - "work_veryhigh_OTHEMPN 0 -2.483268 \n", - "work_veryhigh_RETEMPN 1 -2.375156 " + " maximum nullvalue holdfast \n", + "param_name \n", + "-999 -999.000000 0.0 1 \n", + "1 1.000000 0.0 1 \n", + "coef_dist_0_1 25.000000 0.0 0 \n", + "coef_dist_0_5_high 25.000000 0.0 0 \n", + "coef_dist_15_up 25.000000 0.0 0 \n", + "coef_dist_1_2 25.000000 0.0 0 \n", + "coef_dist_2_5 25.000000 0.0 0 \n", + "coef_dist_5_15 25.000000 0.0 0 \n", + "coef_dist_5_up_high 25.000000 0.0 0 \n", + "coef_mode_logsum 25.000000 0.0 0 \n", + "work_high_AGREMPN 6.000000 0.0 0 \n", + "work_high_FPSEMPN 6.000000 0.0 0 \n", + "work_high_HEREMPN 6.000000 0.0 0 \n", + "work_high_MWTEMPN 6.000000 0.0 0 \n", + "work_high_OTHEMPN 6.000000 0.0 0 \n", + "work_high_RETEMPN -2.207275 0.0 1 \n", + "work_low_AGREMPN 6.000000 0.0 0 \n", + "work_low_FPSEMPN 6.000000 0.0 0 \n", + "work_low_HEREMPN 6.000000 0.0 0 \n", + "work_low_MWTEMPN 6.000000 0.0 0 \n", + "work_low_OTHEMPN 6.000000 0.0 0 \n", + "work_low_RETEMPN -2.047943 0.0 1 \n", + "work_med_AGREMPN 6.000000 0.0 0 \n", + "work_med_FPSEMPN 6.000000 0.0 0 \n", + "work_med_HEREMPN 6.000000 0.0 0 \n", + "work_med_MWTEMPN 6.000000 0.0 0 \n", + "work_med_OTHEMPN 6.000000 0.0 0 \n", + "work_med_RETEMPN -2.120264 0.0 1 \n", + "work_veryhigh_AGREMPN 6.000000 0.0 0 \n", + "work_veryhigh_FPSEMPN 6.000000 0.0 0 \n", + "work_veryhigh_HEREMPN 6.000000 0.0 0 \n", + "work_veryhigh_MWTEMPN 6.000000 0.0 0 \n", + "work_veryhigh_OTHEMPN 6.000000 0.0 0 \n", + "work_veryhigh_RETEMPN -2.375156 0.0 1 " ] }, "metadata": {}, @@ -2011,1040 +2053,14 @@ "name": "stderr", "output_type": "stream", "text": [ - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 6.58075738982826e-14 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 8.609108514589023e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 4.858994087802833e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 4.590724503258719e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.764703716398322e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 7.95965356556717e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.818442093095742e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 5.03392554043634e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.5381467152499962e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.0971331763693831e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.484283220498793e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.036454788412711e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.2342628444093822e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.1936812514265686e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.1462882066859337e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.2236450588660233e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 8.957773169475355e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.403629593864148e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 9.958621143814116e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.4044217977550493e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.24307099519925e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.5832094185085958e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 8.839880932923715e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.8356027731239294e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.1421351948148873e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.2122137179899207e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.361811071723201e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 7.424246392034423e-17 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 9.833431869070201e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.3560892176329117e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.3002356046314505e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 8.14760641170999e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.5893755977713855e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.2242791423085704e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 7.840228498303649e-17 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.821310614405388e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 7.602970799131063e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 9.202107985951836e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.345125215845087e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 9.411697752593235e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.9782369679586113e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.874082949306298e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 7.371793040685402e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.938572491694241e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.246124180526511e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.141265756002516e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.100401477984635e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.5378782864186965e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.9313922953760897e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.1977191783387483e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.363399913515622e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 5.762226538587988e-17 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 9.06242576436139e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.6385214345090097e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 7.165438390329778e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.1445961972935322e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 9.644187582621805e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 6.541708319680231e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.934162645300111e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.134777590184765e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 8.079203492312623e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.874033251349113e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.291857936661992e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.814737773513033e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 7.490568774143245e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.2304485728856308e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.485286718972943e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 6.383534175291423e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.613279191505726e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.8866154039229413e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.3878250547574447e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.527943739541298e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.909416907139415e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.1510614619527032e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.1368120272688944e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.643995712069883e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 6.53776423374248e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.884789133771701e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.204048408933774e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.3319513123043316e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 5.705366627147927e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 6.97514592434133e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.0809478465057004e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.5511675499533377e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 7.593689804444176e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.4957755267975435e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 8.696769491557346e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 6.737774617674386e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 6.128045848859581e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.5630230989843793e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.3948944750175547e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.3350636520980866e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.1373262852024607e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.431634254132492e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 6.150573731273586e-17 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.840572414827625e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.6440290968450892e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.169148987650627e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.2618601413717198e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.1027363624616727e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.4325420873477145e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.130305386573877e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.5981412998626995e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.8024083176379757e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 8.699848692868201e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.8050041435677926e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.4641893204053784e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.3202058990880262e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.7982648639328196e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.682688110753623e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.3918073923632958e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.3958454623675576e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.687173737740406e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.4445622876893135e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.593097934685835e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.255178874295989e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 6.938159369904954e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 5.227861479349974e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 9.72281234139755e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 6.67479423854955e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.0701537184819448e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.11956756006857e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.833010368509196e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 7.8836696710125525e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 9.141820313543679e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 4.1835089487134243e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.184244303454254e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.764215386233791e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.8241552638642826e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.4965243982010715e-17 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.79176697115328e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.1623175453554706e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 4.716334545703604e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.7347158495050401e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.6100668210271076e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 6.283546894454948e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.852301410439485e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.1559061824726984e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.5479661830923281e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.0532255108666818e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.3565906450031844e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.798152742434788e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 8.683505014802718e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 6.396183839539828e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.242858084385879e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 9.871895027080846e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.6099420086106906e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.1442376790795919e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 7.964118309463358e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 4.274474036241725e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.6677866698481992e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.1051019124998109e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.9324314980494604e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.9595868472785627e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.1615547499831387e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.211882484768278e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.8257843151502582e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.4275891045055421e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.4393823211036024e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 4.186384064873585e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 4.824617816113209e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.85880587925525e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.04197500561093e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.4837817685211961e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 5.213652954797472e-18 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.0775275642789367e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.119245313180634e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.4446800617173398e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.2006079813263649e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.1552868224959877e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 5.185573102435832e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.1516592133774406e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 7.762753403181173e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 9.679389943868996e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.9785706753993463e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.8961763259837587e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.912979328104873e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.409320601113607e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.2305205209386157e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.450335157893293e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.617730387066754e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.2933647368469341e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 5.617409120210384e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.7582779195718458e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 5.280498120639517e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 4.55527755915478e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.9059076312203676e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 4.1114327780888087e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.1431278585276687e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 4.969086908423215e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.3500227499265608e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.3180244010735768e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.0076130347475153e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.802972279967265e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.2506777229300395e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.80006127424388e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.9183933078130794e-17 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.4041773903929795e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.3039887400379244e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.6092169814153935e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 8.760970883046188e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 9.339080979177279e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.2555803195460367e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.6269110645033512e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.2429300546953463e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 8.144357110872857e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.1049947014037147e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 4.1861752823090313e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.18997532580141e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.667880830740113e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.1353398760676563e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.3634447254389383e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.7532943704740856e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.2111462777429524e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.864047631107106e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.919456911847766e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.7059566840488057e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.9530301995171284e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 5.281202462831353e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 5.758178675470373e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.002078079924329e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 8.784717876753973e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.2017073036704768e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.224557692109661e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.721220285890822e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.622600675521404e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.6905948817226687e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.694096953470124e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.3569861491836122e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.502124368301506e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 4.7407488468555395e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 8.697990870236535e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 9.81657002649866e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.4045763663198253e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.0436171317361175e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 8.156211561252534e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 5.236987926218086e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.4465307474715075e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.6938449666000817e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.1851170538118256e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.9412774988879662e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.670349853302781e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.0539418212362084e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.6960522608899035e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.5158041025609332e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.008274070634254e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 8.387788535570126e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.2157366699296544e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.1164266689499806e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 7.56169366819644e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 6.341415195655093e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.1987460474379664e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.6679242945202155e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.4998283744619553e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.3250974123734563e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.6657512309526764e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.262311118768431e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 7.971903794447176e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.0326431316090163e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.1899909566934324e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 9.914612266695079e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.0155418180309193e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 8.254260491179171e-17 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 8.246312258680058e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.079915324216155e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.359434189708228e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 7.479001432525059e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.38785680989827e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.5537535423433823e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.0646438860936493e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.7426062684941045e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 9.356600196325564e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.4928156829210223e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.8414958204326504e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.9454666641041935e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.1775477881323708e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.9872394874762908e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.7741148871910914e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.704943625145889e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.1862358973875308e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.1140246559184814e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.5738132923875278e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 4.0699709145875876e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.99413957096335e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.373934921628027e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.2707344446828852e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.397227292695065e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 8.951049963227158e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 7.574434773695393e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.4661973381560035e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 6.630125120592464e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 7.939235053449032e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.4820595131187794e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.309033227216985e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.4957238982110034e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 8.45256101961114e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.623987483173239e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.1188434290325158e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.7749926828214399e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.167526396261573e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 6.733769794433076e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.99031594620759e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.5137491867529069e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.8678560347694442e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.4425868353709017e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 4.711669880302782e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.108065303771809e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 6.47700302747828e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.4679193372517904e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.0589150541969082e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 9.357031130145988e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 5.496661215571298e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 5.221354062959068e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.2929125084500322e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 9.53882441197107e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.799592018965204e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.676438503507691e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.4897864931953783e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.0509512337158769e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.1377543116819802e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.800744497149333e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.761798985494412e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.507692743973433e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.013530761663672e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.557012174493833e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 9.88869255041198e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.4825911994196611e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 5.186296285380726e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 4.456851678041965e-17 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.298229559681153e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 6.5295416575948405e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 5.703050109789274e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.964977628120778e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.479400208382722e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.5991615353804856e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.8634813052430688e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.5574781627687292e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.2288042172537719e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 6.963462249414444e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.6400975355957874e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.011177318846845e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.4607022018361702e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.22411226175134e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.7327247590654627e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.4617479267964148e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 8.838432338876926e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.2049066531312632e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 4.709955681638656e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.419144964441667e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.5077239101806824e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.5154644553620888e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.0943295430134347e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 4.154152454411184e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.3369084380169877e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 5.643717978454996e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.1192182192175586e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.394144656074798e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.5356075335788756e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 7.819817423929502e-17 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.793935653299255e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.572760141364558e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.6997339216435611e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.1181064861447731e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.7735583314998256e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.0642585683351177e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.1570640805269224e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.6107241166309718e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.7420320936727392e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 5.039768761960802e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.6212499861700766e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.8343527227047547e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.2409845752709505e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.4967063601660652e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.7538942453424777e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 9.419823097432013e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.753768504526091e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.1803169211084067e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.9335927811055564e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.8337985198780096e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.1595788450687047e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.163229995998657e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.319206816291071e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.0344642963221995e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 5.914538178010825e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.814172626767119e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.7313341043920629e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.1327570052022196e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.4320525612200115e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 7.062910043466038e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 7.068367700457203e-17 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 8.343942537437313e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.133333141198636e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.7634333083083658e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 4.524428232383005e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 8.283698248430556e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.87300428221243e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 4.0041905490605394e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 9.460044833168581e-17 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 4.475484180144726e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.6807138587094996e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.12666901150351e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.2690788692569342e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.2529104778415598e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.2857704003483711e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.6639657371967774e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 8.708116368811313e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 7.359551245728949e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.701662480669911e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 6.411395341837963e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 7.362463504644525e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.8458916998109383e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.7405199602901939e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.841330698572366e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.7502192508669765e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.9294174536767583e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 8.402220035799741e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.2107427712210815e-17 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 6.815560560305138e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.3914352576601436e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.4957276285738976e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.819962030825361e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.684238192629998e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.3133408766559407e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.758479344731189e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 6.785532501336792e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 7.332348300848999e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.2998633887005273e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.299917544475223e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.0309929932279618e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.893667387784195e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 8.355467421954927e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.6392923072891564e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 9.751557002350106e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.7559513840781222e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.9556048185579777e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.0150426697205012e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.193606413837047e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.4412353473496543e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 8.009465095801536e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.1756221682827464e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.968498188397787e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 8.654759781414213e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.3347825517364876e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 5.549793434199604e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.0779798384087633e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.0916143618557568e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.5621546761352962e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 5.460231623809285e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 4.001990522392916e-17 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.8728957809029418e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.916365244709291e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.851426040947258e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.09706169995224e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 9.801923515469642e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.0022996745020988e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 5.057120670956733e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 9.085373617069858e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 9.800253827647093e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.540628062907866e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.1593434419814125e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.946912408791547e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 6.973056912030954e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.3761531107247475e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.1143741746985153e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 9.534192960293222e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.8734374809662115e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.232343583659919e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.0482842256784803e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.467379347282302e-18 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.5759888124606325e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.225617744485029e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 7.703772751192879e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 6.883109514984853e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.455312980236373e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 6.23895606701099e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.0603077714105237e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - ":1: PossibleOverspecification: WARNING: Model is possibly over-specified (hessian is nearly singular).\n", - " model.estimate(method='BHHH', options={'maxiter':1000})\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 8.886410808092305e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n" + "/Users/jpn/Git/est-mode/larch/src/larch/model/jaxmodel.py:1156: PossibleOverspecification: Model is possibly over-specified (hessian is nearly singular).\n", + " self.calculate_parameter_covariance()\n" ] }, { "data": { "text/html": [ - "
keyvalue
loglike-13521.35475538419
x\n", + "
keyvalue
loglike-88683.85038605405
x\n", " \n", " \n", " \n", @@ -3054,355 +2070,196 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - "
-999-999.000000-9.990000e+02
11.0000001.000000e+00
coef_dist_0_1-1.084778-1.035381e+00
coef_dist_0_5_high0.1209811.469662e-01
coef_dist_15_up-0.091700-1.170512e-01
coef_dist_1_2-0.252580-4.652491e-01
coef_dist_2_5-0.369689-4.177477e-01
coef_dist_5_15-0.152259-1.558734e-01
coef_dist_5_up_high-0.0152252.506728e-02
coef_mode_logsum0.1554267.423654e-02
work_high_AGREMPN-14.042031-1.856268e+00
work_high_FPSEMPN-2.021234-1.895722e+00
work_high_HEREMPN-1.578781-1.698263e+00
work_high_MWTEMPN-2.074250-1.815687e+00
work_high_OTHEMPN-2.145558-2.187482e+00
work_high_RETEMPN-2.207275-2.207275e+00
work_low_AGREMPN-40.734929-7.178467e+01
work_low_FPSEMPN-0.670108-1.507959e+00
work_low_HEREMPN0.087905-8.190703e-01
work_low_MWTEMPN-0.373028-1.980587e+00
work_low_OTHEMPN-0.705270-2.021455e+00
work_low_RETEMPN-2.047943-2.047943e+00
work_med_AGREMPN-14.886841-8.087999e+64
work_med_FPSEMPN-1.942050-2.151306e+00
work_med_HEREMPN-1.382809-1.606036e+00
work_med_MWTEMPN-0.910436-2.043992e+00
work_med_OTHEMPN-2.535326-2.172089e+00
work_med_RETEMPN-2.120264-2.120264e+00
work_veryhigh_AGREMPN-0.277725-6.042012e+00
work_veryhigh_FPSEMPN-1.757306-1.838134e+00
work_veryhigh_HEREMPN-1.621894-1.992130e+00
work_veryhigh_MWTEMPN-1.722069-1.763131e+00
work_veryhigh_OTHEMPN-2.483268-2.509024e+00
work_veryhigh_RETEMPN-2.375156-2.375156e+00
tolerance9.957944723905177e-06
steps
array([0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n",
-       "       0.015625])
message'Optimization terminated successfully.'
elapsed_time0:00:22.109298
method'BHHH'
n_cases2582
iteration_number475
logloss5.2367756604896165
" + "
tolerance8.618081038971004e-07stepsarray([0.125, 0.25 , 0.375, 0.5 , 0.625, 0.75 , 1. , 1. , 1. ])message'Optimization terminated successfully'elapsed_time0:00:02.528580method'BHHH'n_cases28281iteration_number9
" ], "text/plain": [ - "┣ loglike: -13521.35475538419\n", - "┣ x: -999 -999.000000\n", - "┃ 1 1.000000\n", - "┃ coef_dist_0_1 -1.084778\n", - "┃ coef_dist_0_5_high 0.120981\n", - "┃ coef_dist_15_up -0.091700\n", - "┃ coef_dist_1_2 -0.252580\n", - "┃ coef_dist_2_5 -0.369689\n", - "┃ coef_dist_5_15 -0.152259\n", - "┃ coef_dist_5_up_high -0.015225\n", - "┃ coef_mode_logsum 0.155426\n", - "┃ work_high_AGREMPN -14.042031\n", - "┃ work_high_FPSEMPN -2.021234\n", - "┃ work_high_HEREMPN -1.578781\n", - "┃ work_high_MWTEMPN -2.074250\n", - "┃ work_high_OTHEMPN -2.145558\n", - "┃ work_high_RETEMPN -2.207275\n", - "┃ work_low_AGREMPN -40.734929\n", - "┃ work_low_FPSEMPN -0.670108\n", - "┃ work_low_HEREMPN 0.087905\n", - "┃ work_low_MWTEMPN -0.373028\n", - "┃ work_low_OTHEMPN -0.705270\n", - "┃ work_low_RETEMPN -2.047943\n", - "┃ work_med_AGREMPN -14.886841\n", - "┃ work_med_FPSEMPN -1.942050\n", - "┃ work_med_HEREMPN -1.382809\n", - "┃ work_med_MWTEMPN -0.910436\n", - "┃ work_med_OTHEMPN -2.535326\n", - "┃ work_med_RETEMPN -2.120264\n", - "┃ work_veryhigh_AGREMPN -0.277725\n", - "┃ work_veryhigh_FPSEMPN -1.757306\n", - "┃ work_veryhigh_HEREMPN -1.621894\n", - "┃ work_veryhigh_MWTEMPN -1.722069\n", - "┃ work_veryhigh_OTHEMPN -2.483268\n", - "┃ work_veryhigh_RETEMPN -2.375156\n", + "┣ loglike: -88683.85038605405\n", + "┣ x: -999 -9.990000e+02\n", + "┃ 1 1.000000e+00\n", + "┃ coef_dist_0_1 -1.035381e+00\n", + "┃ coef_dist_0_5_high 1.469662e-01\n", + "┃ coef_dist_15_up -1.170512e-01\n", + "┃ coef_dist_1_2 -4.652491e-01\n", + "┃ coef_dist_2_5 -4.177477e-01\n", + "┃ coef_dist_5_15 -1.558734e-01\n", + "┃ coef_dist_5_up_high 2.506728e-02\n", + "┃ coef_mode_logsum 7.423654e-02\n", + "┃ work_high_AGREMPN -1.856268e+00\n", + "┃ work_high_FPSEMPN -1.895722e+00\n", + "┃ work_high_HEREMPN -1.698263e+00\n", + "┃ work_high_MWTEMPN -1.815687e+00\n", + "┃ work_high_OTHEMPN -2.187482e+00\n", + "┃ work_high_RETEMPN -2.207275e+00\n", + "┃ work_low_AGREMPN -7.178467e+01\n", + "┃ work_low_FPSEMPN -1.507959e+00\n", + "┃ work_low_HEREMPN -8.190703e-01\n", + "┃ work_low_MWTEMPN -1.980587e+00\n", + "┃ work_low_OTHEMPN -2.021455e+00\n", + "┃ work_low_RETEMPN -2.047943e+00\n", + "┃ work_med_AGREMPN -8.087999e+64\n", + "┃ work_med_FPSEMPN -2.151306e+00\n", + "┃ work_med_HEREMPN -1.606036e+00\n", + "┃ work_med_MWTEMPN -2.043992e+00\n", + "┃ work_med_OTHEMPN -2.172089e+00\n", + "┃ work_med_RETEMPN -2.120264e+00\n", + "┃ work_veryhigh_AGREMPN -6.042012e+00\n", + "┃ work_veryhigh_FPSEMPN -1.838134e+00\n", + "┃ work_veryhigh_HEREMPN -1.992130e+00\n", + "┃ work_veryhigh_MWTEMPN -1.763131e+00\n", + "┃ work_veryhigh_OTHEMPN -2.509024e+00\n", + "┃ work_veryhigh_RETEMPN -2.375156e+00\n", "┃ dtype: float64\n", - "┣ tolerance: 9.957944723905177e-06\n", - "┣ steps: array([0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625, 0.015625, 0.015625, 0.015625, 0.015625, 0.015625,\n", - "┃ 0.015625])\n", - "┣ message: 'Optimization terminated successfully.'\n", - "┣ elapsed_time: datetime.timedelta(seconds=22, microseconds=109298)\n", + "┣ tolerance: 8.618081038971004e-07\n", + "┣ steps: array([0.125, 0.25 , 0.375, 0.5 , 0.625, 0.75 , 1. , 1. , 1. ])\n", + "┣ message: 'Optimization terminated successfully'\n", + "┣ elapsed_time: datetime.timedelta(seconds=2, microseconds=528580)\n", "┣ method: 'BHHH'\n", - "┣ n_cases: 2582\n", - "┣ iteration_number: 475\n", - "┣ logloss: 5.2367756604896165" + "┣ n_cases: 28281\n", + "┣ iteration_number: 9" ] }, - "execution_count": 11, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "model.estimate(method='BHHH', options={'maxiter':1000})" + "model.estimate(method=\"BHHH\", options={\"maxiter\": 1000})" ] }, { @@ -3414,335 +2271,361 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Value Std Err t Stat Signif Null Value Constrained
-999-999. NA NA-999.00fixed value
1 1.00 NA NA 1.00fixed value
coef_dist_0_1-1.08 0.270-4.02*** 0.00
coef_dist_0_5_high 0.121 0.0339 3.57*** 0.00
coef_dist_15_up-0.0917 0.000603-152.16*** 0.00
coef_dist_1_2-0.253 0.115-2.20* 0.00
coef_dist_2_5-0.370 0.0329-11.23*** 0.00
coef_dist_5_15-0.152 0.0419-3.63*** 0.00
coef_dist_5_up_high-0.0152 0.0576-0.26 0.00
coef_mode_logsum 0.155 0.0455 3.41*** 0.00
work_high_AGREMPN-14.0 9.45e+03-0.00 0.00
work_high_FPSEMPN-2.02 0.419-4.83*** 0.00
work_high_HEREMPN-1.58 0.398-3.97*** 0.00
work_high_MWTEMPN-2.07 1.07-1.94 0.00
work_high_OTHEMPN-2.15 0.463-4.64*** 0.00
work_high_RETEMPN-2.21 NA NA 0.00fixed value
work_low_AGREMPN-40.7 3.95e-06-BIG*** 0.00
work_low_FPSEMPN-0.670 1.46-0.46 0.00
work_low_HEREMPN 0.0879 1.47 0.06 0.00
work_low_MWTEMPN-0.373 1.66-0.22 0.00
work_low_OTHEMPN-0.705 1.49-0.47 0.00
work_low_RETEMPN-2.05 NA NA 0.00fixed value
work_med_AGREMPN-14.9 2.37e+03-0.01 0.00
work_med_FPSEMPN-1.94 0.484-4.01*** 0.00
work_med_HEREMPN-1.38 0.448-3.09** 0.00
work_med_MWTEMPN-0.910 0.564-1.61 0.00
work_med_OTHEMPN-2.54 0.640-3.96*** 0.00
work_med_RETEMPN-2.12 NA NA 0.00fixed value
work_veryhigh_AGREMPN-0.278 2.35-0.12 0.00
work_veryhigh_FPSEMPN-1.76 0.410-4.29*** 0.00
work_veryhigh_HEREMPN-1.62 0.414-3.92*** 0.00
work_veryhigh_MWTEMPN-1.72 0.739-2.33* 0.00
work_veryhigh_OTHEMPN-2.48 0.493-5.03*** 0.00
work_veryhigh_RETEMPN-2.38 NA NA 0.00fixed value
" + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ValueStd Errt StatSignifNull ValueConstrained
Parameter      
-999-999. 0.00 NA 0.00fixed value
1 1.00 0.00 NA 0.00fixed value
coef_dist_0_1-1.04 0.105-9.89*** 0.00
coef_dist_0_5_high 0.147 0.0114 12.86*** 0.00
coef_dist_15_up-0.117 0.00211-55.56*** 0.00
coef_dist_1_2-0.465 0.0428-10.86*** 0.00
coef_dist_2_5-0.418 0.0116-36.15*** 0.00
coef_dist_5_15-0.156 0.00276-56.40*** 0.00
coef_dist_5_up_high 0.0251 0.00176 14.22*** 0.00
coef_mode_logsum 0.0742 0.00837 8.87*** 0.00
work_high_AGREMPN-1.86 0.596-3.11** 0.00
work_high_FPSEMPN-1.90 0.178-10.67*** 0.00
work_high_HEREMPN-1.70 0.193-8.81*** 0.00
work_high_MWTEMPN-1.82 0.188-9.68*** 0.00
work_high_OTHEMPN-2.19 0.207-10.56*** 0.00
work_high_RETEMPN-2.21 0.00 NA 0.00fixed value
work_low_AGREMPN-71.8 7.07e-12-BIG*** 0.00
work_low_FPSEMPN-1.51 0.346-4.36*** 0.00
work_low_HEREMPN-0.819 0.360-2.27* 0.00
work_low_MWTEMPN-1.98 0.387-5.12*** 0.00
work_low_OTHEMPN-2.02 0.407-4.97*** 0.00
work_low_RETEMPN-2.05 0.00 NA 0.00fixed value
work_med_AGREMPN-8.09e+64 NA NA 0.00
work_med_FPSEMPN-2.15 0.194-11.06*** 0.00
work_med_HEREMPN-1.61 0.205-7.85*** 0.00
work_med_MWTEMPN-2.04 0.210-9.74*** 0.00
work_med_OTHEMPN-2.17 0.222-9.77*** 0.00
work_med_RETEMPN-2.12 0.00 NA 0.00fixed value
work_veryhigh_AGREMPN-6.04 24.2-0.25 0.00
work_veryhigh_FPSEMPN-1.84 0.152-12.10*** 0.00
work_veryhigh_HEREMPN-1.99 0.170-11.71*** 0.00
work_veryhigh_MWTEMPN-1.76 0.159-11.08*** 0.00
work_veryhigh_OTHEMPN-2.51 0.189-13.24*** 0.00
work_veryhigh_RETEMPN-2.38 0.00 NA 0.00fixed value
\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 12, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -3763,12 +2646,13 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "from activitysim.estimation.larch import update_coefficients, update_size_spec\n", - "result_dir = data.edb_directory/\"estimated\"" + "\n", + "result_dir = data.edb_directory / \"estimated\"" ] }, { @@ -3780,12 +2664,14 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "update_coefficients(\n", - " model, data, result_dir,\n", + " model,\n", + " data,\n", + " result_dir,\n", " output_file=f\"{modelname}_coefficients_revised.csv\",\n", ");" ] @@ -3799,7 +2685,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -3844,12 +2730,12 @@ " work_low\n", " workplace\n", " 0.000000\n", - " 0.044251\n", - " 0.175515\n", - " 0.374554\n", - " 0.169451\n", - " 6.988481e-19\n", - " 0.236229\n", + " 0.121509\n", + " 0.208506\n", + " 0.415240\n", + " 0.124770\n", + " 6.285395e-32\n", + " 0.129975\n", " 0.000\n", " 0.000000\n", " 0.000000\n", @@ -3860,12 +2746,12 @@ " work_med\n", " workplace\n", " 0.000000\n", - " 0.120498\n", - " 0.144005\n", - " 0.251914\n", - " 0.079565\n", - " 3.439740e-07\n", - " 0.404018\n", + " 0.176350\n", + " 0.170960\n", + " 0.294919\n", + " 0.167444\n", + " 0.000000e+00\n", + " 0.190327\n", " 0.000\n", " 0.000000\n", " 0.000000\n", @@ -3876,12 +2762,12 @@ " work_high\n", " workplace\n", " 0.000000\n", - " 0.159104\n", - " 0.191636\n", - " 0.298286\n", - " 0.169233\n", - " 1.153217e-06\n", - " 0.181741\n", + " 0.125802\n", + " 0.171788\n", + " 0.209290\n", + " 0.128317\n", + " 1.787012e-01\n", + " 0.186102\n", " 0.000\n", " 0.000000\n", " 0.000000\n", @@ -3892,12 +2778,12 @@ " work_veryhigh\n", " workplace\n", " 0.000000\n", - " 0.062723\n", - " 0.116348\n", - " 0.133219\n", - " 0.056296\n", - " 5.108942e-01\n", - " 0.120520\n", + " 0.144466\n", + " 0.247167\n", + " 0.211891\n", + " 0.126365\n", + " 3.692074e-03\n", + " 0.266419\n", " 0.000\n", " 0.000000\n", " 0.000000\n", @@ -4197,10 +3083,10 @@ ], "text/plain": [ " segment model_selector TOTHH RETEMPN FPSEMPN HEREMPN \\\n", - "0 work_low workplace 0.000000 0.044251 0.175515 0.374554 \n", - "1 work_med workplace 0.000000 0.120498 0.144005 0.251914 \n", - "2 work_high workplace 0.000000 0.159104 0.191636 0.298286 \n", - "3 work_veryhigh workplace 0.000000 0.062723 0.116348 0.133219 \n", + "0 work_low workplace 0.000000 0.121509 0.208506 0.415240 \n", + "1 work_med workplace 0.000000 0.176350 0.170960 0.294919 \n", + "2 work_high workplace 0.000000 0.125802 0.171788 0.209290 \n", + "3 work_veryhigh workplace 0.000000 0.144466 0.247167 0.211891 \n", "4 university school 0.000000 0.000000 0.000000 0.000000 \n", "5 gradeschool school 0.000000 0.000000 0.000000 0.000000 \n", "6 highschool school 0.000000 0.000000 0.000000 0.000000 \n", @@ -4221,10 +3107,10 @@ "21 univ trip 0.000999 0.000000 0.000000 0.000000 \n", "\n", " OTHEMPN AGREMPN MWTEMPN AGE0519 HSENROLL COLLFTE COLLPTE \n", - "0 0.169451 6.988481e-19 0.236229 0.000 0.000000 0.000000 0.000000 \n", - "1 0.079565 3.439740e-07 0.404018 0.000 0.000000 0.000000 0.000000 \n", - "2 0.169233 1.153217e-06 0.181741 0.000 0.000000 0.000000 0.000000 \n", - "3 0.056296 5.108942e-01 0.120520 0.000 0.000000 0.000000 0.000000 \n", + "0 0.124770 6.285395e-32 0.129975 0.000 0.000000 0.000000 0.000000 \n", + "1 0.167444 0.000000e+00 0.190327 0.000 0.000000 0.000000 0.000000 \n", + "2 0.128317 1.787012e-01 0.186102 0.000 0.000000 0.000000 0.000000 \n", + "3 0.126365 3.692074e-03 0.266419 0.000 0.000000 0.000000 0.000000 \n", "4 0.000000 0.000000e+00 0.000000 0.000 0.000000 0.592000 0.408000 \n", "5 0.000000 0.000000e+00 0.000000 1.000 0.000000 0.000000 0.000000 \n", "6 0.000000 0.000000e+00 0.000000 0.000 1.000000 0.000000 0.000000 \n", @@ -4245,14 +3131,16 @@ "21 0.000000 0.000000e+00 0.000000 0.000 0.000000 0.591409 0.407592 " ] }, - "execution_count": 15, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "update_size_spec(\n", - " model, data, result_dir, \n", + " model,\n", + " data,\n", + " result_dir,\n", " output_file=f\"{modelname}_size_terms.csv\",\n", ")" ] @@ -4266,12 +3154,12 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "model.to_xlsx(\n", - " result_dir/f\"{modelname}_model_estimation.xlsx\", \n", + " result_dir / f\"{modelname}_model_estimation.xlsx\",\n", " data_statistics=False,\n", ");" ] @@ -4290,7 +3178,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -4323,49 +3211,49 @@ " \n", " 0\n", " coef_dist_0_1\n", - " -1.084778\n", + " -1.035381\n", " F\n", " \n", " \n", " 1\n", " coef_dist_1_2\n", - " -0.252580\n", + " -0.465249\n", " F\n", " \n", " \n", " 2\n", " coef_dist_2_5\n", - " -0.369689\n", + " -0.417748\n", " F\n", " \n", " \n", " 3\n", " coef_dist_5_15\n", - " -0.152259\n", + " -0.155873\n", " F\n", " \n", " \n", " 4\n", " coef_dist_15_up\n", - " -0.091700\n", + " -0.117051\n", " F\n", " \n", " \n", " 5\n", " coef_dist_0_5_high\n", - " 0.120981\n", + " 0.146966\n", " F\n", " \n", " \n", " 6\n", " coef_dist_5_up_high\n", - " -0.015225\n", + " 0.025067\n", " F\n", " \n", " \n", " 7\n", " coef_mode_logsum\n", - " 0.155426\n", + " 0.074237\n", " F\n", " \n", " \n", @@ -4374,28 +3262,28 @@ ], "text/plain": [ " coefficient_name value constrain\n", - "0 coef_dist_0_1 -1.084778 F\n", - "1 coef_dist_1_2 -0.252580 F\n", - "2 coef_dist_2_5 -0.369689 F\n", - "3 coef_dist_5_15 -0.152259 F\n", - "4 coef_dist_15_up -0.091700 F\n", - "5 coef_dist_0_5_high 0.120981 F\n", - "6 coef_dist_5_up_high -0.015225 F\n", - "7 coef_mode_logsum 0.155426 F" + "0 coef_dist_0_1 -1.035381 F\n", + "1 coef_dist_1_2 -0.465249 F\n", + "2 coef_dist_2_5 -0.417748 F\n", + "3 coef_dist_5_15 -0.155873 F\n", + "4 coef_dist_15_up -0.117051 F\n", + "5 coef_dist_0_5_high 0.146966 F\n", + "6 coef_dist_5_up_high 0.025067 F\n", + "7 coef_mode_logsum 0.074237 F" ] }, - "execution_count": 17, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "pd.read_csv(result_dir/f\"{modelname}_coefficients_revised.csv\")" + "pd.read_csv(result_dir / f\"{modelname}_coefficients_revised.csv\")" ] }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -4442,12 +3330,12 @@ " work_low\n", " workplace\n", " 0.000000\n", - " 0.044251\n", - " 0.175515\n", - " 0.374554\n", - " 0.169451\n", - " 6.988481e-19\n", - " 0.236229\n", + " 0.121509\n", + " 0.208506\n", + " 0.415240\n", + " 0.124770\n", + " 6.285395e-32\n", + " 0.129975\n", " 0.000\n", " 0.000000\n", " 0.000000\n", @@ -4459,12 +3347,12 @@ " work_med\n", " workplace\n", " 0.000000\n", - " 0.120498\n", - " 0.144005\n", - " 0.251914\n", - " 0.079565\n", - " 3.439740e-07\n", - " 0.404018\n", + " 0.176350\n", + " 0.170960\n", + " 0.294919\n", + " 0.167444\n", + " 0.000000e+00\n", + " 0.190327\n", " 0.000\n", " 0.000000\n", " 0.000000\n", @@ -4476,12 +3364,12 @@ " work_high\n", " workplace\n", " 0.000000\n", - " 0.159104\n", - " 0.191636\n", - " 0.298286\n", - " 0.169233\n", - " 1.153217e-06\n", - " 0.181741\n", + " 0.125802\n", + " 0.171788\n", + " 0.209290\n", + " 0.128317\n", + " 1.787012e-01\n", + " 0.186102\n", " 0.000\n", " 0.000000\n", " 0.000000\n", @@ -4493,12 +3381,12 @@ " work_veryhigh\n", " workplace\n", " 0.000000\n", - " 0.062723\n", - " 0.116348\n", - " 0.133219\n", - " 0.056296\n", - " 5.108942e-01\n", - " 0.120520\n", + " 0.144466\n", + " 0.247167\n", + " 0.211891\n", + " 0.126365\n", + " 3.692074e-03\n", + " 0.266419\n", " 0.000\n", " 0.000000\n", " 0.000000\n", @@ -4816,10 +3704,10 @@ ], "text/plain": [ " index segment model_selector TOTHH RETEMPN FPSEMPN \\\n", - "0 0 work_low workplace 0.000000 0.044251 0.175515 \n", - "1 1 work_med workplace 0.000000 0.120498 0.144005 \n", - "2 2 work_high workplace 0.000000 0.159104 0.191636 \n", - "3 3 work_veryhigh workplace 0.000000 0.062723 0.116348 \n", + "0 0 work_low workplace 0.000000 0.121509 0.208506 \n", + "1 1 work_med workplace 0.000000 0.176350 0.170960 \n", + "2 2 work_high workplace 0.000000 0.125802 0.171788 \n", + "3 3 work_veryhigh workplace 0.000000 0.144466 0.247167 \n", "4 4 university school 0.000000 0.000000 0.000000 \n", "5 5 gradeschool school 0.000000 0.000000 0.000000 \n", "6 6 highschool school 0.000000 0.000000 0.000000 \n", @@ -4840,10 +3728,10 @@ "21 21 univ trip 0.000999 0.000000 0.000000 \n", "\n", " HEREMPN OTHEMPN AGREMPN MWTEMPN AGE0519 HSENROLL COLLFTE \\\n", - "0 0.374554 0.169451 6.988481e-19 0.236229 0.000 0.000000 0.000000 \n", - "1 0.251914 0.079565 3.439740e-07 0.404018 0.000 0.000000 0.000000 \n", - "2 0.298286 0.169233 1.153217e-06 0.181741 0.000 0.000000 0.000000 \n", - "3 0.133219 0.056296 5.108942e-01 0.120520 0.000 0.000000 0.000000 \n", + "0 0.415240 0.124770 6.285395e-32 0.129975 0.000 0.000000 0.000000 \n", + "1 0.294919 0.167444 0.000000e+00 0.190327 0.000 0.000000 0.000000 \n", + "2 0.209290 0.128317 1.787012e-01 0.186102 0.000 0.000000 0.000000 \n", + "3 0.211891 0.126365 3.692074e-03 0.266419 0.000 0.000000 0.000000 \n", "4 0.000000 0.000000 0.000000e+00 0.000000 0.000 0.000000 0.592000 \n", "5 0.000000 0.000000 0.000000e+00 0.000000 1.000 0.000000 0.000000 \n", "6 0.000000 0.000000 0.000000e+00 0.000000 0.000 1.000000 0.000000 \n", @@ -4888,13 +3776,1784 @@ "21 0.407592 " ] }, - "execution_count": 18, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.read_csv(result_dir / f\"{modelname}_size_terms.csv\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Modify Spec\n", + "\n", + "Here, we will demonstrate the process of re-estimating the model with a modified\n", + "SPEC file. This does *not* require re-running ActivitySim, it just requires\n", + "changing the SPEC file and re-running the Larch estimation only.\n", + "\n", + "The `backup` command we ran earlier made a backup copy of the \n", + "original spec file in the EDB directory.\n", + "This was not strictly necessary, but since we're about to modify it and\n", + "we may want undo our changes, it can be handy to keep a copy of the\n", + "original spec file around. Since we already have a backup copy, we'll make some \n", + "changes directly in the SPEC file. As an example here, we're going\n", + "to change one of the breakpoints on the piecewise distance function in the\n", + "utility calculation. For this demo we are editing \n", + "the SPEC file using Python code to make the changes, but a user does not need\n", + "to change the file using Python; any CSV editor (e.g. Excel) can be used. \n", + "\n", + "The raw contents of the SPEC file can be loaded and viewed in Python like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Label,Description,Expression,coefficient\n", + "local_dist,,_DIST@skims['DIST'],1\n", + "util_dist_0_1,\"Distance, piecewise linear from 0 to 1 miles\",\"@_DIST.clip(0,1)\",coef_dist_0_1\n", + "util_dist_1_2,\"Distance, piecewise linear from 1 to 2 miles\",\"@(_DIST-1).clip(0,1)\",coef_dist_1_2\n", + "util_dist_2_5,\"Distance, piecewise linear from 2 to 5 miles\",\"@(_DIST-2).clip(0,3)\",coef_dist_2_5\n", + "util_dist_5_15,\"Distance, piecewise linear from 5 to 15 miles\",\"@(_DIST-5).clip(0,10)\",coef_dist_5_15\n", + "util_dist_15_up,\"Distance, piecewise linear for 15+ miles\",@(_DIST-15.0).clip(0),coef_dist_15_up\n", + "util_dist_0_5_high,\"Distance 0 to 5 mi, high and very high income\",@(df['income_segment']>=WORK_HIGH_SEGMENT_ID) * _DIST.clip(upper=5),coef_dist_0_5_high\n", + "util_dist_15_up_high,\"Distance 5+ mi, high and very high income\",@(df['income_segment']>=WORK_HIGH_SEGMENT_ID) * (_DIST-5).clip(0),coef_dist_5_up_high\n", + "util_size_variable,Size variable,@(df['size_term'] * df['shadow_price_size_term_adjustment']).apply(np.log1p),1\n", + "util_utility_adjustment,utility adjustment,@df['shadow_price_utility_adjustment'],1\n", + "util_no_attractions,No attractions,@df['size_term']==0,-999\n", + "util_mode_logsum,Mode choice logsum,mode_choice_logsum,coef_mode_logsum\n", + "util_sample_of_corrections_factor,Sample of alternatives correction factor,\"@np.minimum(np.log(df.pick_count/df.prob), 60)\",1\n" + ] + } + ], + "source": [ + "with open(data.edb_directory / \"workplace_location_SPEC.csv\") as f:\n", + " raw_spec = f.read()\n", + "\n", + "print(raw_spec)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's move the 2 mile breakpoint to 3 miles. To do so, we will need to change two lines\n", + "of the SPEC file. As we change the file, we will edit all four columns: label, description, \n", + "expression, and coefficient. \n", + "\n", + "## WARNING\n", + "\n", + "**It is particularly important to make changes to the label when \n", + "changing the expression.** The estimation tools will prefer the pre-calculated variables computed\n", + "and stored with the given label, so if the label is not changed the expression changes will be ignored.\n", + "\n", + "After we make the changes, we'll write the modified SPEC file back to disk, overwriting the original." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "orig_lines = \"\"\"util_dist_1_2,\"Distance, piecewise linear from 1 to 2 miles\",\"@(_DIST-1).clip(0,1)\",coef_dist_1_2\n", + "util_dist_2_5,\"Distance, piecewise linear from 2 to 5 miles\",\"@(_DIST-2).clip(0,3)\",coef_dist_2_5\"\"\"\n", + "\n", + "repl_lines = \"\"\"util_dist_1_3,\"Distance, piecewise linear from 1 to 3 miles\",\"@(_DIST-1).clip(0,2)\",coef_dist_1_3\n", + "util_dist_3_5,\"Distance, piecewise linear from 3 to 5 miles\",\"@(_DIST-3).clip(0,2)\",coef_dist_3_5\"\"\"\n", + "\n", + "raw_spec = raw_spec.replace(orig_lines, repl_lines)\n", + "\n", + "with open(data.edb_directory / \"workplace_location_SPEC.csv\", mode=\"w\") as f:\n", + " f.write(raw_spec)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Reloading the model and getting set for re-estimation can be done using the same commands as above." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "loading from output-est-mode/estimation_data_bundle/workplace_location/workplace_location_coefficients.csv\n", + "loading from output-est-mode/estimation_data_bundle/workplace_location/workplace_location_SPEC.csv\n", + "loading from output-est-mode/estimation_data_bundle/workplace_location/workplace_location_alternatives_combined.parquet\n", + "loading from output-est-mode/estimation_data_bundle/workplace_location/workplace_location_choosers_combined.parquet\n", + "loading from output-est-mode/estimation_data_bundle/workplace_location/workplace_location_landuse.csv\n", + "loading from output-est-mode/estimation_data_bundle/workplace_location/workplace_location_size_terms.csv\n" + ] + } + ], + "source": [ + "model2, data2 = component_model(\n", + " modelname,\n", + " edb_directory=f\"output-est-mode/estimation_data_bundle/{modelname}/\",\n", + " return_data=True,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You may notice in the utility functions shown below, all of the unadulterated lines of the \n", + "spec file correlate with utility terms that are simple `X.label` data items, which are \n", + "stored as pre-computed data variables in the EDB. Our modified lines, however, are now\n", + "showing the complete expression that will be freshly evaluated by Larch using Sharrow." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
P.coef_dist_0_1 * X.util_dist_0_1
+ P.coef_dist_1_3 * X('(_DIST-1).clip(0,2)')
+ P.coef_dist_3_5 * X('(_DIST-3).clip(0,2)')
+ P.coef_dist_5_15 * X.util_dist_5_15
+ P.coef_dist_15_up * X.util_dist_15_up
+ P.coef_dist_0_5_high * X.util_dist_0_5_high
+ P.coef_dist_5_up_high * X.util_dist_15_up_high
+ P('-999') * X.util_no_attractions
+ P.coef_mode_logsum * X.util_mode_logsum
+ P('1') * X.util_sample_of_corrections_factor
" + ], + "text/plain": [ + " P.coef_dist_0_1 * X.util_dist_0_1\n", + "+ P.coef_dist_1_3 * X('(_DIST-1).clip(0,2)')\n", + "+ P.coef_dist_3_5 * X('(_DIST-3).clip(0,2)')\n", + "+ P.coef_dist_5_15 * X.util_dist_5_15\n", + "+ P.coef_dist_15_up * X.util_dist_15_up\n", + "+ P.coef_dist_0_5_high * X.util_dist_0_5_high\n", + "+ P.coef_dist_5_up_high * X.util_dist_15_up_high\n", + "+ P('-999') * X.util_no_attractions\n", + "+ P.coef_mode_logsum * X.util_mode_logsum\n", + "+ P('1') * X.util_sample_of_corrections_factor" + ] + }, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "pd.read_csv(result_dir/f\"{modelname}_size_terms.csv\")" + "model2.utility_ca" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We are almost ready to go with this model. But if we attempt to estimate the model now, we will get an error:" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "NameError(\"name '_DIST' is not defined\")\n" + ] + } + ], + "source": [ + "from larch.util.shush import shush\n", + "\n", + "with shush(stderr=True):\n", + " try:\n", + " model2.estimate()\n", + " except NameError as e:\n", + " print(repr(e))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The error arises because the model SPEC includes a temporary `_DIST` variable, which was not stored in the EDB data files.\n", + "There are several ways to solve this problem. The most robust way would be to return to ActivitySim and edit the model specification\n", + "and configurations so that this variable is not a temporary value (i.e. add it to a preprocessor or annotator). This process \n", + "may take some time and effort, but it should be able to allow the user to access any variable from ActivitySim.\n", + "\n", + "Alternatively, it may be possible to reconstruct the value of the temporary variable, or a suitable proxy, by processing \n", + "values that did get stored in the EDB. We can do so here, by reconstituting the distance value as the sum of the piecewise\n", + "parts that did get stored in the EDB. Rather than returning to ActivitySim, we can simply compute the temporary variable\n", + "directly in the model's data object, giving it the same name as from the specification file, and otherwise proceed as normal." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "model2.data[\"_DIST\"] = (\n", + " model2.data.util_dist_0_1\n", + " + model2.data.util_dist_1_2\n", + " + model2.data.util_dist_2_5\n", + " + model2.data.util_dist_5_15\n", + " + model2.data.util_dist_15_up\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "

Iteration 008 [Optimization terminated successfully]

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "

Best LL = -88684.18177107332

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
valuebestinitvalueminimummaximumnullvalueholdfast
param_name
-999-999.000000-999.000000-999.000000-999.000000-999.0000000.01
11.0000001.0000001.0000001.0000001.0000000.01
coef_dist_0_1-1.072002-1.072002-0.842800-25.00000025.0000000.00
coef_dist_0_5_high0.1471630.1471630.150000-25.00000025.0000000.00
coef_dist_15_up-0.117017-0.117017-0.091700-25.00000025.0000000.00
coef_dist_1_3-0.433865-0.4338650.000000-infinf0.00
coef_dist_3_5-0.417069-0.4170690.000000-infinf0.00
coef_dist_5_15-0.155760-0.155760-0.128500-25.00000025.0000000.00
coef_dist_5_up_high0.0250500.0250500.020000-25.00000025.0000000.00
coef_mode_logsum0.0745300.0745300.300000-25.00000025.0000000.00
work_high_AGREMPN-1.857041-1.857041-5.115996-6.0000006.0000000.00
work_high_FPSEMPN-1.895566-1.895566-1.575037-6.0000006.0000000.00
work_high_HEREMPN-1.698595-1.698595-1.258781-6.0000006.0000000.00
work_high_MWTEMPN-1.816036-1.816036-1.431292-6.0000006.0000000.00
work_high_OTHEMPN-2.187730-2.187730-1.870803-6.0000006.0000000.00
work_high_RETEMPN-2.207275-2.207275-2.207275-2.207275-2.2072750.01
work_low_AGREMPN-286.802086-286.802086-4.605170-6.0000006.0000000.00
work_low_FPSEMPN-1.507131-1.507131-1.645065-6.0000006.0000000.00
work_low_HEREMPN-0.818251-0.818251-0.959720-6.0000006.0000000.00
work_low_MWTEMPN-1.979965-1.979965-1.807889-6.0000006.0000000.00
work_low_OTHEMPN-2.020885-2.020885-2.120264-6.0000006.0000000.00
work_low_RETEMPN-2.047943-2.047943-2.047943-2.047943-2.0479430.01
work_med_AGREMPN-1490.624349-1490.624349-4.828314-6.0000006.0000000.00
work_med_FPSEMPN-2.150429-2.150429-1.624552-6.0000006.0000000.00
work_med_HEREMPN-1.605331-1.605331-1.123930-6.0000006.0000000.00
work_med_MWTEMPN-2.043346-2.043346-1.560648-6.0000006.0000000.00
work_med_OTHEMPN-2.171601-2.171601-1.973281-6.0000006.0000000.00
work_med_RETEMPN-2.120264-2.120264-2.120264-2.120264-2.1202640.01
work_veryhigh_AGREMPN-6.028955-6.028955-5.521461-6.0000006.0000000.00
work_veryhigh_FPSEMPN-1.838036-1.838036-1.309333-6.0000006.0000000.00
work_veryhigh_HEREMPN-1.992113-1.992113-1.422958-6.0000006.0000000.00
work_veryhigh_MWTEMPN-1.763204-1.763204-1.402424-6.0000006.0000000.00
work_veryhigh_OTHEMPN-2.509234-2.509234-1.924149-6.0000006.0000000.00
work_veryhigh_RETEMPN-2.375156-2.375156-2.375156-2.375156-2.3751560.01
\n", + "
" + ], + "text/plain": [ + " value best initvalue minimum \\\n", + "param_name \n", + "-999 -999.000000 -999.000000 -999.000000 -999.000000 \n", + "1 1.000000 1.000000 1.000000 1.000000 \n", + "coef_dist_0_1 -1.072002 -1.072002 -0.842800 -25.000000 \n", + "coef_dist_0_5_high 0.147163 0.147163 0.150000 -25.000000 \n", + "coef_dist_15_up -0.117017 -0.117017 -0.091700 -25.000000 \n", + "coef_dist_1_3 -0.433865 -0.433865 0.000000 -inf \n", + "coef_dist_3_5 -0.417069 -0.417069 0.000000 -inf \n", + "coef_dist_5_15 -0.155760 -0.155760 -0.128500 -25.000000 \n", + "coef_dist_5_up_high 0.025050 0.025050 0.020000 -25.000000 \n", + "coef_mode_logsum 0.074530 0.074530 0.300000 -25.000000 \n", + "work_high_AGREMPN -1.857041 -1.857041 -5.115996 -6.000000 \n", + "work_high_FPSEMPN -1.895566 -1.895566 -1.575037 -6.000000 \n", + "work_high_HEREMPN -1.698595 -1.698595 -1.258781 -6.000000 \n", + "work_high_MWTEMPN -1.816036 -1.816036 -1.431292 -6.000000 \n", + "work_high_OTHEMPN -2.187730 -2.187730 -1.870803 -6.000000 \n", + "work_high_RETEMPN -2.207275 -2.207275 -2.207275 -2.207275 \n", + "work_low_AGREMPN -286.802086 -286.802086 -4.605170 -6.000000 \n", + "work_low_FPSEMPN -1.507131 -1.507131 -1.645065 -6.000000 \n", + "work_low_HEREMPN -0.818251 -0.818251 -0.959720 -6.000000 \n", + "work_low_MWTEMPN -1.979965 -1.979965 -1.807889 -6.000000 \n", + "work_low_OTHEMPN -2.020885 -2.020885 -2.120264 -6.000000 \n", + "work_low_RETEMPN -2.047943 -2.047943 -2.047943 -2.047943 \n", + "work_med_AGREMPN -1490.624349 -1490.624349 -4.828314 -6.000000 \n", + "work_med_FPSEMPN -2.150429 -2.150429 -1.624552 -6.000000 \n", + "work_med_HEREMPN -1.605331 -1.605331 -1.123930 -6.000000 \n", + "work_med_MWTEMPN -2.043346 -2.043346 -1.560648 -6.000000 \n", + "work_med_OTHEMPN -2.171601 -2.171601 -1.973281 -6.000000 \n", + "work_med_RETEMPN -2.120264 -2.120264 -2.120264 -2.120264 \n", + "work_veryhigh_AGREMPN -6.028955 -6.028955 -5.521461 -6.000000 \n", + "work_veryhigh_FPSEMPN -1.838036 -1.838036 -1.309333 -6.000000 \n", + "work_veryhigh_HEREMPN -1.992113 -1.992113 -1.422958 -6.000000 \n", + "work_veryhigh_MWTEMPN -1.763204 -1.763204 -1.402424 -6.000000 \n", + "work_veryhigh_OTHEMPN -2.509234 -2.509234 -1.924149 -6.000000 \n", + "work_veryhigh_RETEMPN -2.375156 -2.375156 -2.375156 -2.375156 \n", + "\n", + " maximum nullvalue holdfast \n", + "param_name \n", + "-999 -999.000000 0.0 1 \n", + "1 1.000000 0.0 1 \n", + "coef_dist_0_1 25.000000 0.0 0 \n", + "coef_dist_0_5_high 25.000000 0.0 0 \n", + "coef_dist_15_up 25.000000 0.0 0 \n", + "coef_dist_1_3 inf 0.0 0 \n", + "coef_dist_3_5 inf 0.0 0 \n", + "coef_dist_5_15 25.000000 0.0 0 \n", + "coef_dist_5_up_high 25.000000 0.0 0 \n", + "coef_mode_logsum 25.000000 0.0 0 \n", + "work_high_AGREMPN 6.000000 0.0 0 \n", + "work_high_FPSEMPN 6.000000 0.0 0 \n", + "work_high_HEREMPN 6.000000 0.0 0 \n", + "work_high_MWTEMPN 6.000000 0.0 0 \n", + "work_high_OTHEMPN 6.000000 0.0 0 \n", + "work_high_RETEMPN -2.207275 0.0 1 \n", + "work_low_AGREMPN 6.000000 0.0 0 \n", + "work_low_FPSEMPN 6.000000 0.0 0 \n", + "work_low_HEREMPN 6.000000 0.0 0 \n", + "work_low_MWTEMPN 6.000000 0.0 0 \n", + "work_low_OTHEMPN 6.000000 0.0 0 \n", + "work_low_RETEMPN -2.047943 0.0 1 \n", + "work_med_AGREMPN 6.000000 0.0 0 \n", + "work_med_FPSEMPN 6.000000 0.0 0 \n", + "work_med_HEREMPN 6.000000 0.0 0 \n", + "work_med_MWTEMPN 6.000000 0.0 0 \n", + "work_med_OTHEMPN 6.000000 0.0 0 \n", + "work_med_RETEMPN -2.120264 0.0 1 \n", + "work_veryhigh_AGREMPN 6.000000 0.0 0 \n", + "work_veryhigh_FPSEMPN 6.000000 0.0 0 \n", + "work_veryhigh_HEREMPN 6.000000 0.0 0 \n", + "work_veryhigh_MWTEMPN 6.000000 0.0 0 \n", + "work_veryhigh_OTHEMPN 6.000000 0.0 0 \n", + "work_veryhigh_RETEMPN -2.375156 0.0 1 " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
keyvalue
loglike-88684.18177107332
x\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0
-999-999.000000
11.000000
coef_dist_0_1-1.072002
coef_dist_0_5_high0.147163
coef_dist_15_up-0.117017
coef_dist_1_3-0.433865
coef_dist_3_5-0.417069
coef_dist_5_15-0.155760
coef_dist_5_up_high0.025050
coef_mode_logsum0.074530
work_high_AGREMPN-1.857041
work_high_FPSEMPN-1.895566
work_high_HEREMPN-1.698595
work_high_MWTEMPN-1.816036
work_high_OTHEMPN-2.187730
work_high_RETEMPN-2.207275
work_low_AGREMPN-286.802086
work_low_FPSEMPN-1.507131
work_low_HEREMPN-0.818251
work_low_MWTEMPN-1.979965
work_low_OTHEMPN-2.020885
work_low_RETEMPN-2.047943
work_med_AGREMPN-1490.624349
work_med_FPSEMPN-2.150429
work_med_HEREMPN-1.605331
work_med_MWTEMPN-2.043346
work_med_OTHEMPN-2.171601
work_med_RETEMPN-2.120264
work_veryhigh_AGREMPN-6.028955
work_veryhigh_FPSEMPN-1.838036
work_veryhigh_HEREMPN-1.992113
work_veryhigh_MWTEMPN-1.763204
work_veryhigh_OTHEMPN-2.509234
work_veryhigh_RETEMPN-2.375156
tolerance2.5082874166498626e-07
stepsarray([0.25, 0.5 , 0.75, 1. , 1. , 1. , 1. , 1. ])
message'Optimization terminated successfully'
elapsed_time0:00:02.337866
method'BHHH'
n_cases28281
iteration_number8
" + ], + "text/plain": [ + "┣ loglike: -88684.18177107332\n", + "┣ x: -999 -999.000000\n", + "┃ 1 1.000000\n", + "┃ coef_dist_0_1 -1.072002\n", + "┃ coef_dist_0_5_high 0.147163\n", + "┃ coef_dist_15_up -0.117017\n", + "┃ coef_dist_1_3 -0.433865\n", + "┃ coef_dist_3_5 -0.417069\n", + "┃ coef_dist_5_15 -0.155760\n", + "┃ coef_dist_5_up_high 0.025050\n", + "┃ coef_mode_logsum 0.074530\n", + "┃ work_high_AGREMPN -1.857041\n", + "┃ work_high_FPSEMPN -1.895566\n", + "┃ work_high_HEREMPN -1.698595\n", + "┃ work_high_MWTEMPN -1.816036\n", + "┃ work_high_OTHEMPN -2.187730\n", + "┃ work_high_RETEMPN -2.207275\n", + "┃ work_low_AGREMPN -286.802086\n", + "┃ work_low_FPSEMPN -1.507131\n", + "┃ work_low_HEREMPN -0.818251\n", + "┃ work_low_MWTEMPN -1.979965\n", + "┃ work_low_OTHEMPN -2.020885\n", + "┃ work_low_RETEMPN -2.047943\n", + "┃ work_med_AGREMPN -1490.624349\n", + "┃ work_med_FPSEMPN -2.150429\n", + "┃ work_med_HEREMPN -1.605331\n", + "┃ work_med_MWTEMPN -2.043346\n", + "┃ work_med_OTHEMPN -2.171601\n", + "┃ work_med_RETEMPN -2.120264\n", + "┃ work_veryhigh_AGREMPN -6.028955\n", + "┃ work_veryhigh_FPSEMPN -1.838036\n", + "┃ work_veryhigh_HEREMPN -1.992113\n", + "┃ work_veryhigh_MWTEMPN -1.763204\n", + "┃ work_veryhigh_OTHEMPN -2.509234\n", + "┃ work_veryhigh_RETEMPN -2.375156\n", + "┃ dtype: float64\n", + "┣ tolerance: 2.5082874166498626e-07\n", + "┣ steps: array([0.25, 0.5 , 0.75, 1. , 1. , 1. , 1. , 1. ])\n", + "┣ message: 'Optimization terminated successfully'\n", + "┣ elapsed_time: datetime.timedelta(seconds=2, microseconds=337866)\n", + "┣ method: 'BHHH'\n", + "┣ n_cases: 28281\n", + "┣ iteration_number: 8" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "with shush(stderr=True):\n", + " # swallow a bunch of error logging related to recovery from our previous estimation failure\n", + " result2 = model2.estimate(method=\"BHHH\", options={\"maxiter\": 1000})\n", + "\n", + "result2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can then review the original and revised models side-by-side to see the differences." + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
modelmodel2
Number of CasesAggregate28281.00000028281.000000
Log Likelihood at ConvergenceAggregate-88683.850386-88684.181771
Per Case-3.135810-3.135822
Log Likelihood at Null ParametersAggregate-124263.519724-124263.519724
Per Case-4.393887-4.393887
Rho Squared w.r.t. Null ParametersAggregate0.2863240.286322
\n", + "
" + ], + "text/plain": [ + " model model2\n", + "Number of Cases Aggregate 28281.000000 28281.000000\n", + "Log Likelihood at Convergence Aggregate -88683.850386 -88684.181771\n", + " Per Case -3.135810 -3.135822\n", + "Log Likelihood at Null Parameters Aggregate -124263.519724 -124263.519724\n", + " Per Case -4.393887 -4.393887\n", + "Rho Squared w.r.t. Null Parameters Aggregate 0.286324 0.286322" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "with pd.option_context('display.max_rows', 999):\n", + " display(pd.concat({\n", + " \"model\": model.estimation_statistics_raw(),\n", + " \"model2\": model2.estimation_statistics_raw(),\n", + " }, axis=1).fillna(\"\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
modelmodel2
ValueStd Errt StatSignifNull ValueConstrainedValueStd Errt StatSignifNull ValueConstrained
Parameter
-999-999.0.00NA0.0fixed value-999.0.00NA0.0fixed value
11.000.00NA0.0fixed value1.000.00NA0.0fixed value
coef_dist_0_1-1.040.105-9.89***0.0-1.070.0946-11.33***0.0
coef_dist_0_5_high0.1470.011412.86***0.00.1470.011412.86***0.0
coef_dist_15_up-0.1170.00211-55.56***0.0-0.1170.00211-55.55***0.0
coef_dist_1_2-0.4650.0428-10.86***0.0
coef_dist_2_5-0.4180.0116-36.15***0.0
coef_dist_5_15-0.1560.00276-56.40***0.0-0.1560.00283-55.09***0.0
coef_dist_5_up_high0.02510.0017614.22***0.00.02500.0017614.20***0.0
coef_mode_logsum0.07420.008378.87***0.00.07450.008368.91***0.0
work_high_AGREMPN-1.860.596-3.11**0.0-1.860.597-3.11**0.0
work_high_FPSEMPN-1.900.178-10.67***0.0-1.900.178-10.67***0.0
work_high_HEREMPN-1.700.193-8.81***0.0-1.700.193-8.81***0.0
work_high_MWTEMPN-1.820.188-9.68***0.0-1.820.188-9.68***0.0
work_high_OTHEMPN-2.190.207-10.56***0.0-2.190.207-10.56***0.0
work_high_RETEMPN-2.210.00NA0.0fixed value-2.210.00NA0.0fixed value
work_low_AGREMPN-71.87.07e-12-BIG***0.0-287.NANA0.0
work_low_FPSEMPN-1.510.346-4.36***0.0-1.510.346-4.36***0.0
work_low_HEREMPN-0.8190.360-2.27*0.0-0.8180.361-2.27*0.0
work_low_MWTEMPN-1.980.387-5.12***0.0-1.980.387-5.11***0.0
work_low_OTHEMPN-2.020.407-4.97***0.0-2.020.407-4.96***0.0
work_low_RETEMPN-2.050.00NA0.0fixed value-2.050.00NA0.0fixed value
work_med_AGREMPN-8.09e+64NANA0.0-1.49e+03NANA0.0
work_med_FPSEMPN-2.150.194-11.06***0.0-2.150.195-11.05***0.0
work_med_HEREMPN-1.610.205-7.85***0.0-1.610.205-7.84***0.0
work_med_MWTEMPN-2.040.210-9.74***0.0-2.040.210-9.73***0.0
work_med_OTHEMPN-2.170.222-9.77***0.0-2.170.222-9.77***0.0
work_med_RETEMPN-2.120.00NA0.0fixed value-2.120.00NA0.0fixed value
work_veryhigh_AGREMPN-6.0424.2-0.250.0-6.0323.7-0.250.0
work_veryhigh_FPSEMPN-1.840.152-12.10***0.0-1.840.152-12.10***0.0
work_veryhigh_HEREMPN-1.990.170-11.71***0.0-1.990.170-11.71***0.0
work_veryhigh_MWTEMPN-1.760.159-11.08***0.0-1.760.159-11.08***0.0
work_veryhigh_OTHEMPN-2.510.189-13.24***0.0-2.510.189-13.24***0.0
work_veryhigh_RETEMPN-2.380.00NA0.0fixed value-2.380.00NA0.0fixed value
coef_dist_1_3-0.4340.0202-21.48***0.0
coef_dist_3_5-0.4170.0156-26.81***0.0
\n", + "
" + ], + "text/plain": [ + " model \\\n", + " Value Std Err t Stat Signif Null Value \n", + "Parameter \n", + "-999 -999.  0.00  NA 0.0 \n", + "1  1.00  0.00  NA 0.0 \n", + "coef_dist_0_1 -1.04  0.105 -9.89 *** 0.0 \n", + "coef_dist_0_5_high  0.147  0.0114  12.86 *** 0.0 \n", + "coef_dist_15_up -0.117  0.00211 -55.56 *** 0.0 \n", + "coef_dist_1_2 -0.465  0.0428 -10.86 *** 0.0 \n", + "coef_dist_2_5 -0.418  0.0116 -36.15 *** 0.0 \n", + "coef_dist_5_15 -0.156  0.00276 -56.40 *** 0.0 \n", + "coef_dist_5_up_high  0.0251  0.00176  14.22 *** 0.0 \n", + "coef_mode_logsum  0.0742  0.00837  8.87 *** 0.0 \n", + "work_high_AGREMPN -1.86  0.596 -3.11 ** 0.0 \n", + "work_high_FPSEMPN -1.90  0.178 -10.67 *** 0.0 \n", + "work_high_HEREMPN -1.70  0.193 -8.81 *** 0.0 \n", + "work_high_MWTEMPN -1.82  0.188 -9.68 *** 0.0 \n", + "work_high_OTHEMPN -2.19  0.207 -10.56 *** 0.0 \n", + "work_high_RETEMPN -2.21  0.00  NA 0.0 \n", + "work_low_AGREMPN -71.8  7.07e-12 -BIG *** 0.0 \n", + "work_low_FPSEMPN -1.51  0.346 -4.36 *** 0.0 \n", + "work_low_HEREMPN -0.819  0.360 -2.27 * 0.0 \n", + "work_low_MWTEMPN -1.98  0.387 -5.12 *** 0.0 \n", + "work_low_OTHEMPN -2.02  0.407 -4.97 *** 0.0 \n", + "work_low_RETEMPN -2.05  0.00  NA 0.0 \n", + "work_med_AGREMPN -8.09e+64  NA  NA 0.0 \n", + "work_med_FPSEMPN -2.15  0.194 -11.06 *** 0.0 \n", + "work_med_HEREMPN -1.61  0.205 -7.85 *** 0.0 \n", + "work_med_MWTEMPN -2.04  0.210 -9.74 *** 0.0 \n", + "work_med_OTHEMPN -2.17  0.222 -9.77 *** 0.0 \n", + "work_med_RETEMPN -2.12  0.00  NA 0.0 \n", + "work_veryhigh_AGREMPN -6.04  24.2 -0.25 0.0 \n", + "work_veryhigh_FPSEMPN -1.84  0.152 -12.10 *** 0.0 \n", + "work_veryhigh_HEREMPN -1.99  0.170 -11.71 *** 0.0 \n", + "work_veryhigh_MWTEMPN -1.76  0.159 -11.08 *** 0.0 \n", + "work_veryhigh_OTHEMPN -2.51  0.189 -13.24 *** 0.0 \n", + "work_veryhigh_RETEMPN -2.38  0.00  NA 0.0 \n", + "coef_dist_1_3 \n", + "coef_dist_3_5 \n", + "\n", + " model2 \\\n", + " Constrained Value Std Err t Stat Signif \n", + "Parameter \n", + "-999 fixed value -999.  0.00  NA \n", + "1 fixed value  1.00  0.00  NA \n", + "coef_dist_0_1 -1.07  0.0946 -11.33 *** \n", + "coef_dist_0_5_high  0.147  0.0114  12.86 *** \n", + "coef_dist_15_up -0.117  0.00211 -55.55 *** \n", + "coef_dist_1_2 \n", + "coef_dist_2_5 \n", + "coef_dist_5_15 -0.156  0.00283 -55.09 *** \n", + "coef_dist_5_up_high  0.0250  0.00176  14.20 *** \n", + "coef_mode_logsum  0.0745  0.00836  8.91 *** \n", + "work_high_AGREMPN -1.86  0.597 -3.11 ** \n", + "work_high_FPSEMPN -1.90  0.178 -10.67 *** \n", + "work_high_HEREMPN -1.70  0.193 -8.81 *** \n", + "work_high_MWTEMPN -1.82  0.188 -9.68 *** \n", + "work_high_OTHEMPN -2.19  0.207 -10.56 *** \n", + "work_high_RETEMPN fixed value -2.21  0.00  NA \n", + "work_low_AGREMPN -287.  NA  NA \n", + "work_low_FPSEMPN -1.51  0.346 -4.36 *** \n", + "work_low_HEREMPN -0.818  0.361 -2.27 * \n", + "work_low_MWTEMPN -1.98  0.387 -5.11 *** \n", + "work_low_OTHEMPN -2.02  0.407 -4.96 *** \n", + "work_low_RETEMPN fixed value -2.05  0.00  NA \n", + "work_med_AGREMPN -1.49e+03  NA  NA \n", + "work_med_FPSEMPN -2.15  0.195 -11.05 *** \n", + "work_med_HEREMPN -1.61  0.205 -7.84 *** \n", + "work_med_MWTEMPN -2.04  0.210 -9.73 *** \n", + "work_med_OTHEMPN -2.17  0.222 -9.77 *** \n", + "work_med_RETEMPN fixed value -2.12  0.00  NA \n", + "work_veryhigh_AGREMPN -6.03  23.7 -0.25 \n", + "work_veryhigh_FPSEMPN -1.84  0.152 -12.10 *** \n", + "work_veryhigh_HEREMPN -1.99  0.170 -11.71 *** \n", + "work_veryhigh_MWTEMPN -1.76  0.159 -11.08 *** \n", + "work_veryhigh_OTHEMPN -2.51  0.189 -13.24 *** \n", + "work_veryhigh_RETEMPN fixed value -2.38  0.00  NA \n", + "coef_dist_1_3 -0.434  0.0202 -21.48 *** \n", + "coef_dist_3_5 -0.417  0.0156 -26.81 *** \n", + "\n", + " \n", + " Null Value Constrained \n", + "Parameter \n", + "-999 0.0 fixed value \n", + "1 0.0 fixed value \n", + "coef_dist_0_1 0.0 \n", + "coef_dist_0_5_high 0.0 \n", + "coef_dist_15_up 0.0 \n", + "coef_dist_1_2 \n", + "coef_dist_2_5 \n", + "coef_dist_5_15 0.0 \n", + "coef_dist_5_up_high 0.0 \n", + "coef_mode_logsum 0.0 \n", + "work_high_AGREMPN 0.0 \n", + "work_high_FPSEMPN 0.0 \n", + "work_high_HEREMPN 0.0 \n", + "work_high_MWTEMPN 0.0 \n", + "work_high_OTHEMPN 0.0 \n", + "work_high_RETEMPN 0.0 fixed value \n", + "work_low_AGREMPN 0.0 \n", + "work_low_FPSEMPN 0.0 \n", + "work_low_HEREMPN 0.0 \n", + "work_low_MWTEMPN 0.0 \n", + "work_low_OTHEMPN 0.0 \n", + "work_low_RETEMPN 0.0 fixed value \n", + "work_med_AGREMPN 0.0 \n", + "work_med_FPSEMPN 0.0 \n", + "work_med_HEREMPN 0.0 \n", + "work_med_MWTEMPN 0.0 \n", + "work_med_OTHEMPN 0.0 \n", + "work_med_RETEMPN 0.0 fixed value \n", + "work_veryhigh_AGREMPN 0.0 \n", + "work_veryhigh_FPSEMPN 0.0 \n", + "work_veryhigh_HEREMPN 0.0 \n", + "work_veryhigh_MWTEMPN 0.0 \n", + "work_veryhigh_OTHEMPN 0.0 \n", + "work_veryhigh_RETEMPN 0.0 fixed value \n", + "coef_dist_1_3 0.0 \n", + "coef_dist_3_5 0.0 " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "with pd.option_context('display.max_rows', 999):\n", + " display(pd.concat({\n", + " \"model\": model.parameter_summary().data,\n", + " \"model2\": model2.parameter_summary().data,\n", + " }, axis=1).fillna(\"\"))" ] } ], @@ -4905,7 +5564,7 @@ "toc_visible": true }, "kernelspec": { - "display_name": "Python 3", + "display_name": "ESTER", "language": "python", "name": "python3" }, @@ -4919,7 +5578,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.10.15" }, "toc": { "base_numbering": 1, diff --git a/activitysim/examples/example_estimation/notebooks/04_auto_ownership.ipynb b/activitysim/examples/example_estimation/notebooks/04_auto_ownership.ipynb index 8a4206918..c637ed540 100644 --- a/activitysim/examples/example_estimation/notebooks/04_auto_ownership.ipynb +++ b/activitysim/examples/example_estimation/notebooks/04_auto_ownership.ipynb @@ -34,34 +34,82 @@ "id": "s53VwlPwtNnr", "outputId": "d1208b7a-c1f2-4b0b-c439-bf312fe12be0" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "JAX not found. Some functionality will be unavailable.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'larch': '6.0.32',\n", + " 'sharrow': '2.13.0',\n", + " 'numpy': '1.26.4',\n", + " 'pandas': '1.5.3',\n", + " 'xarray': '2024.3.0',\n", + " 'numba': '0.60.0'}" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "import os\n", - "import larch # !conda install larch -c conda-forge # for estimation\n", - "import pandas as pd" + "import larch as lx\n", + "import pandas as pd\n", + "\n", + "lx.versions()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We'll work in our `test` directory, where ActivitySim has saved the estimation data bundles." + "For this demo, we will assume that you have already run ActivitySim in estimation\n", + "mode, and saved the required estimation data bundles (EDB's) to disk. See\n", + "the [first notebook](./01_estimation_mode.ipynb) for details. The following module\n", + "will run a script to set everything up if the example data is not already available." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "EDB directory already populated.\n" + ] + }, + { + "data": { + "text/plain": [ + "PosixPath('test-estimation-data/activitysim-prototype-mtc-extended')" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "os.chdir('test')" + "from est_mode_setup import prepare, backup\n", + "prepare()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# Load data and prep model for estimation" + "In this demo notebook, we will (later) edit the model spec file. But for demo purposes, we want to\n", + "make sure we are starting from the \"original\" spec file, so we'll check that now. For actual \n", + "applications, this step would not be necessary." ] }, { @@ -69,11 +117,41 @@ "execution_count": 3, "metadata": {}, "outputs": [], + "source": [ + "backup(\"output-est-mode/estimation_data_bundle/auto_ownership/auto_ownership_SPEC.csv\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Load data and prep model for estimation" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "loading from output-est-mode/estimation_data_bundle/auto_ownership/auto_ownership_coefficients.csv\n", + "loading spec from output-est-mode/estimation_data_bundle/auto_ownership/auto_ownership_SPEC.csv\n", + "loading from output-est-mode/estimation_data_bundle/auto_ownership/auto_ownership_values_combined.parquet\n" + ] + } + ], "source": [ "modelname = \"auto_ownership\"\n", "\n", "from activitysim.estimation.larch import component_model\n", - "model, data = component_model(modelname, return_data=True)" + "model, data = component_model(\n", + " modelname, \n", + " edb_directory=f\"output-est-mode/estimation_data_bundle/{modelname}/\",\n", + " return_data=True,\n", + ")" ] }, { @@ -94,7 +172,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -206,7 +284,7 @@ "[67 rows x 2 columns]" ] }, - "execution_count": 4, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -224,7 +302,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -801,7 +879,7 @@ "28 coef_cars4_auto_time_saving_per_worker " ] }, - "execution_count": 5, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -819,7 +897,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -854,15 +932,15 @@ " util_presence_children_0_4\n", " util_presence_children_5_17\n", " ...\n", - " HSENROLL\n", - " COLLFTE\n", - " COLLPTE\n", - " TOPOLOGY\n", - " TERMINAL\n", - " household_density\n", - " employment_density\n", - " density_index\n", - " is_cbd\n", + " auPkTotal\n", + " auOpRetail\n", + " auOpTotal\n", + " trPkRetail\n", + " trPkTotal\n", + " trOpRetail\n", + " trOpTotal\n", + " nmRetail\n", + " nmTotal\n", " override_choice_code\n", " \n", " \n", @@ -892,9 +970,9 @@ " \n", " \n", " \n", - " 166\n", - " 0\n", - " 0\n", + " 45\n", + " 1\n", + " 1\n", " 0.0\n", " 0.0\n", " 0.0\n", @@ -904,21 +982,21 @@ " 0.0\n", " 0.0\n", " ...\n", - " 0.0\n", - " 0.00000\n", - " 0.00000\n", - " 1\n", - " 3.21263\n", - " 24.783133\n", - " 31.566265\n", - " 13.883217\n", - " False\n", - " 1\n", + " 12.513805\n", + " 9.924660\n", + " 12.562639\n", + " 4.193237\n", + " 6.875144\n", + " 3.952128\n", + " 6.590585\n", + " 2.194792\n", + " 6.359507\n", + " 2\n", " \n", " \n", - " 197\n", - " 0\n", - " 0\n", + " 499\n", + " 1\n", + " 1\n", " 0.0\n", " 0.0\n", " 0.0\n", @@ -928,19 +1006,19 @@ " 0.0\n", " 0.0\n", " ...\n", - " 0.0\n", - " 0.00000\n", - " 0.00000\n", - " 1\n", - " 3.68156\n", - " 56.783784\n", - " 10.459459\n", - " 8.832526\n", - " False\n", - " 1\n", + " 12.823009\n", + " 10.284673\n", + " 12.868645\n", + " 6.639963\n", + " 9.364105\n", + " 6.531079\n", + " 9.259002\n", + " 5.955868\n", + " 7.795004\n", + " 2\n", " \n", " \n", - " 268\n", + " 659\n", " 1\n", " 1\n", " 0.0\n", @@ -952,19 +1030,19 @@ " 0.0\n", " 0.0\n", " ...\n", - " 0.0\n", - " 3598.08521\n", - " 0.00000\n", - " 1\n", - " 3.29100\n", - " 11.947644\n", - " 45.167539\n", - " 9.448375\n", - " True\n", + " 12.663406\n", + " 10.247505\n", + " 12.762286\n", + " 6.001466\n", + " 8.409169\n", + " 5.786652\n", + " 8.279842\n", + " 5.798886\n", + " 7.900061\n", " 2\n", " \n", " \n", - " 375\n", + " 948\n", " 1\n", " 1\n", " 0.0\n", @@ -976,20 +1054,20 @@ " 0.0\n", " 0.0\n", " ...\n", - " 0.0\n", - " 0.00000\n", - " 0.00000\n", - " 1\n", - " 4.11499\n", - " 73.040169\n", - " 28.028350\n", - " 20.255520\n", - " True\n", + " 12.710919\n", + " 10.150335\n", + " 12.777635\n", + " 5.172974\n", + " 7.850360\n", + " 4.893929\n", + " 7.571579\n", + " 4.895220\n", + " 7.409345\n", " 2\n", " \n", " \n", - " 387\n", - " 1\n", + " 1276\n", + " 0\n", " 1\n", " 0.0\n", " 0.0\n", @@ -1000,15 +1078,15 @@ " 0.0\n", " 0.0\n", " ...\n", - " 0.0\n", - " 227.78223\n", - " 41.22827\n", - " 1\n", - " 3.83527\n", - " 26.631579\n", - " 45.868421\n", - " 16.848945\n", - " False\n", + " 12.661307\n", + " 10.258471\n", + " 12.759529\n", + " 6.039019\n", + " 8.348963\n", + " 5.778785\n", + " 8.070525\n", + " 6.073537\n", + " 7.851667\n", " 2\n", " \n", " \n", @@ -1036,7 +1114,7 @@ " ...\n", " \n", " \n", - " 2863464\n", + " 2874468\n", " 1\n", " 1\n", " 0.0\n", @@ -1048,21 +1126,21 @@ " 0.0\n", " 0.0\n", " ...\n", - " 0.0\n", - " 72.14684\n", - " 0.00000\n", - " 1\n", - " 5.52555\n", - " 38.187500\n", - " 978.875000\n", - " 36.753679\n", - " False\n", + " 10.036845\n", + " 8.113608\n", + " 10.265845\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", " 2\n", " \n", " \n", - " 2863483\n", - " 1\n", + " 2874567\n", " 1\n", + " 0\n", " 0.0\n", " 0.0\n", " 0.0\n", @@ -1072,20 +1150,20 @@ " 0.0\n", " 0.0\n", " ...\n", - " 0.0\n", - " 0.00000\n", - " 0.00000\n", - " 3\n", - " 3.99027\n", - " 39.838272\n", - " 71.693001\n", - " 25.608291\n", - " True\n", - " 2\n", + " 8.811126\n", + " 6.560015\n", + " 8.886403\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 1\n", " \n", " \n", - " 2863806\n", - " 1\n", + " 2874576\n", + " 0\n", " 1\n", " 0.0\n", " 0.0\n", @@ -1096,19 +1174,19 @@ " 0.0\n", " 0.0\n", " ...\n", - " 0.0\n", - " 0.00000\n", - " 0.00000\n", - " 1\n", - " 4.27539\n", - " 51.675676\n", - " 47.216216\n", - " 24.672699\n", - " False\n", + " 8.811126\n", + " 6.560015\n", + " 8.886403\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", " 2\n", " \n", " \n", - " 2864518\n", + " 2874826\n", " 1\n", " 1\n", " 0.0\n", @@ -1120,20 +1198,20 @@ " 0.0\n", " 0.0\n", " ...\n", - " 0.0\n", - " 0.00000\n", - " 0.00000\n", - " 1\n", - " 25.52083\n", - " 15.938148\n", - " 551.353820\n", - " 15.490363\n", - " True\n", + " 11.356335\n", + " 9.298380\n", + " 11.721935\n", + " 1.052528\n", + " 2.925968\n", + " 0.494776\n", + " 2.006432\n", + " 3.782008\n", + " 6.208875\n", " 2\n", " \n", " \n", - " 2864688\n", - " 1\n", + " 2875013\n", + " 0\n", " 1\n", " 0.0\n", " 0.0\n", @@ -1144,111 +1222,111 @@ " 0.0\n", " 0.0\n", " ...\n", - " 0.0\n", - " 0.00000\n", - " 0.00000\n", - " 1\n", - " 3.29134\n", - " 16.000000\n", - " 31.644068\n", - " 10.626823\n", - " False\n", + " 11.663277\n", + " 9.588527\n", + " 12.019407\n", + " 3.053361\n", + " 5.871246\n", + " 0.141304\n", + " 0.776133\n", + " 4.090554\n", + " 6.388513\n", " 2\n", " \n", " \n", "\n", - "

2000 rows × 95 columns

\n", + "

20000 rows × 95 columns

\n", "" ], "text/plain": [ " model_choice override_choice util_drivers_2 util_drivers_3 \\\n", "household_id \n", - "166 0 0 0.0 0.0 \n", - "197 0 0 0.0 0.0 \n", - "268 1 1 0.0 0.0 \n", - "375 1 1 0.0 0.0 \n", - "387 1 1 0.0 0.0 \n", + "45 1 1 0.0 0.0 \n", + "499 1 1 0.0 0.0 \n", + "659 1 1 0.0 0.0 \n", + "948 1 1 0.0 0.0 \n", + "1276 0 1 0.0 0.0 \n", "... ... ... ... ... \n", - "2863464 1 1 0.0 0.0 \n", - "2863483 1 1 0.0 0.0 \n", - "2863806 1 1 0.0 0.0 \n", - "2864518 1 1 0.0 0.0 \n", - "2864688 1 1 0.0 0.0 \n", + "2874468 1 1 0.0 0.0 \n", + "2874567 1 0 0.0 0.0 \n", + "2874576 0 1 0.0 0.0 \n", + "2874826 1 1 0.0 0.0 \n", + "2875013 0 1 0.0 0.0 \n", "\n", " util_drivers_4_up util_persons_16_17 util_persons_18_24 \\\n", "household_id \n", - "166 0.0 0.0 0.0 \n", - "197 0.0 0.0 0.0 \n", - "268 0.0 0.0 0.0 \n", - "375 0.0 0.0 0.0 \n", - "387 0.0 0.0 0.0 \n", + "45 0.0 0.0 0.0 \n", + "499 0.0 0.0 0.0 \n", + "659 0.0 0.0 0.0 \n", + "948 0.0 0.0 0.0 \n", + "1276 0.0 0.0 0.0 \n", "... ... ... ... \n", - "2863464 0.0 0.0 0.0 \n", - "2863483 0.0 0.0 0.0 \n", - "2863806 0.0 0.0 0.0 \n", - "2864518 0.0 0.0 0.0 \n", - "2864688 0.0 0.0 0.0 \n", + "2874468 0.0 0.0 0.0 \n", + "2874567 0.0 0.0 0.0 \n", + "2874576 0.0 0.0 0.0 \n", + "2874826 0.0 0.0 0.0 \n", + "2875013 0.0 0.0 0.0 \n", "\n", " util_persons_25_34 util_presence_children_0_4 \\\n", "household_id \n", - "166 0.0 0.0 \n", - "197 0.0 0.0 \n", - "268 0.0 0.0 \n", - "375 0.0 0.0 \n", - "387 0.0 0.0 \n", + "45 0.0 0.0 \n", + "499 0.0 0.0 \n", + "659 0.0 0.0 \n", + "948 0.0 0.0 \n", + "1276 0.0 0.0 \n", "... ... ... \n", - "2863464 0.0 0.0 \n", - "2863483 0.0 0.0 \n", - "2863806 0.0 0.0 \n", - "2864518 0.0 0.0 \n", - "2864688 0.0 0.0 \n", + "2874468 0.0 0.0 \n", + "2874567 0.0 0.0 \n", + "2874576 0.0 0.0 \n", + "2874826 0.0 0.0 \n", + "2875013 0.0 0.0 \n", "\n", - " util_presence_children_5_17 ... HSENROLL COLLFTE \\\n", - "household_id ... \n", - "166 0.0 ... 0.0 0.00000 \n", - "197 0.0 ... 0.0 0.00000 \n", - "268 0.0 ... 0.0 3598.08521 \n", - "375 0.0 ... 0.0 0.00000 \n", - "387 0.0 ... 0.0 227.78223 \n", - "... ... ... ... ... \n", - "2863464 0.0 ... 0.0 72.14684 \n", - "2863483 0.0 ... 0.0 0.00000 \n", - "2863806 0.0 ... 0.0 0.00000 \n", - "2864518 0.0 ... 0.0 0.00000 \n", - "2864688 0.0 ... 0.0 0.00000 \n", + " util_presence_children_5_17 ... auPkTotal auOpRetail \\\n", + "household_id ... \n", + "45 0.0 ... 12.513805 9.924660 \n", + "499 0.0 ... 12.823009 10.284673 \n", + "659 0.0 ... 12.663406 10.247505 \n", + "948 0.0 ... 12.710919 10.150335 \n", + "1276 0.0 ... 12.661307 10.258471 \n", + "... ... ... ... ... \n", + "2874468 0.0 ... 10.036845 8.113608 \n", + "2874567 0.0 ... 8.811126 6.560015 \n", + "2874576 0.0 ... 8.811126 6.560015 \n", + "2874826 0.0 ... 11.356335 9.298380 \n", + "2875013 0.0 ... 11.663277 9.588527 \n", "\n", - " COLLPTE TOPOLOGY TERMINAL household_density \\\n", - "household_id \n", - "166 0.00000 1 3.21263 24.783133 \n", - "197 0.00000 1 3.68156 56.783784 \n", - "268 0.00000 1 3.29100 11.947644 \n", - "375 0.00000 1 4.11499 73.040169 \n", - "387 41.22827 1 3.83527 26.631579 \n", - "... ... ... ... ... \n", - "2863464 0.00000 1 5.52555 38.187500 \n", - "2863483 0.00000 3 3.99027 39.838272 \n", - "2863806 0.00000 1 4.27539 51.675676 \n", - "2864518 0.00000 1 25.52083 15.938148 \n", - "2864688 0.00000 1 3.29134 16.000000 \n", + " auOpTotal trPkRetail trPkTotal trOpRetail trOpTotal \\\n", + "household_id \n", + "45 12.562639 4.193237 6.875144 3.952128 6.590585 \n", + "499 12.868645 6.639963 9.364105 6.531079 9.259002 \n", + "659 12.762286 6.001466 8.409169 5.786652 8.279842 \n", + "948 12.777635 5.172974 7.850360 4.893929 7.571579 \n", + "1276 12.759529 6.039019 8.348963 5.778785 8.070525 \n", + "... ... ... ... ... ... \n", + "2874468 10.265845 0.000000 0.000000 0.000000 0.000000 \n", + "2874567 8.886403 0.000000 0.000000 0.000000 0.000000 \n", + "2874576 8.886403 0.000000 0.000000 0.000000 0.000000 \n", + "2874826 11.721935 1.052528 2.925968 0.494776 2.006432 \n", + "2875013 12.019407 3.053361 5.871246 0.141304 0.776133 \n", "\n", - " employment_density density_index is_cbd override_choice_code \n", - "household_id \n", - "166 31.566265 13.883217 False 1 \n", - "197 10.459459 8.832526 False 1 \n", - "268 45.167539 9.448375 True 2 \n", - "375 28.028350 20.255520 True 2 \n", - "387 45.868421 16.848945 False 2 \n", - "... ... ... ... ... \n", - "2863464 978.875000 36.753679 False 2 \n", - "2863483 71.693001 25.608291 True 2 \n", - "2863806 47.216216 24.672699 False 2 \n", - "2864518 551.353820 15.490363 True 2 \n", - "2864688 31.644068 10.626823 False 2 \n", + " nmRetail nmTotal override_choice_code \n", + "household_id \n", + "45 2.194792 6.359507 2 \n", + "499 5.955868 7.795004 2 \n", + "659 5.798886 7.900061 2 \n", + "948 4.895220 7.409345 2 \n", + "1276 6.073537 7.851667 2 \n", + "... ... ... ... \n", + "2874468 0.000000 0.000000 2 \n", + "2874567 0.000000 0.000000 1 \n", + "2874576 0.000000 0.000000 2 \n", + "2874826 3.782008 6.208875 2 \n", + "2875013 4.090554 6.388513 2 \n", "\n", - "[2000 rows x 95 columns]" + "[20000 rows x 95 columns]" ] }, - "execution_count": 6, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -1268,20 +1346,13 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "req_data does not request avail_ca or avail_co but it is set and being provided\n" - ] - }, { "data": { "text/html": [ - "

Iteration 015 [Optimization terminated successfully.]

" + "

Iteration 067 [Optimization terminated successfully]

" ], "text/plain": [ "" @@ -1293,7 +1364,7 @@ { "data": { "text/html": [ - "

Best LL = -1732.441809546802

" + "

Best LL = -18485.49502669456

" ], "text/plain": [ "" @@ -1324,70 +1395,74 @@ " \n", " \n", " value\n", + " best\n", " initvalue\n", - " nullvalue\n", " minimum\n", " maximum\n", + " nullvalue\n", " holdfast\n", - " note\n", - " best\n", + " \n", + " \n", + " param_name\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " coef_cars1_asc\n", - " 4.744711\n", + " 1.337433\n", + " 1.337433\n", " 1.1865\n", + " -50.00\n", + " 50.00\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 4.744711\n", " \n", " \n", " coef_cars1_asc_county\n", - " -0.566000\n", + " -0.655949\n", + " -0.655949\n", " -0.5660\n", + " -50.00\n", + " 50.00\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.566000\n", " \n", " \n", " coef_cars1_asc_marin\n", - " -0.243396\n", + " -0.168475\n", + " -0.168475\n", " -0.2434\n", + " -50.00\n", + " 50.00\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.243396\n", " \n", " \n", " coef_cars1_asc_san_francisco\n", - " 3.984111\n", + " 0.324519\n", + " 0.324519\n", " 0.4259\n", + " -50.00\n", + " 50.00\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 3.984111\n", " \n", " \n", " coef_cars1_auto_time_saving_per_worker\n", - " -0.039384\n", + " 0.394451\n", + " 0.394451\n", " 0.4707\n", + " -50.00\n", + " 50.00\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.039384\n", " \n", " \n", " ...\n", @@ -1398,162 +1473,101 @@ " ...\n", " ...\n", " ...\n", - " ...\n", " \n", " \n", " coef_retail_auto_no_workers\n", - " -0.637704\n", + " 0.039844\n", + " 0.039844\n", " 0.0626\n", + " -50.00\n", + " 50.00\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.637704\n", " \n", " \n", " coef_retail_auto_workers\n", - " -0.531112\n", + " 0.155792\n", + " 0.155792\n", " 0.1646\n", + " -50.00\n", + " 50.00\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.531112\n", " \n", " \n", " coef_retail_non_motor\n", " -0.030000\n", + " -0.030000\n", " -0.0300\n", + " -0.03\n", + " -0.03\n", " 0.0\n", - " NaN\n", - " NaN\n", " 1\n", - " \n", - " -0.030000\n", " \n", " \n", " coef_retail_transit_no_workers\n", - " -0.333447\n", + " -0.307701\n", + " -0.307701\n", " -0.3053\n", + " -50.00\n", + " 50.00\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.333447\n", " \n", " \n", " coef_retail_transit_workers\n", - " -0.464382\n", + " -0.524658\n", + " -0.524658\n", " -0.5117\n", + " -50.00\n", + " 50.00\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.464382\n", " \n", " \n", "\n", - "

66 rows × 8 columns

\n", + "

66 rows × 7 columns

\n", "" ], "text/plain": [ - " value initvalue nullvalue \\\n", - "coef_cars1_asc 4.744711 1.1865 0.0 \n", - "coef_cars1_asc_county -0.566000 -0.5660 0.0 \n", - "coef_cars1_asc_marin -0.243396 -0.2434 0.0 \n", - "coef_cars1_asc_san_francisco 3.984111 0.4259 0.0 \n", - "coef_cars1_auto_time_saving_per_worker -0.039384 0.4707 0.0 \n", - "... ... ... ... \n", - "coef_retail_auto_no_workers -0.637704 0.0626 0.0 \n", - "coef_retail_auto_workers -0.531112 0.1646 0.0 \n", - "coef_retail_non_motor -0.030000 -0.0300 0.0 \n", - "coef_retail_transit_no_workers -0.333447 -0.3053 0.0 \n", - "coef_retail_transit_workers -0.464382 -0.5117 0.0 \n", - "\n", - " minimum maximum holdfast note \\\n", - "coef_cars1_asc NaN NaN 0 \n", - "coef_cars1_asc_county NaN NaN 0 \n", - "coef_cars1_asc_marin NaN NaN 0 \n", - "coef_cars1_asc_san_francisco NaN NaN 0 \n", - "coef_cars1_auto_time_saving_per_worker NaN NaN 0 \n", - "... ... ... ... ... \n", - "coef_retail_auto_no_workers NaN NaN 0 \n", - "coef_retail_auto_workers NaN NaN 0 \n", - "coef_retail_non_motor NaN NaN 1 \n", - "coef_retail_transit_no_workers NaN NaN 0 \n", - "coef_retail_transit_workers NaN NaN 0 \n", + " value best initvalue \\\n", + "param_name \n", + "coef_cars1_asc 1.337433 1.337433 1.1865 \n", + "coef_cars1_asc_county -0.655949 -0.655949 -0.5660 \n", + "coef_cars1_asc_marin -0.168475 -0.168475 -0.2434 \n", + "coef_cars1_asc_san_francisco 0.324519 0.324519 0.4259 \n", + "coef_cars1_auto_time_saving_per_worker 0.394451 0.394451 0.4707 \n", + "... ... ... ... \n", + "coef_retail_auto_no_workers 0.039844 0.039844 0.0626 \n", + "coef_retail_auto_workers 0.155792 0.155792 0.1646 \n", + "coef_retail_non_motor -0.030000 -0.030000 -0.0300 \n", + "coef_retail_transit_no_workers -0.307701 -0.307701 -0.3053 \n", + "coef_retail_transit_workers -0.524658 -0.524658 -0.5117 \n", "\n", - " best \n", - "coef_cars1_asc 4.744711 \n", - "coef_cars1_asc_county -0.566000 \n", - "coef_cars1_asc_marin -0.243396 \n", - "coef_cars1_asc_san_francisco 3.984111 \n", - "coef_cars1_auto_time_saving_per_worker -0.039384 \n", - "... ... \n", - "coef_retail_auto_no_workers -0.637704 \n", - "coef_retail_auto_workers -0.531112 \n", - "coef_retail_non_motor -0.030000 \n", - "coef_retail_transit_no_workers -0.333447 \n", - "coef_retail_transit_workers -0.464382 \n", + " minimum maximum nullvalue holdfast \n", + "param_name \n", + "coef_cars1_asc -50.00 50.00 0.0 0 \n", + "coef_cars1_asc_county -50.00 50.00 0.0 0 \n", + "coef_cars1_asc_marin -50.00 50.00 0.0 0 \n", + "coef_cars1_asc_san_francisco -50.00 50.00 0.0 0 \n", + "coef_cars1_auto_time_saving_per_worker -50.00 50.00 0.0 0 \n", + "... ... ... ... ... \n", + "coef_retail_auto_no_workers -50.00 50.00 0.0 0 \n", + "coef_retail_auto_workers -50.00 50.00 0.0 0 \n", + "coef_retail_non_motor -0.03 -0.03 0.0 1 \n", + "coef_retail_transit_no_workers -50.00 50.00 0.0 0 \n", + "coef_retail_transit_workers -50.00 50.00 0.0 0 \n", "\n", - "[66 rows x 8 columns]" + "[66 rows x 7 columns]" ] }, "metadata": {}, "output_type": "display_data" }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 9.359944885353407e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 8.107476782860855e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 7.627843595130013e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.990378290025734e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.0563705701904108e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.1225524327726755e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.2258577937616875e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.935415350933392e-18 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.2182226767165389e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.440720135351098e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 6.0219186659143e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.124994084916672e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.288651679141822e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.1653818878831003e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.1310833938776723e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.7070817993508089e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - ":1: PossibleOverspecification: WARNING: Model is possibly over-specified (hessian is nearly singular).\n", - " model.estimate()\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.3099078937960036e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - ":1: RuntimeWarning: invalid value encountered in sqrt\n", - " model.estimate()\n" - ] - }, { "data": { "text/html": [ - "
keyvalue
loglike-1732.441809546802
x\n", + "
keyvalue
x\n", " \n", " \n", " \n", @@ -1563,23 +1577,23 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1587,11 +1601,11 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1603,11 +1617,11 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1623,7 +1637,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1631,11 +1645,11 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1643,175 +1657,175 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1819,816 +1833,3969 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - "
coef_cars1_asc4.7447111.337433
coef_cars1_asc_county-0.566000-0.655949
coef_cars1_asc_marin-0.243396-0.168475
coef_cars1_asc_san_francisco3.9841110.324519
coef_cars1_auto_time_saving_per_worker-0.0393840.394451
coef_cars1_density_0_10_no_workers
coef_cars1_density_10_up_no_workers-0.006930-0.014457
coef_cars1_density_10_up_workers-0.016448-0.018280
coef_cars1_drivers_2
coef_cars1_drivers_4_up2.0455452.010834
coef_cars1_hh_income_0_30k0.0285640.045617
coef_cars1_hh_income_30_up
coef_cars1_persons_18_24-0.448145-0.475768
coef_cars1_persons_25_34
coef_cars1_presence_children_0_40.4863210.486627
coef_cars1_presence_children_5_17-0.2342660.038980
coef_cars234_asc_marin
coef_cars234_presence_children_0_40.5901130.834181
coef_cars2_asc2.466763-0.816912
coef_cars2_asc_county-0.442900-0.534108
coef_cars2_asc_san_francisco4.0196630.395165
coef_cars2_auto_time_saving_per_worker0.0106060.625959
coef_cars2_density_0_10_no_workers-0.189423-0.188961
coef_cars2_density_10_up_no_workers-0.121021-0.118760
coef_cars2_drivers_22.9451532.883946
coef_cars2_drivers_33.5950543.464192
coef_cars2_drivers_4_up6.8564056.182053
coef_cars2_hh_income_0_30k0.0622690.055723
coef_cars2_hh_income_30_up0.0072880.007093
coef_cars2_num_workers_clip_3-0.0282580.316983
coef_cars2_persons_16_17-1.439330-0.845210
coef_cars2_persons_18_24-0.942633-0.990269
coef_cars2_persons_25_34-0.471640-0.379371
coef_cars2_presence_children_5_170.1645260.327420
coef_cars34_asc_county-0.237200-0.260727
coef_cars34_asc_san_francisco-180.6108020.055894
coef_cars34_density_0_10_no_workers-0.377292-0.342857
coef_cars34_density_10_up_no_workers-0.211272-0.255253
coef_cars34_persons_16_17-1.955221-1.816227
coef_cars34_persons_18_24-0.988280-1.014724
coef_cars34_persons_25_34-0.914993-0.745197
coef_cars34_presence_children_5_170.4654180.541541
coef_cars3_asc185.820626-3.427743
coef_cars3_auto_time_saving_per_worker0.0094180.538213
coef_cars3_drivers_22.3528283.329318
coef_cars3_drivers_35.0484885.702014
coef_cars3_drivers_4_up8.3179508.643466
coef_cars3_hh_income_0_30k0.0519870.064430
coef_cars3_hh_income_30_up0.0047160.009129
coef_cars3_num_workers_clip_30.3741280.650136
coef_cars4_asc-375.140428-5.526492
coef_cars4_auto_time_saving_per_worker-0.1472990.834093
coef_cars4_drivers_2561.0150572.649806
coef_cars4_drivers_3564.4901585.329905
coef_cars4_drivers_4_up568.2725149.423154
coef_cars4_hh_income_0_30k0.0358320.071838
coef_cars4_hh_income_30_up0.0130760.013164
coef_cars4_num_workers_clip_30.6996560.948575
coef_retail_auto_no_workers-0.6377040.039844
coef_retail_auto_workers-0.5311120.155792
coef_retail_non_motor
coef_retail_transit_no_workers-0.333447-0.307701
coef_retail_transit_workers-0.464382-0.524658
tolerance4.356665489100602e-06
steps
array([1. , 1. , 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5,\n",
-       "       0.5, 0.5])
message'Optimization terminated successfully.'
elapsed_time0:00:00.484879
method'bhhh'
n_cases2000
iteration_number15
logloss0.866220904773401
" - ], - "text/plain": [ - "┣ loglike: -1732.441809546802\n", - "┣ x: coef_cars1_asc 4.744711\n", - "┃ coef_cars1_asc_county -0.566000\n", - "┃ coef_cars1_asc_marin -0.243396\n", - "┃ coef_cars1_asc_san_francisco 3.984111\n", - "┃ coef_cars1_auto_time_saving_per_worker -0.039384\n", - "┃ ... \n", - "┃ coef_retail_auto_no_workers -0.637704\n", - "┃ coef_retail_auto_workers -0.531112\n", - "┃ coef_retail_non_motor -0.030000\n", - "┃ coef_retail_transit_no_workers -0.333447\n", - "┃ coef_retail_transit_workers -0.464382\n", - "┃ Length: 66, dtype: float64\n", - "┣ tolerance: 4.356665489100602e-06\n", - "┣ steps: array([1. , 1. , 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5,\n", - "┃ 0.5, 0.5])\n", - "┣ message: 'Optimization terminated successfully.'\n", - "┣ elapsed_time: datetime.timedelta(microseconds=484879)\n", - "┣ method: 'bhhh'\n", - "┣ n_cases: 2000\n", - "┣ iteration_number: 15\n", - "┣ logloss: 0.866220904773401" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model.estimate()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Estimated coefficients" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Value Std Err t Stat Signif Like Ratio Null Value Constrained
coef_cars1_asc 4.74 2.66 1.78 NA 0.00
coef_cars1_asc_county-0.566 NA NA[] 0.00 0.00
coef_cars1_asc_marin-0.243 0.0141-17.28*** NA 0.00
coef_cars1_asc_san_francisco 3.98 2.66 1.50 NA 0.00
coef_cars1_auto_time_saving_per_worker-0.0394 0.561-0.07 NA 0.00
coef_cars1_density_0_10_no_workers 0.00 NA NA NA 0.00fixed value
coef_cars1_density_10_up_no_workers-0.00693 0.00514-1.35 NA 0.00
coef_cars1_density_10_up_workers-0.0164 0.00390-4.21*** NA 0.00
coef_cars1_drivers_2 0.00 NA NA NA 0.00fixed value
coef_cars1_drivers_3 0.00 NA NA NA 0.00fixed value
coef_cars1_drivers_4_up 2.05 0.504 4.06*** NA 0.00
coef_cars1_hh_income_0_30k 0.0286 0.00628 4.55*** NA 0.00
coef_cars1_hh_income_30_up 0.00 NA NA NA 0.00fixed value
coef_cars1_num_workers_clip_3 0.00 NA NA NA 0.00fixed value
coef_cars1_persons_16_17 0.00 NA NA NA 0.00fixed value
coef_cars1_persons_18_24-0.448 0.125-3.59*** NA 0.00
coef_cars1_persons_25_34 0.00 NA NA NA 0.00fixed value
coef_cars1_presence_children_0_4 0.486 0.262 1.85 NA 0.00
coef_cars1_presence_children_5_17-0.234 0.196-1.19 NA 0.00
coef_cars234_asc_marin 0.00 NA NA NA 0.00fixed value
coef_cars234_presence_children_0_4 0.590 0.323 1.83 NA 0.00
coef_cars2_asc 2.47 2.66 0.93 NA 0.00
coef_cars2_asc_county-0.443 0.000441-BIG*** NA 0.00
coef_cars2_asc_san_francisco 4.02 2.66 1.51 NA 0.00
coef_cars2_auto_time_saving_per_worker 0.0106 0.709 0.01 NA 0.00
coef_cars2_density_0_10_no_workers-0.189 0.0342-5.54*** NA 0.00
coef_cars2_density_10_up_no_workers-0.121 0.0176-6.87*** NA 0.00
coef_cars2_drivers_2 2.95 0.265 11.12*** NA 0.00
coef_cars2_drivers_3 3.60 0.354 10.14*** NA 0.00
coef_cars2_drivers_4_up 6.86 0.647 10.60*** NA 0.00
coef_cars2_hh_income_0_30k 0.0623 0.0149 4.17*** NA 0.00
coef_cars2_hh_income_30_up 0.00729 0.00256 2.85** NA 0.00
coef_cars2_num_workers_clip_3-0.0283 0.144-0.20 NA 0.00
coef_cars2_persons_16_17-1.44 0.381-3.78*** NA 0.00
coef_cars2_persons_18_24-0.943 0.176-5.36*** NA 0.00
coef_cars2_persons_25_34-0.472 0.0988-4.78*** NA 0.00
coef_cars2_presence_children_5_17 0.165 0.260 0.63 NA 0.00
coef_cars34_asc_county-0.237 8.28e-05-BIG*** NA 0.00
coef_cars34_asc_san_francisco-181. NA NA[***] BIG 0.00
coef_cars34_density_0_10_no_workers-0.377 0.0616-6.12*** NA 0.00
coef_cars34_density_10_up_no_workers-0.211 0.0736-2.87** NA 0.00
coef_cars34_persons_16_17-1.96 0.507-3.86*** NA 0.00
coef_cars34_persons_18_24-0.988 0.215-4.61*** NA 0.00
coef_cars34_persons_25_34-0.915 0.168-5.46*** NA 0.00
coef_cars34_presence_children_5_17 0.465 0.364 1.28 NA 0.00
coef_cars3_asc 186. NA NA[***] BIG 0.00
coef_cars3_auto_time_saving_per_worker 0.00942 1.06 0.01 NA 0.00
coef_cars3_drivers_2 2.35 0.790 2.98** NA 0.00
coef_cars3_drivers_3 5.05 0.811 6.23*** NA 0.00
coef_cars3_drivers_4_up 8.32 1.01 8.25*** NA 0.00
coef_cars3_hh_income_0_30k 0.0520 0.0286 1.82 NA 0.00
coef_cars3_hh_income_30_up 0.00472 0.00485 0.97 NA 0.00
coef_cars3_num_workers_clip_3 0.374 0.234 1.60 NA 0.00
coef_cars4_asc-375. 2.15e+03-0.17 NA 0.00
coef_cars4_auto_time_saving_per_worker-0.147 1.49-0.10 NA 0.00
coef_cars4_drivers_2 561. 2.30e+03 0.24 NA 0.00
coef_cars4_drivers_3 564. 2.30e+03 0.25 NA 0.00
coef_cars4_drivers_4_up 568. 2.30e+03 0.25 NA 0.00
coef_cars4_hh_income_0_30k 0.0358 0.0460 0.78 NA 0.00
coef_cars4_hh_income_30_up 0.0131 0.00635 2.06* NA 0.00
coef_cars4_num_workers_clip_3 0.700 0.321 2.18* NA 0.00
coef_retail_auto_no_workers-0.638 0.595-1.07 NA 0.00
coef_retail_auto_workers-0.531 0.589-0.90 NA 0.00
coef_retail_non_motor-0.0300 NA NA NA 0.00fixed value
coef_retail_transit_no_workers-0.333 0.193-1.73 NA 0.00
coef_retail_transit_workers-0.464 0.162-2.86** NA 0.00
" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model.parameter_summary()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "TojXWivZsx7M" - }, - "source": [ - "# Output Estimation Results" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "from activitysim.estimation.larch import update_coefficients\n", - "result_dir = data.edb_directory/\"estimated\"\n", - "update_coefficients(\n", - " model, data, result_dir,\n", - " output_file=f\"{modelname}_coefficients_revised.csv\",\n", - ");" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, + "
logloss0.924274751334728d_logloss\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0
coef_cars1_asc5.272591e-05
coef_cars1_asc_county-8.675234e-06
coef_cars1_asc_marin-6.400057e-05
coef_cars1_asc_san_francisco-1.587832e-04
coef_cars1_auto_time_saving_per_worker1.403290e-04
coef_cars1_density_0_10_no_workers0.000000e+00
coef_cars1_density_10_up_no_workers6.620783e-06
coef_cars1_density_10_up_workers-2.503582e-06
coef_cars1_drivers_20.000000e+00
coef_cars1_drivers_30.000000e+00
coef_cars1_drivers_4_up-7.541270e-05
coef_cars1_hh_income_0_30k1.049198e-05
coef_cars1_hh_income_30_up0.000000e+00
coef_cars1_num_workers_clip_30.000000e+00
coef_cars1_persons_16_170.000000e+00
coef_cars1_persons_18_241.878411e-05
coef_cars1_persons_25_340.000000e+00
coef_cars1_presence_children_0_4-2.694541e-05
coef_cars1_presence_children_5_171.274960e-04
coef_cars234_asc_marin0.000000e+00
coef_cars234_presence_children_0_4-3.830304e-05
coef_cars2_asc-1.829182e-05
coef_cars2_asc_county-3.904999e-05
coef_cars2_asc_san_francisco1.268645e-04
coef_cars2_auto_time_saving_per_worker-3.296868e-05
coef_cars2_density_0_10_no_workers-4.356619e-06
coef_cars2_density_10_up_no_workers-1.094392e-05
coef_cars2_drivers_2-4.226757e-05
coef_cars2_drivers_36.818523e-05
coef_cars2_drivers_4_up3.745028e-05
coef_cars2_hh_income_0_30k3.076831e-05
coef_cars2_hh_income_30_up4.120039e-07
coef_cars2_num_workers_clip_3-9.781070e-05
coef_cars2_persons_16_171.620926e-04
coef_cars2_persons_18_24-1.615064e-04
coef_cars2_persons_25_34-1.420584e-05
coef_cars2_presence_children_5_176.079833e-05
coef_cars34_asc_county2.795941e-05
coef_cars34_asc_san_francisco2.027922e-05
coef_cars34_density_0_10_no_workers5.432376e-06
coef_cars34_density_10_up_no_workers4.880993e-05
coef_cars34_persons_16_17-1.804202e-04
coef_cars34_persons_18_247.896584e-05
coef_cars34_persons_25_34-3.944173e-06
coef_cars34_presence_children_5_17-2.364296e-04
coef_cars3_asc4.510100e-05
coef_cars3_auto_time_saving_per_worker-6.354019e-05
coef_cars3_drivers_21.322705e-04
coef_cars3_drivers_37.346112e-05
coef_cars3_drivers_4_up-1.013529e-04
coef_cars3_hh_income_0_30k5.005154e-06
coef_cars3_hh_income_30_up-1.522397e-05
coef_cars3_num_workers_clip_3-2.420821e-04
coef_cars4_asc-4.863863e-05
coef_cars4_auto_time_saving_per_worker-3.102682e-05
coef_cars4_drivers_21.784363e-05
coef_cars4_drivers_32.136643e-05
coef_cars4_drivers_4_up1.397419e-06
coef_cars4_hh_income_0_30k7.719776e-07
coef_cars4_hh_income_30_up-1.121368e-05
coef_cars4_num_workers_clip_3-7.913124e-05
coef_retail_auto_no_workers1.803616e-05
coef_retail_auto_workers-1.355341e-06
coef_retail_non_motor0.000000e+00
coef_retail_transit_no_workers-6.122156e-05
coef_retail_transit_workers-7.132030e-06
nit67nfev84njev67status0message'Optimization terminated successfully'successTrueelapsed_time0:00:01.497985method'slsqp'n_cases20000iteration_number67loglike-18485.49502669456
" + ], + "text/plain": [ + "┣ x: coef_cars1_asc 1.337433\n", + "┃ coef_cars1_asc_county -0.655949\n", + "┃ coef_cars1_asc_marin -0.168475\n", + "┃ coef_cars1_asc_san_francisco 0.324519\n", + "┃ coef_cars1_auto_time_saving_per_worker 0.394451\n", + "┃ ... \n", + "┃ coef_retail_auto_no_workers 0.039844\n", + "┃ coef_retail_auto_workers 0.155792\n", + "┃ coef_retail_non_motor -0.030000\n", + "┃ coef_retail_transit_no_workers -0.307701\n", + "┃ coef_retail_transit_workers -0.524658\n", + "┃ Length: 66, dtype: float64\n", + "┣ logloss: 0.924274751334728\n", + "┣ d_logloss: coef_cars1_asc 0.000053\n", + "┃ coef_cars1_asc_county -0.000009\n", + "┃ coef_cars1_asc_marin -0.000064\n", + "┃ coef_cars1_asc_san_francisco -0.000159\n", + "┃ coef_cars1_auto_time_saving_per_worker 0.000140\n", + "┃ ... \n", + "┃ coef_retail_auto_no_workers 0.000018\n", + "┃ coef_retail_auto_workers -0.000001\n", + "┃ coef_retail_non_motor 0.000000\n", + "┃ coef_retail_transit_no_workers -0.000061\n", + "┃ coef_retail_transit_workers -0.000007\n", + "┃ Length: 66, dtype: float64\n", + "┣ nit: 67\n", + "┣ nfev: 84\n", + "┣ njev: 67\n", + "┣ status: 0\n", + "┣ message: 'Optimization terminated successfully'\n", + "┣ success: True\n", + "┣ elapsed_time: datetime.timedelta(seconds=1, microseconds=497985)\n", + "┣ method: 'slsqp'\n", + "┣ n_cases: 20000\n", + "┣ iteration_number: 67\n", + "┣ loglike: -18485.49502669456" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "### Write the model estimation report, including coefficient t-statistic and log likelihood" + "model.estimate()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Estimated coefficients" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "metadata": {}, "outputs": [ { "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ValueStd Errt StatSignifNull ValueConstrained
Parameter      
coef_cars1_asc 1.34 0.941 1.42 0.00
coef_cars1_asc_county-0.656 0.158-4.14*** 0.00
coef_cars1_asc_marin-0.168 0.106-1.58 0.00
coef_cars1_asc_san_francisco 0.325 0.0979 3.31*** 0.00
coef_cars1_auto_time_saving_per_worker 0.394 0.188 2.10* 0.00
coef_cars1_density_0_10_no_workers 0.00 0.00 NA 0.00fixed value
coef_cars1_density_10_up_no_workers-0.0145 0.00339-4.27*** 0.00
coef_cars1_density_10_up_workers-0.0183 0.00271-6.75*** 0.00
coef_cars1_drivers_2 0.00 0.00 NA 0.00fixed value
coef_cars1_drivers_3 0.00 0.00 NA 0.00fixed value
coef_cars1_drivers_4_up 2.01 0.317 6.35*** 0.00
coef_cars1_hh_income_0_30k 0.0456 0.00298 15.29*** 0.00
coef_cars1_hh_income_30_up 0.00 0.00 NA 0.00fixed value
coef_cars1_num_workers_clip_3 0.00 0.00 NA 0.00fixed value
coef_cars1_persons_16_17 0.00 0.00 NA 0.00fixed value
coef_cars1_persons_18_24-0.476 0.0586-8.11*** 0.00
coef_cars1_persons_25_34 0.00 0.00 NA 0.00fixed value
coef_cars1_presence_children_0_4 0.487 0.130 3.75*** 0.00
coef_cars1_presence_children_5_17 0.0390 0.0934 0.42 0.00
coef_cars234_asc_marin 0.00 0.00 NA 0.00fixed value
coef_cars234_presence_children_0_4 0.834 0.137 6.10*** 0.00
coef_cars2_asc-0.817 0.944-0.87 0.00
coef_cars2_asc_county-0.534 0.166-3.22** 0.00
coef_cars2_asc_san_francisco 0.395 0.123 3.22** 0.00
coef_cars2_auto_time_saving_per_worker 0.626 0.197 3.18** 0.00
coef_cars2_density_0_10_no_workers-0.189 0.0118-16.03*** 0.00
coef_cars2_density_10_up_no_workers-0.119 0.0117-10.12*** 0.00
coef_cars2_drivers_2 2.88 0.0602 47.87*** 0.00
coef_cars2_drivers_3 3.46 0.0971 35.68*** 0.00
coef_cars2_drivers_4_up 6.18 0.332 18.61*** 0.00
coef_cars2_hh_income_0_30k 0.0557 0.00419 13.31*** 0.00
coef_cars2_hh_income_30_up 0.00709 0.000782 9.07*** 0.00
coef_cars2_num_workers_clip_3 0.317 0.0420 7.55*** 0.00
coef_cars2_persons_16_17-0.845 0.0976-8.66*** 0.00
coef_cars2_persons_18_24-0.990 0.0659-15.04*** 0.00
coef_cars2_persons_25_34-0.379 0.0322-11.77*** 0.00
coef_cars2_presence_children_5_17 0.327 0.104 3.16** 0.00
coef_cars34_asc_county-0.261 0.173-1.50 0.00
coef_cars34_asc_san_francisco 0.0559 0.161 0.35 0.00
coef_cars34_density_0_10_no_workers-0.343 0.0182-18.81*** 0.00
coef_cars34_density_10_up_no_workers-0.255 0.0544-4.69*** 0.00
coef_cars34_persons_16_17-1.82 0.113-16.13*** 0.00
coef_cars34_persons_18_24-1.01 0.0695-14.60*** 0.00
coef_cars34_persons_25_34-0.745 0.0402-18.56*** 0.00
coef_cars34_presence_children_5_17 0.542 0.112 4.83*** 0.00
coef_cars3_asc-3.43 0.962-3.56*** 0.00
coef_cars3_auto_time_saving_per_worker 0.538 0.215 2.50* 0.00
coef_cars3_drivers_2 3.33 0.151 21.99*** 0.00
coef_cars3_drivers_3 5.70 0.170 33.48*** 0.00
coef_cars3_drivers_4_up 8.64 0.364 23.72*** 0.00
coef_cars3_hh_income_0_30k 0.0644 0.00668 9.65*** 0.00
coef_cars3_hh_income_30_up 0.00913 0.00103 8.88*** 0.00
coef_cars3_num_workers_clip_3 0.650 0.0519 12.53*** 0.00
coef_cars4_asc-5.53 1.02-5.42*** 0.00
coef_cars4_auto_time_saving_per_worker 0.834 0.249 3.35*** 0.00
coef_cars4_drivers_2 2.65 0.287 9.23*** 0.00
coef_cars4_drivers_3 5.33 0.297 17.95*** 0.00
coef_cars4_drivers_4_up 9.42 0.436 21.59*** 0.00
coef_cars4_hh_income_0_30k 0.0718 0.0111 6.46*** 0.00
coef_cars4_hh_income_30_up 0.0132 0.00132 10.00*** 0.00
coef_cars4_num_workers_clip_3 0.949 0.0646 14.69*** 0.00
coef_retail_auto_no_workers 0.0398 0.101 0.39 0.00
coef_retail_auto_workers 0.156 0.102 1.52 0.00
coef_retail_non_motor-0.0300 0.00 NA 0.00fixed value
coef_retail_transit_no_workers-0.308 0.0295-10.44*** 0.00
coef_retail_transit_workers-0.525 0.0396-13.24*** 0.00
\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.parameter_summary()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "TojXWivZsx7M" + }, + "source": [ + "# Output Estimation Results" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "from activitysim.estimation.larch import update_coefficients\n", + "result_dir = data.edb_directory/\"estimated\"\n", + "update_coefficients(\n", + " model, data, result_dir,\n", + " output_file=f\"{modelname}_coefficients_revised.csv\",\n", + ");" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Write the model estimation report, including coefficient t-statistic and log likelihood" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "model.to_xlsx(\n", + " result_dir/f\"{modelname}_model_estimation.xlsx\", \n", + " data_statistics=False,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Next Steps\n", + "\n", + "The final step is to either manually or automatically copy the `*_coefficients_revised.csv` file to the configs folder, rename it to `*_coefficients.csv`, and run ActivitySim in simulation mode." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
coefficient_namevalueconstrain
0coef_cars1_drivers_20.000000T
1coef_cars1_drivers_30.000000T
2coef_cars1_persons_16_170.000000T
3coef_cars234_asc_marin0.000000T
4coef_cars1_persons_25_340.000000T
............
62coef_cars4_drivers_35.329905F
63coef_cars3_drivers_35.702014F
64coef_cars2_drivers_4_up6.182053F
65coef_cars3_drivers_4_up8.643466F
66coef_cars4_drivers_4_up9.423154F
\n", + "

67 rows × 3 columns

\n", + "
" + ], + "text/plain": [ + " coefficient_name value constrain\n", + "0 coef_cars1_drivers_2 0.000000 T\n", + "1 coef_cars1_drivers_3 0.000000 T\n", + "2 coef_cars1_persons_16_17 0.000000 T\n", + "3 coef_cars234_asc_marin 0.000000 T\n", + "4 coef_cars1_persons_25_34 0.000000 T\n", + ".. ... ... ...\n", + "62 coef_cars4_drivers_3 5.329905 F\n", + "63 coef_cars3_drivers_3 5.702014 F\n", + "64 coef_cars2_drivers_4_up 6.182053 F\n", + "65 coef_cars3_drivers_4_up 8.643466 F\n", + "66 coef_cars4_drivers_4_up 9.423154 F\n", + "\n", + "[67 rows x 3 columns]" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.read_csv(result_dir/f\"{modelname}_coefficients_revised.csv\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Modify Spec\n", + "\n", + "Here, we will demonstrate the process of re-estimating the model with a modified\n", + "SPEC file. This does *not* require re-running ActivitySim, it just requires\n", + "changing the SPEC file and re-running the Larch estimation only.\n", + "\n", + "The `backup` command we ran earlier made a backup copy of the\n", + "original spec file in the EDB directory.\n", + "This was not strictly necessary, but since we're about to modify it and\n", + "we may want undo our changes, it can be handy to keep a copy of the\n", + "original spec file around. Since we already have a backup copy, we'll make some \n", + "changes directly in the SPEC file. As an example here, we're going\n", + "to re-write the household income section of the file, to change the piecewise \n", + "linear utility from 3 segments to 4. We'll move the breakpoints and rename some\n", + "coefficients to accomodate the change. As above, for this demo we are editing \n", + "the SPEC file using Python code to make the changes, but a user does not need\n", + "to change the file using Python; any CSV editor (e.g. Excel) can be used. " + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "with open(data.edb_directory / \"auto_ownership_SPEC.csv\") as f:\n", + " raw_spec = f.read()\n", + "\n", + "orig_lines = \"\"\"util_hh_income_0_30k,\"Piecewise Linear household income, $0-30k\",\"@df.income_in_thousands.clip(0, 30)\",,coef_cars1_hh_income_0_30k,coef_cars2_hh_income_0_30k,coef_cars3_hh_income_0_30k,coef_cars4_hh_income_0_30k\n", + "util_hh_income_30_75k,\"Piecewise Linear household income, $30-75k\",\"@(df.income_in_thousands-30).clip(0, 45)\",,coef_cars1_hh_income_30_up,coef_cars2_hh_income_30_up,coef_cars3_hh_income_30_up,coef_cars4_hh_income_30_up\n", + "util_hh_income_75k_up,\"Piecewise Linear household income, $75k+, capped at $125k\",\"@(df.income_in_thousands-75).clip(0, 50)\",,coef_cars1_hh_income_30_up,coef_cars2_hh_income_30_up,coef_cars3_hh_income_30_up,coef_cars4_hh_income_30_up\"\"\"\n", + "\n", + "repl_lines = \"\"\"util_hh_income_0_25k,\"Piecewise Linear household income, $0-25k\",\"@df.income_in_thousands.clip(0, 25)\",,coef_cars1_hh_income_0_25k,coef_cars2_hh_income_0_25k,coef_cars3_hh_income_0_25k,coef_cars4_hh_income_0_25k\n", + "util_hh_income_25_50k,\"Piecewise Linear household income, $25-50k\",\"@(df.income_in_thousands-25).clip(0, 25)\",,coef_cars1_hh_income_25_50,coef_cars2_hh_income_25_50,coef_cars3_hh_income_25_50,coef_cars4_hh_income_25_50\n", + "util_hh_income_50_75k,\"Piecewise Linear household income, $50-75k\",\"@(df.income_in_thousands-50).clip(0, 25)\",,coef_cars1_hh_income_50_75,coef_cars2_hh_income_50_75,coef_cars3_hh_income_50_75,coef_cars4_hh_income_50_75\n", + "util_hh_income_75k_150k,\"Piecewise Linear household income, $75k+, capped at $150k\",\"@(df.income_in_thousands-75).clip(0, 75)\",,coef_cars1_hh_income_75_up,coef_cars2_hh_income_75_up,coef_cars3_hh_income_75_up,coef_cars4_hh_income_75_up\"\"\"\n", + "\n", + "raw_spec = raw_spec.replace(orig_lines, repl_lines)\n", + "\n", + "with open(data.edb_directory / \"auto_ownership_SPEC.csv\", mode=\"w\") as f:\n", + " f.write(raw_spec)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### WARNING\n", + "\n", + "The re-estimation process will use the variable in the estimation data bundle (EDB) given by the \"Label\" \n", + "column of the SPEC, if a variable with that exact name exists in the EDB. Otherwise, it will attempt to\n", + "re-evaluate the contents of the \"Expression\" column using Sharrow, and the other data in the EDB. Thus,\n", + "the expression must only reference other data that is available explicitly in the EDB; to use \n", + "variables that ActivitySim could access but which have not been written to the EDB, it will be necessary\n", + "to go back to ActivitySim and re-run in estimation mode.\n", + "\n", + "Also, the estimation functions do not inherently know what the \"original\" spec file contained, and rely\n", + "entirely on the presence or absence of an exact match on the \"Label\" column to find pre-evaluated expressions.\n", + "It is imcumbent on the user to ensure that any material changes the Expression column are also reflected\n", + "by a new unique name in the \"Label\" column." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now to re-estimate the model, we just re-run the same steps as the original estimation above." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "loading from output-est-mode/estimation_data_bundle/auto_ownership/auto_ownership_coefficients.csv\n", + "loading spec from output-est-mode/estimation_data_bundle/auto_ownership/auto_ownership_SPEC.csv\n", + "loading from output-est-mode/estimation_data_bundle/auto_ownership/auto_ownership_values_combined.parquet\n" + ] + } + ], + "source": [ + "model2, data2 = component_model(modelname, edb_directory=data.edb_directory, return_data=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You may notice in the utility functions shown below, all of the unadulterated lines of the \n", + "spec file correlate with utility terms that are simple `X.label` data items, which are \n", + "stored as pre-computed data variables in the EDB. Our modified lines, however, are now\n", + "showing the complete expression that will be freshly evaluated by Larch using Sharrow." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
<larch.DictOfLinearFunction>
altformula
1
<Empty LinearFunction>
2
P.coef_cars1_drivers_2 * X.util_drivers_2
+ P.coef_cars1_drivers_3 * X.util_drivers_3
+ P.coef_cars1_drivers_4_up * X.util_drivers_4_up
+ P.coef_cars1_persons_16_17 * X.util_persons_16_17
+ P.coef_cars1_persons_18_24 * X.util_persons_18_24
+ P.coef_cars1_persons_25_34 * X.util_persons_25_34
+ P.coef_cars1_presence_children_0_4 * X.util_presence_children_0_4
+ P.coef_cars1_presence_children_5_17 * X.util_presence_children_5_17
+ P.coef_cars1_num_workers_clip_3 * X.util_num_workers_clip_3
+ P.coef_cars1_hh_income_0_25k * X('df.income_in_thousands.clip(0, 25)')
+ P.coef_cars1_hh_income_25_50 * X('(df.income_in_thousands-25).clip(0, 25)')
+ P.coef_cars1_hh_income_50_75 * X('(df.income_in_thousands-50).clip(0, 25)')
+ P.coef_cars1_hh_income_75_up * X('(df.income_in_thousands-75).clip(0, 75)')
+ P.coef_cars1_density_0_10_no_workers * X.util_density_0_10_no_workers
+ P.coef_cars1_density_10_up_no_workers * X.util_density_10_up_no_workers
+ P.coef_cars1_density_0_10_no_workers * X.util_density_0_10_workers
+ P.coef_cars1_density_10_up_workers * X.util_density_10_up_workers
+ P.coef_cars1_asc * X.util_asc
+ P.coef_cars1_asc_san_francisco * X.util_asc_san_francisco
+ P.coef_cars1_asc_county * X.util_asc_solano
+ P.coef_cars1_asc_county * X.util_asc_napa
+ P.coef_cars1_asc_county * X.util_asc_sonoma
+ P.coef_cars1_asc_marin * X.util_asc_marin
+ P.coef_retail_auto_no_workers * X.util_retail_auto_no_workers
+ P.coef_retail_auto_workers * X.util_retail_auto_workers
+ P.coef_retail_transit_no_workers * X.util_retail_transit_no_workers
+ P.coef_retail_transit_workers * X.util_retail_transit_workers
+ P.coef_retail_non_motor * X.util_retail_non_motor_no_workers
+ P.coef_retail_non_motor * X.util_retail_non_motor_workers
+ P.coef_cars1_auto_time_saving_per_worker * X.util_auto_time_saving_per_worker
3
P.coef_cars2_drivers_2 * X.util_drivers_2
+ P.coef_cars2_drivers_3 * X.util_drivers_3
+ P.coef_cars2_drivers_4_up * X.util_drivers_4_up
+ P.coef_cars2_persons_16_17 * X.util_persons_16_17
+ P.coef_cars2_persons_18_24 * X.util_persons_18_24
+ P.coef_cars2_persons_25_34 * X.util_persons_25_34
+ P.coef_cars234_presence_children_0_4 * X.util_presence_children_0_4
+ P.coef_cars2_presence_children_5_17 * X.util_presence_children_5_17
+ P.coef_cars2_num_workers_clip_3 * X.util_num_workers_clip_3
+ P.coef_cars2_hh_income_0_25k * X('df.income_in_thousands.clip(0, 25)')
+ P.coef_cars2_hh_income_25_50 * X('(df.income_in_thousands-25).clip(0, 25)')
+ P.coef_cars2_hh_income_50_75 * X('(df.income_in_thousands-50).clip(0, 25)')
+ P.coef_cars2_hh_income_75_up * X('(df.income_in_thousands-75).clip(0, 75)')
+ P.coef_cars2_density_0_10_no_workers * X.util_density_0_10_no_workers
+ P.coef_cars2_density_10_up_no_workers * X.util_density_10_up_no_workers
+ P.coef_cars2_density_0_10_no_workers * X.util_density_0_10_workers
+ P.coef_cars2_density_10_up_no_workers * X.util_density_10_up_workers
+ P.coef_cars2_asc * X.util_asc
+ P.coef_cars2_asc_san_francisco * X.util_asc_san_francisco
+ P.coef_cars2_asc_county * X.util_asc_solano
+ P.coef_cars2_asc_county * X.util_asc_napa
+ P.coef_cars2_asc_county * X.util_asc_sonoma
+ P.coef_cars234_asc_marin * X.util_asc_marin
+ P.coef_retail_auto_no_workers * X.util_retail_auto_no_workers
+ P.coef_retail_auto_workers * X.util_retail_auto_workers
+ P.coef_retail_transit_no_workers * X.util_retail_transit_no_workers
+ P.coef_retail_transit_workers * X.util_retail_transit_workers
+ P.coef_retail_non_motor * X.util_retail_non_motor_no_workers
+ P.coef_retail_non_motor * X.util_retail_non_motor_workers
+ P.coef_cars2_auto_time_saving_per_worker * X.util_auto_time_saving_per_worker
4
P.coef_cars3_drivers_2 * X.util_drivers_2
+ P.coef_cars3_drivers_3 * X.util_drivers_3
+ P.coef_cars3_drivers_4_up * X.util_drivers_4_up
+ P.coef_cars34_persons_16_17 * X.util_persons_16_17
+ P.coef_cars34_persons_18_24 * X.util_persons_18_24
+ P.coef_cars34_persons_25_34 * X.util_persons_25_34
+ P.coef_cars234_presence_children_0_4 * X.util_presence_children_0_4
+ P.coef_cars34_presence_children_5_17 * X.util_presence_children_5_17
+ P.coef_cars3_num_workers_clip_3 * X.util_num_workers_clip_3
+ P.coef_cars3_hh_income_0_25k * X('df.income_in_thousands.clip(0, 25)')
+ P.coef_cars3_hh_income_25_50 * X('(df.income_in_thousands-25).clip(0, 25)')
+ P.coef_cars3_hh_income_50_75 * X('(df.income_in_thousands-50).clip(0, 25)')
+ P.coef_cars3_hh_income_75_up * X('(df.income_in_thousands-75).clip(0, 75)')
+ P.coef_cars34_density_0_10_no_workers * X.util_density_0_10_no_workers
+ P.coef_cars34_density_10_up_no_workers * X.util_density_10_up_no_workers
+ P.coef_cars34_density_0_10_no_workers * X.util_density_0_10_workers
+ P.coef_cars34_density_10_up_no_workers * X.util_density_10_up_workers
+ P.coef_cars3_asc * X.util_asc
+ P.coef_cars34_asc_san_francisco * X.util_asc_san_francisco
+ P.coef_cars34_asc_county * X.util_asc_solano
+ P.coef_cars34_asc_county * X.util_asc_napa
+ P.coef_cars34_asc_county * X.util_asc_sonoma
+ P.coef_cars234_asc_marin * X.util_asc_marin
+ P.coef_retail_auto_no_workers * X.util_retail_auto_no_workers
+ P.coef_retail_auto_workers * X.util_retail_auto_workers
+ P.coef_retail_transit_no_workers * X.util_retail_transit_no_workers
+ P.coef_retail_transit_workers * X.util_retail_transit_workers
+ P.coef_retail_non_motor * X.util_retail_non_motor_no_workers
+ P.coef_retail_non_motor * X.util_retail_non_motor_workers
+ P.coef_cars3_auto_time_saving_per_worker * X.util_auto_time_saving_per_worker
5
P.coef_cars4_drivers_2 * X.util_drivers_2
+ P.coef_cars4_drivers_3 * X.util_drivers_3
+ P.coef_cars4_drivers_4_up * X.util_drivers_4_up
+ P.coef_cars34_persons_16_17 * X.util_persons_16_17
+ P.coef_cars34_persons_18_24 * X.util_persons_18_24
+ P.coef_cars34_persons_25_34 * X.util_persons_25_34
+ P.coef_cars234_presence_children_0_4 * X.util_presence_children_0_4
+ P.coef_cars34_presence_children_5_17 * X.util_presence_children_5_17
+ P.coef_cars4_num_workers_clip_3 * X.util_num_workers_clip_3
+ P.coef_cars4_hh_income_0_25k * X('df.income_in_thousands.clip(0, 25)')
+ P.coef_cars4_hh_income_25_50 * X('(df.income_in_thousands-25).clip(0, 25)')
+ P.coef_cars4_hh_income_50_75 * X('(df.income_in_thousands-50).clip(0, 25)')
+ P.coef_cars4_hh_income_75_up * X('(df.income_in_thousands-75).clip(0, 75)')
+ P.coef_cars34_density_0_10_no_workers * X.util_density_0_10_no_workers
+ P.coef_cars34_density_10_up_no_workers * X.util_density_10_up_no_workers
+ P.coef_cars34_density_0_10_no_workers * X.util_density_0_10_workers
+ P.coef_cars34_density_10_up_no_workers * X.util_density_10_up_workers
+ P.coef_cars4_asc * X.util_asc
+ P.coef_cars34_asc_san_francisco * X.util_asc_san_francisco
+ P.coef_cars34_asc_county * X.util_asc_solano
+ P.coef_cars34_asc_county * X.util_asc_napa
+ P.coef_cars34_asc_county * X.util_asc_sonoma
+ P.coef_cars234_asc_marin * X.util_asc_marin
+ P.coef_retail_auto_no_workers * X.util_retail_auto_no_workers
+ P.coef_retail_auto_workers * X.util_retail_auto_workers
+ P.coef_retail_transit_no_workers * X.util_retail_transit_no_workers
+ P.coef_retail_transit_workers * X.util_retail_transit_workers
+ P.coef_retail_non_motor * X.util_retail_non_motor_no_workers
+ P.coef_retail_non_motor * X.util_retail_non_motor_workers
+ P.coef_cars4_auto_time_saving_per_worker * X.util_auto_time_saving_per_worker
" + ], + "text/plain": [ + "DictOfLinearFunction({1: , 2: P.coef_cars1_drivers_2 * X.util_drivers_2\n", + "+ P.coef_cars1_drivers_3 * X.util_drivers_3\n", + "+ P.coef_cars1_drivers_4_up * X.util_drivers_4_up\n", + "+ P.coef_cars1_persons_16_17 * X.util_persons_16_17\n", + "+ P.coef_cars1_persons_18_24 * X.util_persons_18_24\n", + "+ P.coef_cars1_persons_25_34 * X.util_persons_25_34\n", + "+ P.coef_cars1_presence_children_0_4 * X.util_presence_children_0_4\n", + "+ P.coef_cars1_presence_children_5_17 * X.util_presence_children_5_17\n", + "+ P.coef_cars1_num_workers_clip_3 * X.util_num_workers_clip_3\n", + "+ P.coef_cars1_hh_income_0_25k * X('df.income_in_thousands.clip(0, 25)')\n", + "+ P.coef_cars1_hh_income_25_50 * X('(df.income_in_thousands-25).clip(0, 25)')\n", + "+ P.coef_cars1_hh_income_50_75 * X('(df.income_in_thousands-50).clip(0, 25)')\n", + "+ P.coef_cars1_hh_income_75_up * X('(df.income_in_thousands-75).clip(0, 75)')\n", + "+ P.coef_cars1_density_0_10_no_workers * X.util_density_0_10_no_workers\n", + "+ P.coef_cars1_density_10_up_no_workers * X.util_density_10_up_no_workers\n", + "+ P.coef_cars1_density_0_10_no_workers * X.util_density_0_10_workers\n", + "+ P.coef_cars1_density_10_up_workers * X.util_density_10_up_workers\n", + "+ P.coef_cars1_asc * X.util_asc\n", + "+ P.coef_cars1_asc_san_francisco * X.util_asc_san_francisco\n", + "+ P.coef_cars1_asc_county * X.util_asc_solano\n", + "+ P.coef_cars1_asc_county * X.util_asc_napa\n", + "+ P.coef_cars1_asc_county * X.util_asc_sonoma\n", + "+ P.coef_cars1_asc_marin * X.util_asc_marin\n", + "+ P.coef_retail_auto_no_workers * X.util_retail_auto_no_workers\n", + "+ P.coef_retail_auto_workers * X.util_retail_auto_workers\n", + "+ P.coef_retail_transit_no_workers * X.util_retail_transit_no_workers\n", + "+ P.coef_retail_transit_workers * X.util_retail_transit_workers\n", + "+ P.coef_retail_non_motor * X.util_retail_non_motor_no_workers\n", + "+ P.coef_retail_non_motor * X.util_retail_non_motor_workers\n", + "+ P.coef_cars1_auto_time_saving_per_worker * X.util_auto_time_saving_per_worker, 3: P.coef_cars2_drivers_2 * X.util_drivers_2\n", + "+ P.coef_cars2_drivers_3 * X.util_drivers_3\n", + "+ P.coef_cars2_drivers_4_up * X.util_drivers_4_up\n", + "+ P.coef_cars2_persons_16_17 * X.util_persons_16_17\n", + "+ P.coef_cars2_persons_18_24 * X.util_persons_18_24\n", + "+ P.coef_cars2_persons_25_34 * X.util_persons_25_34\n", + "+ P.coef_cars234_presence_children_0_4 * X.util_presence_children_0_4\n", + "+ P.coef_cars2_presence_children_5_17 * X.util_presence_children_5_17\n", + "+ P.coef_cars2_num_workers_clip_3 * X.util_num_workers_clip_3\n", + "+ P.coef_cars2_hh_income_0_25k * X('df.income_in_thousands.clip(0, 25)')\n", + "+ P.coef_cars2_hh_income_25_50 * X('(df.income_in_thousands-25).clip(0, 25)')\n", + "+ P.coef_cars2_hh_income_50_75 * X('(df.income_in_thousands-50).clip(0, 25)')\n", + "+ P.coef_cars2_hh_income_75_up * X('(df.income_in_thousands-75).clip(0, 75)')\n", + "+ P.coef_cars2_density_0_10_no_workers * X.util_density_0_10_no_workers\n", + "+ P.coef_cars2_density_10_up_no_workers * X.util_density_10_up_no_workers\n", + "+ P.coef_cars2_density_0_10_no_workers * X.util_density_0_10_workers\n", + "+ P.coef_cars2_density_10_up_no_workers * X.util_density_10_up_workers\n", + "+ P.coef_cars2_asc * X.util_asc\n", + "+ P.coef_cars2_asc_san_francisco * X.util_asc_san_francisco\n", + "+ P.coef_cars2_asc_county * X.util_asc_solano\n", + "+ P.coef_cars2_asc_county * X.util_asc_napa\n", + "+ P.coef_cars2_asc_county * X.util_asc_sonoma\n", + "+ P.coef_cars234_asc_marin * X.util_asc_marin\n", + "+ P.coef_retail_auto_no_workers * X.util_retail_auto_no_workers\n", + "+ P.coef_retail_auto_workers * X.util_retail_auto_workers\n", + "+ P.coef_retail_transit_no_workers * X.util_retail_transit_no_workers\n", + "+ P.coef_retail_transit_workers * X.util_retail_transit_workers\n", + "+ P.coef_retail_non_motor * X.util_retail_non_motor_no_workers\n", + "+ P.coef_retail_non_motor * X.util_retail_non_motor_workers\n", + "+ P.coef_cars2_auto_time_saving_per_worker * X.util_auto_time_saving_per_worker, 4: P.coef_cars3_drivers_2 * X.util_drivers_2\n", + "+ P.coef_cars3_drivers_3 * X.util_drivers_3\n", + "+ P.coef_cars3_drivers_4_up * X.util_drivers_4_up\n", + "+ P.coef_cars34_persons_16_17 * X.util_persons_16_17\n", + "+ P.coef_cars34_persons_18_24 * X.util_persons_18_24\n", + "+ P.coef_cars34_persons_25_34 * X.util_persons_25_34\n", + "+ P.coef_cars234_presence_children_0_4 * X.util_presence_children_0_4\n", + "+ P.coef_cars34_presence_children_5_17 * X.util_presence_children_5_17\n", + "+ P.coef_cars3_num_workers_clip_3 * X.util_num_workers_clip_3\n", + "+ P.coef_cars3_hh_income_0_25k * X('df.income_in_thousands.clip(0, 25)')\n", + "+ P.coef_cars3_hh_income_25_50 * X('(df.income_in_thousands-25).clip(0, 25)')\n", + "+ P.coef_cars3_hh_income_50_75 * X('(df.income_in_thousands-50).clip(0, 25)')\n", + "+ P.coef_cars3_hh_income_75_up * X('(df.income_in_thousands-75).clip(0, 75)')\n", + "+ P.coef_cars34_density_0_10_no_workers * X.util_density_0_10_no_workers\n", + "+ P.coef_cars34_density_10_up_no_workers * X.util_density_10_up_no_workers\n", + "+ P.coef_cars34_density_0_10_no_workers * X.util_density_0_10_workers\n", + "+ P.coef_cars34_density_10_up_no_workers * X.util_density_10_up_workers\n", + "+ P.coef_cars3_asc * X.util_asc\n", + "+ P.coef_cars34_asc_san_francisco * X.util_asc_san_francisco\n", + "+ P.coef_cars34_asc_county * X.util_asc_solano\n", + "+ P.coef_cars34_asc_county * X.util_asc_napa\n", + "+ P.coef_cars34_asc_county * X.util_asc_sonoma\n", + "+ P.coef_cars234_asc_marin * X.util_asc_marin\n", + "+ P.coef_retail_auto_no_workers * X.util_retail_auto_no_workers\n", + "+ P.coef_retail_auto_workers * X.util_retail_auto_workers\n", + "+ P.coef_retail_transit_no_workers * X.util_retail_transit_no_workers\n", + "+ P.coef_retail_transit_workers * X.util_retail_transit_workers\n", + "+ P.coef_retail_non_motor * X.util_retail_non_motor_no_workers\n", + "+ P.coef_retail_non_motor * X.util_retail_non_motor_workers\n", + "+ P.coef_cars3_auto_time_saving_per_worker * X.util_auto_time_saving_per_worker, 5: P.coef_cars4_drivers_2 * X.util_drivers_2\n", + "+ P.coef_cars4_drivers_3 * X.util_drivers_3\n", + "+ P.coef_cars4_drivers_4_up * X.util_drivers_4_up\n", + "+ P.coef_cars34_persons_16_17 * X.util_persons_16_17\n", + "+ P.coef_cars34_persons_18_24 * X.util_persons_18_24\n", + "+ P.coef_cars34_persons_25_34 * X.util_persons_25_34\n", + "+ P.coef_cars234_presence_children_0_4 * X.util_presence_children_0_4\n", + "+ P.coef_cars34_presence_children_5_17 * X.util_presence_children_5_17\n", + "+ P.coef_cars4_num_workers_clip_3 * X.util_num_workers_clip_3\n", + "+ P.coef_cars4_hh_income_0_25k * X('df.income_in_thousands.clip(0, 25)')\n", + "+ P.coef_cars4_hh_income_25_50 * X('(df.income_in_thousands-25).clip(0, 25)')\n", + "+ P.coef_cars4_hh_income_50_75 * X('(df.income_in_thousands-50).clip(0, 25)')\n", + "+ P.coef_cars4_hh_income_75_up * X('(df.income_in_thousands-75).clip(0, 75)')\n", + "+ P.coef_cars34_density_0_10_no_workers * X.util_density_0_10_no_workers\n", + "+ P.coef_cars34_density_10_up_no_workers * X.util_density_10_up_no_workers\n", + "+ P.coef_cars34_density_0_10_no_workers * X.util_density_0_10_workers\n", + "+ P.coef_cars34_density_10_up_no_workers * X.util_density_10_up_workers\n", + "+ P.coef_cars4_asc * X.util_asc\n", + "+ P.coef_cars34_asc_san_francisco * X.util_asc_san_francisco\n", + "+ P.coef_cars34_asc_county * X.util_asc_solano\n", + "+ P.coef_cars34_asc_county * X.util_asc_napa\n", + "+ P.coef_cars34_asc_county * X.util_asc_sonoma\n", + "+ P.coef_cars234_asc_marin * X.util_asc_marin\n", + "+ P.coef_retail_auto_no_workers * X.util_retail_auto_no_workers\n", + "+ P.coef_retail_auto_workers * X.util_retail_auto_workers\n", + "+ P.coef_retail_transit_no_workers * X.util_retail_transit_no_workers\n", + "+ P.coef_retail_transit_workers * X.util_retail_transit_workers\n", + "+ P.coef_retail_non_motor * X.util_retail_non_motor_no_workers\n", + "+ P.coef_retail_non_motor * X.util_retail_non_motor_workers\n", + "+ P.coef_cars4_auto_time_saving_per_worker * X.util_auto_time_saving_per_worker})" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model2.utility_co" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "

Iteration 077 [Optimization terminated successfully]

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "

Best LL = -18480.69200834759

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
valuebestinitvalueminimummaximumnullvalueholdfast
param_name
coef_cars1_asc1.4519301.4519301.1865-50.0050.000.00
coef_cars1_asc_county-0.669928-0.669928-0.5660-50.0050.000.00
coef_cars1_asc_marin-0.170886-0.170886-0.2434-50.0050.000.00
coef_cars1_asc_san_francisco0.3172280.3172280.4259-50.0050.000.00
coef_cars1_auto_time_saving_per_worker0.3802890.3802890.4707-50.0050.000.00
........................
coef_retail_auto_no_workers0.0278530.0278530.0626-50.0050.000.00
coef_retail_auto_workers0.1430320.1430320.1646-50.0050.000.00
coef_retail_non_motor-0.030000-0.030000-0.0300-0.03-0.030.01
coef_retail_transit_no_workers-0.307531-0.307531-0.3053-50.0050.000.00
coef_retail_transit_workers-0.522486-0.522486-0.5117-50.0050.000.00
\n", + "

74 rows × 7 columns

\n", + "
" + ], + "text/plain": [ + " value best initvalue \\\n", + "param_name \n", + "coef_cars1_asc 1.451930 1.451930 1.1865 \n", + "coef_cars1_asc_county -0.669928 -0.669928 -0.5660 \n", + "coef_cars1_asc_marin -0.170886 -0.170886 -0.2434 \n", + "coef_cars1_asc_san_francisco 0.317228 0.317228 0.4259 \n", + "coef_cars1_auto_time_saving_per_worker 0.380289 0.380289 0.4707 \n", + "... ... ... ... \n", + "coef_retail_auto_no_workers 0.027853 0.027853 0.0626 \n", + "coef_retail_auto_workers 0.143032 0.143032 0.1646 \n", + "coef_retail_non_motor -0.030000 -0.030000 -0.0300 \n", + "coef_retail_transit_no_workers -0.307531 -0.307531 -0.3053 \n", + "coef_retail_transit_workers -0.522486 -0.522486 -0.5117 \n", + "\n", + " minimum maximum nullvalue holdfast \n", + "param_name \n", + "coef_cars1_asc -50.00 50.00 0.0 0 \n", + "coef_cars1_asc_county -50.00 50.00 0.0 0 \n", + "coef_cars1_asc_marin -50.00 50.00 0.0 0 \n", + "coef_cars1_asc_san_francisco -50.00 50.00 0.0 0 \n", + "coef_cars1_auto_time_saving_per_worker -50.00 50.00 0.0 0 \n", + "... ... ... ... ... \n", + "coef_retail_auto_no_workers -50.00 50.00 0.0 0 \n", + "coef_retail_auto_workers -50.00 50.00 0.0 0 \n", + "coef_retail_non_motor -0.03 -0.03 0.0 1 \n", + "coef_retail_transit_no_workers -50.00 50.00 0.0 0 \n", + "coef_retail_transit_workers -50.00 50.00 0.0 0 \n", + "\n", + "[74 rows x 7 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
keyvalue
x\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0
coef_cars1_asc1.451930
coef_cars1_asc_county-0.669928
coef_cars1_asc_marin-0.170886
coef_cars1_asc_san_francisco0.317228
coef_cars1_auto_time_saving_per_worker0.380289
coef_cars1_density_0_10_no_workers0.000000
coef_cars1_density_10_up_no_workers-0.014252
coef_cars1_density_10_up_workers-0.018450
coef_cars1_drivers_20.000000
coef_cars1_drivers_30.000000
coef_cars1_drivers_4_up1.993329
coef_cars1_hh_income_0_25k0.047122
coef_cars1_hh_income_25_500.006622
coef_cars1_hh_income_50_750.007920
coef_cars1_hh_income_75_up-0.002331
coef_cars1_num_workers_clip_30.000000
coef_cars1_persons_16_170.000000
coef_cars1_persons_18_24-0.473008
coef_cars1_persons_25_340.000000
coef_cars1_presence_children_0_40.494212
coef_cars1_presence_children_5_170.044213
coef_cars234_asc_marin0.000000
coef_cars234_presence_children_0_40.839737
coef_cars2_asc-0.751717
coef_cars2_asc_county-0.552884
coef_cars2_asc_san_francisco0.394107
coef_cars2_auto_time_saving_per_worker0.608005
coef_cars2_density_0_10_no_workers-0.190732
coef_cars2_density_10_up_no_workers-0.118593
coef_cars2_drivers_22.883229
coef_cars2_drivers_33.462629
coef_cars2_drivers_4_up6.177691
coef_cars2_hh_income_0_25k0.062963
coef_cars2_hh_income_25_500.007705
coef_cars2_hh_income_50_750.019152
coef_cars2_hh_income_75_up0.002677
coef_cars2_num_workers_clip_30.316577
coef_cars2_persons_16_17-0.851694
coef_cars2_persons_18_24-0.988962
coef_cars2_persons_25_34-0.375153
coef_cars2_presence_children_5_170.333678
coef_cars34_asc_county-0.272462
coef_cars34_asc_san_francisco0.042635
coef_cars34_density_0_10_no_workers-0.343379
coef_cars34_density_10_up_no_workers-0.254388
coef_cars34_persons_16_17-1.828782
coef_cars34_persons_18_24-1.015850
coef_cars34_persons_25_34-0.741201
coef_cars34_presence_children_5_170.545134
coef_cars3_asc-3.502778
coef_cars3_auto_time_saving_per_worker0.528275
coef_cars3_drivers_23.337821
coef_cars3_drivers_35.712040
coef_cars3_drivers_4_up8.649770
coef_cars3_hh_income_0_25k0.081492
coef_cars3_hh_income_25_500.001622
coef_cars3_hh_income_50_750.026796
coef_cars3_hh_income_75_up0.003811
coef_cars3_num_workers_clip_30.651693
coef_cars4_asc-5.633922
coef_cars4_auto_time_saving_per_worker0.825818
coef_cars4_drivers_22.636133
coef_cars4_drivers_35.304881
coef_cars4_drivers_4_up9.400424
coef_cars4_hh_income_0_25k0.095108
coef_cars4_hh_income_25_500.002764
coef_cars4_hh_income_50_750.027422
coef_cars4_hh_income_75_up0.008115
coef_cars4_num_workers_clip_30.957764
coef_retail_auto_no_workers0.027853
coef_retail_auto_workers0.143032
coef_retail_non_motor-0.030000
coef_retail_transit_no_workers-0.307531
coef_retail_transit_workers-0.522486
logloss0.9240346004173794
d_logloss\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0
coef_cars1_asc0.000104
coef_cars1_asc_county-0.000032
coef_cars1_asc_marin-0.000051
coef_cars1_asc_san_francisco-0.000097
coef_cars1_auto_time_saving_per_worker0.000056
coef_cars1_density_0_10_no_workers0.000000
coef_cars1_density_10_up_no_workers-0.000020
coef_cars1_density_10_up_workers0.000007
coef_cars1_drivers_20.000000
coef_cars1_drivers_30.000000
coef_cars1_drivers_4_up-0.000038
coef_cars1_hh_income_0_25k0.000119
coef_cars1_hh_income_25_500.000125
coef_cars1_hh_income_50_750.000092
coef_cars1_hh_income_75_up0.000120
coef_cars1_num_workers_clip_30.000000
coef_cars1_persons_16_170.000000
coef_cars1_persons_18_240.000042
coef_cars1_persons_25_340.000000
coef_cars1_presence_children_0_40.000002
coef_cars1_presence_children_5_170.000109
coef_cars234_asc_marin0.000000
coef_cars234_presence_children_0_4-0.000091
coef_cars2_asc-0.000074
coef_cars2_asc_county0.000006
coef_cars2_asc_san_francisco0.000069
coef_cars2_auto_time_saving_per_worker0.000086
coef_cars2_density_0_10_no_workers0.000073
coef_cars2_density_10_up_no_workers-0.000101
coef_cars2_drivers_2-0.000008
coef_cars2_drivers_30.000049
coef_cars2_drivers_4_up-0.000019
coef_cars2_hh_income_0_25k0.000382
coef_cars2_hh_income_25_500.000289
coef_cars2_hh_income_50_750.000444
coef_cars2_hh_income_75_up0.000750
coef_cars2_num_workers_clip_30.000106
coef_cars2_persons_16_170.000130
coef_cars2_persons_18_24-0.000274
coef_cars2_persons_25_34-0.000109
coef_cars2_presence_children_5_17-0.000037
coef_cars34_asc_county0.000005
coef_cars34_asc_san_francisco0.000055
coef_cars34_density_0_10_no_workers0.000004
coef_cars34_density_10_up_no_workers0.000024
coef_cars34_persons_16_17-0.000129
coef_cars34_persons_18_240.000166
coef_cars34_persons_25_34-0.000067
coef_cars34_presence_children_5_17-0.000139
coef_cars3_asc0.000107
coef_cars3_auto_time_saving_per_worker-0.000071
coef_cars3_drivers_20.000149
coef_cars3_drivers_30.000024
coef_cars3_drivers_4_up-0.000038
coef_cars3_hh_income_0_25k0.000005
coef_cars3_hh_income_25_500.000096
coef_cars3_hh_income_50_750.000072
coef_cars3_hh_income_75_up0.000185
coef_cars3_num_workers_clip_3-0.000169
coef_cars4_asc-0.000103
coef_cars4_auto_time_saving_per_worker-0.000058
coef_cars4_drivers_2-0.000040
coef_cars4_drivers_30.000093
coef_cars4_drivers_4_up-0.000046
coef_cars4_hh_income_0_25k-0.000523
coef_cars4_hh_income_25_50-0.000691
coef_cars4_hh_income_50_75-0.000513
coef_cars4_hh_income_75_up-0.001026
coef_cars4_num_workers_clip_3-0.000170
coef_retail_auto_no_workers0.000014
coef_retail_auto_workers0.000098
coef_retail_non_motor0.000000
coef_retail_transit_no_workers0.000133
coef_retail_transit_workers-0.000083
nit77
nfev102
njev77
status0
message'Optimization terminated successfully'
successTrue
elapsed_time0:00:01.723675
method'slsqp'
n_cases20000
iteration_number77
loglike-18480.69200834759
" + ], + "text/plain": [ + "┣ x: coef_cars1_asc 1.451930\n", + "┃ coef_cars1_asc_county -0.669928\n", + "┃ coef_cars1_asc_marin -0.170886\n", + "┃ coef_cars1_asc_san_francisco 0.317228\n", + "┃ coef_cars1_auto_time_saving_per_worker 0.380289\n", + "┃ ... \n", + "┃ coef_retail_auto_no_workers 0.027853\n", + "┃ coef_retail_auto_workers 0.143032\n", + "┃ coef_retail_non_motor -0.030000\n", + "┃ coef_retail_transit_no_workers -0.307531\n", + "┃ coef_retail_transit_workers -0.522486\n", + "┃ Length: 74, dtype: float64\n", + "┣ logloss: 0.9240346004173794\n", + "┣ d_logloss: coef_cars1_asc 0.000104\n", + "┃ coef_cars1_asc_county -0.000032\n", + "┃ coef_cars1_asc_marin -0.000051\n", + "┃ coef_cars1_asc_san_francisco -0.000097\n", + "┃ coef_cars1_auto_time_saving_per_worker 0.000056\n", + "┃ ... \n", + "┃ coef_retail_auto_no_workers 0.000014\n", + "┃ coef_retail_auto_workers 0.000098\n", + "┃ coef_retail_non_motor 0.000000\n", + "┃ coef_retail_transit_no_workers 0.000133\n", + "┃ coef_retail_transit_workers -0.000083\n", + "┃ Length: 74, dtype: float64\n", + "┣ nit: 77\n", + "┣ nfev: 102\n", + "┣ njev: 77\n", + "┣ status: 0\n", + "┣ message: 'Optimization terminated successfully'\n", + "┣ success: True\n", + "┣ elapsed_time: datetime.timedelta(seconds=1, microseconds=723675)\n", + "┣ method: 'slsqp'\n", + "┣ n_cases: 20000\n", + "┣ iteration_number: 77\n", + "┣ loglike: -18480.69200834759" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model2.estimate(maxiter=200)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can easily review the parameter estimates from the original and\n", + "revised models side by side to see what changed." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
modelmodel2
ValueStd Errt StatSignifNull ValueConstrainedValueStd Errt StatSignifNull ValueConstrained
Parameter
coef_cars1_asc1.340.9411.420.01.450.9461.540.0
coef_cars1_asc_county-0.6560.158-4.14***0.0-0.6700.159-4.22***0.0
coef_cars1_asc_marin-0.1680.106-1.580.0-0.1710.106-1.610.0
coef_cars1_asc_san_francisco0.3250.09793.31***0.00.3170.09823.23**0.0
coef_cars1_auto_time_saving_per_worker0.3940.1882.10*0.00.3800.1892.01*0.0
coef_cars1_density_0_10_no_workers0.000.00NA0.0fixed value0.000.00NA0.0fixed value
coef_cars1_density_10_up_no_workers-0.01450.00339-4.27***0.0-0.01430.00339-4.21***0.0
coef_cars1_density_10_up_workers-0.01830.00271-6.75***0.0-0.01840.00271-6.80***0.0
coef_cars1_drivers_20.000.00NA0.0fixed value0.000.00NA0.0fixed value
coef_cars1_drivers_30.000.00NA0.0fixed value0.000.00NA0.0fixed value
coef_cars1_drivers_4_up2.010.3176.35***0.01.990.3186.27***0.0
coef_cars1_hh_income_0_30k0.04560.0029815.29***0.0
coef_cars1_hh_income_30_up0.000.00NA0.0fixed value
coef_cars1_num_workers_clip_30.000.00NA0.0fixed value0.000.00NA0.0fixed value
coef_cars1_persons_16_170.000.00NA0.0fixed value0.000.00NA0.0fixed value
coef_cars1_persons_18_24-0.4760.0586-8.11***0.0-0.4730.0586-8.07***0.0
coef_cars1_persons_25_340.000.00NA0.0fixed value0.000.00NA0.0fixed value
coef_cars1_presence_children_0_40.4870.1303.75***0.00.4940.1303.80***0.0
coef_cars1_presence_children_5_170.03900.09340.420.00.04420.09350.470.0
coef_cars234_asc_marin0.000.00NA0.0fixed value0.000.00NA0.0fixed value
coef_cars234_presence_children_0_40.8340.1376.10***0.00.8400.1376.13***0.0
coef_cars2_asc-0.8170.944-0.870.0-0.7520.949-0.790.0
coef_cars2_asc_county-0.5340.166-3.22**0.0-0.5530.166-3.33***0.0
coef_cars2_asc_san_francisco0.3950.1233.22**0.00.3940.1233.20**0.0
coef_cars2_auto_time_saving_per_worker0.6260.1973.18**0.00.6080.1983.07**0.0
coef_cars2_density_0_10_no_workers-0.1890.0118-16.03***0.0-0.1910.0118-16.16***0.0
coef_cars2_density_10_up_no_workers-0.1190.0117-10.12***0.0-0.1190.0117-10.13***0.0
coef_cars2_drivers_22.880.060247.87***0.02.880.060347.83***0.0
coef_cars2_drivers_33.460.097135.68***0.03.460.097135.66***0.0
coef_cars2_drivers_4_up6.180.33218.61***0.06.180.33318.53***0.0
coef_cars2_hh_income_0_30k0.05570.0041913.31***0.0
coef_cars2_hh_income_30_up0.007090.0007829.07***0.0
coef_cars2_num_workers_clip_30.3170.04207.55***0.00.3170.04207.54***0.0
coef_cars2_persons_16_17-0.8450.0976-8.66***0.0-0.8520.0977-8.72***0.0
coef_cars2_persons_18_24-0.9900.0659-15.04***0.0-0.9890.0659-15.01***0.0
coef_cars2_persons_25_34-0.3790.0322-11.77***0.0-0.3750.0322-11.64***0.0
coef_cars2_presence_children_5_170.3270.1043.16**0.00.3340.1043.21**0.0
coef_cars34_asc_county-0.2610.173-1.500.0-0.2720.174-1.570.0
coef_cars34_asc_san_francisco0.05590.1610.350.00.04260.1610.260.0
coef_cars34_density_0_10_no_workers-0.3430.0182-18.81***0.0-0.3430.0182-18.84***0.0
coef_cars34_density_10_up_no_workers-0.2550.0544-4.69***0.0-0.2540.0542-4.70***0.0
coef_cars34_persons_16_17-1.820.113-16.13***0.0-1.830.113-16.23***0.0
coef_cars34_persons_18_24-1.010.0695-14.60***0.0-1.020.0696-14.60***0.0
coef_cars34_persons_25_34-0.7450.0402-18.56***0.0-0.7410.0402-18.44***0.0
coef_cars34_presence_children_5_170.5420.1124.83***0.00.5450.1124.86***0.0
coef_cars3_asc-3.430.962-3.56***0.0-3.500.972-3.60***0.0
coef_cars3_auto_time_saving_per_worker0.5380.2152.50*0.00.5280.2162.45*0.0
coef_cars3_drivers_23.330.15121.99***0.03.340.15221.93***0.0
coef_cars3_drivers_35.700.17033.48***0.05.710.17133.40***0.0
coef_cars3_drivers_4_up8.640.36423.72***0.08.650.36623.64***0.0
coef_cars3_hh_income_0_30k0.06440.006689.65***0.0
coef_cars3_hh_income_30_up0.009130.001038.88***0.0
coef_cars3_num_workers_clip_30.6500.051912.53***0.00.6520.051912.55***0.0
coef_cars4_asc-5.531.02-5.42***0.0-5.631.04-5.40***0.0
coef_cars4_auto_time_saving_per_worker0.8340.2493.35***0.00.8260.2503.30***0.0
coef_cars4_drivers_22.650.2879.23***0.02.640.2839.30***0.0
coef_cars4_drivers_35.330.29717.95***0.05.300.29318.07***0.0
coef_cars4_drivers_4_up9.420.43621.59***0.09.400.43521.61***0.0
coef_cars4_hh_income_0_30k0.07180.01116.46***0.0
coef_cars4_hh_income_30_up0.01320.0013210.00***0.0
coef_cars4_num_workers_clip_30.9490.064614.69***0.00.9580.064614.82***0.0
coef_retail_auto_no_workers0.03980.1010.390.00.02790.1020.270.0
coef_retail_auto_workers0.1560.1021.520.00.1430.1031.390.0
coef_retail_non_motor-0.03000.00NA0.0fixed value-0.03000.00NA0.0fixed value
coef_retail_transit_no_workers-0.3080.0295-10.44***0.0-0.3080.0295-10.42***0.0
coef_retail_transit_workers-0.5250.0396-13.24***0.0-0.5220.0397-13.15***0.0
coef_cars1_hh_income_0_25k0.04710.0043610.81***0.0
coef_cars1_hh_income_25_500.006620.005371.230.0
coef_cars1_hh_income_50_750.007920.006661.190.0
coef_cars1_hh_income_75_up-0.002330.00246-0.950.0
coef_cars2_hh_income_0_25k0.06300.0060710.37***0.0
coef_cars2_hh_income_25_500.007700.006081.270.0
coef_cars2_hh_income_50_750.01920.007142.68**0.0
coef_cars2_hh_income_75_up0.002680.002591.030.0
coef_cars3_hh_income_0_25k0.08150.01018.05***0.0
coef_cars3_hh_income_25_500.001620.007460.220.0
coef_cars3_hh_income_50_750.02680.007933.38***0.0
coef_cars3_hh_income_75_up0.003810.002751.390.0
coef_cars4_hh_income_0_25k0.09510.01755.45***0.0
coef_cars4_hh_income_25_500.002760.009820.280.0
coef_cars4_hh_income_50_750.02740.009073.02**0.0
coef_cars4_hh_income_75_up0.008110.002922.78**0.0
\n", + "
" + ], "text/plain": [ - "" + " model \\\n", + " Value Std Err t Stat Signif \n", + "Parameter \n", + "coef_cars1_asc  1.34  0.941  1.42 \n", + "coef_cars1_asc_county -0.656  0.158 -4.14 *** \n", + "coef_cars1_asc_marin -0.168  0.106 -1.58 \n", + "coef_cars1_asc_san_francisco  0.325  0.0979  3.31 *** \n", + "coef_cars1_auto_time_saving_per_worker  0.394  0.188  2.10 * \n", + "coef_cars1_density_0_10_no_workers  0.00  0.00  NA \n", + "coef_cars1_density_10_up_no_workers -0.0145  0.00339 -4.27 *** \n", + "coef_cars1_density_10_up_workers -0.0183  0.00271 -6.75 *** \n", + "coef_cars1_drivers_2  0.00  0.00  NA \n", + "coef_cars1_drivers_3  0.00  0.00  NA \n", + "coef_cars1_drivers_4_up  2.01  0.317  6.35 *** \n", + "coef_cars1_hh_income_0_30k  0.0456  0.00298  15.29 *** \n", + "coef_cars1_hh_income_30_up  0.00  0.00  NA \n", + "coef_cars1_num_workers_clip_3  0.00  0.00  NA \n", + "coef_cars1_persons_16_17  0.00  0.00  NA \n", + "coef_cars1_persons_18_24 -0.476  0.0586 -8.11 *** \n", + "coef_cars1_persons_25_34  0.00  0.00  NA \n", + "coef_cars1_presence_children_0_4  0.487  0.130  3.75 *** \n", + "coef_cars1_presence_children_5_17  0.0390  0.0934  0.42 \n", + "coef_cars234_asc_marin  0.00  0.00  NA \n", + "coef_cars234_presence_children_0_4  0.834  0.137  6.10 *** \n", + "coef_cars2_asc -0.817  0.944 -0.87 \n", + "coef_cars2_asc_county -0.534  0.166 -3.22 ** \n", + "coef_cars2_asc_san_francisco  0.395  0.123  3.22 ** \n", + "coef_cars2_auto_time_saving_per_worker  0.626  0.197  3.18 ** \n", + "coef_cars2_density_0_10_no_workers -0.189  0.0118 -16.03 *** \n", + "coef_cars2_density_10_up_no_workers -0.119  0.0117 -10.12 *** \n", + "coef_cars2_drivers_2  2.88  0.0602  47.87 *** \n", + "coef_cars2_drivers_3  3.46  0.0971  35.68 *** \n", + "coef_cars2_drivers_4_up  6.18  0.332  18.61 *** \n", + "coef_cars2_hh_income_0_30k  0.0557  0.00419  13.31 *** \n", + "coef_cars2_hh_income_30_up  0.00709  0.000782  9.07 *** \n", + "coef_cars2_num_workers_clip_3  0.317  0.0420  7.55 *** \n", + "coef_cars2_persons_16_17 -0.845  0.0976 -8.66 *** \n", + "coef_cars2_persons_18_24 -0.990  0.0659 -15.04 *** \n", + "coef_cars2_persons_25_34 -0.379  0.0322 -11.77 *** \n", + "coef_cars2_presence_children_5_17  0.327  0.104  3.16 ** \n", + "coef_cars34_asc_county -0.261  0.173 -1.50 \n", + "coef_cars34_asc_san_francisco  0.0559  0.161  0.35 \n", + "coef_cars34_density_0_10_no_workers -0.343  0.0182 -18.81 *** \n", + "coef_cars34_density_10_up_no_workers -0.255  0.0544 -4.69 *** \n", + "coef_cars34_persons_16_17 -1.82  0.113 -16.13 *** \n", + "coef_cars34_persons_18_24 -1.01  0.0695 -14.60 *** \n", + "coef_cars34_persons_25_34 -0.745  0.0402 -18.56 *** \n", + "coef_cars34_presence_children_5_17  0.542  0.112  4.83 *** \n", + "coef_cars3_asc -3.43  0.962 -3.56 *** \n", + "coef_cars3_auto_time_saving_per_worker  0.538  0.215  2.50 * \n", + "coef_cars3_drivers_2  3.33  0.151  21.99 *** \n", + "coef_cars3_drivers_3  5.70  0.170  33.48 *** \n", + "coef_cars3_drivers_4_up  8.64  0.364  23.72 *** \n", + "coef_cars3_hh_income_0_30k  0.0644  0.00668  9.65 *** \n", + "coef_cars3_hh_income_30_up  0.00913  0.00103  8.88 *** \n", + "coef_cars3_num_workers_clip_3  0.650  0.0519  12.53 *** \n", + "coef_cars4_asc -5.53  1.02 -5.42 *** \n", + "coef_cars4_auto_time_saving_per_worker  0.834  0.249  3.35 *** \n", + "coef_cars4_drivers_2  2.65  0.287  9.23 *** \n", + "coef_cars4_drivers_3  5.33  0.297  17.95 *** \n", + "coef_cars4_drivers_4_up  9.42  0.436  21.59 *** \n", + "coef_cars4_hh_income_0_30k  0.0718  0.0111  6.46 *** \n", + "coef_cars4_hh_income_30_up  0.0132  0.00132  10.00 *** \n", + "coef_cars4_num_workers_clip_3  0.949  0.0646  14.69 *** \n", + "coef_retail_auto_no_workers  0.0398  0.101  0.39 \n", + "coef_retail_auto_workers  0.156  0.102  1.52 \n", + "coef_retail_non_motor -0.0300  0.00  NA \n", + "coef_retail_transit_no_workers -0.308  0.0295 -10.44 *** \n", + "coef_retail_transit_workers -0.525  0.0396 -13.24 *** \n", + "coef_cars1_hh_income_0_25k \n", + "coef_cars1_hh_income_25_50 \n", + "coef_cars1_hh_income_50_75 \n", + "coef_cars1_hh_income_75_up \n", + "coef_cars2_hh_income_0_25k \n", + "coef_cars2_hh_income_25_50 \n", + "coef_cars2_hh_income_50_75 \n", + "coef_cars2_hh_income_75_up \n", + "coef_cars3_hh_income_0_25k \n", + "coef_cars3_hh_income_25_50 \n", + "coef_cars3_hh_income_50_75 \n", + "coef_cars3_hh_income_75_up \n", + "coef_cars4_hh_income_0_25k \n", + "coef_cars4_hh_income_25_50 \n", + "coef_cars4_hh_income_50_75 \n", + "coef_cars4_hh_income_75_up \n", + "\n", + " model2 \\\n", + " Null Value Constrained Value \n", + "Parameter \n", + "coef_cars1_asc 0.0  1.45 \n", + "coef_cars1_asc_county 0.0 -0.670 \n", + "coef_cars1_asc_marin 0.0 -0.171 \n", + "coef_cars1_asc_san_francisco 0.0  0.317 \n", + "coef_cars1_auto_time_saving_per_worker 0.0  0.380 \n", + "coef_cars1_density_0_10_no_workers 0.0 fixed value  0.00 \n", + "coef_cars1_density_10_up_no_workers 0.0 -0.0143 \n", + "coef_cars1_density_10_up_workers 0.0 -0.0184 \n", + "coef_cars1_drivers_2 0.0 fixed value  0.00 \n", + "coef_cars1_drivers_3 0.0 fixed value  0.00 \n", + "coef_cars1_drivers_4_up 0.0  1.99 \n", + "coef_cars1_hh_income_0_30k 0.0 \n", + "coef_cars1_hh_income_30_up 0.0 fixed value \n", + "coef_cars1_num_workers_clip_3 0.0 fixed value  0.00 \n", + "coef_cars1_persons_16_17 0.0 fixed value  0.00 \n", + "coef_cars1_persons_18_24 0.0 -0.473 \n", + "coef_cars1_persons_25_34 0.0 fixed value  0.00 \n", + "coef_cars1_presence_children_0_4 0.0  0.494 \n", + "coef_cars1_presence_children_5_17 0.0  0.0442 \n", + "coef_cars234_asc_marin 0.0 fixed value  0.00 \n", + "coef_cars234_presence_children_0_4 0.0  0.840 \n", + "coef_cars2_asc 0.0 -0.752 \n", + "coef_cars2_asc_county 0.0 -0.553 \n", + "coef_cars2_asc_san_francisco 0.0  0.394 \n", + "coef_cars2_auto_time_saving_per_worker 0.0  0.608 \n", + "coef_cars2_density_0_10_no_workers 0.0 -0.191 \n", + "coef_cars2_density_10_up_no_workers 0.0 -0.119 \n", + "coef_cars2_drivers_2 0.0  2.88 \n", + "coef_cars2_drivers_3 0.0  3.46 \n", + "coef_cars2_drivers_4_up 0.0  6.18 \n", + "coef_cars2_hh_income_0_30k 0.0 \n", + "coef_cars2_hh_income_30_up 0.0 \n", + "coef_cars2_num_workers_clip_3 0.0  0.317 \n", + "coef_cars2_persons_16_17 0.0 -0.852 \n", + "coef_cars2_persons_18_24 0.0 -0.989 \n", + "coef_cars2_persons_25_34 0.0 -0.375 \n", + "coef_cars2_presence_children_5_17 0.0  0.334 \n", + "coef_cars34_asc_county 0.0 -0.272 \n", + "coef_cars34_asc_san_francisco 0.0  0.0426 \n", + "coef_cars34_density_0_10_no_workers 0.0 -0.343 \n", + "coef_cars34_density_10_up_no_workers 0.0 -0.254 \n", + "coef_cars34_persons_16_17 0.0 -1.83 \n", + "coef_cars34_persons_18_24 0.0 -1.02 \n", + "coef_cars34_persons_25_34 0.0 -0.741 \n", + "coef_cars34_presence_children_5_17 0.0  0.545 \n", + "coef_cars3_asc 0.0 -3.50 \n", + "coef_cars3_auto_time_saving_per_worker 0.0  0.528 \n", + "coef_cars3_drivers_2 0.0  3.34 \n", + "coef_cars3_drivers_3 0.0  5.71 \n", + "coef_cars3_drivers_4_up 0.0  8.65 \n", + "coef_cars3_hh_income_0_30k 0.0 \n", + "coef_cars3_hh_income_30_up 0.0 \n", + "coef_cars3_num_workers_clip_3 0.0  0.652 \n", + "coef_cars4_asc 0.0 -5.63 \n", + "coef_cars4_auto_time_saving_per_worker 0.0  0.826 \n", + "coef_cars4_drivers_2 0.0  2.64 \n", + "coef_cars4_drivers_3 0.0  5.30 \n", + "coef_cars4_drivers_4_up 0.0  9.40 \n", + "coef_cars4_hh_income_0_30k 0.0 \n", + "coef_cars4_hh_income_30_up 0.0 \n", + "coef_cars4_num_workers_clip_3 0.0  0.958 \n", + "coef_retail_auto_no_workers 0.0  0.0279 \n", + "coef_retail_auto_workers 0.0  0.143 \n", + "coef_retail_non_motor 0.0 fixed value -0.0300 \n", + "coef_retail_transit_no_workers 0.0 -0.308 \n", + "coef_retail_transit_workers 0.0 -0.522 \n", + "coef_cars1_hh_income_0_25k  0.0471 \n", + "coef_cars1_hh_income_25_50  0.00662 \n", + "coef_cars1_hh_income_50_75  0.00792 \n", + "coef_cars1_hh_income_75_up -0.00233 \n", + "coef_cars2_hh_income_0_25k  0.0630 \n", + "coef_cars2_hh_income_25_50  0.00770 \n", + "coef_cars2_hh_income_50_75  0.0192 \n", + "coef_cars2_hh_income_75_up  0.00268 \n", + "coef_cars3_hh_income_0_25k  0.0815 \n", + "coef_cars3_hh_income_25_50  0.00162 \n", + "coef_cars3_hh_income_50_75  0.0268 \n", + "coef_cars3_hh_income_75_up  0.00381 \n", + "coef_cars4_hh_income_0_25k  0.0951 \n", + "coef_cars4_hh_income_25_50  0.00276 \n", + "coef_cars4_hh_income_50_75  0.0274 \n", + "coef_cars4_hh_income_75_up  0.00811 \n", + "\n", + " \\\n", + " Std Err t Stat Signif Null Value \n", + "Parameter \n", + "coef_cars1_asc  0.946  1.54 0.0 \n", + "coef_cars1_asc_county  0.159 -4.22 *** 0.0 \n", + "coef_cars1_asc_marin  0.106 -1.61 0.0 \n", + "coef_cars1_asc_san_francisco  0.0982  3.23 ** 0.0 \n", + "coef_cars1_auto_time_saving_per_worker  0.189  2.01 * 0.0 \n", + "coef_cars1_density_0_10_no_workers  0.00  NA 0.0 \n", + "coef_cars1_density_10_up_no_workers  0.00339 -4.21 *** 0.0 \n", + "coef_cars1_density_10_up_workers  0.00271 -6.80 *** 0.0 \n", + "coef_cars1_drivers_2  0.00  NA 0.0 \n", + "coef_cars1_drivers_3  0.00  NA 0.0 \n", + "coef_cars1_drivers_4_up  0.318  6.27 *** 0.0 \n", + "coef_cars1_hh_income_0_30k \n", + "coef_cars1_hh_income_30_up \n", + "coef_cars1_num_workers_clip_3  0.00  NA 0.0 \n", + "coef_cars1_persons_16_17  0.00  NA 0.0 \n", + "coef_cars1_persons_18_24  0.0586 -8.07 *** 0.0 \n", + "coef_cars1_persons_25_34  0.00  NA 0.0 \n", + "coef_cars1_presence_children_0_4  0.130  3.80 *** 0.0 \n", + "coef_cars1_presence_children_5_17  0.0935  0.47 0.0 \n", + "coef_cars234_asc_marin  0.00  NA 0.0 \n", + "coef_cars234_presence_children_0_4  0.137  6.13 *** 0.0 \n", + "coef_cars2_asc  0.949 -0.79 0.0 \n", + "coef_cars2_asc_county  0.166 -3.33 *** 0.0 \n", + "coef_cars2_asc_san_francisco  0.123  3.20 ** 0.0 \n", + "coef_cars2_auto_time_saving_per_worker  0.198  3.07 ** 0.0 \n", + "coef_cars2_density_0_10_no_workers  0.0118 -16.16 *** 0.0 \n", + "coef_cars2_density_10_up_no_workers  0.0117 -10.13 *** 0.0 \n", + "coef_cars2_drivers_2  0.0603  47.83 *** 0.0 \n", + "coef_cars2_drivers_3  0.0971  35.66 *** 0.0 \n", + "coef_cars2_drivers_4_up  0.333  18.53 *** 0.0 \n", + "coef_cars2_hh_income_0_30k \n", + "coef_cars2_hh_income_30_up \n", + "coef_cars2_num_workers_clip_3  0.0420  7.54 *** 0.0 \n", + "coef_cars2_persons_16_17  0.0977 -8.72 *** 0.0 \n", + "coef_cars2_persons_18_24  0.0659 -15.01 *** 0.0 \n", + "coef_cars2_persons_25_34  0.0322 -11.64 *** 0.0 \n", + "coef_cars2_presence_children_5_17  0.104  3.21 ** 0.0 \n", + "coef_cars34_asc_county  0.174 -1.57 0.0 \n", + "coef_cars34_asc_san_francisco  0.161  0.26 0.0 \n", + "coef_cars34_density_0_10_no_workers  0.0182 -18.84 *** 0.0 \n", + "coef_cars34_density_10_up_no_workers  0.0542 -4.70 *** 0.0 \n", + "coef_cars34_persons_16_17  0.113 -16.23 *** 0.0 \n", + "coef_cars34_persons_18_24  0.0696 -14.60 *** 0.0 \n", + "coef_cars34_persons_25_34  0.0402 -18.44 *** 0.0 \n", + "coef_cars34_presence_children_5_17  0.112  4.86 *** 0.0 \n", + "coef_cars3_asc  0.972 -3.60 *** 0.0 \n", + "coef_cars3_auto_time_saving_per_worker  0.216  2.45 * 0.0 \n", + "coef_cars3_drivers_2  0.152  21.93 *** 0.0 \n", + "coef_cars3_drivers_3  0.171  33.40 *** 0.0 \n", + "coef_cars3_drivers_4_up  0.366  23.64 *** 0.0 \n", + "coef_cars3_hh_income_0_30k \n", + "coef_cars3_hh_income_30_up \n", + "coef_cars3_num_workers_clip_3  0.0519  12.55 *** 0.0 \n", + "coef_cars4_asc  1.04 -5.40 *** 0.0 \n", + "coef_cars4_auto_time_saving_per_worker  0.250  3.30 *** 0.0 \n", + "coef_cars4_drivers_2  0.283  9.30 *** 0.0 \n", + "coef_cars4_drivers_3  0.293  18.07 *** 0.0 \n", + "coef_cars4_drivers_4_up  0.435  21.61 *** 0.0 \n", + "coef_cars4_hh_income_0_30k \n", + "coef_cars4_hh_income_30_up \n", + "coef_cars4_num_workers_clip_3  0.0646  14.82 *** 0.0 \n", + "coef_retail_auto_no_workers  0.102  0.27 0.0 \n", + "coef_retail_auto_workers  0.103  1.39 0.0 \n", + "coef_retail_non_motor  0.00  NA 0.0 \n", + "coef_retail_transit_no_workers  0.0295 -10.42 *** 0.0 \n", + "coef_retail_transit_workers  0.0397 -13.15 *** 0.0 \n", + "coef_cars1_hh_income_0_25k  0.00436  10.81 *** 0.0 \n", + "coef_cars1_hh_income_25_50  0.00537  1.23 0.0 \n", + "coef_cars1_hh_income_50_75  0.00666  1.19 0.0 \n", + "coef_cars1_hh_income_75_up  0.00246 -0.95 0.0 \n", + "coef_cars2_hh_income_0_25k  0.00607  10.37 *** 0.0 \n", + "coef_cars2_hh_income_25_50  0.00608  1.27 0.0 \n", + "coef_cars2_hh_income_50_75  0.00714  2.68 ** 0.0 \n", + "coef_cars2_hh_income_75_up  0.00259  1.03 0.0 \n", + "coef_cars3_hh_income_0_25k  0.0101  8.05 *** 0.0 \n", + "coef_cars3_hh_income_25_50  0.00746  0.22 0.0 \n", + "coef_cars3_hh_income_50_75  0.00793  3.38 *** 0.0 \n", + "coef_cars3_hh_income_75_up  0.00275  1.39 0.0 \n", + "coef_cars4_hh_income_0_25k  0.0175  5.45 *** 0.0 \n", + "coef_cars4_hh_income_25_50  0.00982  0.28 0.0 \n", + "coef_cars4_hh_income_50_75  0.00907  3.02 ** 0.0 \n", + "coef_cars4_hh_income_75_up  0.00292  2.78 ** 0.0 \n", + "\n", + " \n", + " Constrained \n", + "Parameter \n", + "coef_cars1_asc \n", + "coef_cars1_asc_county \n", + "coef_cars1_asc_marin \n", + "coef_cars1_asc_san_francisco \n", + "coef_cars1_auto_time_saving_per_worker \n", + "coef_cars1_density_0_10_no_workers fixed value \n", + "coef_cars1_density_10_up_no_workers \n", + "coef_cars1_density_10_up_workers \n", + "coef_cars1_drivers_2 fixed value \n", + "coef_cars1_drivers_3 fixed value \n", + "coef_cars1_drivers_4_up \n", + "coef_cars1_hh_income_0_30k \n", + "coef_cars1_hh_income_30_up \n", + "coef_cars1_num_workers_clip_3 fixed value \n", + "coef_cars1_persons_16_17 fixed value \n", + "coef_cars1_persons_18_24 \n", + "coef_cars1_persons_25_34 fixed value \n", + "coef_cars1_presence_children_0_4 \n", + "coef_cars1_presence_children_5_17 \n", + "coef_cars234_asc_marin fixed value \n", + "coef_cars234_presence_children_0_4 \n", + "coef_cars2_asc \n", + "coef_cars2_asc_county \n", + "coef_cars2_asc_san_francisco \n", + "coef_cars2_auto_time_saving_per_worker \n", + "coef_cars2_density_0_10_no_workers \n", + "coef_cars2_density_10_up_no_workers \n", + "coef_cars2_drivers_2 \n", + "coef_cars2_drivers_3 \n", + "coef_cars2_drivers_4_up \n", + "coef_cars2_hh_income_0_30k \n", + "coef_cars2_hh_income_30_up \n", + "coef_cars2_num_workers_clip_3 \n", + "coef_cars2_persons_16_17 \n", + "coef_cars2_persons_18_24 \n", + "coef_cars2_persons_25_34 \n", + "coef_cars2_presence_children_5_17 \n", + "coef_cars34_asc_county \n", + "coef_cars34_asc_san_francisco \n", + "coef_cars34_density_0_10_no_workers \n", + "coef_cars34_density_10_up_no_workers \n", + "coef_cars34_persons_16_17 \n", + "coef_cars34_persons_18_24 \n", + "coef_cars34_persons_25_34 \n", + "coef_cars34_presence_children_5_17 \n", + "coef_cars3_asc \n", + "coef_cars3_auto_time_saving_per_worker \n", + "coef_cars3_drivers_2 \n", + "coef_cars3_drivers_3 \n", + "coef_cars3_drivers_4_up \n", + "coef_cars3_hh_income_0_30k \n", + "coef_cars3_hh_income_30_up \n", + "coef_cars3_num_workers_clip_3 \n", + "coef_cars4_asc \n", + "coef_cars4_auto_time_saving_per_worker \n", + "coef_cars4_drivers_2 \n", + "coef_cars4_drivers_3 \n", + "coef_cars4_drivers_4_up \n", + "coef_cars4_hh_income_0_30k \n", + "coef_cars4_hh_income_30_up \n", + "coef_cars4_num_workers_clip_3 \n", + "coef_retail_auto_no_workers \n", + "coef_retail_auto_workers \n", + "coef_retail_non_motor fixed value \n", + "coef_retail_transit_no_workers \n", + "coef_retail_transit_workers \n", + "coef_cars1_hh_income_0_25k \n", + "coef_cars1_hh_income_25_50 \n", + "coef_cars1_hh_income_50_75 \n", + "coef_cars1_hh_income_75_up \n", + "coef_cars2_hh_income_0_25k \n", + "coef_cars2_hh_income_25_50 \n", + "coef_cars2_hh_income_50_75 \n", + "coef_cars2_hh_income_75_up \n", + "coef_cars3_hh_income_0_25k \n", + "coef_cars3_hh_income_25_50 \n", + "coef_cars3_hh_income_50_75 \n", + "coef_cars3_hh_income_75_up \n", + "coef_cars4_hh_income_0_25k \n", + "coef_cars4_hh_income_25_50 \n", + "coef_cars4_hh_income_50_75 \n", + "coef_cars4_hh_income_75_up " ] }, - "execution_count": 10, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ - "model.to_xlsx(\n", - " result_dir/f\"{modelname}_model_estimation.xlsx\", \n", - " data_statistics=False,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Next Steps\n", - "\n", - "The final step is to either manually or automatically copy the `*_coefficients_revised.csv` file to the configs folder, rename it to `*_coefficients.csv`, and run ActivitySim in simulation mode." + "with pd.option_context('display.max_rows', 999):\n", + " display(pd.concat({\n", + " \"model\": model.parameter_summary().data,\n", + " \"model2\": model2.parameter_summary().data,\n", + " }, axis=1).fillna(\"\"))" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -2652,107 +5819,70 @@ " \n", " \n", " \n", - " coefficient_name\n", - " value\n", - " constrain\n", + " \n", + " model\n", + " model2\n", " \n", " \n", " \n", " \n", - " 0\n", - " coef_cars1_drivers_2\n", - " 0.000000\n", - " T\n", - " \n", - " \n", - " 1\n", - " coef_cars1_drivers_3\n", - " 0.000000\n", - " T\n", - " \n", - " \n", - " 2\n", - " coef_cars1_persons_16_17\n", - " 0.000000\n", - " T\n", - " \n", - " \n", - " 3\n", - " coef_cars234_asc_marin\n", - " 0.000000\n", - " T\n", - " \n", - " \n", - " 4\n", - " coef_cars1_persons_25_34\n", - " 0.000000\n", - " T\n", - " \n", - " \n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", + " Number of Cases\n", + " Aggregate\n", + " 20000.000000\n", + " 20000.000000\n", " \n", " \n", - " 62\n", - " coef_cars4_drivers_3\n", - " 564.490158\n", - " F\n", + " Log Likelihood at Convergence\n", + " Aggregate\n", + " -18485.495027\n", + " -18480.692008\n", " \n", " \n", - " 63\n", - " coef_cars3_drivers_3\n", - " 5.048488\n", - " F\n", + " Per Case\n", + " -0.924275\n", + " -0.924035\n", " \n", " \n", - " 64\n", - " coef_cars2_drivers_4_up\n", - " 6.856405\n", - " F\n", + " Log Likelihood at Null Parameters\n", + " Aggregate\n", + " -32431.882743\n", + " -32431.882743\n", " \n", " \n", - " 65\n", - " coef_cars3_drivers_4_up\n", - " 8.317950\n", - " F\n", + " Per Case\n", + " -1.621594\n", + " -1.621594\n", " \n", " \n", - " 66\n", - " coef_cars4_drivers_4_up\n", - " 568.272514\n", - " F\n", + " Rho Squared w.r.t. Null Parameters\n", + " Aggregate\n", + " 0.430021\n", + " 0.430169\n", " \n", " \n", "\n", - "

67 rows × 3 columns

\n", "" ], "text/plain": [ - " coefficient_name value constrain\n", - "0 coef_cars1_drivers_2 0.000000 T\n", - "1 coef_cars1_drivers_3 0.000000 T\n", - "2 coef_cars1_persons_16_17 0.000000 T\n", - "3 coef_cars234_asc_marin 0.000000 T\n", - "4 coef_cars1_persons_25_34 0.000000 T\n", - ".. ... ... ...\n", - "62 coef_cars4_drivers_3 564.490158 F\n", - "63 coef_cars3_drivers_3 5.048488 F\n", - "64 coef_cars2_drivers_4_up 6.856405 F\n", - "65 coef_cars3_drivers_4_up 8.317950 F\n", - "66 coef_cars4_drivers_4_up 568.272514 F\n", - "\n", - "[67 rows x 3 columns]" + " model model2\n", + "Number of Cases Aggregate 20000.000000 20000.000000\n", + "Log Likelihood at Convergence Aggregate -18485.495027 -18480.692008\n", + " Per Case -0.924275 -0.924035\n", + "Log Likelihood at Null Parameters Aggregate -32431.882743 -32431.882743\n", + " Per Case -1.621594 -1.621594\n", + "Rho Squared w.r.t. Null Parameters Aggregate 0.430021 0.430169" ] }, - "execution_count": 11, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ - "pd.read_csv(result_dir/f\"{modelname}_coefficients_revised.csv\")" + "with pd.option_context('display.max_rows', 999):\n", + " display(pd.concat({\n", + " \"model\": model.estimation_statistics_raw(),\n", + " \"model2\": model2.estimation_statistics_raw(),\n", + " }, axis=1).fillna(\"\"))" ] } ], @@ -2763,7 +5893,7 @@ "toc_visible": true }, "kernelspec": { - "display_name": "Python 3", + "display_name": "ESTER", "language": "python", "name": "python3" }, @@ -2777,7 +5907,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.10.15" }, "toc": { "base_numbering": 1, diff --git a/activitysim/examples/example_estimation/notebooks/05_free_parking.ipynb b/activitysim/examples/example_estimation/notebooks/05_free_parking.ipynb index fd0fe5714..464f32106 100644 --- a/activitysim/examples/example_estimation/notebooks/05_free_parking.ipynb +++ b/activitysim/examples/example_estimation/notebooks/05_free_parking.ipynb @@ -34,27 +34,75 @@ "id": "s53VwlPwtNnr", "outputId": "d1208b7a-c1f2-4b0b-c439-bf312fe12be0" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "JAX not found. Some functionality will be unavailable.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'larch': '6.0.32',\n", + " 'sharrow': '2.13.0',\n", + " 'numpy': '1.26.4',\n", + " 'pandas': '1.5.3',\n", + " 'xarray': '2024.3.0',\n", + " 'numba': '0.60.0'}" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "import os\n", - "import larch # !conda install larch -c conda-forge # for estimation\n", - "import pandas as pd" + "import larch as lx\n", + "import pandas as pd\n", + "\n", + "lx.versions()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We'll work in our `test` directory, where ActivitySim has saved the estimation data bundles." + "For this demo, we will assume that you have already run ActivitySim in estimation\n", + "mode, and saved the required estimation data bundles (EDB's) to disk. See\n", + "the [first notebook](./01_estimation_mode.ipynb) for details. The following module\n", + "will run a script to set everything up if the example data is not already available." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "EDB directory already populated.\n" + ] + }, + { + "data": { + "text/plain": [ + "PosixPath('test-estimation-data/activitysim-prototype-mtc-extended')" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "os.chdir('test')" + "from est_mode_setup import prepare\n", + "\n", + "prepare()" ] }, { @@ -68,12 +116,27 @@ "cell_type": "code", "execution_count": 3, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "loading from output-est-mode/estimation_data_bundle/free_parking/free_parking_coefficients.csv\n", + "loading spec from output-est-mode/estimation_data_bundle/free_parking/free_parking_SPEC.csv\n", + "loading from output-est-mode/estimation_data_bundle/free_parking/free_parking_values_combined.parquet\n" + ] + } + ], "source": [ "modelname = \"free_parking\"\n", "\n", "from activitysim.estimation.larch import component_model\n", - "model, data = component_model(modelname, return_data=True)" + "\n", + "model, data = component_model(\n", + " modelname,\n", + " edb_directory=f\"output-est-mode/estimation_data_bundle/{modelname}/\",\n", + " return_data=True,\n", + ")" ] }, { @@ -388,14 +451,14 @@ " util_hh_size_4_up\n", " util_more_autos_than_workers\n", " ...\n", - " COLLFTE\n", - " COLLPTE\n", - " TOPOLOGY\n", - " TERMINAL\n", - " household_density\n", - " employment_density\n", - " density_index\n", - " is_cbd\n", + " auOpRetail\n", + " auOpTotal\n", + " trPkRetail\n", + " trPkTotal\n", + " trOpRetail\n", + " trOpTotal\n", + " nmRetail\n", + " nmTotal\n", " workplace_county_id\n", " override_choice_code\n", " \n", @@ -426,8 +489,8 @@ " \n", " \n", " \n", - " 72241\n", - " 72241\n", + " 72355\n", + " 72355\n", " False\n", " False\n", " 1.0\n", @@ -436,22 +499,22 @@ " 0.0\n", " 0.0\n", " 0.0\n", - " 0.0\n", + " 1.0\n", " ...\n", - " 0.00000\n", - " 0.00000\n", - " 1\n", - " 4.58156\n", - " 68.092368\n", - " 151.674705\n", - " 46.994710\n", - " True\n", + " 9.915345\n", + " 12.430580\n", + " 6.550726\n", + " 9.119016\n", + " 6.446184\n", + " 9.035333\n", + " 5.256966\n", + " 6.831275\n", " 1\n", " 2\n", " \n", " \n", - " 72441\n", - " 72441\n", + " 72384\n", + " 72384\n", " False\n", " False\n", " 1.0\n", @@ -462,20 +525,20 @@ " 0.0\n", " 0.0\n", " ...\n", - " 0.00000\n", - " 0.00000\n", - " 1\n", - " 2.28482\n", - " 28.491228\n", - " 4.052632\n", - " 3.547964\n", - " False\n", + " 9.971763\n", + " 12.488100\n", + " 6.384615\n", + " 8.910521\n", + " 6.292135\n", + " 8.845287\n", + " 5.447277\n", + " 7.062559\n", " 1\n", " 2\n", " \n", " \n", - " 72528\n", - " 72528\n", + " 72407\n", + " 72407\n", " False\n", " False\n", " 1.0\n", @@ -486,20 +549,20 @@ " 0.0\n", " 0.0\n", " ...\n", - " 6861.20508\n", - " 1174.96875\n", - " 1\n", - " 3.49553\n", - " 19.033424\n", - " 37.235052\n", - " 12.595161\n", - " False\n", + " 9.971763\n", + " 12.488100\n", + " 6.384615\n", + " 8.910521\n", + " 6.292135\n", + " 8.845287\n", + " 5.447277\n", + " 7.062559\n", " 1\n", " 2\n", " \n", " \n", - " 73144\n", - " 73144\n", + " 72459\n", + " 72459\n", " False\n", " False\n", " 1.0\n", @@ -510,20 +573,20 @@ " 0.0\n", " 0.0\n", " ...\n", - " 0.00000\n", - " 0.00000\n", - " 1\n", - " 2.48345\n", - " 26.073171\n", - " 8.048780\n", - " 6.150212\n", - " False\n", + " 10.086939\n", + " 12.619691\n", + " 6.787018\n", + " 9.400117\n", + " 6.687820\n", + " 9.307625\n", + " 5.877288\n", + " 7.691985\n", " 1\n", " 2\n", " \n", " \n", - " 73493\n", - " 73493\n", + " 72529\n", + " 72529\n", " False\n", " False\n", " 1.0\n", @@ -534,14 +597,14 @@ " 0.0\n", " 0.0\n", " ...\n", - " 7144.64307\n", - " 22523.34570\n", - " 1\n", - " 3.20356\n", - " 13.672131\n", - " 39.852459\n", - " 10.179771\n", - " False\n", + " 10.263491\n", + " 12.913804\n", + " 6.830450\n", + " 9.558905\n", + " 6.611336\n", + " 9.308290\n", + " 6.696709\n", + " 8.925142\n", " 1\n", " 2\n", " \n", @@ -570,35 +633,35 @@ " ...\n", " \n", " \n", - " 2822879\n", - " 7514214\n", - " False\n", + " 2847736\n", + " 7539071\n", " False\n", - " 1.0\n", - " 0.0\n", + " True\n", " 0.0\n", " 0.0\n", + " 1.0\n", " 0.0\n", " 0.0\n", " 0.0\n", + " 1.0\n", " ...\n", - " 0.00000\n", - " 0.00000\n", - " 1\n", - " 1.08765\n", - " 0.415094\n", - " 3.578616\n", - " 0.371951\n", - " False\n", + " 9.875413\n", + " 12.586445\n", + " 4.800090\n", + " 8.088658\n", + " 4.581187\n", + " 7.858361\n", + " 5.697172\n", + " 9.212853\n", + " 4\n", " 1\n", - " 2\n", " \n", " \n", - " 2822949\n", - " 7514284\n", + " 2847868\n", + " 7539203\n", " False\n", " False\n", - " 1.0\n", + " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", @@ -606,47 +669,47 @@ " 0.0\n", " 0.0\n", " ...\n", - " 0.00000\n", - " 0.00000\n", - " 1\n", - " 3.86254\n", - " 33.841404\n", - " 40.299687\n", - " 18.394631\n", - " True\n", - " 1\n", + " 9.121001\n", + " 11.606573\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 1.324505\n", + " 4.959246\n", + " 5\n", " 2\n", " \n", " \n", - " 2823069\n", - " 7514404\n", - " False\n", - " False\n", - " 1.0\n", + " 2847882\n", + " 7539217\n", + " True\n", + " True\n", " 0.0\n", " 0.0\n", + " 1.0\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", " ...\n", - " 0.00000\n", - " 0.00000\n", - " 1\n", - " 3.95752\n", - " 65.596535\n", - " 32.655666\n", - " 21.802041\n", - " True\n", + " 9.121001\n", + " 11.606573\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 1.324505\n", + " 4.959246\n", + " 4\n", " 1\n", - " 2\n", " \n", " \n", - " 2823442\n", - " 7514777\n", + " 2847935\n", + " 7539270\n", " False\n", " False\n", - " 1.0\n", + " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", @@ -654,23 +717,23 @@ " 0.0\n", " 0.0\n", " ...\n", - " 0.00000\n", - " 0.00000\n", - " 2\n", - " 4.51942\n", - " 56.706023\n", - " 144.861886\n", - " 40.753220\n", - " True\n", - " 1\n", + " 9.653875\n", + " 12.007751\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 5.523983\n", + " 7.598532\n", + " 5\n", " 2\n", " \n", " \n", - " 2823850\n", - " 7515185\n", - " False\n", + " 2847982\n", + " 7539317\n", + " True\n", " False\n", - " 1.0\n", + " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", @@ -678,108 +741,108 @@ " 0.0\n", " 0.0\n", " ...\n", - " 0.00000\n", - " 0.00000\n", - " 3\n", - " 2.46800\n", - " 0.296858\n", - " 36.296472\n", - " 0.294449\n", - " True\n", - " 1\n", + " 6.494711\n", + " 8.713819\n", + " 0.019735\n", + " 0.222696\n", + " 0.016077\n", + " 0.153189\n", + " 0.000000\n", + " 0.000000\n", + " 8\n", " 2\n", " \n", " \n", "\n", - "

2582 rows × 116 columns

\n", + "

28281 rows × 116 columns

\n", "" ], "text/plain": [ " person_id model_choice override_choice \\\n", "household_id \n", - "72241 72241 False False \n", - "72441 72441 False False \n", - "72528 72528 False False \n", - "73144 73144 False False \n", - "73493 73493 False False \n", + "72355 72355 False False \n", + "72384 72384 False False \n", + "72407 72407 False False \n", + "72459 72459 False False \n", + "72529 72529 False False \n", "... ... ... ... \n", - "2822879 7514214 False False \n", - "2822949 7514284 False False \n", - "2823069 7514404 False False \n", - "2823442 7514777 False False \n", - "2823850 7515185 False False \n", + "2847736 7539071 False True \n", + "2847868 7539203 False False \n", + "2847882 7539217 True True \n", + "2847935 7539270 False False \n", + "2847982 7539317 True False \n", "\n", " util_asc_san_francisco util_asc_santa_clara util_asc_alameda \\\n", "household_id \n", - "72241 1.0 0.0 0.0 \n", - "72441 1.0 0.0 0.0 \n", - "72528 1.0 0.0 0.0 \n", - "73144 1.0 0.0 0.0 \n", - "73493 1.0 0.0 0.0 \n", + "72355 1.0 0.0 0.0 \n", + "72384 1.0 0.0 0.0 \n", + "72407 1.0 0.0 0.0 \n", + "72459 1.0 0.0 0.0 \n", + "72529 1.0 0.0 0.0 \n", "... ... ... ... \n", - "2822879 1.0 0.0 0.0 \n", - "2822949 1.0 0.0 0.0 \n", - "2823069 1.0 0.0 0.0 \n", - "2823442 1.0 0.0 0.0 \n", - "2823850 1.0 0.0 0.0 \n", + "2847736 0.0 0.0 1.0 \n", + "2847868 0.0 0.0 0.0 \n", + "2847882 0.0 0.0 1.0 \n", + "2847935 0.0 0.0 0.0 \n", + "2847982 0.0 0.0 0.0 \n", "\n", " util_income_very_high util_income_high util_hh_size_4_up \\\n", "household_id \n", - "72241 0.0 0.0 0.0 \n", - "72441 0.0 0.0 0.0 \n", - "72528 0.0 0.0 0.0 \n", - "73144 0.0 0.0 0.0 \n", - "73493 0.0 0.0 0.0 \n", + "72355 0.0 0.0 0.0 \n", + "72384 0.0 0.0 0.0 \n", + "72407 0.0 0.0 0.0 \n", + "72459 0.0 0.0 0.0 \n", + "72529 0.0 0.0 0.0 \n", "... ... ... ... \n", - "2822879 0.0 0.0 0.0 \n", - "2822949 0.0 0.0 0.0 \n", - "2823069 0.0 0.0 0.0 \n", - "2823442 0.0 0.0 0.0 \n", - "2823850 0.0 0.0 0.0 \n", + "2847736 0.0 0.0 0.0 \n", + "2847868 0.0 0.0 0.0 \n", + "2847882 0.0 0.0 0.0 \n", + "2847935 0.0 0.0 0.0 \n", + "2847982 0.0 0.0 0.0 \n", "\n", - " util_more_autos_than_workers ... COLLFTE COLLPTE \\\n", - "household_id ... \n", - "72241 0.0 ... 0.00000 0.00000 \n", - "72441 0.0 ... 0.00000 0.00000 \n", - "72528 0.0 ... 6861.20508 1174.96875 \n", - "73144 0.0 ... 0.00000 0.00000 \n", - "73493 0.0 ... 7144.64307 22523.34570 \n", - "... ... ... ... ... \n", - "2822879 0.0 ... 0.00000 0.00000 \n", - "2822949 0.0 ... 0.00000 0.00000 \n", - "2823069 0.0 ... 0.00000 0.00000 \n", - "2823442 0.0 ... 0.00000 0.00000 \n", - "2823850 0.0 ... 0.00000 0.00000 \n", + " util_more_autos_than_workers ... auOpRetail auOpTotal \\\n", + "household_id ... \n", + "72355 1.0 ... 9.915345 12.430580 \n", + "72384 0.0 ... 9.971763 12.488100 \n", + "72407 0.0 ... 9.971763 12.488100 \n", + "72459 0.0 ... 10.086939 12.619691 \n", + "72529 0.0 ... 10.263491 12.913804 \n", + "... ... ... ... ... \n", + "2847736 1.0 ... 9.875413 12.586445 \n", + "2847868 0.0 ... 9.121001 11.606573 \n", + "2847882 0.0 ... 9.121001 11.606573 \n", + "2847935 0.0 ... 9.653875 12.007751 \n", + "2847982 0.0 ... 6.494711 8.713819 \n", "\n", - " TOPOLOGY TERMINAL household_density employment_density \\\n", - "household_id \n", - "72241 1 4.58156 68.092368 151.674705 \n", - "72441 1 2.28482 28.491228 4.052632 \n", - "72528 1 3.49553 19.033424 37.235052 \n", - "73144 1 2.48345 26.073171 8.048780 \n", - "73493 1 3.20356 13.672131 39.852459 \n", - "... ... ... ... ... \n", - "2822879 1 1.08765 0.415094 3.578616 \n", - "2822949 1 3.86254 33.841404 40.299687 \n", - "2823069 1 3.95752 65.596535 32.655666 \n", - "2823442 2 4.51942 56.706023 144.861886 \n", - "2823850 3 2.46800 0.296858 36.296472 \n", + " trPkRetail trPkTotal trOpRetail trOpTotal nmRetail \\\n", + "household_id \n", + "72355 6.550726 9.119016 6.446184 9.035333 5.256966 \n", + "72384 6.384615 8.910521 6.292135 8.845287 5.447277 \n", + "72407 6.384615 8.910521 6.292135 8.845287 5.447277 \n", + "72459 6.787018 9.400117 6.687820 9.307625 5.877288 \n", + "72529 6.830450 9.558905 6.611336 9.308290 6.696709 \n", + "... ... ... ... ... ... \n", + "2847736 4.800090 8.088658 4.581187 7.858361 5.697172 \n", + "2847868 0.000000 0.000000 0.000000 0.000000 1.324505 \n", + "2847882 0.000000 0.000000 0.000000 0.000000 1.324505 \n", + "2847935 0.000000 0.000000 0.000000 0.000000 5.523983 \n", + "2847982 0.019735 0.222696 0.016077 0.153189 0.000000 \n", "\n", - " density_index is_cbd workplace_county_id override_choice_code \n", - "household_id \n", - "72241 46.994710 True 1 2 \n", - "72441 3.547964 False 1 2 \n", - "72528 12.595161 False 1 2 \n", - "73144 6.150212 False 1 2 \n", - "73493 10.179771 False 1 2 \n", - "... ... ... ... ... \n", - "2822879 0.371951 False 1 2 \n", - "2822949 18.394631 True 1 2 \n", - "2823069 21.802041 True 1 2 \n", - "2823442 40.753220 True 1 2 \n", - "2823850 0.294449 True 1 2 \n", + " nmTotal workplace_county_id override_choice_code \n", + "household_id \n", + "72355 6.831275 1 2 \n", + "72384 7.062559 1 2 \n", + "72407 7.062559 1 2 \n", + "72459 7.691985 1 2 \n", + "72529 8.925142 1 2 \n", + "... ... ... ... \n", + "2847736 9.212853 4 1 \n", + "2847868 4.959246 5 2 \n", + "2847882 4.959246 4 1 \n", + "2847935 7.598532 5 2 \n", + "2847982 0.000000 8 2 \n", "\n", - "[2582 rows x 116 columns]" + "[28281 rows x 116 columns]" ] }, "execution_count": 6, @@ -802,20 +865,13 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 7, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "req_data does not request avail_ca or avail_co but it is set and being provided\n" - ] - }, { "data": { "text/html": [ - "

Iteration 010 [Optimization terminated successfully]

" + "

Iteration 007 [Optimization terminated successfully]

" ], "text/plain": [ "" @@ -827,7 +883,7 @@ { "data": { "text/html": [ - "

Best LL = -484.0908426547178

" + "

Best LL = -15941.804810325377

" ], "text/plain": [ "" @@ -858,154 +914,148 @@ " \n", " \n", " value\n", + " best\n", " initvalue\n", - " nullvalue\n", " minimum\n", " maximum\n", + " nullvalue\n", " holdfast\n", - " note\n", - " best\n", + " \n", + " \n", + " param_name\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " 0.0\n", " 0.000000\n", + " 0.000000\n", " 0.0000\n", " 0.0\n", " 0.0\n", " 0.0\n", " 1\n", - " \n", - " 0.000000\n", " \n", " \n", " coef_asc_alameda\n", - " -0.109200\n", + " -0.141547\n", + " -0.141547\n", " -0.1092\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.109200\n", " \n", " \n", " coef_asc_san_francisco\n", - " -2.456059\n", + " -2.630212\n", + " -2.630212\n", " -2.6403\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -2.456059\n", " \n", " \n", " coef_asc_santa_clara\n", - " 0.211800\n", + " 0.188205\n", + " 0.188205\n", " 0.2118\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.211800\n", " \n", " \n", " coef_fewer_autos_than_workers\n", - " -1.619489\n", + " -1.407827\n", + " -1.407827\n", " -1.4790\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -1.619489\n", " \n", " \n", " coef_hh_size_4_up\n", - " 0.279145\n", + " 0.264779\n", + " 0.264779\n", " 0.2530\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.279145\n", " \n", " \n", " coef_income_high\n", - " -0.053120\n", + " 0.217818\n", + " 0.217818\n", " 0.2300\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.053120\n", " \n", " \n", " coef_income_very_high\n", - " 0.296661\n", + " 0.235389\n", + " 0.235389\n", " 0.2300\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.296661\n", " \n", " \n", " coef_more_autos_than_workers\n", - " 0.223434\n", + " 0.225131\n", + " 0.225131\n", " 0.2310\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.223434\n", " \n", " \n", "\n", "" ], "text/plain": [ - " value initvalue nullvalue minimum \\\n", - "0.0 0.000000 0.0000 0.0 0.0 \n", - "coef_asc_alameda -0.109200 -0.1092 0.0 NaN \n", - "coef_asc_san_francisco -2.456059 -2.6403 0.0 NaN \n", - "coef_asc_santa_clara 0.211800 0.2118 0.0 NaN \n", - "coef_fewer_autos_than_workers -1.619489 -1.4790 0.0 NaN \n", - "coef_hh_size_4_up 0.279145 0.2530 0.0 NaN \n", - "coef_income_high -0.053120 0.2300 0.0 NaN \n", - "coef_income_very_high 0.296661 0.2300 0.0 NaN \n", - "coef_more_autos_than_workers 0.223434 0.2310 0.0 NaN \n", + " value best initvalue minimum \\\n", + "param_name \n", + "0.0 0.000000 0.000000 0.0000 0.0 \n", + "coef_asc_alameda -0.141547 -0.141547 -0.1092 -50.0 \n", + "coef_asc_san_francisco -2.630212 -2.630212 -2.6403 -50.0 \n", + "coef_asc_santa_clara 0.188205 0.188205 0.2118 -50.0 \n", + "coef_fewer_autos_than_workers -1.407827 -1.407827 -1.4790 -50.0 \n", + "coef_hh_size_4_up 0.264779 0.264779 0.2530 -50.0 \n", + "coef_income_high 0.217818 0.217818 0.2300 -50.0 \n", + "coef_income_very_high 0.235389 0.235389 0.2300 -50.0 \n", + "coef_more_autos_than_workers 0.225131 0.225131 0.2310 -50.0 \n", "\n", - " maximum holdfast note best \n", - "0.0 0.0 1 0.000000 \n", - "coef_asc_alameda NaN 0 -0.109200 \n", - "coef_asc_san_francisco NaN 0 -2.456059 \n", - "coef_asc_santa_clara NaN 0 0.211800 \n", - "coef_fewer_autos_than_workers NaN 0 -1.619489 \n", - "coef_hh_size_4_up NaN 0 0.279145 \n", - "coef_income_high NaN 0 -0.053120 \n", - "coef_income_very_high NaN 0 0.296661 \n", - "coef_more_autos_than_workers NaN 0 0.223434 " + " maximum nullvalue holdfast \n", + "param_name \n", + "0.0 0.0 0.0 1 \n", + "coef_asc_alameda 50.0 0.0 0 \n", + "coef_asc_san_francisco 50.0 0.0 0 \n", + "coef_asc_santa_clara 50.0 0.0 0 \n", + "coef_fewer_autos_than_workers 50.0 0.0 0 \n", + "coef_hh_size_4_up 50.0 0.0 0 \n", + "coef_income_high 50.0 0.0 0 \n", + "coef_income_very_high 50.0 0.0 0 \n", + "coef_more_autos_than_workers 50.0 0.0 0 " ] }, "metadata": {}, "output_type": "display_data" }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 0.0 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n" - ] - }, { "data": { "text/html": [ @@ -1023,38 +1073,38 @@ " \n", " \n", " coef_asc_alameda\n", - " -0.109200\n", + " -0.141547\n", " \n", " \n", " coef_asc_san_francisco\n", - " -2.456059\n", + " -2.630212\n", " \n", " \n", " coef_asc_santa_clara\n", - " 0.211800\n", + " 0.188205\n", " \n", " \n", " coef_fewer_autos_than_workers\n", - " -1.619489\n", + " -1.407827\n", " \n", " \n", " coef_hh_size_4_up\n", - " 0.279145\n", + " 0.264779\n", " \n", " \n", " coef_income_high\n", - " -0.053120\n", + " 0.217818\n", " \n", " \n", " coef_income_very_high\n", - " 0.296661\n", + " 0.235389\n", " \n", " \n", " coef_more_autos_than_workers\n", - " 0.223434\n", + " 0.225131\n", " \n", " \n", - "loglike-484.0908426547178d_loglike\n", + "
logloss0.5636931088124669d_logloss\n", " \n", " \n", " \n", @@ -1068,75 +1118,75 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - "
coef_asc_alameda0.0000000.000061
coef_asc_san_francisco0.0003990.000074
coef_asc_santa_clara0.0000000.000008
coef_fewer_autos_than_workers0.0001830.000150
coef_hh_size_4_up0.000210-0.000075
coef_income_high0.0003640.000317
coef_income_very_high-0.000061-0.000092
coef_more_autos_than_workers0.0001070.000781
nit10nfev19njev10status0message'Optimization terminated successfully'successTrueelapsed_time0:00:00.810470method'slsqp'n_cases2582iteration_number10logloss0.1874867709739418" + "nit7nfev7njev7status0message'Optimization terminated successfully'successTrueelapsed_time0:00:00.092472method'slsqp'n_cases28281iteration_number7loglike-15941.804810325377" ], "text/plain": [ "┣ x: 0.0 0.000000\n", - "┃ coef_asc_alameda -0.109200\n", - "┃ coef_asc_san_francisco -2.456059\n", - "┃ coef_asc_santa_clara 0.211800\n", - "┃ coef_fewer_autos_than_workers -1.619489\n", - "┃ coef_hh_size_4_up 0.279145\n", - "┃ coef_income_high -0.053120\n", - "┃ coef_income_very_high 0.296661\n", - "┃ coef_more_autos_than_workers 0.223434\n", + "┃ coef_asc_alameda -0.141547\n", + "┃ coef_asc_san_francisco -2.630212\n", + "┃ coef_asc_santa_clara 0.188205\n", + "┃ coef_fewer_autos_than_workers -1.407827\n", + "┃ coef_hh_size_4_up 0.264779\n", + "┃ coef_income_high 0.217818\n", + "┃ coef_income_very_high 0.235389\n", + "┃ coef_more_autos_than_workers 0.225131\n", "┃ dtype: float64\n", - "┣ loglike: -484.0908426547178\n", - "┣ d_loglike: 0.0 0.000000\n", - "┃ coef_asc_alameda 0.000000\n", - "┃ coef_asc_san_francisco 0.000399\n", - "┃ coef_asc_santa_clara 0.000000\n", - "┃ coef_fewer_autos_than_workers 0.000183\n", - "┃ coef_hh_size_4_up 0.000210\n", - "┃ coef_income_high 0.000364\n", - "┃ coef_income_very_high -0.000061\n", - "┃ coef_more_autos_than_workers 0.000107\n", + "┣ logloss: 0.5636931088124669\n", + "┣ d_logloss: 0.0 0.000000\n", + "┃ coef_asc_alameda 0.000061\n", + "┃ coef_asc_san_francisco 0.000074\n", + "┃ coef_asc_santa_clara 0.000008\n", + "┃ coef_fewer_autos_than_workers 0.000150\n", + "┃ coef_hh_size_4_up -0.000075\n", + "┃ coef_income_high 0.000317\n", + "┃ coef_income_very_high -0.000092\n", + "┃ coef_more_autos_than_workers 0.000781\n", "┃ dtype: float64\n", - "┣ nit: 10\n", - "┣ nfev: 19\n", - "┣ njev: 10\n", + "┣ nit: 7\n", + "┣ nfev: 7\n", + "┣ njev: 7\n", "┣ status: 0\n", "┣ message: 'Optimization terminated successfully'\n", "┣ success: True\n", - "┣ elapsed_time: datetime.timedelta(microseconds=810470)\n", + "┣ elapsed_time: datetime.timedelta(microseconds=92472)\n", "┣ method: 'slsqp'\n", - "┣ n_cases: 2582\n", - "┣ iteration_number: 10\n", - "┣ logloss: 0.1874867709739418" + "┣ n_cases: 28281\n", + "┣ iteration_number: 7\n", + "┣ loglike: -15941.804810325377" ] }, - "execution_count": 9, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -1154,119 +1204,136 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Value Std Err t Stat Signif Like Ratio Null Value Constrained
0.0 0.00 NA NA NA 0.00fixed value
coef_asc_alameda-0.109 0.00 NA[] 0.00 0.00
coef_asc_san_francisco-2.46 0.168-14.65*** NA 0.00
coef_asc_santa_clara 0.212 1.43e-16 BIG*** NA 0.00
coef_fewer_autos_than_workers-1.62 0.220-7.37*** NA 0.00
coef_hh_size_4_up 0.279 0.196 1.43 NA 0.00
coef_income_high-0.0531 0.242-0.22 NA 0.00
coef_income_very_high 0.297 0.208 1.43 NA 0.00
coef_more_autos_than_workers 0.223 0.241 0.93 NA 0.00
" + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ValueStd Errt StatSignifNull ValueConstrained
Parameter      
0.0 0.00 0.00 NA 0.00fixed value
coef_asc_alameda-0.142 0.0310-4.56*** 0.00
coef_asc_san_francisco-2.63 0.0591-44.52*** 0.00
coef_asc_santa_clara 0.188 0.0294 6.40*** 0.00
coef_fewer_autos_than_workers-1.41 0.0366-38.48*** 0.00
coef_hh_size_4_up 0.265 0.0278 9.51*** 0.00
coef_income_high 0.218 0.0307 7.09*** 0.00
coef_income_very_high 0.235 0.0282 8.35*** 0.00
coef_more_autos_than_workers 0.225 0.0294 7.65*** 0.00
\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 10, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -1287,14 +1354,17 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "from activitysim.estimation.larch import update_coefficients\n", - "result_dir = data.edb_directory/\"estimated\"\n", + "\n", + "result_dir = data.edb_directory / \"estimated\"\n", "update_coefficients(\n", - " model, data, result_dir,\n", + " model,\n", + " data,\n", + " result_dir,\n", " output_file=f\"{modelname}_coefficients_revised.csv\",\n", ");" ] @@ -1308,23 +1378,12 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 10, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "model.to_xlsx(\n", - " result_dir/f\"{modelname}_model_estimation.xlsx\", \n", + " result_dir / f\"{modelname}_model_estimation.xlsx\",\n", " data_statistics=False,\n", ")" ] @@ -1340,7 +1399,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -1373,49 +1432,49 @@ " \n", " 0\n", " coef_asc_san_francisco\n", - " -2.456059\n", + " -2.630212\n", " F\n", " \n", " \n", " 1\n", " coef_asc_santa_clara\n", - " 0.211800\n", + " 0.188205\n", " F\n", " \n", " \n", " 2\n", " coef_asc_alameda\n", - " -0.109200\n", + " -0.141547\n", " F\n", " \n", " \n", " 3\n", " coef_income_very_high\n", - " 0.296661\n", + " 0.235389\n", " F\n", " \n", " \n", " 4\n", " coef_income_high\n", - " -0.053120\n", + " 0.217818\n", " F\n", " \n", " \n", " 5\n", " coef_hh_size_4_up\n", - " 0.279145\n", + " 0.264779\n", " F\n", " \n", " \n", " 6\n", " coef_more_autos_than_workers\n", - " 0.223434\n", + " 0.225131\n", " F\n", " \n", " \n", " 7\n", " coef_fewer_autos_than_workers\n", - " -1.619489\n", + " -1.407827\n", " F\n", " \n", " \n", @@ -1424,23 +1483,23 @@ ], "text/plain": [ " coefficient_name value constrain\n", - "0 coef_asc_san_francisco -2.456059 F\n", - "1 coef_asc_santa_clara 0.211800 F\n", - "2 coef_asc_alameda -0.109200 F\n", - "3 coef_income_very_high 0.296661 F\n", - "4 coef_income_high -0.053120 F\n", - "5 coef_hh_size_4_up 0.279145 F\n", - "6 coef_more_autos_than_workers 0.223434 F\n", - "7 coef_fewer_autos_than_workers -1.619489 F" + "0 coef_asc_san_francisco -2.630212 F\n", + "1 coef_asc_santa_clara 0.188205 F\n", + "2 coef_asc_alameda -0.141547 F\n", + "3 coef_income_very_high 0.235389 F\n", + "4 coef_income_high 0.217818 F\n", + "5 coef_hh_size_4_up 0.264779 F\n", + "6 coef_more_autos_than_workers 0.225131 F\n", + "7 coef_fewer_autos_than_workers -1.407827 F" ] }, - "execution_count": 13, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "pd.read_csv(result_dir/f\"{modelname}_coefficients_revised.csv\")" + "pd.read_csv(result_dir / f\"{modelname}_coefficients_revised.csv\")" ] } ], @@ -1451,7 +1510,7 @@ "toc_visible": true }, "kernelspec": { - "display_name": "Python 3", + "display_name": "ESTER", "language": "python", "name": "python3" }, @@ -1465,7 +1524,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.10.15" }, "toc": { "base_numbering": 1, diff --git a/activitysim/examples/example_estimation/notebooks/06_cdap.ipynb b/activitysim/examples/example_estimation/notebooks/06_cdap.ipynb index 72169b9e3..a29ea0a7b 100644 --- a/activitysim/examples/example_estimation/notebooks/06_cdap.ipynb +++ b/activitysim/examples/example_estimation/notebooks/06_cdap.ipynb @@ -23,21 +23,84 @@ "cell_type": "code", "execution_count": 1, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "JAX not found. Some functionality will be unavailable.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'larch': '6.0.32',\n", + " 'sharrow': '2.13.0',\n", + " 'numpy': '1.26.4',\n", + " 'pandas': '1.5.3',\n", + " 'xarray': '2024.3.0',\n", + " 'numba': '0.60.0'}" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "import numpy as np\n", "import pandas as pd\n", - "import larch\n", - "import os" + "import larch as lx\n", + "import os\n", + "\n", + "lx.versions()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For this demo, we will assume that you have already run ActivitySim in estimation\n", + "mode, and saved the required estimation data bundles (EDB's) to disk. See\n", + "the [first notebook](./01_estimation_mode.ipynb) for details. The following module\n", + "will run a script to set everything up if the example data is not already available." ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "EDB directory already populated.\n" + ] + }, + { + "data": { + "text/plain": [ + "PosixPath('test-estimation-data/activitysim-prototype-mtc-extended')" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from est_mode_setup import prepare, backup\n", + "\n", + "prepare()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ - "os.chdir('test')" + "backup(\"output-est-mode/estimation_data_bundle/cdap/cdap_INDIV_AND_HHSIZE1_SPEC.csv\")\n" ] }, { @@ -49,31 +112,35 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": {}, "outputs": [ { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "one-hot encoding choice array\n", - "converting data_ch to \n", - "one-hot encoding choice array\n", - "converting data_ch to \n", - "one-hot encoding choice array\n", - "converting data_ch to \n", - "one-hot encoding choice array\n", - "converting data_ch to \n", - "one-hot encoding choice array\n", - "converting data_ch to \n" + "Reading output-est-mode/estimation_data_bundle/cdap/cdap_model_settings.yaml\n", + "Reading /Users/jpn/Git/est-mode/activitysim/activitysim/examples/example_estimation/notebooks/test-estimation-data/activitysim-prototype-mtc-extended/output-est-mode/final_households.csv\n", + "Reading /Users/jpn/Git/est-mode/activitysim/activitysim/examples/example_estimation/notebooks/test-estimation-data/activitysim-prototype-mtc-extended/output-est-mode/final_persons.csv\n", + "Reading /Users/jpn/Git/est-mode/activitysim/activitysim/examples/example_estimation/notebooks/test-estimation-data/activitysim-prototype-mtc-extended/output-est-mode/estimation_data_bundle/cdap/cdap_coefficients.csv\n", + "Reading /Users/jpn/Git/est-mode/activitysim/activitysim/examples/example_estimation/notebooks/test-estimation-data/activitysim-prototype-mtc-extended/output-est-mode/estimation_data_bundle/cdap/cdap_interaction_coefficients.csv\n", + "Reading /Users/jpn/Git/est-mode/activitysim/activitysim/examples/example_estimation/notebooks/test-estimation-data/activitysim-prototype-mtc-extended/output-est-mode/estimation_data_bundle/cdap/cdap_joint_tour_coefficients.csv\n", + "Including joint tour utility?: False\n", + "Reading /Users/jpn/Git/est-mode/activitysim/activitysim/examples/example_estimation/notebooks/test-estimation-data/activitysim-prototype-mtc-extended/output-est-mode/estimation_data_bundle/cdap/cdap_INDIV_AND_HHSIZE1_SPEC.csv\n", + "Reading /Users/jpn/Git/est-mode/activitysim/activitysim/examples/example_estimation/notebooks/test-estimation-data/activitysim-prototype-mtc-extended/output-est-mode/estimation_data_bundle/cdap/cdap_values_combined.parquet\n" ] } ], "source": [ + "from activitysim.estimation.larch import component_model\n", + "\n", "modelname = \"cdap\"\n", "\n", - "from activitysim.estimation.larch import component_model\n", - "model, data = component_model(modelname, return_data=True)" + "model, data = component_model(\n", + " modelname,\n", + " edb_directory=f\"output-est-mode/estimation_data_bundle/{modelname}/\",\n", + " return_data=True,\n", + ")" ] }, { @@ -92,34 +159,51 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "┣ INDIV_AND_HHSIZE1_SPEC: 'cdap_indiv_and_hhsize1.csv'\n", + "┣ ADD_JOINT_TOUR_UTILITY: False\n", "┣ COEFFICIENTS: 'cdap_coefficients.csv'\n", - "┣ INTERACTION_COEFFICIENTS: 'cdap_interaction_coefficients.csv'\n", - "┣ FIXED_RELATIVE_PROPORTIONS_SPEC: 'cdap_fixed_relative_proportions.csv'\n", - "┣ CONSTANTS: ┣ FULL: 1\n", - "┃ ┣ PART: 2\n", - "┃ ┣ UNIVERSITY: 3\n", + "┣ CONSTANTS: ┣ DRIVING: 6\n", + "┃ ┣ FULL: 1\n", "┃ ┣ NONWORK: 4\n", + "┃ ┣ PART: 2\n", + "┃ ┣ PRESCHOOL: 8\n", "┃ ┣ RETIRED: 5\n", - "┃ ┣ DRIVING: 6\n", "┃ ┣ SCHOOL: 7\n", - "┃ ┣ PRESCHOOL: 8\n", - "┣ PERSON_TYPE_MAP: ┣ WORKER: [1, 2]\n", - "┃ ┣ CHILD: [6, 7, 8]\n", - "┣ annotate_persons: ┣ SPEC: 'annotate_persons_cdap'\n", - "┃ ┣ DF: 'persons'\n", - "┣ annotate_households: ┣ SPEC: 'annotate_households_cdap'\n", - "┃ ┣ DF: 'households'\n", - "┃ ┣ TABLES: ['persons']" + "┃ ┣ UNIVERSITY: 3\n", + "┣ FIXED_RELATIVE_PROPORTIONS_SPEC: 'cdap_fixed_relative_proportions.csv'\n", + "┣ INDIV_AND_HHSIZE1_SPEC: 'cdap_indiv_and_hhsize1.csv'\n", + "┣ INTERACTION_COEFFICIENTS: 'cdap_interaction_coefficients.csv'\n", + "┣ JOINT_TOUR_COEFFICIENTS: 'cdap_joint_tour_coefficients.csv'\n", + "┣ JOINT_TOUR_USEFUL_COLUMNS: None\n", + "┣ PERSON_TYPE_MAP: ┣ CHILD: ---\n", + "┃ ┃ - 6\n", + "┃ ┃ - 7\n", + "┃ ┃ - 8\n", + "┃ ┃ ...\n", + "┃ ┣ WORKER: ---\n", + "┃ ┃ - 1\n", + "┃ ┃ - 2\n", + "┃ ┃ ...\n", + "┣ annotate_households: ┣ DF: 'households'\n", + "┃ ┣ SPEC: 'annotate_households_cdap'\n", + "┃ ┣ TABLES: ---\n", + "┃ ┃ - persons\n", + "┃ ┃ ...\n", + "┣ annotate_persons: ┣ DF: 'persons'\n", + "┃ ┣ SPEC: 'annotate_persons_cdap'\n", + "┃ ┣ TABLES: None\n", + "┣ compute_settings: None\n", + "┣ source_file_paths: ---\n", + "┃ - /Users/jpn/Git/est-mode/activitysim/activitysim/examples/example_estimation/test-estimation-data/activitysim-prototype-mtc-extended/configs/cdap.yaml\n", + "┃ ..." ] }, - "execution_count": 6, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -137,7 +221,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -161,7 +245,6 @@ " \n", " \n", " \n", - " household_id\n", " home_zone_id\n", " income\n", " hhsize\n", @@ -171,8 +254,8 @@ " sample_rate\n", " income_in_thousands\n", " income_segment\n", + " median_value_of_time\n", " ...\n", - " hh_work_auto_savings_ratio\n", " num_under16_not_at_school\n", " num_travel_active\n", " num_travel_active_adults\n", @@ -182,23 +265,23 @@ " participates_in_jtf_model\n", " joint_tour_frequency\n", " num_hh_joint_tours\n", + " household_id\n", " \n", " \n", " \n", " \n", " 0\n", - " 166\n", - " 71\n", - " 9000\n", - " 1\n", - " 6\n", + " 52\n", " 0\n", + " 1\n", + " 4\n", + " 1\n", " 0\n", " 1\n", - " 9.00\n", + " 0.0\n", " 1\n", + " 6.01\n", " ...\n", - " 0.0\n", " 0\n", " 1\n", " 1\n", @@ -208,21 +291,21 @@ " False\n", " 0_tours\n", " 0\n", + " 45\n", " \n", " \n", " 1\n", - " 197\n", - " 80\n", - " 4400\n", + " 124\n", + " 14000\n", + " 1\n", + " 4\n", " 1\n", - " 6\n", - " 0\n", " 0\n", " 1\n", - " 4.40\n", + " 14.0\n", " 1\n", + " 6.01\n", " ...\n", - " 0.0\n", " 0\n", " 1\n", " 1\n", @@ -232,21 +315,21 @@ " False\n", " 0_tours\n", " 0\n", + " 499\n", " \n", " \n", " 2\n", - " 268\n", - " 91\n", - " 1200\n", + " 132\n", + " 9600\n", " 1\n", " 4\n", " 1\n", " 0\n", " 1\n", - " 1.20\n", + " 9.6\n", " 1\n", + " 6.01\n", " ...\n", - " 0.0\n", " 0\n", " 1\n", " 1\n", @@ -256,21 +339,21 @@ " False\n", " 0_tours\n", " 0\n", + " 659\n", " \n", " \n", " 3\n", - " 375\n", - " 105\n", - " 0\n", + " 148\n", + " 18000\n", " 1\n", " 6\n", " 1\n", " 0\n", " 1\n", - " 0.00\n", + " 18.0\n", " 1\n", + " 6.01\n", " ...\n", - " 0.0\n", " 0\n", " 1\n", " 1\n", @@ -280,21 +363,21 @@ " False\n", " 0_tours\n", " 0\n", + " 948\n", " \n", " \n", " 4\n", - " 387\n", - " 112\n", - " 15770\n", + " 166\n", + " 14000\n", " 1\n", - " 6\n", + " 4\n", " 1\n", " 0\n", " 1\n", - " 15.77\n", + " 14.0\n", " 1\n", + " 6.01\n", " ...\n", - " 0.0\n", " 0\n", " 1\n", " 1\n", @@ -304,6 +387,7 @@ " False\n", " 0_tours\n", " 0\n", + " 1276\n", " \n", " \n", " ...\n", @@ -330,19 +414,18 @@ " ...\n", " \n", " \n", - " 1995\n", - " 2863464\n", - " 5\n", + " 19995\n", + " 1386\n", " 0\n", " 1\n", " 0\n", " 1\n", " 0\n", " 1\n", - " 0.00\n", + " 0.0\n", " 1\n", + " 6.01\n", " ...\n", - " 0.0\n", " 0\n", " 1\n", " 1\n", @@ -352,45 +435,45 @@ " False\n", " 0_tours\n", " 0\n", + " 2874468\n", " \n", " \n", - " 1996\n", - " 2863483\n", - " 20\n", + " 19996\n", + " 1402\n", " 0\n", " 1\n", " 0\n", - " 1\n", + " 0\n", " 0\n", " 1\n", - " 0.00\n", + " 0.0\n", " 1\n", + " 6.01\n", " ...\n", - " 0.0\n", " 0\n", - " 1\n", - " 1\n", " 0\n", " 0\n", - " 1\n", + " 0\n", + " 0\n", + " 0\n", " False\n", " 0_tours\n", " 0\n", + " 2874567\n", " \n", " \n", - " 1997\n", - " 2863806\n", - " 85\n", + " 19997\n", + " 1402\n", " 0\n", " 1\n", " 0\n", " 1\n", " 0\n", " 1\n", - " 0.00\n", + " 0.0\n", " 1\n", + " 6.01\n", " ...\n", - " 0.0\n", " 0\n", " 1\n", " 1\n", @@ -400,21 +483,21 @@ " False\n", " 0_tours\n", " 0\n", + " 2874576\n", " \n", " \n", - " 1998\n", - " 2864518\n", - " 115\n", + " 19998\n", + " 1421\n", " 0\n", " 1\n", " 0\n", " 1\n", " 0\n", " 1\n", - " 0.00\n", + " 0.0\n", " 1\n", + " 6.01\n", " ...\n", - " 0.0\n", " 0\n", " 1\n", " 1\n", @@ -424,21 +507,21 @@ " False\n", " 0_tours\n", " 0\n", + " 2874826\n", " \n", " \n", - " 1999\n", - " 2864688\n", - " 136\n", + " 19999\n", + " 1437\n", " 0\n", " 1\n", " 0\n", " 1\n", " 0\n", " 1\n", - " 0.00\n", + " 0.0\n", " 1\n", + " 6.01\n", " ...\n", - " 0.0\n", " 0\n", " 1\n", " 1\n", @@ -448,108 +531,109 @@ " False\n", " 0_tours\n", " 0\n", + " 2875013\n", " \n", " \n", "\n", - "

2000 rows × 35 columns

\n", + "

20000 rows × 35 columns

\n", "" ], "text/plain": [ - " household_id home_zone_id income hhsize HHT auto_ownership \\\n", - "0 166 71 9000 1 6 0 \n", - "1 197 80 4400 1 6 0 \n", - "2 268 91 1200 1 4 1 \n", - "3 375 105 0 1 6 1 \n", - "4 387 112 15770 1 6 1 \n", - "... ... ... ... ... ... ... \n", - "1995 2863464 5 0 1 0 1 \n", - "1996 2863483 20 0 1 0 1 \n", - "1997 2863806 85 0 1 0 1 \n", - "1998 2864518 115 0 1 0 1 \n", - "1999 2864688 136 0 1 0 1 \n", + " home_zone_id income hhsize HHT auto_ownership num_workers \\\n", + "0 52 0 1 4 1 0 \n", + "1 124 14000 1 4 1 0 \n", + "2 132 9600 1 4 1 0 \n", + "3 148 18000 1 6 1 0 \n", + "4 166 14000 1 4 1 0 \n", + "... ... ... ... ... ... ... \n", + "19995 1386 0 1 0 1 0 \n", + "19996 1402 0 1 0 0 0 \n", + "19997 1402 0 1 0 1 0 \n", + "19998 1421 0 1 0 1 0 \n", + "19999 1437 0 1 0 1 0 \n", "\n", - " num_workers sample_rate income_in_thousands income_segment ... \\\n", - "0 0 1 9.00 1 ... \n", - "1 0 1 4.40 1 ... \n", - "2 0 1 1.20 1 ... \n", - "3 0 1 0.00 1 ... \n", - "4 0 1 15.77 1 ... \n", - "... ... ... ... ... ... \n", - "1995 0 1 0.00 1 ... \n", - "1996 0 1 0.00 1 ... \n", - "1997 0 1 0.00 1 ... \n", - "1998 0 1 0.00 1 ... \n", - "1999 0 1 0.00 1 ... \n", + " sample_rate income_in_thousands income_segment median_value_of_time \\\n", + "0 1 0.0 1 6.01 \n", + "1 1 14.0 1 6.01 \n", + "2 1 9.6 1 6.01 \n", + "3 1 18.0 1 6.01 \n", + "4 1 14.0 1 6.01 \n", + "... ... ... ... ... \n", + "19995 1 0.0 1 6.01 \n", + "19996 1 0.0 1 6.01 \n", + "19997 1 0.0 1 6.01 \n", + "19998 1 0.0 1 6.01 \n", + "19999 1 0.0 1 6.01 \n", "\n", - " hh_work_auto_savings_ratio num_under16_not_at_school \\\n", - "0 0.0 0 \n", - "1 0.0 0 \n", - "2 0.0 0 \n", - "3 0.0 0 \n", - "4 0.0 0 \n", - "... ... ... \n", - "1995 0.0 0 \n", - "1996 0.0 0 \n", - "1997 0.0 0 \n", - "1998 0.0 0 \n", - "1999 0.0 0 \n", + " ... num_under16_not_at_school num_travel_active \\\n", + "0 ... 0 1 \n", + "1 ... 0 1 \n", + "2 ... 0 1 \n", + "3 ... 0 1 \n", + "4 ... 0 1 \n", + "... ... ... ... \n", + "19995 ... 0 1 \n", + "19996 ... 0 0 \n", + "19997 ... 0 1 \n", + "19998 ... 0 1 \n", + "19999 ... 0 1 \n", "\n", - " num_travel_active num_travel_active_adults \\\n", - "0 1 1 \n", - "1 1 1 \n", - "2 1 1 \n", - "3 1 1 \n", - "4 1 1 \n", - "... ... ... \n", - "1995 1 1 \n", - "1996 1 1 \n", - "1997 1 1 \n", - "1998 1 1 \n", - "1999 1 1 \n", + " num_travel_active_adults num_travel_active_preschoolers \\\n", + "0 1 0 \n", + "1 1 0 \n", + "2 1 0 \n", + "3 1 0 \n", + "4 1 0 \n", + "... ... ... \n", + "19995 1 0 \n", + "19996 0 0 \n", + "19997 1 0 \n", + "19998 1 0 \n", + "19999 1 0 \n", "\n", - " num_travel_active_preschoolers num_travel_active_children \\\n", - "0 0 0 \n", - "1 0 0 \n", - "2 0 0 \n", - "3 0 0 \n", - "4 0 0 \n", - "... ... ... \n", - "1995 0 0 \n", - "1996 0 0 \n", - "1997 0 0 \n", - "1998 0 0 \n", - "1999 0 0 \n", + " num_travel_active_children num_travel_active_non_preschoolers \\\n", + "0 0 1 \n", + "1 0 1 \n", + "2 0 1 \n", + "3 0 1 \n", + "4 0 1 \n", + "... ... ... \n", + "19995 0 1 \n", + "19996 0 0 \n", + "19997 0 1 \n", + "19998 0 1 \n", + "19999 0 1 \n", "\n", - " num_travel_active_non_preschoolers participates_in_jtf_model \\\n", - "0 1 False \n", - "1 1 False \n", - "2 1 False \n", - "3 1 False \n", - "4 1 False \n", - "... ... ... \n", - "1995 1 False \n", - "1996 1 False \n", - "1997 1 False \n", - "1998 1 False \n", - "1999 1 False \n", + " participates_in_jtf_model joint_tour_frequency num_hh_joint_tours \\\n", + "0 False 0_tours 0 \n", + "1 False 0_tours 0 \n", + "2 False 0_tours 0 \n", + "3 False 0_tours 0 \n", + "4 False 0_tours 0 \n", + "... ... ... ... \n", + "19995 False 0_tours 0 \n", + "19996 False 0_tours 0 \n", + "19997 False 0_tours 0 \n", + "19998 False 0_tours 0 \n", + "19999 False 0_tours 0 \n", "\n", - " joint_tour_frequency num_hh_joint_tours \n", - "0 0_tours 0 \n", - "1 0_tours 0 \n", - "2 0_tours 0 \n", - "3 0_tours 0 \n", - "4 0_tours 0 \n", - "... ... ... \n", - "1995 0_tours 0 \n", - "1996 0_tours 0 \n", - "1997 0_tours 0 \n", - "1998 0_tours 0 \n", - "1999 0_tours 0 \n", + " household_id \n", + "0 45 \n", + "1 499 \n", + "2 659 \n", + "3 948 \n", + "4 1276 \n", + "... ... \n", + "19995 2874468 \n", + "19996 2874567 \n", + "19997 2874576 \n", + "19998 2874826 \n", + "19999 2875013 \n", "\n", - "[2000 rows x 35 columns]" + "[20000 rows x 35 columns]" ] }, - "execution_count": 7, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -567,7 +651,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -602,14 +686,14 @@ " pstudent\n", " ptype\n", " ...\n", - " COLLFTE\n", - " COLLPTE\n", - " TOPOLOGY\n", - " TERMINAL\n", - " household_density\n", - " employment_density\n", - " density_index\n", - " is_cbd\n", + " auOpRetail\n", + " auOpTotal\n", + " trPkRetail\n", + " trPkTotal\n", + " trOpRetail\n", + " trOpTotal\n", + " nmRetail\n", + " nmTotal\n", " chunk_id\n", " cdap_rank\n", " \n", @@ -617,122 +701,122 @@ " \n", " \n", " 0\n", - " 166\n", + " 45\n", " N\n", " N\n", - " 166\n", - " 54\n", + " 45\n", + " 48\n", + " 1\n", " 1\n", - " 2\n", " 3\n", " 3\n", " 4\n", " ...\n", - " 0.00000\n", - " 0.00000\n", - " 1\n", - " 3.21263\n", - " 24.783133\n", - " 31.566265\n", - " 13.883217\n", - " False\n", + " 9.924660\n", + " 12.562639\n", + " 4.193237\n", + " 6.875144\n", + " 3.952128\n", + " 6.590585\n", + " 2.194792\n", + " 6.359507\n", " 0\n", " 1\n", " \n", " \n", " 1\n", - " 197\n", + " 499\n", " N\n", " N\n", - " 197\n", - " 46\n", + " 499\n", + " 50\n", + " 1\n", " 1\n", - " 2\n", " 3\n", " 3\n", " 4\n", " ...\n", - " 0.00000\n", - " 0.00000\n", - " 1\n", - " 3.68156\n", - " 56.783784\n", - " 10.459459\n", - " 8.832526\n", - " False\n", + " 10.284673\n", + " 12.868645\n", + " 6.639963\n", + " 9.364105\n", + " 6.531079\n", + " 9.259002\n", + " 5.955868\n", + " 7.795004\n", " 1\n", " 1\n", " \n", " \n", " 2\n", - " 268\n", + " 659\n", " N\n", " N\n", - " 268\n", - " 46\n", + " 659\n", + " 52\n", " 1\n", " 1\n", " 3\n", " 3\n", " 4\n", " ...\n", - " 3598.08521\n", - " 0.00000\n", - " 1\n", - " 3.29100\n", - " 11.947644\n", - " 45.167539\n", - " 9.448375\n", - " True\n", - " 2\n", + " 10.247505\n", + " 12.762286\n", + " 6.001466\n", + " 8.409169\n", + " 5.786652\n", + " 8.279842\n", + " 5.798886\n", + " 7.900061\n", + " 0\n", " 1\n", " \n", " \n", " 3\n", - " 375\n", + " 948\n", " N\n", " N\n", - " 375\n", - " 54\n", + " 948\n", + " 61\n", " 1\n", " 2\n", " 3\n", " 3\n", " 4\n", " ...\n", - " 0.00000\n", - " 0.00000\n", + " 10.150335\n", + " 12.777635\n", + " 5.172974\n", + " 7.850360\n", + " 4.893929\n", + " 7.571579\n", + " 4.895220\n", + " 7.409345\n", " 1\n", - " 4.11499\n", - " 73.040169\n", - " 28.028350\n", - " 20.255520\n", - " True\n", - " 3\n", " 1\n", " \n", " \n", " 4\n", - " 387\n", - " N\n", + " 1276\n", + " H\n", " N\n", - " 387\n", - " 44\n", + " 1276\n", + " 46\n", + " 1\n", " 1\n", - " 2\n", " 3\n", " 3\n", " 4\n", " ...\n", - " 227.78223\n", - " 41.22827\n", - " 1\n", - " 3.83527\n", - " 26.631579\n", - " 45.868421\n", - " 16.848945\n", - " False\n", - " 4\n", + " 10.258471\n", + " 12.759529\n", + " 6.039019\n", + " 8.348963\n", + " 5.778785\n", + " 8.070525\n", + " 6.073537\n", + " 7.851667\n", + " 2\n", " 1\n", " \n", " \n", @@ -760,187 +844,187 @@ " ...\n", " \n", " \n", - " 4400\n", - " 7554799\n", + " 53069\n", + " 7565803\n", " N\n", " N\n", - " 2863464\n", - " 93\n", + " 2874468\n", + " 85\n", " 1\n", " 2\n", " 3\n", " 3\n", " 5\n", " ...\n", - " 72.14684\n", - " 0.00000\n", - " 1\n", - " 5.52555\n", - " 38.187500\n", - " 978.875000\n", - " 36.753679\n", - " False\n", - " 1995\n", + " 8.113608\n", + " 10.265845\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 9998\n", " 1\n", " \n", " \n", - " 4401\n", - " 7554818\n", - " N\n", - " N\n", - " 2863483\n", - " 68\n", - " 1\n", + " 53070\n", + " 7565902\n", + " H\n", + " H\n", + " 2874567\n", + " 87\n", " 1\n", + " 2\n", " 3\n", " 3\n", " 5\n", " ...\n", - " 0.00000\n", - " 0.00000\n", - " 3\n", - " 3.99027\n", - " 39.838272\n", - " 71.693001\n", - " 25.608291\n", - " True\n", - " 1996\n", + " 6.560015\n", + " 8.886403\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 9997\n", " 1\n", " \n", " \n", - " 4402\n", - " 7555141\n", + " 53071\n", + " 7565911\n", " N\n", " N\n", - " 2863806\n", - " 93\n", + " 2874576\n", + " 85\n", " 1\n", " 2\n", " 3\n", " 3\n", " 5\n", " ...\n", - " 0.00000\n", - " 0.00000\n", - " 1\n", - " 4.27539\n", - " 51.675676\n", - " 47.216216\n", - " 24.672699\n", - " False\n", - " 1997\n", + " 6.560015\n", + " 8.886403\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 9999\n", " 1\n", " \n", " \n", - " 4403\n", - " 7555853\n", + " 53072\n", + " 7566161\n", " N\n", " N\n", - " 2864518\n", - " 71\n", + " 2874826\n", + " 79\n", " 1\n", " 1\n", " 3\n", " 3\n", " 5\n", " ...\n", - " 0.00000\n", - " 0.00000\n", - " 1\n", - " 25.52083\n", - " 15.938148\n", - " 551.353820\n", - " 15.490363\n", - " True\n", - " 1998\n", + " 9.298380\n", + " 11.721935\n", + " 1.052528\n", + " 2.925968\n", + " 0.494776\n", + " 2.006432\n", + " 3.782008\n", + " 6.208875\n", + " 9998\n", " 1\n", " \n", " \n", - " 4404\n", - " 7556023\n", + " 53073\n", + " 7566348\n", " N\n", " N\n", - " 2864688\n", + " 2875013\n", " 93\n", " 1\n", - " 1\n", + " 2\n", " 3\n", " 3\n", " 5\n", " ...\n", - " 0.00000\n", - " 0.00000\n", - " 1\n", - " 3.29134\n", - " 16.000000\n", - " 31.644068\n", - " 10.626823\n", - " False\n", - " 1999\n", + " 9.588527\n", + " 12.019407\n", + " 3.053361\n", + " 5.871246\n", + " 0.141304\n", + " 0.776133\n", + " 4.090554\n", + " 6.388513\n", + " 9999\n", " 1\n", " \n", " \n", "\n", - "

4405 rows × 110 columns

\n", + "

53074 rows × 110 columns

\n", "" ], "text/plain": [ - " person_id model_choice override_choice household_id age PNUM sex \\\n", - "0 166 N N 166 54 1 2 \n", - "1 197 N N 197 46 1 2 \n", - "2 268 N N 268 46 1 1 \n", - "3 375 N N 375 54 1 2 \n", - "4 387 N N 387 44 1 2 \n", - "... ... ... ... ... ... ... ... \n", - "4400 7554799 N N 2863464 93 1 2 \n", - "4401 7554818 N N 2863483 68 1 1 \n", - "4402 7555141 N N 2863806 93 1 2 \n", - "4403 7555853 N N 2864518 71 1 1 \n", - "4404 7556023 N N 2864688 93 1 1 \n", + " person_id model_choice override_choice household_id age PNUM sex \\\n", + "0 45 N N 45 48 1 1 \n", + "1 499 N N 499 50 1 1 \n", + "2 659 N N 659 52 1 1 \n", + "3 948 N N 948 61 1 2 \n", + "4 1276 H N 1276 46 1 1 \n", + "... ... ... ... ... ... ... ... \n", + "53069 7565803 N N 2874468 85 1 2 \n", + "53070 7565902 H H 2874567 87 1 2 \n", + "53071 7565911 N N 2874576 85 1 2 \n", + "53072 7566161 N N 2874826 79 1 1 \n", + "53073 7566348 N N 2875013 93 1 2 \n", "\n", - " pemploy pstudent ptype ... COLLFTE COLLPTE TOPOLOGY TERMINAL \\\n", - "0 3 3 4 ... 0.00000 0.00000 1 3.21263 \n", - "1 3 3 4 ... 0.00000 0.00000 1 3.68156 \n", - "2 3 3 4 ... 3598.08521 0.00000 1 3.29100 \n", - "3 3 3 4 ... 0.00000 0.00000 1 4.11499 \n", - "4 3 3 4 ... 227.78223 41.22827 1 3.83527 \n", - "... ... ... ... ... ... ... ... ... \n", - "4400 3 3 5 ... 72.14684 0.00000 1 5.52555 \n", - "4401 3 3 5 ... 0.00000 0.00000 3 3.99027 \n", - "4402 3 3 5 ... 0.00000 0.00000 1 4.27539 \n", - "4403 3 3 5 ... 0.00000 0.00000 1 25.52083 \n", - "4404 3 3 5 ... 0.00000 0.00000 1 3.29134 \n", + " pemploy pstudent ptype ... auOpRetail auOpTotal trPkRetail \\\n", + "0 3 3 4 ... 9.924660 12.562639 4.193237 \n", + "1 3 3 4 ... 10.284673 12.868645 6.639963 \n", + "2 3 3 4 ... 10.247505 12.762286 6.001466 \n", + "3 3 3 4 ... 10.150335 12.777635 5.172974 \n", + "4 3 3 4 ... 10.258471 12.759529 6.039019 \n", + "... ... ... ... ... ... ... ... \n", + "53069 3 3 5 ... 8.113608 10.265845 0.000000 \n", + "53070 3 3 5 ... 6.560015 8.886403 0.000000 \n", + "53071 3 3 5 ... 6.560015 8.886403 0.000000 \n", + "53072 3 3 5 ... 9.298380 11.721935 1.052528 \n", + "53073 3 3 5 ... 9.588527 12.019407 3.053361 \n", "\n", - " household_density employment_density density_index is_cbd chunk_id \\\n", - "0 24.783133 31.566265 13.883217 False 0 \n", - "1 56.783784 10.459459 8.832526 False 1 \n", - "2 11.947644 45.167539 9.448375 True 2 \n", - "3 73.040169 28.028350 20.255520 True 3 \n", - "4 26.631579 45.868421 16.848945 False 4 \n", - "... ... ... ... ... ... \n", - "4400 38.187500 978.875000 36.753679 False 1995 \n", - "4401 39.838272 71.693001 25.608291 True 1996 \n", - "4402 51.675676 47.216216 24.672699 False 1997 \n", - "4403 15.938148 551.353820 15.490363 True 1998 \n", - "4404 16.000000 31.644068 10.626823 False 1999 \n", + " trPkTotal trOpRetail trOpTotal nmRetail nmTotal chunk_id \\\n", + "0 6.875144 3.952128 6.590585 2.194792 6.359507 0 \n", + "1 9.364105 6.531079 9.259002 5.955868 7.795004 1 \n", + "2 8.409169 5.786652 8.279842 5.798886 7.900061 0 \n", + "3 7.850360 4.893929 7.571579 4.895220 7.409345 1 \n", + "4 8.348963 5.778785 8.070525 6.073537 7.851667 2 \n", + "... ... ... ... ... ... ... \n", + "53069 0.000000 0.000000 0.000000 0.000000 0.000000 9998 \n", + "53070 0.000000 0.000000 0.000000 0.000000 0.000000 9997 \n", + "53071 0.000000 0.000000 0.000000 0.000000 0.000000 9999 \n", + "53072 2.925968 0.494776 2.006432 3.782008 6.208875 9998 \n", + "53073 5.871246 0.141304 0.776133 4.090554 6.388513 9999 \n", "\n", - " cdap_rank \n", - "0 1 \n", - "1 1 \n", - "2 1 \n", - "3 1 \n", - "4 1 \n", - "... ... \n", - "4400 1 \n", - "4401 1 \n", - "4402 1 \n", - "4403 1 \n", - "4404 1 \n", + " cdap_rank \n", + "0 1 \n", + "1 1 \n", + "2 1 \n", + "3 1 \n", + "4 1 \n", + "... ... \n", + "53069 1 \n", + "53070 1 \n", + "53071 1 \n", + "53072 1 \n", + "53073 1 \n", "\n", - "[4405 rows x 110 columns]" + "[53074 rows x 110 columns]" ] }, - "execution_count": 8, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -958,7 +1042,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -1100,7 +1184,7 @@ "[133 rows x 5 columns]" ] }, - "execution_count": 9, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -1118,7 +1202,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -1210,7 +1294,7 @@ "4 coef_UNAVAILABLE coef_retired_asc_N NaN " ] }, - "execution_count": 10, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -1219,6 +1303,26 @@ "data.spec1.head()" ] }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dict_keys(['edb_directory', 'person_data', 'spec1', 'interaction_coef', 'coefficients', 'households', 'settings', 'joint_coef', 'add_joint'])" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data.keys()" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -1303,7 +1407,7 @@ { "data": { "text/html": [ - "

Iteration 124 [Optimization terminated successfully]

" + "

Iteration 138 [Optimization terminated successfully]

" ], "text/plain": [ "" @@ -1315,7 +1419,7 @@ { "data": { "text/html": [ - "

Best LL = -2354.458830163564

" + "

Best LL = -28223.515541250054

" ], "text/plain": [ "" @@ -1346,70 +1450,74 @@ " \n", " \n", " value\n", + " best\n", " initvalue\n", - " nullvalue\n", " minimum\n", " maximum\n", + " nullvalue\n", " holdfast\n", - " note\n", - " best\n", + " \n", + " \n", + " param_name\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " coef_UNAVAILABLE\n", + " -999.0\n", " -999.000000\n", " -999.000000\n", - " 0.0\n", - " NaN\n", - " NaN\n", - " True\n", - " \n", " -999.000000\n", + " -999.0\n", + " -999.0\n", + " 0.0\n", + " 1\n", " \n", " \n", - " coef_child_who_is_in_school_or_too_young_for_school_interaction_with_off_peak_accessibility_to_retail_N\n", - " 0.856930\n", - " 0.082330\n", + " coef_H_11\n", + " 1.446554\n", + " 1.446554\n", + " 1.626000\n", + " -inf\n", + " inf\n", " 0.0\n", - " NaN\n", - " NaN\n", - " False\n", - " \n", - " 0.856930\n", + " 0\n", " \n", " \n", - " coef_driving_age_child_who_is_in_school_asc_M\n", - " 0.738480\n", - " 2.330919\n", + " coef_H_12\n", + " 0.954554\n", + " 0.954554\n", + " 0.740700\n", + " -inf\n", + " inf\n", " 0.0\n", - " NaN\n", - " NaN\n", - " False\n", - " \n", - " 0.738480\n", + " 0\n", " \n", " \n", - " coef_driving_age_child_who_is_in_school_asc_N\n", - " -8.930886\n", - " -0.599119\n", + " coef_H_124_122_144\n", + " 0.353981\n", + " 0.353981\n", + " 0.957300\n", + " -inf\n", + " inf\n", " 0.0\n", - " NaN\n", - " NaN\n", - " False\n", - " \n", - " -8.930886\n", + " 0\n", " \n", " \n", - " coef_driving_age_child_who_is_in_school_interaction_income_between_50k_and_100k_H\n", - " -0.938531\n", - " -0.503100\n", + " coef_H_126_146\n", + " -0.013374\n", + " -0.013374\n", + " 0.293900\n", + " -inf\n", + " inf\n", " 0.0\n", - " NaN\n", - " NaN\n", - " False\n", - " \n", - " -0.938531\n", + " 0\n", " \n", " \n", " ...\n", @@ -1420,122 +1528,120 @@ " ...\n", " ...\n", " ...\n", - " ...\n", " \n", " \n", - " coef_N_124_122_144\n", - " 0.996710\n", - " 0.349100\n", + " coef_retired_interaction_with_more_cars_than_workers_M\n", + " 2.992000\n", + " 2.992000\n", + " 2.992000\n", + " -inf\n", + " inf\n", " 0.0\n", - " NaN\n", - " NaN\n", - " False\n", - " \n", - " 0.996710\n", + " 0\n", " \n", " \n", - " coef_N_166\n", - " -1.976101\n", - " 0.355300\n", + " coef_retired_interaction_with_more_cars_than_workers_N\n", + " 1.015905\n", + " 1.015905\n", + " 1.056000\n", + " -inf\n", + " inf\n", " 0.0\n", - " NaN\n", - " NaN\n", - " False\n", - " \n", - " -1.976101\n", + " 0\n", " \n", " \n", - " coef_N_222_224_444\n", - " -2.046233\n", - " -1.386000\n", + " coef_retired_interaction_with_peak_accessibility_to_all_employment_M\n", + " 0.279200\n", + " 0.279200\n", + " 0.279200\n", + " -inf\n", + " inf\n", " 0.0\n", - " NaN\n", - " NaN\n", - " False\n", - " \n", - " -2.046233\n", + " 0\n", " \n", " \n", - " coef_N_246_226_446\n", - " -0.859376\n", - " -0.857100\n", + " coef_university_student_asc_M\n", + " 2.169416\n", + " 2.169416\n", + " 2.353595\n", + " -inf\n", + " inf\n", " 0.0\n", - " NaN\n", - " NaN\n", - " False\n", - " \n", - " -0.859376\n", + " 0\n", " \n", " \n", - " coef_N_xxxxx\n", - " -0.825691\n", - " -3.453000\n", + " coef_university_student_asc_N\n", + " 0.489431\n", + " 0.489431\n", + " 0.609710\n", + " -inf\n", + " inf\n", " 0.0\n", - " NaN\n", - " NaN\n", - " False\n", - " \n", - " -0.825691\n", + " 0\n", " \n", " \n", "\n", - "

161 rows × 8 columns

\n", + "

161 rows × 7 columns

\n", "" ], "text/plain": [ - " value initvalue \\\n", - "coef_UNAVAILABLE -999.000000 -999.000000 \n", - "coef_child_who_is_in_school_or_too_young_for_sc... 0.856930 0.082330 \n", - "coef_driving_age_child_who_is_in_school_asc_M 0.738480 2.330919 \n", - "coef_driving_age_child_who_is_in_school_asc_N -8.930886 -0.599119 \n", - "coef_driving_age_child_who_is_in_school_interac... -0.938531 -0.503100 \n", + " value best \\\n", + "param_name \n", + "-999.0 -999.000000 -999.000000 \n", + "coef_H_11 1.446554 1.446554 \n", + "coef_H_12 0.954554 0.954554 \n", + "coef_H_124_122_144 0.353981 0.353981 \n", + "coef_H_126_146 -0.013374 -0.013374 \n", "... ... ... \n", - "coef_N_124_122_144 0.996710 0.349100 \n", - "coef_N_166 -1.976101 0.355300 \n", - "coef_N_222_224_444 -2.046233 -1.386000 \n", - "coef_N_246_226_446 -0.859376 -0.857100 \n", - "coef_N_xxxxx -0.825691 -3.453000 \n", + "coef_retired_interaction_with_more_cars_than_wo... 2.992000 2.992000 \n", + "coef_retired_interaction_with_more_cars_than_wo... 1.015905 1.015905 \n", + "coef_retired_interaction_with_peak_accessibilit... 0.279200 0.279200 \n", + "coef_university_student_asc_M 2.169416 2.169416 \n", + "coef_university_student_asc_N 0.489431 0.489431 \n", "\n", - " nullvalue minimum \\\n", - "coef_UNAVAILABLE 0.0 NaN \n", - "coef_child_who_is_in_school_or_too_young_for_sc... 0.0 NaN \n", - "coef_driving_age_child_who_is_in_school_asc_M 0.0 NaN \n", - "coef_driving_age_child_who_is_in_school_asc_N 0.0 NaN \n", - "coef_driving_age_child_who_is_in_school_interac... 0.0 NaN \n", - "... ... ... \n", - "coef_N_124_122_144 0.0 NaN \n", - "coef_N_166 0.0 NaN \n", - "coef_N_222_224_444 0.0 NaN \n", - "coef_N_246_226_446 0.0 NaN \n", - "coef_N_xxxxx 0.0 NaN \n", + " initvalue minimum \\\n", + "param_name \n", + "-999.0 -999.000000 -999.0 \n", + "coef_H_11 1.626000 -inf \n", + "coef_H_12 0.740700 -inf \n", + "coef_H_124_122_144 0.957300 -inf \n", + "coef_H_126_146 0.293900 -inf \n", + "... ... ... \n", + "coef_retired_interaction_with_more_cars_than_wo... 2.992000 -inf \n", + "coef_retired_interaction_with_more_cars_than_wo... 1.056000 -inf \n", + "coef_retired_interaction_with_peak_accessibilit... 0.279200 -inf \n", + "coef_university_student_asc_M 2.353595 -inf \n", + "coef_university_student_asc_N 0.609710 -inf \n", "\n", - " maximum holdfast note \\\n", - "coef_UNAVAILABLE NaN True \n", - "coef_child_who_is_in_school_or_too_young_for_sc... NaN False \n", - "coef_driving_age_child_who_is_in_school_asc_M NaN False \n", - "coef_driving_age_child_who_is_in_school_asc_N NaN False \n", - "coef_driving_age_child_who_is_in_school_interac... NaN False \n", - "... ... ... ... \n", - "coef_N_124_122_144 NaN False \n", - "coef_N_166 NaN False \n", - "coef_N_222_224_444 NaN False \n", - "coef_N_246_226_446 NaN False \n", - "coef_N_xxxxx NaN False \n", + " maximum nullvalue \\\n", + "param_name \n", + "-999.0 -999.0 0.0 \n", + "coef_H_11 inf 0.0 \n", + "coef_H_12 inf 0.0 \n", + "coef_H_124_122_144 inf 0.0 \n", + "coef_H_126_146 inf 0.0 \n", + "... ... ... \n", + "coef_retired_interaction_with_more_cars_than_wo... inf 0.0 \n", + "coef_retired_interaction_with_more_cars_than_wo... inf 0.0 \n", + "coef_retired_interaction_with_peak_accessibilit... inf 0.0 \n", + "coef_university_student_asc_M inf 0.0 \n", + "coef_university_student_asc_N inf 0.0 \n", "\n", - " best \n", - "coef_UNAVAILABLE -999.000000 \n", - "coef_child_who_is_in_school_or_too_young_for_sc... 0.856930 \n", - "coef_driving_age_child_who_is_in_school_asc_M 0.738480 \n", - "coef_driving_age_child_who_is_in_school_asc_N -8.930886 \n", - "coef_driving_age_child_who_is_in_school_interac... -0.938531 \n", - "... ... \n", - "coef_N_124_122_144 0.996710 \n", - "coef_N_166 -1.976101 \n", - "coef_N_222_224_444 -2.046233 \n", - "coef_N_246_226_446 -0.859376 \n", - "coef_N_xxxxx -0.825691 \n", + " holdfast \n", + "param_name \n", + "-999.0 1 \n", + "coef_H_11 0 \n", + "coef_H_12 0 \n", + "coef_H_124_122_144 0 \n", + "coef_H_126_146 0 \n", + "... ... \n", + "coef_retired_interaction_with_more_cars_than_wo... 0 \n", + "coef_retired_interaction_with_more_cars_than_wo... 0 \n", + "coef_retired_interaction_with_peak_accessibilit... 0 \n", + "coef_university_student_asc_M 0 \n", + "coef_university_student_asc_N 0 \n", "\n", - "[161 rows x 8 columns]" + "[161 rows x 7 columns]" ] }, "metadata": {}, @@ -1545,12 +1651,9 @@ "name": "stderr", "output_type": "stream", "text": [ - ":1: PossibleOverspecification: WARNING: Model is possibly over-specified (hessian is nearly singular).\n", - " r = model.estimate(method='SLSQP', options={'maxiter':1000})\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.7787895067513534e-43 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - ":1: RuntimeWarning: invalid value encountered in sqrt\n", - " r = model.estimate(method='SLSQP', options={'maxiter':1000})\n" + "/Users/jpn/Git/est-mode/larch/src/larch/model/optimization.py:338: UserWarning: SLSQP may not play nicely with unbounded parameters\n", + "if you get poor results, consider setting global bounds with model.set_cap()\n", + " warnings.warn( # infinite bounds # )\n" ] } ], @@ -1566,1704 +1669,4882 @@ { "data": { "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Value Std Err t Stat Signif Like Ratio Null Value
coef_UNAVAILABLE-999. 0.00 NA NA 0.00
coef_child_who_is_in_school_or_too_young_for_school_interaction_with_off_peak_accessibility_to_retail_N 0.857 0.618 1.39 NA 0.00
coef_driving_age_child_who_is_in_school_asc_M 0.738 0.649 1.14 NA 0.00
coef_driving_age_child_who_is_in_school_asc_N-8.93 6.17-1.45 NA 0.00
coef_driving_age_child_who_is_in_school_interaction_income_between_50k_and_100k_H-0.939 0.760-1.23 NA 0.00
coef_driving_age_child_who_is_in_school_interaction_with_fewer_cars_than_workers_H 0.409 0.669 0.61 NA 0.00
coef_driving_age_child_who_is_in_school_interaction_with_income_more_than_100k_H-1.75 0.887-1.97* NA 0.00
coef_driving_age_child_who_is_in_school_interaction_with_less_than_20k_H 0.456 0.807 0.57 NA 0.00
coef_full_time_worker_asc_M 1.03 2.64 0.39 NA 0.00
coef_full_time_worker_asc_N 0.742 0.188 3.95*** NA 0.00
coef_full_time_worker_interaction_with_age_less_than_40_M 0.439 0.131 3.35*** NA 0.00
coef_full_time_worker_interaction_with_female_gender_M 0.0529 0.130 0.41 NA 0.00
coef_full_time_worker_interaction_with_fewer_cars_than_workers_H 0.418 0.192 2.18* NA 0.00
coef_full_time_worker_interaction_with_income_less_than_20k_H 0.359 0.326 1.10 NA 0.00
coef_full_time_worker_intraction_with_peak_accessibility_to_all_employment_M 0.147 0.209 0.70 NA 0.00
coef_non_working_adult_asc_N 0.874 3.96 0.22 NA 0.00
coef_non_working_adult_interaction_with_female_gender_M-0.743 0.0120-62.04*** NA 0.00
coef_non_working_adult_interaction_with_fewer_cars_than_workers_H 0.797 0.336 2.37* NA 0.00
coef_non_working_adult_interaction_with_income_between_50k_and_100k_H-1.23 0.374-3.28** NA 0.00
coef_non_working_adult_interaction_with_income_more_than_100k_H-0.683 0.344-1.98* NA 0.00
coef_non_working_adult_interaction_with_more_cars_than_workers_M 0.651 0.0188 34.73*** NA 0.00
coef_non_working_adult_interaction_with_more_cars_than_workers_N 1.33 0.300 4.42*** NA 0.00
coef_non_working_adult_interaction_with_peak_accessibility_to_all_employment_M 0.231 0.00933 24.80*** NA 0.00
coef_non_working_adult_retired_or_univ_student_interaction_with_off_peak_accessibility_to_all_employment_N 0.0176 0.396 0.04 NA 0.00
coef_part_time_worker_asc_M 4.90 4.19 1.17 NA 0.00
coef_part_time_worker_asc_N 0.659 0.316 2.09* NA 0.00
coef_part_time_worker_interaction_with_income_between_50k_and_100k_H 0.172 0.421 0.41 NA 0.00
coef_part_time_worker_interaction_with_income_less_than_20k_H 0.380 0.411 0.93 NA 0.00
coef_part_time_worker_interaction_with_income_more_than_100k_H-1.36 0.780-1.75 NA 0.00
coef_part_time_worker_interaction_with_income_more_than_100k_N 0.493 0.272 1.81 NA 0.00
coef_part_time_worker_interaction_with_peak_accessibility_to_all_employment_M-0.247 0.330-0.75 NA 0.00
coef_pre_driving_age_child_who_is_in_school_asc_M 3.95 0.527 7.49*** NA 0.00
coef_pre_driving_age_child_who_is_in_school_asc_N-6.81 6.14-1.11 NA 0.00
coef_pre_driving_age_child_who_is_in_school_interaction_with_age_13_to_15_M-1.55 0.475-3.26** NA 0.00
coef_pre_driving_age_child_who_is_in_school_interaction_with_age_13_to_15_N-1.15 0.513-2.25* NA 0.00
coef_pre_driving_age_child_who_is_in_school_interaction_with_age_6_to_9_M-0.670 0.371-1.81 NA 0.00
coef_pre_driving_age_child_who_is_in_school_interaction_with_fewer_cars_than_workers_H 1.10 0.381 2.89** NA 0.00
coef_pre_driving_age_child_who_is_too_young_for_school_asc_M 0.938 0.408 2.30* NA 0.00
coef_pre_driving_age_child_who_is_too_young_for_school_asc_N-8.47 6.15-1.38 NA 0.00
coef_pre_driving_age_child_who_is_too_young_for_school_interaction_with_age_0_to_1_M-0.944 0.359-2.63** NA 0.00
coef_pre_driving_age_child_who_is_too_young_for_school_interaction_with_age_4_to_5_M 0.239 0.412 0.58 NA 0.00
coef_pre_driving_age_child_who_is_too_young_for_school_interaction_with_fewer_cars_than_workers_H-0.0626 0.407-0.15 NA 0.00
coef_pre_driving_age_child_who_is_too_young_for_school_interaction_with_income_between_50k_and_100k_H-0.723 0.506-1.43 NA 0.00
coef_pre_driving_age_child_who_is_too_young_for_school_interaction_with_income_more_than_100k_H-0.783 0.465-1.68 NA 0.00
coef_pre_driving_age_child_who_is_too_young_for_school_interaction_with_more_cars_than_workers_N 0.772 0.420 1.84 NA 0.00
coef_retired_asc_N 1.54 3.97 0.39 NA 0.00
coef_retired_interaction_with_age_more_than_80_H 1.17 0.248 4.71*** NA 0.00
coef_retired_interaction_with_female_M 0.477 0.00219 218.04*** NA 0.00
coef_retired_interaction_with_fewer_cars_than_workers_H 0.849 0.444 1.91 NA 0.00
coef_retired_interaction_with_income_less_than_20k_H 0.635 0.259 2.45* NA 0.00
coef_retired_interaction_with_more_cars_than_workers_M 2.99 0.00983 304.22*** NA 0.00
coef_retired_interaction_with_more_cars_than_workers_N 0.713 0.256 2.79** NA 0.00
coef_retired_interaction_with_peak_accessibility_to_all_employment_M 0.279 0.0173 16.15*** NA 0.00
coef_university_student_asc_M 2.12 0.255 8.29*** NA 0.00
coef_university_student_asc_N 0.810 3.94 0.21 NA 0.00
-999.0-999. 0.00 NA NA-999.00
coef_H_11 1.48 0.210 7.04*** NA 0.00
coef_H_12-0.0642 0.955-0.07 NA 0.00
coef_H_13 1.49 0.327 4.56*** NA 0.00
coef_H_14 1.21 0.276 4.37*** NA 0.00
coef_H_15 0.966 0.369 2.62** NA 0.00
coef_H_16 1.54 0.345 4.47*** NA 0.00
coef_H_17 1.46 0.227 6.46*** NA 0.00
coef_H_18 1.21 0.309 3.92*** NA 0.00
coef_H_22-20.0 1.16e+03-0.02 NA 0.00
coef_H_23 0.761 1.06 0.72 NA 0.00
coef_H_24 0.966 0.806 1.20 NA 0.00
coef_H_25-18.4 1.22e+04-0.00 NA 0.00
coef_H_26 4.14 1.29 3.20** NA 0.00
coef_H_27 0.402 1.00 0.40 NA 0.00
coef_H_28-17.8 9.45e+03-0.00 NA 0.00
coef_H_33 0.955 0.848 1.13 NA 0.00
coef_H_34 1.56 0.392 3.97*** NA 0.00
coef_H_35-18.3 1.34e+04-0.00 NA 0.00
coef_H_36 1.55 0.0159 97.45*** NA 0.00
coef_H_37 1.55 0.00264 587.28*** NA 0.00
coef_H_38 1.34 0.0149 90.11*** NA 0.00
coef_H_44 1.52 0.412 3.69*** NA 0.00
coef_H_45 2.05 0.499 4.11*** NA 0.00
coef_H_46 0.524 0.00131 399.66*** NA 0.00
coef_H_47 0.811 0.00179 453.41*** NA 0.00
coef_H_48 1.17 0.0131 89.09*** NA 0.00
coef_H_55 1.01 0.517 1.96 NA 0.00
coef_H_56_57_58 0.863 0.0203 42.43*** NA 0.00
coef_H_66 20.8 NA NA[***] 55.85 0.00
coef_H_67-22.2 0.00635-BIG*** NA 0.00
coef_H_68 1.47 0.00299 490.95*** NA 0.00
coef_H_77 2.42 0.504 4.81*** NA 0.00
coef_H_78 18.7 NA NA[***] 7.25 0.00
coef_H_88 1.18 0.582 2.03* NA 0.00
coef_M_11-0.103 0.147-0.70 NA 0.00
coef_M_12 0.243 0.225 1.08 NA 0.00
coef_M_13 0.235 0.156 1.51 NA 0.00
coef_M_16 0.374 0.290 1.29 NA 0.00
coef_M_17-0.124 0.116-1.06 NA 0.00
coef_M_18 0.262 0.167 1.57 NA 0.00
coef_M_22 0.888 0.287 3.10** NA 0.00
coef_M_23 0.170 0.330 0.51 NA 0.00
coef_M_26 1.90 1.13 1.68 NA 0.00
coef_M_27 0.0987 0.189 0.52 NA 0.00
coef_M_28 0.378 0.294 1.28 NA 0.00
coef_M_33 0.470 0.212 2.21* NA 0.00
coef_M_36-0.00210 NA NA[] 0.00 0.00
coef_M_37 0.297 0.000362 822.44*** NA 0.00
coef_M_38 0.225 NA NA[] 0.00 0.00
coef_M_66 19.2 NA NA[***] 35.09 0.00
coef_M_67-21.0 2.08-10.10*** NA 0.00
coef_M_68 0.552 0.000386 BIG*** NA 0.00
coef_M_77 1.17 0.316 3.71*** NA 0.00
coef_M_78-1.62 0.000121-BIG*** NA 0.00
coef_M_88 1.14 0.349 3.28** NA 0.00
coef_N_11 0.776 0.323 2.41* NA 0.00
coef_N_12 0.488 0.429 1.14 NA 0.00
coef_N_13 0.497 0.436 1.14 NA 0.00
coef_N_14-0.360 0.326-1.11 NA 0.00
coef_N_15 0.366 0.242 1.51 NA 0.00
coef_N_16 0.864 0.738 1.17 NA 0.00
coef_N_17-0.155 0.514-0.30 NA 0.00
coef_N_18 0.0616 0.502 0.12 NA 0.00
coef_N_22 0.782 0.611 1.28 NA 0.00
coef_N_23 0.518 0.622 0.83 NA 0.00
coef_N_24 1.21 0.329 3.66*** NA 0.00
coef_N_25-0.304 0.471-0.65 NA 0.00
coef_N_26-17.9 0.143-125.60*** NA 0.00
coef_N_27 0.291 0.521 0.56 NA 0.00
coef_N_28 0.932 0.453 2.06* NA 0.00
coef_N_33 0.976 0.277 3.52*** NA 0.00
coef_N_34-0.197 0.399-0.49 NA 0.00
coef_N_35 0.0721 0.504 0.14 NA 0.00
coef_N_36 1.62 0.00 NA[] 0.00 0.00
coef_N_37 0.516 0.00 NA[] 0.00 0.00
coef_N_38 0.897 0.00 NA[] 0.00 0.00
coef_N_44 0.492 0.450 1.09 NA 0.00
coef_N_45 0.0795 0.354 0.22 NA 0.00
coef_N_46 0.680 0.00 NA[] 0.00 0.00
coef_N_47 0.565 0.00 NA[] 0.00 0.00
coef_N_48 1.16 0.00 NA[] 0.00 0.00
coef_N_55 0.712 0.348 2.04* NA 0.00
coef_N_56_57_58 0.292 0.00 NA[] 0.00 0.00
coef_N_66-3.08 0.00112-BIG*** NA 0.00
coef_N_67-17.1 2.19e+04-0.00 NA 0.00
coef_N_68 1.27 0.00 NA[] 0.00 0.00
coef_N_77 2.27 0.413 5.49*** NA 0.00
coef_N_78-0.396 1.75e-15-BIG*** NA 0.00
coef_N_88-0.184 0.811-0.23 NA 0.00
coef_H_124_122_144 0.693 0.513 1.35 NA 0.00
coef_H_126_146 1.70 1.76 0.97 NA 0.00
coef_H_222_224_244-9.07 1.44e+03-0.01 NA 0.00
coef_H_226_246_446 39.5 1.16e+03 0.03 NA 0.00
coef_H_266_466 0.475 0.00 NA[] 0.00 0.00
coef_H_xxxxx-4.45 1.19-3.74*** NA 0.00
coef_M_111 0.265 0.175 1.51 NA 0.00
coef_M_112_114-0.133 0.365-0.37 NA 0.00
coef_M_666-0.391 0.00 NA[] 0.00 0.00
coef_M_xxxxx-0.0402 0.190-0.21 NA 0.00
coef_N_112_114-0.452 0.881-0.51 NA 0.00
coef_N_124_122_144 0.997 0.535 1.86 NA 0.00
coef_N_166-1.98 1.09e-05-BIG*** NA 0.00
coef_N_222_224_444-2.05 0.981-2.09* NA 0.00
coef_N_246_226_446-0.859 2.50e-18-BIG*** NA 0.00
coef_N_xxxxx-0.826 0.514-1.61 NA 0.00
" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model.parameter_summary()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "TojXWivZsx7M" - }, - "source": [ - "# Output Estimation Results" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [], - "source": [ - "from larch.util.activitysim import update_coefficients\n", - "coefficients = update_coefficients(model, data)" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "result_dir = data.edb_directory/'estimated'" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "os.makedirs(result_dir, exist_ok=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Write the re-estimated coefficients file" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [], - "source": [ - "coefficients.reset_index().to_csv(\n", - " result_dir/\"cdap_coefficients_revised.csv\", \n", - " index=False,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Write the model estimation report, including coefficient t-statistic and log likelihood" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "for hh_size, submodel in enumerate(model, 1):\n", - " if hh_size > 3: \n", - " break \n", - " # the largest HH sizes have massive model reports that \n", - " # Excel doesn't handle well; review them in Jupyter \n", - " # instead if you are interested\n", - " submodel.to_xlsx(\n", - " result_dir/f\"cdap_model_estimation_hhsize{hh_size}.xlsx\", \n", - " data_statistics=False,\n", - " )" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Next Steps\n", - "\n", - "The final step is to either manually or automatically copy the `cdap_coefficients.csv_revised.csv` file to the configs folder, rename it to `cdap_coefficients.csv.csv`, and run ActivitySim in simulation mode." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", + "
\n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - "
coefficient_namevalueconstrain
 ValueStd Errt StatSignifNull Value
Parameter     
0coef_UNAVAILABLE-999.000000T-999.0-999. 0.00 NA 0.00
1coef_full_time_worker_asc_M1.034987Fcoef_H_11 1.45 0.0614 23.55*** 0.00
2coef_full_time_worker_asc_N0.742053Fcoef_H_12 0.955 0.132 7.21*** 0.00
3coef_part_time_worker_asc_M4.900043Fcoef_H_124_122_144 0.354 0.153 2.31* 0.00
4coef_part_time_worker_asc_N0.659214Fcoef_H_126_146-0.0134 0.336-0.04 0.00
............coef_H_13 1.20 0.130 9.21*** 0.00
161coef_N_xxxx-1.346000Fcoef_H_14 0.998 0.0903 11.05*** 0.00
162coef_H_xxxx-3.733000Fcoef_H_15 1.18 0.0922 12.76*** 0.00
163coef_M_xxxxx-0.040214Fcoef_H_16 1.85 0.102 18.08*** 0.00
164coef_N_xxxxx-0.825691Fcoef_H_17 1.34 0.0557 24.07*** 0.00
165coef_H_xxxxx-4.449197Fcoef_H_18 0.803 0.109 7.36*** 0.00
\n", - "

166 rows × 3 columns

\n", - "
" - ], - "text/plain": [ - " coefficient_name value constrain\n", - "0 coef_UNAVAILABLE -999.000000 T\n", - "1 coef_full_time_worker_asc_M 1.034987 F\n", - "2 coef_full_time_worker_asc_N 0.742053 F\n", - "3 coef_part_time_worker_asc_M 4.900043 F\n", - "4 coef_part_time_worker_asc_N 0.659214 F\n", - ".. ... ... ...\n", - "161 coef_N_xxxx -1.346000 F\n", - "162 coef_H_xxxx -3.733000 F\n", - "163 coef_M_xxxxx -0.040214 F\n", - "164 coef_N_xxxxx -0.825691 F\n", - "165 coef_H_xxxxx -4.449197 F\n", - "\n", - "[166 rows x 3 columns]" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "pd.read_csv(result_dir/\"cdap_coefficients_revised.csv\")" + " \n", + " coef_H_22\n", + "  1.66\n", + "  0.215\n", + "  7.76\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_H_222_224_244\n", + "  0.0747\n", + "  0.225\n", + "  0.33\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_H_226_246_446\n", + "  0.0745\n", + "  0.683\n", + "  0.11\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_H_23\n", + "  1.68\n", + "  0.209\n", + "  8.02\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_H_24\n", + "  1.20\n", + "  0.165\n", + "  7.27\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_H_25\n", + " -0.0811\n", + "  0.278\n", + " -0.29\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_H_26\n", + "  2.83\n", + "  0.239\n", + "  11.83\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_H_266_466\n", + "  1.24\n", + "  0.650\n", + "  1.91\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_H_27\n", + "  0.803\n", + "  0.158\n", + "  5.08\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_H_28\n", + "  0.941\n", + "  0.187\n", + "  5.05\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_H_33\n", + "  0.359\n", + "  0.448\n", + "  0.80\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_H_34\n", + "  1.54\n", + "  0.131\n", + "  11.80\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_H_35\n", + "  0.211\n", + "  0.389\n", + "  0.54\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_H_36\n", + "  1.55\n", + "  2.55e-13\n", + "  BIG\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_H_37\n", + "  1.55\n", + "  NA\n", + "  NA\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_H_38\n", + "  1.34\n", + "  NA\n", + "  NA\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_H_44\n", + "  1.09\n", + "  0.0884\n", + "  12.29\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_H_45\n", + "  1.13\n", + "  0.139\n", + "  8.18\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_H_46\n", + "  0.524\n", + "  9.04e-13\n", + "  BIG\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_H_47\n", + "  0.811\n", + "  4.46e-13\n", + "  BIG\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_H_48\n", + "  1.17\n", + "  2.26e-13\n", + "  BIG\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_H_55\n", + "  1.22\n", + "  0.166\n", + "  7.37\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_H_56_57_58\n", + "  0.863\n", + "  1.52e-13\n", + "  BIG\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_H_66\n", + "  1.36\n", + "  0.299\n", + "  4.56\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_H_67\n", + "  1.29\n", + "  0.385\n", + "  3.35\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_H_68\n", + "  1.39\n", + "  0.755\n", + "  1.85\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_H_77\n", + "  2.43\n", + "  0.0802\n", + "  30.27\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_H_78\n", + "  1.21\n", + "  0.157\n", + "  7.72\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_H_88\n", + "  0.944\n", + "  0.218\n", + "  4.33\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_H_xxxxx\n", + " -3.46\n", + "  0.269\n", + " -12.86\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_M_11\n", + "  0.00775\n", + "  0.0439\n", + "  0.18\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_M_111\n", + "  0.158\n", + "  0.0551\n", + "  2.87\n", + " **\n", + " 0.00\n", + " \n", + " \n", + " coef_M_112_114\n", + "  0.297\n", + "  0.0900\n", + "  3.30\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_M_12\n", + " -0.109\n", + "  0.0595\n", + " -1.83\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_M_13\n", + "  0.195\n", + "  0.0448\n", + "  4.36\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_M_16\n", + "  0.158\n", + "  0.0607\n", + "  2.61\n", + " **\n", + " 0.00\n", + " \n", + " \n", + " coef_M_17\n", + "  0.0366\n", + "  0.0286\n", + "  1.28\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_M_18\n", + "  0.373\n", + "  0.0438\n", + "  8.53\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_M_22\n", + "  0.964\n", + "  0.0932\n", + "  10.34\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_M_23\n", + "  0.107\n", + "  0.0905\n", + "  1.18\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_M_26\n", + "  0.775\n", + "  0.129\n", + "  5.99\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_M_27\n", + "  0.0971\n", + "  0.0483\n", + "  2.01\n", + " *\n", + " 0.00\n", + " \n", + " \n", + " coef_M_28\n", + "  0.515\n", + "  0.0771\n", + "  6.68\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_M_33\n", + "  0.671\n", + "  0.0861\n", + "  7.79\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_M_36\n", + " -0.00210\n", + "  NA\n", + "  NA\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_M_37\n", + "  0.297\n", + "  3.78e-13\n", + "  BIG\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_M_38\n", + "  0.225\n", + "  9.09e-14\n", + "  BIG\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_M_66\n", + "  0.0385\n", + "  0.239\n", + "  0.16\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_M_666\n", + " -0.673\n", + "  1.46\n", + " -0.46\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_M_67\n", + "  0.274\n", + "  0.359\n", + "  0.76\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_M_68\n", + "  0.691\n", + "  0.457\n", + "  1.51\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_M_77\n", + "  0.700\n", + "  0.0584\n", + "  11.99\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_M_78\n", + "  0.141\n", + "  0.0957\n", + "  1.48\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_M_88\n", + "  1.33\n", + "  0.0903\n", + "  14.70\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_M_xxxxx\n", + "  0.103\n", + "  0.0498\n", + "  2.07\n", + " *\n", + " 0.00\n", + " \n", + " \n", + " coef_N_11\n", + "  0.914\n", + "  0.0818\n", + "  11.17\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_N_112_114\n", + "  0.103\n", + "  0.173\n", + "  0.60\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_N_12\n", + "  0.465\n", + "  0.111\n", + "  4.21\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_N_124_122_144\n", + "  0.132\n", + "  0.142\n", + "  0.93\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_N_13\n", + "  0.216\n", + "  0.135\n", + "  1.60\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_N_14\n", + "  0.0331\n", + "  0.0719\n", + "  0.46\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_N_15\n", + "  0.0871\n", + "  0.0882\n", + "  0.99\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_N_16\n", + "  0.308\n", + "  0.222\n", + "  1.38\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_N_166\n", + "  0.434\n", + "  0.521\n", + "  0.83\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_N_17\n", + "  0.277\n", + "  0.0921\n", + "  3.01\n", + " **\n", + " 0.00\n", + " \n", + " \n", + " coef_N_18\n", + "  0.297\n", + "  0.0989\n", + "  3.01\n", + " **\n", + " 0.00\n", + " \n", + " \n", + " coef_N_22\n", + "  0.867\n", + "  0.169\n", + "  5.14\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_N_222_224_444\n", + " -1.34\n", + "  0.194\n", + " -6.91\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_N_23\n", + "  0.160\n", + "  0.200\n", + "  0.80\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_N_24\n", + "  0.596\n", + "  0.0737\n", + "  8.09\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_N_246_226_446\n", + " -0.872\n", + "  5.63\n", + " -0.15\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_N_25\n", + " -0.0263\n", + "  0.107\n", + " -0.25\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_N_26\n", + "  0.125\n", + "  0.436\n", + "  0.29\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_N_27\n", + "  0.733\n", + "  0.0964\n", + "  7.60\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_N_28\n", + "  1.05\n", + "  0.107\n", + "  9.85\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_N_33\n", + "  0.781\n", + "  0.165\n", + "  4.72\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_N_34\n", + " -0.0522\n", + "  0.0980\n", + " -0.53\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_N_35\n", + "  0.390\n", + "  0.151\n", + "  2.59\n", + " **\n", + " 0.00\n", + " \n", + " \n", + " coef_N_36\n", + "  1.62\n", + "  NA\n", + "  NA\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_N_37\n", + "  0.516\n", + "  1.11e-13\n", + "  BIG\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_N_38\n", + "  0.897\n", + "  8.33e-14\n", + "  BIG\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_N_44\n", + "  0.302\n", + "  0.0996\n", + "  3.03\n", + " **\n", + " 0.00\n", + " \n", + " \n", + " coef_N_45\n", + " -0.0876\n", + "  0.0854\n", + " -1.03\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_N_46\n", + "  0.680\n", + "  3.06e-14\n", + "  BIG\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_N_47\n", + "  0.565\n", + "  1.01e-13\n", + "  BIG\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_N_48\n", + "  1.16\n", + "  2.00e-13\n", + "  BIG\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_N_55\n", + "  0.731\n", + "  0.114\n", + "  6.42\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_N_56_57_58\n", + "  0.292\n", + "  NA\n", + "  NA\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_N_66\n", + "  1.60\n", + "  0.492\n", + "  3.25\n", + " **\n", + " 0.00\n", + " \n", + " \n", + " coef_N_67\n", + "  1.29\n", + "  0.666\n", + "  1.93\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_N_68\n", + "  1.14\n", + "  0.897\n", + "  1.27\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_N_77\n", + "  1.27\n", + "  0.109\n", + "  11.65\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_N_78\n", + " -0.429\n", + "  0.549\n", + " -0.78\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_N_88\n", + "  0.645\n", + "  0.151\n", + "  4.26\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_N_xxxxx\n", + " -0.0469\n", + "  0.100\n", + " -0.47\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_UNAVAILABLE\n", + " -999.\n", + "  0.00\n", + "  NA\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_child_who_is_in_school_or_too_young_for_school_interaction_with_off_peak_accessibility_to_retail_N\n", + "  0.138\n", + "  0.0415\n", + "  3.32\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_driving_age_child_who_is_in_school_asc_M\n", + "  2.27\n", + "  0.177\n", + "  12.78\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_driving_age_child_who_is_in_school_asc_N\n", + " -1.09\n", + "  0.445\n", + " -2.45\n", + " *\n", + " 0.00\n", + " \n", + " \n", + " coef_driving_age_child_who_is_in_school_interaction_income_between_50k_and_100k_H\n", + " -0.159\n", + "  0.188\n", + " -0.85\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_driving_age_child_who_is_in_school_interaction_with_fewer_cars_than_workers_H\n", + "  0.839\n", + "  0.168\n", + "  4.98\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_driving_age_child_who_is_in_school_interaction_with_income_more_than_100k_H\n", + " -1.57\n", + "  0.241\n", + " -6.53\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_driving_age_child_who_is_in_school_interaction_with_less_than_20k_H\n", + "  1.46\n", + "  0.217\n", + "  6.75\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_full_time_worker_asc_M\n", + "  2.13\n", + "  0.243\n", + "  8.76\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_full_time_worker_asc_N\n", + "  0.651\n", + "  0.0476\n", + "  13.66\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_full_time_worker_interaction_with_age_less_than_40_M\n", + "  0.210\n", + "  0.0388\n", + "  5.41\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_full_time_worker_interaction_with_female_gender_M\n", + " -0.128\n", + "  0.0394\n", + " -3.24\n", + " **\n", + " 0.00\n", + " \n", + " \n", + " coef_full_time_worker_interaction_with_fewer_cars_than_workers_H\n", + "  0.520\n", + "  0.0567\n", + "  9.16\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_full_time_worker_interaction_with_income_less_than_20k_H\n", + "  0.406\n", + "  0.109\n", + "  3.72\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_full_time_worker_intraction_with_peak_accessibility_to_all_employment_M\n", + "  0.0656\n", + "  0.0203\n", + "  3.23\n", + " **\n", + " 0.00\n", + " \n", + " \n", + " coef_non_working_adult_asc_N\n", + "  0.697\n", + "  0.354\n", + "  1.97\n", + " *\n", + " 0.00\n", + " \n", + " \n", + " coef_non_working_adult_interaction_with_female_gender_M\n", + " -0.743\n", + "  NA\n", + "  NA\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_non_working_adult_interaction_with_fewer_cars_than_workers_H\n", + "  0.977\n", + "  0.136\n", + "  7.19\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_non_working_adult_interaction_with_income_between_50k_and_100k_H\n", + " -0.422\n", + "  0.0839\n", + " -5.03\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_non_working_adult_interaction_with_income_more_than_100k_H\n", + " -0.721\n", + "  0.104\n", + " -6.94\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_non_working_adult_interaction_with_more_cars_than_workers_M\n", + "  0.651\n", + "  7.21e-15\n", + "  BIG\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_non_working_adult_interaction_with_more_cars_than_workers_N\n", + "  0.783\n", + "  0.0828\n", + "  9.45\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_non_working_adult_interaction_with_peak_accessibility_to_all_employment_M\n", + "  0.231\n", + "  1.73e-14\n", + "  BIG\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_non_working_adult_retired_or_univ_student_interaction_with_off_peak_accessibility_to_all_employment_N\n", + "  0.0628\n", + "  0.0353\n", + "  1.78\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_part_time_worker_asc_M\n", + " -0.903\n", + "  0.394\n", + " -2.29\n", + " *\n", + " 0.00\n", + " \n", + " \n", + " coef_part_time_worker_asc_N\n", + "  0.677\n", + "  0.0943\n", + "  7.18\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_part_time_worker_interaction_with_income_between_50k_and_100k_H\n", + " -0.470\n", + "  0.120\n", + " -3.93\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_part_time_worker_interaction_with_income_less_than_20k_H\n", + "  0.274\n", + "  0.126\n", + "  2.18\n", + " *\n", + " 0.00\n", + " \n", + " \n", + " coef_part_time_worker_interaction_with_income_more_than_100k_H\n", + " -0.492\n", + "  0.135\n", + " -3.64\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_part_time_worker_interaction_with_income_more_than_100k_N\n", + "  0.334\n", + "  0.0733\n", + "  4.56\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_part_time_worker_interaction_with_peak_accessibility_to_all_employment_M\n", + "  0.218\n", + "  0.0323\n", + "  6.76\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_pre_driving_age_child_who_is_in_school_asc_M\n", + "  3.24\n", + "  0.104\n", + "  31.22\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_pre_driving_age_child_who_is_in_school_asc_N\n", + " -0.0676\n", + "  0.411\n", + " -0.16\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_pre_driving_age_child_who_is_in_school_interaction_with_age_13_to_15_M\n", + " -0.694\n", + "  0.112\n", + " -6.17\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_pre_driving_age_child_who_is_in_school_interaction_with_age_13_to_15_N\n", + " -0.607\n", + "  0.129\n", + " -4.70\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_pre_driving_age_child_who_is_in_school_interaction_with_age_6_to_9_M\n", + " -0.400\n", + "  0.0833\n", + " -4.80\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_pre_driving_age_child_who_is_in_school_interaction_with_fewer_cars_than_workers_H\n", + "  0.674\n", + "  0.0861\n", + "  7.83\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_pre_driving_age_child_who_is_too_young_for_school_asc_M\n", + "  0.583\n", + "  0.107\n", + "  5.43\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_pre_driving_age_child_who_is_too_young_for_school_asc_N\n", + " -1.39\n", + "  0.416\n", + " -3.34\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_pre_driving_age_child_who_is_too_young_for_school_interaction_with_age_0_to_1_M\n", + " -0.393\n", + "  0.0920\n", + " -4.27\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_pre_driving_age_child_who_is_too_young_for_school_interaction_with_age_4_to_5_M\n", + "  0.669\n", + "  0.0978\n", + "  6.84\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_pre_driving_age_child_who_is_too_young_for_school_interaction_with_fewer_cars_than_workers_H\n", + "  0.243\n", + "  0.134\n", + "  1.81\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_pre_driving_age_child_who_is_too_young_for_school_interaction_with_income_between_50k_and_100k_H\n", + " -0.707\n", + "  0.128\n", + " -5.51\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_pre_driving_age_child_who_is_too_young_for_school_interaction_with_income_more_than_100k_H\n", + " -0.695\n", + "  0.131\n", + " -5.31\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_pre_driving_age_child_who_is_too_young_for_school_interaction_with_more_cars_than_workers_N\n", + "  0.685\n", + "  0.0858\n", + "  7.99\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_retired_asc_N\n", + "  0.434\n", + "  0.359\n", + "  1.21\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_retired_interaction_with_age_more_than_80_H\n", + "  0.730\n", + "  0.0826\n", + "  8.84\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_retired_interaction_with_female_M\n", + "  0.477\n", + "  0.00\n", + "  NA\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_retired_interaction_with_fewer_cars_than_workers_H\n", + "  0.650\n", + "  0.218\n", + "  2.98\n", + " **\n", + " 0.00\n", + " \n", + " \n", + " coef_retired_interaction_with_income_less_than_20k_H\n", + "  0.476\n", + "  0.0845\n", + "  5.63\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_retired_interaction_with_more_cars_than_workers_M\n", + "  2.99\n", + "  0.00\n", + "  NA\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_retired_interaction_with_more_cars_than_workers_N\n", + "  1.02\n", + "  0.0885\n", + "  11.48\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_retired_interaction_with_peak_accessibility_to_all_employment_M\n", + "  0.279\n", + "  0.00\n", + "  NA\n", + " \n", + " 0.00\n", + " \n", + " \n", + " coef_university_student_asc_M\n", + "  2.17\n", + "  0.0864\n", + "  25.12\n", + " ***\n", + " 0.00\n", + " \n", + " \n", + " coef_university_student_asc_N\n", + "  0.489\n", + "  0.356\n", + "  1.38\n", + " \n", + " 0.00\n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.parameter_summary()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "TojXWivZsx7M" + }, + "source": [ + "# Output Estimation Results" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "from activitysim.estimation.larch import update_coefficients\n", + "coefficients = update_coefficients(model, data)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "result_dir = data.edb_directory/'estimated'" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "os.makedirs(result_dir, exist_ok=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Write the re-estimated coefficients file" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "coefficients.reset_index().to_csv(\n", + " result_dir/\"cdap_coefficients_revised.csv\", \n", + " index=False,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Write the model estimation report, including coefficient t-statistic and log likelihood" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "for hh_size, submodel in enumerate(model, 1):\n", + " if hh_size > 3: \n", + " break \n", + " # the largest HH sizes have massive model reports that \n", + " # Excel doesn't handle well; review them in Jupyter \n", + " # instead if you are interested\n", + " submodel.to_xlsx(\n", + " result_dir/f\"cdap_model_estimation_hhsize{hh_size}.xlsx\", \n", + " data_statistics=False,\n", + " )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Next Steps\n", + "\n", + "The final step is to either manually or automatically copy the `cdap_coefficients.csv_revised.csv` file to the configs folder, rename it to `cdap_coefficients.csv.csv`, and run ActivitySim in simulation mode." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
coefficient_namevalueconstrain
0coef_UNAVAILABLE-999.000000T
1coef_full_time_worker_asc_M2.126748F
2coef_full_time_worker_asc_N0.650847F
3coef_part_time_worker_asc_M-0.902594F
4coef_part_time_worker_asc_N0.677144F
............
161coef_N_xxxx-1.346000F
162coef_H_xxxx-3.733000F
163coef_M_xxxxx0.103269F
164coef_N_xxxxx-0.046852F
165coef_H_xxxxx-3.460857F
\n", + "

166 rows × 3 columns

\n", + "
" + ], + "text/plain": [ + " coefficient_name value constrain\n", + "0 coef_UNAVAILABLE -999.000000 T\n", + "1 coef_full_time_worker_asc_M 2.126748 F\n", + "2 coef_full_time_worker_asc_N 0.650847 F\n", + "3 coef_part_time_worker_asc_M -0.902594 F\n", + "4 coef_part_time_worker_asc_N 0.677144 F\n", + ".. ... ... ...\n", + "161 coef_N_xxxx -1.346000 F\n", + "162 coef_H_xxxx -3.733000 F\n", + "163 coef_M_xxxxx 0.103269 F\n", + "164 coef_N_xxxxx -0.046852 F\n", + "165 coef_H_xxxxx -3.460857 F\n", + "\n", + "[166 rows x 3 columns]" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.read_csv(result_dir/\"cdap_coefficients_revised.csv\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Modify Spec\n", + "\n", + "Here, we will demonstrate the process of re-estimating the CDAP model with a modified\n", + "SPEC file. This does *not* require re-running ActivitySim, it just requires\n", + "changing the SPEC file and re-running the Larch estimation only.\n", + "\n", + "The `backup` command we ran earlier made a backup copy of the\n", + "original spec file in the EDB directory.\n", + "This was not strictly necessary, but since we're about to modify it and\n", + "we may want undo our changes, it can be handy to keep a copy of the\n", + "original spec file around. Since we already have a backup copy, we'll make some \n", + "changes directly in the SPEC file. As an example here, we're going\n", + "to re-write the household income section of the file, to change the piecewise \n", + "linear utility from 3 segments to 4. We'll move the breakpoints and rename some\n", + "coefficients to accomodate the change. As above, for this demo we are editing \n", + "the SPEC file using Python code to make the changes, but a user does not need\n", + "to change the file using Python; any CSV editor (e.g. Excel) can be used. " + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "with open(data.edb_directory / \"cdap_INDIV_AND_HHSIZE1_SPEC.csv\") as f:\n", + " raw_spec = f.read()\n", + "\n", + "repl_lines = \"\"\"Full-time worker interaction with income less than $20k,(ptype == 1) & (income_in_thousands < 20),,,coef_full_time_worker_interaction_with_income_less_than_20k_H\n", + "\"\"\"\n", + "\n", + "new_lines = \"\"\"Full-time worker interaction with income less than $35k,(ptype == 1) & (income_in_thousands < 35),,,coef_full_time_worker_interaction_with_income_less_than_35k_H\n", + "Full-time worker interaction with income between $35k and $100k,(ptype == 1) & (income_in_thousands >= 35) & (income_in_thousands <= 100),,,coef_full_time_worker_interaction_with_income_between_35k_and_100k_H\n", + "\"\"\"\n", + "\n", + "raw_spec = raw_spec.replace(repl_lines, new_lines)\n", + "\n", + "with open(data.edb_directory / \"cdap_INDIV_AND_HHSIZE1_SPEC.csv\", \"w\") as f:\n", + " f.write(raw_spec)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Unlike other components, the CDAP estimation process is built fundamentally against \n", + "a re-evaluation of utility functions, instead of using pre-computed values in the\n", + "EDB. Thus, the user does not need to worry about the \"Label\" column of the utility\n", + "specification file (which in this example does not even exist.) \n", + "\n", + "Estimation of the revised model can be completed using the same process as the \n", + "original estimation." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Reading output-est-mode/estimation_data_bundle/cdap/cdap_model_settings.yaml\n", + "Reading /Users/jpn/Git/est-mode/activitysim/activitysim/examples/example_estimation/notebooks/test-estimation-data/activitysim-prototype-mtc-extended/output-est-mode/final_households.csv\n", + "Reading /Users/jpn/Git/est-mode/activitysim/activitysim/examples/example_estimation/notebooks/test-estimation-data/activitysim-prototype-mtc-extended/output-est-mode/final_persons.csv\n", + "Reading /Users/jpn/Git/est-mode/activitysim/activitysim/examples/example_estimation/notebooks/test-estimation-data/activitysim-prototype-mtc-extended/output-est-mode/estimation_data_bundle/cdap/cdap_coefficients.csv\n", + "Reading /Users/jpn/Git/est-mode/activitysim/activitysim/examples/example_estimation/notebooks/test-estimation-data/activitysim-prototype-mtc-extended/output-est-mode/estimation_data_bundle/cdap/cdap_interaction_coefficients.csv\n", + "Reading /Users/jpn/Git/est-mode/activitysim/activitysim/examples/example_estimation/notebooks/test-estimation-data/activitysim-prototype-mtc-extended/output-est-mode/estimation_data_bundle/cdap/cdap_joint_tour_coefficients.csv\n", + "Including joint tour utility?: False\n", + "Reading /Users/jpn/Git/est-mode/activitysim/activitysim/examples/example_estimation/notebooks/test-estimation-data/activitysim-prototype-mtc-extended/output-est-mode/estimation_data_bundle/cdap/cdap_INDIV_AND_HHSIZE1_SPEC.csv\n", + "Reading /Users/jpn/Git/est-mode/activitysim/activitysim/examples/example_estimation/notebooks/test-estimation-data/activitysim-prototype-mtc-extended/output-est-mode/estimation_data_bundle/cdap/cdap_values_combined.parquet\n" + ] + } + ], + "source": [ + "model2, data2 = component_model(\n", + " modelname,\n", + " edb_directory=f\"output-est-mode/estimation_data_bundle/{modelname}/\",\n", + " return_data=True,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "

Iteration 138 [Optimization terminated successfully]

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "

Best LL = -28225.10715069874

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
valuebestinitvalueminimummaximumnullvalueholdfast
param_name
-999.0-999.000000-999.000000-999.000000-999.0-999.00.01
coef_H_111.4550121.4550121.626000-infinf0.00
coef_H_120.9496080.9496080.740700-infinf0.00
coef_H_124_122_1440.3674960.3674960.957300-infinf0.00
coef_H_126_146-0.009021-0.0090210.293900-infinf0.00
........................
coef_retired_interaction_with_more_cars_than_workers_M2.9920002.9920002.992000-infinf0.00
coef_retired_interaction_with_more_cars_than_workers_N1.0128061.0128061.056000-infinf0.00
coef_retired_interaction_with_peak_accessibility_to_all_employment_M0.2792000.2792000.279200-infinf0.00
coef_university_student_asc_M2.1683682.1683682.353595-infinf0.00
coef_university_student_asc_N0.4898480.4898480.609710-infinf0.00
\n", + "

162 rows × 7 columns

\n", + "
" + ], + "text/plain": [ + " value best \\\n", + "param_name \n", + "-999.0 -999.000000 -999.000000 \n", + "coef_H_11 1.455012 1.455012 \n", + "coef_H_12 0.949608 0.949608 \n", + "coef_H_124_122_144 0.367496 0.367496 \n", + "coef_H_126_146 -0.009021 -0.009021 \n", + "... ... ... \n", + "coef_retired_interaction_with_more_cars_than_wo... 2.992000 2.992000 \n", + "coef_retired_interaction_with_more_cars_than_wo... 1.012806 1.012806 \n", + "coef_retired_interaction_with_peak_accessibilit... 0.279200 0.279200 \n", + "coef_university_student_asc_M 2.168368 2.168368 \n", + "coef_university_student_asc_N 0.489848 0.489848 \n", + "\n", + " initvalue minimum \\\n", + "param_name \n", + "-999.0 -999.000000 -999.0 \n", + "coef_H_11 1.626000 -inf \n", + "coef_H_12 0.740700 -inf \n", + "coef_H_124_122_144 0.957300 -inf \n", + "coef_H_126_146 0.293900 -inf \n", + "... ... ... \n", + "coef_retired_interaction_with_more_cars_than_wo... 2.992000 -inf \n", + "coef_retired_interaction_with_more_cars_than_wo... 1.056000 -inf \n", + "coef_retired_interaction_with_peak_accessibilit... 0.279200 -inf \n", + "coef_university_student_asc_M 2.353595 -inf \n", + "coef_university_student_asc_N 0.609710 -inf \n", + "\n", + " maximum nullvalue \\\n", + "param_name \n", + "-999.0 -999.0 0.0 \n", + "coef_H_11 inf 0.0 \n", + "coef_H_12 inf 0.0 \n", + "coef_H_124_122_144 inf 0.0 \n", + "coef_H_126_146 inf 0.0 \n", + "... ... ... \n", + "coef_retired_interaction_with_more_cars_than_wo... inf 0.0 \n", + "coef_retired_interaction_with_more_cars_than_wo... inf 0.0 \n", + "coef_retired_interaction_with_peak_accessibilit... inf 0.0 \n", + "coef_university_student_asc_M inf 0.0 \n", + "coef_university_student_asc_N inf 0.0 \n", + "\n", + " holdfast \n", + "param_name \n", + "-999.0 1 \n", + "coef_H_11 0 \n", + "coef_H_12 0 \n", + "coef_H_124_122_144 0 \n", + "coef_H_126_146 0 \n", + "... ... \n", + "coef_retired_interaction_with_more_cars_than_wo... 0 \n", + "coef_retired_interaction_with_more_cars_than_wo... 0 \n", + "coef_retired_interaction_with_peak_accessibilit... 0 \n", + "coef_university_student_asc_M 0 \n", + "coef_university_student_asc_N 0 \n", + "\n", + "[162 rows x 7 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jpn/Git/est-mode/larch/src/larch/model/optimization.py:338: UserWarning: SLSQP may not play nicely with unbounded parameters\n", + "if you get poor results, consider setting global bounds with model.set_cap()\n", + " warnings.warn( # infinite bounds # )\n" + ] + } + ], + "source": [ + "r2 = model2.estimate(method='SLSQP', options={'maxiter':1000})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can easily review the parameter estimates from the original and\n", + "revised models side by side to see what changed." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
modelmodel2
Number of CasesAggregate20000.00000020000.000000
Log Likelihood at ConvergenceAggregate-28223.515541-28225.107151
Per Case-1.411176-1.411255
Log Likelihood at Null ParametersAggregate-51107.531825-51107.531825
Per Case-2.555377-2.555377
Rho Squared w.r.t. Null ParametersAggregate0.4477620.447731
\n", + "
" + ], + "text/plain": [ + " model model2\n", + "Number of Cases Aggregate 20000.000000 20000.000000\n", + "Log Likelihood at Convergence Aggregate -28223.515541 -28225.107151\n", + " Per Case -1.411176 -1.411255\n", + "Log Likelihood at Null Parameters Aggregate -51107.531825 -51107.531825\n", + " Per Case -2.555377 -2.555377\n", + "Rho Squared w.r.t. Null Parameters Aggregate 0.447762 0.447731" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "with pd.option_context('display.max_rows', 999):\n", + " display(pd.concat({\n", + " \"model\": model.estimation_statistics_raw(),\n", + " \"model2\": model2.estimation_statistics_raw(),\n", + " }, axis=1).fillna(\"\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
modelmodel2
ValueStd Errt StatSignifNull ValueValueStd Errt StatSignifNull Value
Parameter
-999.0-999.0.00NA0.0-999.0.00NA0.0
coef_H_111.450.061423.55***0.01.460.062223.40***0.0
coef_H_120.9550.1327.21***0.00.9500.1327.18***0.0
coef_H_124_122_1440.3540.1532.31*0.00.3670.1532.40*0.0
coef_H_126_146-0.01340.336-0.040.0-0.009020.336-0.030.0
coef_H_131.200.1309.21***0.01.200.1319.17***0.0
coef_H_140.9980.090311.05***0.00.9910.090410.96***0.0
coef_H_151.180.092212.76***0.01.180.092112.86***0.0
coef_H_161.850.10218.08***0.01.850.10317.98***0.0
coef_H_171.340.055724.07***0.01.340.055824.04***0.0
coef_H_180.8030.1097.36***0.00.8080.1097.42***0.0
coef_H_221.660.2157.76***0.01.660.2157.73***0.0
coef_H_222_224_2440.07470.2250.330.00.08040.2250.360.0
coef_H_226_246_4460.07450.6830.110.00.07260.6870.110.0
coef_H_231.680.2098.02***0.01.680.2098.03***0.0
coef_H_241.200.1657.27***0.01.200.1657.24***0.0
coef_H_25-0.08110.278-0.290.0-0.07370.277-0.270.0
coef_H_262.830.23911.83***0.02.840.23911.86***0.0
coef_H_266_4661.240.6501.910.01.250.6521.910.0
coef_H_270.8030.1585.08***0.00.8040.1585.07***0.0
coef_H_280.9410.1875.05***0.00.9460.1865.08***0.0
coef_H_330.3590.4480.800.00.3660.4480.820.0
coef_H_341.540.13111.80***0.01.540.13111.75***0.0
coef_H_350.2110.3890.540.00.2130.3890.550.0
coef_H_361.552.55e-13BIG***0.01.55NANA0.0
coef_H_371.55NANA0.01.55NANA0.0
coef_H_381.34NANA0.01.344.18e-13BIG***0.0
coef_H_441.090.088412.29***0.01.090.088312.30***0.0
coef_H_451.130.1398.18***0.01.130.1398.16***0.0
coef_H_460.5249.04e-13BIG***0.00.5243.12e-13BIG***0.0
coef_H_470.8114.46e-13BIG***0.00.811NANA0.0
coef_H_481.172.26e-13BIG***0.01.176.30e-13BIG***0.0
coef_H_551.220.1667.37***0.01.220.1657.39***0.0
coef_H_56_57_580.8631.52e-13BIG***0.00.863NANA0.0
coef_H_661.360.2994.56***0.01.370.2984.60***0.0
coef_H_671.290.3853.35***0.01.280.3863.32***0.0
coef_H_681.390.7551.850.01.390.7561.830.0
coef_H_772.430.080230.27***0.02.420.080430.16***0.0
coef_H_781.210.1577.72***0.01.210.1577.69***0.0
coef_H_880.9440.2184.33***0.00.9560.2174.40***0.0
coef_H_xxxxx-3.460.269-12.86***0.0-3.470.269-12.88***0.0
coef_M_110.007750.04390.180.09.36e-050.04430.000.0
coef_M_1110.1580.05512.87**0.00.1640.05522.96**0.0
coef_M_112_1140.2970.09003.30***0.00.2950.09003.28**0.0
coef_M_12-0.1090.0595-1.830.0-0.1090.0595-1.830.0
coef_M_130.1950.04484.36***0.00.1970.04484.39***0.0
coef_M_160.1580.06072.61**0.00.1590.06072.63**0.0
coef_M_170.03660.02861.280.00.03720.02861.300.0
coef_M_180.3730.04388.53***0.00.3720.04388.49***0.0
coef_M_220.9640.093210.34***0.00.9660.093310.36***0.0
coef_M_230.1070.09051.180.00.1070.09051.180.0
coef_M_260.7750.1295.99***0.00.7760.1296.00***0.0
coef_M_270.09710.04832.01*0.00.09430.04821.950.0
coef_M_280.5150.07716.68***0.00.5150.07716.68***0.0
coef_M_330.6710.08617.79***0.00.6730.08627.81***0.0
coef_M_36-0.00210NANA0.0-0.00210NANA0.0
coef_M_370.2973.78e-13BIG***0.00.2973.67e-13BIG***0.0
coef_M_380.2259.09e-14BIG***0.00.2254.32e-13BIG***0.0
coef_M_660.03850.2390.160.00.04220.2400.180.0
coef_M_666-0.6731.46-0.460.0-0.6711.46-0.460.0
coef_M_670.2740.3590.760.00.2880.3600.800.0
coef_M_680.6910.4571.510.00.6950.4571.520.0
coef_M_770.7000.058411.99***0.00.7030.058412.03***0.0
coef_M_780.1410.09571.480.00.1410.09571.480.0
coef_M_881.330.090314.70***0.01.330.090314.70***0.0
coef_M_xxxxx0.1030.04982.07*0.00.1050.04982.10*0.0
coef_N_110.9140.081811.17***0.00.9150.081611.21***0.0
coef_N_112_1140.1030.1730.600.00.1040.1740.600.0
coef_N_120.4650.1114.21***0.00.4670.1114.22***0.0
coef_N_124_122_1440.1320.1420.930.00.1280.1430.900.0
coef_N_130.2160.1351.600.00.2110.1351.570.0
coef_N_140.03310.07190.460.00.02710.07200.380.0
coef_N_150.08710.08820.990.00.08940.08811.010.0
coef_N_160.3080.2221.380.00.3090.2231.390.0
coef_N_1660.4340.5210.830.00.4330.5250.820.0
coef_N_170.2770.09213.01**0.00.2800.09193.04**0.0
coef_N_180.2970.09893.01**0.00.2990.09893.02**0.0
coef_N_220.8670.1695.14***0.00.8670.1695.14***0.0
coef_N_222_224_444-1.340.194-6.91***0.0-1.350.195-6.91***0.0
coef_N_230.1600.2000.800.00.1650.2000.830.0
coef_N_240.5960.07378.09***0.00.5950.07378.07***0.0
coef_N_246_226_446-0.8725.63-0.150.0-0.8725.62-0.160.0
coef_N_25-0.02630.107-0.250.0-0.02750.107-0.260.0
coef_N_260.1250.4360.290.00.1260.4360.290.0
coef_N_270.7330.09647.60***0.00.7340.09617.64***0.0
coef_N_281.050.1079.85***0.01.050.1079.85***0.0
coef_N_330.7810.1654.72***0.00.7860.1654.77***0.0
coef_N_34-0.05220.0980-0.530.0-0.05110.0979-0.520.0
coef_N_350.3900.1512.59**0.00.3900.1502.59**0.0
coef_N_361.62NANA0.01.62NANA0.0
coef_N_370.5161.11e-13BIG***0.00.516NANA0.0
coef_N_380.8978.33e-14BIG***0.00.8972.96e-13BIG***0.0
coef_N_440.3020.09963.03**0.00.3000.09963.01**0.0
coef_N_45-0.08760.0854-1.030.0-0.09020.0854-1.060.0
coef_N_460.6803.06e-14BIG***0.00.6802.86e-13BIG***0.0
coef_N_470.5651.01e-13BIG***0.00.5652.67e-13BIG***0.0
coef_N_481.162.00e-13BIG***0.01.162.34e-13BIG***0.0
coef_N_550.7310.1146.42***0.00.7290.1146.41***0.0
coef_N_56_57_580.292NANA0.00.292NANA0.0
coef_N_661.600.4923.25**0.01.600.4953.23**0.0
coef_N_671.290.6661.930.01.290.6731.920.0
coef_N_681.140.8971.270.01.140.8991.270.0
coef_N_771.270.10911.65***0.01.280.10911.68***0.0
coef_N_78-0.4290.549-0.780.0-0.4210.546-0.770.0
coef_N_880.6450.1514.26***0.00.6450.1514.26***0.0
coef_N_xxxxx-0.04690.100-0.470.0-0.04460.100-0.440.0
coef_UNAVAILABLE-999.0.00NA0.0-999.0.00NA0.0
coef_child_who_is_in_school_or_too_young_for_school_interaction_with_off_peak_accessibility_to_retail_N0.1380.04153.32***0.00.1390.04163.35***0.0
coef_driving_age_child_who_is_in_school_asc_M2.270.17712.78***0.02.300.17812.94***0.0
coef_driving_age_child_who_is_in_school_asc_N-1.090.445-2.45*0.0-1.060.445-2.39*0.0
coef_driving_age_child_who_is_in_school_interaction_income_between_50k_and_100k_H-0.1590.188-0.850.0-0.1320.188-0.700.0
coef_driving_age_child_who_is_in_school_interaction_with_fewer_cars_than_workers_H0.8390.1684.98***0.00.8360.1684.96***0.0
coef_driving_age_child_who_is_in_school_interaction_with_income_more_than_100k_H-1.570.241-6.53***0.0-1.510.242-6.24***0.0
coef_driving_age_child_who_is_in_school_interaction_with_less_than_20k_H1.460.2176.75***0.01.530.2167.05***0.0
coef_full_time_worker_asc_M2.130.2438.76***0.02.180.2468.88***0.0
coef_full_time_worker_asc_N0.6510.047613.66***0.00.6930.057412.07***0.0
coef_full_time_worker_interaction_with_age_less_than_40_M0.2100.03885.41***0.00.2160.03895.54***0.0
coef_full_time_worker_interaction_with_female_gender_M-0.1280.0394-3.24**0.0-0.1240.0394-3.15**0.0
coef_full_time_worker_interaction_with_fewer_cars_than_workers_H0.5200.05679.16***0.00.5280.05689.29***0.0
coef_full_time_worker_interaction_with_income_less_than_20k_H0.4060.1093.72***0.0
coef_full_time_worker_intraction_with_peak_accessibility_to_all_employment_M0.06560.02033.23**0.00.06420.02033.16**0.0
coef_non_working_adult_asc_N0.6970.3541.97*0.00.6980.3541.97*0.0
coef_non_working_adult_interaction_with_female_gender_M-0.743NANA0.0-0.7433.86e-14-BIG***0.0
coef_non_working_adult_interaction_with_fewer_cars_than_workers_H0.9770.1367.19***0.00.9780.1367.19***0.0
coef_non_working_adult_interaction_with_income_between_50k_and_100k_H-0.4220.0839-5.03***0.0-0.4240.0839-5.05***0.0
coef_non_working_adult_interaction_with_income_more_than_100k_H-0.7210.104-6.94***0.0-0.7160.104-6.89***0.0
coef_non_working_adult_interaction_with_more_cars_than_workers_M0.6517.21e-15BIG***0.00.651NANA0.0
coef_non_working_adult_interaction_with_more_cars_than_workers_N0.7830.08289.45***0.00.7810.08289.43***0.0
coef_non_working_adult_interaction_with_peak_accessibility_to_all_employment_M0.2311.73e-14BIG***0.00.2318.76e-15BIG***0.0
coef_non_working_adult_retired_or_univ_student_interaction_with_off_peak_accessibility_to_all_employment_N0.06280.03531.780.00.06290.03521.790.0
coef_part_time_worker_asc_M-0.9030.394-2.29*0.0-0.9000.394-2.29*0.0
coef_part_time_worker_asc_N0.6770.09437.18***0.00.6790.09447.19***0.0
coef_part_time_worker_interaction_with_income_between_50k_and_100k_H-0.4700.120-3.93***0.0-0.4710.120-3.93***0.0
coef_part_time_worker_interaction_with_income_less_than_20k_H0.2740.1262.18*0.00.2780.1262.21*0.0
coef_part_time_worker_interaction_with_income_more_than_100k_H-0.4920.135-3.64***0.0-0.4880.135-3.61***0.0
coef_part_time_worker_interaction_with_income_more_than_100k_N0.3340.07334.56***0.00.3340.07344.55***0.0
coef_part_time_worker_interaction_with_peak_accessibility_to_all_employment_M0.2180.03236.76***0.00.2180.03236.75***0.0
coef_pre_driving_age_child_who_is_in_school_asc_M3.240.10431.22***0.03.240.10431.19***0.0
coef_pre_driving_age_child_who_is_in_school_asc_N-0.06760.411-0.160.0-0.07780.412-0.190.0
coef_pre_driving_age_child_who_is_in_school_interaction_with_age_13_to_15_M-0.6940.112-6.17***0.0-0.6970.112-6.19***0.0
coef_pre_driving_age_child_who_is_in_school_interaction_with_age_13_to_15_N-0.6070.129-4.70***0.0-0.6050.129-4.69***0.0
coef_pre_driving_age_child_who_is_in_school_interaction_with_age_6_to_9_M-0.4000.0833-4.80***0.0-0.3980.0834-4.77***0.0
coef_pre_driving_age_child_who_is_in_school_interaction_with_fewer_cars_than_workers_H0.6740.08617.83***0.00.6760.08627.84***0.0
coef_pre_driving_age_child_who_is_too_young_for_school_asc_M0.5830.1075.43***0.00.5870.1075.47***0.0
coef_pre_driving_age_child_who_is_too_young_for_school_asc_N-1.390.416-3.34***0.0-1.400.417-3.36***0.0
coef_pre_driving_age_child_who_is_too_young_for_school_interaction_with_age_0_to_1_M-0.3930.0920-4.27***0.0-0.3920.0920-4.27***0.0
coef_pre_driving_age_child_who_is_too_young_for_school_interaction_with_age_4_to_5_M0.6690.09786.84***0.00.6700.09786.85***0.0
coef_pre_driving_age_child_who_is_too_young_for_school_interaction_with_fewer_cars_than_workers_H0.2430.1341.810.00.2430.1341.820.0
coef_pre_driving_age_child_who_is_too_young_for_school_interaction_with_income_between_50k_and_100k_H-0.7070.128-5.51***0.0-0.7080.128-5.52***0.0
coef_pre_driving_age_child_who_is_too_young_for_school_interaction_with_income_more_than_100k_H-0.6950.131-5.31***0.0-0.6880.131-5.26***0.0
coef_pre_driving_age_child_who_is_too_young_for_school_interaction_with_more_cars_than_workers_N0.6850.08587.99***0.00.6860.08587.99***0.0
coef_retired_asc_N0.4340.3591.210.00.4390.3591.220.0
coef_retired_interaction_with_age_more_than_80_H0.7300.08268.84***0.00.7320.08258.87***0.0
coef_retired_interaction_with_female_M0.4770.00NA0.00.4770.00NA0.0
coef_retired_interaction_with_fewer_cars_than_workers_H0.6500.2182.98**0.00.6490.2182.97**0.0
coef_retired_interaction_with_income_less_than_20k_H0.4760.08455.63***0.00.4830.08445.72***0.0
coef_retired_interaction_with_more_cars_than_workers_M2.990.00NA0.02.990.00NA0.0
coef_retired_interaction_with_more_cars_than_workers_N1.020.088511.48***0.01.010.088411.45***0.0
coef_retired_interaction_with_peak_accessibility_to_all_employment_M0.2790.00NA0.00.2790.00NA0.0
coef_university_student_asc_M2.170.086425.12***0.02.170.086425.10***0.0
coef_university_student_asc_N0.4890.3561.380.00.4900.3561.380.0
coef_full_time_worker_interaction_with_income_between_35k_and_100k_H0.05410.05421.000.0
coef_full_time_worker_interaction_with_income_less_than_35k_H0.2450.07953.08**0.0
\n", + "
" + ], + "text/plain": [ + " model \\\n", + " Value Std Err \n", + "Parameter \n", + "-999.0 -999.  0.00 \n", + "coef_H_11  1.45  0.0614 \n", + "coef_H_12  0.955  0.132 \n", + "coef_H_124_122_144  0.354  0.153 \n", + "coef_H_126_146 -0.0134  0.336 \n", + "coef_H_13  1.20  0.130 \n", + "coef_H_14  0.998  0.0903 \n", + "coef_H_15  1.18  0.0922 \n", + "coef_H_16  1.85  0.102 \n", + "coef_H_17  1.34  0.0557 \n", + "coef_H_18  0.803  0.109 \n", + "coef_H_22  1.66  0.215 \n", + "coef_H_222_224_244  0.0747  0.225 \n", + "coef_H_226_246_446  0.0745  0.683 \n", + "coef_H_23  1.68  0.209 \n", + "coef_H_24  1.20  0.165 \n", + "coef_H_25 -0.0811  0.278 \n", + "coef_H_26  2.83  0.239 \n", + "coef_H_266_466  1.24  0.650 \n", + "coef_H_27  0.803  0.158 \n", + "coef_H_28  0.941  0.187 \n", + "coef_H_33  0.359  0.448 \n", + "coef_H_34  1.54  0.131 \n", + "coef_H_35  0.211  0.389 \n", + "coef_H_36  1.55  2.55e-13 \n", + "coef_H_37  1.55  NA \n", + "coef_H_38  1.34  NA \n", + "coef_H_44  1.09  0.0884 \n", + "coef_H_45  1.13  0.139 \n", + "coef_H_46  0.524  9.04e-13 \n", + "coef_H_47  0.811  4.46e-13 \n", + "coef_H_48  1.17  2.26e-13 \n", + "coef_H_55  1.22  0.166 \n", + "coef_H_56_57_58  0.863  1.52e-13 \n", + "coef_H_66  1.36  0.299 \n", + "coef_H_67  1.29  0.385 \n", + "coef_H_68  1.39  0.755 \n", + "coef_H_77  2.43  0.0802 \n", + "coef_H_78  1.21  0.157 \n", + "coef_H_88  0.944  0.218 \n", + "coef_H_xxxxx -3.46  0.269 \n", + "coef_M_11  0.00775  0.0439 \n", + "coef_M_111  0.158  0.0551 \n", + "coef_M_112_114  0.297  0.0900 \n", + "coef_M_12 -0.109  0.0595 \n", + "coef_M_13  0.195  0.0448 \n", + "coef_M_16  0.158  0.0607 \n", + "coef_M_17  0.0366  0.0286 \n", + "coef_M_18  0.373  0.0438 \n", + "coef_M_22  0.964  0.0932 \n", + "coef_M_23  0.107  0.0905 \n", + "coef_M_26  0.775  0.129 \n", + "coef_M_27  0.0971  0.0483 \n", + "coef_M_28  0.515  0.0771 \n", + "coef_M_33  0.671  0.0861 \n", + "coef_M_36 -0.00210  NA \n", + "coef_M_37  0.297  3.78e-13 \n", + "coef_M_38  0.225  9.09e-14 \n", + "coef_M_66  0.0385  0.239 \n", + "coef_M_666 -0.673  1.46 \n", + "coef_M_67  0.274  0.359 \n", + "coef_M_68  0.691  0.457 \n", + "coef_M_77  0.700  0.0584 \n", + "coef_M_78  0.141  0.0957 \n", + "coef_M_88  1.33  0.0903 \n", + "coef_M_xxxxx  0.103  0.0498 \n", + "coef_N_11  0.914  0.0818 \n", + "coef_N_112_114  0.103  0.173 \n", + "coef_N_12  0.465  0.111 \n", + "coef_N_124_122_144  0.132  0.142 \n", + "coef_N_13  0.216  0.135 \n", + "coef_N_14  0.0331  0.0719 \n", + "coef_N_15  0.0871  0.0882 \n", + "coef_N_16  0.308  0.222 \n", + "coef_N_166  0.434  0.521 \n", + "coef_N_17  0.277  0.0921 \n", + "coef_N_18  0.297  0.0989 \n", + "coef_N_22  0.867  0.169 \n", + "coef_N_222_224_444 -1.34  0.194 \n", + "coef_N_23  0.160  0.200 \n", + "coef_N_24  0.596  0.0737 \n", + "coef_N_246_226_446 -0.872  5.63 \n", + "coef_N_25 -0.0263  0.107 \n", + "coef_N_26  0.125  0.436 \n", + "coef_N_27  0.733  0.0964 \n", + "coef_N_28  1.05  0.107 \n", + "coef_N_33  0.781  0.165 \n", + "coef_N_34 -0.0522  0.0980 \n", + "coef_N_35  0.390  0.151 \n", + "coef_N_36  1.62  NA \n", + "coef_N_37  0.516  1.11e-13 \n", + "coef_N_38  0.897  8.33e-14 \n", + "coef_N_44  0.302  0.0996 \n", + "coef_N_45 -0.0876  0.0854 \n", + "coef_N_46  0.680  3.06e-14 \n", + "coef_N_47  0.565  1.01e-13 \n", + "coef_N_48  1.16  2.00e-13 \n", + "coef_N_55  0.731  0.114 \n", + "coef_N_56_57_58  0.292  NA \n", + "coef_N_66  1.60  0.492 \n", + "coef_N_67  1.29  0.666 \n", + "coef_N_68  1.14  0.897 \n", + "coef_N_77  1.27  0.109 \n", + "coef_N_78 -0.429  0.549 \n", + "coef_N_88  0.645  0.151 \n", + "coef_N_xxxxx -0.0469  0.100 \n", + "coef_UNAVAILABLE -999.  0.00 \n", + "coef_child_who_is_in_school_or_too_young_for_sc...  0.138  0.0415 \n", + "coef_driving_age_child_who_is_in_school_asc_M  2.27  0.177 \n", + "coef_driving_age_child_who_is_in_school_asc_N -1.09  0.445 \n", + "coef_driving_age_child_who_is_in_school_interac... -0.159  0.188 \n", + "coef_driving_age_child_who_is_in_school_interac...  0.839  0.168 \n", + "coef_driving_age_child_who_is_in_school_interac... -1.57  0.241 \n", + "coef_driving_age_child_who_is_in_school_interac...  1.46  0.217 \n", + "coef_full_time_worker_asc_M  2.13  0.243 \n", + "coef_full_time_worker_asc_N  0.651  0.0476 \n", + "coef_full_time_worker_interaction_with_age_less...  0.210  0.0388 \n", + "coef_full_time_worker_interaction_with_female_g... -0.128  0.0394 \n", + "coef_full_time_worker_interaction_with_fewer_ca...  0.520  0.0567 \n", + "coef_full_time_worker_interaction_with_income_l...  0.406  0.109 \n", + "coef_full_time_worker_intraction_with_peak_acce...  0.0656  0.0203 \n", + "coef_non_working_adult_asc_N  0.697  0.354 \n", + "coef_non_working_adult_interaction_with_female_... -0.743  NA \n", + "coef_non_working_adult_interaction_with_fewer_c...  0.977  0.136 \n", + "coef_non_working_adult_interaction_with_income_... -0.422  0.0839 \n", + "coef_non_working_adult_interaction_with_income_... -0.721  0.104 \n", + "coef_non_working_adult_interaction_with_more_ca...  0.651  7.21e-15 \n", + "coef_non_working_adult_interaction_with_more_ca...  0.783  0.0828 \n", + "coef_non_working_adult_interaction_with_peak_ac...  0.231  1.73e-14 \n", + "coef_non_working_adult_retired_or_univ_student_...  0.0628  0.0353 \n", + "coef_part_time_worker_asc_M -0.903  0.394 \n", + "coef_part_time_worker_asc_N  0.677  0.0943 \n", + "coef_part_time_worker_interaction_with_income_b... -0.470  0.120 \n", + "coef_part_time_worker_interaction_with_income_l...  0.274  0.126 \n", + "coef_part_time_worker_interaction_with_income_m... -0.492  0.135 \n", + "coef_part_time_worker_interaction_with_income_m...  0.334  0.0733 \n", + "coef_part_time_worker_interaction_with_peak_acc...  0.218  0.0323 \n", + "coef_pre_driving_age_child_who_is_in_school_asc_M  3.24  0.104 \n", + "coef_pre_driving_age_child_who_is_in_school_asc_N -0.0676  0.411 \n", + "coef_pre_driving_age_child_who_is_in_school_int... -0.694  0.112 \n", + "coef_pre_driving_age_child_who_is_in_school_int... -0.607  0.129 \n", + "coef_pre_driving_age_child_who_is_in_school_int... -0.400  0.0833 \n", + "coef_pre_driving_age_child_who_is_in_school_int...  0.674  0.0861 \n", + "coef_pre_driving_age_child_who_is_too_young_for...  0.583  0.107 \n", + "coef_pre_driving_age_child_who_is_too_young_for... -1.39  0.416 \n", + "coef_pre_driving_age_child_who_is_too_young_for... -0.393  0.0920 \n", + "coef_pre_driving_age_child_who_is_too_young_for...  0.669  0.0978 \n", + "coef_pre_driving_age_child_who_is_too_young_for...  0.243  0.134 \n", + "coef_pre_driving_age_child_who_is_too_young_for... -0.707  0.128 \n", + "coef_pre_driving_age_child_who_is_too_young_for... -0.695  0.131 \n", + "coef_pre_driving_age_child_who_is_too_young_for...  0.685  0.0858 \n", + "coef_retired_asc_N  0.434  0.359 \n", + "coef_retired_interaction_with_age_more_than_80_H  0.730  0.0826 \n", + "coef_retired_interaction_with_female_M  0.477  0.00 \n", + "coef_retired_interaction_with_fewer_cars_than_w...  0.650  0.218 \n", + "coef_retired_interaction_with_income_less_than_...  0.476  0.0845 \n", + "coef_retired_interaction_with_more_cars_than_wo...  2.99  0.00 \n", + "coef_retired_interaction_with_more_cars_than_wo...  1.02  0.0885 \n", + "coef_retired_interaction_with_peak_accessibilit...  0.279  0.00 \n", + "coef_university_student_asc_M  2.17  0.0864 \n", + "coef_university_student_asc_N  0.489  0.356 \n", + "coef_full_time_worker_interaction_with_income_b... \n", + "coef_full_time_worker_interaction_with_income_l... \n", + "\n", + " \\\n", + " t Stat Signif Null Value \n", + "Parameter \n", + "-999.0  NA 0.0 \n", + "coef_H_11  23.55 *** 0.0 \n", + "coef_H_12  7.21 *** 0.0 \n", + "coef_H_124_122_144  2.31 * 0.0 \n", + "coef_H_126_146 -0.04 0.0 \n", + "coef_H_13  9.21 *** 0.0 \n", + "coef_H_14  11.05 *** 0.0 \n", + "coef_H_15  12.76 *** 0.0 \n", + "coef_H_16  18.08 *** 0.0 \n", + "coef_H_17  24.07 *** 0.0 \n", + "coef_H_18  7.36 *** 0.0 \n", + "coef_H_22  7.76 *** 0.0 \n", + "coef_H_222_224_244  0.33 0.0 \n", + "coef_H_226_246_446  0.11 0.0 \n", + "coef_H_23  8.02 *** 0.0 \n", + "coef_H_24  7.27 *** 0.0 \n", + "coef_H_25 -0.29 0.0 \n", + "coef_H_26  11.83 *** 0.0 \n", + "coef_H_266_466  1.91 0.0 \n", + "coef_H_27  5.08 *** 0.0 \n", + "coef_H_28  5.05 *** 0.0 \n", + "coef_H_33  0.80 0.0 \n", + "coef_H_34  11.80 *** 0.0 \n", + "coef_H_35  0.54 0.0 \n", + "coef_H_36  BIG *** 0.0 \n", + "coef_H_37  NA 0.0 \n", + "coef_H_38  NA 0.0 \n", + "coef_H_44  12.29 *** 0.0 \n", + "coef_H_45  8.18 *** 0.0 \n", + "coef_H_46  BIG *** 0.0 \n", + "coef_H_47  BIG *** 0.0 \n", + "coef_H_48  BIG *** 0.0 \n", + "coef_H_55  7.37 *** 0.0 \n", + "coef_H_56_57_58  BIG *** 0.0 \n", + "coef_H_66  4.56 *** 0.0 \n", + "coef_H_67  3.35 *** 0.0 \n", + "coef_H_68  1.85 0.0 \n", + "coef_H_77  30.27 *** 0.0 \n", + "coef_H_78  7.72 *** 0.0 \n", + "coef_H_88  4.33 *** 0.0 \n", + "coef_H_xxxxx -12.86 *** 0.0 \n", + "coef_M_11  0.18 0.0 \n", + "coef_M_111  2.87 ** 0.0 \n", + "coef_M_112_114  3.30 *** 0.0 \n", + "coef_M_12 -1.83 0.0 \n", + "coef_M_13  4.36 *** 0.0 \n", + "coef_M_16  2.61 ** 0.0 \n", + "coef_M_17  1.28 0.0 \n", + "coef_M_18  8.53 *** 0.0 \n", + "coef_M_22  10.34 *** 0.0 \n", + "coef_M_23  1.18 0.0 \n", + "coef_M_26  5.99 *** 0.0 \n", + "coef_M_27  2.01 * 0.0 \n", + "coef_M_28  6.68 *** 0.0 \n", + "coef_M_33  7.79 *** 0.0 \n", + "coef_M_36  NA 0.0 \n", + "coef_M_37  BIG *** 0.0 \n", + "coef_M_38  BIG *** 0.0 \n", + "coef_M_66  0.16 0.0 \n", + "coef_M_666 -0.46 0.0 \n", + "coef_M_67  0.76 0.0 \n", + "coef_M_68  1.51 0.0 \n", + "coef_M_77  11.99 *** 0.0 \n", + "coef_M_78  1.48 0.0 \n", + "coef_M_88  14.70 *** 0.0 \n", + "coef_M_xxxxx  2.07 * 0.0 \n", + "coef_N_11  11.17 *** 0.0 \n", + "coef_N_112_114  0.60 0.0 \n", + "coef_N_12  4.21 *** 0.0 \n", + "coef_N_124_122_144  0.93 0.0 \n", + "coef_N_13  1.60 0.0 \n", + "coef_N_14  0.46 0.0 \n", + "coef_N_15  0.99 0.0 \n", + "coef_N_16  1.38 0.0 \n", + "coef_N_166  0.83 0.0 \n", + "coef_N_17  3.01 ** 0.0 \n", + "coef_N_18  3.01 ** 0.0 \n", + "coef_N_22  5.14 *** 0.0 \n", + "coef_N_222_224_444 -6.91 *** 0.0 \n", + "coef_N_23  0.80 0.0 \n", + "coef_N_24  8.09 *** 0.0 \n", + "coef_N_246_226_446 -0.15 0.0 \n", + "coef_N_25 -0.25 0.0 \n", + "coef_N_26  0.29 0.0 \n", + "coef_N_27  7.60 *** 0.0 \n", + "coef_N_28  9.85 *** 0.0 \n", + "coef_N_33  4.72 *** 0.0 \n", + "coef_N_34 -0.53 0.0 \n", + "coef_N_35  2.59 ** 0.0 \n", + "coef_N_36  NA 0.0 \n", + "coef_N_37  BIG *** 0.0 \n", + "coef_N_38  BIG *** 0.0 \n", + "coef_N_44  3.03 ** 0.0 \n", + "coef_N_45 -1.03 0.0 \n", + "coef_N_46  BIG *** 0.0 \n", + "coef_N_47  BIG *** 0.0 \n", + "coef_N_48  BIG *** 0.0 \n", + "coef_N_55  6.42 *** 0.0 \n", + "coef_N_56_57_58  NA 0.0 \n", + "coef_N_66  3.25 ** 0.0 \n", + "coef_N_67  1.93 0.0 \n", + "coef_N_68  1.27 0.0 \n", + "coef_N_77  11.65 *** 0.0 \n", + "coef_N_78 -0.78 0.0 \n", + "coef_N_88  4.26 *** 0.0 \n", + "coef_N_xxxxx -0.47 0.0 \n", + "coef_UNAVAILABLE  NA 0.0 \n", + "coef_child_who_is_in_school_or_too_young_for_sc...  3.32 *** 0.0 \n", + "coef_driving_age_child_who_is_in_school_asc_M  12.78 *** 0.0 \n", + "coef_driving_age_child_who_is_in_school_asc_N -2.45 * 0.0 \n", + "coef_driving_age_child_who_is_in_school_interac... -0.85 0.0 \n", + "coef_driving_age_child_who_is_in_school_interac...  4.98 *** 0.0 \n", + "coef_driving_age_child_who_is_in_school_interac... -6.53 *** 0.0 \n", + "coef_driving_age_child_who_is_in_school_interac...  6.75 *** 0.0 \n", + "coef_full_time_worker_asc_M  8.76 *** 0.0 \n", + "coef_full_time_worker_asc_N  13.66 *** 0.0 \n", + "coef_full_time_worker_interaction_with_age_less...  5.41 *** 0.0 \n", + "coef_full_time_worker_interaction_with_female_g... -3.24 ** 0.0 \n", + "coef_full_time_worker_interaction_with_fewer_ca...  9.16 *** 0.0 \n", + "coef_full_time_worker_interaction_with_income_l...  3.72 *** 0.0 \n", + "coef_full_time_worker_intraction_with_peak_acce...  3.23 ** 0.0 \n", + "coef_non_working_adult_asc_N  1.97 * 0.0 \n", + "coef_non_working_adult_interaction_with_female_...  NA 0.0 \n", + "coef_non_working_adult_interaction_with_fewer_c...  7.19 *** 0.0 \n", + "coef_non_working_adult_interaction_with_income_... -5.03 *** 0.0 \n", + "coef_non_working_adult_interaction_with_income_... -6.94 *** 0.0 \n", + "coef_non_working_adult_interaction_with_more_ca...  BIG *** 0.0 \n", + "coef_non_working_adult_interaction_with_more_ca...  9.45 *** 0.0 \n", + "coef_non_working_adult_interaction_with_peak_ac...  BIG *** 0.0 \n", + "coef_non_working_adult_retired_or_univ_student_...  1.78 0.0 \n", + "coef_part_time_worker_asc_M -2.29 * 0.0 \n", + "coef_part_time_worker_asc_N  7.18 *** 0.0 \n", + "coef_part_time_worker_interaction_with_income_b... -3.93 *** 0.0 \n", + "coef_part_time_worker_interaction_with_income_l...  2.18 * 0.0 \n", + "coef_part_time_worker_interaction_with_income_m... -3.64 *** 0.0 \n", + "coef_part_time_worker_interaction_with_income_m...  4.56 *** 0.0 \n", + "coef_part_time_worker_interaction_with_peak_acc...  6.76 *** 0.0 \n", + "coef_pre_driving_age_child_who_is_in_school_asc_M  31.22 *** 0.0 \n", + "coef_pre_driving_age_child_who_is_in_school_asc_N -0.16 0.0 \n", + "coef_pre_driving_age_child_who_is_in_school_int... -6.17 *** 0.0 \n", + "coef_pre_driving_age_child_who_is_in_school_int... -4.70 *** 0.0 \n", + "coef_pre_driving_age_child_who_is_in_school_int... -4.80 *** 0.0 \n", + "coef_pre_driving_age_child_who_is_in_school_int...  7.83 *** 0.0 \n", + "coef_pre_driving_age_child_who_is_too_young_for...  5.43 *** 0.0 \n", + "coef_pre_driving_age_child_who_is_too_young_for... -3.34 *** 0.0 \n", + "coef_pre_driving_age_child_who_is_too_young_for... -4.27 *** 0.0 \n", + "coef_pre_driving_age_child_who_is_too_young_for...  6.84 *** 0.0 \n", + "coef_pre_driving_age_child_who_is_too_young_for...  1.81 0.0 \n", + "coef_pre_driving_age_child_who_is_too_young_for... -5.51 *** 0.0 \n", + "coef_pre_driving_age_child_who_is_too_young_for... -5.31 *** 0.0 \n", + "coef_pre_driving_age_child_who_is_too_young_for...  7.99 *** 0.0 \n", + "coef_retired_asc_N  1.21 0.0 \n", + "coef_retired_interaction_with_age_more_than_80_H  8.84 *** 0.0 \n", + "coef_retired_interaction_with_female_M  NA 0.0 \n", + "coef_retired_interaction_with_fewer_cars_than_w...  2.98 ** 0.0 \n", + "coef_retired_interaction_with_income_less_than_...  5.63 *** 0.0 \n", + "coef_retired_interaction_with_more_cars_than_wo...  NA 0.0 \n", + "coef_retired_interaction_with_more_cars_than_wo...  11.48 *** 0.0 \n", + "coef_retired_interaction_with_peak_accessibilit...  NA 0.0 \n", + "coef_university_student_asc_M  25.12 *** 0.0 \n", + "coef_university_student_asc_N  1.38 0.0 \n", + "coef_full_time_worker_interaction_with_income_b... \n", + "coef_full_time_worker_interaction_with_income_l... \n", + "\n", + " model2 \\\n", + " Value Std Err \n", + "Parameter \n", + "-999.0 -999.  0.00 \n", + "coef_H_11  1.46  0.0622 \n", + "coef_H_12  0.950  0.132 \n", + "coef_H_124_122_144  0.367  0.153 \n", + "coef_H_126_146 -0.00902  0.336 \n", + "coef_H_13  1.20  0.131 \n", + "coef_H_14  0.991  0.0904 \n", + "coef_H_15  1.18  0.0921 \n", + "coef_H_16  1.85  0.103 \n", + "coef_H_17  1.34  0.0558 \n", + "coef_H_18  0.808  0.109 \n", + "coef_H_22  1.66  0.215 \n", + "coef_H_222_224_244  0.0804  0.225 \n", + "coef_H_226_246_446  0.0726  0.687 \n", + "coef_H_23  1.68  0.209 \n", + "coef_H_24  1.20  0.165 \n", + "coef_H_25 -0.0737  0.277 \n", + "coef_H_26  2.84  0.239 \n", + "coef_H_266_466  1.25  0.652 \n", + "coef_H_27  0.804  0.158 \n", + "coef_H_28  0.946  0.186 \n", + "coef_H_33  0.366  0.448 \n", + "coef_H_34  1.54  0.131 \n", + "coef_H_35  0.213  0.389 \n", + "coef_H_36  1.55  NA \n", + "coef_H_37  1.55  NA \n", + "coef_H_38  1.34  4.18e-13 \n", + "coef_H_44  1.09  0.0883 \n", + "coef_H_45  1.13  0.139 \n", + "coef_H_46  0.524  3.12e-13 \n", + "coef_H_47  0.811  NA \n", + "coef_H_48  1.17  6.30e-13 \n", + "coef_H_55  1.22  0.165 \n", + "coef_H_56_57_58  0.863  NA \n", + "coef_H_66  1.37  0.298 \n", + "coef_H_67  1.28  0.386 \n", + "coef_H_68  1.39  0.756 \n", + "coef_H_77  2.42  0.0804 \n", + "coef_H_78  1.21  0.157 \n", + "coef_H_88  0.956  0.217 \n", + "coef_H_xxxxx -3.47  0.269 \n", + "coef_M_11  9.36e-05  0.0443 \n", + "coef_M_111  0.164  0.0552 \n", + "coef_M_112_114  0.295  0.0900 \n", + "coef_M_12 -0.109  0.0595 \n", + "coef_M_13  0.197  0.0448 \n", + "coef_M_16  0.159  0.0607 \n", + "coef_M_17  0.0372  0.0286 \n", + "coef_M_18  0.372  0.0438 \n", + "coef_M_22  0.966  0.0933 \n", + "coef_M_23  0.107  0.0905 \n", + "coef_M_26  0.776  0.129 \n", + "coef_M_27  0.0943  0.0482 \n", + "coef_M_28  0.515  0.0771 \n", + "coef_M_33  0.673  0.0862 \n", + "coef_M_36 -0.00210  NA \n", + "coef_M_37  0.297  3.67e-13 \n", + "coef_M_38  0.225  4.32e-13 \n", + "coef_M_66  0.0422  0.240 \n", + "coef_M_666 -0.671  1.46 \n", + "coef_M_67  0.288  0.360 \n", + "coef_M_68  0.695  0.457 \n", + "coef_M_77  0.703  0.0584 \n", + "coef_M_78  0.141  0.0957 \n", + "coef_M_88  1.33  0.0903 \n", + "coef_M_xxxxx  0.105  0.0498 \n", + "coef_N_11  0.915  0.0816 \n", + "coef_N_112_114  0.104  0.174 \n", + "coef_N_12  0.467  0.111 \n", + "coef_N_124_122_144  0.128  0.143 \n", + "coef_N_13  0.211  0.135 \n", + "coef_N_14  0.0271  0.0720 \n", + "coef_N_15  0.0894  0.0881 \n", + "coef_N_16  0.309  0.223 \n", + "coef_N_166  0.433  0.525 \n", + "coef_N_17  0.280  0.0919 \n", + "coef_N_18  0.299  0.0989 \n", + "coef_N_22  0.867  0.169 \n", + "coef_N_222_224_444 -1.35  0.195 \n", + "coef_N_23  0.165  0.200 \n", + "coef_N_24  0.595  0.0737 \n", + "coef_N_246_226_446 -0.872  5.62 \n", + "coef_N_25 -0.0275  0.107 \n", + "coef_N_26  0.126  0.436 \n", + "coef_N_27  0.734  0.0961 \n", + "coef_N_28  1.05  0.107 \n", + "coef_N_33  0.786  0.165 \n", + "coef_N_34 -0.0511  0.0979 \n", + "coef_N_35  0.390  0.150 \n", + "coef_N_36  1.62  NA \n", + "coef_N_37  0.516  NA \n", + "coef_N_38  0.897  2.96e-13 \n", + "coef_N_44  0.300  0.0996 \n", + "coef_N_45 -0.0902  0.0854 \n", + "coef_N_46  0.680  2.86e-13 \n", + "coef_N_47  0.565  2.67e-13 \n", + "coef_N_48  1.16  2.34e-13 \n", + "coef_N_55  0.729  0.114 \n", + "coef_N_56_57_58  0.292  NA \n", + "coef_N_66  1.60  0.495 \n", + "coef_N_67  1.29  0.673 \n", + "coef_N_68  1.14  0.899 \n", + "coef_N_77  1.28  0.109 \n", + "coef_N_78 -0.421  0.546 \n", + "coef_N_88  0.645  0.151 \n", + "coef_N_xxxxx -0.0446  0.100 \n", + "coef_UNAVAILABLE -999.  0.00 \n", + "coef_child_who_is_in_school_or_too_young_for_sc...  0.139  0.0416 \n", + "coef_driving_age_child_who_is_in_school_asc_M  2.30  0.178 \n", + "coef_driving_age_child_who_is_in_school_asc_N -1.06  0.445 \n", + "coef_driving_age_child_who_is_in_school_interac... -0.132  0.188 \n", + "coef_driving_age_child_who_is_in_school_interac...  0.836  0.168 \n", + "coef_driving_age_child_who_is_in_school_interac... -1.51  0.242 \n", + "coef_driving_age_child_who_is_in_school_interac...  1.53  0.216 \n", + "coef_full_time_worker_asc_M  2.18  0.246 \n", + "coef_full_time_worker_asc_N  0.693  0.0574 \n", + "coef_full_time_worker_interaction_with_age_less...  0.216  0.0389 \n", + "coef_full_time_worker_interaction_with_female_g... -0.124  0.0394 \n", + "coef_full_time_worker_interaction_with_fewer_ca...  0.528  0.0568 \n", + "coef_full_time_worker_interaction_with_income_l... \n", + "coef_full_time_worker_intraction_with_peak_acce...  0.0642  0.0203 \n", + "coef_non_working_adult_asc_N  0.698  0.354 \n", + "coef_non_working_adult_interaction_with_female_... -0.743  3.86e-14 \n", + "coef_non_working_adult_interaction_with_fewer_c...  0.978  0.136 \n", + "coef_non_working_adult_interaction_with_income_... -0.424  0.0839 \n", + "coef_non_working_adult_interaction_with_income_... -0.716  0.104 \n", + "coef_non_working_adult_interaction_with_more_ca...  0.651  NA \n", + "coef_non_working_adult_interaction_with_more_ca...  0.781  0.0828 \n", + "coef_non_working_adult_interaction_with_peak_ac...  0.231  8.76e-15 \n", + "coef_non_working_adult_retired_or_univ_student_...  0.0629  0.0352 \n", + "coef_part_time_worker_asc_M -0.900  0.394 \n", + "coef_part_time_worker_asc_N  0.679  0.0944 \n", + "coef_part_time_worker_interaction_with_income_b... -0.471  0.120 \n", + "coef_part_time_worker_interaction_with_income_l...  0.278  0.126 \n", + "coef_part_time_worker_interaction_with_income_m... -0.488  0.135 \n", + "coef_part_time_worker_interaction_with_income_m...  0.334  0.0734 \n", + "coef_part_time_worker_interaction_with_peak_acc...  0.218  0.0323 \n", + "coef_pre_driving_age_child_who_is_in_school_asc_M  3.24  0.104 \n", + "coef_pre_driving_age_child_who_is_in_school_asc_N -0.0778  0.412 \n", + "coef_pre_driving_age_child_who_is_in_school_int... -0.697  0.112 \n", + "coef_pre_driving_age_child_who_is_in_school_int... -0.605  0.129 \n", + "coef_pre_driving_age_child_who_is_in_school_int... -0.398  0.0834 \n", + "coef_pre_driving_age_child_who_is_in_school_int...  0.676  0.0862 \n", + "coef_pre_driving_age_child_who_is_too_young_for...  0.587  0.107 \n", + "coef_pre_driving_age_child_who_is_too_young_for... -1.40  0.417 \n", + "coef_pre_driving_age_child_who_is_too_young_for... -0.392  0.0920 \n", + "coef_pre_driving_age_child_who_is_too_young_for...  0.670  0.0978 \n", + "coef_pre_driving_age_child_who_is_too_young_for...  0.243  0.134 \n", + "coef_pre_driving_age_child_who_is_too_young_for... -0.708  0.128 \n", + "coef_pre_driving_age_child_who_is_too_young_for... -0.688  0.131 \n", + "coef_pre_driving_age_child_who_is_too_young_for...  0.686  0.0858 \n", + "coef_retired_asc_N  0.439  0.359 \n", + "coef_retired_interaction_with_age_more_than_80_H  0.732  0.0825 \n", + "coef_retired_interaction_with_female_M  0.477  0.00 \n", + "coef_retired_interaction_with_fewer_cars_than_w...  0.649  0.218 \n", + "coef_retired_interaction_with_income_less_than_...  0.483  0.0844 \n", + "coef_retired_interaction_with_more_cars_than_wo...  2.99  0.00 \n", + "coef_retired_interaction_with_more_cars_than_wo...  1.01  0.0884 \n", + "coef_retired_interaction_with_peak_accessibilit...  0.279  0.00 \n", + "coef_university_student_asc_M  2.17  0.0864 \n", + "coef_university_student_asc_N  0.490  0.356 \n", + "coef_full_time_worker_interaction_with_income_b...  0.0541  0.0542 \n", + "coef_full_time_worker_interaction_with_income_l...  0.245  0.0795 \n", + "\n", + " \n", + " t Stat Signif Null Value \n", + "Parameter \n", + "-999.0  NA 0.0 \n", + "coef_H_11  23.40 *** 0.0 \n", + "coef_H_12  7.18 *** 0.0 \n", + "coef_H_124_122_144  2.40 * 0.0 \n", + "coef_H_126_146 -0.03 0.0 \n", + "coef_H_13  9.17 *** 0.0 \n", + "coef_H_14  10.96 *** 0.0 \n", + "coef_H_15  12.86 *** 0.0 \n", + "coef_H_16  17.98 *** 0.0 \n", + "coef_H_17  24.04 *** 0.0 \n", + "coef_H_18  7.42 *** 0.0 \n", + "coef_H_22  7.73 *** 0.0 \n", + "coef_H_222_224_244  0.36 0.0 \n", + "coef_H_226_246_446  0.11 0.0 \n", + "coef_H_23  8.03 *** 0.0 \n", + "coef_H_24  7.24 *** 0.0 \n", + "coef_H_25 -0.27 0.0 \n", + "coef_H_26  11.86 *** 0.0 \n", + "coef_H_266_466  1.91 0.0 \n", + "coef_H_27  5.07 *** 0.0 \n", + "coef_H_28  5.08 *** 0.0 \n", + "coef_H_33  0.82 0.0 \n", + "coef_H_34  11.75 *** 0.0 \n", + "coef_H_35  0.55 0.0 \n", + "coef_H_36  NA 0.0 \n", + "coef_H_37  NA 0.0 \n", + "coef_H_38  BIG *** 0.0 \n", + "coef_H_44  12.30 *** 0.0 \n", + "coef_H_45  8.16 *** 0.0 \n", + "coef_H_46  BIG *** 0.0 \n", + "coef_H_47  NA 0.0 \n", + "coef_H_48  BIG *** 0.0 \n", + "coef_H_55  7.39 *** 0.0 \n", + "coef_H_56_57_58  NA 0.0 \n", + "coef_H_66  4.60 *** 0.0 \n", + "coef_H_67  3.32 *** 0.0 \n", + "coef_H_68  1.83 0.0 \n", + "coef_H_77  30.16 *** 0.0 \n", + "coef_H_78  7.69 *** 0.0 \n", + "coef_H_88  4.40 *** 0.0 \n", + "coef_H_xxxxx -12.88 *** 0.0 \n", + "coef_M_11  0.00 0.0 \n", + "coef_M_111  2.96 ** 0.0 \n", + "coef_M_112_114  3.28 ** 0.0 \n", + "coef_M_12 -1.83 0.0 \n", + "coef_M_13  4.39 *** 0.0 \n", + "coef_M_16  2.63 ** 0.0 \n", + "coef_M_17  1.30 0.0 \n", + "coef_M_18  8.49 *** 0.0 \n", + "coef_M_22  10.36 *** 0.0 \n", + "coef_M_23  1.18 0.0 \n", + "coef_M_26  6.00 *** 0.0 \n", + "coef_M_27  1.95 0.0 \n", + "coef_M_28  6.68 *** 0.0 \n", + "coef_M_33  7.81 *** 0.0 \n", + "coef_M_36  NA 0.0 \n", + "coef_M_37  BIG *** 0.0 \n", + "coef_M_38  BIG *** 0.0 \n", + "coef_M_66  0.18 0.0 \n", + "coef_M_666 -0.46 0.0 \n", + "coef_M_67  0.80 0.0 \n", + "coef_M_68  1.52 0.0 \n", + "coef_M_77  12.03 *** 0.0 \n", + "coef_M_78  1.48 0.0 \n", + "coef_M_88  14.70 *** 0.0 \n", + "coef_M_xxxxx  2.10 * 0.0 \n", + "coef_N_11  11.21 *** 0.0 \n", + "coef_N_112_114  0.60 0.0 \n", + "coef_N_12  4.22 *** 0.0 \n", + "coef_N_124_122_144  0.90 0.0 \n", + "coef_N_13  1.57 0.0 \n", + "coef_N_14  0.38 0.0 \n", + "coef_N_15  1.01 0.0 \n", + "coef_N_16  1.39 0.0 \n", + "coef_N_166  0.82 0.0 \n", + "coef_N_17  3.04 ** 0.0 \n", + "coef_N_18  3.02 ** 0.0 \n", + "coef_N_22  5.14 *** 0.0 \n", + "coef_N_222_224_444 -6.91 *** 0.0 \n", + "coef_N_23  0.83 0.0 \n", + "coef_N_24  8.07 *** 0.0 \n", + "coef_N_246_226_446 -0.16 0.0 \n", + "coef_N_25 -0.26 0.0 \n", + "coef_N_26  0.29 0.0 \n", + "coef_N_27  7.64 *** 0.0 \n", + "coef_N_28  9.85 *** 0.0 \n", + "coef_N_33  4.77 *** 0.0 \n", + "coef_N_34 -0.52 0.0 \n", + "coef_N_35  2.59 ** 0.0 \n", + "coef_N_36  NA 0.0 \n", + "coef_N_37  NA 0.0 \n", + "coef_N_38  BIG *** 0.0 \n", + "coef_N_44  3.01 ** 0.0 \n", + "coef_N_45 -1.06 0.0 \n", + "coef_N_46  BIG *** 0.0 \n", + "coef_N_47  BIG *** 0.0 \n", + "coef_N_48  BIG *** 0.0 \n", + "coef_N_55  6.41 *** 0.0 \n", + "coef_N_56_57_58  NA 0.0 \n", + "coef_N_66  3.23 ** 0.0 \n", + "coef_N_67  1.92 0.0 \n", + "coef_N_68  1.27 0.0 \n", + "coef_N_77  11.68 *** 0.0 \n", + "coef_N_78 -0.77 0.0 \n", + "coef_N_88  4.26 *** 0.0 \n", + "coef_N_xxxxx -0.44 0.0 \n", + "coef_UNAVAILABLE  NA 0.0 \n", + "coef_child_who_is_in_school_or_too_young_for_sc...  3.35 *** 0.0 \n", + "coef_driving_age_child_who_is_in_school_asc_M  12.94 *** 0.0 \n", + "coef_driving_age_child_who_is_in_school_asc_N -2.39 * 0.0 \n", + "coef_driving_age_child_who_is_in_school_interac... -0.70 0.0 \n", + "coef_driving_age_child_who_is_in_school_interac...  4.96 *** 0.0 \n", + "coef_driving_age_child_who_is_in_school_interac... -6.24 *** 0.0 \n", + "coef_driving_age_child_who_is_in_school_interac...  7.05 *** 0.0 \n", + "coef_full_time_worker_asc_M  8.88 *** 0.0 \n", + "coef_full_time_worker_asc_N  12.07 *** 0.0 \n", + "coef_full_time_worker_interaction_with_age_less...  5.54 *** 0.0 \n", + "coef_full_time_worker_interaction_with_female_g... -3.15 ** 0.0 \n", + "coef_full_time_worker_interaction_with_fewer_ca...  9.29 *** 0.0 \n", + "coef_full_time_worker_interaction_with_income_l... \n", + "coef_full_time_worker_intraction_with_peak_acce...  3.16 ** 0.0 \n", + "coef_non_working_adult_asc_N  1.97 * 0.0 \n", + "coef_non_working_adult_interaction_with_female_... -BIG *** 0.0 \n", + "coef_non_working_adult_interaction_with_fewer_c...  7.19 *** 0.0 \n", + "coef_non_working_adult_interaction_with_income_... -5.05 *** 0.0 \n", + "coef_non_working_adult_interaction_with_income_... -6.89 *** 0.0 \n", + "coef_non_working_adult_interaction_with_more_ca...  NA 0.0 \n", + "coef_non_working_adult_interaction_with_more_ca...  9.43 *** 0.0 \n", + "coef_non_working_adult_interaction_with_peak_ac...  BIG *** 0.0 \n", + "coef_non_working_adult_retired_or_univ_student_...  1.79 0.0 \n", + "coef_part_time_worker_asc_M -2.29 * 0.0 \n", + "coef_part_time_worker_asc_N  7.19 *** 0.0 \n", + "coef_part_time_worker_interaction_with_income_b... -3.93 *** 0.0 \n", + "coef_part_time_worker_interaction_with_income_l...  2.21 * 0.0 \n", + "coef_part_time_worker_interaction_with_income_m... -3.61 *** 0.0 \n", + "coef_part_time_worker_interaction_with_income_m...  4.55 *** 0.0 \n", + "coef_part_time_worker_interaction_with_peak_acc...  6.75 *** 0.0 \n", + "coef_pre_driving_age_child_who_is_in_school_asc_M  31.19 *** 0.0 \n", + "coef_pre_driving_age_child_who_is_in_school_asc_N -0.19 0.0 \n", + "coef_pre_driving_age_child_who_is_in_school_int... -6.19 *** 0.0 \n", + "coef_pre_driving_age_child_who_is_in_school_int... -4.69 *** 0.0 \n", + "coef_pre_driving_age_child_who_is_in_school_int... -4.77 *** 0.0 \n", + "coef_pre_driving_age_child_who_is_in_school_int...  7.84 *** 0.0 \n", + "coef_pre_driving_age_child_who_is_too_young_for...  5.47 *** 0.0 \n", + "coef_pre_driving_age_child_who_is_too_young_for... -3.36 *** 0.0 \n", + "coef_pre_driving_age_child_who_is_too_young_for... -4.27 *** 0.0 \n", + "coef_pre_driving_age_child_who_is_too_young_for...  6.85 *** 0.0 \n", + "coef_pre_driving_age_child_who_is_too_young_for...  1.82 0.0 \n", + "coef_pre_driving_age_child_who_is_too_young_for... -5.52 *** 0.0 \n", + "coef_pre_driving_age_child_who_is_too_young_for... -5.26 *** 0.0 \n", + "coef_pre_driving_age_child_who_is_too_young_for...  7.99 *** 0.0 \n", + "coef_retired_asc_N  1.22 0.0 \n", + "coef_retired_interaction_with_age_more_than_80_H  8.87 *** 0.0 \n", + "coef_retired_interaction_with_female_M  NA 0.0 \n", + "coef_retired_interaction_with_fewer_cars_than_w...  2.97 ** 0.0 \n", + "coef_retired_interaction_with_income_less_than_...  5.72 *** 0.0 \n", + "coef_retired_interaction_with_more_cars_than_wo...  NA 0.0 \n", + "coef_retired_interaction_with_more_cars_than_wo...  11.45 *** 0.0 \n", + "coef_retired_interaction_with_peak_accessibilit...  NA 0.0 \n", + "coef_university_student_asc_M  25.10 *** 0.0 \n", + "coef_university_student_asc_N  1.38 0.0 \n", + "coef_full_time_worker_interaction_with_income_b...  1.00 0.0 \n", + "coef_full_time_worker_interaction_with_income_l...  3.08 ** 0.0 " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "with pd.option_context('display.max_rows', 999):\n", + " display(pd.concat({\n", + " \"model\": model.parameter_summary().data,\n", + " \"model2\": model2.parameter_summary().data,\n", + " }, axis=1).fillna(\"\"))" ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "ESTER", "language": "python", "name": "python3" }, @@ -3277,7 +6558,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.8" + "version": "3.10.15" }, "toc": { "base_numbering": 1, diff --git a/activitysim/examples/example_estimation/notebooks/07_mand_tour_freq.ipynb b/activitysim/examples/example_estimation/notebooks/07_mand_tour_freq.ipynb index 12091fc16..5e444a544 100644 --- a/activitysim/examples/example_estimation/notebooks/07_mand_tour_freq.ipynb +++ b/activitysim/examples/example_estimation/notebooks/07_mand_tour_freq.ipynb @@ -24,7 +24,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -34,27 +34,74 @@ "id": "s53VwlPwtNnr", "outputId": "d1208b7a-c1f2-4b0b-c439-bf312fe12be0" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "JAX not found. Some functionality will be unavailable.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'larch': '6.0.32',\n", + " 'sharrow': '2.13.0',\n", + " 'numpy': '1.26.4',\n", + " 'pandas': '1.5.3',\n", + " 'xarray': '2024.3.0',\n", + " 'numba': '0.60.0'}" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "import os\n", - "import larch # !conda install larch -c conda-forge # for estimation\n", - "import pandas as pd" + "import larch as lx\n", + "import pandas as pd\n", + "\n", + "lx.versions()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We'll work in our `test` directory, where ActivitySim has saved the estimation data bundles." + "For this demo, we will assume that you have already run ActivitySim in estimation\n", + "mode, and saved the required estimation data bundles (EDB's) to disk. See\n", + "the [first notebook](./01_estimation_mode.ipynb) for details. The following module\n", + "will run a script to set everything up if the example data is not already available." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "EDB directory already populated.\n" + ] + }, + { + "data": { + "text/plain": [ + "PosixPath('test-estimation-data/activitysim-prototype-mtc-extended')" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "os.chdir('test')" + "from est_mode_setup import prepare\n", + "\n", + "prepare()" ] }, { @@ -68,12 +115,27 @@ "cell_type": "code", "execution_count": 3, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "loading from output-est-mode/estimation_data_bundle/mandatory_tour_frequency/mandatory_tour_frequency_coefficients.csv\n", + "loading spec from output-est-mode/estimation_data_bundle/mandatory_tour_frequency/mandatory_tour_frequency_SPEC.csv\n", + "loading from output-est-mode/estimation_data_bundle/mandatory_tour_frequency/mandatory_tour_frequency_values_combined.parquet\n" + ] + } + ], "source": [ "modelname = \"mandatory_tour_frequency\"\n", "\n", "from activitysim.estimation.larch import component_model\n", - "model, data = component_model(modelname, return_data=True)" + "\n", + "model, data = component_model(\n", + " modelname,\n", + " edb_directory=f\"output-est-mode/estimation_data_bundle/{modelname}/\",\n", + " return_data=True,\n", + ")" ] }, { @@ -743,15 +805,15 @@ " util_driving_age_child\n", " util_pre_driving_age_child\n", " ...\n", - " HSENROLL\n", - " COLLFTE\n", - " COLLPTE\n", - " TOPOLOGY\n", - " TERMINAL\n", - " household_density\n", - " employment_density\n", - " density_index\n", - " is_cbd\n", + " auPkTotal\n", + " auOpRetail\n", + " auOpTotal\n", + " trPkRetail\n", + " trPkTotal\n", + " trOpRetail\n", + " trOpTotal\n", + " nmRetail\n", + " nmTotal\n", " override_choice_code\n", " \n", " \n", @@ -781,8 +843,8 @@ " \n", " \n", " \n", - " 629\n", - " 629\n", + " 1918\n", + " 1918\n", " school1\n", " school1\n", " 0.0\n", @@ -793,20 +855,20 @@ " 0.0\n", " 0.0\n", " ...\n", - " 0.00000\n", - " 0.00000\n", - " 0.00000\n", - " 1\n", - " 1.64217\n", - " 13.280000\n", - " 4.535000\n", - " 3.380567\n", - " False\n", + " 12.295952\n", + " 10.006297\n", + " 12.411522\n", + " 5.033643\n", + " 7.242282\n", + " 4.864150\n", + " 7.063680\n", + " 5.626389\n", + " 7.133756\n", " 3\n", " \n", " \n", - " 1274\n", - " 1274\n", + " 3215\n", + " 3215\n", " school1\n", " school1\n", " 0.0\n", @@ -817,20 +879,20 @@ " 0.0\n", " 0.0\n", " ...\n", - " 506.23721\n", - " 0.00000\n", - " 0.00000\n", - " 1\n", - " 2.44180\n", - " 19.776119\n", - " 7.179104\n", - " 5.267062\n", - " False\n", + " 12.036005\n", + " 9.698240\n", + " 12.156041\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 1.360774\n", + " 5.139792\n", " 3\n", " \n", " \n", - " 27266\n", - " 27266\n", + " 4362\n", + " 4362\n", " school1\n", " school1\n", " 0.0\n", @@ -841,20 +903,20 @@ " 0.0\n", " 0.0\n", " ...\n", - " 26.92893\n", - " 2035.58118\n", - " 20.60887\n", - " 2\n", - " 5.22542\n", - " 97.634722\n", - " 550.205552\n", - " 82.920387\n", - " False\n", + " 11.954228\n", + " 9.566058\n", + " 12.139587\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 3.086628\n", + " 5.647842\n", " 3\n", " \n", " \n", - " 28012\n", - " 28012\n", + " 5859\n", + " 5859\n", " school1\n", " school1\n", " 0.0\n", @@ -865,20 +927,20 @@ " 0.0\n", " 0.0\n", " ...\n", - " 0.00000\n", - " 690.54974\n", - " 0.00000\n", - " 3\n", - " 4.73802\n", - " 117.769796\n", - " 246.205869\n", - " 79.663609\n", - " False\n", + " 12.484185\n", + " 9.994051\n", + " 12.608786\n", + " 2.273060\n", + " 4.760981\n", + " 2.104966\n", + " 4.545843\n", + " 4.254230\n", + " 6.941860\n", " 3\n", " \n", " \n", - " 29476\n", - " 29476\n", + " 6100\n", + " 6100\n", " school1\n", " school1\n", " 0.0\n", @@ -889,15 +951,15 @@ " 0.0\n", " 0.0\n", " ...\n", - " 0.00000\n", - " 0.00000\n", - " 0.00000\n", - " 2\n", - " 4.75017\n", - " 71.898080\n", - " 273.023745\n", - " 56.911108\n", - " False\n", + " 12.718182\n", + " 10.233345\n", + " 12.809847\n", + " 3.534863\n", + " 6.375527\n", + " 3.401762\n", + " 6.258096\n", + " 5.240538\n", + " 7.175776\n", " 3\n", " \n", " \n", @@ -925,106 +987,106 @@ " ...\n", " \n", " \n", - " 2823069\n", - " 7514404\n", - " work1\n", - " work1\n", - " 1.0\n", + " 2857869\n", + " 7549204\n", + " school1\n", + " school1\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", + " 1.0\n", " 0.0\n", " ...\n", - " 0.00000\n", - " 0.00000\n", - " 0.00000\n", - " 1\n", - " 3.95752\n", - " 65.596535\n", - " 32.655666\n", - " 21.802041\n", - " True\n", - " 1\n", + " 12.307902\n", + " 10.005144\n", + " 12.585021\n", + " 3.812385\n", + " 6.519807\n", + " 3.632087\n", + " 6.178083\n", + " 3.718425\n", + " 5.556368\n", + " 3\n", " \n", " \n", - " 2823442\n", - " 7514777\n", - " work1\n", - " work1\n", + " 2857903\n", + " 7549238\n", + " school1\n", + " school1\n", " 0.0\n", " 0.0\n", - " 1.0\n", " 0.0\n", " 0.0\n", " 0.0\n", + " 1.0\n", " 0.0\n", " ...\n", - " 0.00000\n", - " 0.00000\n", - " 0.00000\n", - " 2\n", - " 4.51942\n", - " 56.706023\n", - " 144.861886\n", - " 40.753220\n", - " True\n", - " 1\n", + " 12.309276\n", + " 9.986443\n", + " 12.582868\n", + " 3.319335\n", + " 6.046532\n", + " 3.207581\n", + " 5.829832\n", + " 4.139571\n", + " 6.510036\n", + " 3\n", " \n", " \n", - " 2823850\n", - " 7515185\n", - " work_and_school\n", - " work_and_school\n", + " 2859659\n", + " 7550994\n", + " school1\n", + " school1\n", " 0.0\n", " 0.0\n", - " 1.0\n", " 0.0\n", " 0.0\n", " 0.0\n", + " 1.0\n", " 0.0\n", " ...\n", - " 0.00000\n", - " 0.00000\n", - " 0.00000\n", + " 11.638333\n", + " 9.598840\n", + " 11.963516\n", + " 0.916326\n", + " 3.279901\n", + " 0.315332\n", + " 2.429541\n", + " 3.824743\n", + " 6.768218\n", " 3\n", - " 2.46800\n", - " 0.296858\n", - " 36.296472\n", - " 0.294449\n", - " True\n", - " 5\n", " \n", " \n", - " 2836262\n", - " 7527597\n", + " 2861083\n", + " 7552418\n", " school1\n", " school1\n", " 0.0\n", " 0.0\n", - " 1.0\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", + " 1.0\n", " ...\n", - " 3961.04761\n", - " 17397.79102\n", - " 11152.93652\n", - " 1\n", - " 2.28992\n", - " 3.984127\n", - " 23.820106\n", - " 3.413233\n", - " False\n", + " 10.447823\n", + " 8.697696\n", + " 10.794293\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 3.679297\n", + " 5.376192\n", " 3\n", " \n", " \n", - " 2849737\n", - " 7541072\n", - " school2\n", - " school2\n", + " 2870568\n", + " 7561903\n", + " school1\n", + " school1\n", " 0.0\n", " 0.0\n", " 1.0\n", @@ -1033,108 +1095,94 @@ " 0.0\n", " 0.0\n", " ...\n", - " 0.00000\n", - " 0.00000\n", - " 0.00000\n", + " 11.802080\n", + " 9.800589\n", + " 12.206363\n", + " 1.183362\n", + " 3.611805\n", + " 0.897289\n", + " 3.179071\n", + " 5.769691\n", + " 8.087817\n", " 3\n", - " 3.35329\n", - " 34.477273\n", - " 15.454545\n", - " 10.671163\n", - " True\n", - " 4\n", " \n", " \n", "\n", - "

2620 rows × 220 columns

\n", + "

31768 rows × 220 columns

\n", "" ], "text/plain": [ - " person_id model_choice override_choice util_ft_worker \\\n", - "household_id \n", - "629 629 school1 school1 0.0 \n", - "1274 1274 school1 school1 0.0 \n", - "27266 27266 school1 school1 0.0 \n", - "28012 28012 school1 school1 0.0 \n", - "29476 29476 school1 school1 0.0 \n", - "... ... ... ... ... \n", - "2823069 7514404 work1 work1 1.0 \n", - "2823442 7514777 work1 work1 0.0 \n", - "2823850 7515185 work_and_school work_and_school 0.0 \n", - "2836262 7527597 school1 school1 0.0 \n", - "2849737 7541072 school2 school2 0.0 \n", + " person_id model_choice override_choice util_ft_worker \\\n", + "household_id \n", + "1918 1918 school1 school1 0.0 \n", + "3215 3215 school1 school1 0.0 \n", + "4362 4362 school1 school1 0.0 \n", + "5859 5859 school1 school1 0.0 \n", + "6100 6100 school1 school1 0.0 \n", + "... ... ... ... ... \n", + "2857869 7549204 school1 school1 0.0 \n", + "2857903 7549238 school1 school1 0.0 \n", + "2859659 7550994 school1 school1 0.0 \n", + "2861083 7552418 school1 school1 0.0 \n", + "2870568 7561903 school1 school1 0.0 \n", "\n", " util_pt_worker util_univ util_non_working_adult util_retired \\\n", "household_id \n", - "629 0.0 1.0 0.0 0.0 \n", - "1274 0.0 1.0 0.0 0.0 \n", - "27266 0.0 1.0 0.0 0.0 \n", - "28012 0.0 1.0 0.0 0.0 \n", - "29476 0.0 1.0 0.0 0.0 \n", + "1918 0.0 1.0 0.0 0.0 \n", + "3215 0.0 1.0 0.0 0.0 \n", + "4362 0.0 1.0 0.0 0.0 \n", + "5859 0.0 1.0 0.0 0.0 \n", + "6100 0.0 1.0 0.0 0.0 \n", "... ... ... ... ... \n", - "2823069 0.0 0.0 0.0 0.0 \n", - "2823442 0.0 1.0 0.0 0.0 \n", - "2823850 0.0 1.0 0.0 0.0 \n", - "2836262 0.0 1.0 0.0 0.0 \n", - "2849737 0.0 1.0 0.0 0.0 \n", + "2857869 0.0 0.0 0.0 0.0 \n", + "2857903 0.0 0.0 0.0 0.0 \n", + "2859659 0.0 0.0 0.0 0.0 \n", + "2861083 0.0 0.0 0.0 0.0 \n", + "2870568 0.0 1.0 0.0 0.0 \n", "\n", " util_driving_age_child util_pre_driving_age_child ... \\\n", "household_id ... \n", - "629 0.0 0.0 ... \n", - "1274 0.0 0.0 ... \n", - "27266 0.0 0.0 ... \n", - "28012 0.0 0.0 ... \n", - "29476 0.0 0.0 ... \n", + "1918 0.0 0.0 ... \n", + "3215 0.0 0.0 ... \n", + "4362 0.0 0.0 ... \n", + "5859 0.0 0.0 ... \n", + "6100 0.0 0.0 ... \n", "... ... ... ... \n", - "2823069 0.0 0.0 ... \n", - "2823442 0.0 0.0 ... \n", - "2823850 0.0 0.0 ... \n", - "2836262 0.0 0.0 ... \n", - "2849737 0.0 0.0 ... \n", + "2857869 1.0 0.0 ... \n", + "2857903 1.0 0.0 ... \n", + "2859659 1.0 0.0 ... \n", + "2861083 0.0 1.0 ... \n", + "2870568 0.0 0.0 ... \n", "\n", - " HSENROLL COLLFTE COLLPTE TOPOLOGY TERMINAL \\\n", - "household_id \n", - "629 0.00000 0.00000 0.00000 1 1.64217 \n", - "1274 506.23721 0.00000 0.00000 1 2.44180 \n", - "27266 26.92893 2035.58118 20.60887 2 5.22542 \n", - "28012 0.00000 690.54974 0.00000 3 4.73802 \n", - "29476 0.00000 0.00000 0.00000 2 4.75017 \n", - "... ... ... ... ... ... \n", - "2823069 0.00000 0.00000 0.00000 1 3.95752 \n", - "2823442 0.00000 0.00000 0.00000 2 4.51942 \n", - "2823850 0.00000 0.00000 0.00000 3 2.46800 \n", - "2836262 3961.04761 17397.79102 11152.93652 1 2.28992 \n", - "2849737 0.00000 0.00000 0.00000 3 3.35329 \n", + " auPkTotal auOpRetail auOpTotal trPkRetail trPkTotal \\\n", + "household_id \n", + "1918 12.295952 10.006297 12.411522 5.033643 7.242282 \n", + "3215 12.036005 9.698240 12.156041 0.000000 0.000000 \n", + "4362 11.954228 9.566058 12.139587 0.000000 0.000000 \n", + "5859 12.484185 9.994051 12.608786 2.273060 4.760981 \n", + "6100 12.718182 10.233345 12.809847 3.534863 6.375527 \n", + "... ... ... ... ... ... \n", + "2857869 12.307902 10.005144 12.585021 3.812385 6.519807 \n", + "2857903 12.309276 9.986443 12.582868 3.319335 6.046532 \n", + "2859659 11.638333 9.598840 11.963516 0.916326 3.279901 \n", + "2861083 10.447823 8.697696 10.794293 0.000000 0.000000 \n", + "2870568 11.802080 9.800589 12.206363 1.183362 3.611805 \n", "\n", - " household_density employment_density density_index is_cbd \\\n", - "household_id \n", - "629 13.280000 4.535000 3.380567 False \n", - "1274 19.776119 7.179104 5.267062 False \n", - "27266 97.634722 550.205552 82.920387 False \n", - "28012 117.769796 246.205869 79.663609 False \n", - "29476 71.898080 273.023745 56.911108 False \n", - "... ... ... ... ... \n", - "2823069 65.596535 32.655666 21.802041 True \n", - "2823442 56.706023 144.861886 40.753220 True \n", - "2823850 0.296858 36.296472 0.294449 True \n", - "2836262 3.984127 23.820106 3.413233 False \n", - "2849737 34.477273 15.454545 10.671163 True \n", + " trOpRetail trOpTotal nmRetail nmTotal override_choice_code \n", + "household_id \n", + "1918 4.864150 7.063680 5.626389 7.133756 3 \n", + "3215 0.000000 0.000000 1.360774 5.139792 3 \n", + "4362 0.000000 0.000000 3.086628 5.647842 3 \n", + "5859 2.104966 4.545843 4.254230 6.941860 3 \n", + "6100 3.401762 6.258096 5.240538 7.175776 3 \n", + "... ... ... ... ... ... \n", + "2857869 3.632087 6.178083 3.718425 5.556368 3 \n", + "2857903 3.207581 5.829832 4.139571 6.510036 3 \n", + "2859659 0.315332 2.429541 3.824743 6.768218 3 \n", + "2861083 0.000000 0.000000 3.679297 5.376192 3 \n", + "2870568 0.897289 3.179071 5.769691 8.087817 3 \n", "\n", - " override_choice_code \n", - "household_id \n", - "629 3 \n", - "1274 3 \n", - "27266 3 \n", - "28012 3 \n", - "29476 3 \n", - "... ... \n", - "2823069 1 \n", - "2823442 1 \n", - "2823850 5 \n", - "2836262 3 \n", - "2849737 4 \n", - "\n", - "[2620 rows x 220 columns]" + "[31768 rows x 220 columns]" ] }, "execution_count": 6, @@ -1160,17 +1208,10 @@ "execution_count": 7, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "req_data does not request avail_ca or avail_co but it is set and being provided\n" - ] - }, { "data": { "text/html": [ - "

Iteration 050 [Optimization terminated successfully]

" + "

Iteration 034 [Optimization terminated successfully]

" ], "text/plain": [ "" @@ -1182,7 +1223,7 @@ { "data": { "text/html": [ - "

Best LL = -410.2201502048449

" + "

Best LL = -4677.236180934496

" ], "text/plain": [ "" @@ -1213,823 +1254,783 @@ " \n", " \n", " value\n", + " best\n", " initvalue\n", - " nullvalue\n", " minimum\n", " maximum\n", + " nullvalue\n", " holdfast\n", - " note\n", - " best\n", + " \n", + " \n", + " param_name\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " 0\n", " 0.000000\n", + " 0.000000\n", " 0.0000\n", " 0.0\n", " 0.0\n", " 0.0\n", " 1\n", - " \n", - " 0.000000\n", " \n", " \n", " coef_can_walk_to_work_and_school\n", - " 0.071630\n", + " 0.284832\n", + " 0.284832\n", " 0.1391\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.071630\n", " \n", " \n", " coef_can_walk_to_work_school2\n", - " 1.368092\n", + " 0.811379\n", + " 0.811379\n", " 0.7114\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.368092\n", " \n", " \n", " coef_can_walk_to_work_work2\n", - " 0.651120\n", + " 0.600928\n", + " 0.600928\n", " 0.5268\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.651120\n", " \n", " \n", " coef_driving_age_child_school2_asc\n", - " -13.067731\n", + " -3.209418\n", + " -3.209418\n", " -3.1360\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -13.067731\n", " \n", " \n", " coef_driving_age_child_work_and_school_asc\n", - " -12.605997\n", + " -4.565091\n", + " -4.565091\n", " -4.4362\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -12.605997\n", " \n", " \n", " coef_female_school1\n", - " 0.247086\n", + " 0.000463\n", + " 0.000463\n", " 0.1592\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.247086\n", " \n", " \n", " coef_female_school2\n", - " -0.301339\n", + " -0.016856\n", + " -0.016856\n", " 0.1140\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.301339\n", " \n", " \n", " coef_female_work1\n", - " -2.242748\n", + " 0.333342\n", + " 0.333342\n", " 0.1737\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -2.242748\n", " \n", " \n", " coef_female_work2\n", - " -0.387411\n", + " -0.219862\n", + " -0.219862\n", " -0.2255\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.387411\n", " \n", " \n", " coef_female_work_and_school\n", - " -3.218280\n", + " -0.265847\n", + " -0.265847\n", " -0.3442\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -3.218280\n", " \n", " \n", " coef_few_cars_than_drivers_school2\n", - " -0.862451\n", + " -0.297623\n", + " -0.297623\n", " -0.5759\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.862451\n", " \n", " \n", " coef_ft_worker_work2_asc\n", - " -5.517933\n", + " -3.494595\n", + " -3.494595\n", " -3.3781\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -5.517933\n", " \n", " \n", " coef_hh_income_gt_50k_school1\n", " 0.034700\n", + " 0.034700\n", " 0.0347\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.034700\n", " \n", " \n", " coef_hh_income_gt_50k_student_work_and_school\n", - " -0.921175\n", + " -0.128428\n", + " -0.128428\n", " -0.0528\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.921175\n", " \n", " \n", " coef_hh_income_gt_50k_work\n", - " -1.418551\n", + " -0.286159\n", + " -0.286159\n", " -0.0528\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -1.418551\n", " \n", " \n", " coef_hh_income_gt_50k_worker_work_and_school\n", " 0.034700\n", + " 0.034700\n", " 0.0347\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.034700\n", " \n", " \n", " coef_home_urban_school1\n", " -0.136100\n", + " -0.136100\n", " -0.1361\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.136100\n", " \n", " \n", " coef_home_urban_school2\n", - " -8.455615\n", + " 0.161745\n", + " 0.161745\n", " 0.3170\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -8.455615\n", " \n", " \n", " coef_home_urban_work1\n", - " 4.026796\n", + " -0.122770\n", + " -0.122770\n", " -0.2831\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 4.026796\n", " \n", " \n", " coef_home_urban_work2\n", - " 2.624854\n", + " 0.142218\n", + " 0.142218\n", " 0.2308\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 2.624854\n", " \n", " \n", " coef_home_urban_work_and_school\n", - " -0.447070\n", + " -0.436835\n", + " -0.436835\n", " -0.3509\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.447070\n", " \n", " \n", " coef_no_cars_in_hh_school2\n", - " -0.620465\n", + " -1.479517\n", + " -1.479517\n", " -1.4130\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.620465\n", " \n", " \n", " coef_no_cars_in_hh_work2\n", - " -0.725967\n", + " -1.524960\n", + " -1.524960\n", " -1.3060\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.725967\n", " \n", " \n", " coef_no_cars_in_hh_work_and_school\n", - " -0.775934\n", + " -1.244512\n", + " -1.244512\n", " -1.3020\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.775934\n", " \n", " \n", " coef_non_family_hh_category1\n", " -0.250000\n", + " -0.250000\n", " -0.2500\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.250000\n", " \n", " \n", " coef_non_family_hh_category2\n", - " 5.000771\n", + " -0.091298\n", + " -0.091298\n", " -0.1792\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 5.000771\n", " \n", " \n", " coef_non_student_goes_to_school\n", " 3.883000\n", + " 3.883000\n", " 3.8830\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 3.883000\n", " \n", " \n", " coef_num_non_workers_in_hh_school1\n", " 0.257400\n", + " 0.257400\n", " 0.2574\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.257400\n", " \n", " \n", " coef_num_preschool_in_hh_school1\n", " -0.133500\n", + " -0.133500\n", " -0.1335\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.133500\n", " \n", " \n", " coef_num_preschool_in_hh_school2\n", - " 0.356660\n", + " -0.796350\n", + " -0.796350\n", " -0.5577\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.356660\n", " \n", " \n", " coef_num_preschool_in_hh_work1\n", - " -2.930501\n", + " 0.125045\n", + " 0.125045\n", " 0.2191\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -2.930501\n", " \n", " \n", " coef_num_preschool_in_hh_work2\n", - " 0.225173\n", + " -0.126183\n", + " -0.126183\n", " -0.1478\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.225173\n", " \n", " \n", " coef_num_preschool_in_hh_work_and_school\n", - " -29.197569\n", + " -0.070125\n", + " -0.070125\n", " -0.1251\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -29.197569\n", " \n", " \n", " coef_num_under_16_not_at_school_school2\n", - " -0.638293\n", + " -0.015345\n", + " -0.015345\n", " 0.0866\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.638293\n", " \n", " \n", " coef_num_under_16_not_at_school_work2\n", - " -0.118991\n", + " 0.168260\n", + " 0.168260\n", " 0.1804\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.118991\n", " \n", " \n", " coef_num_under_16_not_at_school_work_and_school\n", - " -15.357907\n", + " -0.192330\n", + " -0.192330\n", " -0.1955\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -15.357907\n", " \n", " \n", " coef_pre_driving_age_child_school2_asc\n", - " 3.679726\n", + " -4.210709\n", + " -4.210709\n", " -3.9703\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 3.679726\n", " \n", " \n", " coef_pt_worker_work2_asc\n", - " -4.743242\n", + " -3.079547\n", + " -3.079547\n", " -3.0476\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -4.743242\n", " \n", " \n", " coef_round_trip_auto_time_to_work_school2\n", - " 0.064411\n", + " -0.005959\n", + " -0.005959\n", " -0.0034\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.064411\n", " \n", " \n", " coef_round_trip_auto_time_to_work_work2\n", - " -0.025905\n", + " -0.001855\n", + " -0.001855\n", " -0.0035\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.025905\n", " \n", " \n", " coef_round_trip_auto_time_to_work_work_and_school\n", - " -0.021804\n", + " -0.002208\n", + " -0.002208\n", " -0.0031\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.021804\n", " \n", " \n", " coef_student_employed\n", - " 13.457255\n", + " 2.918973\n", + " 2.918973\n", " 3.0140\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 13.457255\n", " \n", " \n", " coef_unavailable\n", " -999.000000\n", + " -999.000000\n", " -999.0000\n", + " -999.0\n", + " -999.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 1\n", - " \n", - " -999.000000\n", " \n", " \n", " coef_under_35_school1\n", " 0.721800\n", + " 0.721800\n", " 0.7218\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.721800\n", " \n", " \n", " coef_under_35_school2\n", - " 15.011164\n", + " 1.230550\n", + " 1.230550\n", " 1.2750\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 15.011164\n", " \n", " \n", " coef_under_35_work1\n", - " 1.038242\n", + " -0.458863\n", + " -0.458863\n", " -0.4629\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.038242\n", " \n", " \n", " coef_under_35_work2\n", - " -0.253875\n", + " 0.005614\n", + " 0.005614\n", " -0.1375\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.253875\n", " \n", " \n", " coef_under_35_work_and_school\n", - " 2.257035\n", + " 1.149726\n", + " 1.149726\n", " 0.9761\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 2.257035\n", " \n", " \n", " coef_univ_school2_asc\n", - " -10.233810\n", + " -3.640737\n", + " -3.640737\n", " -3.7429\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -10.233810\n", " \n", " \n", " coef_univ_work1_asc\n", - " 6.475896\n", + " 2.209708\n", + " 2.209708\n", " 2.1660\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 6.475896\n", " \n", " \n", " coef_univ_work2_asc\n", - " 4.833029\n", + " -1.472430\n", + " -1.472430\n", " -1.3965\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 4.833029\n", " \n", " \n", " coef_univ_work_and_school_asc\n", - " 8.180927\n", + " 0.173386\n", + " 0.173386\n", " 0.1073\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 8.180927\n", " \n", " \n", "\n", "" ], "text/plain": [ - " value initvalue \\\n", - "0 0.000000 0.0000 \n", - "coef_can_walk_to_work_and_school 0.071630 0.1391 \n", - "coef_can_walk_to_work_school2 1.368092 0.7114 \n", - "coef_can_walk_to_work_work2 0.651120 0.5268 \n", - "coef_driving_age_child_school2_asc -13.067731 -3.1360 \n", - "coef_driving_age_child_work_and_school_asc -12.605997 -4.4362 \n", - "coef_female_school1 0.247086 0.1592 \n", - "coef_female_school2 -0.301339 0.1140 \n", - "coef_female_work1 -2.242748 0.1737 \n", - "coef_female_work2 -0.387411 -0.2255 \n", - "coef_female_work_and_school -3.218280 -0.3442 \n", - "coef_few_cars_than_drivers_school2 -0.862451 -0.5759 \n", - "coef_ft_worker_work2_asc -5.517933 -3.3781 \n", - "coef_hh_income_gt_50k_school1 0.034700 0.0347 \n", - "coef_hh_income_gt_50k_student_work_and_school -0.921175 -0.0528 \n", - "coef_hh_income_gt_50k_work -1.418551 -0.0528 \n", - "coef_hh_income_gt_50k_worker_work_and_school 0.034700 0.0347 \n", - "coef_home_urban_school1 -0.136100 -0.1361 \n", - "coef_home_urban_school2 -8.455615 0.3170 \n", - "coef_home_urban_work1 4.026796 -0.2831 \n", - "coef_home_urban_work2 2.624854 0.2308 \n", - "coef_home_urban_work_and_school -0.447070 -0.3509 \n", - "coef_no_cars_in_hh_school2 -0.620465 -1.4130 \n", - "coef_no_cars_in_hh_work2 -0.725967 -1.3060 \n", - "coef_no_cars_in_hh_work_and_school -0.775934 -1.3020 \n", - "coef_non_family_hh_category1 -0.250000 -0.2500 \n", - "coef_non_family_hh_category2 5.000771 -0.1792 \n", - "coef_non_student_goes_to_school 3.883000 3.8830 \n", - "coef_num_non_workers_in_hh_school1 0.257400 0.2574 \n", - "coef_num_preschool_in_hh_school1 -0.133500 -0.1335 \n", - "coef_num_preschool_in_hh_school2 0.356660 -0.5577 \n", - "coef_num_preschool_in_hh_work1 -2.930501 0.2191 \n", - "coef_num_preschool_in_hh_work2 0.225173 -0.1478 \n", - "coef_num_preschool_in_hh_work_and_school -29.197569 -0.1251 \n", - "coef_num_under_16_not_at_school_school2 -0.638293 0.0866 \n", - "coef_num_under_16_not_at_school_work2 -0.118991 0.1804 \n", - "coef_num_under_16_not_at_school_work_and_school -15.357907 -0.1955 \n", - "coef_pre_driving_age_child_school2_asc 3.679726 -3.9703 \n", - "coef_pt_worker_work2_asc -4.743242 -3.0476 \n", - "coef_round_trip_auto_time_to_work_school2 0.064411 -0.0034 \n", - "coef_round_trip_auto_time_to_work_work2 -0.025905 -0.0035 \n", - "coef_round_trip_auto_time_to_work_work_and_school -0.021804 -0.0031 \n", - "coef_student_employed 13.457255 3.0140 \n", - "coef_unavailable -999.000000 -999.0000 \n", - "coef_under_35_school1 0.721800 0.7218 \n", - "coef_under_35_school2 15.011164 1.2750 \n", - "coef_under_35_work1 1.038242 -0.4629 \n", - "coef_under_35_work2 -0.253875 -0.1375 \n", - "coef_under_35_work_and_school 2.257035 0.9761 \n", - "coef_univ_school2_asc -10.233810 -3.7429 \n", - "coef_univ_work1_asc 6.475896 2.1660 \n", - "coef_univ_work2_asc 4.833029 -1.3965 \n", - "coef_univ_work_and_school_asc 8.180927 0.1073 \n", + " value best \\\n", + "param_name \n", + "0 0.000000 0.000000 \n", + "coef_can_walk_to_work_and_school 0.284832 0.284832 \n", + "coef_can_walk_to_work_school2 0.811379 0.811379 \n", + "coef_can_walk_to_work_work2 0.600928 0.600928 \n", + "coef_driving_age_child_school2_asc -3.209418 -3.209418 \n", + "coef_driving_age_child_work_and_school_asc -4.565091 -4.565091 \n", + "coef_female_school1 0.000463 0.000463 \n", + "coef_female_school2 -0.016856 -0.016856 \n", + "coef_female_work1 0.333342 0.333342 \n", + "coef_female_work2 -0.219862 -0.219862 \n", + "coef_female_work_and_school -0.265847 -0.265847 \n", + "coef_few_cars_than_drivers_school2 -0.297623 -0.297623 \n", + "coef_ft_worker_work2_asc -3.494595 -3.494595 \n", + "coef_hh_income_gt_50k_school1 0.034700 0.034700 \n", + "coef_hh_income_gt_50k_student_work_and_school -0.128428 -0.128428 \n", + "coef_hh_income_gt_50k_work -0.286159 -0.286159 \n", + "coef_hh_income_gt_50k_worker_work_and_school 0.034700 0.034700 \n", + "coef_home_urban_school1 -0.136100 -0.136100 \n", + "coef_home_urban_school2 0.161745 0.161745 \n", + "coef_home_urban_work1 -0.122770 -0.122770 \n", + "coef_home_urban_work2 0.142218 0.142218 \n", + "coef_home_urban_work_and_school -0.436835 -0.436835 \n", + "coef_no_cars_in_hh_school2 -1.479517 -1.479517 \n", + "coef_no_cars_in_hh_work2 -1.524960 -1.524960 \n", + "coef_no_cars_in_hh_work_and_school -1.244512 -1.244512 \n", + "coef_non_family_hh_category1 -0.250000 -0.250000 \n", + "coef_non_family_hh_category2 -0.091298 -0.091298 \n", + "coef_non_student_goes_to_school 3.883000 3.883000 \n", + "coef_num_non_workers_in_hh_school1 0.257400 0.257400 \n", + "coef_num_preschool_in_hh_school1 -0.133500 -0.133500 \n", + "coef_num_preschool_in_hh_school2 -0.796350 -0.796350 \n", + "coef_num_preschool_in_hh_work1 0.125045 0.125045 \n", + "coef_num_preschool_in_hh_work2 -0.126183 -0.126183 \n", + "coef_num_preschool_in_hh_work_and_school -0.070125 -0.070125 \n", + "coef_num_under_16_not_at_school_school2 -0.015345 -0.015345 \n", + "coef_num_under_16_not_at_school_work2 0.168260 0.168260 \n", + "coef_num_under_16_not_at_school_work_and_school -0.192330 -0.192330 \n", + "coef_pre_driving_age_child_school2_asc -4.210709 -4.210709 \n", + "coef_pt_worker_work2_asc -3.079547 -3.079547 \n", + "coef_round_trip_auto_time_to_work_school2 -0.005959 -0.005959 \n", + "coef_round_trip_auto_time_to_work_work2 -0.001855 -0.001855 \n", + "coef_round_trip_auto_time_to_work_work_and_school -0.002208 -0.002208 \n", + "coef_student_employed 2.918973 2.918973 \n", + "coef_unavailable -999.000000 -999.000000 \n", + "coef_under_35_school1 0.721800 0.721800 \n", + "coef_under_35_school2 1.230550 1.230550 \n", + "coef_under_35_work1 -0.458863 -0.458863 \n", + "coef_under_35_work2 0.005614 0.005614 \n", + "coef_under_35_work_and_school 1.149726 1.149726 \n", + "coef_univ_school2_asc -3.640737 -3.640737 \n", + "coef_univ_work1_asc 2.209708 2.209708 \n", + "coef_univ_work2_asc -1.472430 -1.472430 \n", + "coef_univ_work_and_school_asc 0.173386 0.173386 \n", "\n", - " nullvalue minimum \\\n", - "0 0.0 0.0 \n", - "coef_can_walk_to_work_and_school 0.0 NaN \n", - "coef_can_walk_to_work_school2 0.0 NaN \n", - "coef_can_walk_to_work_work2 0.0 NaN \n", - "coef_driving_age_child_school2_asc 0.0 NaN \n", - "coef_driving_age_child_work_and_school_asc 0.0 NaN \n", - "coef_female_school1 0.0 NaN \n", - "coef_female_school2 0.0 NaN \n", - "coef_female_work1 0.0 NaN \n", - "coef_female_work2 0.0 NaN \n", - "coef_female_work_and_school 0.0 NaN \n", - "coef_few_cars_than_drivers_school2 0.0 NaN \n", - "coef_ft_worker_work2_asc 0.0 NaN \n", - "coef_hh_income_gt_50k_school1 0.0 NaN \n", - "coef_hh_income_gt_50k_student_work_and_school 0.0 NaN \n", - "coef_hh_income_gt_50k_work 0.0 NaN \n", - "coef_hh_income_gt_50k_worker_work_and_school 0.0 NaN \n", - "coef_home_urban_school1 0.0 NaN \n", - "coef_home_urban_school2 0.0 NaN \n", - "coef_home_urban_work1 0.0 NaN \n", - "coef_home_urban_work2 0.0 NaN \n", - "coef_home_urban_work_and_school 0.0 NaN \n", - "coef_no_cars_in_hh_school2 0.0 NaN \n", - "coef_no_cars_in_hh_work2 0.0 NaN \n", - "coef_no_cars_in_hh_work_and_school 0.0 NaN \n", - "coef_non_family_hh_category1 0.0 NaN \n", - "coef_non_family_hh_category2 0.0 NaN \n", - "coef_non_student_goes_to_school 0.0 NaN \n", - "coef_num_non_workers_in_hh_school1 0.0 NaN \n", - "coef_num_preschool_in_hh_school1 0.0 NaN \n", - "coef_num_preschool_in_hh_school2 0.0 NaN \n", - "coef_num_preschool_in_hh_work1 0.0 NaN \n", - "coef_num_preschool_in_hh_work2 0.0 NaN \n", - "coef_num_preschool_in_hh_work_and_school 0.0 NaN \n", - "coef_num_under_16_not_at_school_school2 0.0 NaN \n", - "coef_num_under_16_not_at_school_work2 0.0 NaN \n", - "coef_num_under_16_not_at_school_work_and_school 0.0 NaN \n", - "coef_pre_driving_age_child_school2_asc 0.0 NaN \n", - "coef_pt_worker_work2_asc 0.0 NaN \n", - "coef_round_trip_auto_time_to_work_school2 0.0 NaN \n", - "coef_round_trip_auto_time_to_work_work2 0.0 NaN \n", - "coef_round_trip_auto_time_to_work_work_and_school 0.0 NaN \n", - "coef_student_employed 0.0 NaN \n", - "coef_unavailable 0.0 NaN \n", - "coef_under_35_school1 0.0 NaN \n", - "coef_under_35_school2 0.0 NaN \n", - "coef_under_35_work1 0.0 NaN \n", - "coef_under_35_work2 0.0 NaN \n", - "coef_under_35_work_and_school 0.0 NaN \n", - "coef_univ_school2_asc 0.0 NaN \n", - "coef_univ_work1_asc 0.0 NaN \n", - "coef_univ_work2_asc 0.0 NaN \n", - "coef_univ_work_and_school_asc 0.0 NaN \n", + " initvalue minimum \\\n", + "param_name \n", + "0 0.0000 0.0 \n", + "coef_can_walk_to_work_and_school 0.1391 -50.0 \n", + "coef_can_walk_to_work_school2 0.7114 -50.0 \n", + "coef_can_walk_to_work_work2 0.5268 -50.0 \n", + "coef_driving_age_child_school2_asc -3.1360 -50.0 \n", + "coef_driving_age_child_work_and_school_asc -4.4362 -50.0 \n", + "coef_female_school1 0.1592 -50.0 \n", + "coef_female_school2 0.1140 -50.0 \n", + "coef_female_work1 0.1737 -50.0 \n", + "coef_female_work2 -0.2255 -50.0 \n", + "coef_female_work_and_school -0.3442 -50.0 \n", + "coef_few_cars_than_drivers_school2 -0.5759 -50.0 \n", + "coef_ft_worker_work2_asc -3.3781 -50.0 \n", + "coef_hh_income_gt_50k_school1 0.0347 -50.0 \n", + "coef_hh_income_gt_50k_student_work_and_school -0.0528 -50.0 \n", + "coef_hh_income_gt_50k_work -0.0528 -50.0 \n", + "coef_hh_income_gt_50k_worker_work_and_school 0.0347 -50.0 \n", + "coef_home_urban_school1 -0.1361 -50.0 \n", + "coef_home_urban_school2 0.3170 -50.0 \n", + "coef_home_urban_work1 -0.2831 -50.0 \n", + "coef_home_urban_work2 0.2308 -50.0 \n", + "coef_home_urban_work_and_school -0.3509 -50.0 \n", + "coef_no_cars_in_hh_school2 -1.4130 -50.0 \n", + "coef_no_cars_in_hh_work2 -1.3060 -50.0 \n", + "coef_no_cars_in_hh_work_and_school -1.3020 -50.0 \n", + "coef_non_family_hh_category1 -0.2500 -50.0 \n", + "coef_non_family_hh_category2 -0.1792 -50.0 \n", + "coef_non_student_goes_to_school 3.8830 -50.0 \n", + "coef_num_non_workers_in_hh_school1 0.2574 -50.0 \n", + "coef_num_preschool_in_hh_school1 -0.1335 -50.0 \n", + "coef_num_preschool_in_hh_school2 -0.5577 -50.0 \n", + "coef_num_preschool_in_hh_work1 0.2191 -50.0 \n", + "coef_num_preschool_in_hh_work2 -0.1478 -50.0 \n", + "coef_num_preschool_in_hh_work_and_school -0.1251 -50.0 \n", + "coef_num_under_16_not_at_school_school2 0.0866 -50.0 \n", + "coef_num_under_16_not_at_school_work2 0.1804 -50.0 \n", + "coef_num_under_16_not_at_school_work_and_school -0.1955 -50.0 \n", + "coef_pre_driving_age_child_school2_asc -3.9703 -50.0 \n", + "coef_pt_worker_work2_asc -3.0476 -50.0 \n", + "coef_round_trip_auto_time_to_work_school2 -0.0034 -50.0 \n", + "coef_round_trip_auto_time_to_work_work2 -0.0035 -50.0 \n", + "coef_round_trip_auto_time_to_work_work_and_school -0.0031 -50.0 \n", + "coef_student_employed 3.0140 -50.0 \n", + "coef_unavailable -999.0000 -999.0 \n", + "coef_under_35_school1 0.7218 -50.0 \n", + "coef_under_35_school2 1.2750 -50.0 \n", + "coef_under_35_work1 -0.4629 -50.0 \n", + "coef_under_35_work2 -0.1375 -50.0 \n", + "coef_under_35_work_and_school 0.9761 -50.0 \n", + "coef_univ_school2_asc -3.7429 -50.0 \n", + "coef_univ_work1_asc 2.1660 -50.0 \n", + "coef_univ_work2_asc -1.3965 -50.0 \n", + "coef_univ_work_and_school_asc 0.1073 -50.0 \n", "\n", - " maximum holdfast note \\\n", - "0 0.0 1 \n", - "coef_can_walk_to_work_and_school NaN 0 \n", - "coef_can_walk_to_work_school2 NaN 0 \n", - "coef_can_walk_to_work_work2 NaN 0 \n", - "coef_driving_age_child_school2_asc NaN 0 \n", - "coef_driving_age_child_work_and_school_asc NaN 0 \n", - "coef_female_school1 NaN 0 \n", - "coef_female_school2 NaN 0 \n", - "coef_female_work1 NaN 0 \n", - "coef_female_work2 NaN 0 \n", - "coef_female_work_and_school NaN 0 \n", - "coef_few_cars_than_drivers_school2 NaN 0 \n", - "coef_ft_worker_work2_asc NaN 0 \n", - "coef_hh_income_gt_50k_school1 NaN 0 \n", - "coef_hh_income_gt_50k_student_work_and_school NaN 0 \n", - "coef_hh_income_gt_50k_work NaN 0 \n", - "coef_hh_income_gt_50k_worker_work_and_school NaN 0 \n", - "coef_home_urban_school1 NaN 0 \n", - "coef_home_urban_school2 NaN 0 \n", - "coef_home_urban_work1 NaN 0 \n", - "coef_home_urban_work2 NaN 0 \n", - "coef_home_urban_work_and_school NaN 0 \n", - "coef_no_cars_in_hh_school2 NaN 0 \n", - "coef_no_cars_in_hh_work2 NaN 0 \n", - "coef_no_cars_in_hh_work_and_school NaN 0 \n", - "coef_non_family_hh_category1 NaN 0 \n", - "coef_non_family_hh_category2 NaN 0 \n", - "coef_non_student_goes_to_school NaN 0 \n", - "coef_num_non_workers_in_hh_school1 NaN 0 \n", - "coef_num_preschool_in_hh_school1 NaN 0 \n", - "coef_num_preschool_in_hh_school2 NaN 0 \n", - "coef_num_preschool_in_hh_work1 NaN 0 \n", - "coef_num_preschool_in_hh_work2 NaN 0 \n", - "coef_num_preschool_in_hh_work_and_school NaN 0 \n", - "coef_num_under_16_not_at_school_school2 NaN 0 \n", - "coef_num_under_16_not_at_school_work2 NaN 0 \n", - "coef_num_under_16_not_at_school_work_and_school NaN 0 \n", - "coef_pre_driving_age_child_school2_asc NaN 0 \n", - "coef_pt_worker_work2_asc NaN 0 \n", - "coef_round_trip_auto_time_to_work_school2 NaN 0 \n", - "coef_round_trip_auto_time_to_work_work2 NaN 0 \n", - "coef_round_trip_auto_time_to_work_work_and_school NaN 0 \n", - "coef_student_employed NaN 0 \n", - "coef_unavailable NaN 1 \n", - "coef_under_35_school1 NaN 0 \n", - "coef_under_35_school2 NaN 0 \n", - "coef_under_35_work1 NaN 0 \n", - "coef_under_35_work2 NaN 0 \n", - "coef_under_35_work_and_school NaN 0 \n", - "coef_univ_school2_asc NaN 0 \n", - "coef_univ_work1_asc NaN 0 \n", - "coef_univ_work2_asc NaN 0 \n", - "coef_univ_work_and_school_asc NaN 0 \n", + " maximum nullvalue \\\n", + "param_name \n", + "0 0.0 0.0 \n", + "coef_can_walk_to_work_and_school 50.0 0.0 \n", + "coef_can_walk_to_work_school2 50.0 0.0 \n", + "coef_can_walk_to_work_work2 50.0 0.0 \n", + "coef_driving_age_child_school2_asc 50.0 0.0 \n", + "coef_driving_age_child_work_and_school_asc 50.0 0.0 \n", + "coef_female_school1 50.0 0.0 \n", + "coef_female_school2 50.0 0.0 \n", + "coef_female_work1 50.0 0.0 \n", + "coef_female_work2 50.0 0.0 \n", + "coef_female_work_and_school 50.0 0.0 \n", + "coef_few_cars_than_drivers_school2 50.0 0.0 \n", + "coef_ft_worker_work2_asc 50.0 0.0 \n", + "coef_hh_income_gt_50k_school1 50.0 0.0 \n", + "coef_hh_income_gt_50k_student_work_and_school 50.0 0.0 \n", + "coef_hh_income_gt_50k_work 50.0 0.0 \n", + "coef_hh_income_gt_50k_worker_work_and_school 50.0 0.0 \n", + "coef_home_urban_school1 50.0 0.0 \n", + "coef_home_urban_school2 50.0 0.0 \n", + "coef_home_urban_work1 50.0 0.0 \n", + "coef_home_urban_work2 50.0 0.0 \n", + "coef_home_urban_work_and_school 50.0 0.0 \n", + "coef_no_cars_in_hh_school2 50.0 0.0 \n", + "coef_no_cars_in_hh_work2 50.0 0.0 \n", + "coef_no_cars_in_hh_work_and_school 50.0 0.0 \n", + "coef_non_family_hh_category1 50.0 0.0 \n", + "coef_non_family_hh_category2 50.0 0.0 \n", + "coef_non_student_goes_to_school 50.0 0.0 \n", + "coef_num_non_workers_in_hh_school1 50.0 0.0 \n", + "coef_num_preschool_in_hh_school1 50.0 0.0 \n", + "coef_num_preschool_in_hh_school2 50.0 0.0 \n", + "coef_num_preschool_in_hh_work1 50.0 0.0 \n", + "coef_num_preschool_in_hh_work2 50.0 0.0 \n", + "coef_num_preschool_in_hh_work_and_school 50.0 0.0 \n", + "coef_num_under_16_not_at_school_school2 50.0 0.0 \n", + "coef_num_under_16_not_at_school_work2 50.0 0.0 \n", + "coef_num_under_16_not_at_school_work_and_school 50.0 0.0 \n", + "coef_pre_driving_age_child_school2_asc 50.0 0.0 \n", + "coef_pt_worker_work2_asc 50.0 0.0 \n", + "coef_round_trip_auto_time_to_work_school2 50.0 0.0 \n", + "coef_round_trip_auto_time_to_work_work2 50.0 0.0 \n", + "coef_round_trip_auto_time_to_work_work_and_school 50.0 0.0 \n", + "coef_student_employed 50.0 0.0 \n", + "coef_unavailable -999.0 0.0 \n", + "coef_under_35_school1 50.0 0.0 \n", + "coef_under_35_school2 50.0 0.0 \n", + "coef_under_35_work1 50.0 0.0 \n", + "coef_under_35_work2 50.0 0.0 \n", + "coef_under_35_work_and_school 50.0 0.0 \n", + "coef_univ_school2_asc 50.0 0.0 \n", + "coef_univ_work1_asc 50.0 0.0 \n", + "coef_univ_work2_asc 50.0 0.0 \n", + "coef_univ_work_and_school_asc 50.0 0.0 \n", "\n", - " best \n", - "0 0.000000 \n", - "coef_can_walk_to_work_and_school 0.071630 \n", - "coef_can_walk_to_work_school2 1.368092 \n", - "coef_can_walk_to_work_work2 0.651120 \n", - "coef_driving_age_child_school2_asc -13.067731 \n", - "coef_driving_age_child_work_and_school_asc -12.605997 \n", - "coef_female_school1 0.247086 \n", - "coef_female_school2 -0.301339 \n", - "coef_female_work1 -2.242748 \n", - "coef_female_work2 -0.387411 \n", - "coef_female_work_and_school -3.218280 \n", - "coef_few_cars_than_drivers_school2 -0.862451 \n", - "coef_ft_worker_work2_asc -5.517933 \n", - "coef_hh_income_gt_50k_school1 0.034700 \n", - "coef_hh_income_gt_50k_student_work_and_school -0.921175 \n", - "coef_hh_income_gt_50k_work -1.418551 \n", - "coef_hh_income_gt_50k_worker_work_and_school 0.034700 \n", - "coef_home_urban_school1 -0.136100 \n", - "coef_home_urban_school2 -8.455615 \n", - "coef_home_urban_work1 4.026796 \n", - "coef_home_urban_work2 2.624854 \n", - "coef_home_urban_work_and_school -0.447070 \n", - "coef_no_cars_in_hh_school2 -0.620465 \n", - "coef_no_cars_in_hh_work2 -0.725967 \n", - "coef_no_cars_in_hh_work_and_school -0.775934 \n", - "coef_non_family_hh_category1 -0.250000 \n", - "coef_non_family_hh_category2 5.000771 \n", - "coef_non_student_goes_to_school 3.883000 \n", - "coef_num_non_workers_in_hh_school1 0.257400 \n", - "coef_num_preschool_in_hh_school1 -0.133500 \n", - "coef_num_preschool_in_hh_school2 0.356660 \n", - "coef_num_preschool_in_hh_work1 -2.930501 \n", - "coef_num_preschool_in_hh_work2 0.225173 \n", - "coef_num_preschool_in_hh_work_and_school -29.197569 \n", - "coef_num_under_16_not_at_school_school2 -0.638293 \n", - "coef_num_under_16_not_at_school_work2 -0.118991 \n", - "coef_num_under_16_not_at_school_work_and_school -15.357907 \n", - "coef_pre_driving_age_child_school2_asc 3.679726 \n", - "coef_pt_worker_work2_asc -4.743242 \n", - "coef_round_trip_auto_time_to_work_school2 0.064411 \n", - "coef_round_trip_auto_time_to_work_work2 -0.025905 \n", - "coef_round_trip_auto_time_to_work_work_and_school -0.021804 \n", - "coef_student_employed 13.457255 \n", - "coef_unavailable -999.000000 \n", - "coef_under_35_school1 0.721800 \n", - "coef_under_35_school2 15.011164 \n", - "coef_under_35_work1 1.038242 \n", - "coef_under_35_work2 -0.253875 \n", - "coef_under_35_work_and_school 2.257035 \n", - "coef_univ_school2_asc -10.233810 \n", - "coef_univ_work1_asc 6.475896 \n", - "coef_univ_work2_asc 4.833029 \n", - "coef_univ_work_and_school_asc 8.180927 " + " holdfast \n", + "param_name \n", + "0 1 \n", + "coef_can_walk_to_work_and_school 0 \n", + "coef_can_walk_to_work_school2 0 \n", + "coef_can_walk_to_work_work2 0 \n", + "coef_driving_age_child_school2_asc 0 \n", + "coef_driving_age_child_work_and_school_asc 0 \n", + "coef_female_school1 0 \n", + "coef_female_school2 0 \n", + "coef_female_work1 0 \n", + "coef_female_work2 0 \n", + "coef_female_work_and_school 0 \n", + "coef_few_cars_than_drivers_school2 0 \n", + "coef_ft_worker_work2_asc 0 \n", + "coef_hh_income_gt_50k_school1 0 \n", + "coef_hh_income_gt_50k_student_work_and_school 0 \n", + "coef_hh_income_gt_50k_work 0 \n", + "coef_hh_income_gt_50k_worker_work_and_school 0 \n", + "coef_home_urban_school1 0 \n", + "coef_home_urban_school2 0 \n", + "coef_home_urban_work1 0 \n", + "coef_home_urban_work2 0 \n", + "coef_home_urban_work_and_school 0 \n", + "coef_no_cars_in_hh_school2 0 \n", + "coef_no_cars_in_hh_work2 0 \n", + "coef_no_cars_in_hh_work_and_school 0 \n", + "coef_non_family_hh_category1 0 \n", + "coef_non_family_hh_category2 0 \n", + "coef_non_student_goes_to_school 0 \n", + "coef_num_non_workers_in_hh_school1 0 \n", + "coef_num_preschool_in_hh_school1 0 \n", + "coef_num_preschool_in_hh_school2 0 \n", + "coef_num_preschool_in_hh_work1 0 \n", + "coef_num_preschool_in_hh_work2 0 \n", + "coef_num_preschool_in_hh_work_and_school 0 \n", + "coef_num_under_16_not_at_school_school2 0 \n", + "coef_num_under_16_not_at_school_work2 0 \n", + "coef_num_under_16_not_at_school_work_and_school 0 \n", + "coef_pre_driving_age_child_school2_asc 0 \n", + "coef_pt_worker_work2_asc 0 \n", + "coef_round_trip_auto_time_to_work_school2 0 \n", + "coef_round_trip_auto_time_to_work_work2 0 \n", + "coef_round_trip_auto_time_to_work_work_and_school 0 \n", + "coef_student_employed 0 \n", + "coef_unavailable 1 \n", + "coef_under_35_school1 0 \n", + "coef_under_35_school2 0 \n", + "coef_under_35_work1 0 \n", + "coef_under_35_work2 0 \n", + "coef_under_35_work_and_school 0 \n", + "coef_univ_school2_asc 0 \n", + "coef_univ_work1_asc 0 \n", + "coef_univ_work2_asc 0 \n", + "coef_univ_work_and_school_asc 0 " ] }, "metadata": {}, @@ -2039,12 +2040,8 @@ "name": "stderr", "output_type": "stream", "text": [ - ":1: PossibleOverspecification: WARNING: Model is possibly over-specified (hessian is nearly singular).\n", - " model.estimate()\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.771611294971759e-29 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - ":1: RuntimeWarning: invalid value encountered in sqrt\n", - " model.estimate()\n" + "/Users/jpn/Git/est-mode/larch/src/larch/model/jaxmodel.py:1156: PossibleOverspecification: Model is possibly over-specified (hessian is nearly singular).\n", + " self.calculate_parameter_covariance()\n" ] }, { @@ -2064,51 +2061,51 @@ " \n", " \n", " coef_can_walk_to_work_and_school\n", - " 0.071630\n", + " 0.284832\n", " \n", " \n", " coef_can_walk_to_work_school2\n", - " 1.368092\n", + " 0.811379\n", " \n", " \n", " coef_can_walk_to_work_work2\n", - " 0.651120\n", + " 0.600928\n", " \n", " \n", " coef_driving_age_child_school2_asc\n", - " -13.067731\n", + " -3.209418\n", " \n", " \n", " coef_driving_age_child_work_and_school_asc\n", - " -12.605997\n", + " -4.565091\n", " \n", " \n", " coef_female_school1\n", - " 0.247086\n", + " 0.000463\n", " \n", " \n", " coef_female_school2\n", - " -0.301339\n", + " -0.016856\n", " \n", " \n", " coef_female_work1\n", - " -2.242748\n", + " 0.333342\n", " \n", " \n", " coef_female_work2\n", - " -0.387411\n", + " -0.219862\n", " \n", " \n", " coef_female_work_and_school\n", - " -3.218280\n", + " -0.265847\n", " \n", " \n", " coef_few_cars_than_drivers_school2\n", - " -0.862451\n", + " -0.297623\n", " \n", " \n", " coef_ft_worker_work2_asc\n", - " -5.517933\n", + " -3.494595\n", " \n", " \n", " coef_hh_income_gt_50k_school1\n", @@ -2116,11 +2113,11 @@ " \n", " \n", " coef_hh_income_gt_50k_student_work_and_school\n", - " -0.921175\n", + " -0.128428\n", " \n", " \n", " coef_hh_income_gt_50k_work\n", - " -1.418551\n", + " -0.286159\n", " \n", " \n", " coef_hh_income_gt_50k_worker_work_and_school\n", @@ -2132,31 +2129,31 @@ " \n", " \n", " coef_home_urban_school2\n", - " -8.455615\n", + " 0.161745\n", " \n", " \n", " coef_home_urban_work1\n", - " 4.026796\n", + " -0.122770\n", " \n", " \n", " coef_home_urban_work2\n", - " 2.624854\n", + " 0.142218\n", " \n", " \n", " coef_home_urban_work_and_school\n", - " -0.447070\n", + " -0.436835\n", " \n", " \n", " coef_no_cars_in_hh_school2\n", - " -0.620465\n", + " -1.479517\n", " \n", " \n", " coef_no_cars_in_hh_work2\n", - " -0.725967\n", + " -1.524960\n", " \n", " \n", " coef_no_cars_in_hh_work_and_school\n", - " -0.775934\n", + " -1.244512\n", " \n", " \n", " coef_non_family_hh_category1\n", @@ -2164,7 +2161,7 @@ " \n", " \n", " coef_non_family_hh_category2\n", - " 5.000771\n", + " -0.091298\n", " \n", " \n", " coef_non_student_goes_to_school\n", @@ -2180,55 +2177,55 @@ " \n", " \n", " coef_num_preschool_in_hh_school2\n", - " 0.356660\n", + " -0.796350\n", " \n", " \n", " coef_num_preschool_in_hh_work1\n", - " -2.930501\n", + " 0.125045\n", " \n", " \n", " coef_num_preschool_in_hh_work2\n", - " 0.225173\n", + " -0.126183\n", " \n", " \n", " coef_num_preschool_in_hh_work_and_school\n", - " -29.197569\n", + " -0.070125\n", " \n", " \n", " coef_num_under_16_not_at_school_school2\n", - " -0.638293\n", + " -0.015345\n", " \n", " \n", " coef_num_under_16_not_at_school_work2\n", - " -0.118991\n", + " 0.168260\n", " \n", " \n", " coef_num_under_16_not_at_school_work_and_school\n", - " -15.357907\n", + " -0.192330\n", " \n", " \n", " coef_pre_driving_age_child_school2_asc\n", - " 3.679726\n", + " -4.210709\n", " \n", " \n", " coef_pt_worker_work2_asc\n", - " -4.743242\n", + " -3.079547\n", " \n", " \n", " coef_round_trip_auto_time_to_work_school2\n", - " 0.064411\n", + " -0.005959\n", " \n", " \n", " coef_round_trip_auto_time_to_work_work2\n", - " -0.025905\n", + " -0.001855\n", " \n", " \n", " coef_round_trip_auto_time_to_work_work_and_school\n", - " -0.021804\n", + " -0.002208\n", " \n", " \n", " coef_student_employed\n", - " 13.457255\n", + " 2.918973\n", " \n", " \n", " coef_unavailable\n", @@ -2240,38 +2237,38 @@ " \n", " \n", " coef_under_35_school2\n", - " 15.011164\n", + " 1.230550\n", " \n", " \n", " coef_under_35_work1\n", - " 1.038242\n", + " -0.458863\n", " \n", " \n", " coef_under_35_work2\n", - " -0.253875\n", + " 0.005614\n", " \n", " \n", " coef_under_35_work_and_school\n", - " 2.257035\n", + " 1.149726\n", " \n", " \n", " coef_univ_school2_asc\n", - " -10.233810\n", + " -3.640737\n", " \n", " \n", " coef_univ_work1_asc\n", - " 6.475896\n", + " 2.209708\n", " \n", " \n", " coef_univ_work2_asc\n", - " 4.833029\n", + " -1.472430\n", " \n", " \n", " coef_univ_work_and_school_asc\n", - " 8.180927\n", + " 0.173386\n", " \n", " \n", - "loglike-410.2201502048449d_loglike\n", + "
logloss0.1472310558088169d_logloss\n", " \n", " \n", " \n", @@ -2281,340 +2278,340 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - "
00.000000e+000.000000
coef_can_walk_to_work_and_school-2.159761e-05-0.000048
coef_can_walk_to_work_school2-7.694778e-050.000193
coef_can_walk_to_work_work24.202731e-05-0.000216
coef_driving_age_child_school2_asc-4.255256e-08-0.000081
coef_driving_age_child_work_and_school_asc2.167724e-050.000044
coef_female_school1-6.957308e-05-0.000091
coef_female_school2-2.554309e-040.000133
coef_female_work1-7.357671e-050.000084
coef_female_work28.686757e-05-0.000073
coef_female_work_and_school1.188196e-050.000059
coef_few_cars_than_drivers_school2-2.286678e-040.000044
coef_ft_worker_work2_asc5.501466e-05-0.000349
coef_hh_income_gt_50k_school10.000000e+000.000000
coef_hh_income_gt_50k_student_work_and_school6.367109e-06-0.000180
coef_hh_income_gt_50k_work-1.223654e-050.000049
coef_hh_income_gt_50k_worker_work_and_school0.000000e+000.000000
coef_home_urban_school10.000000e+000.000000
coef_home_urban_school2-1.028755e-040.000081
coef_home_urban_work1-4.465713e-05-0.000036
coef_home_urban_work21.557017e-04-0.000060
coef_home_urban_work_and_school1.077213e-040.000041
coef_no_cars_in_hh_school28.945645e-05-0.000061
coef_no_cars_in_hh_work23.899664e-05-0.000129
coef_no_cars_in_hh_work_and_school-3.695621e-050.000036
coef_non_family_hh_category10.000000e+000.000000
coef_non_family_hh_category21.251878e-100.000057
coef_non_student_goes_to_school0.000000e+000.000000
coef_num_non_workers_in_hh_school10.000000e+000.000000
coef_num_preschool_in_hh_school10.000000e+000.000000
coef_num_preschool_in_hh_school23.508996e-050.000013
coef_num_preschool_in_hh_work1-2.217197e-050.000012
coef_num_preschool_in_hh_work28.498540e-050.000204
coef_num_preschool_in_hh_work_and_school-3.475886e-12-0.000049
coef_num_under_16_not_at_school_school2-8.486532e-050.000086
coef_num_under_16_not_at_school_work2-3.959448e-050.000236
coef_num_under_16_not_at_school_work_and_school-2.351049e-07-0.000025
coef_pre_driving_age_child_school2_asc6.171829e-060.000137
coef_pt_worker_work2_asc1.420463e-04-0.000007
coef_round_trip_auto_time_to_work_school2-4.638296e-030.000126
coef_round_trip_auto_time_to_work_work23.215960e-030.000199
coef_round_trip_auto_time_to_work_work_and_school1.679772e-030.000093
coef_student_employed2.170492e-050.000041
coef_unavailable0.000000e+000.000000
coef_under_35_school10.000000e+000.000000
coef_under_35_school2-1.082319e-04-0.000063
coef_under_35_work1-9.399930e-050.000101
coef_under_35_work27.788570e-05-0.000136
coef_under_35_work_and_school-1.237585e-04-0.000093
coef_univ_school2_asc-1.090048e-040.000045
coef_univ_work1_asc-4.465713e-050.000111
coef_univ_work2_asc-4.135926e-050.000065
coef_univ_work_and_school_asc8.604407e-05-0.000179
nit50nfev84njev50status0message'Optimization terminated successfully'successTrueelapsed_time0:00:03.886165method'slsqp'n_cases2620iteration_number50logloss0.15657257641406294" + "nit34nfev39njev34status0message'Optimization terminated successfully'successTrueelapsed_time0:00:01.181912method'slsqp'n_cases31768iteration_number34loglike-4677.236180934496" ], "text/plain": [ "┣ x: 0 0.000000\n", - "┃ coef_can_walk_to_work_and_school 0.071630\n", - "┃ coef_can_walk_to_work_school2 1.368092\n", - "┃ coef_can_walk_to_work_work2 0.651120\n", - "┃ coef_driving_age_child_school2_asc -13.067731\n", - "┃ coef_driving_age_child_work_and_school_asc -12.605997\n", - "┃ coef_female_school1 0.247086\n", - "┃ coef_female_school2 -0.301339\n", - "┃ coef_female_work1 -2.242748\n", - "┃ coef_female_work2 -0.387411\n", - "┃ coef_female_work_and_school -3.218280\n", - "┃ coef_few_cars_than_drivers_school2 -0.862451\n", - "┃ coef_ft_worker_work2_asc -5.517933\n", + "┃ coef_can_walk_to_work_and_school 0.284832\n", + "┃ coef_can_walk_to_work_school2 0.811379\n", + "┃ coef_can_walk_to_work_work2 0.600928\n", + "┃ coef_driving_age_child_school2_asc -3.209418\n", + "┃ coef_driving_age_child_work_and_school_asc -4.565091\n", + "┃ coef_female_school1 0.000463\n", + "┃ coef_female_school2 -0.016856\n", + "┃ coef_female_work1 0.333342\n", + "┃ coef_female_work2 -0.219862\n", + "┃ coef_female_work_and_school -0.265847\n", + "┃ coef_few_cars_than_drivers_school2 -0.297623\n", + "┃ coef_ft_worker_work2_asc -3.494595\n", "┃ coef_hh_income_gt_50k_school1 0.034700\n", - "┃ coef_hh_income_gt_50k_student_work_and_school -0.921175\n", - "┃ coef_hh_income_gt_50k_work -1.418551\n", + "┃ coef_hh_income_gt_50k_student_work_and_school -0.128428\n", + "┃ coef_hh_income_gt_50k_work -0.286159\n", "┃ coef_hh_income_gt_50k_worker_work_and_school 0.034700\n", "┃ coef_home_urban_school1 -0.136100\n", - "┃ coef_home_urban_school2 -8.455615\n", - "┃ coef_home_urban_work1 4.026796\n", - "┃ coef_home_urban_work2 2.624854\n", - "┃ coef_home_urban_work_and_school -0.447070\n", - "┃ coef_no_cars_in_hh_school2 -0.620465\n", - "┃ coef_no_cars_in_hh_work2 -0.725967\n", - "┃ coef_no_cars_in_hh_work_and_school -0.775934\n", + "┃ coef_home_urban_school2 0.161745\n", + "┃ coef_home_urban_work1 -0.122770\n", + "┃ coef_home_urban_work2 0.142218\n", + "┃ coef_home_urban_work_and_school -0.436835\n", + "┃ coef_no_cars_in_hh_school2 -1.479517\n", + "┃ coef_no_cars_in_hh_work2 -1.524960\n", + "┃ coef_no_cars_in_hh_work_and_school -1.244512\n", "┃ coef_non_family_hh_category1 -0.250000\n", - "┃ coef_non_family_hh_category2 5.000771\n", + "┃ coef_non_family_hh_category2 -0.091298\n", "┃ coef_non_student_goes_to_school 3.883000\n", "┃ coef_num_non_workers_in_hh_school1 0.257400\n", "┃ coef_num_preschool_in_hh_school1 -0.133500\n", - "┃ coef_num_preschool_in_hh_school2 0.356660\n", - "┃ coef_num_preschool_in_hh_work1 -2.930501\n", - "┃ coef_num_preschool_in_hh_work2 0.225173\n", - "┃ coef_num_preschool_in_hh_work_and_school -29.197569\n", - "┃ coef_num_under_16_not_at_school_school2 -0.638293\n", - "┃ coef_num_under_16_not_at_school_work2 -0.118991\n", - "┃ coef_num_under_16_not_at_school_work_and_school -15.357907\n", - "┃ coef_pre_driving_age_child_school2_asc 3.679726\n", - "┃ coef_pt_worker_work2_asc -4.743242\n", - "┃ coef_round_trip_auto_time_to_work_school2 0.064411\n", - "┃ coef_round_trip_auto_time_to_work_work2 -0.025905\n", - "┃ coef_round_trip_auto_time_to_work_work_and_school -0.021804\n", - "┃ coef_student_employed 13.457255\n", + "┃ coef_num_preschool_in_hh_school2 -0.796350\n", + "┃ coef_num_preschool_in_hh_work1 0.125045\n", + "┃ coef_num_preschool_in_hh_work2 -0.126183\n", + "┃ coef_num_preschool_in_hh_work_and_school -0.070125\n", + "┃ coef_num_under_16_not_at_school_school2 -0.015345\n", + "┃ coef_num_under_16_not_at_school_work2 0.168260\n", + "┃ coef_num_under_16_not_at_school_work_and_school -0.192330\n", + "┃ coef_pre_driving_age_child_school2_asc -4.210709\n", + "┃ coef_pt_worker_work2_asc -3.079547\n", + "┃ coef_round_trip_auto_time_to_work_school2 -0.005959\n", + "┃ coef_round_trip_auto_time_to_work_work2 -0.001855\n", + "┃ coef_round_trip_auto_time_to_work_work_and_school -0.002208\n", + "┃ coef_student_employed 2.918973\n", "┃ coef_unavailable -999.000000\n", "┃ coef_under_35_school1 0.721800\n", - "┃ coef_under_35_school2 15.011164\n", - "┃ coef_under_35_work1 1.038242\n", - "┃ coef_under_35_work2 -0.253875\n", - "┃ coef_under_35_work_and_school 2.257035\n", - "┃ coef_univ_school2_asc -10.233810\n", - "┃ coef_univ_work1_asc 6.475896\n", - "┃ coef_univ_work2_asc 4.833029\n", - "┃ coef_univ_work_and_school_asc 8.180927\n", + "┃ coef_under_35_school2 1.230550\n", + "┃ coef_under_35_work1 -0.458863\n", + "┃ coef_under_35_work2 0.005614\n", + "┃ coef_under_35_work_and_school 1.149726\n", + "┃ coef_univ_school2_asc -3.640737\n", + "┃ coef_univ_work1_asc 2.209708\n", + "┃ coef_univ_work2_asc -1.472430\n", + "┃ coef_univ_work_and_school_asc 0.173386\n", "┃ dtype: float64\n", - "┣ loglike: -410.2201502048449\n", - "┣ d_loglike: 0 0.000000e+00\n", - "┃ coef_can_walk_to_work_and_school -2.159761e-05\n", - "┃ coef_can_walk_to_work_school2 -7.694778e-05\n", - "┃ coef_can_walk_to_work_work2 4.202731e-05\n", - "┃ coef_driving_age_child_school2_asc -4.255256e-08\n", - "┃ coef_driving_age_child_work_and_school_asc 2.167724e-05\n", - "┃ coef_female_school1 -6.957308e-05\n", - "┃ coef_female_school2 -2.554309e-04\n", - "┃ coef_female_work1 -7.357671e-05\n", - "┃ coef_female_work2 8.686757e-05\n", - "┃ coef_female_work_and_school 1.188196e-05\n", - "┃ coef_few_cars_than_drivers_school2 -2.286678e-04\n", - "┃ coef_ft_worker_work2_asc 5.501466e-05\n", - "┃ coef_hh_income_gt_50k_school1 0.000000e+00\n", - "┃ coef_hh_income_gt_50k_student_work_and_school 6.367109e-06\n", - "┃ coef_hh_income_gt_50k_work -1.223654e-05\n", - "┃ coef_hh_income_gt_50k_worker_work_and_school 0.000000e+00\n", - "┃ coef_home_urban_school1 0.000000e+00\n", - "┃ coef_home_urban_school2 -1.028755e-04\n", - "┃ coef_home_urban_work1 -4.465713e-05\n", - "┃ coef_home_urban_work2 1.557017e-04\n", - "┃ coef_home_urban_work_and_school 1.077213e-04\n", - "┃ coef_no_cars_in_hh_school2 8.945645e-05\n", - "┃ coef_no_cars_in_hh_work2 3.899664e-05\n", - "┃ coef_no_cars_in_hh_work_and_school -3.695621e-05\n", - "┃ coef_non_family_hh_category1 0.000000e+00\n", - "┃ coef_non_family_hh_category2 1.251878e-10\n", - "┃ coef_non_student_goes_to_school 0.000000e+00\n", - "┃ coef_num_non_workers_in_hh_school1 0.000000e+00\n", - "┃ coef_num_preschool_in_hh_school1 0.000000e+00\n", - "┃ coef_num_preschool_in_hh_school2 3.508996e-05\n", - "┃ coef_num_preschool_in_hh_work1 -2.217197e-05\n", - "┃ coef_num_preschool_in_hh_work2 8.498540e-05\n", - "┃ coef_num_preschool_in_hh_work_and_school -3.475886e-12\n", - "┃ coef_num_under_16_not_at_school_school2 -8.486532e-05\n", - "┃ coef_num_under_16_not_at_school_work2 -3.959448e-05\n", - "┃ coef_num_under_16_not_at_school_work_and_school -2.351049e-07\n", - "┃ coef_pre_driving_age_child_school2_asc 6.171829e-06\n", - "┃ coef_pt_worker_work2_asc 1.420463e-04\n", - "┃ coef_round_trip_auto_time_to_work_school2 -4.638296e-03\n", - "┃ coef_round_trip_auto_time_to_work_work2 3.215960e-03\n", - "┃ coef_round_trip_auto_time_to_work_work_and_school 1.679772e-03\n", - "┃ coef_student_employed 2.170492e-05\n", - "┃ coef_unavailable 0.000000e+00\n", - "┃ coef_under_35_school1 0.000000e+00\n", - "┃ coef_under_35_school2 -1.082319e-04\n", - "┃ coef_under_35_work1 -9.399930e-05\n", - "┃ coef_under_35_work2 7.788570e-05\n", - "┃ coef_under_35_work_and_school -1.237585e-04\n", - "┃ coef_univ_school2_asc -1.090048e-04\n", - "┃ coef_univ_work1_asc -4.465713e-05\n", - "┃ coef_univ_work2_asc -4.135926e-05\n", - "┃ coef_univ_work_and_school_asc 8.604407e-05\n", + "┣ logloss: 0.1472310558088169\n", + "┣ d_logloss: 0 0.000000\n", + "┃ coef_can_walk_to_work_and_school -0.000048\n", + "┃ coef_can_walk_to_work_school2 0.000193\n", + "┃ coef_can_walk_to_work_work2 -0.000216\n", + "┃ coef_driving_age_child_school2_asc -0.000081\n", + "┃ coef_driving_age_child_work_and_school_asc 0.000044\n", + "┃ coef_female_school1 -0.000091\n", + "┃ coef_female_school2 0.000133\n", + "┃ coef_female_work1 0.000084\n", + "┃ coef_female_work2 -0.000073\n", + "┃ coef_female_work_and_school 0.000059\n", + "┃ coef_few_cars_than_drivers_school2 0.000044\n", + "┃ coef_ft_worker_work2_asc -0.000349\n", + "┃ coef_hh_income_gt_50k_school1 0.000000\n", + "┃ coef_hh_income_gt_50k_student_work_and_school -0.000180\n", + "┃ coef_hh_income_gt_50k_work 0.000049\n", + "┃ coef_hh_income_gt_50k_worker_work_and_school 0.000000\n", + "┃ coef_home_urban_school1 0.000000\n", + "┃ coef_home_urban_school2 0.000081\n", + "┃ coef_home_urban_work1 -0.000036\n", + "┃ coef_home_urban_work2 -0.000060\n", + "┃ coef_home_urban_work_and_school 0.000041\n", + "┃ coef_no_cars_in_hh_school2 -0.000061\n", + "┃ coef_no_cars_in_hh_work2 -0.000129\n", + "┃ coef_no_cars_in_hh_work_and_school 0.000036\n", + "┃ coef_non_family_hh_category1 0.000000\n", + "┃ coef_non_family_hh_category2 0.000057\n", + "┃ coef_non_student_goes_to_school 0.000000\n", + "┃ coef_num_non_workers_in_hh_school1 0.000000\n", + "┃ coef_num_preschool_in_hh_school1 0.000000\n", + "┃ coef_num_preschool_in_hh_school2 0.000013\n", + "┃ coef_num_preschool_in_hh_work1 0.000012\n", + "┃ coef_num_preschool_in_hh_work2 0.000204\n", + "┃ coef_num_preschool_in_hh_work_and_school -0.000049\n", + "┃ coef_num_under_16_not_at_school_school2 0.000086\n", + "┃ coef_num_under_16_not_at_school_work2 0.000236\n", + "┃ coef_num_under_16_not_at_school_work_and_school -0.000025\n", + "┃ coef_pre_driving_age_child_school2_asc 0.000137\n", + "┃ coef_pt_worker_work2_asc -0.000007\n", + "┃ coef_round_trip_auto_time_to_work_school2 0.000126\n", + "┃ coef_round_trip_auto_time_to_work_work2 0.000199\n", + "┃ coef_round_trip_auto_time_to_work_work_and_school 0.000093\n", + "┃ coef_student_employed 0.000041\n", + "┃ coef_unavailable 0.000000\n", + "┃ coef_under_35_school1 0.000000\n", + "┃ coef_under_35_school2 -0.000063\n", + "┃ coef_under_35_work1 0.000101\n", + "┃ coef_under_35_work2 -0.000136\n", + "┃ coef_under_35_work_and_school -0.000093\n", + "┃ coef_univ_school2_asc 0.000045\n", + "┃ coef_univ_work1_asc 0.000111\n", + "┃ coef_univ_work2_asc 0.000065\n", + "┃ coef_univ_work_and_school_asc -0.000179\n", "┃ dtype: float64\n", - "┣ nit: 50\n", - "┣ nfev: 84\n", - "┣ njev: 50\n", + "┣ nit: 34\n", + "┣ nfev: 39\n", + "┣ njev: 34\n", "┣ status: 0\n", "┣ message: 'Optimization terminated successfully'\n", "┣ success: True\n", - "┣ elapsed_time: datetime.timedelta(seconds=3, microseconds=886165)\n", + "┣ elapsed_time: datetime.timedelta(seconds=1, microseconds=181912)\n", "┣ method: 'slsqp'\n", - "┣ n_cases: 2620\n", - "┣ iteration_number: 50\n", - "┣ logloss: 0.15657257641406294" + "┣ n_cases: 31768\n", + "┣ iteration_number: 34\n", + "┣ loglike: -4677.236180934496" ] }, "execution_count": 7, @@ -2641,550 +2638,523 @@ { "data": { "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Value Std Err t Stat Signif Like Ratio Null Value Constrained
0 0.00 NA NA NA 0.00fixed value
coef_can_walk_to_work_and_school 0.0716 0.710 0.10 NA 0.00
coef_can_walk_to_work_school2 1.37 0.878 1.56 NA 0.00
coef_can_walk_to_work_work2 0.651 0.397 1.64 NA 0.00
coef_driving_age_child_school2_asc-13.1 4.56e+03-0.00 NA 0.00
coef_driving_age_child_work_and_school_asc-12.6 NA NA[***] 68.07 0.00
coef_female_school1 0.247 1.35 0.18 NA 0.00
coef_female_school2-0.301 0.785-0.38 NA 0.00
coef_female_work1-2.24 1.34-1.68 NA 0.00
coef_female_work2-0.387 0.246-1.57 NA 0.00
coef_female_work_and_school-3.22 1.40-2.30* NA 0.00
coef_few_cars_than_drivers_school2-0.862 0.715-1.21 NA 0.00
coef_ft_worker_work2_asc-5.52 NA NA[***] BIG 0.00
coef_hh_income_gt_50k_school1 0.0347 NA NA[] 0.00 0.00
coef_hh_income_gt_50k_student_work_and_school-0.921 1.85-0.50 NA 0.00
coef_hh_income_gt_50k_work-1.42 1.92-0.74 NA 0.00
coef_hh_income_gt_50k_worker_work_and_school 0.0347 NA NA[] 0.00 0.00
coef_home_urban_school1-0.136 NA NA[] 0.00 0.00
coef_home_urban_school2-8.46 NA NA[***] BIG 0.00
coef_home_urban_work1 4.03 NA NA[***] 165.42 0.00
coef_home_urban_work2 2.62 NA NA[***] 134.83 0.00
coef_home_urban_work_and_school-0.447 NA NA[] 1.59 0.00
coef_no_cars_in_hh_school2-0.620 1.18-0.52 NA 0.00
coef_no_cars_in_hh_work2-0.726 0.336-2.16* NA 0.00
coef_no_cars_in_hh_work_and_school-0.776 0.703-1.10 NA 0.00
coef_non_family_hh_category1-0.250 NA NA[] 0.00 0.00
coef_non_family_hh_category2 5.00 NA NA[] 0.00 0.00
coef_non_student_goes_to_school 3.88 NA NA[] 0.00 0.00
coef_num_non_workers_in_hh_school1 0.257 NA NA[] 0.00 0.00
coef_num_preschool_in_hh_school1-0.134 NA NA[] 0.00 0.00
coef_num_preschool_in_hh_school2 0.357 0.576 0.62 NA 0.00
coef_num_preschool_in_hh_work1-2.93 1.55-1.89 NA 0.00
coef_num_preschool_in_hh_work2 0.225 0.192 1.17 NA 0.00
coef_num_preschool_in_hh_work_and_school-29.2 NA NA[**] 4.26 0.00
coef_num_under_16_not_at_school_school2-0.638 1.02-0.63 NA 0.00
coef_num_under_16_not_at_school_work2-0.119 0.306-0.39 NA 0.00
coef_num_under_16_not_at_school_work_and_school-15.4 2.03e+03-0.01 NA 0.00
coef_pre_driving_age_child_school2_asc 3.68 NA NA[***] 18.81 0.00
coef_pt_worker_work2_asc-4.74 NA NA[***] 562.79 0.00
coef_round_trip_auto_time_to_work_school2 0.0644 0.0331 1.95 NA 0.00
coef_round_trip_auto_time_to_work_work2-0.0259 0.0249-1.04 NA 0.00
coef_round_trip_auto_time_to_work_work_and_school-0.0218 0.0402-0.54 NA 0.00
coef_student_employed 13.5 1.31e+03 0.01 NA 0.00
coef_unavailable-999. NA NA NA 0.00fixed value
coef_under_35_school1 0.722 0.00 NA[] 0.00 0.00
coef_under_35_school2 15.0 1.14e+03 0.01 NA 0.00
coef_under_35_work1 1.04 0.886 1.17 NA 0.00
coef_under_35_work2-0.254 0.245-1.03 NA 0.00
coef_under_35_work_and_school 2.26 1.21 1.87 NA 0.00
coef_univ_school2_asc-10.2 NA NA[***] 556.91 0.00
coef_univ_work1_asc 6.48 NA NA[***] 349.23 0.00
coef_univ_work2_asc 4.83 NA NA[***] 26.10 0.00
coef_univ_work_and_school_asc 8.18 NA NA[***] 132.81 0.00
" + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ValueStd Errt StatSignifNull ValueConstrained
Parameter      
0 0.00 0.00 NA 0.00fixed value
coef_can_walk_to_work_and_school 0.285 0.165 1.73 0.00
coef_can_walk_to_work_school2 0.811 0.163 4.97*** 0.00
coef_can_walk_to_work_work2 0.601 0.103 5.81*** 0.00
coef_driving_age_child_school2_asc-3.21 0.230-13.96*** 0.00
coef_driving_age_child_work_and_school_asc-4.57 889.-0.01 0.00
coef_female_school1 0.000463 0.265 0.00 0.00
coef_female_school2-0.0169 0.166-0.10 0.00
coef_female_work1 0.333 0.257 1.30 0.00
coef_female_work2-0.220 0.0801-2.75** 0.00
coef_female_work_and_school-0.266 0.240-1.11 0.00
coef_few_cars_than_drivers_school2-0.298 0.146-2.04* 0.00
coef_ft_worker_work2_asc-3.49 0.110-31.78*** 0.00
coef_hh_income_gt_50k_school1 0.0347 1.34e-05 BIG*** 0.00
coef_hh_income_gt_50k_student_work_and_school-0.128 0.325-0.39 0.00
coef_hh_income_gt_50k_work-0.286 0.351-0.81 0.00
coef_hh_income_gt_50k_worker_work_and_school 0.0347 NA NA 0.00
coef_home_urban_school1-0.136 NA NA 0.00
coef_home_urban_school2 0.162 0.147 1.10 0.00
coef_home_urban_work1-0.123 0.280-0.44 0.00
coef_home_urban_work2 0.142 0.0850 1.67 0.00
coef_home_urban_work_and_school-0.437 0.269-1.62 0.00
coef_no_cars_in_hh_school2-1.48 0.438-3.37*** 0.00
coef_no_cars_in_hh_work2-1.52 0.310-4.92*** 0.00
coef_no_cars_in_hh_work_and_school-1.24 0.334-3.72*** 0.00
coef_non_family_hh_category1-0.250 NA NA 0.00
coef_non_family_hh_category2-0.0913 0.741-0.12 0.00
coef_non_student_goes_to_school 3.88 7.74e-06 BIG*** 0.00
coef_num_non_workers_in_hh_school1 0.257 2.54e-06 BIG*** 0.00
coef_num_preschool_in_hh_school1-0.133 1.09e-06-BIG*** 0.00
coef_num_preschool_in_hh_school2-0.796 0.214-3.72*** 0.00
coef_num_preschool_in_hh_work1 0.125 0.323 0.39 0.00
coef_num_preschool_in_hh_work2-0.126 0.0781-1.62 0.00
coef_num_preschool_in_hh_work_and_school-0.0701 0.322-0.22 0.00
coef_num_under_16_not_at_school_school2-0.0153 0.176-0.09 0.00
coef_num_under_16_not_at_school_work2 0.168 0.0783 2.15* 0.00
coef_num_under_16_not_at_school_work_and_school-0.192 0.210-0.92 0.00
coef_pre_driving_age_child_school2_asc-4.21 0.204-20.62*** 0.00
coef_pt_worker_work2_asc-3.08 0.135-22.84*** 0.00
coef_round_trip_auto_time_to_work_school2-0.00596 0.00317-1.88 0.00
coef_round_trip_auto_time_to_work_work2-0.00185 0.00188-0.99 0.00
coef_round_trip_auto_time_to_work_work_and_school-0.00221 0.00565-0.39 0.00
coef_student_employed 2.92 889. 0.00 0.00
coef_unavailable-999. 0.00 NA 0.00fixed value
coef_under_35_school1 0.722 0.00 NA 0.00
coef_under_35_school2 1.23 0.389 3.16** 0.00
coef_under_35_work1-0.459 0.574-0.80 0.00
coef_under_35_work2 0.00561 0.0823 0.07 0.00
coef_under_35_work_and_school 1.15 0.646 1.78 0.00
coef_univ_school2_asc-3.64 0.415-8.77*** 0.00
coef_univ_work1_asc 2.21 889. 0.00 0.00
coef_univ_work2_asc-1.47 889.-0.00 0.00
coef_univ_work_and_school_asc 0.173 889. 0.00 0.00
\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 8, @@ -3231,18 +3201,7 @@ "cell_type": "code", "execution_count": 10, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "model.to_xlsx(\n", " result_dir/f\"{modelname}_model_estimation.xlsx\", \n", @@ -3300,85 +3259,85 @@ " \n", " 1\n", " coef_ft_worker_work2_asc\n", - " -5.517933\n", + " -3.494595\n", " F\n", " \n", " \n", " 2\n", " coef_pt_worker_work2_asc\n", - " -4.743242\n", + " -3.079547\n", " F\n", " \n", " \n", " 3\n", " coef_univ_work1_asc\n", - " 6.475896\n", + " 2.209708\n", " F\n", " \n", " \n", " 4\n", " coef_univ_work2_asc\n", - " 4.833029\n", + " -1.472430\n", " F\n", " \n", " \n", " 5\n", " coef_univ_school2_asc\n", - " -10.233810\n", + " -3.640737\n", " F\n", " \n", " \n", " 6\n", " coef_univ_work_and_school_asc\n", - " 8.180927\n", + " 0.173386\n", " F\n", " \n", " \n", " 7\n", " coef_driving_age_child_school2_asc\n", - " -13.067731\n", + " -3.209418\n", " F\n", " \n", " \n", " 8\n", " coef_driving_age_child_work_and_school_asc\n", - " -12.605997\n", + " -4.565091\n", " F\n", " \n", " \n", " 9\n", " coef_pre_driving_age_child_school2_asc\n", - " 3.679726\n", + " -4.210709\n", " F\n", " \n", " \n", " 10\n", " coef_female_work1\n", - " -2.242748\n", + " 0.333342\n", " F\n", " \n", " \n", " 11\n", " coef_female_work2\n", - " -0.387411\n", + " -0.219862\n", " F\n", " \n", " \n", " 12\n", " coef_female_school1\n", - " 0.247086\n", + " 0.000463\n", " F\n", " \n", " \n", " 13\n", " coef_female_school2\n", - " -0.301339\n", + " -0.016856\n", " F\n", " \n", " \n", " 14\n", " coef_female_work_and_school\n", - " -3.218280\n", + " -0.265847\n", " F\n", " \n", " \n", @@ -3390,13 +3349,13 @@ " \n", " 16\n", " coef_under_35_work1\n", - " 1.038242\n", + " -0.458863\n", " F\n", " \n", " \n", " 17\n", " coef_under_35_work2\n", - " -0.253875\n", + " 0.005614\n", " F\n", " \n", " \n", @@ -3408,55 +3367,55 @@ " \n", " 19\n", " coef_under_35_school2\n", - " 15.011164\n", + " 1.230550\n", " F\n", " \n", " \n", " 20\n", " coef_under_35_work_and_school\n", - " 2.257035\n", + " 1.149726\n", " F\n", " \n", " \n", " 21\n", " coef_can_walk_to_work_work2\n", - " 0.651120\n", + " 0.600928\n", " F\n", " \n", " \n", " 22\n", " coef_can_walk_to_work_school2\n", - " 1.368092\n", + " 0.811379\n", " F\n", " \n", " \n", " 23\n", " coef_can_walk_to_work_and_school\n", - " 0.071630\n", + " 0.284832\n", " F\n", " \n", " \n", " 24\n", " coef_round_trip_auto_time_to_work_work2\n", - " -0.025905\n", + " -0.001855\n", " F\n", " \n", " \n", " 25\n", " coef_round_trip_auto_time_to_work_school2\n", - " 0.064411\n", + " -0.005959\n", " F\n", " \n", " \n", " 26\n", " coef_round_trip_auto_time_to_work_work_and_school\n", - " -0.021804\n", + " -0.002208\n", " F\n", " \n", " \n", " 27\n", " coef_student_employed\n", - " 13.457255\n", + " 2.918973\n", " F\n", " \n", " \n", @@ -3468,37 +3427,37 @@ " \n", " 29\n", " coef_no_cars_in_hh_work2\n", - " -0.725967\n", + " -1.524960\n", " F\n", " \n", " \n", " 30\n", " coef_no_cars_in_hh_school2\n", - " -0.620465\n", + " -1.479517\n", " F\n", " \n", " \n", " 31\n", " coef_no_cars_in_hh_work_and_school\n", - " -0.775934\n", + " -1.244512\n", " F\n", " \n", " \n", " 32\n", " coef_few_cars_than_drivers_school2\n", - " -0.862451\n", + " -0.297623\n", " F\n", " \n", " \n", " 33\n", " coef_num_preschool_in_hh_work1\n", - " -2.930501\n", + " 0.125045\n", " F\n", " \n", " \n", " 34\n", " coef_num_preschool_in_hh_work2\n", - " 0.225173\n", + " -0.126183\n", " F\n", " \n", " \n", @@ -3510,13 +3469,13 @@ " \n", " 36\n", " coef_num_preschool_in_hh_school2\n", - " 0.356660\n", + " -0.796350\n", " F\n", " \n", " \n", " 37\n", " coef_num_preschool_in_hh_work_and_school\n", - " -29.197569\n", + " -0.070125\n", " F\n", " \n", " \n", @@ -3528,7 +3487,7 @@ " \n", " 39\n", " coef_hh_income_gt_50k_work\n", - " -1.418551\n", + " -0.286159\n", " F\n", " \n", " \n", @@ -3546,7 +3505,7 @@ " \n", " 42\n", " coef_hh_income_gt_50k_student_work_and_school\n", - " -0.921175\n", + " -0.128428\n", " F\n", " \n", " \n", @@ -3558,37 +3517,37 @@ " \n", " 44\n", " coef_non_family_hh_category2\n", - " 5.000771\n", + " -0.091298\n", " F\n", " \n", " \n", " 45\n", " coef_num_under_16_not_at_school_work2\n", - " -0.118991\n", + " 0.168260\n", " NaN\n", " \n", " \n", " 46\n", " coef_num_under_16_not_at_school_school2\n", - " -0.638293\n", + " -0.015345\n", " NaN\n", " \n", " \n", " 47\n", " coef_num_under_16_not_at_school_work_and_school\n", - " -15.357907\n", + " -0.192330\n", " NaN\n", " \n", " \n", " 48\n", " coef_home_urban_work1\n", - " 4.026796\n", + " -0.122770\n", " NaN\n", " \n", " \n", " 49\n", " coef_home_urban_work2\n", - " 2.624854\n", + " 0.142218\n", " NaN\n", " \n", " \n", @@ -3600,13 +3559,13 @@ " \n", " 51\n", " coef_home_urban_school2\n", - " -8.455615\n", + " 0.161745\n", " NaN\n", " \n", " \n", " 52\n", " coef_home_urban_work_and_school\n", - " -0.447070\n", + " -0.436835\n", " NaN\n", " \n", " \n", @@ -3616,58 +3575,58 @@ "text/plain": [ " coefficient_name value constrain\n", "0 coef_unavailable -999.000000 T\n", - "1 coef_ft_worker_work2_asc -5.517933 F\n", - "2 coef_pt_worker_work2_asc -4.743242 F\n", - "3 coef_univ_work1_asc 6.475896 F\n", - "4 coef_univ_work2_asc 4.833029 F\n", - "5 coef_univ_school2_asc -10.233810 F\n", - "6 coef_univ_work_and_school_asc 8.180927 F\n", - "7 coef_driving_age_child_school2_asc -13.067731 F\n", - "8 coef_driving_age_child_work_and_school_asc -12.605997 F\n", - "9 coef_pre_driving_age_child_school2_asc 3.679726 F\n", - "10 coef_female_work1 -2.242748 F\n", - "11 coef_female_work2 -0.387411 F\n", - "12 coef_female_school1 0.247086 F\n", - "13 coef_female_school2 -0.301339 F\n", - "14 coef_female_work_and_school -3.218280 F\n", + "1 coef_ft_worker_work2_asc -3.494595 F\n", + "2 coef_pt_worker_work2_asc -3.079547 F\n", + "3 coef_univ_work1_asc 2.209708 F\n", + "4 coef_univ_work2_asc -1.472430 F\n", + "5 coef_univ_school2_asc -3.640737 F\n", + "6 coef_univ_work_and_school_asc 0.173386 F\n", + "7 coef_driving_age_child_school2_asc -3.209418 F\n", + "8 coef_driving_age_child_work_and_school_asc -4.565091 F\n", + "9 coef_pre_driving_age_child_school2_asc -4.210709 F\n", + "10 coef_female_work1 0.333342 F\n", + "11 coef_female_work2 -0.219862 F\n", + "12 coef_female_school1 0.000463 F\n", + "13 coef_female_school2 -0.016856 F\n", + "14 coef_female_work_and_school -0.265847 F\n", "15 coef_female_univ_work1 0.173700 F\n", - "16 coef_under_35_work1 1.038242 F\n", - "17 coef_under_35_work2 -0.253875 F\n", + "16 coef_under_35_work1 -0.458863 F\n", + "17 coef_under_35_work2 0.005614 F\n", "18 coef_under_35_school1 0.721800 F\n", - "19 coef_under_35_school2 15.011164 F\n", - "20 coef_under_35_work_and_school 2.257035 F\n", - "21 coef_can_walk_to_work_work2 0.651120 F\n", - "22 coef_can_walk_to_work_school2 1.368092 F\n", - "23 coef_can_walk_to_work_and_school 0.071630 F\n", - "24 coef_round_trip_auto_time_to_work_work2 -0.025905 F\n", - "25 coef_round_trip_auto_time_to_work_school2 0.064411 F\n", - "26 coef_round_trip_auto_time_to_work_work_and_school -0.021804 F\n", - "27 coef_student_employed 13.457255 F\n", + "19 coef_under_35_school2 1.230550 F\n", + "20 coef_under_35_work_and_school 1.149726 F\n", + "21 coef_can_walk_to_work_work2 0.600928 F\n", + "22 coef_can_walk_to_work_school2 0.811379 F\n", + "23 coef_can_walk_to_work_and_school 0.284832 F\n", + "24 coef_round_trip_auto_time_to_work_work2 -0.001855 F\n", + "25 coef_round_trip_auto_time_to_work_school2 -0.005959 F\n", + "26 coef_round_trip_auto_time_to_work_work_and_school -0.002208 F\n", + "27 coef_student_employed 2.918973 F\n", "28 coef_non_student_goes_to_school 3.883000 F\n", - "29 coef_no_cars_in_hh_work2 -0.725967 F\n", - "30 coef_no_cars_in_hh_school2 -0.620465 F\n", - "31 coef_no_cars_in_hh_work_and_school -0.775934 F\n", - "32 coef_few_cars_than_drivers_school2 -0.862451 F\n", - "33 coef_num_preschool_in_hh_work1 -2.930501 F\n", - "34 coef_num_preschool_in_hh_work2 0.225173 F\n", + "29 coef_no_cars_in_hh_work2 -1.524960 F\n", + "30 coef_no_cars_in_hh_school2 -1.479517 F\n", + "31 coef_no_cars_in_hh_work_and_school -1.244512 F\n", + "32 coef_few_cars_than_drivers_school2 -0.297623 F\n", + "33 coef_num_preschool_in_hh_work1 0.125045 F\n", + "34 coef_num_preschool_in_hh_work2 -0.126183 F\n", "35 coef_num_preschool_in_hh_school1 -0.133500 F\n", - "36 coef_num_preschool_in_hh_school2 0.356660 F\n", - "37 coef_num_preschool_in_hh_work_and_school -29.197569 F\n", + "36 coef_num_preschool_in_hh_school2 -0.796350 F\n", + "37 coef_num_preschool_in_hh_work_and_school -0.070125 F\n", "38 coef_num_non_workers_in_hh_school1 0.257400 F\n", - "39 coef_hh_income_gt_50k_work -1.418551 F\n", + "39 coef_hh_income_gt_50k_work -0.286159 F\n", "40 coef_hh_income_gt_50k_school1 0.034700 F\n", "41 coef_hh_income_gt_50k_worker_work_and_school 0.034700 F\n", - "42 coef_hh_income_gt_50k_student_work_and_school -0.921175 F\n", + "42 coef_hh_income_gt_50k_student_work_and_school -0.128428 F\n", "43 coef_non_family_hh_category1 -0.250000 F\n", - "44 coef_non_family_hh_category2 5.000771 F\n", - "45 coef_num_under_16_not_at_school_work2 -0.118991 NaN\n", - "46 coef_num_under_16_not_at_school_school2 -0.638293 NaN\n", - "47 coef_num_under_16_not_at_school_work_and_school -15.357907 NaN\n", - "48 coef_home_urban_work1 4.026796 NaN\n", - "49 coef_home_urban_work2 2.624854 NaN\n", + "44 coef_non_family_hh_category2 -0.091298 F\n", + "45 coef_num_under_16_not_at_school_work2 0.168260 NaN\n", + "46 coef_num_under_16_not_at_school_school2 -0.015345 NaN\n", + "47 coef_num_under_16_not_at_school_work_and_school -0.192330 NaN\n", + "48 coef_home_urban_work1 -0.122770 NaN\n", + "49 coef_home_urban_work2 0.142218 NaN\n", "50 coef_home_urban_school1 -0.136100 NaN\n", - "51 coef_home_urban_school2 -8.455615 NaN\n", - "52 coef_home_urban_work_and_school -0.447070 NaN" + "51 coef_home_urban_school2 0.161745 NaN\n", + "52 coef_home_urban_work_and_school -0.436835 NaN" ] }, "execution_count": 11, @@ -3687,7 +3646,7 @@ "toc_visible": true }, "kernelspec": { - "display_name": "Python 3", + "display_name": "ESTER", "language": "python", "name": "python3" }, @@ -3701,7 +3660,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.10.15" }, "toc": { "base_numbering": 1, diff --git a/activitysim/examples/example_estimation/notebooks/08_work_tour_scheduling.ipynb b/activitysim/examples/example_estimation/notebooks/08_work_tour_scheduling.ipynb index 3cd81e8a2..b592a2974 100644 --- a/activitysim/examples/example_estimation/notebooks/08_work_tour_scheduling.ipynb +++ b/activitysim/examples/example_estimation/notebooks/08_work_tour_scheduling.ipynb @@ -34,27 +34,75 @@ "id": "s53VwlPwtNnr", "outputId": "d1208b7a-c1f2-4b0b-c439-bf312fe12be0" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "JAX not found. Some functionality will be unavailable.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'larch': '6.0.32',\n", + " 'sharrow': '2.13.0',\n", + " 'numpy': '1.26.4',\n", + " 'pandas': '1.5.3',\n", + " 'xarray': '2024.3.0',\n", + " 'numba': '0.60.0'}" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "import os\n", - "import larch # !conda install larch -c conda-forge # for estimation\n", - "import pandas as pd" + "import larch as lx\n", + "import pandas as pd\n", + "\n", + "lx.versions()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We'll work in our `test` directory, where ActivitySim has saved the estimation data bundles." + "For this demo, we will assume that you have already run ActivitySim in estimation\n", + "mode, and saved the required estimation data bundles (EDB's) to disk. See\n", + "the [first notebook](./01_estimation_mode.ipynb) for details. The following module\n", + "will run a script to set everything up if the example data is not already available." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "EDB directory already populated.\n" + ] + }, + { + "data": { + "text/plain": [ + "PosixPath('test-estimation-data/activitysim-prototype-mtc-extended')" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "os.chdir('test')" + "from est_mode_setup import prepare\n", + "\n", + "prepare()" ] }, { @@ -68,12 +116,28 @@ "cell_type": "code", "execution_count": 3, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "loading from output-est-mode/estimation_data_bundle/mandatory_tour_scheduling_work/tour_scheduling_work_coefficients.csv\n", + "loading from output-est-mode/estimation_data_bundle/mandatory_tour_scheduling_work/mandatory_tour_scheduling_work_SPEC.csv\n", + "loading from output-est-mode/estimation_data_bundle/mandatory_tour_scheduling_work/mandatory_tour_scheduling_work_alternatives_combined.parquet\n", + "loading from output-est-mode/estimation_data_bundle/mandatory_tour_scheduling_work/mandatory_tour_scheduling_work_choosers_combined.parquet\n" + ] + } + ], "source": [ "modelname = \"mandatory_tour_scheduling_work\"\n", "\n", "from activitysim.estimation.larch import component_model\n", - "model, data = component_model(modelname, return_data=True)" + "\n", + "model, data = component_model(\n", + " modelname,\n", + " edb_directory=f\"output-est-mode/estimation_data_bundle/{modelname}/\",\n", + " return_data=True,\n", + ")" ] }, { @@ -461,10 +525,10 @@ " \n", " \n", " 0\n", - " 2961920\n", - " 32\n", - " 35\n", - " 72241\n", + " 2966594\n", + " 7\n", + " 96\n", + " 72355\n", " work\n", " 1\n", " 1\n", @@ -477,18 +541,18 @@ " True\n", " False\n", " False\n", - " 9\n", - " -1\n", " 17\n", + " -1\n", + " 55\n", " 5\n", " 5\n", " \n", " \n", " 1\n", - " 2970120\n", - " 51\n", - " 51\n", - " 72441\n", + " 2967783\n", + " 50\n", + " 30\n", + " 72384\n", " work\n", " 1\n", " 1\n", @@ -501,18 +565,18 @@ " True\n", " False\n", " False\n", - " 100\n", + " 16\n", " -1\n", - " 60\n", + " 59\n", " 5\n", " 5\n", " \n", " \n", " 2\n", - " 2998943\n", + " 2968726\n", + " 64\n", " 29\n", - " 28\n", - " 73144\n", + " 72407\n", " work\n", " 1\n", " 1\n", @@ -525,18 +589,18 @@ " True\n", " False\n", " False\n", - " 77\n", + " 70\n", " -1\n", - " 125\n", + " 59\n", " 5\n", " 5\n", " \n", " \n", " 3\n", - " 3013252\n", - " 47\n", - " 47\n", - " 73493\n", + " 2970858\n", + " 31\n", + " 80\n", + " 72459\n", " work\n", " 1\n", " 1\n", @@ -549,18 +613,18 @@ " True\n", " False\n", " False\n", - " 117\n", + " 30\n", " -1\n", - " 133\n", + " 61\n", " 5\n", " 5\n", " \n", " \n", " 4\n", - " 3015794\n", - " 59\n", - " 59\n", - " 73555\n", + " 2973728\n", + " 61\n", + " 115\n", + " 72529\n", " work\n", " 1\n", " 1\n", @@ -573,9 +637,9 @@ " True\n", " False\n", " False\n", - " 167\n", + " 57\n", " -1\n", - " 136\n", + " 69\n", " 5\n", " 5\n", " \n", @@ -604,35 +668,35 @@ " ...\n", " \n", " \n", - " 2119\n", - " 308070309\n", - " 184\n", - " 184\n", - " 7513909\n", + " 22632\n", + " 309081532\n", + " 32\n", + " 10\n", + " 7538573\n", " work\n", - " 2\n", - " 2\n", - " 2\n", - " 2\n", + " 1\n", + " 1\n", + " 1\n", + " 1\n", " mandatory\n", " ...\n", " False\n", - " work2\n", + " work1\n", " True\n", " False\n", " False\n", - " 11\n", + " 135\n", " -1\n", - " 21\n", - " 17\n", - " 21\n", + " 200\n", + " 5\n", + " 5\n", " \n", " \n", - " 2120\n", - " 308073875\n", - " 41\n", - " 38\n", - " 7513996\n", + " 22633\n", + " 309090634\n", + " 48\n", + " 79\n", + " 7538795\n", " work\n", " 1\n", " 1\n", @@ -645,18 +709,18 @@ " True\n", " False\n", " False\n", - " 67\n", + " 1018\n", " -1\n", - " 21\n", + " 1006\n", " 5\n", " 5\n", " \n", " \n", - " 2121\n", - " 308090603\n", - " 27\n", - " 27\n", - " 7514404\n", + " 22634\n", + " 309101950\n", + " 69\n", + " 78\n", + " 7539071\n", " work\n", " 1\n", " 1\n", @@ -669,18 +733,18 @@ " True\n", " False\n", " False\n", - " 106\n", + " 1019\n", " -1\n", - " 81\n", + " 1006\n", " 5\n", " 5\n", " \n", " \n", - " 2122\n", - " 308105896\n", - " 6\n", - " 6\n", - " 7514777\n", + " 22635\n", + " 309107362\n", + " 139\n", + " 53\n", + " 7539203\n", " work\n", " 1\n", " 1\n", @@ -691,110 +755,110 @@ " False\n", " work1\n", " True\n", - " True\n", - " True\n", - " 87\n", - " 185\n", - " 106\n", + " False\n", + " False\n", + " 1152\n", + " -1\n", + " 1159\n", " 5\n", " 5\n", " \n", " \n", - " 2123\n", - " 308122624\n", - " 44\n", - " 44\n", - " 7515185\n", + " 22636\n", + " 309112036\n", + " 64\n", + " 36\n", + " 7539317\n", " work\n", " 1\n", " 1\n", " 1\n", - " 2\n", + " 1\n", " mandatory\n", " ...\n", " False\n", - " work_and_school\n", - " True\n", - " True\n", + " work1\n", " True\n", - " 16\n", - " 188\n", - " 142\n", + " False\n", + " False\n", + " 1381\n", + " -1\n", + " 1390\n", " 5\n", " 5\n", " \n", " \n", "\n", - "

2124 rows × 40 columns

\n", + "

22637 rows × 40 columns

\n", "" ], "text/plain": [ - " tour_id model_choice override_choice person_id tour_type \\\n", - "0 2961920 32 35 72241 work \n", - "1 2970120 51 51 72441 work \n", - "2 2998943 29 28 73144 work \n", - "3 3013252 47 47 73493 work \n", - "4 3015794 59 59 73555 work \n", - "... ... ... ... ... ... \n", - "2119 308070309 184 184 7513909 work \n", - "2120 308073875 41 38 7513996 work \n", - "2121 308090603 27 27 7514404 work \n", - "2122 308105896 6 6 7514777 work \n", - "2123 308122624 44 44 7515185 work \n", + " tour_id model_choice override_choice person_id tour_type \\\n", + "0 2966594 7 96 72355 work \n", + "1 2967783 50 30 72384 work \n", + "2 2968726 64 29 72407 work \n", + "3 2970858 31 80 72459 work \n", + "4 2973728 61 115 72529 work \n", + "... ... ... ... ... ... \n", + "22632 309081532 32 10 7538573 work \n", + "22633 309090634 48 79 7538795 work \n", + "22634 309101950 69 78 7539071 work \n", + "22635 309107362 139 53 7539203 work \n", + "22636 309112036 64 36 7539317 work \n", "\n", - " tour_type_count tour_type_num tour_num tour_count tour_category ... \\\n", - "0 1 1 1 1 mandatory ... \n", - "1 1 1 1 1 mandatory ... \n", - "2 1 1 1 1 mandatory ... \n", - "3 1 1 1 1 mandatory ... \n", - "4 1 1 1 1 mandatory ... \n", - "... ... ... ... ... ... ... \n", - "2119 2 2 2 2 mandatory ... \n", - "2120 1 1 1 1 mandatory ... \n", - "2121 1 1 1 1 mandatory ... \n", - "2122 1 1 1 1 mandatory ... \n", - "2123 1 1 1 2 mandatory ... \n", + " tour_type_count tour_type_num tour_num tour_count tour_category \\\n", + "0 1 1 1 1 mandatory \n", + "1 1 1 1 1 mandatory \n", + "2 1 1 1 1 mandatory \n", + "3 1 1 1 1 mandatory \n", + "4 1 1 1 1 mandatory \n", + "... ... ... ... ... ... \n", + "22632 1 1 1 1 mandatory \n", + "22633 1 1 1 1 mandatory \n", + "22634 1 1 1 1 mandatory \n", + "22635 1 1 1 1 mandatory \n", + "22636 1 1 1 1 mandatory \n", "\n", - " home_is_rural mandatory_tour_frequency is_worker is_student \\\n", - "0 False work1 True False \n", - "1 False work1 True False \n", - "2 False work1 True False \n", - "3 False work1 True False \n", - "4 False work1 True False \n", - "... ... ... ... ... \n", - "2119 False work2 True False \n", - "2120 False work1 True False \n", - "2121 False work1 True False \n", - "2122 False work1 True True \n", - "2123 False work_and_school True True \n", + " ... home_is_rural mandatory_tour_frequency is_worker is_student \\\n", + "0 ... False work1 True False \n", + "1 ... False work1 True False \n", + "2 ... False work1 True False \n", + "3 ... False work1 True False \n", + "4 ... False work1 True False \n", + "... ... ... ... ... ... \n", + "22632 ... False work1 True False \n", + "22633 ... False work1 True False \n", + "22634 ... False work1 True False \n", + "22635 ... False work1 True False \n", + "22636 ... False work1 True False \n", "\n", - " is_university workplace_zone_id school_zone_id home_zone_id \\\n", - "0 False 9 -1 17 \n", - "1 False 100 -1 60 \n", - "2 False 77 -1 125 \n", - "3 False 117 -1 133 \n", - "4 False 167 -1 136 \n", - "... ... ... ... ... \n", - "2119 False 11 -1 21 \n", - "2120 False 67 -1 21 \n", - "2121 False 106 -1 81 \n", - "2122 True 87 185 106 \n", - "2123 True 16 188 142 \n", + " is_university workplace_zone_id school_zone_id home_zone_id \\\n", + "0 False 17 -1 55 \n", + "1 False 16 -1 59 \n", + "2 False 70 -1 59 \n", + "3 False 30 -1 61 \n", + "4 False 57 -1 69 \n", + "... ... ... ... ... \n", + "22632 False 135 -1 200 \n", + "22633 False 1018 -1 1006 \n", + "22634 False 1019 -1 1006 \n", + "22635 False 1152 -1 1159 \n", + "22636 False 1381 -1 1390 \n", "\n", - " start_previous end_previous \n", - "0 5 5 \n", - "1 5 5 \n", - "2 5 5 \n", - "3 5 5 \n", - "4 5 5 \n", - "... ... ... \n", - "2119 17 21 \n", - "2120 5 5 \n", - "2121 5 5 \n", - "2122 5 5 \n", - "2123 5 5 \n", + " start_previous end_previous \n", + "0 5 5 \n", + "1 5 5 \n", + "2 5 5 \n", + "3 5 5 \n", + "4 5 5 \n", + "... ... ... \n", + "22632 5 5 \n", + "22633 5 5 \n", + "22634 5 5 \n", + "22635 5 5 \n", + "22636 5 5 \n", "\n", - "[2124 rows x 40 columns]" + "[22637 rows x 40 columns]" ] }, "execution_count": 6, @@ -840,148 +904,148 @@ " \n", " \n", " tour_id\n", - " variable\n", - " 0\n", - " 1\n", - " 2\n", - " 3\n", - " 4\n", - " 5\n", - " 6\n", - " 7\n", + " start\n", + " end\n", + " duration\n", + " tdd\n", + " out_period\n", + " in_period\n", + " mode_choice_logsum\n", + " util_free_flow_round_trip_auto_time_shift_effects_departure\n", + " util_free_flow_round_trip_auto_time_shift_effects_duration\n", " ...\n", - " 180\n", - " 181\n", - " 182\n", - " 183\n", - " 184\n", - " 185\n", - " 186\n", - " 187\n", - " 188\n", - " 189\n", + " util_arrival_constants_late\n", + " util_duration_constants_0_to_2_hours\n", + " util_duration_constants_3_to_4_hours\n", + " util_duration_constants_5_to_6_hours\n", + " util_duration_constants_7_to_8_hours\n", + " util_duration_constants_9_hours\n", + " util_duration_constants_10_hours\n", + " util_duration_constants_11_hours\n", + " util_duration_constants_12_to_13_hours\n", + " util_duration_constants_14_to_18_hours\n", " \n", " \n", " \n", " \n", " 0\n", - " 2961920\n", - " duration\n", - " 0\n", - " 1\n", - " 2\n", - " 3\n", - " 4\n", + " 2966594\n", + " 5\n", " 5\n", - " 6\n", - " 7\n", - " ...\n", - " 0\n", - " 1\n", - " 2\n", - " 3\n", " 0\n", - " 1\n", - " 2\n", - " 0\n", - " 1\n", " 0\n", + " EA\n", + " EA\n", + " -0.897101\n", + " 163.399994\n", + " 0.000000\n", + " ...\n", + " False\n", + " True\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", " 1\n", - " 2961920\n", - " end\n", + " 2966594\n", " 5\n", " 6\n", - " 7\n", - " 8\n", - " 9\n", - " 10\n", - " 11\n", - " 12\n", + " 1\n", + " 1\n", + " EA\n", + " AM\n", + " -1.333629\n", + " 163.399994\n", + " 32.680000\n", " ...\n", - " 20\n", - " 21\n", - " 22\n", - " 23\n", - " 21\n", - " 22\n", - " 23\n", - " 22\n", - " 23\n", - " 23\n", + " False\n", + " True\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", " 2\n", - " 2961920\n", - " in_period\n", + " 2966594\n", + " 5\n", + " 7\n", + " 2\n", + " 2\n", " EA\n", " AM\n", - " AM\n", - " AM\n", - " AM\n", - " MD\n", - " MD\n", - " MD\n", + " -1.333629\n", + " 163.399994\n", + " 65.360001\n", " ...\n", - " EV\n", - " EV\n", - " EV\n", - " EV\n", - " EV\n", - " EV\n", - " EV\n", - " EV\n", - " EV\n", - " EV\n", + " False\n", + " True\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", " 3\n", - " 2961920\n", - " mode_choice_logsum\n", - " -0.6808670711507444\n", - " -0.9609052826735235\n", - " -0.9609052826735235\n", - " -0.9609052826735235\n", - " -0.9609052826735235\n", - " -1.1106688167107288\n", - " -1.1106688167107288\n", - " -1.1106688167107288\n", - " ...\n", - " -0.8117834942924501\n", - " -0.8117834942924501\n", - " -0.8117834942924501\n", - " -0.8117834942924501\n", - " -0.8117834942924501\n", - " -0.8117834942924501\n", - " -0.8117834942924501\n", - " -0.8117834942924501\n", - " -0.8117834942924501\n", - " -0.8117834942924501\n", + " 2966594\n", + " 5\n", + " 8\n", + " 3\n", + " 3\n", + " EA\n", + " AM\n", + " -1.333629\n", + " 163.399994\n", + " 98.040001\n", + " ...\n", + " False\n", + " False\n", + " True\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", " 4\n", - " 2961920\n", - " out_period\n", - " EA\n", - " EA\n", - " EA\n", - " EA\n", - " EA\n", - " EA\n", - " EA\n", + " 2966594\n", + " 5\n", + " 9\n", + " 4\n", + " 4\n", " EA\n", + " AM\n", + " -1.333629\n", + " 163.399994\n", + " 130.720001\n", " ...\n", - " EV\n", - " EV\n", - " EV\n", - " EV\n", - " EV\n", - " EV\n", - " EV\n", - " EV\n", - " EV\n", - " EV\n", + " False\n", + " False\n", + " True\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", " ...\n", @@ -1008,9 +1072,20 @@ " ...\n", " \n", " \n", - " 146551\n", - " 308122624\n", - " util_subsequent_tour_must_start_after_previous...\n", + " 4222354\n", + " 309112036\n", + " 21\n", + " 22\n", + " 1\n", + " 185\n", + " EV\n", + " EV\n", + " -2.780379\n", + " 1388.099976\n", + " 66.099998\n", + " ...\n", + " True\n", + " True\n", " False\n", " False\n", " False\n", @@ -1019,9 +1094,22 @@ " False\n", " False\n", " False\n", + " \n", + " \n", + " 4222355\n", + " 309112036\n", + " 21\n", + " 23\n", + " 2\n", + " 186\n", + " EV\n", + " EV\n", + " -2.780379\n", + " 1388.099976\n", + " 132.199997\n", " ...\n", - " False\n", - " False\n", + " True\n", + " True\n", " False\n", " False\n", " False\n", @@ -1032,81 +1120,44 @@ " False\n", " \n", " \n", - " 146552\n", - " 308122624\n", - " util_tours_by_student_duration_lt_8_hrs\n", - " True\n", - " True\n", - " True\n", - " True\n", - " True\n", - " True\n", - " True\n", - " True\n", + " 4222356\n", + " 309112036\n", + " 22\n", + " 22\n", + " 0\n", + " 187\n", + " EV\n", + " EV\n", + " -2.780379\n", + " 1454.199951\n", + " 0.000000\n", " ...\n", " True\n", " True\n", - " True\n", - " True\n", - " True\n", - " True\n", - " True\n", - " True\n", - " True\n", - " True\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", - " 146553\n", - " 308122624\n", - " util_tours_by_worker_duration_lt_8_hrs\n", - " True\n", - " True\n", - " True\n", - " True\n", - " True\n", - " True\n", - " True\n", - " True\n", + " 4222357\n", + " 309112036\n", + " 22\n", + " 23\n", + " 1\n", + " 188\n", + " EV\n", + " EV\n", + " -2.780379\n", + " 1454.199951\n", + " 66.099998\n", " ...\n", " True\n", " True\n", - " True\n", - " True\n", - " True\n", - " True\n", - " True\n", - " True\n", - " True\n", - " True\n", - " \n", - " \n", - " 146554\n", - " 308122624\n", - " util_university_student_departure_shift_effects\n", - " 5\n", - " 5\n", - " 5\n", - " 5\n", - " 5\n", - " 5\n", - " 5\n", - " 5\n", - " ...\n", - " 20\n", - " 20\n", - " 20\n", - " 20\n", - " 21\n", - " 21\n", - " 21\n", - " 22\n", - " 22\n", - " 23\n", - " \n", - " \n", - " 146555\n", - " 308122624\n", - " util_worker_13_to_15_arrival_interaction\n", " False\n", " False\n", " False\n", @@ -1115,9 +1166,22 @@ " False\n", " False\n", " False\n", + " \n", + " \n", + " 4222358\n", + " 309112036\n", + " 23\n", + " 23\n", + " 0\n", + " 189\n", + " EV\n", + " EV\n", + " -2.780379\n", + " 1520.299927\n", + " 0.000000\n", " ...\n", - " False\n", - " False\n", + " True\n", + " True\n", " False\n", " False\n", " False\n", @@ -1129,102 +1193,167 @@ " \n", " \n", "\n", - "

146556 rows × 192 columns

\n", + "

4222359 rows × 71 columns

\n", "" ], "text/plain": [ - " tour_id variable \\\n", - "0 2961920 duration \n", - "1 2961920 end \n", - "2 2961920 in_period \n", - "3 2961920 mode_choice_logsum \n", - "4 2961920 out_period \n", - "... ... ... \n", - "146551 308122624 util_subsequent_tour_must_start_after_previous... \n", - "146552 308122624 util_tours_by_student_duration_lt_8_hrs \n", - "146553 308122624 util_tours_by_worker_duration_lt_8_hrs \n", - "146554 308122624 util_university_student_departure_shift_effects \n", - "146555 308122624 util_worker_13_to_15_arrival_interaction \n", + " tour_id start end duration tdd out_period in_period \\\n", + "0 2966594 5 5 0 0 EA EA \n", + "1 2966594 5 6 1 1 EA AM \n", + "2 2966594 5 7 2 2 EA AM \n", + "3 2966594 5 8 3 3 EA AM \n", + "4 2966594 5 9 4 4 EA AM \n", + "... ... ... ... ... ... ... ... \n", + "4222354 309112036 21 22 1 185 EV EV \n", + "4222355 309112036 21 23 2 186 EV EV \n", + "4222356 309112036 22 22 0 187 EV EV \n", + "4222357 309112036 22 23 1 188 EV EV \n", + "4222358 309112036 23 23 0 189 EV EV \n", "\n", - " 0 1 2 \\\n", - "0 0 1 2 \n", - "1 5 6 7 \n", - "2 EA AM AM \n", - "3 -0.6808670711507444 -0.9609052826735235 -0.9609052826735235 \n", - "4 EA EA EA \n", - "... ... ... ... \n", - "146551 False False False \n", - "146552 True True True \n", - "146553 True True True \n", - "146554 5 5 5 \n", - "146555 False False False \n", + " mode_choice_logsum \\\n", + "0 -0.897101 \n", + "1 -1.333629 \n", + "2 -1.333629 \n", + "3 -1.333629 \n", + "4 -1.333629 \n", + "... ... \n", + "4222354 -2.780379 \n", + "4222355 -2.780379 \n", + "4222356 -2.780379 \n", + "4222357 -2.780379 \n", + "4222358 -2.780379 \n", "\n", - " 3 4 5 \\\n", - "0 3 4 5 \n", - "1 8 9 10 \n", - "2 AM AM MD \n", - "3 -0.9609052826735235 -0.9609052826735235 -1.1106688167107288 \n", - "4 EA EA EA \n", - "... ... ... ... \n", - "146551 False False False \n", - "146552 True True True \n", - "146553 True True True \n", - "146554 5 5 5 \n", - "146555 False False False \n", + " util_free_flow_round_trip_auto_time_shift_effects_departure \\\n", + "0 163.399994 \n", + "1 163.399994 \n", + "2 163.399994 \n", + "3 163.399994 \n", + "4 163.399994 \n", + "... ... \n", + "4222354 1388.099976 \n", + "4222355 1388.099976 \n", + "4222356 1454.199951 \n", + "4222357 1454.199951 \n", + "4222358 1520.299927 \n", "\n", - " 6 7 ... 180 \\\n", - "0 6 7 ... 0 \n", - "1 11 12 ... 20 \n", - "2 MD MD ... EV \n", - "3 -1.1106688167107288 -1.1106688167107288 ... -0.8117834942924501 \n", - "4 EA EA ... EV \n", - "... ... ... ... ... \n", - "146551 False False ... False \n", - "146552 True True ... True \n", - "146553 True True ... True \n", - "146554 5 5 ... 20 \n", - "146555 False False ... False \n", + " util_free_flow_round_trip_auto_time_shift_effects_duration ... \\\n", + "0 0.000000 ... \n", + "1 32.680000 ... \n", + "2 65.360001 ... \n", + "3 98.040001 ... \n", + "4 130.720001 ... \n", + "... ... ... \n", + "4222354 66.099998 ... \n", + "4222355 132.199997 ... \n", + "4222356 0.000000 ... \n", + "4222357 66.099998 ... \n", + "4222358 0.000000 ... \n", "\n", - " 181 182 183 \\\n", - "0 1 2 3 \n", - "1 21 22 23 \n", - "2 EV EV EV \n", - "3 -0.8117834942924501 -0.8117834942924501 -0.8117834942924501 \n", - "4 EV EV EV \n", - "... ... ... ... \n", - "146551 False False False \n", - "146552 True True True \n", - "146553 True True True \n", - "146554 20 20 20 \n", - "146555 False False False \n", + " util_arrival_constants_late util_duration_constants_0_to_2_hours \\\n", + "0 False True \n", + "1 False True \n", + "2 False True \n", + "3 False False \n", + "4 False False \n", + "... ... ... \n", + "4222354 True True \n", + "4222355 True True \n", + "4222356 True True \n", + "4222357 True True \n", + "4222358 True True \n", "\n", - " 184 185 186 \\\n", - "0 0 1 2 \n", - "1 21 22 23 \n", - "2 EV EV EV \n", - "3 -0.8117834942924501 -0.8117834942924501 -0.8117834942924501 \n", - "4 EV EV EV \n", - "... ... ... ... \n", - "146551 False False False \n", - "146552 True True True \n", - "146553 True True True \n", - "146554 21 21 21 \n", - "146555 False False False \n", + " util_duration_constants_3_to_4_hours \\\n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 True \n", + "4 True \n", + "... ... \n", + "4222354 False \n", + "4222355 False \n", + "4222356 False \n", + "4222357 False \n", + "4222358 False \n", "\n", - " 187 188 189 \n", - "0 0 1 0 \n", - "1 22 23 23 \n", - "2 EV EV EV \n", - "3 -0.8117834942924501 -0.8117834942924501 -0.8117834942924501 \n", - "4 EV EV EV \n", - "... ... ... ... \n", - "146551 False False False \n", - "146552 True True True \n", - "146553 True True True \n", - "146554 22 22 23 \n", - "146555 False False False \n", + " util_duration_constants_5_to_6_hours \\\n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "... ... \n", + "4222354 False \n", + "4222355 False \n", + "4222356 False \n", + "4222357 False \n", + "4222358 False \n", "\n", - "[146556 rows x 192 columns]" + " util_duration_constants_7_to_8_hours \\\n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "... ... \n", + "4222354 False \n", + "4222355 False \n", + "4222356 False \n", + "4222357 False \n", + "4222358 False \n", + "\n", + " util_duration_constants_9_hours util_duration_constants_10_hours \\\n", + "0 False False \n", + "1 False False \n", + "2 False False \n", + "3 False False \n", + "4 False False \n", + "... ... ... \n", + "4222354 False False \n", + "4222355 False False \n", + "4222356 False False \n", + "4222357 False False \n", + "4222358 False False \n", + "\n", + " util_duration_constants_11_hours \\\n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "... ... \n", + "4222354 False \n", + "4222355 False \n", + "4222356 False \n", + "4222357 False \n", + "4222358 False \n", + "\n", + " util_duration_constants_12_to_13_hours \\\n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "... ... \n", + "4222354 False \n", + "4222355 False \n", + "4222356 False \n", + "4222357 False \n", + "4222358 False \n", + "\n", + " util_duration_constants_14_to_18_hours \n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "... ... \n", + "4222354 False \n", + "4222355 False \n", + "4222356 False \n", + "4222357 False \n", + "4222358 False \n", + "\n", + "[4222359 rows x 71 columns]" ] }, "execution_count": 7, @@ -1254,13 +1383,47 @@ "name": "stderr", "output_type": "stream", "text": [ - "req_data does not request avail_ca or avail_co but it is set and being provided\n" + "problem: chosen_but_not_available has (83 issues)\n" ] }, + { + "data": { + "text/plain": [ + "(,\n", + " ┣ chosen_but_not_available: altid n example rows\n", + " ┃ 0 23 1 7136\n", + " ┃ 1 40 1 7611\n", + " ┃ 2 41 2 2673, 3979\n", + " ┃ 3 42 1 15549\n", + " ┃ 4 44 2 10390, 17539\n", + " ┃ .. ... .. ...\n", + " ┃ 78 175 1 15501\n", + " ┃ 79 177 1 16777\n", + " ┃ 80 178 1 1665\n", + " ┃ 81 180 1 6817\n", + " ┃ 82 184 1 10510\n", + " ┃ \n", + " ┃ [83 rows x 3 columns])" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.doctor(repair_ch_av=\"-\")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ { "data": { "text/html": [ - "

Iteration 064 [Optimization terminated successfully]

" + "

Iteration 055 [Optimization terminated successfully]

" ], "text/plain": [ "" @@ -1272,7 +1435,7 @@ { "data": { "text/html": [ - "

Best LL = -8399.82196783851

" + "

Best LL = -89082.99255547294

" ], "text/plain": [ "" @@ -1303,70 +1466,74 @@ " \n", " \n", " value\n", + " best\n", " initvalue\n", - " nullvalue\n", " minimum\n", " maximum\n", + " nullvalue\n", " holdfast\n", - " note\n", - " best\n", + " \n", + " \n", + " param_name\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction\n", - " 0.326676\n", + " 0.346120\n", + " 0.346120\n", " 0.362700\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.326676\n", " \n", " \n", " coef_adjacent_window_exists_after_this_arrival_hour_second_plus_tour_interaction\n", - " 0.298901\n", + " -0.097167\n", + " -0.097167\n", " -0.101200\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.298901\n", " \n", " \n", " coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction\n", - " -0.038388\n", + " 0.103758\n", + " 0.103758\n", " 0.177100\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.038388\n", " \n", " \n", " coef_adjacent_window_exists_before_this_departure_hour_second_plus_tour_interaction\n", - " -0.012605\n", + " -0.534895\n", + " -0.534895\n", " -0.212300\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.012605\n", " \n", " \n", " coef_arrival_constants_am_peak\n", - " -2.527138\n", + " -1.859817\n", + " -1.859817\n", " -1.854521\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -2.527138\n", " \n", " \n", " ...\n", @@ -1377,122 +1544,120 @@ " ...\n", " ...\n", " ...\n", - " ...\n", " \n", " \n", " coef_subsequent_of_2plus_work_tours_duration_lt_8_hrs\n", - " 5.443390\n", + " 2.609918\n", + " 2.609918\n", " 2.582000\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 5.443390\n", " \n", " \n", " coef_subsequent_tour_must_start_after_previous_tour_ends\n", " -100.000000\n", " -100.000000\n", + " -100.000000\n", + " -100.0\n", + " -100.0\n", " 0.0\n", - " -25.0\n", - " 25.0\n", " 1\n", - " \n", - " -100.000000\n", " \n", " \n", " coef_tours_by_student_duration_lt_8_hrs\n", - " 20.927636\n", + " 2.619822\n", + " 2.619822\n", " 2.582000\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 20.927636\n", " \n", " \n", " coef_tours_by_worker_duration_lt_8_hrs\n", - " 19.258236\n", + " 0.950422\n", + " 0.950422\n", " 0.912600\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 19.258236\n", " \n", " \n", " coef_university_student_departure_shift_effects\n", - " 0.076480\n", + " 0.045387\n", + " 0.045387\n", " 0.057470\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.076480\n", " \n", " \n", "\n", - "

63 rows × 8 columns

\n", + "

63 rows × 7 columns

\n", "" ], "text/plain": [ - " value initvalue \\\n", - "coef_adjacent_window_exists_after_this_arrival_... 0.326676 0.362700 \n", - "coef_adjacent_window_exists_after_this_arrival_... 0.298901 -0.101200 \n", - "coef_adjacent_window_exists_before_this_departu... -0.038388 0.177100 \n", - "coef_adjacent_window_exists_before_this_departu... -0.012605 -0.212300 \n", - "coef_arrival_constants_am_peak -2.527138 -1.854521 \n", + " value best \\\n", + "param_name \n", + "coef_adjacent_window_exists_after_this_arrival_... 0.346120 0.346120 \n", + "coef_adjacent_window_exists_after_this_arrival_... -0.097167 -0.097167 \n", + "coef_adjacent_window_exists_before_this_departu... 0.103758 0.103758 \n", + "coef_adjacent_window_exists_before_this_departu... -0.534895 -0.534895 \n", + "coef_arrival_constants_am_peak -1.859817 -1.859817 \n", "... ... ... \n", - "coef_subsequent_of_2plus_work_tours_duration_lt... 5.443390 2.582000 \n", + "coef_subsequent_of_2plus_work_tours_duration_lt... 2.609918 2.609918 \n", "coef_subsequent_tour_must_start_after_previous_... -100.000000 -100.000000 \n", - "coef_tours_by_student_duration_lt_8_hrs 20.927636 2.582000 \n", - "coef_tours_by_worker_duration_lt_8_hrs 19.258236 0.912600 \n", - "coef_university_student_departure_shift_effects 0.076480 0.057470 \n", + "coef_tours_by_student_duration_lt_8_hrs 2.619822 2.619822 \n", + "coef_tours_by_worker_duration_lt_8_hrs 0.950422 0.950422 \n", + "coef_university_student_departure_shift_effects 0.045387 0.045387 \n", "\n", - " nullvalue minimum \\\n", - "coef_adjacent_window_exists_after_this_arrival_... 0.0 -25.0 \n", - "coef_adjacent_window_exists_after_this_arrival_... 0.0 -25.0 \n", - "coef_adjacent_window_exists_before_this_departu... 0.0 -25.0 \n", - "coef_adjacent_window_exists_before_this_departu... 0.0 -25.0 \n", - "coef_arrival_constants_am_peak 0.0 -25.0 \n", - "... ... ... \n", - "coef_subsequent_of_2plus_work_tours_duration_lt... 0.0 -25.0 \n", - "coef_subsequent_tour_must_start_after_previous_... 0.0 -25.0 \n", - "coef_tours_by_student_duration_lt_8_hrs 0.0 -25.0 \n", - "coef_tours_by_worker_duration_lt_8_hrs 0.0 -25.0 \n", - "coef_university_student_departure_shift_effects 0.0 -25.0 \n", + " initvalue minimum \\\n", + "param_name \n", + "coef_adjacent_window_exists_after_this_arrival_... 0.362700 -25.0 \n", + "coef_adjacent_window_exists_after_this_arrival_... -0.101200 -25.0 \n", + "coef_adjacent_window_exists_before_this_departu... 0.177100 -25.0 \n", + "coef_adjacent_window_exists_before_this_departu... -0.212300 -25.0 \n", + "coef_arrival_constants_am_peak -1.854521 -25.0 \n", + "... ... ... \n", + "coef_subsequent_of_2plus_work_tours_duration_lt... 2.582000 -25.0 \n", + "coef_subsequent_tour_must_start_after_previous_... -100.000000 -100.0 \n", + "coef_tours_by_student_duration_lt_8_hrs 2.582000 -25.0 \n", + "coef_tours_by_worker_duration_lt_8_hrs 0.912600 -25.0 \n", + "coef_university_student_departure_shift_effects 0.057470 -25.0 \n", "\n", - " maximum holdfast note \\\n", - "coef_adjacent_window_exists_after_this_arrival_... 25.0 0 \n", - "coef_adjacent_window_exists_after_this_arrival_... 25.0 0 \n", - "coef_adjacent_window_exists_before_this_departu... 25.0 0 \n", - "coef_adjacent_window_exists_before_this_departu... 25.0 0 \n", - "coef_arrival_constants_am_peak 25.0 0 \n", - "... ... ... ... \n", - "coef_subsequent_of_2plus_work_tours_duration_lt... 25.0 0 \n", - "coef_subsequent_tour_must_start_after_previous_... 25.0 1 \n", - "coef_tours_by_student_duration_lt_8_hrs 25.0 0 \n", - "coef_tours_by_worker_duration_lt_8_hrs 25.0 0 \n", - "coef_university_student_departure_shift_effects 25.0 0 \n", + " maximum nullvalue \\\n", + "param_name \n", + "coef_adjacent_window_exists_after_this_arrival_... 25.0 0.0 \n", + "coef_adjacent_window_exists_after_this_arrival_... 25.0 0.0 \n", + "coef_adjacent_window_exists_before_this_departu... 25.0 0.0 \n", + "coef_adjacent_window_exists_before_this_departu... 25.0 0.0 \n", + "coef_arrival_constants_am_peak 25.0 0.0 \n", + "... ... ... \n", + "coef_subsequent_of_2plus_work_tours_duration_lt... 25.0 0.0 \n", + "coef_subsequent_tour_must_start_after_previous_... -100.0 0.0 \n", + "coef_tours_by_student_duration_lt_8_hrs 25.0 0.0 \n", + "coef_tours_by_worker_duration_lt_8_hrs 25.0 0.0 \n", + "coef_university_student_departure_shift_effects 25.0 0.0 \n", "\n", - " best \n", - "coef_adjacent_window_exists_after_this_arrival_... 0.326676 \n", - "coef_adjacent_window_exists_after_this_arrival_... 0.298901 \n", - "coef_adjacent_window_exists_before_this_departu... -0.038388 \n", - "coef_adjacent_window_exists_before_this_departu... -0.012605 \n", - "coef_arrival_constants_am_peak -2.527138 \n", - "... ... \n", - "coef_subsequent_of_2plus_work_tours_duration_lt... 5.443390 \n", - "coef_subsequent_tour_must_start_after_previous_... -100.000000 \n", - "coef_tours_by_student_duration_lt_8_hrs 20.927636 \n", - "coef_tours_by_worker_duration_lt_8_hrs 19.258236 \n", - "coef_university_student_departure_shift_effects 0.076480 \n", + " holdfast \n", + "param_name \n", + "coef_adjacent_window_exists_after_this_arrival_... 0 \n", + "coef_adjacent_window_exists_after_this_arrival_... 0 \n", + "coef_adjacent_window_exists_before_this_departu... 0 \n", + "coef_adjacent_window_exists_before_this_departu... 0 \n", + "coef_arrival_constants_am_peak 0 \n", + "... ... \n", + "coef_subsequent_of_2plus_work_tours_duration_lt... 0 \n", + "coef_subsequent_tour_must_start_after_previous_... 1 \n", + "coef_tours_by_student_duration_lt_8_hrs 0 \n", + "coef_tours_by_worker_duration_lt_8_hrs 0 \n", + "coef_university_student_departure_shift_effects 0 \n", "\n", - "[63 rows x 8 columns]" + "[63 rows x 7 columns]" ] }, "metadata": {}, @@ -1502,10 +1667,8 @@ "name": "stderr", "output_type": "stream", "text": [ - ":1: PossibleOverspecification: WARNING: Model is possibly over-specified (hessian is nearly singular).\n", - " model.estimate()\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.580800976238575e-22 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n" + "/Users/jpn/Git/est-mode/larch/src/larch/model/jaxmodel.py:1156: PossibleOverspecification: Model is possibly over-specified (hessian is nearly singular).\n", + " self.calculate_parameter_covariance()\n" ] }, { @@ -1521,23 +1684,23 @@ " \n", " \n", " coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction\n", - " 0.326676\n", + " 0.346120\n", " \n", " \n", " coef_adjacent_window_exists_after_this_arrival_hour_second_plus_tour_interaction\n", - " 0.298901\n", + " -0.097167\n", " \n", " \n", " coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction\n", - " -0.038388\n", + " 0.103758\n", " \n", " \n", " coef_adjacent_window_exists_before_this_departure_hour_second_plus_tour_interaction\n", - " -0.012605\n", + " -0.534895\n", " \n", " \n", " coef_arrival_constants_am_peak\n", - " -2.527138\n", + " -1.859817\n", " \n", " \n", " coef_arrival_constants_early\n", @@ -1545,19 +1708,19 @@ " \n", " \n", " coef_arrival_constants_evening\n", - " -0.085796\n", + " 0.108541\n", " \n", " \n", " coef_arrival_constants_late\n", - " -1.221408\n", + " -0.888178\n", " \n", " \n", " coef_arrival_constants_midday_1\n", - " -0.489736\n", + " -0.478024\n", " \n", " \n", " coef_arrival_constants_midday_2\n", - " -0.383260\n", + " -0.405187\n", " \n", " \n", " coef_arrival_constants_pm_peak_1\n", @@ -1565,19 +1728,19 @@ " \n", " \n", " coef_arrival_constants_pm_peak_2\n", - " 0.202005\n", + " 0.320157\n", " \n", " \n", " coef_arrival_constants_pm_peak_3\n", - " 0.572524\n", + " 0.736762\n", " \n", " \n", " coef_arrival_constants_pm_peak_4\n", - " 0.705592\n", + " 0.834430\n", " \n", " \n", " coef_departure_constants_am_peak_1\n", - " -0.641898\n", + " -0.600877\n", " \n", " \n", " coef_departure_constants_am_peak_2\n", @@ -1585,55 +1748,55 @@ " \n", " \n", " coef_departure_constants_am_peak_3\n", - " -0.323006\n", + " -0.221080\n", " \n", " \n", " coef_departure_constants_am_peak_4\n", - " -1.220042\n", + " -1.207929\n", " \n", " \n", " coef_departure_constants_early\n", - " -0.889376\n", + " -0.930812\n", " \n", " \n", " coef_departure_constants_evening\n", - " -1.989402\n", + " -1.498679\n", " \n", " \n", " coef_departure_constants_late\n", - " -2.936685\n", + " -2.893575\n", " \n", " \n", " coef_departure_constants_midday_1\n", - " -1.826700\n", + " -1.684758\n", " \n", " \n", " coef_departure_constants_midday_2\n", - " -1.878783\n", + " -1.708659\n", " \n", " \n", " coef_departure_constants_pm_peak\n", - " -1.691847\n", + " -1.375804\n", " \n", " \n", " coef_destination_in_cbd_departure_shift_effects\n", - " 0.028678\n", + " 0.057883\n", " \n", " \n", " coef_destination_in_cbd_duration_shift_effects\n", - " 0.096673\n", + " 0.070217\n", " \n", " \n", " coef_destination_in_cbd_early_departure_interaction\n", - " -0.419959\n", + " -0.365371\n", " \n", " \n", " coef_destination_in_cbd_late_arrival_interaction\n", - " -0.266935\n", + " -0.156618\n", " \n", " \n", " coef_duration_constants_0_to_2_hours\n", - " -2.062403\n", + " -2.598564\n", " \n", " \n", " coef_duration_constants_10_hours\n", @@ -1641,75 +1804,75 @@ " \n", " \n", " coef_duration_constants_11_hours\n", - " -0.358479\n", + " -0.316543\n", " \n", " \n", " coef_duration_constants_12_to_13_hours\n", - " -1.132000\n", + " -0.998700\n", " \n", " \n", " coef_duration_constants_14_to_18_hours\n", - " -1.854875\n", + " -1.641305\n", " \n", " \n", " coef_duration_constants_3_to_4_hours\n", - " -0.600278\n", + " -0.976620\n", " \n", " \n", " coef_duration_constants_5_to_6_hours\n", - " -0.343562\n", + " -0.786160\n", " \n", " \n", " coef_duration_constants_7_to_8_hours\n", - " -0.033981\n", + " -0.191835\n", " \n", " \n", " coef_duration_constants_9_hours\n", - " 0.137251\n", + " 0.041325\n", " \n", " \n", " coef_first_of_2plus_work_tours_departure_shift_effects\n", - " -0.289684\n", + " -0.286911\n", " \n", " \n", " coef_first_of_2plus_work_tours_duration_lt_8_hrs\n", - " 1.916784\n", + " 2.160421\n", " \n", " \n", " coef_first_of_2plus_work_tours_duration_shift_effects\n", - " -0.286185\n", + " -0.159326\n", " \n", " \n", " coef_free_flow_round_trip_auto_time_shift_effects_departure\n", - " 0.000599\n", + " -0.001158\n", " \n", " \n", " coef_free_flow_round_trip_auto_time_shift_effects_duration\n", - " 0.004216\n", + " 0.002097\n", " \n", " \n", " coef_full_time_worker_10_to_12_departure_interaction\n", - " -0.678250\n", + " -0.474411\n", " \n", " \n", " coef_full_time_worker_duration_lt_9_hours_interaction\n", - " -1.357293\n", + " -1.190464\n", " \n", " \n", " coef_household_income_departure_shift_effects\n", - " 0.000111\n", + " 0.000219\n", " \n", " \n", " coef_household_income_early_departure_interaction\n", - " -0.582774\n", + " -0.462242\n", " \n", " \n", " coef_household_income_late_arrival_interaction\n", - " 0.029954\n", + " -0.560334\n", " \n", " \n", " coef_mode_choice_logsum\n", - " 0.247114\n", + " 0.666366\n", " \n", " \n", " coef_non_working_adult_duration_shift_effects\n", @@ -1717,23 +1880,23 @@ " \n", " \n", " coef_part_time_worker_13_to_15_arrival_interaction\n", - " 0.375322\n", + " 0.687690\n", " \n", " \n", " coef_part_time_worker_departure_shift_effects\n", - " 0.095094\n", + " 0.058805\n", " \n", " \n", " coef_previously_scheduled_tour_begins_in_this_arrival_hour\n", - " -6.724955\n", + " -1.250685\n", " \n", " \n", " coef_previously_scheduled_tour_ends_in_this_departure_hour\n", - " 0.258853\n", + " -0.563627\n", " \n", " \n", " coef_remaining_tours_to_be_scheduled_div_number_of_unscheduled_hours\n", - " -6.865187\n", + " -18.677135\n", " \n", " \n", " coef_rural_household_early_departure_interaction\n", @@ -1745,34 +1908,34 @@ " \n", " \n", " coef_subsequent_2plus_work_departure_tours_shift_effects\n", - " 0.060824\n", + " 0.059853\n", " \n", " \n", " coef_subsequent_2plus_work_duration_tours_shift_effects\n", - " -0.080957\n", + " -0.352513\n", " \n", " \n", " coef_subsequent_of_2plus_work_tours_duration_lt_8_hrs\n", - " 5.443390\n", + " 2.609918\n", " \n", " \n", " coef_subsequent_tour_must_start_after_previous_tour_ends\n", - " -25.000000\n", + " -100.000000\n", " \n", " \n", " coef_tours_by_student_duration_lt_8_hrs\n", - " 20.927636\n", + " 2.619822\n", " \n", " \n", " coef_tours_by_worker_duration_lt_8_hrs\n", - " 19.258236\n", + " 0.950422\n", " \n", " \n", " coef_university_student_departure_shift_effects\n", - " 0.076480\n", + " 0.045387\n", " \n", " \n", - "loglike-8399.82196783851d_loglike\n", + "
logloss3.971246101795334d_logloss\n", " \n", " \n", " \n", @@ -1782,23 +1945,23 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1806,19 +1969,19 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1826,19 +1989,19 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1846,55 +2009,55 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1902,75 +2065,75 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1978,23 +2141,23 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2006,15 +2169,15 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2022,65 +2185,65 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - "
coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction6.227709e-05-2.476569e-05
coef_adjacent_window_exists_after_this_arrival_hour_second_plus_tour_interaction-3.094051e-042.401362e-05
coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction2.047044e-04-3.242733e-07
coef_adjacent_window_exists_before_this_departure_hour_second_plus_tour_interaction1.044967e-041.721606e-05
coef_arrival_constants_am_peak-2.094941e-056.908123e-05
coef_arrival_constants_early
coef_arrival_constants_evening-2.523831e-047.288184e-05
coef_arrival_constants_late-1.447395e-03-9.483020e-05
coef_arrival_constants_midday_12.766105e-04-4.017493e-05
coef_arrival_constants_midday_27.345342e-04-6.167975e-05
coef_arrival_constants_pm_peak_1
coef_arrival_constants_pm_peak_27.327399e-04-3.095877e-05
coef_arrival_constants_pm_peak_34.196985e-04-1.941954e-04
coef_arrival_constants_pm_peak_4-6.906812e-049.466248e-05
coef_departure_constants_am_peak_11.225866e-035.666160e-05
coef_departure_constants_am_peak_2
coef_departure_constants_am_peak_31.473105e-03-1.055621e-04
coef_departure_constants_am_peak_4-1.160737e-031.197416e-05
coef_departure_constants_early1.279229e-03-4.303027e-05
coef_departure_constants_evening-7.494769e-044.847181e-05
coef_departure_constants_late-3.382858e-04-1.550132e-05
coef_departure_constants_midday_13.335414e-054.834936e-05
coef_departure_constants_midday_2-2.645412e-03-1.698437e-04
coef_departure_constants_pm_peak-1.917919e-031.852010e-04
coef_destination_in_cbd_departure_shift_effects-4.480046e-022.109060e-04
coef_destination_in_cbd_duration_shift_effects2.390663e-025.183584e-04
coef_destination_in_cbd_early_departure_interaction1.038321e-038.561721e-05
coef_destination_in_cbd_late_arrival_interaction-7.345503e-043.056000e-06
coef_duration_constants_0_to_2_hours-1.367149e-037.551894e-05
coef_duration_constants_10_hours
coef_duration_constants_11_hours7.690066e-04-5.843846e-05
coef_duration_constants_12_to_13_hours1.653562e-036.715821e-05
coef_duration_constants_14_to_18_hours1.225821e-031.601895e-04
coef_duration_constants_3_to_4_hours-1.640102e-03-3.312036e-05
coef_duration_constants_5_to_6_hours-5.618970e-04-1.248871e-04
coef_duration_constants_7_to_8_hours4.597377e-041.212099e-05
coef_duration_constants_9_hours-7.212915e-04-1.193587e-04
coef_first_of_2plus_work_tours_departure_shift_effects-6.512833e-036.406568e-05
coef_first_of_2plus_work_tours_duration_lt_8_hrs-2.321194e-041.190483e-05
coef_first_of_2plus_work_tours_duration_shift_effects3.977570e-03-9.017286e-05
coef_free_flow_round_trip_auto_time_shift_effects_departure-9.773028e-01-1.930899e-03
coef_free_flow_round_trip_auto_time_shift_effects_duration6.851835e-013.916590e-04
coef_full_time_worker_10_to_12_departure_interaction-1.959177e-042.789068e-05
coef_full_time_worker_duration_lt_9_hours_interaction-2.085279e-03-5.147377e-05
coef_household_income_departure_shift_effects-6.023402e+00-8.126657e-03
coef_household_income_early_departure_interaction9.200981e-05-4.696739e-05
coef_household_income_late_arrival_interaction-2.749490e-045.039132e-05
coef_mode_choice_logsum-1.198356e-031.368051e-05
coef_non_working_adult_duration_shift_effects
coef_part_time_worker_13_to_15_arrival_interaction3.494690e-042.401302e-05
coef_part_time_worker_departure_shift_effects-7.745591e-031.505693e-04
coef_previously_scheduled_tour_begins_in_this_arrival_hour-4.665139e-051.307335e-04
coef_previously_scheduled_tour_ends_in_this_departure_hour-2.485873e-05-6.743726e-06
coef_remaining_tours_to_be_scheduled_div_number_of_unscheduled_hours2.255476e-066.820090e-06
coef_rural_household_early_departure_interaction
coef_subsequent_2plus_work_departure_tours_shift_effects-8.338787e-03-3.661524e-05
coef_subsequent_2plus_work_duration_tours_shift_effects7.065869e-042.967934e-05
coef_subsequent_of_2plus_work_tours_duration_lt_8_hrs-2.124468e-043.755607e-05
coef_subsequent_tour_must_start_after_previous_tour_ends
coef_tours_by_student_duration_lt_8_hrs-7.862668e-165.453713e-05
coef_tours_by_worker_duration_lt_8_hrs-7.862668e-165.453713e-05
coef_university_student_departure_shift_effects-1.306805e-025.979971e-05
nit64nfev177njev64status0message'Optimization terminated successfully'successTrueelapsed_time0:00:08.813504method'slsqp'n_cases2124iteration_number64logloss3.954718440601935" + "nit55nfev69njev55status0message'Optimization terminated successfully'successTrueelapsed_time0:00:40.125911method'slsqp'n_cases22637iteration_number55loglike-89082.99255547294" ], "text/plain": [ - "┣ x: coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction 0.326676\n", - "┃ coef_adjacent_window_exists_after_this_arrival_hour_second_plus_tour_interaction 0.298901\n", - "┃ coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction -0.038388\n", - "┃ coef_adjacent_window_exists_before_this_departure_hour_second_plus_tour_interaction -0.012605\n", - "┃ coef_arrival_constants_am_peak -2.527138\n", - "┃ ... \n", - "┃ coef_subsequent_of_2plus_work_tours_duration_lt_8_hrs 5.443390\n", - "┃ coef_subsequent_tour_must_start_after_previous_tour_ends -25.000000\n", - "┃ coef_tours_by_student_duration_lt_8_hrs 20.927636\n", - "┃ coef_tours_by_worker_duration_lt_8_hrs 19.258236\n", - "┃ coef_university_student_departure_shift_effects 0.076480\n", + "┣ x: coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction 0.346120\n", + "┃ coef_adjacent_window_exists_after_this_arrival_hour_second_plus_tour_interaction -0.097167\n", + "┃ coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction 0.103758\n", + "┃ coef_adjacent_window_exists_before_this_departure_hour_second_plus_tour_interaction -0.534895\n", + "┃ coef_arrival_constants_am_peak -1.859817\n", + "┃ ... \n", + "┃ coef_subsequent_of_2plus_work_tours_duration_lt_8_hrs 2.609918\n", + "┃ coef_subsequent_tour_must_start_after_previous_tour_ends -100.000000\n", + "┃ coef_tours_by_student_duration_lt_8_hrs 2.619822\n", + "┃ coef_tours_by_worker_duration_lt_8_hrs 0.950422\n", + "┃ coef_university_student_departure_shift_effects 0.045387\n", "┃ Length: 63, dtype: float64\n", - "┣ loglike: -8399.82196783851\n", - "┣ d_loglike: coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction 6.227709e-05\n", - "┃ coef_adjacent_window_exists_after_this_arrival_hour_second_plus_tour_interaction -3.094051e-04\n", - "┃ coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction 2.047044e-04\n", - "┃ coef_adjacent_window_exists_before_this_departure_hour_second_plus_tour_interaction 1.044967e-04\n", - "┃ coef_arrival_constants_am_peak -2.094941e-05\n", + "┣ logloss: 3.971246101795334\n", + "┣ d_logloss: coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction -2.476569e-05\n", + "┃ coef_adjacent_window_exists_after_this_arrival_hour_second_plus_tour_interaction 2.401362e-05\n", + "┃ coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction -3.242733e-07\n", + "┃ coef_adjacent_window_exists_before_this_departure_hour_second_plus_tour_interaction 1.721606e-05\n", + "┃ coef_arrival_constants_am_peak 6.908123e-05\n", "┃ ... \n", - "┃ coef_subsequent_of_2plus_work_tours_duration_lt_8_hrs -2.124468e-04\n", + "┃ coef_subsequent_of_2plus_work_tours_duration_lt_8_hrs 3.755607e-05\n", "┃ coef_subsequent_tour_must_start_after_previous_tour_ends 0.000000e+00\n", - "┃ coef_tours_by_student_duration_lt_8_hrs -7.862668e-16\n", - "┃ coef_tours_by_worker_duration_lt_8_hrs -7.862668e-16\n", - "┃ coef_university_student_departure_shift_effects -1.306805e-02\n", + "┃ coef_tours_by_student_duration_lt_8_hrs 5.453713e-05\n", + "┃ coef_tours_by_worker_duration_lt_8_hrs 5.453713e-05\n", + "┃ coef_university_student_departure_shift_effects 5.979971e-05\n", "┃ Length: 63, dtype: float64\n", - "┣ nit: 64\n", - "┣ nfev: 177\n", - "┣ njev: 64\n", + "┣ nit: 55\n", + "┣ nfev: 69\n", + "┣ njev: 55\n", "┣ status: 0\n", "┣ message: 'Optimization terminated successfully'\n", "┣ success: True\n", - "┣ elapsed_time: datetime.timedelta(seconds=8, microseconds=813504)\n", + "┣ elapsed_time: datetime.timedelta(seconds=40, microseconds=125911)\n", "┣ method: 'slsqp'\n", - "┣ n_cases: 2124\n", - "┣ iteration_number: 64\n", - "┣ logloss: 3.954718440601935" + "┣ n_cases: 22637\n", + "┣ iteration_number: 55\n", + "┣ loglike: -89082.99255547294" ] }, - "execution_count": 8, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "model.estimate()" + "model.estimate(maxiter=900)" ] }, { @@ -2092,596 +2255,622 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Value Std Err t Stat Signif Null Value Constrained
coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction 0.327 0.208 1.57 0.00
coef_adjacent_window_exists_after_this_arrival_hour_second_plus_tour_interaction 0.299 0.244 1.23 0.00
coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction-0.0384 0.207-0.19 0.00
coef_adjacent_window_exists_before_this_departure_hour_second_plus_tour_interaction-0.0126 0.274-0.05 0.00
coef_arrival_constants_am_peak-2.53 0.539-4.68*** 0.00
coef_arrival_constants_early 0.00 NA NA 0.00fixed value
coef_arrival_constants_evening-0.0858 0.208-0.41 0.00
coef_arrival_constants_late-1.22 0.282-4.33*** 0.00
coef_arrival_constants_midday_1-0.490 0.186-2.64** 0.00
coef_arrival_constants_midday_2-0.383 0.132-2.90** 0.00
coef_arrival_constants_pm_peak_1 0.00 NA NA 0.00fixed value
coef_arrival_constants_pm_peak_2 0.202 0.120 1.69 0.00
coef_arrival_constants_pm_peak_3 0.573 0.133 4.30*** 0.00
coef_arrival_constants_pm_peak_4 0.706 0.159 4.44*** 0.00
coef_departure_constants_am_peak_1-0.642 0.0804-7.99*** 0.00
coef_departure_constants_am_peak_2 0.00 NA NA 0.00fixed value
coef_departure_constants_am_peak_3-0.323 0.0737-4.38*** 0.00
coef_departure_constants_am_peak_4-1.22 0.117-10.45*** 0.00
coef_departure_constants_early-0.889 0.134-6.62*** 0.00
coef_departure_constants_evening-1.99 0.528-3.77*** 0.00
coef_departure_constants_late-2.94 1.18-2.49* 0.00
coef_departure_constants_midday_1-1.83 0.208-8.78*** 0.00
coef_departure_constants_midday_2-1.88 0.266-7.06*** 0.00
coef_departure_constants_pm_peak-1.69 0.371-4.56*** 0.00
coef_destination_in_cbd_departure_shift_effects 0.0287 0.0226 1.27 0.00
coef_destination_in_cbd_duration_shift_effects 0.0967 0.0220 4.39*** 0.00
coef_destination_in_cbd_early_departure_interaction-0.420 0.196-2.14* 0.00
coef_destination_in_cbd_late_arrival_interaction-0.267 0.283-0.94 0.00
coef_duration_constants_0_to_2_hours-2.06 0.351-5.88*** 0.00
coef_duration_constants_10_hours 0.00 NA NA 0.00fixed value
coef_duration_constants_11_hours-0.358 0.0855-4.19*** 0.00
coef_duration_constants_12_to_13_hours-1.13 0.126-9.00*** 0.00
coef_duration_constants_14_to_18_hours-1.85 0.206-9.00*** 0.00
coef_duration_constants_3_to_4_hours-0.600 0.269-2.23* 0.00
coef_duration_constants_5_to_6_hours-0.344 0.216-1.59 0.00
coef_duration_constants_7_to_8_hours-0.0340 0.168-0.20 0.00
coef_duration_constants_9_hours 0.137 0.0802 1.71 0.00
coef_first_of_2plus_work_tours_departure_shift_effects-0.290 0.0438-6.61*** 0.00
coef_first_of_2plus_work_tours_duration_lt_8_hrs 1.92 0.473 4.05*** 0.00
coef_first_of_2plus_work_tours_duration_shift_effects-0.286 0.117-2.44* 0.00
coef_free_flow_round_trip_auto_time_shift_effects_departure 0.000599 0.00113 0.53 0.00
coef_free_flow_round_trip_auto_time_shift_effects_duration 0.00422 0.00113 3.74*** 0.00
coef_full_time_worker_10_to_12_departure_interaction-0.678 0.188-3.61*** 0.00
coef_full_time_worker_duration_lt_9_hours_interaction-1.36 0.151-8.96*** 0.00
coef_household_income_departure_shift_effects 0.000111 5.14e-05 2.17* 0.00
coef_household_income_early_departure_interaction-0.583 0.190-3.06** 0.00
coef_household_income_late_arrival_interaction 0.0300 0.261 0.11 0.00
coef_mode_choice_logsum 0.247 0.208 1.19 0.00
coef_non_working_adult_duration_shift_effects-0.121 7.38e-09-BIG*** 0.00
coef_part_time_worker_13_to_15_arrival_interaction 0.375 0.175 2.15* 0.00
coef_part_time_worker_departure_shift_effects 0.0951 0.0253 3.76*** 0.00
coef_previously_scheduled_tour_begins_in_this_arrival_hour-6.72 146.-0.05 0.00
coef_previously_scheduled_tour_ends_in_this_departure_hour 0.259 0.357 0.72 0.00
coef_remaining_tours_to_be_scheduled_div_number_of_unscheduled_hours-6.87 21.4-0.32 0.00
coef_rural_household_early_departure_interaction 0.404 1.82e-10 BIG*** 0.00
coef_rural_household_late_arrival_interaction-0.345 1.13e-10-BIG*** 0.00
coef_subsequent_2plus_work_departure_tours_shift_effects 0.0608 0.0688 0.88 0.00
coef_subsequent_2plus_work_duration_tours_shift_effects-0.0810 0.0775-1.05 0.00
coef_subsequent_of_2plus_work_tours_duration_lt_8_hrs 5.44 1.37 3.97*** 0.00
coef_subsequent_tour_must_start_after_previous_tour_ends-100. NA NA 0.00fixed value
coef_tours_by_student_duration_lt_8_hrs 20.9 8.74e-05 BIG*** 0.00
coef_tours_by_worker_duration_lt_8_hrs 19.3 8.74e-05 BIG*** 0.00
coef_university_student_departure_shift_effects 0.0765 0.0340 2.25* 0.00
" + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ValueStd Errt StatSignifNull ValueConstrained
Parameter      
coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction 0.346 0.844 0.41 0.00
coef_adjacent_window_exists_after_this_arrival_hour_second_plus_tour_interaction-0.0972 0.215-0.45 0.00
coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction 0.104 0.118 0.88 0.00
coef_adjacent_window_exists_before_this_departure_hour_second_plus_tour_interaction-0.535 0.816-0.66 0.00
coef_arrival_constants_am_peak-1.86 0.145-12.84*** 0.00
coef_arrival_constants_early 0.00 0.00 NA 0.00fixed value
coef_arrival_constants_evening 0.109 0.0645 1.68 0.00
coef_arrival_constants_late-0.888 0.0858-10.35*** 0.00
coef_arrival_constants_midday_1-0.478 0.0618-7.73*** 0.00
coef_arrival_constants_midday_2-0.405 0.0420-9.64*** 0.00
coef_arrival_constants_pm_peak_1 0.00 0.00 NA 0.00fixed value
coef_arrival_constants_pm_peak_2 0.320 0.0376 8.52*** 0.00
coef_arrival_constants_pm_peak_3 0.737 0.0414 17.81*** 0.00
coef_arrival_constants_pm_peak_4 0.834 0.0492 16.97*** 0.00
coef_departure_constants_am_peak_1-0.601 0.0240-25.03*** 0.00
coef_departure_constants_am_peak_2 0.00 0.00 NA 0.00fixed value
coef_departure_constants_am_peak_3-0.221 0.0223-9.89*** 0.00
coef_departure_constants_am_peak_4-1.21 0.0368-32.83*** 0.00
coef_departure_constants_early-0.931 0.0394-23.64*** 0.00
coef_departure_constants_evening-1.50 0.169-8.89*** 0.00
coef_departure_constants_late-2.89 0.523-5.53*** 0.00
coef_departure_constants_midday_1-1.68 0.0667-25.25*** 0.00
coef_departure_constants_midday_2-1.71 0.0823-20.76*** 0.00
coef_departure_constants_pm_peak-1.38 0.115-11.93*** 0.00
coef_destination_in_cbd_departure_shift_effects 0.0579 0.00940 6.16*** 0.00
coef_destination_in_cbd_duration_shift_effects 0.0702 0.00841 8.35*** 0.00
coef_destination_in_cbd_early_departure_interaction-0.365 0.0703-5.19*** 0.00
coef_destination_in_cbd_late_arrival_interaction-0.157 0.102-1.54 0.00
coef_duration_constants_0_to_2_hours-2.60 0.110-23.52*** 0.00
coef_duration_constants_10_hours 0.00 0.00 NA 0.00fixed value
coef_duration_constants_11_hours-0.317 0.0255-12.41*** 0.00
coef_duration_constants_12_to_13_hours-0.999 0.0368-27.14*** 0.00
coef_duration_constants_14_to_18_hours-1.64 0.0595-27.58*** 0.00
coef_duration_constants_3_to_4_hours-0.977 0.0830-11.76*** 0.00
coef_duration_constants_5_to_6_hours-0.786 0.0678-11.60*** 0.00
coef_duration_constants_7_to_8_hours-0.192 0.0520-3.69*** 0.00
coef_duration_constants_9_hours 0.0413 0.0245 1.69 0.00
coef_first_of_2plus_work_tours_departure_shift_effects-0.287 0.0162-17.76*** 0.00
coef_first_of_2plus_work_tours_duration_lt_8_hrs 2.16 0.150 14.40*** 0.00
coef_first_of_2plus_work_tours_duration_shift_effects-0.159 0.0411-3.88*** 0.00
coef_free_flow_round_trip_auto_time_shift_effects_departure-0.00116 0.000147-7.89*** 0.00
coef_free_flow_round_trip_auto_time_shift_effects_duration 0.00210 0.000113 18.52*** 0.00
coef_full_time_worker_10_to_12_departure_interaction-0.474 0.0596-7.95*** 0.00
coef_full_time_worker_duration_lt_9_hours_interaction-1.19 0.0487-24.43*** 0.00
coef_household_income_departure_shift_effects 0.000219 3.32e-05 6.61*** 0.00
coef_household_income_early_departure_interaction-0.462 0.0533-8.67*** 0.00
coef_household_income_late_arrival_interaction-0.560 0.0878-6.38*** 0.00
coef_mode_choice_logsum 0.666 0.0752 8.86*** 0.00
coef_non_working_adult_duration_shift_effects-0.121 NA NA 0.00
coef_part_time_worker_13_to_15_arrival_interaction 0.688 0.0550 12.51*** 0.00
coef_part_time_worker_departure_shift_effects 0.0588 0.00877 6.70*** 0.00
coef_previously_scheduled_tour_begins_in_this_arrival_hour-1.25 3.92-0.32 0.00
coef_previously_scheduled_tour_ends_in_this_departure_hour-0.564 0.810-0.70 0.00
coef_remaining_tours_to_be_scheduled_div_number_of_unscheduled_hours-18.7 7.36-2.54* 0.00
coef_rural_household_early_departure_interaction 0.404 NA NA 0.00
coef_rural_household_late_arrival_interaction-0.345 2.80e-14-BIG*** 0.00
coef_subsequent_2plus_work_departure_tours_shift_effects 0.0599 0.0282 2.12* 0.00
coef_subsequent_2plus_work_duration_tours_shift_effects-0.353 0.0325-10.85*** 0.00
coef_subsequent_of_2plus_work_tours_duration_lt_8_hrs 2.61 0.544 4.80*** 0.00
coef_subsequent_tour_must_start_after_previous_tour_ends-100. 0.00 NA 0.00fixed value
coef_tours_by_student_duration_lt_8_hrs 2.62 0.456 5.75*** 0.00
coef_tours_by_worker_duration_lt_8_hrs 0.950 0.456 2.08* 0.00
coef_university_student_departure_shift_effects 0.0454 0.0124 3.66*** 0.00
\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 9, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -2702,7 +2891,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ @@ -2723,20 +2912,9 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "model.to_xlsx(\n", " result_dir/f\"{modelname}_model_estimation.xlsx\", \n", @@ -2755,7 +2933,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -2794,19 +2972,19 @@ " \n", " 1\n", " coef_free_flow_round_trip_auto_time_shift_effe...\n", - " 0.000599\n", + " -0.001158\n", " F\n", " \n", " \n", " 2\n", " coef_free_flow_round_trip_auto_time_shift_effe...\n", - " 0.004216\n", + " 0.002097\n", " F\n", " \n", " \n", " 3\n", " coef_part_time_worker_departure_shift_effects\n", - " 0.095094\n", + " 0.058805\n", " F\n", " \n", " \n", @@ -2824,7 +3002,7 @@ " \n", " 59\n", " coef_duration_constants_9_hours\n", - " 0.137251\n", + " 0.041325\n", " F\n", " \n", " \n", @@ -2836,19 +3014,19 @@ " \n", " 61\n", " coef_duration_constants_11_hours\n", - " -0.358479\n", + " -0.316543\n", " F\n", " \n", " \n", " 62\n", " coef_duration_constants_12_to_13_hours\n", - " -1.132000\n", + " -0.998700\n", " F\n", " \n", " \n", " 63\n", " coef_duration_constants_14_to_18_hours\n", - " -1.854875\n", + " -1.641305\n", " F\n", " \n", " \n", @@ -2859,21 +3037,21 @@ "text/plain": [ " coefficient_name value constrain\n", "0 coef_dummy 1.000000 T\n", - "1 coef_free_flow_round_trip_auto_time_shift_effe... 0.000599 F\n", - "2 coef_free_flow_round_trip_auto_time_shift_effe... 0.004216 F\n", - "3 coef_part_time_worker_departure_shift_effects 0.095094 F\n", + "1 coef_free_flow_round_trip_auto_time_shift_effe... -0.001158 F\n", + "2 coef_free_flow_round_trip_auto_time_shift_effe... 0.002097 F\n", + "3 coef_part_time_worker_departure_shift_effects 0.058805 F\n", "4 coef_non_working_adult_duration_shift_effects -0.120700 F\n", ".. ... ... ...\n", - "59 coef_duration_constants_9_hours 0.137251 F\n", + "59 coef_duration_constants_9_hours 0.041325 F\n", "60 coef_duration_constants_10_hours 0.000000 T\n", - "61 coef_duration_constants_11_hours -0.358479 F\n", - "62 coef_duration_constants_12_to_13_hours -1.132000 F\n", - "63 coef_duration_constants_14_to_18_hours -1.854875 F\n", + "61 coef_duration_constants_11_hours -0.316543 F\n", + "62 coef_duration_constants_12_to_13_hours -0.998700 F\n", + "63 coef_duration_constants_14_to_18_hours -1.641305 F\n", "\n", "[64 rows x 3 columns]" ] }, - "execution_count": 12, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -2890,7 +3068,7 @@ "toc_visible": true }, "kernelspec": { - "display_name": "Python 3", + "display_name": "ESTER", "language": "python", "name": "python3" }, @@ -2904,7 +3082,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.10.15" }, "toc": { "base_numbering": 1, diff --git a/activitysim/examples/example_estimation/notebooks/09_school_tour_scheduling.ipynb b/activitysim/examples/example_estimation/notebooks/09_school_tour_scheduling.ipynb index 397fe3496..d05cc6e6f 100644 --- a/activitysim/examples/example_estimation/notebooks/09_school_tour_scheduling.ipynb +++ b/activitysim/examples/example_estimation/notebooks/09_school_tour_scheduling.ipynb @@ -34,27 +34,75 @@ "id": "s53VwlPwtNnr", "outputId": "d1208b7a-c1f2-4b0b-c439-bf312fe12be0" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "JAX not found. Some functionality will be unavailable.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'larch': '6.0.32',\n", + " 'sharrow': '2.13.0',\n", + " 'numpy': '1.26.4',\n", + " 'pandas': '1.5.3',\n", + " 'xarray': '2024.3.0',\n", + " 'numba': '0.60.0'}" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "import os\n", - "import larch # !conda install larch -c conda-forge # for estimation\n", - "import pandas as pd" + "import larch as lx\n", + "import pandas as pd\n", + "\n", + "lx.versions()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We'll work in our `test` directory, where ActivitySim has saved the estimation data bundles." + "For this demo, we will assume that you have already run ActivitySim in estimation\n", + "mode, and saved the required estimation data bundles (EDB's) to disk. See\n", + "the [first notebook](./01_estimation_mode.ipynb) for details. The following module\n", + "will run a script to set everything up if the example data is not already available." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "EDB directory already populated.\n" + ] + }, + { + "data": { + "text/plain": [ + "PosixPath('test-estimation-data/activitysim-prototype-mtc-extended')" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "os.chdir('test')" + "from est_mode_setup import prepare\n", + "\n", + "prepare()" ] }, { @@ -68,12 +116,28 @@ "cell_type": "code", "execution_count": 3, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "loading from output-est-mode/estimation_data_bundle/mandatory_tour_scheduling_school/tour_scheduling_school_coefficients.csv\n", + "loading from output-est-mode/estimation_data_bundle/mandatory_tour_scheduling_school/mandatory_tour_scheduling_school_SPEC.csv\n", + "loading from output-est-mode/estimation_data_bundle/mandatory_tour_scheduling_school/mandatory_tour_scheduling_school_alternatives_combined.parquet\n", + "loading from output-est-mode/estimation_data_bundle/mandatory_tour_scheduling_school/mandatory_tour_scheduling_school_choosers_combined.parquet\n" + ] + } + ], "source": [ "modelname = \"mandatory_tour_scheduling_school\"\n", "\n", "from activitysim.estimation.larch import component_model\n", - "model, data = component_model(modelname, return_data=True)" + "\n", + "model, data = component_model(\n", + " modelname,\n", + " edb_directory=f\"output-est-mode/estimation_data_bundle/{modelname}/\",\n", + " return_data=True,\n", + ")" ] }, { @@ -673,28 +737,28 @@ " 23\n", " coef_adjacent_window_exists_before_this_depart...\n", " Adjacent window exists before this departure h...\n", - " @(df.tour_count>1) & (df.tour_num == 1) & _adj...\n", + " @(df.tour_count>1) * (df.tour_num == 1) * _adj...\n", " coef_adjacent_window_exists_before_this_depart...\n", " \n", " \n", " 24\n", " coef_adjacent_window_exists_after_this_arrival...\n", " Adjacent window exists after this arrival hour...\n", - " @(df.tour_count>1) & (df.tour_num == 1) & _adj...\n", + " @(df.tour_count>1) * (df.tour_num == 1) * _adj...\n", " coef_adjacent_window_exists_after_this_arrival...\n", " \n", " \n", " 25\n", " util_adjacent_window_exists_before_this_depart...\n", " Adjacent window exists before this departure h...\n", - " @(df.tour_num > 1) & _adjacent_window_before\n", + " @(df.tour_num > 1) * _adjacent_window_before\n", " coef_adjacent_window_exists_before_this_depart...\n", " \n", " \n", " 26\n", " util_adjacent_window_exists_after_this_arrival...\n", " Adjacent window exists after this arrival hour...\n", - " @(df.tour_num > 1) & _adjacent_window_after\n", + " @(df.tour_num > 1) * _adjacent_window_after\n", " coef_adjacent_window_exists_after_this_arrival...\n", " \n", " \n", @@ -713,7 +777,7 @@ " \n", " \n", " 29\n", - " util_departure_constants_am_peak_1 _6\n", + " util_departure_constants_am_peak_1_6\n", " Departure Constants -- AM peak 1 (6)\n", " start == 6\n", " coef_departure_constants_am_peak_1\n", @@ -940,7 +1004,7 @@ "26 util_adjacent_window_exists_after_this_arrival... \n", "27 util_remaining_work_school_tours_to_be_schedul... \n", "28 util_departure_constants_early_up_to_5 \n", - "29 util_departure_constants_am_peak_1 _6 \n", + "29 util_departure_constants_am_peak_1_6 \n", "30 util_departure_constants_am_peak_2_7 \n", "31 util_departure_constants_am_peak_3_8 \n", "32 util_departure_constants_am_peak_4_9 \n", @@ -1048,10 +1112,10 @@ "18 mode_choice_logsum \n", "21 @tt.previous_tour_ends(df.person_id, df.start) \n", "22 @tt.previous_tour_begins(df.person_id, df.end) \n", - "23 @(df.tour_count>1) & (df.tour_num == 1) & _adj... \n", - "24 @(df.tour_count>1) & (df.tour_num == 1) & _adj... \n", - "25 @(df.tour_num > 1) & _adjacent_window_before \n", - "26 @(df.tour_num > 1) & _adjacent_window_after \n", + "23 @(df.tour_count>1) * (df.tour_num == 1) * _adj... \n", + "24 @(df.tour_count>1) * (df.tour_num == 1) * _adj... \n", + "25 @(df.tour_num > 1) * _adjacent_window_before \n", + "26 @(df.tour_num > 1) * _adjacent_window_after \n", "27 @((df.tour_count>1) & (df.tour_num == 1)) * 1.... \n", "28 start < 6 \n", "29 start == 6 \n", @@ -1209,10 +1273,10 @@ " \n", " \n", " 0\n", - " 25820\n", - " 106\n", - " 121\n", - " 629\n", + " 78669\n", + " 136\n", + " 59\n", + " 1918\n", " school\n", " 1\n", " 1\n", @@ -1226,17 +1290,17 @@ " True\n", " True\n", " -1\n", - " 12\n", - " 131\n", + " 188\n", + " 186\n", " 5\n", " 5\n", " \n", " \n", " 1\n", - " 52265\n", - " 88\n", - " 86\n", - " 1274\n", + " 131846\n", + " 175\n", + " 59\n", + " 3215\n", " school\n", " 1\n", " 1\n", @@ -1250,17 +1314,17 @@ " True\n", " True\n", " -1\n", - " 10\n", - " 166\n", + " 229\n", + " 252\n", " 5\n", " 5\n", " \n", " \n", " 2\n", - " 1117937\n", - " 163\n", - " 163\n", - " 27266\n", + " 178873\n", + " 166\n", + " 45\n", + " 4362\n", " school\n", " 1\n", " 1\n", @@ -1274,17 +1338,17 @@ " True\n", " True\n", " -1\n", - " 12\n", - " 9\n", + " 342\n", + " 313\n", " 5\n", " 5\n", " \n", " \n", " 3\n", - " 1148523\n", - " 126\n", - " 56\n", - " 28012\n", + " 240250\n", + " 154\n", + " 64\n", + " 5859\n", " school\n", " 1\n", " 1\n", @@ -1298,17 +1362,17 @@ " True\n", " True\n", " -1\n", - " 5\n", - " 10\n", + " 490\n", + " 400\n", " 5\n", " 5\n", " \n", " \n", " 4\n", - " 1208547\n", - " 61\n", - " 61\n", - " 29476\n", + " 250131\n", + " 164\n", + " 74\n", + " 6100\n", " school\n", " 1\n", " 1\n", @@ -1322,8 +1386,8 @@ " True\n", " True\n", " -1\n", - " 13\n", - " 16\n", + " 545\n", + " 437\n", " 5\n", " 5\n", " \n", @@ -1352,59 +1416,59 @@ " ...\n", " \n", " \n", - " 604\n", - " 307969317\n", - " 170\n", - " 170\n", - " 7511446\n", + " 10347\n", + " 309517395\n", + " 78\n", + " 60\n", + " 7549204\n", " school\n", " 1\n", " 1\n", - " 2\n", - " 2\n", + " 1\n", + " 1\n", " mandatory\n", " ...\n", " False\n", - " work_and_school\n", - " True\n", - " True\n", + " school1\n", + " False\n", " True\n", - " 92\n", - " 91\n", - " 8\n", - " 7\n", - " 12\n", + " False\n", + " -1\n", + " 885\n", + " 907\n", + " 5\n", + " 5\n", " \n", " \n", - " 605\n", - " 308122616\n", - " 163\n", - " 164\n", - " 7515185\n", + " 10348\n", + " 309518789\n", + " 45\n", + " 64\n", + " 7549238\n", " school\n", " 1\n", " 1\n", - " 2\n", - " 2\n", + " 1\n", + " 1\n", " mandatory\n", " ...\n", " False\n", - " work_and_school\n", - " True\n", - " True\n", + " school1\n", + " False\n", " True\n", - " 16\n", - " 188\n", - " 142\n", - " 7\n", - " 14\n", + " False\n", + " -1\n", + " 1018\n", + " 910\n", + " 5\n", + " 5\n", " \n", " \n", - " 606\n", - " 308631508\n", - " 169\n", - " 169\n", - " 7527597\n", + " 10349\n", + " 309590785\n", + " 126\n", + " 46\n", + " 7550994\n", " school\n", " 1\n", " 1\n", @@ -1416,133 +1480,133 @@ " school1\n", " False\n", " True\n", - " True\n", + " False\n", " -1\n", - " 13\n", - " 188\n", + " 1091\n", + " 1124\n", " 5\n", " 5\n", " \n", " \n", - " 607\n", - " 309183983\n", - " 22\n", - " 20\n", - " 7541072\n", + " 10350\n", + " 309649169\n", + " 62\n", + " 28\n", + " 7552418\n", " school\n", - " 2\n", " 1\n", " 1\n", - " 2\n", + " 1\n", + " 1\n", " mandatory\n", " ...\n", " False\n", - " school2\n", + " school1\n", " False\n", " True\n", - " True\n", + " False\n", " -1\n", - " 107\n", - " 117\n", + " 1263\n", + " 1268\n", " 5\n", " 5\n", " \n", " \n", - " 608\n", - " 309183984\n", - " 180\n", - " 175\n", - " 7541072\n", + " 10351\n", + " 310038054\n", + " 38\n", + " 148\n", + " 7561903\n", " school\n", - " 2\n", - " 2\n", - " 2\n", - " 2\n", + " 1\n", + " 1\n", + " 1\n", + " 1\n", " mandatory\n", " ...\n", " False\n", - " school2\n", + " school1\n", " False\n", " True\n", " True\n", " -1\n", - " 107\n", - " 117\n", - " 6\n", - " 9\n", + " 1127\n", + " 1121\n", + " 5\n", + " 5\n", " \n", " \n", "\n", - "

609 rows × 40 columns

\n", + "

10352 rows × 40 columns

\n", "" ], "text/plain": [ - " tour_id model_choice override_choice person_id tour_type \\\n", - "0 25820 106 121 629 school \n", - "1 52265 88 86 1274 school \n", - "2 1117937 163 163 27266 school \n", - "3 1148523 126 56 28012 school \n", - "4 1208547 61 61 29476 school \n", - ".. ... ... ... ... ... \n", - "604 307969317 170 170 7511446 school \n", - "605 308122616 163 164 7515185 school \n", - "606 308631508 169 169 7527597 school \n", - "607 309183983 22 20 7541072 school \n", - "608 309183984 180 175 7541072 school \n", + " tour_id model_choice override_choice person_id tour_type \\\n", + "0 78669 136 59 1918 school \n", + "1 131846 175 59 3215 school \n", + "2 178873 166 45 4362 school \n", + "3 240250 154 64 5859 school \n", + "4 250131 164 74 6100 school \n", + "... ... ... ... ... ... \n", + "10347 309517395 78 60 7549204 school \n", + "10348 309518789 45 64 7549238 school \n", + "10349 309590785 126 46 7550994 school \n", + "10350 309649169 62 28 7552418 school \n", + "10351 310038054 38 148 7561903 school \n", "\n", - " tour_type_count tour_type_num tour_num tour_count tour_category ... \\\n", - "0 1 1 1 1 mandatory ... \n", - "1 1 1 1 1 mandatory ... \n", - "2 1 1 1 1 mandatory ... \n", - "3 1 1 1 1 mandatory ... \n", - "4 1 1 1 1 mandatory ... \n", - ".. ... ... ... ... ... ... \n", - "604 1 1 2 2 mandatory ... \n", - "605 1 1 2 2 mandatory ... \n", - "606 1 1 1 1 mandatory ... \n", - "607 2 1 1 2 mandatory ... \n", - "608 2 2 2 2 mandatory ... \n", + " tour_type_count tour_type_num tour_num tour_count tour_category \\\n", + "0 1 1 1 1 mandatory \n", + "1 1 1 1 1 mandatory \n", + "2 1 1 1 1 mandatory \n", + "3 1 1 1 1 mandatory \n", + "4 1 1 1 1 mandatory \n", + "... ... ... ... ... ... \n", + "10347 1 1 1 1 mandatory \n", + "10348 1 1 1 1 mandatory \n", + "10349 1 1 1 1 mandatory \n", + "10350 1 1 1 1 mandatory \n", + "10351 1 1 1 1 mandatory \n", "\n", - " home_is_rural mandatory_tour_frequency is_worker is_student \\\n", - "0 False school1 False True \n", - "1 False school1 False True \n", - "2 False school1 False True \n", - "3 False school1 False True \n", - "4 False school1 False True \n", - ".. ... ... ... ... \n", - "604 False work_and_school True True \n", - "605 False work_and_school True True \n", - "606 False school1 False True \n", - "607 False school2 False True \n", - "608 False school2 False True \n", + " ... home_is_rural mandatory_tour_frequency is_worker is_student \\\n", + "0 ... False school1 False True \n", + "1 ... False school1 False True \n", + "2 ... False school1 False True \n", + "3 ... False school1 False True \n", + "4 ... False school1 False True \n", + "... ... ... ... ... ... \n", + "10347 ... False school1 False True \n", + "10348 ... False school1 False True \n", + "10349 ... False school1 False True \n", + "10350 ... False school1 False True \n", + "10351 ... False school1 False True \n", "\n", - " is_university workplace_zone_id school_zone_id home_zone_id \\\n", - "0 True -1 12 131 \n", - "1 True -1 10 166 \n", - "2 True -1 12 9 \n", - "3 True -1 5 10 \n", - "4 True -1 13 16 \n", - ".. ... ... ... ... \n", - "604 True 92 91 8 \n", - "605 True 16 188 142 \n", - "606 True -1 13 188 \n", - "607 True -1 107 117 \n", - "608 True -1 107 117 \n", + " is_university workplace_zone_id school_zone_id home_zone_id \\\n", + "0 True -1 188 186 \n", + "1 True -1 229 252 \n", + "2 True -1 342 313 \n", + "3 True -1 490 400 \n", + "4 True -1 545 437 \n", + "... ... ... ... ... \n", + "10347 False -1 885 907 \n", + "10348 False -1 1018 910 \n", + "10349 False -1 1091 1124 \n", + "10350 False -1 1263 1268 \n", + "10351 True -1 1127 1121 \n", "\n", - " start_previous end_previous \n", - "0 5 5 \n", - "1 5 5 \n", - "2 5 5 \n", - "3 5 5 \n", - "4 5 5 \n", - ".. ... ... \n", - "604 7 12 \n", - "605 7 14 \n", - "606 5 5 \n", - "607 5 5 \n", - "608 6 9 \n", + " start_previous end_previous \n", + "0 5 5 \n", + "1 5 5 \n", + "2 5 5 \n", + "3 5 5 \n", + "4 5 5 \n", + "... ... ... \n", + "10347 5 5 \n", + "10348 5 5 \n", + "10349 5 5 \n", + "10350 5 5 \n", + "10351 5 5 \n", "\n", - "[609 rows x 40 columns]" + "[10352 rows x 40 columns]" ] }, "execution_count": 6, @@ -1588,148 +1652,148 @@ " \n", " \n", " tour_id\n", - " variable\n", - " 0\n", - " 1\n", - " 2\n", - " 3\n", - " 4\n", - " 5\n", - " 6\n", - " 7\n", + " start\n", + " end\n", + " duration\n", + " tdd\n", + " out_period\n", + " in_period\n", + " mode_choice_logsum\n", + " util_roundtrip_auto_time_to_work\n", + " util_ft_worker_departure\n", " ...\n", - " 180\n", - " 181\n", - " 182\n", - " 183\n", - " 184\n", - " 185\n", - " 186\n", - " 187\n", - " 188\n", - " 189\n", + " util_arrival_constants_late_22_and_later\n", + " util_duration_constants_0_to_2_hours\n", + " util_duration_constants_3_to_4_hours\n", + " util_duration_constants_5_to_6_hours\n", + " util_duration_constants_7_to_8_hours\n", + " util_duration_constants_9_hours\n", + " util_duration_constants_10_hours\n", + " util_duration_constants_11_hours\n", + " util_duration_constants_12_to_13_hours\n", + " util_duration_constants_14_to_18_hours\n", " \n", " \n", " \n", " \n", " 0\n", - " 25820\n", - " duration\n", - " 0\n", - " 1\n", - " 2\n", - " 3\n", - " 4\n", + " 78669\n", + " 5\n", " 5\n", - " 6\n", - " 7\n", - " ...\n", - " 0\n", - " 1\n", - " 2\n", - " 3\n", " 0\n", - " 1\n", - " 2\n", " 0\n", - " 1\n", + " EA\n", + " EA\n", + " -0.558633\n", + " 0.0\n", " 0\n", + " ...\n", + " False\n", + " True\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", " 1\n", - " 25820\n", - " end\n", + " 78669\n", " 5\n", " 6\n", - " 7\n", - " 8\n", - " 9\n", - " 10\n", - " 11\n", - " 12\n", + " 1\n", + " 1\n", + " EA\n", + " AM\n", + " -0.452321\n", + " 0.0\n", + " 0\n", " ...\n", - " 20\n", - " 21\n", - " 22\n", - " 23\n", - " 21\n", - " 22\n", - " 23\n", - " 22\n", - " 23\n", - " 23\n", + " False\n", + " True\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", " 2\n", - " 25820\n", - " in_period\n", + " 78669\n", + " 5\n", + " 7\n", + " 2\n", + " 2\n", " EA\n", " AM\n", - " AM\n", - " AM\n", - " AM\n", - " MD\n", - " MD\n", - " MD\n", + " -0.452321\n", + " 0.0\n", + " 0\n", " ...\n", - " EV\n", - " EV\n", - " EV\n", - " EV\n", - " EV\n", - " EV\n", - " EV\n", - " EV\n", - " EV\n", - " EV\n", + " False\n", + " True\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", " 3\n", - " 25820\n", - " mode_choice_logsum\n", - " -1.296359741907684\n", - " -1.3037984712857993\n", - " -1.3037984712857993\n", - " -1.3037984712857993\n", - " -1.3037984712857993\n", - " -1.3201068063134296\n", - " -1.3201068063134296\n", - " -1.3201068063134296\n", + " 78669\n", + " 5\n", + " 8\n", + " 3\n", + " 3\n", + " EA\n", + " AM\n", + " -0.452321\n", + " 0.0\n", + " 0\n", " ...\n", - " -1.5517476709880444\n", - " -1.5517476709880444\n", - " -1.5517476709880444\n", - " -1.5517476709880444\n", - " -1.5517476709880444\n", - " -1.5517476709880444\n", - " -1.5517476709880444\n", - " -1.5517476709880444\n", - " -1.5517476709880444\n", - " -1.5517476709880444\n", + " False\n", + " False\n", + " True\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", " 4\n", - " 25820\n", - " out_period\n", - " EA\n", - " EA\n", - " EA\n", - " EA\n", - " EA\n", - " EA\n", - " EA\n", + " 78669\n", + " 5\n", + " 9\n", + " 4\n", + " 4\n", " EA\n", + " AM\n", + " -0.452321\n", + " 0.0\n", + " 0\n", " ...\n", - " EV\n", - " EV\n", - " EV\n", - " EV\n", - " EV\n", - " EV\n", - " EV\n", - " EV\n", - " EV\n", - " EV\n", + " False\n", + " False\n", + " True\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", " ...\n", @@ -1756,68 +1820,68 @@ " ...\n", " \n", " \n", - " 37144\n", - " 309183984\n", - " util_subsequent_2plus_school_tours_duration\n", - " 0\n", + " 1912825\n", + " 310038054\n", + " 21\n", + " 22\n", " 1\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", + " 185\n", + " EV\n", + " EV\n", + " 1.881379\n", + " 0.0\n", " 0\n", " ...\n", - " 0\n", - " 1\n", - " 2\n", - " 3\n", - " 0\n", - " 1\n", - " 2\n", - " 0\n", - " 1\n", - " 0\n", - " \n", - " \n", - " 37145\n", - " 309183984\n", - " util_subsequent_of_2plus_school_lt_6_hours\n", " True\n", " True\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 1912826\n", + " 310038054\n", + " 21\n", + " 23\n", + " 2\n", + " 186\n", + " EV\n", + " EV\n", + " 1.881379\n", + " 0.0\n", " 0\n", " ...\n", " True\n", " True\n", - " True\n", - " True\n", - " True\n", - " True\n", - " True\n", - " True\n", - " True\n", - " True\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", - " 37146\n", - " 309183984\n", - " util_subsequent_tour_must_start_after_previous...\n", - " True\n", - " True\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", + " 1912827\n", + " 310038054\n", + " 22\n", + " 22\n", " 0\n", + " 187\n", + " EV\n", + " EV\n", + " 1.881379\n", + " 0.0\n", " 0\n", " ...\n", - " False\n", - " False\n", + " True\n", + " True\n", " False\n", " False\n", " False\n", @@ -1828,151 +1892,216 @@ " False\n", " \n", " \n", - " 37147\n", - " 309183984\n", - " util_univ_departure\n", - " 5\n", - " 5\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " ...\n", - " 20\n", - " 20\n", - " 20\n", - " 20\n", - " 21\n", - " 21\n", - " 21\n", - " 22\n", + " 1912828\n", + " 310038054\n", " 22\n", " 23\n", - " \n", - " \n", - " 37148\n", - " 309183984\n", - " util_univ_duration\n", - " 0\n", " 1\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", + " 188\n", + " EV\n", + " EV\n", + " 1.881379\n", + " 0.0\n", " 0\n", " ...\n", + " True\n", + " True\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 1912829\n", + " 310038054\n", + " 23\n", + " 23\n", " 0\n", - " 1\n", - " 2\n", - " 3\n", - " 0\n", - " 1\n", - " 2\n", - " 0\n", - " 1\n", + " 189\n", + " EV\n", + " EV\n", + " 1.881379\n", + " 0.0\n", " 0\n", + " ...\n", + " True\n", + " True\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", "\n", - "

37149 rows × 192 columns

\n", + "

1912830 rows × 63 columns

\n", "" ], "text/plain": [ - " tour_id variable \\\n", - "0 25820 duration \n", - "1 25820 end \n", - "2 25820 in_period \n", - "3 25820 mode_choice_logsum \n", - "4 25820 out_period \n", - "... ... ... \n", - "37144 309183984 util_subsequent_2plus_school_tours_duration \n", - "37145 309183984 util_subsequent_of_2plus_school_lt_6_hours \n", - "37146 309183984 util_subsequent_tour_must_start_after_previous... \n", - "37147 309183984 util_univ_departure \n", - "37148 309183984 util_univ_duration \n", + " tour_id start end duration tdd out_period in_period \\\n", + "0 78669 5 5 0 0 EA EA \n", + "1 78669 5 6 1 1 EA AM \n", + "2 78669 5 7 2 2 EA AM \n", + "3 78669 5 8 3 3 EA AM \n", + "4 78669 5 9 4 4 EA AM \n", + "... ... ... ... ... ... ... ... \n", + "1912825 310038054 21 22 1 185 EV EV \n", + "1912826 310038054 21 23 2 186 EV EV \n", + "1912827 310038054 22 22 0 187 EV EV \n", + "1912828 310038054 22 23 1 188 EV EV \n", + "1912829 310038054 23 23 0 189 EV EV \n", + "\n", + " mode_choice_logsum util_roundtrip_auto_time_to_work \\\n", + "0 -0.558633 0.0 \n", + "1 -0.452321 0.0 \n", + "2 -0.452321 0.0 \n", + "3 -0.452321 0.0 \n", + "4 -0.452321 0.0 \n", + "... ... ... \n", + "1912825 1.881379 0.0 \n", + "1912826 1.881379 0.0 \n", + "1912827 1.881379 0.0 \n", + "1912828 1.881379 0.0 \n", + "1912829 1.881379 0.0 \n", + "\n", + " util_ft_worker_departure ... \\\n", + "0 0 ... \n", + "1 0 ... \n", + "2 0 ... \n", + "3 0 ... \n", + "4 0 ... \n", + "... ... ... \n", + "1912825 0 ... \n", + "1912826 0 ... \n", + "1912827 0 ... \n", + "1912828 0 ... \n", + "1912829 0 ... \n", + "\n", + " util_arrival_constants_late_22_and_later \\\n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "... ... \n", + "1912825 True \n", + "1912826 True \n", + "1912827 True \n", + "1912828 True \n", + "1912829 True \n", + "\n", + " util_duration_constants_0_to_2_hours \\\n", + "0 True \n", + "1 True \n", + "2 True \n", + "3 False \n", + "4 False \n", + "... ... \n", + "1912825 True \n", + "1912826 True \n", + "1912827 True \n", + "1912828 True \n", + "1912829 True \n", "\n", - " 0 1 2 \\\n", - "0 0 1 2 \n", - "1 5 6 7 \n", - "2 EA AM AM \n", - "3 -1.296359741907684 -1.3037984712857993 -1.3037984712857993 \n", - "4 EA EA EA \n", - "... ... ... ... \n", - "37144 0 1 0 \n", - "37145 True True 0 \n", - "37146 True True 0 \n", - "37147 5 5 0 \n", - "37148 0 1 0 \n", + " util_duration_constants_3_to_4_hours \\\n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 True \n", + "4 True \n", + "... ... \n", + "1912825 False \n", + "1912826 False \n", + "1912827 False \n", + "1912828 False \n", + "1912829 False \n", "\n", - " 3 4 5 \\\n", - "0 3 4 5 \n", - "1 8 9 10 \n", - "2 AM AM MD \n", - "3 -1.3037984712857993 -1.3037984712857993 -1.3201068063134296 \n", - "4 EA EA EA \n", - "... ... ... ... \n", - "37144 0 0 0 \n", - "37145 0 0 0 \n", - "37146 0 0 0 \n", - "37147 0 0 0 \n", - "37148 0 0 0 \n", + " util_duration_constants_5_to_6_hours \\\n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "... ... \n", + "1912825 False \n", + "1912826 False \n", + "1912827 False \n", + "1912828 False \n", + "1912829 False \n", "\n", - " 6 7 ... 180 \\\n", - "0 6 7 ... 0 \n", - "1 11 12 ... 20 \n", - "2 MD MD ... EV \n", - "3 -1.3201068063134296 -1.3201068063134296 ... -1.5517476709880444 \n", - "4 EA EA ... EV \n", - "... ... ... ... ... \n", - "37144 0 0 ... 0 \n", - "37145 0 0 ... True \n", - "37146 0 0 ... False \n", - "37147 0 0 ... 20 \n", - "37148 0 0 ... 0 \n", + " util_duration_constants_7_to_8_hours \\\n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "... ... \n", + "1912825 False \n", + "1912826 False \n", + "1912827 False \n", + "1912828 False \n", + "1912829 False \n", "\n", - " 181 182 183 \\\n", - "0 1 2 3 \n", - "1 21 22 23 \n", - "2 EV EV EV \n", - "3 -1.5517476709880444 -1.5517476709880444 -1.5517476709880444 \n", - "4 EV EV EV \n", - "... ... ... ... \n", - "37144 1 2 3 \n", - "37145 True True True \n", - "37146 False False False \n", - "37147 20 20 20 \n", - "37148 1 2 3 \n", + " util_duration_constants_9_hours util_duration_constants_10_hours \\\n", + "0 False False \n", + "1 False False \n", + "2 False False \n", + "3 False False \n", + "4 False False \n", + "... ... ... \n", + "1912825 False False \n", + "1912826 False False \n", + "1912827 False False \n", + "1912828 False False \n", + "1912829 False False \n", "\n", - " 184 185 186 \\\n", - "0 0 1 2 \n", - "1 21 22 23 \n", - "2 EV EV EV \n", - "3 -1.5517476709880444 -1.5517476709880444 -1.5517476709880444 \n", - "4 EV EV EV \n", - "... ... ... ... \n", - "37144 0 1 2 \n", - "37145 True True True \n", - "37146 False False False \n", - "37147 21 21 21 \n", - "37148 0 1 2 \n", + " util_duration_constants_11_hours \\\n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "... ... \n", + "1912825 False \n", + "1912826 False \n", + "1912827 False \n", + "1912828 False \n", + "1912829 False \n", "\n", - " 187 188 189 \n", - "0 0 1 0 \n", - "1 22 23 23 \n", - "2 EV EV EV \n", - "3 -1.5517476709880444 -1.5517476709880444 -1.5517476709880444 \n", - "4 EV EV EV \n", - "... ... ... ... \n", - "37144 0 1 0 \n", - "37145 True True True \n", - "37146 False False False \n", - "37147 22 22 23 \n", - "37148 0 1 0 \n", + " util_duration_constants_12_to_13_hours \\\n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "... ... \n", + "1912825 False \n", + "1912826 False \n", + "1912827 False \n", + "1912828 False \n", + "1912829 False \n", "\n", - "[37149 rows x 192 columns]" + " util_duration_constants_14_to_18_hours \n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "... ... \n", + "1912825 False \n", + "1912826 False \n", + "1912827 False \n", + "1912828 False \n", + "1912829 False \n", + "\n", + "[1912830 rows x 63 columns]" ] }, "execution_count": 7, @@ -2002,13 +2131,80 @@ "name": "stderr", "output_type": "stream", "text": [ - "req_data does not request avail_ca or avail_co but it is set and being provided\n" + "problem: chosen_but_not_available has (46 issues)\n" ] }, + { + "data": { + "text/plain": [ + "(,\n", + " ┣ chosen_but_not_available: altid n example rows\n", + " ┃ 0 42 1 3775\n", + " ┃ 1 43 1 3607\n", + " ┃ 2 56 1 2492\n", + " ┃ 3 57 1 9754\n", + " ┃ 4 58 1 3045\n", + " ┃ 5 60 1 4646\n", + " ┃ 6 72 2 2490, 5457\n", + " ┃ 7 76 2 2863, 7566\n", + " ┃ 8 89 1 178\n", + " ┃ 9 90 2 8286, 9903\n", + " ┃ 10 100 1 4456\n", + " ┃ 11 102 3 15, 4847, 7101\n", + " ┃ 12 103 1 4586\n", + " ┃ 13 104 2 1063, 3558\n", + " ┃ 14 105 2 3258, 4140\n", + " ┃ 15 113 2 117, 499\n", + " ┃ 16 114 3 4784, 6830, 7852\n", + " ┃ 17 115 1 604\n", + " ┃ 18 116 5 588, 3916, 7212\n", + " ┃ 19 117 1 145\n", + " ┃ 20 118 4 5150, 5158, 6843\n", + " ┃ 21 120 1 5714\n", + " ┃ 22 125 2 2341, 6819\n", + " ┃ 23 127 2 3989, 5454\n", + " ┃ 24 128 4 1505, 2340, 4408\n", + " ┃ 25 129 1 8024\n", + " ┃ 26 130 2 5146, 9537\n", + " ┃ 27 136 2 932, 1303\n", + " ┃ 28 138 1 8854\n", + " ┃ 29 139 2 4901, 5428\n", + " ┃ 30 140 1 2116\n", + " ┃ 31 141 2 2305, 5424\n", + " ┃ 32 146 4 54, 2193, 2350\n", + " ┃ 33 147 2 7792, 9568\n", + " ┃ 34 156 2 7158, 7229\n", + " ┃ 35 157 1 9717\n", + " ┃ 36 158 1 7840\n", + " ┃ 37 159 2 111, 7231\n", + " ┃ 38 163 2 540, 7847\n", + " ┃ 39 164 2 188, 1819\n", + " ┃ 40 166 1 2035\n", + " ┃ 41 167 1 2976\n", + " ┃ 42 168 1 2143\n", + " ┃ 43 170 2 5247, 7868\n", + " ┃ 44 171 1 64\n", + " ┃ 45 183 1 9440)" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.doctor(repair_ch_av=\"-\")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ { "data": { "text/html": [ - "

Iteration 077 [Optimization terminated successfully]

" + "

Iteration 139 [Optimization terminated successfully]

" ], "text/plain": [ "" @@ -2020,7 +2216,7 @@ { "data": { "text/html": [ - "

Best LL = -2331.7420221780226

" + "

Best LL = -39483.50824582766

" ], "text/plain": [ "" @@ -2051,853 +2247,811 @@ " \n", " \n", " value\n", + " best\n", " initvalue\n", - " nullvalue\n", " minimum\n", " maximum\n", + " nullvalue\n", " holdfast\n", - " note\n", - " best\n", + " \n", + " \n", + " param_name\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction\n", - " -0.414229\n", + " 0.232285\n", + " 0.232285\n", " -0.003049\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.414229\n", " \n", " \n", " coef_adjacent_window_exists_after_this_arrival_hour_second_plus_tour_interaction\n", - " -0.640186\n", + " -1.201676\n", + " -1.201676\n", " -0.527100\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.640186\n", " \n", " \n", " coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction\n", - " 1.656920\n", + " -0.419250\n", + " -0.419250\n", " 0.089750\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 1.656920\n", " \n", " \n", " coef_adjacent_window_exists_before_this_departure_hour_second_plus_tour_interaction\n", - " 0.225722\n", + " -0.760747\n", + " -0.760747\n", " -0.440000\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.225722\n", " \n", " \n", " coef_all_adults_ft_worker_duration\n", - " 0.052336\n", + " 0.079713\n", + " 0.079713\n", " 0.109300\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.052336\n", " \n", " \n", " coef_arrival_constants_am_peak\n", - " -2.239162\n", + " -2.595385\n", + " -2.595385\n", " -2.428718\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -2.239162\n", " \n", " \n", " coef_arrival_constants_early\n", - " -1.065980\n", + " -2.446580\n", + " -2.446580\n", " -2.428718\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -1.065980\n", " \n", " \n", " coef_arrival_constants_evening\n", - " -1.033329\n", + " -0.707272\n", + " -0.707272\n", " -0.870147\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -1.033329\n", " \n", " \n", " coef_arrival_constants_late\n", - " -1.315910\n", + " -1.639520\n", + " -1.639520\n", " -1.752000\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -1.315910\n", " \n", " \n", " coef_arrival_constants_midday_1\n", - " -1.302330\n", + " -1.267988\n", + " -1.267988\n", " -1.237909\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -1.302330\n", " \n", " \n", " coef_arrival_constants_midday_2\n", - " -0.554673\n", + " -0.523484\n", + " -0.523484\n", " -0.539769\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.554673\n", " \n", " \n", " coef_arrival_constants_pm_peak_1\n", " 0.000000\n", " 0.000000\n", + " 0.000000\n", + " 0.0\n", + " 0.0\n", " 0.0\n", - " -25.0\n", - " 25.0\n", " 1\n", - " \n", - " 0.000000\n", " \n", " \n", " coef_arrival_constants_pm_peak_2\n", - " -0.441387\n", + " -0.360268\n", + " -0.360268\n", " -0.389169\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.441387\n", " \n", " \n", " coef_arrival_constants_pm_peak_3\n", - " -0.281247\n", + " -0.096426\n", + " -0.096426\n", " -0.198120\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.281247\n", " \n", " \n", " coef_arrival_constants_pm_peak_4\n", - " -0.370368\n", + " -0.127905\n", + " -0.127905\n", " -0.253625\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.370368\n", " \n", " \n", " coef_departure_constants_am_peak_1\n", - " -1.882694\n", + " -1.606835\n", + " -1.606835\n", " -1.617644\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -1.882694\n", " \n", " \n", " coef_departure_constants_am_peak_2\n", " 0.000000\n", " 0.000000\n", + " 0.000000\n", + " 0.0\n", + " 0.0\n", " 0.0\n", - " -25.0\n", - " 25.0\n", " 1\n", - " \n", - " 0.000000\n", " \n", " \n", " coef_departure_constants_am_peak_3\n", - " -0.183985\n", + " -0.100582\n", + " -0.100582\n", " -0.073827\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.183985\n", " \n", " \n", " coef_departure_constants_am_peak_4\n", - " -2.016403\n", + " -2.142432\n", + " -2.142432\n", " -2.080571\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -2.016403\n", " \n", " \n", " coef_departure_constants_early\n", - " -3.636770\n", + " -3.850945\n", + " -3.850945\n", " -3.820662\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -3.636770\n", " \n", " \n", " coef_departure_constants_evening\n", - " -5.258795\n", + " -5.546826\n", + " -5.546826\n", " -5.230288\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -5.258795\n", " \n", " \n", " coef_departure_constants_late\n", - " -21.447622\n", + " -10.890722\n", + " -10.890722\n", " -11.886047\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -21.447622\n", " \n", " \n", " coef_departure_constants_midday_1\n", - " -3.279864\n", + " -3.124481\n", + " -3.124481\n", " -2.985739\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -3.279864\n", " \n", " \n", " coef_departure_constants_midday_2\n", - " -3.750548\n", + " -3.861525\n", + " -3.861525\n", " -3.628435\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -3.750548\n", " \n", " \n", " coef_departure_constants_pm_peak\n", - " -3.093167\n", + " -3.281532\n", + " -3.281532\n", " -3.102505\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -3.093167\n", " \n", " \n", " coef_duration_constants_0_to_2_hours\n", - " -1.372110\n", + " -1.318085\n", + " -1.318085\n", " -1.409956\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -1.372110\n", " \n", " \n", " coef_duration_constants_10_hours\n", - " -0.876448\n", + " -0.914359\n", + " -0.914359\n", " -0.904789\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.876448\n", " \n", " \n", " coef_duration_constants_11_hours\n", - " -1.127264\n", + " -1.643692\n", + " -1.643692\n", " -1.521163\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -1.127264\n", " \n", " \n", " coef_duration_constants_12_to_13_hours\n", - " -2.668346\n", + " -2.528269\n", + " -2.528269\n", " -2.418489\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -2.668346\n", " \n", " \n", " coef_duration_constants_14_to_18_hours\n", - " -2.675974\n", + " -2.541672\n", + " -2.541672\n", " -2.503137\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -2.675974\n", " \n", " \n", " coef_duration_constants_3_to_4_hours\n", - " -0.552200\n", + " -0.680239\n", + " -0.680239\n", " -0.745893\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.552200\n", " \n", " \n", " coef_duration_constants_5_to_6_hours\n", - " -0.532627\n", + " -0.551126\n", + " -0.551126\n", " -0.567637\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.532627\n", " \n", " \n", " coef_duration_constants_7_to_8_hours\n", " 0.000000\n", " 0.000000\n", + " 0.000000\n", + " 0.0\n", + " 0.0\n", " 0.0\n", - " -25.0\n", - " 25.0\n", " 1\n", - " \n", - " 0.000000\n", " \n", " \n", " coef_duration_constants_9_hours\n", - " -0.487609\n", + " -0.664353\n", + " -0.664353\n", " -0.650807\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.487609\n", " \n", " \n", " coef_first_of_2plus_school_lt_6_hours\n", - " 0.169055\n", + " 1.768123\n", + " 1.768123\n", " 1.487000\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.169055\n", " \n", " \n", " coef_first_of_2plus_school_tours_departure\n", - " -0.333830\n", + " -0.277161\n", + " -0.277161\n", " -0.300200\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.333830\n", " \n", " \n", " coef_first_of_2plus_school_tours_duration\n", - " -0.042558\n", + " -0.077846\n", + " -0.077846\n", " -0.159300\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.042558\n", " \n", " \n", " coef_ft_worker_departure\n", " 0.397100\n", " 0.397100\n", - " 0.0\n", + " 0.397100\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.397100\n", " \n", " \n", " coef_ft_worker_duration\n", " -0.190800\n", " -0.190800\n", - " 0.0\n", + " -0.190800\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.190800\n", " \n", " \n", " coef_hh_income_early_departure\n", - " -13.757852\n", + " -0.643531\n", + " -0.643531\n", " -0.883700\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -13.757852\n", " \n", " \n", " coef_hh_income_late_arrival\n", - " 0.101726\n", + " -0.123912\n", + " -0.123912\n", " -0.353300\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.101726\n", " \n", " \n", " coef_mode_choice_logsum\n", - " 0.056410\n", + " 1.403530\n", + " 1.403530\n", " 2.127000\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.056410\n", " \n", " \n", " coef_non_worker_departure\n", " 0.553900\n", " 0.553900\n", - " 0.0\n", + " 0.553900\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.553900\n", " \n", " \n", " coef_previous_tour_begins_this_arrival_hour\n", - " -10.370632\n", + " 1.748525\n", + " 1.748525\n", " -1.102000\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -10.370632\n", " \n", " \n", " coef_previous_tour_ends_this_departure_hour\n", - " 0.298551\n", + " -1.454921\n", + " -1.454921\n", " -0.599500\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.298551\n", " \n", " \n", " coef_remaining_work_school_tours_to_be_scheduled_div_number_of_unscheduled_hours\n", - " -25.000000\n", + " -16.666935\n", + " -16.666935\n", " -16.670000\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -25.000000\n", " \n", " \n", " coef_roundtrip_auto_time_to_work\n", - " 0.005137\n", + " 0.002946\n", + " 0.002946\n", " 0.003195\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.005137\n", " \n", " \n", " coef_school_plus_work_tours_by_student_lt_6_hours\n", - " -2.483313\n", + " 1.805060\n", + " 1.805060\n", " 1.730000\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -2.483313\n", " \n", " \n", " coef_school_plus_work_tours_by_worker_lt_6_hours\n", - " -2.071313\n", + " 2.217060\n", + " 2.217060\n", " 2.142000\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -2.071313\n", " \n", " \n", " coef_student_driver_duration\n", - " -0.003958\n", + " 0.021414\n", + " 0.021414\n", " 0.034640\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.003958\n", " \n", " \n", " coef_subsequent_2plus_school_tours_duration\n", - " -0.188299\n", + " -0.309377\n", + " -0.309377\n", " -0.233800\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.188299\n", " \n", " \n", " coef_subsequent_of_2plus_school_lt_6_hours\n", - " 25.000000\n", + " 1.522961\n", + " 1.522961\n", " 2.142000\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 25.000000\n", " \n", " \n", " coef_subsequent_tour_must_start_after_previous_tour_ends\n", " -100.000000\n", " -100.000000\n", + " -100.000000\n", + " -100.0\n", + " -100.0\n", " 0.0\n", - " -25.0\n", - " 25.0\n", " 1\n", - " \n", - " -100.000000\n", " \n", " \n", " coef_univ_departure\n", - " 0.234367\n", + " 0.281763\n", + " 0.281763\n", " 0.280000\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.234367\n", " \n", " \n", " coef_univ_duration\n", - " -0.409132\n", + " -0.287541\n", + " -0.287541\n", " -0.290700\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.409132\n", " \n", " \n", "\n", "" ], "text/plain": [ - " value initvalue \\\n", - "coef_adjacent_window_exists_after_this_arrival_... -0.414229 -0.003049 \n", - "coef_adjacent_window_exists_after_this_arrival_... -0.640186 -0.527100 \n", - "coef_adjacent_window_exists_before_this_departu... 1.656920 0.089750 \n", - "coef_adjacent_window_exists_before_this_departu... 0.225722 -0.440000 \n", - "coef_all_adults_ft_worker_duration 0.052336 0.109300 \n", - "coef_arrival_constants_am_peak -2.239162 -2.428718 \n", - "coef_arrival_constants_early -1.065980 -2.428718 \n", - "coef_arrival_constants_evening -1.033329 -0.870147 \n", - "coef_arrival_constants_late -1.315910 -1.752000 \n", - "coef_arrival_constants_midday_1 -1.302330 -1.237909 \n", - "coef_arrival_constants_midday_2 -0.554673 -0.539769 \n", + " value best \\\n", + "param_name \n", + "coef_adjacent_window_exists_after_this_arrival_... 0.232285 0.232285 \n", + "coef_adjacent_window_exists_after_this_arrival_... -1.201676 -1.201676 \n", + "coef_adjacent_window_exists_before_this_departu... -0.419250 -0.419250 \n", + "coef_adjacent_window_exists_before_this_departu... -0.760747 -0.760747 \n", + "coef_all_adults_ft_worker_duration 0.079713 0.079713 \n", + "coef_arrival_constants_am_peak -2.595385 -2.595385 \n", + "coef_arrival_constants_early -2.446580 -2.446580 \n", + "coef_arrival_constants_evening -0.707272 -0.707272 \n", + "coef_arrival_constants_late -1.639520 -1.639520 \n", + "coef_arrival_constants_midday_1 -1.267988 -1.267988 \n", + "coef_arrival_constants_midday_2 -0.523484 -0.523484 \n", "coef_arrival_constants_pm_peak_1 0.000000 0.000000 \n", - "coef_arrival_constants_pm_peak_2 -0.441387 -0.389169 \n", - "coef_arrival_constants_pm_peak_3 -0.281247 -0.198120 \n", - "coef_arrival_constants_pm_peak_4 -0.370368 -0.253625 \n", - "coef_departure_constants_am_peak_1 -1.882694 -1.617644 \n", + "coef_arrival_constants_pm_peak_2 -0.360268 -0.360268 \n", + "coef_arrival_constants_pm_peak_3 -0.096426 -0.096426 \n", + "coef_arrival_constants_pm_peak_4 -0.127905 -0.127905 \n", + "coef_departure_constants_am_peak_1 -1.606835 -1.606835 \n", "coef_departure_constants_am_peak_2 0.000000 0.000000 \n", - "coef_departure_constants_am_peak_3 -0.183985 -0.073827 \n", - "coef_departure_constants_am_peak_4 -2.016403 -2.080571 \n", - "coef_departure_constants_early -3.636770 -3.820662 \n", - "coef_departure_constants_evening -5.258795 -5.230288 \n", - "coef_departure_constants_late -21.447622 -11.886047 \n", - "coef_departure_constants_midday_1 -3.279864 -2.985739 \n", - "coef_departure_constants_midday_2 -3.750548 -3.628435 \n", - "coef_departure_constants_pm_peak -3.093167 -3.102505 \n", - "coef_duration_constants_0_to_2_hours -1.372110 -1.409956 \n", - "coef_duration_constants_10_hours -0.876448 -0.904789 \n", - "coef_duration_constants_11_hours -1.127264 -1.521163 \n", - "coef_duration_constants_12_to_13_hours -2.668346 -2.418489 \n", - "coef_duration_constants_14_to_18_hours -2.675974 -2.503137 \n", - "coef_duration_constants_3_to_4_hours -0.552200 -0.745893 \n", - "coef_duration_constants_5_to_6_hours -0.532627 -0.567637 \n", + "coef_departure_constants_am_peak_3 -0.100582 -0.100582 \n", + "coef_departure_constants_am_peak_4 -2.142432 -2.142432 \n", + "coef_departure_constants_early -3.850945 -3.850945 \n", + "coef_departure_constants_evening -5.546826 -5.546826 \n", + "coef_departure_constants_late -10.890722 -10.890722 \n", + "coef_departure_constants_midday_1 -3.124481 -3.124481 \n", + "coef_departure_constants_midday_2 -3.861525 -3.861525 \n", + "coef_departure_constants_pm_peak -3.281532 -3.281532 \n", + "coef_duration_constants_0_to_2_hours -1.318085 -1.318085 \n", + "coef_duration_constants_10_hours -0.914359 -0.914359 \n", + "coef_duration_constants_11_hours -1.643692 -1.643692 \n", + "coef_duration_constants_12_to_13_hours -2.528269 -2.528269 \n", + "coef_duration_constants_14_to_18_hours -2.541672 -2.541672 \n", + "coef_duration_constants_3_to_4_hours -0.680239 -0.680239 \n", + "coef_duration_constants_5_to_6_hours -0.551126 -0.551126 \n", "coef_duration_constants_7_to_8_hours 0.000000 0.000000 \n", - "coef_duration_constants_9_hours -0.487609 -0.650807 \n", - "coef_first_of_2plus_school_lt_6_hours 0.169055 1.487000 \n", - "coef_first_of_2plus_school_tours_departure -0.333830 -0.300200 \n", - "coef_first_of_2plus_school_tours_duration -0.042558 -0.159300 \n", + "coef_duration_constants_9_hours -0.664353 -0.664353 \n", + "coef_first_of_2plus_school_lt_6_hours 1.768123 1.768123 \n", + "coef_first_of_2plus_school_tours_departure -0.277161 -0.277161 \n", + "coef_first_of_2plus_school_tours_duration -0.077846 -0.077846 \n", "coef_ft_worker_departure 0.397100 0.397100 \n", "coef_ft_worker_duration -0.190800 -0.190800 \n", - "coef_hh_income_early_departure -13.757852 -0.883700 \n", - "coef_hh_income_late_arrival 0.101726 -0.353300 \n", - "coef_mode_choice_logsum 0.056410 2.127000 \n", + "coef_hh_income_early_departure -0.643531 -0.643531 \n", + "coef_hh_income_late_arrival -0.123912 -0.123912 \n", + "coef_mode_choice_logsum 1.403530 1.403530 \n", "coef_non_worker_departure 0.553900 0.553900 \n", - "coef_previous_tour_begins_this_arrival_hour -10.370632 -1.102000 \n", - "coef_previous_tour_ends_this_departure_hour 0.298551 -0.599500 \n", - "coef_remaining_work_school_tours_to_be_schedule... -25.000000 -16.670000 \n", - "coef_roundtrip_auto_time_to_work 0.005137 0.003195 \n", - "coef_school_plus_work_tours_by_student_lt_6_hours -2.483313 1.730000 \n", - "coef_school_plus_work_tours_by_worker_lt_6_hours -2.071313 2.142000 \n", - "coef_student_driver_duration -0.003958 0.034640 \n", - "coef_subsequent_2plus_school_tours_duration -0.188299 -0.233800 \n", - "coef_subsequent_of_2plus_school_lt_6_hours 25.000000 2.142000 \n", + "coef_previous_tour_begins_this_arrival_hour 1.748525 1.748525 \n", + "coef_previous_tour_ends_this_departure_hour -1.454921 -1.454921 \n", + "coef_remaining_work_school_tours_to_be_schedule... -16.666935 -16.666935 \n", + "coef_roundtrip_auto_time_to_work 0.002946 0.002946 \n", + "coef_school_plus_work_tours_by_student_lt_6_hours 1.805060 1.805060 \n", + "coef_school_plus_work_tours_by_worker_lt_6_hours 2.217060 2.217060 \n", + "coef_student_driver_duration 0.021414 0.021414 \n", + "coef_subsequent_2plus_school_tours_duration -0.309377 -0.309377 \n", + "coef_subsequent_of_2plus_school_lt_6_hours 1.522961 1.522961 \n", "coef_subsequent_tour_must_start_after_previous_... -100.000000 -100.000000 \n", - "coef_univ_departure 0.234367 0.280000 \n", - "coef_univ_duration -0.409132 -0.290700 \n", + "coef_univ_departure 0.281763 0.281763 \n", + "coef_univ_duration -0.287541 -0.287541 \n", "\n", - " nullvalue minimum \\\n", - "coef_adjacent_window_exists_after_this_arrival_... 0.0 -25.0 \n", - "coef_adjacent_window_exists_after_this_arrival_... 0.0 -25.0 \n", - "coef_adjacent_window_exists_before_this_departu... 0.0 -25.0 \n", - "coef_adjacent_window_exists_before_this_departu... 0.0 -25.0 \n", - "coef_all_adults_ft_worker_duration 0.0 -25.0 \n", - "coef_arrival_constants_am_peak 0.0 -25.0 \n", - "coef_arrival_constants_early 0.0 -25.0 \n", - "coef_arrival_constants_evening 0.0 -25.0 \n", - "coef_arrival_constants_late 0.0 -25.0 \n", - "coef_arrival_constants_midday_1 0.0 -25.0 \n", - "coef_arrival_constants_midday_2 0.0 -25.0 \n", - "coef_arrival_constants_pm_peak_1 0.0 -25.0 \n", - "coef_arrival_constants_pm_peak_2 0.0 -25.0 \n", - "coef_arrival_constants_pm_peak_3 0.0 -25.0 \n", - "coef_arrival_constants_pm_peak_4 0.0 -25.0 \n", - "coef_departure_constants_am_peak_1 0.0 -25.0 \n", - "coef_departure_constants_am_peak_2 0.0 -25.0 \n", - "coef_departure_constants_am_peak_3 0.0 -25.0 \n", - "coef_departure_constants_am_peak_4 0.0 -25.0 \n", - "coef_departure_constants_early 0.0 -25.0 \n", - "coef_departure_constants_evening 0.0 -25.0 \n", - "coef_departure_constants_late 0.0 -25.0 \n", - "coef_departure_constants_midday_1 0.0 -25.0 \n", - "coef_departure_constants_midday_2 0.0 -25.0 \n", - "coef_departure_constants_pm_peak 0.0 -25.0 \n", - "coef_duration_constants_0_to_2_hours 0.0 -25.0 \n", - "coef_duration_constants_10_hours 0.0 -25.0 \n", - "coef_duration_constants_11_hours 0.0 -25.0 \n", - "coef_duration_constants_12_to_13_hours 0.0 -25.0 \n", - "coef_duration_constants_14_to_18_hours 0.0 -25.0 \n", - "coef_duration_constants_3_to_4_hours 0.0 -25.0 \n", - "coef_duration_constants_5_to_6_hours 0.0 -25.0 \n", - "coef_duration_constants_7_to_8_hours 0.0 -25.0 \n", - "coef_duration_constants_9_hours 0.0 -25.0 \n", - "coef_first_of_2plus_school_lt_6_hours 0.0 -25.0 \n", - "coef_first_of_2plus_school_tours_departure 0.0 -25.0 \n", - "coef_first_of_2plus_school_tours_duration 0.0 -25.0 \n", - "coef_ft_worker_departure 0.0 -25.0 \n", - "coef_ft_worker_duration 0.0 -25.0 \n", - "coef_hh_income_early_departure 0.0 -25.0 \n", - "coef_hh_income_late_arrival 0.0 -25.0 \n", - "coef_mode_choice_logsum 0.0 -25.0 \n", - "coef_non_worker_departure 0.0 -25.0 \n", - "coef_previous_tour_begins_this_arrival_hour 0.0 -25.0 \n", - "coef_previous_tour_ends_this_departure_hour 0.0 -25.0 \n", - "coef_remaining_work_school_tours_to_be_schedule... 0.0 -25.0 \n", - "coef_roundtrip_auto_time_to_work 0.0 -25.0 \n", - "coef_school_plus_work_tours_by_student_lt_6_hours 0.0 -25.0 \n", - "coef_school_plus_work_tours_by_worker_lt_6_hours 0.0 -25.0 \n", - "coef_student_driver_duration 0.0 -25.0 \n", - "coef_subsequent_2plus_school_tours_duration 0.0 -25.0 \n", - "coef_subsequent_of_2plus_school_lt_6_hours 0.0 -25.0 \n", - "coef_subsequent_tour_must_start_after_previous_... 0.0 -25.0 \n", - "coef_univ_departure 0.0 -25.0 \n", - "coef_univ_duration 0.0 -25.0 \n", + " initvalue minimum \\\n", + "param_name \n", + "coef_adjacent_window_exists_after_this_arrival_... -0.003049 -25.0 \n", + "coef_adjacent_window_exists_after_this_arrival_... -0.527100 -25.0 \n", + "coef_adjacent_window_exists_before_this_departu... 0.089750 -25.0 \n", + "coef_adjacent_window_exists_before_this_departu... -0.440000 -25.0 \n", + "coef_all_adults_ft_worker_duration 0.109300 -25.0 \n", + "coef_arrival_constants_am_peak -2.428718 -25.0 \n", + "coef_arrival_constants_early -2.428718 -25.0 \n", + "coef_arrival_constants_evening -0.870147 -25.0 \n", + "coef_arrival_constants_late -1.752000 -25.0 \n", + "coef_arrival_constants_midday_1 -1.237909 -25.0 \n", + "coef_arrival_constants_midday_2 -0.539769 -25.0 \n", + "coef_arrival_constants_pm_peak_1 0.000000 0.0 \n", + "coef_arrival_constants_pm_peak_2 -0.389169 -25.0 \n", + "coef_arrival_constants_pm_peak_3 -0.198120 -25.0 \n", + "coef_arrival_constants_pm_peak_4 -0.253625 -25.0 \n", + "coef_departure_constants_am_peak_1 -1.617644 -25.0 \n", + "coef_departure_constants_am_peak_2 0.000000 0.0 \n", + "coef_departure_constants_am_peak_3 -0.073827 -25.0 \n", + "coef_departure_constants_am_peak_4 -2.080571 -25.0 \n", + "coef_departure_constants_early -3.820662 -25.0 \n", + "coef_departure_constants_evening -5.230288 -25.0 \n", + "coef_departure_constants_late -11.886047 -25.0 \n", + "coef_departure_constants_midday_1 -2.985739 -25.0 \n", + "coef_departure_constants_midday_2 -3.628435 -25.0 \n", + "coef_departure_constants_pm_peak -3.102505 -25.0 \n", + "coef_duration_constants_0_to_2_hours -1.409956 -25.0 \n", + "coef_duration_constants_10_hours -0.904789 -25.0 \n", + "coef_duration_constants_11_hours -1.521163 -25.0 \n", + "coef_duration_constants_12_to_13_hours -2.418489 -25.0 \n", + "coef_duration_constants_14_to_18_hours -2.503137 -25.0 \n", + "coef_duration_constants_3_to_4_hours -0.745893 -25.0 \n", + "coef_duration_constants_5_to_6_hours -0.567637 -25.0 \n", + "coef_duration_constants_7_to_8_hours 0.000000 0.0 \n", + "coef_duration_constants_9_hours -0.650807 -25.0 \n", + "coef_first_of_2plus_school_lt_6_hours 1.487000 -25.0 \n", + "coef_first_of_2plus_school_tours_departure -0.300200 -25.0 \n", + "coef_first_of_2plus_school_tours_duration -0.159300 -25.0 \n", + "coef_ft_worker_departure 0.397100 -25.0 \n", + "coef_ft_worker_duration -0.190800 -25.0 \n", + "coef_hh_income_early_departure -0.883700 -25.0 \n", + "coef_hh_income_late_arrival -0.353300 -25.0 \n", + "coef_mode_choice_logsum 2.127000 -25.0 \n", + "coef_non_worker_departure 0.553900 -25.0 \n", + "coef_previous_tour_begins_this_arrival_hour -1.102000 -25.0 \n", + "coef_previous_tour_ends_this_departure_hour -0.599500 -25.0 \n", + "coef_remaining_work_school_tours_to_be_schedule... -16.670000 -25.0 \n", + "coef_roundtrip_auto_time_to_work 0.003195 -25.0 \n", + "coef_school_plus_work_tours_by_student_lt_6_hours 1.730000 -25.0 \n", + "coef_school_plus_work_tours_by_worker_lt_6_hours 2.142000 -25.0 \n", + "coef_student_driver_duration 0.034640 -25.0 \n", + "coef_subsequent_2plus_school_tours_duration -0.233800 -25.0 \n", + "coef_subsequent_of_2plus_school_lt_6_hours 2.142000 -25.0 \n", + "coef_subsequent_tour_must_start_after_previous_... -100.000000 -100.0 \n", + "coef_univ_departure 0.280000 -25.0 \n", + "coef_univ_duration -0.290700 -25.0 \n", "\n", - " maximum holdfast note \\\n", - "coef_adjacent_window_exists_after_this_arrival_... 25.0 0 \n", - "coef_adjacent_window_exists_after_this_arrival_... 25.0 0 \n", - "coef_adjacent_window_exists_before_this_departu... 25.0 0 \n", - "coef_adjacent_window_exists_before_this_departu... 25.0 0 \n", - "coef_all_adults_ft_worker_duration 25.0 0 \n", - "coef_arrival_constants_am_peak 25.0 0 \n", - "coef_arrival_constants_early 25.0 0 \n", - "coef_arrival_constants_evening 25.0 0 \n", - "coef_arrival_constants_late 25.0 0 \n", - "coef_arrival_constants_midday_1 25.0 0 \n", - "coef_arrival_constants_midday_2 25.0 0 \n", - "coef_arrival_constants_pm_peak_1 25.0 1 \n", - "coef_arrival_constants_pm_peak_2 25.0 0 \n", - "coef_arrival_constants_pm_peak_3 25.0 0 \n", - "coef_arrival_constants_pm_peak_4 25.0 0 \n", - "coef_departure_constants_am_peak_1 25.0 0 \n", - "coef_departure_constants_am_peak_2 25.0 1 \n", - "coef_departure_constants_am_peak_3 25.0 0 \n", - "coef_departure_constants_am_peak_4 25.0 0 \n", - "coef_departure_constants_early 25.0 0 \n", - "coef_departure_constants_evening 25.0 0 \n", - "coef_departure_constants_late 25.0 0 \n", - "coef_departure_constants_midday_1 25.0 0 \n", - "coef_departure_constants_midday_2 25.0 0 \n", - "coef_departure_constants_pm_peak 25.0 0 \n", - "coef_duration_constants_0_to_2_hours 25.0 0 \n", - "coef_duration_constants_10_hours 25.0 0 \n", - "coef_duration_constants_11_hours 25.0 0 \n", - "coef_duration_constants_12_to_13_hours 25.0 0 \n", - "coef_duration_constants_14_to_18_hours 25.0 0 \n", - "coef_duration_constants_3_to_4_hours 25.0 0 \n", - "coef_duration_constants_5_to_6_hours 25.0 0 \n", - "coef_duration_constants_7_to_8_hours 25.0 1 \n", - "coef_duration_constants_9_hours 25.0 0 \n", - "coef_first_of_2plus_school_lt_6_hours 25.0 0 \n", - "coef_first_of_2plus_school_tours_departure 25.0 0 \n", - "coef_first_of_2plus_school_tours_duration 25.0 0 \n", - "coef_ft_worker_departure 25.0 0 \n", - "coef_ft_worker_duration 25.0 0 \n", - "coef_hh_income_early_departure 25.0 0 \n", - "coef_hh_income_late_arrival 25.0 0 \n", - "coef_mode_choice_logsum 25.0 0 \n", - "coef_non_worker_departure 25.0 0 \n", - "coef_previous_tour_begins_this_arrival_hour 25.0 0 \n", - "coef_previous_tour_ends_this_departure_hour 25.0 0 \n", - "coef_remaining_work_school_tours_to_be_schedule... 25.0 0 \n", - "coef_roundtrip_auto_time_to_work 25.0 0 \n", - "coef_school_plus_work_tours_by_student_lt_6_hours 25.0 0 \n", - "coef_school_plus_work_tours_by_worker_lt_6_hours 25.0 0 \n", - "coef_student_driver_duration 25.0 0 \n", - "coef_subsequent_2plus_school_tours_duration 25.0 0 \n", - "coef_subsequent_of_2plus_school_lt_6_hours 25.0 0 \n", - "coef_subsequent_tour_must_start_after_previous_... 25.0 1 \n", - "coef_univ_departure 25.0 0 \n", - "coef_univ_duration 25.0 0 \n", + " maximum nullvalue \\\n", + "param_name \n", + "coef_adjacent_window_exists_after_this_arrival_... 25.0 0.0 \n", + "coef_adjacent_window_exists_after_this_arrival_... 25.0 0.0 \n", + "coef_adjacent_window_exists_before_this_departu... 25.0 0.0 \n", + "coef_adjacent_window_exists_before_this_departu... 25.0 0.0 \n", + "coef_all_adults_ft_worker_duration 25.0 0.0 \n", + "coef_arrival_constants_am_peak 25.0 0.0 \n", + "coef_arrival_constants_early 25.0 0.0 \n", + "coef_arrival_constants_evening 25.0 0.0 \n", + "coef_arrival_constants_late 25.0 0.0 \n", + "coef_arrival_constants_midday_1 25.0 0.0 \n", + "coef_arrival_constants_midday_2 25.0 0.0 \n", + "coef_arrival_constants_pm_peak_1 0.0 0.0 \n", + "coef_arrival_constants_pm_peak_2 25.0 0.0 \n", + "coef_arrival_constants_pm_peak_3 25.0 0.0 \n", + "coef_arrival_constants_pm_peak_4 25.0 0.0 \n", + "coef_departure_constants_am_peak_1 25.0 0.0 \n", + "coef_departure_constants_am_peak_2 0.0 0.0 \n", + "coef_departure_constants_am_peak_3 25.0 0.0 \n", + "coef_departure_constants_am_peak_4 25.0 0.0 \n", + "coef_departure_constants_early 25.0 0.0 \n", + "coef_departure_constants_evening 25.0 0.0 \n", + "coef_departure_constants_late 25.0 0.0 \n", + "coef_departure_constants_midday_1 25.0 0.0 \n", + "coef_departure_constants_midday_2 25.0 0.0 \n", + "coef_departure_constants_pm_peak 25.0 0.0 \n", + "coef_duration_constants_0_to_2_hours 25.0 0.0 \n", + "coef_duration_constants_10_hours 25.0 0.0 \n", + "coef_duration_constants_11_hours 25.0 0.0 \n", + "coef_duration_constants_12_to_13_hours 25.0 0.0 \n", + "coef_duration_constants_14_to_18_hours 25.0 0.0 \n", + "coef_duration_constants_3_to_4_hours 25.0 0.0 \n", + "coef_duration_constants_5_to_6_hours 25.0 0.0 \n", + "coef_duration_constants_7_to_8_hours 0.0 0.0 \n", + "coef_duration_constants_9_hours 25.0 0.0 \n", + "coef_first_of_2plus_school_lt_6_hours 25.0 0.0 \n", + "coef_first_of_2plus_school_tours_departure 25.0 0.0 \n", + "coef_first_of_2plus_school_tours_duration 25.0 0.0 \n", + "coef_ft_worker_departure 25.0 0.0 \n", + "coef_ft_worker_duration 25.0 0.0 \n", + "coef_hh_income_early_departure 25.0 0.0 \n", + "coef_hh_income_late_arrival 25.0 0.0 \n", + "coef_mode_choice_logsum 25.0 0.0 \n", + "coef_non_worker_departure 25.0 0.0 \n", + "coef_previous_tour_begins_this_arrival_hour 25.0 0.0 \n", + "coef_previous_tour_ends_this_departure_hour 25.0 0.0 \n", + "coef_remaining_work_school_tours_to_be_schedule... 25.0 0.0 \n", + "coef_roundtrip_auto_time_to_work 25.0 0.0 \n", + "coef_school_plus_work_tours_by_student_lt_6_hours 25.0 0.0 \n", + "coef_school_plus_work_tours_by_worker_lt_6_hours 25.0 0.0 \n", + "coef_student_driver_duration 25.0 0.0 \n", + "coef_subsequent_2plus_school_tours_duration 25.0 0.0 \n", + "coef_subsequent_of_2plus_school_lt_6_hours 25.0 0.0 \n", + "coef_subsequent_tour_must_start_after_previous_... -100.0 0.0 \n", + "coef_univ_departure 25.0 0.0 \n", + "coef_univ_duration 25.0 0.0 \n", "\n", - " best \n", - "coef_adjacent_window_exists_after_this_arrival_... -0.414229 \n", - "coef_adjacent_window_exists_after_this_arrival_... -0.640186 \n", - "coef_adjacent_window_exists_before_this_departu... 1.656920 \n", - "coef_adjacent_window_exists_before_this_departu... 0.225722 \n", - "coef_all_adults_ft_worker_duration 0.052336 \n", - "coef_arrival_constants_am_peak -2.239162 \n", - "coef_arrival_constants_early -1.065980 \n", - "coef_arrival_constants_evening -1.033329 \n", - "coef_arrival_constants_late -1.315910 \n", - "coef_arrival_constants_midday_1 -1.302330 \n", - "coef_arrival_constants_midday_2 -0.554673 \n", - "coef_arrival_constants_pm_peak_1 0.000000 \n", - "coef_arrival_constants_pm_peak_2 -0.441387 \n", - "coef_arrival_constants_pm_peak_3 -0.281247 \n", - "coef_arrival_constants_pm_peak_4 -0.370368 \n", - "coef_departure_constants_am_peak_1 -1.882694 \n", - "coef_departure_constants_am_peak_2 0.000000 \n", - "coef_departure_constants_am_peak_3 -0.183985 \n", - "coef_departure_constants_am_peak_4 -2.016403 \n", - "coef_departure_constants_early -3.636770 \n", - "coef_departure_constants_evening -5.258795 \n", - "coef_departure_constants_late -21.447622 \n", - "coef_departure_constants_midday_1 -3.279864 \n", - "coef_departure_constants_midday_2 -3.750548 \n", - "coef_departure_constants_pm_peak -3.093167 \n", - "coef_duration_constants_0_to_2_hours -1.372110 \n", - "coef_duration_constants_10_hours -0.876448 \n", - "coef_duration_constants_11_hours -1.127264 \n", - "coef_duration_constants_12_to_13_hours -2.668346 \n", - "coef_duration_constants_14_to_18_hours -2.675974 \n", - "coef_duration_constants_3_to_4_hours -0.552200 \n", - "coef_duration_constants_5_to_6_hours -0.532627 \n", - "coef_duration_constants_7_to_8_hours 0.000000 \n", - "coef_duration_constants_9_hours -0.487609 \n", - "coef_first_of_2plus_school_lt_6_hours 0.169055 \n", - "coef_first_of_2plus_school_tours_departure -0.333830 \n", - "coef_first_of_2plus_school_tours_duration -0.042558 \n", - "coef_ft_worker_departure 0.397100 \n", - "coef_ft_worker_duration -0.190800 \n", - "coef_hh_income_early_departure -13.757852 \n", - "coef_hh_income_late_arrival 0.101726 \n", - "coef_mode_choice_logsum 0.056410 \n", - "coef_non_worker_departure 0.553900 \n", - "coef_previous_tour_begins_this_arrival_hour -10.370632 \n", - "coef_previous_tour_ends_this_departure_hour 0.298551 \n", - "coef_remaining_work_school_tours_to_be_schedule... -25.000000 \n", - "coef_roundtrip_auto_time_to_work 0.005137 \n", - "coef_school_plus_work_tours_by_student_lt_6_hours -2.483313 \n", - "coef_school_plus_work_tours_by_worker_lt_6_hours -2.071313 \n", - "coef_student_driver_duration -0.003958 \n", - "coef_subsequent_2plus_school_tours_duration -0.188299 \n", - "coef_subsequent_of_2plus_school_lt_6_hours 25.000000 \n", - "coef_subsequent_tour_must_start_after_previous_... -100.000000 \n", - "coef_univ_departure 0.234367 \n", - "coef_univ_duration -0.409132 " + " holdfast \n", + "param_name \n", + "coef_adjacent_window_exists_after_this_arrival_... 0 \n", + "coef_adjacent_window_exists_after_this_arrival_... 0 \n", + "coef_adjacent_window_exists_before_this_departu... 0 \n", + "coef_adjacent_window_exists_before_this_departu... 0 \n", + "coef_all_adults_ft_worker_duration 0 \n", + "coef_arrival_constants_am_peak 0 \n", + "coef_arrival_constants_early 0 \n", + "coef_arrival_constants_evening 0 \n", + "coef_arrival_constants_late 0 \n", + "coef_arrival_constants_midday_1 0 \n", + "coef_arrival_constants_midday_2 0 \n", + "coef_arrival_constants_pm_peak_1 1 \n", + "coef_arrival_constants_pm_peak_2 0 \n", + "coef_arrival_constants_pm_peak_3 0 \n", + "coef_arrival_constants_pm_peak_4 0 \n", + "coef_departure_constants_am_peak_1 0 \n", + "coef_departure_constants_am_peak_2 1 \n", + "coef_departure_constants_am_peak_3 0 \n", + "coef_departure_constants_am_peak_4 0 \n", + "coef_departure_constants_early 0 \n", + "coef_departure_constants_evening 0 \n", + "coef_departure_constants_late 0 \n", + "coef_departure_constants_midday_1 0 \n", + "coef_departure_constants_midday_2 0 \n", + "coef_departure_constants_pm_peak 0 \n", + "coef_duration_constants_0_to_2_hours 0 \n", + "coef_duration_constants_10_hours 0 \n", + "coef_duration_constants_11_hours 0 \n", + "coef_duration_constants_12_to_13_hours 0 \n", + "coef_duration_constants_14_to_18_hours 0 \n", + "coef_duration_constants_3_to_4_hours 0 \n", + "coef_duration_constants_5_to_6_hours 0 \n", + "coef_duration_constants_7_to_8_hours 1 \n", + "coef_duration_constants_9_hours 0 \n", + "coef_first_of_2plus_school_lt_6_hours 0 \n", + "coef_first_of_2plus_school_tours_departure 0 \n", + "coef_first_of_2plus_school_tours_duration 0 \n", + "coef_ft_worker_departure 0 \n", + "coef_ft_worker_duration 0 \n", + "coef_hh_income_early_departure 0 \n", + "coef_hh_income_late_arrival 0 \n", + "coef_mode_choice_logsum 0 \n", + "coef_non_worker_departure 0 \n", + "coef_previous_tour_begins_this_arrival_hour 0 \n", + "coef_previous_tour_ends_this_departure_hour 0 \n", + "coef_remaining_work_school_tours_to_be_schedule... 0 \n", + "coef_roundtrip_auto_time_to_work 0 \n", + "coef_school_plus_work_tours_by_student_lt_6_hours 0 \n", + "coef_school_plus_work_tours_by_worker_lt_6_hours 0 \n", + "coef_student_driver_duration 0 \n", + "coef_subsequent_2plus_school_tours_duration 0 \n", + "coef_subsequent_of_2plus_school_lt_6_hours 0 \n", + "coef_subsequent_tour_must_start_after_previous_... 1 \n", + "coef_univ_departure 0 \n", + "coef_univ_duration 0 " ] }, "metadata": {}, @@ -2907,10 +3061,8 @@ "name": "stderr", "output_type": "stream", "text": [ - ":1: PossibleOverspecification: WARNING: Model is possibly over-specified (hessian is nearly singular).\n", - " model.estimate()\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.3990405079720497e-24 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n" + "/Users/jpn/Git/est-mode/larch/src/larch/model/jaxmodel.py:1156: PossibleOverspecification: Model is possibly over-specified (hessian is nearly singular).\n", + " self.calculate_parameter_covariance()\n" ] }, { @@ -2926,47 +3078,47 @@ " \n", " \n", " coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction\n", - " -0.414229\n", + " 0.232285\n", " \n", " \n", " coef_adjacent_window_exists_after_this_arrival_hour_second_plus_tour_interaction\n", - " -0.640186\n", + " -1.201676\n", " \n", " \n", " coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction\n", - " 1.656920\n", + " -0.419250\n", " \n", " \n", " coef_adjacent_window_exists_before_this_departure_hour_second_plus_tour_interaction\n", - " 0.225722\n", + " -0.760747\n", " \n", " \n", " coef_all_adults_ft_worker_duration\n", - " 0.052336\n", + " 0.079713\n", " \n", " \n", " coef_arrival_constants_am_peak\n", - " -2.239162\n", + " -2.595385\n", " \n", " \n", " coef_arrival_constants_early\n", - " -1.065980\n", + " -2.446580\n", " \n", " \n", " coef_arrival_constants_evening\n", - " -1.033329\n", + " -0.707272\n", " \n", " \n", " coef_arrival_constants_late\n", - " -1.315910\n", + " -1.639520\n", " \n", " \n", " coef_arrival_constants_midday_1\n", - " -1.302330\n", + " -1.267988\n", " \n", " \n", " coef_arrival_constants_midday_2\n", - " -0.554673\n", + " -0.523484\n", " \n", " \n", " coef_arrival_constants_pm_peak_1\n", @@ -2974,19 +3126,19 @@ " \n", " \n", " coef_arrival_constants_pm_peak_2\n", - " -0.441387\n", + " -0.360268\n", " \n", " \n", " coef_arrival_constants_pm_peak_3\n", - " -0.281247\n", + " -0.096426\n", " \n", " \n", " coef_arrival_constants_pm_peak_4\n", - " -0.370368\n", + " -0.127905\n", " \n", " \n", " coef_departure_constants_am_peak_1\n", - " -1.882694\n", + " -1.606835\n", " \n", " \n", " coef_departure_constants_am_peak_2\n", @@ -2994,63 +3146,63 @@ " \n", " \n", " coef_departure_constants_am_peak_3\n", - " -0.183985\n", + " -0.100582\n", " \n", " \n", " coef_departure_constants_am_peak_4\n", - " -2.016403\n", + " -2.142432\n", " \n", " \n", " coef_departure_constants_early\n", - " -3.636770\n", + " -3.850945\n", " \n", " \n", " coef_departure_constants_evening\n", - " -5.258795\n", + " -5.546826\n", " \n", " \n", " coef_departure_constants_late\n", - " -21.447622\n", + " -10.890722\n", " \n", " \n", " coef_departure_constants_midday_1\n", - " -3.279864\n", + " -3.124481\n", " \n", " \n", " coef_departure_constants_midday_2\n", - " -3.750548\n", + " -3.861525\n", " \n", " \n", " coef_departure_constants_pm_peak\n", - " -3.093167\n", + " -3.281532\n", " \n", " \n", " coef_duration_constants_0_to_2_hours\n", - " -1.372110\n", + " -1.318085\n", " \n", " \n", " coef_duration_constants_10_hours\n", - " -0.876448\n", + " -0.914359\n", " \n", " \n", " coef_duration_constants_11_hours\n", - " -1.127264\n", + " -1.643692\n", " \n", " \n", " coef_duration_constants_12_to_13_hours\n", - " -2.668346\n", + " -2.528269\n", " \n", " \n", " coef_duration_constants_14_to_18_hours\n", - " -2.675974\n", + " -2.541672\n", " \n", " \n", " coef_duration_constants_3_to_4_hours\n", - " -0.552200\n", + " -0.680239\n", " \n", " \n", " coef_duration_constants_5_to_6_hours\n", - " -0.532627\n", + " -0.551126\n", " \n", " \n", " coef_duration_constants_7_to_8_hours\n", @@ -3058,19 +3210,19 @@ " \n", " \n", " coef_duration_constants_9_hours\n", - " -0.487609\n", + " -0.664353\n", " \n", " \n", " coef_first_of_2plus_school_lt_6_hours\n", - " 0.169055\n", + " 1.768123\n", " \n", " \n", " coef_first_of_2plus_school_tours_departure\n", - " -0.333830\n", + " -0.277161\n", " \n", " \n", " coef_first_of_2plus_school_tours_duration\n", - " -0.042558\n", + " -0.077846\n", " \n", " \n", " coef_ft_worker_departure\n", @@ -3082,15 +3234,15 @@ " \n", " \n", " coef_hh_income_early_departure\n", - " -13.757852\n", + " -0.643531\n", " \n", " \n", " coef_hh_income_late_arrival\n", - " 0.101726\n", + " -0.123912\n", " \n", " \n", " coef_mode_choice_logsum\n", - " 0.056410\n", + " 1.403530\n", " \n", " \n", " coef_non_worker_departure\n", @@ -3098,54 +3250,54 @@ " \n", " \n", " coef_previous_tour_begins_this_arrival_hour\n", - " -10.370632\n", + " 1.748525\n", " \n", " \n", " coef_previous_tour_ends_this_departure_hour\n", - " 0.298551\n", + " -1.454921\n", " \n", " \n", " coef_remaining_work_school_tours_to_be_scheduled_div_number_of_unscheduled_hours\n", - " -25.000000\n", + " -16.666935\n", " \n", " \n", " coef_roundtrip_auto_time_to_work\n", - " 0.005137\n", + " 0.002946\n", " \n", " \n", " coef_school_plus_work_tours_by_student_lt_6_hours\n", - " -2.483313\n", + " 1.805060\n", " \n", " \n", " coef_school_plus_work_tours_by_worker_lt_6_hours\n", - " -2.071313\n", + " 2.217060\n", " \n", " \n", " coef_student_driver_duration\n", - " -0.003958\n", + " 0.021414\n", " \n", " \n", " coef_subsequent_2plus_school_tours_duration\n", - " -0.188299\n", + " -0.309377\n", " \n", " \n", " coef_subsequent_of_2plus_school_lt_6_hours\n", - " 25.000000\n", + " 1.522961\n", " \n", " \n", " coef_subsequent_tour_must_start_after_previous_tour_ends\n", - " -25.000000\n", + " -100.000000\n", " \n", " \n", " coef_univ_departure\n", - " 0.234367\n", + " 0.281763\n", " \n", " \n", " coef_univ_duration\n", - " -0.409132\n", + " -0.287541\n", " \n", " \n", - "loglike-2331.7420221780226d_loglike\n", + "
logloss3.8441737168559693d_logloss\n", " \n", " \n", " \n", @@ -3155,47 +3307,47 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3203,19 +3355,19 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3223,63 +3375,63 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3287,19 +3439,19 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3311,15 +3463,15 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3327,39 +3479,39 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3367,149 +3519,149 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - "
coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction-1.569000e-041.678936e-05
coef_adjacent_window_exists_after_this_arrival_hour_second_plus_tour_interaction2.469873e-05-4.551660e-05
coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction-1.376329e-041.846962e-05
coef_adjacent_window_exists_before_this_departure_hour_second_plus_tour_interaction-1.199309e-04-1.145647e-04
coef_all_adults_ft_worker_duration-2.382589e-04-8.371558e-05
coef_arrival_constants_am_peak1.105861e-042.196925e-04
coef_arrival_constants_early-7.161434e-05-5.719292e-06
coef_arrival_constants_evening-3.213301e-04-8.835678e-05
coef_arrival_constants_late-3.685726e-051.013090e-04
coef_arrival_constants_midday_12.405910e-047.833025e-05
coef_arrival_constants_midday_23.974766e-04-1.965074e-04
coef_arrival_constants_pm_peak_1
coef_arrival_constants_pm_peak_2-3.784033e-04-9.685367e-05
coef_arrival_constants_pm_peak_3-2.802883e-04-9.087295e-05
coef_arrival_constants_pm_peak_41.590313e-042.740145e-05
coef_departure_constants_am_peak_13.893384e-051.513237e-04
coef_departure_constants_am_peak_2
coef_departure_constants_am_peak_3-1.076955e-04-8.937296e-06
coef_departure_constants_am_peak_4-1.023082e-04-8.822207e-05
coef_departure_constants_early-1.964617e-056.575707e-05
coef_departure_constants_evening9.016158e-05-4.373200e-05
coef_departure_constants_late-6.465407e-077.294452e-05
coef_departure_constants_midday_1-1.539484e-05-7.045255e-05
coef_departure_constants_midday_27.340411e-059.783210e-05
coef_departure_constants_pm_peak-3.023675e-041.854008e-04
coef_duration_constants_0_to_2_hours-1.095813e-04-1.017742e-05
coef_duration_constants_10_hours-4.107214e-05-1.010013e-04
coef_duration_constants_11_hours1.853670e-043.540305e-05
coef_duration_constants_12_to_13_hours4.561763e-053.622247e-06
coef_duration_constants_14_to_18_hours1.362278e-041.457916e-04
coef_duration_constants_3_to_4_hours3.779389e-06-1.500782e-04
coef_duration_constants_5_to_6_hours1.389604e-042.054373e-04
coef_duration_constants_7_to_8_hours
coef_duration_constants_9_hours-4.131255e-041.173908e-04
coef_first_of_2plus_school_lt_6_hours2.433801e-056.625071e-05
coef_first_of_2plus_school_tours_departure-1.088730e-044.904242e-05
coef_first_of_2plus_school_tours_duration-1.351925e-045.848347e-05
coef_ft_worker_departure
coef_hh_income_early_departure-1.184539e-06-5.079513e-05
coef_hh_income_late_arrival8.674395e-05-7.624692e-05
coef_mode_choice_logsum7.755139e-04-2.256830e-05
coef_non_worker_departure
coef_previous_tour_begins_this_arrival_hour-7.619359e-07-8.260618e-06
coef_previous_tour_ends_this_departure_hour-2.114195e-05-4.098700e-05
coef_remaining_work_school_tours_to_be_scheduled_div_number_of_unscheduled_hours-1.863986e-023.894311e-07
coef_roundtrip_auto_time_to_work-2.056667e-035.433902e-05
coef_school_plus_work_tours_by_student_lt_6_hours2.636310e-068.778429e-06
coef_school_plus_work_tours_by_worker_lt_6_hours2.636310e-068.778429e-06
coef_student_driver_duration4.065449e-04-5.008566e-05
coef_subsequent_2plus_school_tours_duration6.239050e-055.111004e-05
coef_subsequent_of_2plus_school_lt_6_hours2.696315e-069.902870e-05
coef_subsequent_tour_must_start_after_previous_tour_ends
coef_univ_departure-2.420842e-03-7.874285e-05
coef_univ_duration7.174716e-04-1.251813e-05
nit77nfev141njev77status0message'Optimization terminated successfully'successTrueelapsed_time0:00:02.917567method'slsqp'n_cases609iteration_number77logloss3.8288046341182636" + "nit139nfev142njev139status0message'Optimization terminated successfully'successTrueelapsed_time0:00:41.638335method'slsqp'n_cases10352iteration_number139loglike-39483.50824582766" ], "text/plain": [ - "┣ x: coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction -0.414229\n", - "┃ coef_adjacent_window_exists_after_this_arrival_hour_second_plus_tour_interaction -0.640186\n", - "┃ coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction 1.656920\n", - "┃ coef_adjacent_window_exists_before_this_departure_hour_second_plus_tour_interaction 0.225722\n", - "┃ coef_all_adults_ft_worker_duration 0.052336\n", - "┃ coef_arrival_constants_am_peak -2.239162\n", - "┃ coef_arrival_constants_early -1.065980\n", - "┃ coef_arrival_constants_evening -1.033329\n", - "┃ coef_arrival_constants_late -1.315910\n", - "┃ coef_arrival_constants_midday_1 -1.302330\n", - "┃ coef_arrival_constants_midday_2 -0.554673\n", - "┃ coef_arrival_constants_pm_peak_1 0.000000\n", - "┃ coef_arrival_constants_pm_peak_2 -0.441387\n", - "┃ coef_arrival_constants_pm_peak_3 -0.281247\n", - "┃ coef_arrival_constants_pm_peak_4 -0.370368\n", - "┃ coef_departure_constants_am_peak_1 -1.882694\n", - "┃ coef_departure_constants_am_peak_2 0.000000\n", - "┃ coef_departure_constants_am_peak_3 -0.183985\n", - "┃ coef_departure_constants_am_peak_4 -2.016403\n", - "┃ coef_departure_constants_early -3.636770\n", - "┃ coef_departure_constants_evening -5.258795\n", - "┃ coef_departure_constants_late -21.447622\n", - "┃ coef_departure_constants_midday_1 -3.279864\n", - "┃ coef_departure_constants_midday_2 -3.750548\n", - "┃ coef_departure_constants_pm_peak -3.093167\n", - "┃ coef_duration_constants_0_to_2_hours -1.372110\n", - "┃ coef_duration_constants_10_hours -0.876448\n", - "┃ coef_duration_constants_11_hours -1.127264\n", - "┃ coef_duration_constants_12_to_13_hours -2.668346\n", - "┃ coef_duration_constants_14_to_18_hours -2.675974\n", - "┃ coef_duration_constants_3_to_4_hours -0.552200\n", - "┃ coef_duration_constants_5_to_6_hours -0.532627\n", - "┃ coef_duration_constants_7_to_8_hours 0.000000\n", - "┃ coef_duration_constants_9_hours -0.487609\n", - "┃ coef_first_of_2plus_school_lt_6_hours 0.169055\n", - "┃ coef_first_of_2plus_school_tours_departure -0.333830\n", - "┃ coef_first_of_2plus_school_tours_duration -0.042558\n", - "┃ coef_ft_worker_departure 0.397100\n", - "┃ coef_ft_worker_duration -0.190800\n", - "┃ coef_hh_income_early_departure -13.757852\n", - "┃ coef_hh_income_late_arrival 0.101726\n", - "┃ coef_mode_choice_logsum 0.056410\n", - "┃ coef_non_worker_departure 0.553900\n", - "┃ coef_previous_tour_begins_this_arrival_hour -10.370632\n", - "┃ coef_previous_tour_ends_this_departure_hour 0.298551\n", - "┃ coef_remaining_work_school_tours_to_be_scheduled_div_number_of_unscheduled_hours -25.000000\n", - "┃ coef_roundtrip_auto_time_to_work 0.005137\n", - "┃ coef_school_plus_work_tours_by_student_lt_6_hours -2.483313\n", - "┃ coef_school_plus_work_tours_by_worker_lt_6_hours -2.071313\n", - "┃ coef_student_driver_duration -0.003958\n", - "┃ coef_subsequent_2plus_school_tours_duration -0.188299\n", - "┃ coef_subsequent_of_2plus_school_lt_6_hours 25.000000\n", - "┃ coef_subsequent_tour_must_start_after_previous_tour_ends -25.000000\n", - "┃ coef_univ_departure 0.234367\n", - "┃ coef_univ_duration -0.409132\n", + "┣ x: coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction 0.232285\n", + "┃ coef_adjacent_window_exists_after_this_arrival_hour_second_plus_tour_interaction -1.201676\n", + "┃ coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction -0.419250\n", + "┃ coef_adjacent_window_exists_before_this_departure_hour_second_plus_tour_interaction -0.760747\n", + "┃ coef_all_adults_ft_worker_duration 0.079713\n", + "┃ coef_arrival_constants_am_peak -2.595385\n", + "┃ coef_arrival_constants_early -2.446580\n", + "┃ coef_arrival_constants_evening -0.707272\n", + "┃ coef_arrival_constants_late -1.639520\n", + "┃ coef_arrival_constants_midday_1 -1.267988\n", + "┃ coef_arrival_constants_midday_2 -0.523484\n", + "┃ coef_arrival_constants_pm_peak_1 0.000000\n", + "┃ coef_arrival_constants_pm_peak_2 -0.360268\n", + "┃ coef_arrival_constants_pm_peak_3 -0.096426\n", + "┃ coef_arrival_constants_pm_peak_4 -0.127905\n", + "┃ coef_departure_constants_am_peak_1 -1.606835\n", + "┃ coef_departure_constants_am_peak_2 0.000000\n", + "┃ coef_departure_constants_am_peak_3 -0.100582\n", + "┃ coef_departure_constants_am_peak_4 -2.142432\n", + "┃ coef_departure_constants_early -3.850945\n", + "┃ coef_departure_constants_evening -5.546826\n", + "┃ coef_departure_constants_late -10.890722\n", + "┃ coef_departure_constants_midday_1 -3.124481\n", + "┃ coef_departure_constants_midday_2 -3.861525\n", + "┃ coef_departure_constants_pm_peak -3.281532\n", + "┃ coef_duration_constants_0_to_2_hours -1.318085\n", + "┃ coef_duration_constants_10_hours -0.914359\n", + "┃ coef_duration_constants_11_hours -1.643692\n", + "┃ coef_duration_constants_12_to_13_hours -2.528269\n", + "┃ coef_duration_constants_14_to_18_hours -2.541672\n", + "┃ coef_duration_constants_3_to_4_hours -0.680239\n", + "┃ coef_duration_constants_5_to_6_hours -0.551126\n", + "┃ coef_duration_constants_7_to_8_hours 0.000000\n", + "┃ coef_duration_constants_9_hours -0.664353\n", + "┃ coef_first_of_2plus_school_lt_6_hours 1.768123\n", + "┃ coef_first_of_2plus_school_tours_departure -0.277161\n", + "┃ coef_first_of_2plus_school_tours_duration -0.077846\n", + "┃ coef_ft_worker_departure 0.397100\n", + "┃ coef_ft_worker_duration -0.190800\n", + "┃ coef_hh_income_early_departure -0.643531\n", + "┃ coef_hh_income_late_arrival -0.123912\n", + "┃ coef_mode_choice_logsum 1.403530\n", + "┃ coef_non_worker_departure 0.553900\n", + "┃ coef_previous_tour_begins_this_arrival_hour 1.748525\n", + "┃ coef_previous_tour_ends_this_departure_hour -1.454921\n", + "┃ coef_remaining_work_school_tours_to_be_scheduled_div_number_of_unscheduled_hours -16.666935\n", + "┃ coef_roundtrip_auto_time_to_work 0.002946\n", + "┃ coef_school_plus_work_tours_by_student_lt_6_hours 1.805060\n", + "┃ coef_school_plus_work_tours_by_worker_lt_6_hours 2.217060\n", + "┃ coef_student_driver_duration 0.021414\n", + "┃ coef_subsequent_2plus_school_tours_duration -0.309377\n", + "┃ coef_subsequent_of_2plus_school_lt_6_hours 1.522961\n", + "┃ coef_subsequent_tour_must_start_after_previous_tour_ends -100.000000\n", + "┃ coef_univ_departure 0.281763\n", + "┃ coef_univ_duration -0.287541\n", "┃ dtype: float64\n", - "┣ loglike: -2331.7420221780226\n", - "┣ d_loglike: coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction -1.569000e-04\n", - "┃ coef_adjacent_window_exists_after_this_arrival_hour_second_plus_tour_interaction 2.469873e-05\n", - "┃ coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction -1.376329e-04\n", - "┃ coef_adjacent_window_exists_before_this_departure_hour_second_plus_tour_interaction -1.199309e-04\n", - "┃ coef_all_adults_ft_worker_duration -2.382589e-04\n", - "┃ coef_arrival_constants_am_peak 1.105861e-04\n", - "┃ coef_arrival_constants_early -7.161434e-05\n", - "┃ coef_arrival_constants_evening -3.213301e-04\n", - "┃ coef_arrival_constants_late -3.685726e-05\n", - "┃ coef_arrival_constants_midday_1 2.405910e-04\n", - "┃ coef_arrival_constants_midday_2 3.974766e-04\n", + "┣ logloss: 3.8441737168559693\n", + "┣ d_logloss: coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction 1.678936e-05\n", + "┃ coef_adjacent_window_exists_after_this_arrival_hour_second_plus_tour_interaction -4.551660e-05\n", + "┃ coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction 1.846962e-05\n", + "┃ coef_adjacent_window_exists_before_this_departure_hour_second_plus_tour_interaction -1.145647e-04\n", + "┃ coef_all_adults_ft_worker_duration -8.371558e-05\n", + "┃ coef_arrival_constants_am_peak 2.196925e-04\n", + "┃ coef_arrival_constants_early -5.719292e-06\n", + "┃ coef_arrival_constants_evening -8.835678e-05\n", + "┃ coef_arrival_constants_late 1.013090e-04\n", + "┃ coef_arrival_constants_midday_1 7.833025e-05\n", + "┃ coef_arrival_constants_midday_2 -1.965074e-04\n", "┃ coef_arrival_constants_pm_peak_1 0.000000e+00\n", - "┃ coef_arrival_constants_pm_peak_2 -3.784033e-04\n", - "┃ coef_arrival_constants_pm_peak_3 -2.802883e-04\n", - "┃ coef_arrival_constants_pm_peak_4 1.590313e-04\n", - "┃ coef_departure_constants_am_peak_1 3.893384e-05\n", + "┃ coef_arrival_constants_pm_peak_2 -9.685367e-05\n", + "┃ coef_arrival_constants_pm_peak_3 -9.087295e-05\n", + "┃ coef_arrival_constants_pm_peak_4 2.740145e-05\n", + "┃ coef_departure_constants_am_peak_1 1.513237e-04\n", "┃ coef_departure_constants_am_peak_2 0.000000e+00\n", - "┃ coef_departure_constants_am_peak_3 -1.076955e-04\n", - "┃ coef_departure_constants_am_peak_4 -1.023082e-04\n", - "┃ coef_departure_constants_early -1.964617e-05\n", - "┃ coef_departure_constants_evening 9.016158e-05\n", - "┃ coef_departure_constants_late -6.465407e-07\n", - "┃ coef_departure_constants_midday_1 -1.539484e-05\n", - "┃ coef_departure_constants_midday_2 7.340411e-05\n", - "┃ coef_departure_constants_pm_peak -3.023675e-04\n", - "┃ coef_duration_constants_0_to_2_hours -1.095813e-04\n", - "┃ coef_duration_constants_10_hours -4.107214e-05\n", - "┃ coef_duration_constants_11_hours 1.853670e-04\n", - "┃ coef_duration_constants_12_to_13_hours 4.561763e-05\n", - "┃ coef_duration_constants_14_to_18_hours 1.362278e-04\n", - "┃ coef_duration_constants_3_to_4_hours 3.779389e-06\n", - "┃ coef_duration_constants_5_to_6_hours 1.389604e-04\n", + "┃ coef_departure_constants_am_peak_3 -8.937296e-06\n", + "┃ coef_departure_constants_am_peak_4 -8.822207e-05\n", + "┃ coef_departure_constants_early 6.575707e-05\n", + "┃ coef_departure_constants_evening -4.373200e-05\n", + "┃ coef_departure_constants_late 7.294452e-05\n", + "┃ coef_departure_constants_midday_1 -7.045255e-05\n", + "┃ coef_departure_constants_midday_2 9.783210e-05\n", + "┃ coef_departure_constants_pm_peak 1.854008e-04\n", + "┃ coef_duration_constants_0_to_2_hours -1.017742e-05\n", + "┃ coef_duration_constants_10_hours -1.010013e-04\n", + "┃ coef_duration_constants_11_hours 3.540305e-05\n", + "┃ coef_duration_constants_12_to_13_hours 3.622247e-06\n", + "┃ coef_duration_constants_14_to_18_hours 1.457916e-04\n", + "┃ coef_duration_constants_3_to_4_hours -1.500782e-04\n", + "┃ coef_duration_constants_5_to_6_hours 2.054373e-04\n", "┃ coef_duration_constants_7_to_8_hours 0.000000e+00\n", - "┃ coef_duration_constants_9_hours -4.131255e-04\n", - "┃ coef_first_of_2plus_school_lt_6_hours 2.433801e-05\n", - "┃ coef_first_of_2plus_school_tours_departure -1.088730e-04\n", - "┃ coef_first_of_2plus_school_tours_duration -1.351925e-04\n", + "┃ coef_duration_constants_9_hours 1.173908e-04\n", + "┃ coef_first_of_2plus_school_lt_6_hours 6.625071e-05\n", + "┃ coef_first_of_2plus_school_tours_departure 4.904242e-05\n", + "┃ coef_first_of_2plus_school_tours_duration 5.848347e-05\n", "┃ coef_ft_worker_departure 0.000000e+00\n", "┃ coef_ft_worker_duration 0.000000e+00\n", - "┃ coef_hh_income_early_departure -1.184539e-06\n", - "┃ coef_hh_income_late_arrival 8.674395e-05\n", - "┃ coef_mode_choice_logsum 7.755139e-04\n", + "┃ coef_hh_income_early_departure -5.079513e-05\n", + "┃ coef_hh_income_late_arrival -7.624692e-05\n", + "┃ coef_mode_choice_logsum -2.256830e-05\n", "┃ coef_non_worker_departure 0.000000e+00\n", - "┃ coef_previous_tour_begins_this_arrival_hour -7.619359e-07\n", - "┃ coef_previous_tour_ends_this_departure_hour -2.114195e-05\n", - "┃ coef_remaining_work_school_tours_to_be_scheduled_div_number_of_unscheduled_hours -1.863986e-02\n", - "┃ coef_roundtrip_auto_time_to_work -2.056667e-03\n", - "┃ coef_school_plus_work_tours_by_student_lt_6_hours 2.636310e-06\n", - "┃ coef_school_plus_work_tours_by_worker_lt_6_hours 2.636310e-06\n", - "┃ coef_student_driver_duration 4.065449e-04\n", - "┃ coef_subsequent_2plus_school_tours_duration 6.239050e-05\n", - "┃ coef_subsequent_of_2plus_school_lt_6_hours 2.696315e-06\n", + "┃ coef_previous_tour_begins_this_arrival_hour -8.260618e-06\n", + "┃ coef_previous_tour_ends_this_departure_hour -4.098700e-05\n", + "┃ coef_remaining_work_school_tours_to_be_scheduled_div_number_of_unscheduled_hours 3.894311e-07\n", + "┃ coef_roundtrip_auto_time_to_work 5.433902e-05\n", + "┃ coef_school_plus_work_tours_by_student_lt_6_hours 8.778429e-06\n", + "┃ coef_school_plus_work_tours_by_worker_lt_6_hours 8.778429e-06\n", + "┃ coef_student_driver_duration -5.008566e-05\n", + "┃ coef_subsequent_2plus_school_tours_duration 5.111004e-05\n", + "┃ coef_subsequent_of_2plus_school_lt_6_hours 9.902870e-05\n", "┃ coef_subsequent_tour_must_start_after_previous_tour_ends 0.000000e+00\n", - "┃ coef_univ_departure -2.420842e-03\n", - "┃ coef_univ_duration 7.174716e-04\n", + "┃ coef_univ_departure -7.874285e-05\n", + "┃ coef_univ_duration -1.251813e-05\n", "┃ dtype: float64\n", - "┣ nit: 77\n", - "┣ nfev: 141\n", - "┣ njev: 77\n", + "┣ nit: 139\n", + "┣ nfev: 142\n", + "┣ njev: 139\n", "┣ status: 0\n", "┣ message: 'Optimization terminated successfully'\n", "┣ success: True\n", - "┣ elapsed_time: datetime.timedelta(seconds=2, microseconds=917567)\n", + "┣ elapsed_time: datetime.timedelta(seconds=41, microseconds=638335)\n", "┣ method: 'slsqp'\n", - "┣ n_cases: 609\n", - "┣ iteration_number: 77\n", - "┣ logloss: 3.8288046341182636" + "┣ n_cases: 10352\n", + "┣ iteration_number: 139\n", + "┣ loglike: -39483.50824582766" ] }, - "execution_count": 8, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "model.estimate()" + "model.estimate(maxiter=999)" ] }, { @@ -3521,579 +3673,550 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Value Std Err t Stat Signif Like Ratio Null Value Constrained
coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction-0.414 0.645-0.64 NA 0.00
coef_adjacent_window_exists_after_this_arrival_hour_second_plus_tour_interaction-0.640 0.383-1.67 NA 0.00
coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction 1.66 0.794 2.09* NA 0.00
coef_adjacent_window_exists_before_this_departure_hour_second_plus_tour_interaction 0.226 0.377 0.60 NA 0.00
coef_all_adults_ft_worker_duration 0.0523 0.179 0.29 NA 0.00
coef_arrival_constants_am_peak-2.24 0.467-4.79*** NA 0.00
coef_arrival_constants_early-1.07 0.889-1.20 NA 0.00
coef_arrival_constants_evening-1.03 0.346-2.99** NA 0.00
coef_arrival_constants_late-1.32 0.510-2.58** NA 0.00
coef_arrival_constants_midday_1-1.30 0.285-4.57*** NA 0.00
coef_arrival_constants_midday_2-0.555 0.161-3.45*** NA 0.00
coef_arrival_constants_pm_peak_1 0.00 NA NA NA 0.00fixed value
coef_arrival_constants_pm_peak_2-0.441 0.167-2.64** NA 0.00
coef_arrival_constants_pm_peak_3-0.281 0.223-1.26 NA 0.00
coef_arrival_constants_pm_peak_4-0.370 0.274-1.35 NA 0.00
coef_departure_constants_am_peak_1-1.88 0.214-8.81*** NA 0.00
coef_departure_constants_am_peak_2 0.00 NA NA NA 0.00fixed value
coef_departure_constants_am_peak_3-0.184 0.114-1.61 NA 0.00
coef_departure_constants_am_peak_4-2.02 0.224-9.01*** NA 0.00
coef_departure_constants_early-3.64 0.600-6.07*** NA 0.00
coef_departure_constants_evening-5.26 0.830-6.34*** NA 0.00
coef_departure_constants_late-21.4 1.78e+03-0.01 NA 0.00
coef_departure_constants_midday_1-3.28 0.291-11.28*** NA 0.00
coef_departure_constants_midday_2-3.75 0.433-8.67*** NA 0.00
coef_departure_constants_pm_peak-3.09 0.579-5.34*** NA 0.00
coef_duration_constants_0_to_2_hours-1.37 0.393-3.49*** NA 0.00
coef_duration_constants_10_hours-0.876 0.271-3.24** NA 0.00
coef_duration_constants_11_hours-1.13 0.347-3.24** NA 0.00
coef_duration_constants_12_to_13_hours-2.67 0.530-5.04*** NA 0.00
coef_duration_constants_14_to_18_hours-2.68 0.614-4.36*** NA 0.00
coef_duration_constants_3_to_4_hours-0.552 0.277-2.00* NA 0.00
coef_duration_constants_5_to_6_hours-0.533 0.179-2.97** NA 0.00
coef_duration_constants_7_to_8_hours 0.00 NA NA NA 0.00fixed value
coef_duration_constants_9_hours-0.488 0.199-2.45* NA 0.00
coef_first_of_2plus_school_lt_6_hours 0.169 1.14 0.15 NA 0.00
coef_first_of_2plus_school_tours_departure-0.334 0.170-1.96* NA 0.00
coef_first_of_2plus_school_tours_duration-0.0426 0.214-0.20 NA 0.00
coef_ft_worker_departure 0.397 0.0143 27.72*** NA 0.00
coef_ft_worker_duration-0.191 0.00454-42.02*** NA 0.00
coef_hh_income_early_departure-13.8 934.-0.01 NA 0.00
coef_hh_income_late_arrival 0.102 0.762 0.13 NA 0.00
coef_mode_choice_logsum 0.0564 0.267 0.21 NA 0.00
coef_non_worker_departure 0.554 0.000124 BIG*** NA 0.00
coef_previous_tour_begins_this_arrival_hour-10.4 1.62e+03-0.01 NA 0.00
coef_previous_tour_ends_this_departure_hour 0.299 0.613 0.49 NA 0.00
coef_remaining_work_school_tours_to_be_scheduled_div_number_of_unscheduled_hours-25.0 NA NA[] 1.05 0.00coef_remaining_work_school_tours_to_be_scheduled_div_number_of_unscheduled_hours ≥ -25.0
coef_roundtrip_auto_time_to_work 0.00514 0.00516 1.00 NA 0.00
coef_school_plus_work_tours_by_student_lt_6_hours-2.48 314.-0.01 NA 0.00
coef_school_plus_work_tours_by_worker_lt_6_hours-2.07 314.-0.01 NA 0.00
coef_student_driver_duration-0.00396 0.0373-0.11 NA 0.00
coef_subsequent_2plus_school_tours_duration-0.188 0.149-1.27 NA 0.00
coef_subsequent_of_2plus_school_lt_6_hours 25.0 NA NA[***] 220.75 0.00coef_subsequent_of_2plus_school_lt_6_hours ≤ 25.0
coef_subsequent_tour_must_start_after_previous_tour_ends-100. NA NA NA 0.00fixed value
coef_univ_departure 0.234 0.0383 6.13*** NA 0.00
coef_univ_duration-0.409 0.0544-7.52*** NA 0.00
" + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ValueStd Errt StatSignifNull ValueConstrained
Parameter      
coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction 0.232 2.43 0.10 0.00
coef_adjacent_window_exists_after_this_arrival_hour_second_plus_tour_interaction-1.20 0.265-4.54*** 0.00
coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction-0.419 0.705-0.59 0.00
coef_adjacent_window_exists_before_this_departure_hour_second_plus_tour_interaction-0.761 0.722-1.05 0.00
coef_all_adults_ft_worker_duration 0.0797 0.0336 2.37* 0.00
coef_arrival_constants_am_peak-2.60 0.128-20.35*** 0.00
coef_arrival_constants_early-2.45 0.378-6.47*** 0.00
coef_arrival_constants_evening-0.707 0.0872-8.11*** 0.00
coef_arrival_constants_late-1.64 0.137-11.98*** 0.00
coef_arrival_constants_midday_1-1.27 0.0711-17.84*** 0.00
coef_arrival_constants_midday_2-0.523 0.0391-13.41*** 0.00
coef_arrival_constants_pm_peak_1 0.00 0.00 NA 0.00fixed value
coef_arrival_constants_pm_peak_2-0.360 0.0391-9.21*** 0.00
coef_arrival_constants_pm_peak_3-0.0964 0.0543-1.78 0.00
coef_arrival_constants_pm_peak_4-0.128 0.0672-1.90 0.00
coef_departure_constants_am_peak_1-1.61 0.0470-34.22*** 0.00
coef_departure_constants_am_peak_2 0.00 0.00 NA 0.00fixed value
coef_departure_constants_am_peak_3-0.101 0.0275-3.66*** 0.00
coef_departure_constants_am_peak_4-2.14 0.0570-37.57*** 0.00
coef_departure_constants_early-3.85 0.173-22.28*** 0.00
coef_departure_constants_evening-5.55 0.220-25.26*** 0.00
coef_departure_constants_late-10.9 2.02-5.39*** 0.00
coef_departure_constants_midday_1-3.12 0.0717-43.56*** 0.00
coef_departure_constants_midday_2-3.86 0.112-34.58*** 0.00
coef_departure_constants_pm_peak-3.28 0.148-22.16*** 0.00
coef_duration_constants_0_to_2_hours-1.32 0.0986-13.37*** 0.00
coef_duration_constants_10_hours-0.914 0.0627-14.59*** 0.00
coef_duration_constants_11_hours-1.64 0.0876-18.76*** 0.00
coef_duration_constants_12_to_13_hours-2.53 0.112-22.51*** 0.00
coef_duration_constants_14_to_18_hours-2.54 0.143-17.80*** 0.00
coef_duration_constants_3_to_4_hours-0.680 0.0695-9.79*** 0.00
coef_duration_constants_5_to_6_hours-0.551 0.0434-12.71*** 0.00
coef_duration_constants_7_to_8_hours 0.00 0.00 NA 0.00fixed value
coef_duration_constants_9_hours-0.664 0.0471-14.10*** 0.00
coef_first_of_2plus_school_lt_6_hours 1.77 0.267 6.63*** 0.00
coef_first_of_2plus_school_tours_departure-0.277 0.0289-9.59*** 0.00
coef_first_of_2plus_school_tours_duration-0.0778 0.0892-0.87 0.00
coef_ft_worker_departure 0.397 NA NA 0.00
coef_ft_worker_duration-0.191 NA NA 0.00
coef_hh_income_early_departure-0.644 0.381-1.69 0.00
coef_hh_income_late_arrival-0.124 0.206-0.60 0.00
coef_mode_choice_logsum 1.40 0.125 11.19*** 0.00
coef_non_worker_departure 0.554 2.69e-13 BIG*** 0.00
coef_previous_tour_begins_this_arrival_hour 1.75 0.946 1.85 0.00
coef_previous_tour_ends_this_departure_hour-1.45 0.690-2.11* 0.00
coef_remaining_work_school_tours_to_be_scheduled_div_number_of_unscheduled_hours-16.7 18.9-0.88 0.00
coef_roundtrip_auto_time_to_work 0.00295 0.000437 6.74*** 0.00
coef_school_plus_work_tours_by_student_lt_6_hours 1.81 1.68 1.07 0.00
coef_school_plus_work_tours_by_worker_lt_6_hours 2.22 1.68 1.32 0.00
coef_student_driver_duration 0.0214 0.00880 2.43* 0.00
coef_subsequent_2plus_school_tours_duration-0.309 0.0368-8.41*** 0.00
coef_subsequent_of_2plus_school_lt_6_hours 1.52 0.493 3.09** 0.00
coef_subsequent_tour_must_start_after_previous_tour_ends-100. 0.00 NA 0.00fixed value
coef_univ_departure 0.282 0.0112 25.08*** 0.00
coef_univ_duration-0.288 0.0153-18.82*** 0.00
\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 9, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -4114,7 +4237,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ @@ -4135,20 +4258,9 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "model.to_xlsx(\n", " result_dir/f\"{modelname}_model_estimation.xlsx\", \n", @@ -4167,7 +4279,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -4206,7 +4318,7 @@ " \n", " 1\n", " coef_roundtrip_auto_time_to_work\n", - " 0.005137\n", + " 0.002946\n", " F\n", " \n", " \n", @@ -4230,25 +4342,25 @@ " \n", " 5\n", " coef_univ_departure\n", - " 0.234367\n", + " 0.281763\n", " F\n", " \n", " \n", " 6\n", " coef_univ_duration\n", - " -0.409132\n", + " -0.287541\n", " F\n", " \n", " \n", " 7\n", " coef_student_driver_duration\n", - " -0.003958\n", + " 0.021414\n", " F\n", " \n", " \n", " 8\n", " coef_all_adults_ft_worker_duration\n", - " 0.052336\n", + " 0.079713\n", " F\n", " \n", " \n", @@ -4260,115 +4372,115 @@ " \n", " 10\n", " coef_first_of_2plus_school_tours_departure\n", - " -0.333830\n", + " -0.277161\n", " F\n", " \n", " \n", " 11\n", " coef_first_of_2plus_school_tours_duration\n", - " -0.042558\n", + " -0.077846\n", " F\n", " \n", " \n", " 12\n", " coef_subsequent_2plus_school_tours_duration\n", - " -0.188299\n", + " -0.309377\n", " F\n", " \n", " \n", " 13\n", " coef_hh_income_early_departure\n", - " -13.757852\n", + " -0.643531\n", " F\n", " \n", " \n", " 14\n", " coef_hh_income_late_arrival\n", - " 0.101726\n", + " -0.123912\n", " F\n", " \n", " \n", " 15\n", " coef_first_of_2plus_school_lt_6_hours\n", - " 0.169055\n", + " 1.768123\n", " F\n", " \n", " \n", " 16\n", " coef_subsequent_of_2plus_school_lt_6_hours\n", - " 25.000000\n", + " 1.522961\n", " F\n", " \n", " \n", " 17\n", " coef_school_plus_work_tours_by_student_lt_6_hours\n", - " -2.483313\n", + " 1.805060\n", " F\n", " \n", " \n", " 18\n", " coef_school_plus_work_tours_by_worker_lt_6_hours\n", - " -2.071313\n", + " 2.217060\n", " F\n", " \n", " \n", " 19\n", " coef_mode_choice_logsum\n", - " 0.056410\n", + " 1.403530\n", " F\n", " \n", " \n", " 20\n", " coef_previous_tour_ends_this_departure_hour\n", - " 0.298551\n", + " -1.454921\n", " F\n", " \n", " \n", " 21\n", " coef_previous_tour_begins_this_arrival_hour\n", - " -10.370632\n", + " 1.748525\n", " F\n", " \n", " \n", " 22\n", " coef_adjacent_window_exists_before_this_depart...\n", - " 1.656920\n", + " -0.419250\n", " F\n", " \n", " \n", " 23\n", " coef_adjacent_window_exists_after_this_arrival...\n", - " -0.414229\n", + " 0.232285\n", " F\n", " \n", " \n", " 24\n", " coef_adjacent_window_exists_before_this_depart...\n", - " 0.225722\n", + " -0.760747\n", " F\n", " \n", " \n", " 25\n", " coef_adjacent_window_exists_after_this_arrival...\n", - " -0.640186\n", + " -1.201676\n", " F\n", " \n", " \n", " 26\n", " coef_remaining_work_school_tours_to_be_schedul...\n", - " -25.000000\n", + " -16.666935\n", " F\n", " \n", " \n", " 27\n", " coef_departure_constants_early\n", - " -3.636770\n", + " -3.850945\n", " F\n", " \n", " \n", " 28\n", " coef_departure_constants_am_peak_1\n", - " -1.882694\n", + " -1.606835\n", " F\n", " \n", " \n", @@ -4380,67 +4492,67 @@ " \n", " 30\n", " coef_departure_constants_am_peak_3\n", - " -0.183985\n", + " -0.100582\n", " F\n", " \n", " \n", " 31\n", " coef_departure_constants_am_peak_4\n", - " -2.016403\n", + " -2.142432\n", " F\n", " \n", " \n", " 32\n", " coef_departure_constants_midday_1\n", - " -3.279864\n", + " -3.124481\n", " F\n", " \n", " \n", " 33\n", " coef_departure_constants_midday_2\n", - " -3.750548\n", + " -3.861525\n", " F\n", " \n", " \n", " 34\n", " coef_departure_constants_pm_peak\n", - " -3.093167\n", + " -3.281532\n", " F\n", " \n", " \n", " 35\n", " coef_departure_constants_evening\n", - " -5.258795\n", + " -5.546826\n", " F\n", " \n", " \n", " 36\n", " coef_departure_constants_late\n", - " -21.447622\n", + " -10.890722\n", " F\n", " \n", " \n", " 37\n", " coef_arrival_constants_early\n", - " -1.065980\n", + " -2.446580\n", " F\n", " \n", " \n", " 38\n", " coef_arrival_constants_am_peak\n", - " -2.239162\n", + " -2.595385\n", " F\n", " \n", " \n", " 39\n", " coef_arrival_constants_midday_1\n", - " -1.302330\n", + " -1.267988\n", " F\n", " \n", " \n", " 40\n", " coef_arrival_constants_midday_2\n", - " -0.554673\n", + " -0.523484\n", " F\n", " \n", " \n", @@ -4452,49 +4564,49 @@ " \n", " 42\n", " coef_arrival_constants_pm_peak_2\n", - " -0.441387\n", + " -0.360268\n", " F\n", " \n", " \n", " 43\n", " coef_arrival_constants_pm_peak_3\n", - " -0.281247\n", + " -0.096426\n", " F\n", " \n", " \n", " 44\n", " coef_arrival_constants_pm_peak_4\n", - " -0.370368\n", + " -0.127905\n", " F\n", " \n", " \n", " 45\n", " coef_arrival_constants_evening\n", - " -1.033329\n", + " -0.707272\n", " F\n", " \n", " \n", " 46\n", " coef_arrival_constants_late\n", - " -1.315910\n", + " -1.639520\n", " F\n", " \n", " \n", " 47\n", " coef_duration_constants_0_to_2_hours\n", - " -1.372110\n", + " -1.318085\n", " F\n", " \n", " \n", " 48\n", " coef_duration_constants_3_to_4_hours\n", - " -0.552200\n", + " -0.680239\n", " F\n", " \n", " \n", " 49\n", " coef_duration_constants_5_to_6_hours\n", - " -0.532627\n", + " -0.551126\n", " F\n", " \n", " \n", @@ -4506,31 +4618,31 @@ " \n", " 51\n", " coef_duration_constants_9_hours\n", - " -0.487609\n", + " -0.664353\n", " F\n", " \n", " \n", " 52\n", " coef_duration_constants_10_hours\n", - " -0.876448\n", + " -0.914359\n", " F\n", " \n", " \n", " 53\n", " coef_duration_constants_11_hours\n", - " -1.127264\n", + " -1.643692\n", " F\n", " \n", " \n", " 54\n", " coef_duration_constants_12_to_13_hours\n", - " -2.668346\n", + " -2.528269\n", " F\n", " \n", " \n", " 55\n", " coef_duration_constants_14_to_18_hours\n", - " -2.675974\n", + " -2.541672\n", " F\n", " \n", " \n", @@ -4540,64 +4652,64 @@ "text/plain": [ " coefficient_name value constrain\n", "0 coef_dummy 1.000000 T\n", - "1 coef_roundtrip_auto_time_to_work 0.005137 F\n", + "1 coef_roundtrip_auto_time_to_work 0.002946 F\n", "2 coef_ft_worker_departure 0.397100 F\n", "3 coef_ft_worker_duration -0.190800 F\n", "4 coef_non_worker_departure 0.553900 F\n", - "5 coef_univ_departure 0.234367 F\n", - "6 coef_univ_duration -0.409132 F\n", - "7 coef_student_driver_duration -0.003958 F\n", - "8 coef_all_adults_ft_worker_duration 0.052336 F\n", + "5 coef_univ_departure 0.281763 F\n", + "6 coef_univ_duration -0.287541 F\n", + "7 coef_student_driver_duration 0.021414 F\n", + "8 coef_all_adults_ft_worker_duration 0.079713 F\n", "9 coef_subsequent_tour_must_start_after_previous... -100.000000 T\n", - "10 coef_first_of_2plus_school_tours_departure -0.333830 F\n", - "11 coef_first_of_2plus_school_tours_duration -0.042558 F\n", - "12 coef_subsequent_2plus_school_tours_duration -0.188299 F\n", - "13 coef_hh_income_early_departure -13.757852 F\n", - "14 coef_hh_income_late_arrival 0.101726 F\n", - "15 coef_first_of_2plus_school_lt_6_hours 0.169055 F\n", - "16 coef_subsequent_of_2plus_school_lt_6_hours 25.000000 F\n", - "17 coef_school_plus_work_tours_by_student_lt_6_hours -2.483313 F\n", - "18 coef_school_plus_work_tours_by_worker_lt_6_hours -2.071313 F\n", - "19 coef_mode_choice_logsum 0.056410 F\n", - "20 coef_previous_tour_ends_this_departure_hour 0.298551 F\n", - "21 coef_previous_tour_begins_this_arrival_hour -10.370632 F\n", - "22 coef_adjacent_window_exists_before_this_depart... 1.656920 F\n", - "23 coef_adjacent_window_exists_after_this_arrival... -0.414229 F\n", - "24 coef_adjacent_window_exists_before_this_depart... 0.225722 F\n", - "25 coef_adjacent_window_exists_after_this_arrival... -0.640186 F\n", - "26 coef_remaining_work_school_tours_to_be_schedul... -25.000000 F\n", - "27 coef_departure_constants_early -3.636770 F\n", - "28 coef_departure_constants_am_peak_1 -1.882694 F\n", + "10 coef_first_of_2plus_school_tours_departure -0.277161 F\n", + "11 coef_first_of_2plus_school_tours_duration -0.077846 F\n", + "12 coef_subsequent_2plus_school_tours_duration -0.309377 F\n", + "13 coef_hh_income_early_departure -0.643531 F\n", + "14 coef_hh_income_late_arrival -0.123912 F\n", + "15 coef_first_of_2plus_school_lt_6_hours 1.768123 F\n", + "16 coef_subsequent_of_2plus_school_lt_6_hours 1.522961 F\n", + "17 coef_school_plus_work_tours_by_student_lt_6_hours 1.805060 F\n", + "18 coef_school_plus_work_tours_by_worker_lt_6_hours 2.217060 F\n", + "19 coef_mode_choice_logsum 1.403530 F\n", + "20 coef_previous_tour_ends_this_departure_hour -1.454921 F\n", + "21 coef_previous_tour_begins_this_arrival_hour 1.748525 F\n", + "22 coef_adjacent_window_exists_before_this_depart... -0.419250 F\n", + "23 coef_adjacent_window_exists_after_this_arrival... 0.232285 F\n", + "24 coef_adjacent_window_exists_before_this_depart... -0.760747 F\n", + "25 coef_adjacent_window_exists_after_this_arrival... -1.201676 F\n", + "26 coef_remaining_work_school_tours_to_be_schedul... -16.666935 F\n", + "27 coef_departure_constants_early -3.850945 F\n", + "28 coef_departure_constants_am_peak_1 -1.606835 F\n", "29 coef_departure_constants_am_peak_2 0.000000 T\n", - "30 coef_departure_constants_am_peak_3 -0.183985 F\n", - "31 coef_departure_constants_am_peak_4 -2.016403 F\n", - "32 coef_departure_constants_midday_1 -3.279864 F\n", - "33 coef_departure_constants_midday_2 -3.750548 F\n", - "34 coef_departure_constants_pm_peak -3.093167 F\n", - "35 coef_departure_constants_evening -5.258795 F\n", - "36 coef_departure_constants_late -21.447622 F\n", - "37 coef_arrival_constants_early -1.065980 F\n", - "38 coef_arrival_constants_am_peak -2.239162 F\n", - "39 coef_arrival_constants_midday_1 -1.302330 F\n", - "40 coef_arrival_constants_midday_2 -0.554673 F\n", + "30 coef_departure_constants_am_peak_3 -0.100582 F\n", + "31 coef_departure_constants_am_peak_4 -2.142432 F\n", + "32 coef_departure_constants_midday_1 -3.124481 F\n", + "33 coef_departure_constants_midday_2 -3.861525 F\n", + "34 coef_departure_constants_pm_peak -3.281532 F\n", + "35 coef_departure_constants_evening -5.546826 F\n", + "36 coef_departure_constants_late -10.890722 F\n", + "37 coef_arrival_constants_early -2.446580 F\n", + "38 coef_arrival_constants_am_peak -2.595385 F\n", + "39 coef_arrival_constants_midday_1 -1.267988 F\n", + "40 coef_arrival_constants_midday_2 -0.523484 F\n", "41 coef_arrival_constants_pm_peak_1 0.000000 T\n", - "42 coef_arrival_constants_pm_peak_2 -0.441387 F\n", - "43 coef_arrival_constants_pm_peak_3 -0.281247 F\n", - "44 coef_arrival_constants_pm_peak_4 -0.370368 F\n", - "45 coef_arrival_constants_evening -1.033329 F\n", - "46 coef_arrival_constants_late -1.315910 F\n", - "47 coef_duration_constants_0_to_2_hours -1.372110 F\n", - "48 coef_duration_constants_3_to_4_hours -0.552200 F\n", - "49 coef_duration_constants_5_to_6_hours -0.532627 F\n", + "42 coef_arrival_constants_pm_peak_2 -0.360268 F\n", + "43 coef_arrival_constants_pm_peak_3 -0.096426 F\n", + "44 coef_arrival_constants_pm_peak_4 -0.127905 F\n", + "45 coef_arrival_constants_evening -0.707272 F\n", + "46 coef_arrival_constants_late -1.639520 F\n", + "47 coef_duration_constants_0_to_2_hours -1.318085 F\n", + "48 coef_duration_constants_3_to_4_hours -0.680239 F\n", + "49 coef_duration_constants_5_to_6_hours -0.551126 F\n", "50 coef_duration_constants_7_to_8_hours 0.000000 T\n", - "51 coef_duration_constants_9_hours -0.487609 F\n", - "52 coef_duration_constants_10_hours -0.876448 F\n", - "53 coef_duration_constants_11_hours -1.127264 F\n", - "54 coef_duration_constants_12_to_13_hours -2.668346 F\n", - "55 coef_duration_constants_14_to_18_hours -2.675974 F" + "51 coef_duration_constants_9_hours -0.664353 F\n", + "52 coef_duration_constants_10_hours -0.914359 F\n", + "53 coef_duration_constants_11_hours -1.643692 F\n", + "54 coef_duration_constants_12_to_13_hours -2.528269 F\n", + "55 coef_duration_constants_14_to_18_hours -2.541672 F" ] }, - "execution_count": 12, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -4614,7 +4726,7 @@ "toc_visible": true }, "kernelspec": { - "display_name": "Python 3", + "display_name": "ESTER", "language": "python", "name": "python3" }, @@ -4628,7 +4740,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.10.15" }, "toc": { "base_numbering": 1, diff --git a/activitysim/examples/example_estimation/notebooks/10_joint_tour_freq.ipynb b/activitysim/examples/example_estimation/notebooks/10_joint_tour_freq.ipynb index a8d306f95..4fd045c4d 100644 --- a/activitysim/examples/example_estimation/notebooks/10_joint_tour_freq.ipynb +++ b/activitysim/examples/example_estimation/notebooks/10_joint_tour_freq.ipynb @@ -34,27 +34,74 @@ "id": "s53VwlPwtNnr", "outputId": "d1208b7a-c1f2-4b0b-c439-bf312fe12be0" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "JAX not found. Some functionality will be unavailable.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'larch': '6.0.32',\n", + " 'sharrow': '2.13.0',\n", + " 'numpy': '1.26.4',\n", + " 'pandas': '1.5.3',\n", + " 'xarray': '2024.3.0',\n", + " 'numba': '0.60.0'}" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "import os\n", - "import larch # !conda install larch -c conda-forge # for estimation\n", - "import pandas as pd" + "import larch as lx\n", + "import pandas as pd\n", + "\n", + "lx.versions()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We'll work in our `test` directory, where ActivitySim has saved the estimation data bundles." + "For this demo, we will assume that you have already run ActivitySim in estimation\n", + "mode, and saved the required estimation data bundles (EDB's) to disk. See\n", + "the [first notebook](./01_estimation_mode.ipynb) for details. The following module\n", + "will run a script to set everything up if the example data is not already available." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "EDB directory already populated.\n" + ] + }, + { + "data": { + "text/plain": [ + "PosixPath('test-estimation-data/activitysim-prototype-mtc-extended')" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "os.chdir('test')" + "from est_mode_setup import prepare\n", + "\n", + "prepare()" ] }, { @@ -68,12 +115,27 @@ "cell_type": "code", "execution_count": 3, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "loading from output-est-mode/estimation_data_bundle/joint_tour_frequency/joint_tour_frequency_coefficients.csv\n", + "loading spec from output-est-mode/estimation_data_bundle/joint_tour_frequency/joint_tour_frequency_SPEC.csv\n", + "loading from output-est-mode/estimation_data_bundle/joint_tour_frequency/joint_tour_frequency_values_combined.parquet\n" + ] + } + ], "source": [ "modelname = \"joint_tour_frequency\"\n", "\n", "from activitysim.estimation.larch import component_model\n", - "model, data = component_model(modelname, return_data=True)" + "\n", + "model, data = component_model(\n", + " modelname,\n", + " edb_directory=f\"output-est-mode/estimation_data_bundle/{modelname}/\",\n", + " return_data=True,\n", + ")" ] }, { @@ -766,7 +828,7 @@ " \n", " \n", " \n", - " 189748\n", + " 190236\n", " 0_tours\n", " 0_tours\n", " 1.0\n", @@ -778,20 +840,20 @@ " 0.0\n", " 0.0\n", " ...\n", - " 0.0\n", + " 1.0\n", " 0.0\n", " False\n", " False\n", " 0\n", - " 2.996\n", - " 0.0\n", - " 0.000\n", - " 6.041458\n", + " 2.996094\n", + " 0.000000\n", + " 0.000000\n", + " 5.661266\n", " 1\n", " \n", " \n", - " 189758\n", - " 1_Eat\n", + " 190592\n", + " 1_Disc\n", " 1_Eat\n", " 1.0\n", " 0.0\n", @@ -802,19 +864,19 @@ " 0.0\n", " 0.0\n", " ...\n", - " 2.0\n", + " 0.0\n", " 0.0\n", " False\n", " False\n", " 0\n", - " 2.303\n", - " 0.0\n", - " 0.000\n", - " 6.035642\n", + " 2.996094\n", + " 0.000000\n", + " 0.000000\n", + " 5.384032\n", " 4\n", " \n", " \n", - " 189833\n", + " 190998\n", " 0_tours\n", " 0_tours\n", " 1.0\n", @@ -826,21 +888,21 @@ " 0.0\n", " 0.0\n", " ...\n", - " 0.0\n", + " 1.0\n", " 0.0\n", " False\n", " False\n", " 0\n", - " 2.996\n", - " 0.0\n", - " 0.000\n", - " 5.601202\n", + " 2.564453\n", + " 0.000000\n", + " 0.000000\n", + " 4.529309\n", " 1\n", " \n", " \n", - " 190134\n", - " 0_tours\n", + " 191185\n", " 0_tours\n", + " 1_Shop\n", " 1.0\n", " 0.0\n", " 0.0\n", @@ -855,16 +917,16 @@ " False\n", " False\n", " 0\n", - " 2.996\n", - " 0.0\n", - " 0.000\n", - " 5.941369\n", - " 1\n", + " 2.996094\n", + " 0.000000\n", + " 0.000000\n", + " 4.015752\n", + " 2\n", " \n", " \n", - " 190153\n", - " 0_tours\n", + " 191276\n", " 0_tours\n", + " 1_Disc\n", " 1.0\n", " 0.0\n", " 0.0\n", @@ -879,11 +941,11 @@ " False\n", " False\n", " 0\n", - " 2.996\n", - " 0.0\n", - " 0.000\n", - " 5.876868\n", - " 1\n", + " 2.996094\n", + " 0.000000\n", + " 0.000000\n", + " 4.422027\n", + " 6\n", " \n", " \n", " ...\n", @@ -910,38 +972,38 @@ " ...\n", " \n", " \n", - " 2749929\n", + " 2759076\n", " 0_tours\n", " 0_tours\n", " 1.0\n", + " 2.0\n", " 0.0\n", " 0.0\n", - " 0.0\n", - " 0.0\n", + " 1.0\n", " 0.0\n", " 0.0\n", " 0.0\n", " ...\n", - " 0.0\n", " 1.0\n", + " 2.0\n", " False\n", " True\n", " 0\n", - " 2.303\n", - " 0.0\n", - " 2.484\n", - " 3.937425\n", + " 2.996094\n", + " 1.946289\n", + " 2.564453\n", + " 6.481015\n", " 1\n", " \n", " \n", - " 2749970\n", + " 2759264\n", " 0_tours\n", " 0_tours\n", " 1.0\n", + " 1.0\n", " 0.0\n", " 0.0\n", " 0.0\n", - " 1.0\n", " 0.0\n", " 0.0\n", " 0.0\n", @@ -951,16 +1013,16 @@ " False\n", " True\n", " 0\n", - " 2.996\n", - " 0.0\n", - " 0.000\n", - " 5.523326\n", + " 2.996094\n", + " 0.000000\n", + " 0.000000\n", + " 6.343830\n", " 1\n", " \n", " \n", - " 2750003\n", - " 0_tours\n", + " 2759425\n", " 0_tours\n", + " 1_Disc\n", " 1.0\n", " 0.0\n", " 0.0\n", @@ -970,20 +1032,20 @@ " 0.0\n", " 0.0\n", " ...\n", - " 0.0\n", + " 1.0\n", " 0.0\n", " False\n", " True\n", " 0\n", - " 2.080\n", - " 0.0\n", - " 0.000\n", - " 6.289115\n", - " 1\n", + " 2.996094\n", + " 0.000000\n", + " 2.996094\n", + " 4.507081\n", + " 6\n", " \n", " \n", - " 2758909\n", - " 0_tours\n", + " 2760422\n", + " 1_Shop\n", " 0_tours\n", " 1.0\n", " 0.0\n", @@ -999,14 +1061,14 @@ " False\n", " True\n", " 0\n", - " 2.484\n", - " 0.0\n", - " 0.000\n", - " 6.677761\n", + " 2.197266\n", + " 0.000000\n", + " 0.000000\n", + " 4.345421\n", " 1\n", " \n", " \n", - " 2759348\n", + " 2760425\n", " 0_tours\n", " 0_tours\n", " 1.0\n", @@ -1023,229 +1085,229 @@ " False\n", " True\n", " 0\n", - " 2.996\n", - " 0.0\n", - " 0.000\n", - " 5.760961\n", + " 2.080078\n", + " 0.000000\n", + " 0.000000\n", + " 3.586974\n", " 1\n", " \n", " \n", "\n", - "

1028 rows × 130 columns

\n", + "

13210 rows × 130 columns

\n", "" ], "text/plain": [ " model_choice override_choice \\\n", "household_id \n", - "189748 0_tours 0_tours \n", - "189758 1_Eat 1_Eat \n", - "189833 0_tours 0_tours \n", - "190134 0_tours 0_tours \n", - "190153 0_tours 0_tours \n", + "190236 0_tours 0_tours \n", + "190592 1_Disc 1_Eat \n", + "190998 0_tours 0_tours \n", + "191185 0_tours 1_Shop \n", + "191276 0_tours 1_Disc \n", "... ... ... \n", - "2749929 0_tours 0_tours \n", - "2749970 0_tours 0_tours \n", - "2750003 0_tours 0_tours \n", - "2758909 0_tours 0_tours \n", - "2759348 0_tours 0_tours \n", + "2759076 0_tours 0_tours \n", + "2759264 0_tours 0_tours \n", + "2759425 0_tours 1_Disc \n", + "2760422 1_Shop 0_tours \n", + "2760425 0_tours 0_tours \n", "\n", " util_alternative_specific_constants \\\n", "household_id \n", - "189748 1.0 \n", - "189758 1.0 \n", - "189833 1.0 \n", - "190134 1.0 \n", - "190153 1.0 \n", + "190236 1.0 \n", + "190592 1.0 \n", + "190998 1.0 \n", + "191185 1.0 \n", + "191276 1.0 \n", "... ... \n", - "2749929 1.0 \n", - "2749970 1.0 \n", - "2750003 1.0 \n", - "2758909 1.0 \n", - "2759348 1.0 \n", + "2759076 1.0 \n", + "2759264 1.0 \n", + "2759425 1.0 \n", + "2760422 1.0 \n", + "2760425 1.0 \n", "\n", " util_fullTimeHomeMaxThree_zero_tours \\\n", "household_id \n", - "189748 0.0 \n", - "189758 0.0 \n", - "189833 0.0 \n", - "190134 0.0 \n", - "190153 0.0 \n", + "190236 0.0 \n", + "190592 0.0 \n", + "190998 0.0 \n", + "191185 0.0 \n", + "191276 0.0 \n", "... ... \n", - "2749929 0.0 \n", - "2749970 0.0 \n", - "2750003 0.0 \n", - "2758909 0.0 \n", - "2759348 0.0 \n", + "2759076 2.0 \n", + "2759264 1.0 \n", + "2759425 0.0 \n", + "2760422 0.0 \n", + "2760425 0.0 \n", "\n", " util_partTimeHomeMaxThree_zero_tours \\\n", "household_id \n", - "189748 0.0 \n", - "189758 0.0 \n", - "189833 0.0 \n", - "190134 0.0 \n", - "190153 0.0 \n", + "190236 0.0 \n", + "190592 0.0 \n", + "190998 0.0 \n", + "191185 0.0 \n", + "191276 0.0 \n", "... ... \n", - "2749929 0.0 \n", - "2749970 0.0 \n", - "2750003 0.0 \n", - "2758909 0.0 \n", - "2759348 0.0 \n", + "2759076 0.0 \n", + "2759264 0.0 \n", + "2759425 0.0 \n", + "2760422 0.0 \n", + "2760425 0.0 \n", "\n", " util_nonWorkerHomeMaxThree_zero_tours \\\n", "household_id \n", - "189748 0.0 \n", - "189758 0.0 \n", - "189833 0.0 \n", - "190134 0.0 \n", - "190153 0.0 \n", + "190236 0.0 \n", + "190592 0.0 \n", + "190998 0.0 \n", + "191185 0.0 \n", + "191276 0.0 \n", "... ... \n", - "2749929 0.0 \n", - "2749970 0.0 \n", - "2750003 0.0 \n", - "2758909 0.0 \n", - "2759348 0.0 \n", + "2759076 0.0 \n", + "2759264 0.0 \n", + "2759425 0.0 \n", + "2760422 0.0 \n", + "2760425 0.0 \n", "\n", " util_retireeHomeMaxThree_zero_tours \\\n", "household_id \n", - "189748 0.0 \n", - "189758 0.0 \n", - "189833 0.0 \n", - "190134 0.0 \n", - "190153 0.0 \n", + "190236 0.0 \n", + "190592 0.0 \n", + "190998 0.0 \n", + "191185 0.0 \n", + "191276 0.0 \n", "... ... \n", - "2749929 0.0 \n", - "2749970 1.0 \n", - "2750003 0.0 \n", - "2758909 0.0 \n", - "2759348 0.0 \n", + "2759076 1.0 \n", + "2759264 0.0 \n", + "2759425 0.0 \n", + "2760422 0.0 \n", + "2760425 0.0 \n", "\n", " util_universityHomeMaxThree_univ_and_driving_zero_tours \\\n", "household_id \n", - "189748 0.0 \n", - "189758 0.0 \n", - "189833 0.0 \n", - "190134 0.0 \n", - "190153 0.0 \n", + "190236 0.0 \n", + "190592 0.0 \n", + "190998 0.0 \n", + "191185 0.0 \n", + "191276 0.0 \n", "... ... \n", - "2749929 0.0 \n", - "2749970 0.0 \n", - "2750003 0.0 \n", - "2758909 0.0 \n", - "2759348 0.0 \n", + "2759076 0.0 \n", + "2759264 0.0 \n", + "2759425 0.0 \n", + "2760422 0.0 \n", + "2760425 0.0 \n", "\n", " util_preDrivingHomeMaxThree_preschool_and_school_zero_tours \\\n", "household_id \n", - "189748 0.0 \n", - "189758 0.0 \n", - "189833 0.0 \n", - "190134 0.0 \n", - "190153 0.0 \n", + "190236 0.0 \n", + "190592 0.0 \n", + "190998 0.0 \n", + "191185 0.0 \n", + "191276 0.0 \n", "... ... \n", - "2749929 0.0 \n", - "2749970 0.0 \n", - "2750003 0.0 \n", - "2758909 0.0 \n", - "2759348 0.0 \n", + "2759076 0.0 \n", + "2759264 0.0 \n", + "2759425 0.0 \n", + "2760422 0.0 \n", + "2760425 0.0 \n", "\n", " util_fullTimeNonMandMaxThree_shopping ... \\\n", "household_id ... \n", - "189748 0.0 ... \n", - "189758 0.0 ... \n", - "189833 0.0 ... \n", - "190134 0.0 ... \n", - "190153 0.0 ... \n", + "190236 0.0 ... \n", + "190592 0.0 ... \n", + "190998 0.0 ... \n", + "191185 0.0 ... \n", + "191276 0.0 ... \n", "... ... ... \n", - "2749929 0.0 ... \n", - "2749970 0.0 ... \n", - "2750003 0.0 ... \n", - "2758909 0.0 ... \n", - "2759348 0.0 ... \n", + "2759076 0.0 ... \n", + "2759264 0.0 ... \n", + "2759425 0.0 ... \n", + "2760422 0.0 ... \n", + "2760425 0.0 ... \n", "\n", " cdap_mand_univ_driving_max3 cdap_mand_nondriving_child_max3 \\\n", "household_id \n", - "189748 0.0 0.0 \n", - "189758 2.0 0.0 \n", - "189833 0.0 0.0 \n", - "190134 0.0 0.0 \n", - "190153 0.0 0.0 \n", + "190236 1.0 0.0 \n", + "190592 0.0 0.0 \n", + "190998 1.0 0.0 \n", + "191185 0.0 0.0 \n", + "191276 0.0 0.0 \n", "... ... ... \n", - "2749929 0.0 1.0 \n", - "2749970 0.0 0.0 \n", - "2750003 0.0 0.0 \n", - "2758909 0.0 0.0 \n", - "2759348 0.0 0.0 \n", + "2759076 1.0 2.0 \n", + "2759264 0.0 0.0 \n", + "2759425 1.0 0.0 \n", + "2760422 0.0 0.0 \n", + "2760425 0.0 0.0 \n", "\n", " income_between_50_and_100 income_greater_than_100 \\\n", "household_id \n", - "189748 False False \n", - "189758 False False \n", - "189833 False False \n", - "190134 False False \n", - "190153 False False \n", + "190236 False False \n", + "190592 False False \n", + "190998 False False \n", + "191185 False False \n", + "191276 False False \n", "... ... ... \n", - "2749929 False True \n", - "2749970 False True \n", - "2750003 False True \n", - "2758909 False True \n", - "2759348 False True \n", + "2759076 False True \n", + "2759264 False True \n", + "2759425 False True \n", + "2760422 False True \n", + "2760425 False True \n", "\n", " income_missing log_time_window_overlap_adult \\\n", "household_id \n", - "189748 0 2.996 \n", - "189758 0 2.303 \n", - "189833 0 2.996 \n", - "190134 0 2.996 \n", - "190153 0 2.996 \n", + "190236 0 2.996094 \n", + "190592 0 2.996094 \n", + "190998 0 2.564453 \n", + "191185 0 2.996094 \n", + "191276 0 2.996094 \n", "... ... ... \n", - "2749929 0 2.303 \n", - "2749970 0 2.996 \n", - "2750003 0 2.080 \n", - "2758909 0 2.484 \n", - "2759348 0 2.996 \n", + "2759076 0 2.996094 \n", + "2759264 0 2.996094 \n", + "2759425 0 2.996094 \n", + "2760422 0 2.197266 \n", + "2760425 0 2.080078 \n", "\n", " log_time_window_overlap_child \\\n", "household_id \n", - "189748 0.0 \n", - "189758 0.0 \n", - "189833 0.0 \n", - "190134 0.0 \n", - "190153 0.0 \n", + "190236 0.000000 \n", + "190592 0.000000 \n", + "190998 0.000000 \n", + "191185 0.000000 \n", + "191276 0.000000 \n", "... ... \n", - "2749929 0.0 \n", - "2749970 0.0 \n", - "2750003 0.0 \n", - "2758909 0.0 \n", - "2759348 0.0 \n", + "2759076 1.946289 \n", + "2759264 0.000000 \n", + "2759425 0.000000 \n", + "2760422 0.000000 \n", + "2760425 0.000000 \n", "\n", " log_time_window_overlap_adult_child \\\n", "household_id \n", - "189748 0.000 \n", - "189758 0.000 \n", - "189833 0.000 \n", - "190134 0.000 \n", - "190153 0.000 \n", + "190236 0.000000 \n", + "190592 0.000000 \n", + "190998 0.000000 \n", + "191185 0.000000 \n", + "191276 0.000000 \n", "... ... \n", - "2749929 2.484 \n", - "2749970 0.000 \n", - "2750003 0.000 \n", - "2758909 0.000 \n", - "2759348 0.000 \n", + "2759076 2.564453 \n", + "2759264 0.000000 \n", + "2759425 2.996094 \n", + "2760422 0.000000 \n", + "2760425 0.000000 \n", "\n", " non_motorized_retail_accessibility override_choice_code \n", "household_id \n", - "189748 6.041458 1 \n", - "189758 6.035642 4 \n", - "189833 5.601202 1 \n", - "190134 5.941369 1 \n", - "190153 5.876868 1 \n", + "190236 5.661266 1 \n", + "190592 5.384032 4 \n", + "190998 4.529309 1 \n", + "191185 4.015752 2 \n", + "191276 4.422027 6 \n", "... ... ... \n", - "2749929 3.937425 1 \n", - "2749970 5.523326 1 \n", - "2750003 6.289115 1 \n", - "2758909 6.677761 1 \n", - "2759348 5.760961 1 \n", + "2759076 6.481015 1 \n", + "2759264 6.343830 1 \n", + "2759425 4.507081 6 \n", + "2760422 4.345421 1 \n", + "2760425 3.586974 1 \n", "\n", - "[1028 rows x 130 columns]" + "[13210 rows x 130 columns]" ] }, "execution_count": 6, @@ -1271,17 +1333,10 @@ "execution_count": 7, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "req_data does not request avail_ca or avail_co but it is set and being provided\n" - ] - }, { "data": { "text/html": [ - "

Iteration 067 [Optimization terminated successfully]

" + "

Iteration 061 [Optimization terminated successfully]

" ], "text/plain": [ "" @@ -1293,7 +1348,7 @@ { "data": { "text/html": [ - "

Best LL = -391.31509615209995

" + "

Best LL = -5583.026333343983

" ], "text/plain": [ "" @@ -1324,70 +1379,74 @@ " \n", " \n", " value\n", + " best\n", " initvalue\n", - " nullvalue\n", " minimum\n", " maximum\n", + " nullvalue\n", " holdfast\n", - " note\n", - " best\n", + " \n", + " \n", + " param_name\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " coef_asc_0_tours\n", " 0.000000\n", + " 0.000000\n", " 0.0000\n", " 0.0\n", - " NaN\n", - " NaN\n", + " 0.0\n", + " 0.0\n", " 1\n", - " \n", - " 0.000000\n", " \n", " \n", " coef_asc_1_Disc\n", - " -5.857843\n", + " -5.351766\n", + " -5.351766\n", " -5.4806\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -5.857843\n", " \n", " \n", " coef_asc_1_Eat\n", - " -5.140469\n", + " -6.074061\n", + " -6.074061\n", " -6.3757\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -5.140469\n", " \n", " \n", " coef_asc_1_Main\n", - " -4.843654\n", + " -5.816690\n", + " -5.816690\n", " -5.7389\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -4.843654\n", " \n", " \n", " coef_asc_1_Shop\n", - " -7.244895\n", + " -6.045190\n", + " -6.045190\n", " -6.0149\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -7.244895\n", " \n", " \n", " ...\n", @@ -1398,124 +1457,97 @@ " ...\n", " ...\n", " ...\n", - " ...\n", " \n", " \n", " coef_universityNonMandMaxThree_shopping\n", - " 1.134054\n", + " 0.857729\n", + " 0.857729\n", " 0.7648\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.134054\n", " \n", " \n", " coef_universityNonMandMaxThree_visiting\n", - " -18.048773\n", + " 0.282416\n", + " 0.282416\n", " 0.2809\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -18.048773\n", " \n", " \n", " coef_walkRetailAccessibility_eatout\n", - " -0.027363\n", + " 0.042572\n", + " 0.042572\n", " 0.0620\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.027363\n", " \n", " \n", " coef_zeroAutomobiles_disc\n", - " -0.539939\n", + " -0.953758\n", + " -0.953758\n", " -0.9090\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.539939\n", " \n", " \n", " coef_zeroAutomobiles_visiting\n", - " -18.311268\n", + " -0.900518\n", + " -0.900518\n", " -0.9800\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -18.311268\n", " \n", " \n", "\n", - "

76 rows × 8 columns

\n", + "

76 rows × 7 columns

\n", "" ], "text/plain": [ - " value initvalue nullvalue \\\n", - "coef_asc_0_tours 0.000000 0.0000 0.0 \n", - "coef_asc_1_Disc -5.857843 -5.4806 0.0 \n", - "coef_asc_1_Eat -5.140469 -6.3757 0.0 \n", - "coef_asc_1_Main -4.843654 -5.7389 0.0 \n", - "coef_asc_1_Shop -7.244895 -6.0149 0.0 \n", - "... ... ... ... \n", - "coef_universityNonMandMaxThree_shopping 1.134054 0.7648 0.0 \n", - "coef_universityNonMandMaxThree_visiting -18.048773 0.2809 0.0 \n", - "coef_walkRetailAccessibility_eatout -0.027363 0.0620 0.0 \n", - "coef_zeroAutomobiles_disc -0.539939 -0.9090 0.0 \n", - "coef_zeroAutomobiles_visiting -18.311268 -0.9800 0.0 \n", + " value best initvalue \\\n", + "param_name \n", + "coef_asc_0_tours 0.000000 0.000000 0.0000 \n", + "coef_asc_1_Disc -5.351766 -5.351766 -5.4806 \n", + "coef_asc_1_Eat -6.074061 -6.074061 -6.3757 \n", + "coef_asc_1_Main -5.816690 -5.816690 -5.7389 \n", + "coef_asc_1_Shop -6.045190 -6.045190 -6.0149 \n", + "... ... ... ... \n", + "coef_universityNonMandMaxThree_shopping 0.857729 0.857729 0.7648 \n", + "coef_universityNonMandMaxThree_visiting 0.282416 0.282416 0.2809 \n", + "coef_walkRetailAccessibility_eatout 0.042572 0.042572 0.0620 \n", + "coef_zeroAutomobiles_disc -0.953758 -0.953758 -0.9090 \n", + "coef_zeroAutomobiles_visiting -0.900518 -0.900518 -0.9800 \n", "\n", - " minimum maximum holdfast note \\\n", - "coef_asc_0_tours NaN NaN 1 \n", - "coef_asc_1_Disc NaN NaN 0 \n", - "coef_asc_1_Eat NaN NaN 0 \n", - "coef_asc_1_Main NaN NaN 0 \n", - "coef_asc_1_Shop NaN NaN 0 \n", - "... ... ... ... ... \n", - "coef_universityNonMandMaxThree_shopping NaN NaN 0 \n", - "coef_universityNonMandMaxThree_visiting NaN NaN 0 \n", - "coef_walkRetailAccessibility_eatout NaN NaN 0 \n", - "coef_zeroAutomobiles_disc NaN NaN 0 \n", - "coef_zeroAutomobiles_visiting NaN NaN 0 \n", + " minimum maximum nullvalue holdfast \n", + "param_name \n", + "coef_asc_0_tours 0.0 0.0 0.0 1 \n", + "coef_asc_1_Disc -50.0 50.0 0.0 0 \n", + "coef_asc_1_Eat -50.0 50.0 0.0 0 \n", + "coef_asc_1_Main -50.0 50.0 0.0 0 \n", + "coef_asc_1_Shop -50.0 50.0 0.0 0 \n", + "... ... ... ... ... \n", + "coef_universityNonMandMaxThree_shopping -50.0 50.0 0.0 0 \n", + "coef_universityNonMandMaxThree_visiting -50.0 50.0 0.0 0 \n", + "coef_walkRetailAccessibility_eatout -50.0 50.0 0.0 0 \n", + "coef_zeroAutomobiles_disc -50.0 50.0 0.0 0 \n", + "coef_zeroAutomobiles_visiting -50.0 50.0 0.0 0 \n", "\n", - " best \n", - "coef_asc_0_tours 0.000000 \n", - "coef_asc_1_Disc -5.857843 \n", - "coef_asc_1_Eat -5.140469 \n", - "coef_asc_1_Main -4.843654 \n", - "coef_asc_1_Shop -7.244895 \n", - "... ... \n", - "coef_universityNonMandMaxThree_shopping 1.134054 \n", - "coef_universityNonMandMaxThree_visiting -18.048773 \n", - "coef_walkRetailAccessibility_eatout -0.027363 \n", - "coef_zeroAutomobiles_disc -0.539939 \n", - "coef_zeroAutomobiles_visiting -18.311268 \n", - "\n", - "[76 rows x 8 columns]" + "[76 rows x 7 columns]" ] }, "metadata": {}, "output_type": "display_data" }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - ":1: PossibleOverspecification: WARNING: Model is possibly over-specified (hessian is nearly singular).\n", - " model.estimate(method='SLSQP')\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.4504151870310519e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n" - ] - }, { "data": { "text/html": [ @@ -1529,310 +1561,310 @@ " \n", " \n", " coef_asc_0_tours\n", - " 4.128662e-14\n", + " 0.000000\n", " \n", " \n", " coef_asc_1_Disc\n", - " -5.857843e+00\n", + " -5.351766\n", " \n", " \n", " coef_asc_1_Eat\n", - " -5.140469e+00\n", + " -6.074061\n", " \n", " \n", " coef_asc_1_Main\n", - " -4.843654e+00\n", + " -5.816690\n", " \n", " \n", " coef_asc_1_Shop\n", - " -7.244895e+00\n", + " -6.045190\n", " \n", " \n", " coef_asc_1_Visit\n", - " -5.962149e+00\n", + " -5.839951\n", " \n", " \n", " coef_asc_2_tours\n", - " -1.537957e+01\n", + " -14.545006\n", " \n", " \n", " coef_drivingAgeStuMandMaxThree_disc\n", - " 2.642061e-01\n", + " 0.283573\n", " \n", " \n", " coef_drivingAgeStuMandMaxThree_maint\n", - " -2.049784e-01\n", + " -0.332304\n", " \n", " \n", " coef_fewerCarsThanDrivers_maint\n", - " -2.361602e-01\n", + " 0.768933\n", " \n", " \n", " coef_fewerCarsThanDrivers_shopping\n", - " 6.120417e-01\n", + " 0.173631\n", " \n", " \n", " coef_fullTimeHomeMaxThree_zero_tours\n", - " 2.001437e+00\n", + " 0.941096\n", " \n", " \n", " coef_fullTimeMandMaxThree_maint\n", - " -4.624882e-01\n", + " -0.397212\n", " \n", " \n", " coef_fullTimeMandMaxThree_shopping\n", - " 1.435394e-01\n", + " -0.402774\n", " \n", " \n", " coef_fullTimeNonMandMaxThree_disc\n", - " 2.181760e-01\n", + " -0.019740\n", " \n", " \n", " coef_fullTimeNonMandMaxThree_eatout\n", - " 3.257307e-01\n", + " 0.053619\n", " \n", " \n", " coef_fullTimeNonMandMaxThree_maint\n", - " 7.596262e-01\n", + " 0.114785\n", " \n", " \n", " coef_fullTimeNonMandMaxThree_shopping\n", - " -8.881290e-01\n", + " -0.253055\n", " \n", " \n", " coef_fullTimeNonMandMaxThree_visiting\n", - " 7.885926e-01\n", + " 0.750690\n", " \n", " \n", " coef_incomeBetween50And100_disc\n", - " 8.352921e-03\n", + " 0.132487\n", " \n", " \n", " coef_incomeBetween50And100_eatout\n", - " 1.031886e-01\n", + " 0.268954\n", " \n", " \n", " coef_incomeGreaterThan100_disc\n", - " 6.249345e-01\n", + " 0.366581\n", " \n", " \n", " coef_incomeGreaterThan100_eatout\n", - " 6.353587e-01\n", + " 0.493932\n", " \n", " \n", " coef_incomeMissing_dummy_always_zero_disc\n", - " 3.723000e-01\n", + " 0.372300\n", " \n", " \n", " coef_incomeMissing_dummy_always_zero_eatout\n", - " 2.780000e-01\n", + " 0.278000\n", " \n", " \n", " coef_logTimeWindowOverlapAdultChild_disc\n", - " 1.502560e-01\n", + " 0.303504\n", " \n", " \n", " coef_logTimeWindowOverlapAdultChild_eatout\n", - " -3.203806e-01\n", + " -0.094351\n", " \n", " \n", " coef_logTimeWindowOverlapAdultChild_maint\n", - " 2.695922e-01\n", + " 0.398958\n", " \n", " \n", " coef_logTimeWindowOverlapAdultChild_shopping\n", - " -4.153246e-01\n", + " 0.017970\n", " \n", " \n", " coef_logTimeWindowOverlapAdult_disc\n", - " 5.596579e-01\n", + " 0.411850\n", " \n", " \n", " coef_logTimeWindowOverlapAdult_eatout\n", - " 5.606143e-01\n", + " 0.467283\n", " \n", " \n", " coef_logTimeWindowOverlapAdult_maint\n", - " 4.376387e-01\n", + " 0.359818\n", " \n", " \n", " coef_logTimeWindowOverlapAdult_shopping\n", - " 8.640588e-01\n", + " 0.862228\n", " \n", " \n", " coef_logTimeWindowOverlapChild_disc\n", - " -1.693893e-01\n", + " 0.150068\n", " \n", " \n", " coef_logTimeWindowOverlapChild_maint\n", - " -1.037855e-02\n", + " 0.295107\n", " \n", " \n", " coef_logTimeWindowOverlapChild_shopping\n", - " 1.036654e+00\n", + " 0.255944\n", " \n", " \n", " coef_moreCarsThanWorkers_eatout\n", - " 7.948089e-02\n", + " 0.294865\n", " \n", " \n", " coef_moreCarsThanWorkers_shopping\n", - " -6.278022e-01\n", + " -0.551877\n", " \n", " \n", " coef_nonWorkerHomeMaxThree_zero_tours\n", - " -1.694121e-01\n", + " 0.379269\n", " \n", " \n", " coef_nonWorkerNonMandMaxThree_disc\n", - " -1.190124e-01\n", + " 0.120934\n", " \n", " \n", " coef_nonWorkerNonMandMaxThree_eatout\n", - " -3.544771e-01\n", + " 0.045074\n", " \n", " \n", " coef_nonWorkerNonMandMaxThree_maint\n", - " 3.725508e-01\n", + " 0.351215\n", " \n", " \n", " coef_nonWorkerNonMandMaxThree_shopping\n", - " 5.232632e-01\n", + " 0.422604\n", " \n", " \n", " coef_nonWorkerNonMandMaxThree_visiting\n", - " -3.598996e-01\n", + " 0.454085\n", " \n", " \n", " coef_partTimeHomeMaxThree_zero_tours\n", - " 1.700075e+00\n", + " 0.928683\n", " \n", " \n", " coef_partTimeNonMandMaxThree_disc\n", - " 2.264406e-01\n", + " 0.668232\n", " \n", " \n", " coef_partTimeNonMandMaxThree_eatout\n", - " -1.577062e+01\n", + " 0.381935\n", " \n", " \n", " coef_partTimeNonMandMaxThree_maint\n", - " 1.215592e-01\n", + " 0.071116\n", " \n", " \n", " coef_partTimeNonMandMaxThree_shopping\n", - " -1.914973e-01\n", + " -0.021127\n", " \n", " \n", " coef_partTimeNonMandMaxThree_visiting\n", - " 3.484080e-01\n", + " 0.417675\n", " \n", " \n", " coef_preDrivingAgeMandMaxThree_disc\n", - " 5.883044e-01\n", + " 0.133605\n", " \n", " \n", " coef_preDrivingAgeMandMaxThree_maint\n", - " 5.724992e-02\n", + " 0.065271\n", " \n", " \n", " coef_preDrivingHomeMaxThree_preschool_and_school_zero_tours\n", - " -2.649396e-01\n", + " 0.086034\n", " \n", " \n", " coef_preDrivingNonMandMaxThree_disc\n", - " 4.697889e-01\n", + " 0.189119\n", " \n", " \n", " coef_preDrivingNonMandMaxThree_eatout\n", - " -1.367435e+01\n", + " 0.700510\n", " \n", " \n", " coef_preDrivingNonMandMaxThree_maint\n", - " -4.780032e-01\n", + " 0.163703\n", " \n", " \n", " coef_preDrivingNonMandMaxThree_shopping\n", - " 5.401680e-03\n", + " 0.448199\n", " \n", " \n", " coef_preDrivingNonMandMaxThree_visiting\n", - " -1.728326e+00\n", + " 0.241003\n", " \n", " \n", " coef_retireeHomeMaxThree_zero_tours\n", - " 3.072054e-01\n", + " 0.332620\n", " \n", " \n", " coef_retireeNonMandMaxThree_disc\n", - " 5.953927e-01\n", + " 0.596927\n", " \n", " \n", " coef_retireeNonMandMaxThree_eatout\n", - " 3.370647e-01\n", + " 0.444051\n", " \n", " \n", " coef_retireeNonMandMaxThree_maint\n", - " 9.306423e-01\n", + " 0.935537\n", " \n", " \n", " coef_retireeNonMandMaxThree_shopping\n", - " 9.523557e-01\n", + " 0.888533\n", " \n", " \n", " coef_retireeNonMandMaxThree_visiting\n", - " 1.743228e-01\n", + " 0.313616\n", " \n", " \n", " coef_timeWindowOverlapAdultChild_visiting\n", - " 1.404939e-01\n", + " 0.032122\n", " \n", " \n", " coef_timeWindowOverlapAdult_visiting\n", - " 1.103018e-01\n", + " 0.062728\n", " \n", " \n", " coef_timeWindowOverlapChild_visiting\n", - " -6.064464e-02\n", + " 0.037481\n", " \n", " \n", " coef_universityHomeMaxThree_univ_and_driving_zero_tours\n", - " -4.104066e-01\n", + " 0.115748\n", " \n", " \n", " coef_universityNonMandMaxThree_disc\n", - " -1.447281e-01\n", + " 0.478898\n", " \n", " \n", " coef_universityNonMandMaxThree_eatout\n", - " -1.408027e+01\n", + " 0.447854\n", " \n", " \n", " coef_universityNonMandMaxThree_maint\n", - " -4.377287e-01\n", + " -0.157965\n", " \n", " \n", " coef_universityNonMandMaxThree_shopping\n", - " 1.134054e+00\n", + " 0.857729\n", " \n", " \n", " coef_universityNonMandMaxThree_visiting\n", - " -1.804877e+01\n", + " 0.282416\n", " \n", " \n", " coef_walkRetailAccessibility_eatout\n", - " -2.736284e-02\n", + " 0.042572\n", " \n", " \n", " coef_zeroAutomobiles_disc\n", - " -5.399391e-01\n", + " -0.953758\n", " \n", " \n", " coef_zeroAutomobiles_visiting\n", - " -1.831127e+01\n", + " -0.900518\n", " \n", " \n", - "loglike-391.31509615209995d_loglike\n", + "
logloss0.4226363613432236d_logloss\n", " \n", " \n", " \n", @@ -1842,348 +1874,348 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - "
coef_asc_0_tours0.000000e+000.000000
coef_asc_1_Disc1.523003e-040.000127
coef_asc_1_Eat6.759891e-050.000172
coef_asc_1_Main-2.935726e-04-0.000055
coef_asc_1_Shop-2.605190e-04-0.000097
coef_asc_1_Visit-1.539399e-04-0.000019
coef_asc_2_tours-7.190405e-050.000045
coef_drivingAgeStuMandMaxThree_disc-1.208006e-040.000034
coef_drivingAgeStuMandMaxThree_maint6.022683e-050.000009
coef_fewerCarsThanDrivers_maint-1.544212e-040.000025
coef_fewerCarsThanDrivers_shopping-5.384239e-050.000060
coef_fullTimeHomeMaxThree_zero_tours-2.514724e-040.000088
coef_fullTimeMandMaxThree_maint-2.064152e-04-0.000002
coef_fullTimeMandMaxThree_shopping-2.409727e-040.000014
coef_fullTimeNonMandMaxThree_disc1.867895e-040.000047
coef_fullTimeNonMandMaxThree_eatout-5.229114e-050.000034
coef_fullTimeNonMandMaxThree_maint-1.708359e-04-0.000036
coef_fullTimeNonMandMaxThree_shopping-8.986588e-050.000025
coef_fullTimeNonMandMaxThree_visiting-1.238448e-040.000019
coef_incomeBetween50And100_disc-3.214932e-040.000033
coef_incomeBetween50And100_eatout2.548977e-050.000004
coef_incomeGreaterThan100_disc1.527594e-050.000088
coef_incomeGreaterThan100_eatout-1.190833e-04-0.000003
coef_incomeMissing_dummy_always_zero_disc0.000000e+000.000000
coef_incomeMissing_dummy_always_zero_eatout0.000000e+000.000000
coef_logTimeWindowOverlapAdultChild_disc6.268423e-040.000322
coef_logTimeWindowOverlapAdultChild_eatout4.738068e-050.000270
coef_logTimeWindowOverlapAdultChild_maint-5.205643e-040.000069
coef_logTimeWindowOverlapAdultChild_shopping-7.016522e-040.000017
coef_logTimeWindowOverlapAdult_disc8.132405e-040.000280
coef_logTimeWindowOverlapAdult_eatout-5.191213e-050.000106
coef_logTimeWindowOverlapAdult_maint-7.074150e-04-0.000079
coef_logTimeWindowOverlapAdult_shopping-9.068285e-040.000016
coef_logTimeWindowOverlapChild_disc3.313056e-040.000050
coef_logTimeWindowOverlapChild_maint-3.411335e-04-0.000033
coef_logTimeWindowOverlapChild_shopping-6.088923e-040.000003
coef_moreCarsThanWorkers_eatout-1.693804e-040.000019
coef_moreCarsThanWorkers_shopping-7.535132e-05-0.000021
coef_nonWorkerHomeMaxThree_zero_tours1.546204e-04-0.000071
coef_nonWorkerNonMandMaxThree_disc2.251574e-04-0.000004
coef_nonWorkerNonMandMaxThree_eatout4.969366e-070.000084
coef_nonWorkerNonMandMaxThree_maint-8.922162e-050.000060
coef_nonWorkerNonMandMaxThree_shopping-2.254530e-04-0.000095
coef_nonWorkerNonMandMaxThree_visiting1.544757e-040.000032
coef_partTimeHomeMaxThree_zero_tours-5.144981e-050.000005
coef_partTimeNonMandMaxThree_disc1.814241e-040.000060
coef_partTimeNonMandMaxThree_eatout-3.175600e-07-0.000002
coef_partTimeNonMandMaxThree_maint-1.133846e-040.000030
coef_partTimeNonMandMaxThree_shopping1.063172e-040.000027
coef_partTimeNonMandMaxThree_visiting1.329104e-05-0.000037
coef_preDrivingAgeMandMaxThree_disc4.323394e-040.000164
coef_preDrivingAgeMandMaxThree_maint-1.660229e-040.000015
coef_preDrivingHomeMaxThree_preschool_and_school_zero_tours2.715906e-040.000030
coef_preDrivingNonMandMaxThree_disc9.520881e-050.000037
coef_preDrivingNonMandMaxThree_eatout-7.286290e-070.000027
coef_preDrivingNonMandMaxThree_maint-8.707705e-05-0.000060
coef_preDrivingNonMandMaxThree_shopping-7.017908e-050.000009
coef_preDrivingNonMandMaxThree_visiting1.106056e-040.000014
coef_retireeHomeMaxThree_zero_tours-3.000796e-040.000050
coef_retireeNonMandMaxThree_disc3.955978e-050.000028
coef_retireeNonMandMaxThree_eatout-8.864118e-05-0.000012
coef_retireeNonMandMaxThree_maint1.123175e-05-0.000058
coef_retireeNonMandMaxThree_shopping-8.375532e-050.000009
coef_retireeNonMandMaxThree_visiting-7.291644e-050.000075
coef_timeWindowOverlapAdultChild_visiting1.533203e-03-0.000362
coef_timeWindowOverlapAdult_visiting-4.187359e-040.000189
coef_timeWindowOverlapChild_visiting1.535922e-03-0.000253
coef_universityHomeMaxThree_univ_and_driving_zero_tours-2.916835e-040.000140
coef_universityNonMandMaxThree_disc4.189163e-050.000095
coef_universityNonMandMaxThree_eatout-6.392369e-070.000004
coef_universityNonMandMaxThree_maint-2.743951e-05-0.000123
coef_universityNonMandMaxThree_shopping-1.669075e-040.000013
coef_universityNonMandMaxThree_visiting-3.279064e-08-0.000090
coef_walkRetailAccessibility_eatout-3.988777e-040.000218
coef_zeroAutomobiles_disc-5.720641e-05-0.000027
coef_zeroAutomobiles_visiting-5.437687e-080.000058
nit67nfev131njev67status0message'Optimization terminated successfully'successTrueelapsed_time0:00:03.730310method'SLSQP'n_cases1028iteration_number67logloss0.3806567083191634" + "nit61nfev63njev61status0message'Optimization terminated successfully'successTrueelapsed_time0:00:02.374665method'SLSQP'n_cases13210iteration_number61loglike-5583.026333343983" ], "text/plain": [ - "┣ x: coef_asc_0_tours 4.128662e-14\n", - "┃ coef_asc_1_Disc -5.857843e+00\n", - "┃ coef_asc_1_Eat -5.140469e+00\n", - "┃ coef_asc_1_Main -4.843654e+00\n", - "┃ coef_asc_1_Shop -7.244895e+00\n", - "┃ ... \n", - "┃ coef_universityNonMandMaxThree_shopping 1.134054e+00\n", - "┃ coef_universityNonMandMaxThree_visiting -1.804877e+01\n", - "┃ coef_walkRetailAccessibility_eatout -2.736284e-02\n", - "┃ coef_zeroAutomobiles_disc -5.399391e-01\n", - "┃ coef_zeroAutomobiles_visiting -1.831127e+01\n", + "┣ x: coef_asc_0_tours 0.000000\n", + "┃ coef_asc_1_Disc -5.351766\n", + "┃ coef_asc_1_Eat -6.074061\n", + "┃ coef_asc_1_Main -5.816690\n", + "┃ coef_asc_1_Shop -6.045190\n", + "┃ ... \n", + "┃ coef_universityNonMandMaxThree_shopping 0.857729\n", + "┃ coef_universityNonMandMaxThree_visiting 0.282416\n", + "┃ coef_walkRetailAccessibility_eatout 0.042572\n", + "┃ coef_zeroAutomobiles_disc -0.953758\n", + "┃ coef_zeroAutomobiles_visiting -0.900518\n", "┃ Length: 76, dtype: float64\n", - "┣ loglike: -391.31509615209995\n", - "┣ d_loglike: coef_asc_0_tours 0.000000e+00\n", - "┃ coef_asc_1_Disc 1.523003e-04\n", - "┃ coef_asc_1_Eat 6.759891e-05\n", - "┃ coef_asc_1_Main -2.935726e-04\n", - "┃ coef_asc_1_Shop -2.605190e-04\n", - "┃ ... \n", - "┃ coef_universityNonMandMaxThree_shopping -1.669075e-04\n", - "┃ coef_universityNonMandMaxThree_visiting -3.279064e-08\n", - "┃ coef_walkRetailAccessibility_eatout -3.988777e-04\n", - "┃ coef_zeroAutomobiles_disc -5.720641e-05\n", - "┃ coef_zeroAutomobiles_visiting -5.437687e-08\n", + "┣ logloss: 0.4226363613432236\n", + "┣ d_logloss: coef_asc_0_tours 0.000000\n", + "┃ coef_asc_1_Disc 0.000127\n", + "┃ coef_asc_1_Eat 0.000172\n", + "┃ coef_asc_1_Main -0.000055\n", + "┃ coef_asc_1_Shop -0.000097\n", + "┃ ... \n", + "┃ coef_universityNonMandMaxThree_shopping 0.000013\n", + "┃ coef_universityNonMandMaxThree_visiting -0.000090\n", + "┃ coef_walkRetailAccessibility_eatout 0.000218\n", + "┃ coef_zeroAutomobiles_disc -0.000027\n", + "┃ coef_zeroAutomobiles_visiting 0.000058\n", "┃ Length: 76, dtype: float64\n", - "┣ nit: 67\n", - "┣ nfev: 131\n", - "┣ njev: 67\n", + "┣ nit: 61\n", + "┣ nfev: 63\n", + "┣ njev: 61\n", "┣ status: 0\n", "┣ message: 'Optimization terminated successfully'\n", "┣ success: True\n", - "┣ elapsed_time: datetime.timedelta(seconds=3, microseconds=730310)\n", + "┣ elapsed_time: datetime.timedelta(seconds=2, microseconds=374665)\n", "┣ method: 'SLSQP'\n", - "┣ n_cases: 1028\n", - "┣ iteration_number: 67\n", - "┣ logloss: 0.3806567083191634" + "┣ n_cases: 13210\n", + "┣ iteration_number: 61\n", + "┣ loglike: -5583.026333343983" ] }, "execution_count": 7, @@ -2210,704 +2242,730 @@ { "data": { "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Value Std Err t Stat Signif Null Value Constrained
coef_asc_0_tours 0.00 NA NA 0.00fixed value
coef_asc_1_Disc-5.86 1.09-5.39*** 0.00
coef_asc_1_Eat-5.14 2.07-2.48* 0.00
coef_asc_1_Main-4.84 0.973-4.98*** 0.00
coef_asc_1_Shop-7.24 1.18-6.14*** 0.00
coef_asc_1_Visit-5.96 0.749-7.96*** 0.00
coef_asc_2_tours-15.4 2.26-6.81*** 0.00
coef_drivingAgeStuMandMaxThree_disc 0.264 0.406 0.65 0.00
coef_drivingAgeStuMandMaxThree_maint-0.205 0.491-0.42 0.00
coef_fewerCarsThanDrivers_maint-0.236 0.439-0.54 0.00
coef_fewerCarsThanDrivers_shopping 0.612 0.596 1.03 0.00
coef_fullTimeHomeMaxThree_zero_tours 2.00 0.828 2.42* 0.00
coef_fullTimeMandMaxThree_maint-0.462 0.313-1.48 0.00
coef_fullTimeMandMaxThree_shopping 0.144 0.288 0.50 0.00
coef_fullTimeNonMandMaxThree_disc 0.218 0.569 0.38 0.00
coef_fullTimeNonMandMaxThree_eatout 0.326 0.669 0.49 0.00
coef_fullTimeNonMandMaxThree_maint 0.760 0.430 1.77 0.00
coef_fullTimeNonMandMaxThree_shopping-0.888 1.03-0.86 0.00
coef_fullTimeNonMandMaxThree_visiting 0.789 0.626 1.26 0.00
coef_incomeBetween50And100_disc 0.00835 0.621 0.01 0.00
coef_incomeBetween50And100_eatout 0.103 0.741 0.14 0.00
coef_incomeGreaterThan100_disc 0.625 0.562 1.11 0.00
coef_incomeGreaterThan100_eatout 0.635 0.684 0.93 0.00
coef_incomeMissing_dummy_always_zero_disc 0.372 0.000320 BIG*** 0.00
coef_incomeMissing_dummy_always_zero_eatout 0.278 0.000386 720.45*** 0.00
coef_logTimeWindowOverlapAdultChild_disc 0.150 0.322 0.47 0.00
coef_logTimeWindowOverlapAdultChild_eatout-0.320 0.337-0.95 0.00
coef_logTimeWindowOverlapAdultChild_maint 0.270 0.294 0.92 0.00
coef_logTimeWindowOverlapAdultChild_shopping-0.415 0.493-0.84 0.00
coef_logTimeWindowOverlapAdult_disc 0.560 0.501 1.12 0.00
coef_logTimeWindowOverlapAdult_eatout 0.561 0.692 0.81 0.00
coef_logTimeWindowOverlapAdult_maint 0.438 0.430 1.02 0.00
coef_logTimeWindowOverlapAdult_shopping 0.864 0.553 1.56 0.00
coef_logTimeWindowOverlapChild_disc-0.169 0.433-0.39 0.00
coef_logTimeWindowOverlapChild_maint-0.0104 0.373-0.03 0.00
coef_logTimeWindowOverlapChild_shopping 1.04 0.543 1.91 0.00
coef_moreCarsThanWorkers_eatout 0.0795 0.805 0.10 0.00
coef_moreCarsThanWorkers_shopping-0.628 0.690-0.91 0.00
coef_nonWorkerHomeMaxThree_zero_tours-0.169 0.391-0.43 0.00
coef_nonWorkerNonMandMaxThree_disc-0.119 0.447-0.27 0.00
coef_nonWorkerNonMandMaxThree_eatout-0.354 0.700-0.51 0.00
coef_nonWorkerNonMandMaxThree_maint 0.373 0.380 0.98 0.00
coef_nonWorkerNonMandMaxThree_shopping 0.523 0.427 1.23 0.00
coef_nonWorkerNonMandMaxThree_visiting-0.360 0.587-0.61 0.00
coef_partTimeHomeMaxThree_zero_tours 1.70 1.16 1.47 0.00
coef_partTimeNonMandMaxThree_disc 0.226 0.652 0.35 0.00
coef_partTimeNonMandMaxThree_eatout-15.8 2.42e+03-0.01 0.00
coef_partTimeNonMandMaxThree_maint 0.122 0.660 0.18 0.00
coef_partTimeNonMandMaxThree_shopping-0.191 0.769-0.25 0.00
coef_partTimeNonMandMaxThree_visiting 0.348 0.880 0.40 0.00
coef_preDrivingAgeMandMaxThree_disc 0.588 0.583 1.01 0.00
coef_preDrivingAgeMandMaxThree_maint 0.0572 0.514 0.11 0.00
coef_preDrivingHomeMaxThree_preschool_and_school_zero_tours-0.265 0.450-0.59 0.00
coef_preDrivingNonMandMaxThree_disc 0.470 0.853 0.55 0.00
coef_preDrivingNonMandMaxThree_eatout-13.7 1.56e+03-0.01 0.00
coef_preDrivingNonMandMaxThree_maint-0.478 0.924-0.52 0.00
coef_preDrivingNonMandMaxThree_shopping 0.00540 0.540 0.01 0.00
coef_preDrivingNonMandMaxThree_visiting-1.73 1.27-1.36 0.00
coef_retireeHomeMaxThree_zero_tours 0.307 0.771 0.40 0.00
coef_retireeNonMandMaxThree_disc 0.595 0.430 1.38 0.00
coef_retireeNonMandMaxThree_eatout 0.337 0.553 0.61 0.00
coef_retireeNonMandMaxThree_maint 0.931 0.376 2.47* 0.00
coef_retireeNonMandMaxThree_shopping 0.952 0.504 1.89 0.00
coef_retireeNonMandMaxThree_visiting 0.174 0.583 0.30 0.00
coef_timeWindowOverlapAdultChild_visiting 0.140 0.0547 2.57* 0.00
coef_timeWindowOverlapAdult_visiting 0.110 0.0692 1.59 0.00
coef_timeWindowOverlapChild_visiting-0.0606 0.0845-0.72 0.00
coef_universityHomeMaxThree_univ_and_driving_zero_tours-0.410 0.677-0.61 0.00
coef_universityNonMandMaxThree_disc-0.145 1.02-0.14 0.00
coef_universityNonMandMaxThree_eatout-14.1 1.67e+03-0.01 0.00
coef_universityNonMandMaxThree_maint-0.438 0.999-0.44 0.00
coef_universityNonMandMaxThree_shopping 1.13 0.556 2.04* 0.00
coef_universityNonMandMaxThree_visiting-18.0 7.88e+03-0.00 0.00
coef_walkRetailAccessibility_eatout-0.0274 0.237-0.12 0.00
coef_zeroAutomobiles_disc-0.540 0.771-0.70 0.00
coef_zeroAutomobiles_visiting-18.3 6.06e+03-0.00 0.00
" + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ValueStd Errt StatSignifNull ValueConstrained
Parameter      
coef_asc_0_tours 0.00 0.00 NA 0.00fixed value
coef_asc_1_Disc-5.35 0.217-24.68*** 0.00
coef_asc_1_Eat-6.07 0.382-15.88*** 0.00
coef_asc_1_Main-5.82 0.255-22.80*** 0.00
coef_asc_1_Shop-6.05 0.301-20.07*** 0.00
coef_asc_1_Visit-5.84 0.198-29.56*** 0.00
coef_asc_2_tours-14.5 0.456-31.88*** 0.00
coef_drivingAgeStuMandMaxThree_disc 0.284 0.0868 3.27** 0.00
coef_drivingAgeStuMandMaxThree_maint-0.332 0.148-2.24* 0.00
coef_fewerCarsThanDrivers_maint 0.769 0.142 5.42*** 0.00
coef_fewerCarsThanDrivers_shopping 0.174 0.141 1.23 0.00
coef_fullTimeHomeMaxThree_zero_tours 0.941 0.164 5.75*** 0.00
coef_fullTimeMandMaxThree_maint-0.397 0.0912-4.36*** 0.00
coef_fullTimeMandMaxThree_shopping-0.403 0.0941-4.28*** 0.00
coef_fullTimeNonMandMaxThree_disc-0.0197 0.143-0.14 0.00
coef_fullTimeNonMandMaxThree_eatout 0.0536 0.215 0.25 0.00
coef_fullTimeNonMandMaxThree_maint 0.115 0.177 0.65 0.00
coef_fullTimeNonMandMaxThree_shopping-0.253 0.198-1.28 0.00
coef_fullTimeNonMandMaxThree_visiting 0.751 0.171 4.38*** 0.00
coef_incomeBetween50And100_disc 0.132 0.128 1.04 0.00
coef_incomeBetween50And100_eatout 0.269 0.199 1.35 0.00
coef_incomeGreaterThan100_disc 0.367 0.125 2.94** 0.00
coef_incomeGreaterThan100_eatout 0.494 0.197 2.51* 0.00
coef_incomeMissing_dummy_always_zero_disc 0.372 7.15e-16 BIG*** 0.00
coef_incomeMissing_dummy_always_zero_eatout 0.278 9.58e-16 BIG*** 0.00
coef_logTimeWindowOverlapAdultChild_disc 0.304 0.0645 4.70*** 0.00
coef_logTimeWindowOverlapAdultChild_eatout-0.0944 0.0788-1.20 0.00
coef_logTimeWindowOverlapAdultChild_maint 0.399 0.0847 4.71*** 0.00
coef_logTimeWindowOverlapAdultChild_shopping 0.0180 0.0764 0.24 0.00
coef_logTimeWindowOverlapAdult_disc 0.412 0.101 4.09*** 0.00
coef_logTimeWindowOverlapAdult_eatout 0.467 0.167 2.80** 0.00
coef_logTimeWindowOverlapAdult_maint 0.360 0.117 3.07** 0.00
coef_logTimeWindowOverlapAdult_shopping 0.862 0.139 6.18*** 0.00
coef_logTimeWindowOverlapChild_disc 0.150 0.0771 1.95 0.00
coef_logTimeWindowOverlapChild_maint 0.295 0.0952 3.10** 0.00
coef_logTimeWindowOverlapChild_shopping 0.256 0.0873 2.93** 0.00
coef_moreCarsThanWorkers_eatout 0.295 0.188 1.57 0.00
coef_moreCarsThanWorkers_shopping-0.552 0.165-3.35*** 0.00
coef_nonWorkerHomeMaxThree_zero_tours 0.379 0.110 3.46*** 0.00
coef_nonWorkerNonMandMaxThree_disc 0.121 0.0878 1.38 0.00
coef_nonWorkerNonMandMaxThree_eatout 0.0451 0.150 0.30 0.00
coef_nonWorkerNonMandMaxThree_maint 0.351 0.104 3.37*** 0.00
coef_nonWorkerNonMandMaxThree_shopping 0.423 0.110 3.85*** 0.00
coef_nonWorkerNonMandMaxThree_visiting 0.454 0.139 3.26** 0.00
coef_partTimeHomeMaxThree_zero_tours 0.929 0.250 3.71*** 0.00
coef_partTimeNonMandMaxThree_disc 0.668 0.123 5.42*** 0.00
coef_partTimeNonMandMaxThree_eatout 0.382 0.210 1.82 0.00
coef_partTimeNonMandMaxThree_maint 0.0711 0.193 0.37 0.00
coef_partTimeNonMandMaxThree_shopping-0.0211 0.183-0.12 0.00
coef_partTimeNonMandMaxThree_visiting 0.418 0.214 1.95 0.00
coef_preDrivingAgeMandMaxThree_disc 0.134 0.0986 1.36 0.00
coef_preDrivingAgeMandMaxThree_maint 0.0653 0.118 0.56 0.00
coef_preDrivingHomeMaxThree_preschool_and_school_zero_tours 0.0860 0.102 0.85 0.00
coef_preDrivingNonMandMaxThree_disc 0.189 0.160 1.19 0.00
coef_preDrivingNonMandMaxThree_eatout 0.701 0.195 3.60*** 0.00
coef_preDrivingNonMandMaxThree_maint 0.164 0.190 0.86 0.00
coef_preDrivingNonMandMaxThree_shopping 0.448 0.152 2.95** 0.00
coef_preDrivingNonMandMaxThree_visiting 0.241 0.196 1.23 0.00
coef_retireeHomeMaxThree_zero_tours 0.333 0.175 1.90 0.00
coef_retireeNonMandMaxThree_disc 0.597 0.107 5.56*** 0.00
coef_retireeNonMandMaxThree_eatout 0.444 0.160 2.77** 0.00
coef_retireeNonMandMaxThree_maint 0.936 0.123 7.59*** 0.00
coef_retireeNonMandMaxThree_shopping 0.889 0.123 7.22*** 0.00
coef_retireeNonMandMaxThree_visiting 0.314 0.190 1.65 0.00
coef_timeWindowOverlapAdultChild_visiting 0.0321 0.0152 2.12* 0.00
coef_timeWindowOverlapAdult_visiting 0.0627 0.0194 3.24** 0.00
coef_timeWindowOverlapChild_visiting 0.0375 0.0181 2.08* 0.00
coef_universityHomeMaxThree_univ_and_driving_zero_tours 0.116 0.210 0.55 0.00
coef_universityNonMandMaxThree_disc 0.479 0.144 3.33*** 0.00
coef_universityNonMandMaxThree_eatout 0.448 0.244 1.84 0.00
coef_universityNonMandMaxThree_maint-0.158 0.284-0.56 0.00
coef_universityNonMandMaxThree_shopping 0.858 0.157 5.46*** 0.00
coef_universityNonMandMaxThree_visiting 0.282 0.256 1.10 0.00
coef_walkRetailAccessibility_eatout 0.0426 0.0475 0.90 0.00
coef_zeroAutomobiles_disc-0.954 0.441-2.16* 0.00
coef_zeroAutomobiles_visiting-0.901 0.678-1.33 0.00
\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 8, @@ -2954,18 +3012,7 @@ "cell_type": "code", "execution_count": 10, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "model.to_xlsx(\n", " result_dir/f\"{modelname}_model_estimation.xlsx\", \n", @@ -3023,25 +3070,25 @@ " \n", " 1\n", " coef_asc_1_Shop\n", - " -7.244895\n", + " -6.045190\n", " F\n", " \n", " \n", " 2\n", " coef_asc_1_Main\n", - " -4.843654\n", + " -5.816690\n", " F\n", " \n", " \n", " 3\n", " coef_asc_1_Eat\n", - " -5.140469\n", + " -6.074061\n", " F\n", " \n", " \n", " 4\n", " coef_asc_1_Visit\n", - " -5.962149\n", + " -5.839951\n", " F\n", " \n", " \n", @@ -3053,19 +3100,19 @@ " \n", " 71\n", " coef_logTimeWindowOverlapAdultChild_disc\n", - " 0.150256\n", + " 0.303504\n", " F\n", " \n", " \n", " 72\n", " coef_incomeBetween50And100_disc\n", - " 0.008353\n", + " 0.132487\n", " F\n", " \n", " \n", " 73\n", " coef_incomeGreaterThan100_disc\n", - " 0.624935\n", + " 0.366581\n", " F\n", " \n", " \n", @@ -3077,7 +3124,7 @@ " \n", " 75\n", " coef_zeroAutomobiles_disc\n", - " -0.539939\n", + " -0.953758\n", " F\n", " \n", " \n", @@ -3088,16 +3135,16 @@ "text/plain": [ " coefficient_name value constrain\n", "0 coef_asc_0_tours 0.000000 T\n", - "1 coef_asc_1_Shop -7.244895 F\n", - "2 coef_asc_1_Main -4.843654 F\n", - "3 coef_asc_1_Eat -5.140469 F\n", - "4 coef_asc_1_Visit -5.962149 F\n", + "1 coef_asc_1_Shop -6.045190 F\n", + "2 coef_asc_1_Main -5.816690 F\n", + "3 coef_asc_1_Eat -6.074061 F\n", + "4 coef_asc_1_Visit -5.839951 F\n", ".. ... ... ...\n", - "71 coef_logTimeWindowOverlapAdultChild_disc 0.150256 F\n", - "72 coef_incomeBetween50And100_disc 0.008353 F\n", - "73 coef_incomeGreaterThan100_disc 0.624935 F\n", + "71 coef_logTimeWindowOverlapAdultChild_disc 0.303504 F\n", + "72 coef_incomeBetween50And100_disc 0.132487 F\n", + "73 coef_incomeGreaterThan100_disc 0.366581 F\n", "74 coef_incomeMissing_dummy_always_zero_disc 0.372300 F\n", - "75 coef_zeroAutomobiles_disc -0.539939 F\n", + "75 coef_zeroAutomobiles_disc -0.953758 F\n", "\n", "[76 rows x 3 columns]" ] @@ -3119,7 +3166,7 @@ "toc_visible": true }, "kernelspec": { - "display_name": "Python 3", + "display_name": "ESTER", "language": "python", "name": "python3" }, @@ -3133,7 +3180,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.10.15" }, "toc": { "base_numbering": 1, diff --git a/activitysim/examples/example_estimation/notebooks/11_joint_tour_composition.ipynb b/activitysim/examples/example_estimation/notebooks/11_joint_tour_composition.ipynb index 89c68c52f..99bd4cc7c 100644 --- a/activitysim/examples/example_estimation/notebooks/11_joint_tour_composition.ipynb +++ b/activitysim/examples/example_estimation/notebooks/11_joint_tour_composition.ipynb @@ -34,27 +34,74 @@ "id": "s53VwlPwtNnr", "outputId": "d1208b7a-c1f2-4b0b-c439-bf312fe12be0" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "JAX not found. Some functionality will be unavailable.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'larch': '6.0.32',\n", + " 'sharrow': '2.13.0',\n", + " 'numpy': '1.26.4',\n", + " 'pandas': '1.5.3',\n", + " 'xarray': '2024.3.0',\n", + " 'numba': '0.60.0'}" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "import os\n", - "import larch # !conda install larch -c conda-forge # for estimation\n", - "import pandas as pd" + "import larch as lx\n", + "import pandas as pd\n", + "\n", + "lx.versions()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We'll work in our `test` directory, where ActivitySim has saved the estimation data bundles." + "For this demo, we will assume that you have already run ActivitySim in estimation\n", + "mode, and saved the required estimation data bundles (EDB's) to disk. See\n", + "the [first notebook](./01_estimation_mode.ipynb) for details. The following module\n", + "will run a script to set everything up if the example data is not already available." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "EDB directory already populated.\n" + ] + }, + { + "data": { + "text/plain": [ + "PosixPath('test-estimation-data/activitysim-prototype-mtc-extended')" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "os.chdir('test')" + "from est_mode_setup import prepare\n", + "\n", + "prepare()" ] }, { @@ -68,12 +115,27 @@ "cell_type": "code", "execution_count": 3, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "loading from output-est-mode/estimation_data_bundle/joint_tour_composition/joint_tour_composition_coefficients.csv\n", + "loading spec from output-est-mode/estimation_data_bundle/joint_tour_composition/joint_tour_composition_SPEC.csv\n", + "loading from output-est-mode/estimation_data_bundle/joint_tour_composition/joint_tour_composition_values_combined.parquet\n" + ] + } + ], "source": [ "modelname = \"joint_tour_composition\"\n", "\n", "from activitysim.estimation.larch import component_model\n", - "model, data = component_model(modelname, return_data=True)" + "\n", + "model, data = component_model(\n", + " modelname,\n", + " edb_directory=f\"output-est-mode/estimation_data_bundle/{modelname}/\",\n", + " return_data=True,\n", + ")" ] }, { @@ -798,8 +860,8 @@ " \n", " \n", " \n", - " 189758\n", - " 7785298\n", + " 190592\n", + " 7853686\n", " adults\n", " adults\n", " 1.0\n", @@ -807,23 +869,23 @@ " 0.0\n", " 0.0\n", " 0.0\n", - " 2.0\n", " 0.0\n", + " 2.0\n", " ...\n", - " 0.000\n", + " 0.000000\n", " 0.0\n", " 0.0\n", - " 2.0\n", " 0.0\n", + " 2.0\n", " 0.0\n", " 0.0\n", " 0.0\n", - " False\n", + " True\n", " 1\n", " \n", " \n", - " 201016\n", - " 8708454\n", + " 191185\n", + " 7902318\n", " adults\n", " adults\n", " 1.0\n", @@ -831,23 +893,23 @@ " 0.0\n", " 0.0\n", " 0.0\n", - " 2.0\n", " 0.0\n", + " 2.0\n", " ...\n", - " 0.000\n", + " 0.000000\n", " 0.0\n", " 0.0\n", - " 2.0\n", " 0.0\n", + " 2.0\n", " 0.0\n", " 0.0\n", " 0.0\n", - " False\n", + " True\n", " 1\n", " \n", " \n", - " 213291\n", - " 9715006\n", + " 191276\n", + " 7909776\n", " adults\n", " adults\n", " 1.0\n", @@ -855,14 +917,14 @@ " 0.0\n", " 0.0\n", " 0.0\n", - " 2.0\n", " 0.0\n", + " 2.0\n", " ...\n", - " 0.000\n", + " 0.000000\n", " 0.0\n", " 0.0\n", - " 2.0\n", " 0.0\n", + " 2.0\n", " 0.0\n", " 0.0\n", " 0.0\n", @@ -870,8 +932,8 @@ " 1\n", " \n", " \n", - " 226902\n", - " 10831112\n", + " 192239\n", + " 7988742\n", " adults\n", " adults\n", " 1.0\n", @@ -879,43 +941,43 @@ " 0.0\n", " 0.0\n", " 0.0\n", - " 2.0\n", " 0.0\n", + " 1.0\n", " ...\n", - " 0.000\n", + " 0.000000\n", " 0.0\n", " 0.0\n", - " 2.0\n", " 0.0\n", + " 1.0\n", " 0.0\n", " 0.0\n", " 0.0\n", - " False\n", + " True\n", " 1\n", " \n", " \n", - " 337259\n", - " 20334787\n", - " mixed\n", - " mixed\n", + " 193643\n", + " 8103874\n", + " adults\n", + " adults\n", " 1.0\n", " 0.0\n", " 0.0\n", - " 1.0\n", + " 0.0\n", " 0.0\n", " 0.0\n", " 1.0\n", " ...\n", - " 2.197\n", - " 1.0\n", + " 0.000000\n", + " 0.0\n", " 0.0\n", " 0.0\n", - " 1.0\n", " 1.0\n", " 0.0\n", " 0.0\n", - " False\n", - " 3\n", + " 0.0\n", + " True\n", + " 1\n", " \n", " \n", " ...\n", @@ -942,8 +1004,8 @@ " ...\n", " \n", " \n", - " 2628704\n", - " 283676518\n", + " 2753390\n", + " 303771147\n", " mixed\n", " mixed\n", " 1.0\n", @@ -954,7 +1016,7 @@ " 0.0\n", " 0.0\n", " ...\n", - " 2.398\n", + " 2.708984\n", " 3.0\n", " 0.0\n", " 0.0\n", @@ -962,252 +1024,252 @@ " 2.0\n", " 0.0\n", " 0.0\n", - " False\n", + " True\n", " 3\n", " \n", " \n", - " 2678969\n", - " 295260168\n", - " adults\n", - " adults\n", + " 2754817\n", + " 304144212\n", + " mixed\n", + " mixed\n", " 1.0\n", " 0.0\n", " 0.0\n", " 3.0\n", - " 1.0\n", " 0.0\n", - " 3.0\n", + " 0.0\n", + " 2.0\n", " ...\n", - " 2.080\n", + " 2.996094\n", " 3.0\n", - " 1.0\n", " 0.0\n", - " 3.0\n", - " 1.0\n", + " 0.0\n", + " 2.0\n", + " 2.0\n", " 0.0\n", " 0.0\n", " False\n", - " 1\n", + " 3\n", " \n", " \n", - " 2704338\n", - " 297646485\n", - " adults\n", - " adults\n", + " 2756049\n", + " 304463637\n", + " mixed\n", + " mixed\n", " 1.0\n", " 0.0\n", " 0.0\n", + " 3.0\n", " 0.0\n", - " 0.0\n", - " 0.0\n", + " 2.0\n", " 0.0\n", " ...\n", - " 0.000\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", + " 2.484375\n", + " 3.0\n", " 0.0\n", + " 2.0\n", " 0.0\n", " 0.0\n", + " 1.0\n", " 0.0\n", " True\n", - " 1\n", + " 3\n", " \n", " \n", - " 2718585\n", - " 298814741\n", - " adults\n", - " adults\n", + " 2758936\n", + " 305125582\n", + " children\n", + " mixed\n", " 1.0\n", " 0.0\n", " 0.0\n", - " 0.0\n", + " 2.0\n", " 1.0\n", " 0.0\n", " 0.0\n", " ...\n", - " 0.000\n", - " 0.0\n", + " 2.564453\n", + " 2.0\n", " 1.0\n", " 0.0\n", " 0.0\n", " 0.0\n", - " 0.0\n", + " 3.0\n", " 0.0\n", " False\n", - " 1\n", + " 3\n", " \n", " \n", - " 2744529\n", - " 301810980\n", - " adults\n", - " adults\n", + " 2759425\n", + " 305246245\n", + " mixed\n", + " mixed\n", " 1.0\n", " 0.0\n", " 0.0\n", + " 1.0\n", " 2.0\n", - " 0.0\n", - " 0.0\n", + " 1.0\n", " 0.0\n", " ...\n", - " 0.000\n", + " 2.996094\n", + " 1.0\n", " 2.0\n", + " 1.0\n", " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", + " 1.0\n", " 0.0\n", " 0.0\n", " False\n", - " 1\n", + " 3\n", " \n", " \n", "\n", - "

91 rows × 87 columns

\n", + "

1277 rows × 87 columns

\n", "" ], "text/plain": [ " tour_id model_choice override_choice util_asc \\\n", "household_id \n", - "189758 7785298 adults adults 1.0 \n", - "201016 8708454 adults adults 1.0 \n", - "213291 9715006 adults adults 1.0 \n", - "226902 10831112 adults adults 1.0 \n", - "337259 20334787 mixed mixed 1.0 \n", + "190592 7853686 adults adults 1.0 \n", + "191185 7902318 adults adults 1.0 \n", + "191276 7909776 adults adults 1.0 \n", + "192239 7988742 adults adults 1.0 \n", + "193643 8103874 adults adults 1.0 \n", "... ... ... ... ... \n", - "2628704 283676518 mixed mixed 1.0 \n", - "2678969 295260168 adults adults 1.0 \n", - "2704338 297646485 adults adults 1.0 \n", - "2718585 298814741 adults adults 1.0 \n", - "2744529 301810980 adults adults 1.0 \n", + "2753390 303771147 mixed mixed 1.0 \n", + "2754817 304144212 mixed mixed 1.0 \n", + "2756049 304463637 mixed mixed 1.0 \n", + "2758936 305125582 children mixed 1.0 \n", + "2759425 305246245 mixed mixed 1.0 \n", "\n", " util_tour_purpose_is_eating_out \\\n", "household_id \n", - "189758 0.0 \n", - "201016 0.0 \n", - "213291 0.0 \n", - "226902 0.0 \n", - "337259 0.0 \n", + "190592 0.0 \n", + "191185 0.0 \n", + "191276 0.0 \n", + "192239 0.0 \n", + "193643 0.0 \n", "... ... \n", - "2628704 0.0 \n", - "2678969 0.0 \n", - "2704338 0.0 \n", - "2718585 0.0 \n", - "2744529 0.0 \n", + "2753390 0.0 \n", + "2754817 0.0 \n", + "2756049 0.0 \n", + "2758936 0.0 \n", + "2759425 0.0 \n", "\n", " util_tour_purpose_is_discretionary \\\n", "household_id \n", - "189758 0.0 \n", - "201016 0.0 \n", - "213291 0.0 \n", - "226902 0.0 \n", - "337259 0.0 \n", + "190592 0.0 \n", + "191185 0.0 \n", + "191276 0.0 \n", + "192239 0.0 \n", + "193643 0.0 \n", "... ... \n", - "2628704 0.0 \n", - "2678969 0.0 \n", - "2704338 0.0 \n", - "2718585 0.0 \n", - "2744529 0.0 \n", + "2753390 0.0 \n", + "2754817 0.0 \n", + "2756049 0.0 \n", + "2758936 0.0 \n", + "2759425 0.0 \n", "\n", " util_number_of_full_time_workers \\\n", "household_id \n", - "189758 0.0 \n", - "201016 0.0 \n", - "213291 0.0 \n", - "226902 0.0 \n", - "337259 1.0 \n", + "190592 0.0 \n", + "191185 0.0 \n", + "191276 0.0 \n", + "192239 0.0 \n", + "193643 0.0 \n", "... ... \n", - "2628704 3.0 \n", - "2678969 3.0 \n", - "2704338 0.0 \n", - "2718585 0.0 \n", - "2744529 2.0 \n", + "2753390 3.0 \n", + "2754817 3.0 \n", + "2756049 3.0 \n", + "2758936 2.0 \n", + "2759425 1.0 \n", "\n", " util_number_of_part_time_workers \\\n", "household_id \n", - "189758 0.0 \n", - "201016 0.0 \n", - "213291 0.0 \n", - "226902 0.0 \n", - "337259 0.0 \n", + "190592 0.0 \n", + "191185 0.0 \n", + "191276 0.0 \n", + "192239 0.0 \n", + "193643 0.0 \n", "... ... \n", - "2628704 0.0 \n", - "2678969 1.0 \n", - "2704338 0.0 \n", - "2718585 1.0 \n", - "2744529 0.0 \n", + "2753390 0.0 \n", + "2754817 0.0 \n", + "2756049 0.0 \n", + "2758936 1.0 \n", + "2759425 2.0 \n", "\n", " util_number_of_university_students util_number_of_non_workers \\\n", "household_id \n", - "189758 2.0 0.0 \n", - "201016 2.0 0.0 \n", - "213291 2.0 0.0 \n", - "226902 2.0 0.0 \n", - "337259 0.0 1.0 \n", + "190592 0.0 2.0 \n", + "191185 0.0 2.0 \n", + "191276 0.0 2.0 \n", + "192239 0.0 1.0 \n", + "193643 0.0 1.0 \n", "... ... ... \n", - "2628704 0.0 0.0 \n", - "2678969 0.0 3.0 \n", - "2704338 0.0 0.0 \n", - "2718585 0.0 0.0 \n", - "2744529 0.0 0.0 \n", + "2753390 0.0 0.0 \n", + "2754817 0.0 2.0 \n", + "2756049 2.0 0.0 \n", + "2758936 0.0 0.0 \n", + "2759425 1.0 0.0 \n", "\n", " ... log_time_window_overlap_adult_child num_full_max3 \\\n", "household_id ... \n", - "189758 ... 0.000 0.0 \n", - "201016 ... 0.000 0.0 \n", - "213291 ... 0.000 0.0 \n", - "226902 ... 0.000 0.0 \n", - "337259 ... 2.197 1.0 \n", + "190592 ... 0.000000 0.0 \n", + "191185 ... 0.000000 0.0 \n", + "191276 ... 0.000000 0.0 \n", + "192239 ... 0.000000 0.0 \n", + "193643 ... 0.000000 0.0 \n", "... ... ... ... \n", - "2628704 ... 2.398 3.0 \n", - "2678969 ... 2.080 3.0 \n", - "2704338 ... 0.000 0.0 \n", - "2718585 ... 0.000 0.0 \n", - "2744529 ... 0.000 2.0 \n", + "2753390 ... 2.708984 3.0 \n", + "2754817 ... 2.996094 3.0 \n", + "2756049 ... 2.484375 3.0 \n", + "2758936 ... 2.564453 2.0 \n", + "2759425 ... 2.996094 1.0 \n", "\n", " num_part_max3 num_univ_max3 num_nonwork_max3 \\\n", "household_id \n", - "189758 0.0 2.0 0.0 \n", - "201016 0.0 2.0 0.0 \n", - "213291 0.0 2.0 0.0 \n", - "226902 0.0 2.0 0.0 \n", - "337259 0.0 0.0 1.0 \n", + "190592 0.0 0.0 2.0 \n", + "191185 0.0 0.0 2.0 \n", + "191276 0.0 0.0 2.0 \n", + "192239 0.0 0.0 1.0 \n", + "193643 0.0 0.0 1.0 \n", "... ... ... ... \n", - "2628704 0.0 0.0 0.0 \n", - "2678969 1.0 0.0 3.0 \n", - "2704338 0.0 0.0 0.0 \n", - "2718585 1.0 0.0 0.0 \n", - "2744529 0.0 0.0 0.0 \n", + "2753390 0.0 0.0 0.0 \n", + "2754817 0.0 0.0 2.0 \n", + "2756049 0.0 2.0 0.0 \n", + "2758936 1.0 0.0 0.0 \n", + "2759425 2.0 1.0 0.0 \n", "\n", " num_preschool_max3 num_school_max3 num_driving_max3 \\\n", "household_id \n", - "189758 0.0 0.0 0.0 \n", - "201016 0.0 0.0 0.0 \n", - "213291 0.0 0.0 0.0 \n", - "226902 0.0 0.0 0.0 \n", - "337259 1.0 0.0 0.0 \n", + "190592 0.0 0.0 0.0 \n", + "191185 0.0 0.0 0.0 \n", + "191276 0.0 0.0 0.0 \n", + "192239 0.0 0.0 0.0 \n", + "193643 0.0 0.0 0.0 \n", "... ... ... ... \n", - "2628704 2.0 0.0 0.0 \n", - "2678969 1.0 0.0 0.0 \n", - "2704338 0.0 0.0 0.0 \n", - "2718585 0.0 0.0 0.0 \n", - "2744529 0.0 0.0 0.0 \n", + "2753390 2.0 0.0 0.0 \n", + "2754817 2.0 0.0 0.0 \n", + "2756049 0.0 1.0 0.0 \n", + "2758936 0.0 3.0 0.0 \n", + "2759425 1.0 0.0 0.0 \n", "\n", " more_cars_than_workers override_choice_code \n", "household_id \n", - "189758 False 1 \n", - "201016 False 1 \n", - "213291 True 1 \n", - "226902 False 1 \n", - "337259 False 3 \n", + "190592 True 1 \n", + "191185 True 1 \n", + "191276 True 1 \n", + "192239 True 1 \n", + "193643 True 1 \n", "... ... ... \n", - "2628704 False 3 \n", - "2678969 False 1 \n", - "2704338 True 1 \n", - "2718585 False 1 \n", - "2744529 False 1 \n", + "2753390 True 3 \n", + "2754817 False 3 \n", + "2756049 True 3 \n", + "2758936 False 3 \n", + "2759425 False 3 \n", "\n", - "[91 rows x 87 columns]" + "[1277 rows x 87 columns]" ] }, "execution_count": 6, @@ -1233,17 +1295,10 @@ "execution_count": 7, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "req_data does not request avail_ca or avail_co but it is set and being provided\n" - ] - }, { "data": { "text/html": [ - "

Iteration 033 [Optimization terminated successfully]

" + "

Iteration 095 [Optimization terminated successfully]

" ], "text/plain": [ "" @@ -1255,7 +1310,7 @@ { "data": { "text/html": [ - "

Best LL = -9.786597596036862e-07

" + "

Best LL = -263.2609116263491

" ], "text/plain": [ "" @@ -1286,493 +1341,475 @@ " \n", " \n", " value\n", + " best\n", " initvalue\n", - " nullvalue\n", " minimum\n", " maximum\n", + " nullvalue\n", " holdfast\n", - " note\n", - " best\n", + " \n", + " \n", + " param_name\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " coef_asc_children\n", - " 121.627746\n", + " 6.744041\n", + " 6.744041\n", " 5.3517\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 121.627746\n", " \n", " \n", " coef_asc_mixed\n", - " -88.249613\n", + " 6.886657\n", + " 6.886657\n", " 5.6290\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -88.249613\n", " \n", " \n", " coef_household_has_more_cars_than_workers_adults\n", - " -40.894264\n", + " 3.138920\n", + " 3.138920\n", " 1.3860\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -40.894264\n", " \n", " \n", " coef_household_has_more_cars_than_workers_mixed\n", - " 153.815203\n", + " 0.384250\n", + " 0.384250\n", " 0.7510\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 153.815203\n", " \n", " \n", " coef_household_in_suburban_area_adults\n", - " 0.510500\n", + " -1.123570\n", + " -1.123570\n", " 0.5105\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.510500\n", " \n", " \n", " coef_household_in_suburban_area_mixed\n", - " 0.128300\n", + " 0.258299\n", + " 0.258299\n", " 0.1283\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.128300\n", " \n", " \n", " coef_household_in_urban_area\n", - " -21.823334\n", + " -0.441828\n", + " -0.441828\n", " 0.5741\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -21.823334\n", " \n", " \n", " coef_log_max_overlap_of_adults_time_windows\n", - " -36.285976\n", + " 1.288269\n", + " 1.288269\n", " 1.1920\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -36.285976\n", " \n", " \n", " coef_log_max_overlap_of_childrens_time_windows\n", - " 283.696667\n", + " 1.783892\n", + " 1.783892\n", " 1.8410\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 283.696667\n", " \n", " \n", " coef_log_max_overlap_of_time_windows\n", - " 196.728573\n", + " 1.505521\n", + " 1.505521\n", " 1.9580\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 196.728573\n", " \n", " \n", " coef_low_income_households_adults\n", - " -16.894954\n", + " 2.520875\n", + " 2.520875\n", " 1.2480\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -16.894954\n", " \n", " \n", " coef_low_income_households_mixed\n", - " -3.143593\n", + " 0.683195\n", + " 0.683195\n", " 0.5755\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -3.143593\n", " \n", " \n", " coef_medium_income_households\n", - " -161.727385\n", + " 1.853225\n", + " 1.853225\n", " 0.8369\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -161.727385\n", " \n", " \n", " coef_number_of_children_too_young_for_school_children\n", - " -110.048280\n", + " 0.661222\n", + " 0.661222\n", " 0.7306\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -110.048280\n", " \n", " \n", " coef_number_of_children_too_young_for_school_mixed\n", - " 9.539326\n", + " 1.065525\n", + " 1.065525\n", " 0.7906\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 9.539326\n", " \n", " \n", " coef_number_of_driving_age_children_children\n", - " -172.311937\n", + " 0.646806\n", + " 0.646806\n", " -0.2667\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -172.311937\n", " \n", " \n", " coef_number_of_driving_age_children_mixed\n", - " 184.761407\n", + " 0.494992\n", + " 0.494992\n", " -0.9399\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 184.761407\n", " \n", " \n", " coef_number_of_full_time_workers_adults\n", - " 185.490311\n", + " 1.638383\n", + " 1.638383\n", " 1.0240\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 185.490311\n", " \n", " \n", " coef_number_of_full_time_workers_mixed\n", - " 50.943193\n", + " 0.106573\n", + " 0.106573\n", " 0.3624\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 50.943193\n", " \n", " \n", " coef_number_of_non_workers_adults\n", - " 40.041010\n", + " 0.344889\n", + " 0.344889\n", " 0.6263\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 40.041010\n", " \n", " \n", " coef_number_of_non_workers_mixed\n", - " -96.438666\n", + " -0.067851\n", + " -0.067851\n", " -0.3724\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -96.438666\n", " \n", " \n", " coef_number_of_part_time_workers_adults\n", - " 47.088158\n", + " 0.094715\n", + " 0.094715\n", " 0.5412\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 47.088158\n", " \n", " \n", " coef_number_of_part_time_workers_mixed\n", - " 58.958712\n", + " 0.182067\n", + " 0.182067\n", " 0.3164\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 58.958712\n", " \n", " \n", " coef_number_of_pre_driving_age_children_children\n", - " 12.678858\n", + " 0.256545\n", + " 0.256545\n", " 0.7306\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 12.678858\n", " \n", " \n", " coef_number_of_pre_driving_age_children_mixed\n", - " 158.960267\n", + " 0.311384\n", + " 0.311384\n", " 0.3532\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 158.960267\n", " \n", " \n", " coef_number_of_university_students\n", - " -5.007830\n", + " 0.067485\n", + " 0.067485\n", " 0.8245\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -5.007830\n", " \n", " \n", " coef_tour_purpose_is_discretionary_adults\n", " 0.764800\n", + " 0.764800\n", " 0.7648\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.764800\n", " \n", " \n", " coef_tour_purpose_is_discretionary_children\n", " 0.510100\n", + " 0.510100\n", " 0.5101\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.510100\n", " \n", " \n", " coef_tour_purpose_is_eating_out_children\n", " -0.967800\n", + " -0.967800\n", " -0.9678\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.967800\n", " \n", " \n", " coef_tour_purpose_is_eating_out_mixed\n", " -0.802700\n", + " -0.802700\n", " -0.8027\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.802700\n", " \n", " \n", " coef_unavailable\n", " -999.000000\n", + " -999.000000\n", " -999.0000\n", + " -999.0\n", + " -999.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 1\n", - " \n", - " -999.000000\n", " \n", " \n", "\n", "" ], "text/plain": [ - " value initvalue \\\n", - "coef_asc_children 121.627746 5.3517 \n", - "coef_asc_mixed -88.249613 5.6290 \n", - "coef_household_has_more_cars_than_workers_adults -40.894264 1.3860 \n", - "coef_household_has_more_cars_than_workers_mixed 153.815203 0.7510 \n", - "coef_household_in_suburban_area_adults 0.510500 0.5105 \n", - "coef_household_in_suburban_area_mixed 0.128300 0.1283 \n", - "coef_household_in_urban_area -21.823334 0.5741 \n", - "coef_log_max_overlap_of_adults_time_windows -36.285976 1.1920 \n", - "coef_log_max_overlap_of_childrens_time_windows 283.696667 1.8410 \n", - "coef_log_max_overlap_of_time_windows 196.728573 1.9580 \n", - "coef_low_income_households_adults -16.894954 1.2480 \n", - "coef_low_income_households_mixed -3.143593 0.5755 \n", - "coef_medium_income_households -161.727385 0.8369 \n", - "coef_number_of_children_too_young_for_school_ch... -110.048280 0.7306 \n", - "coef_number_of_children_too_young_for_school_mixed 9.539326 0.7906 \n", - "coef_number_of_driving_age_children_children -172.311937 -0.2667 \n", - "coef_number_of_driving_age_children_mixed 184.761407 -0.9399 \n", - "coef_number_of_full_time_workers_adults 185.490311 1.0240 \n", - "coef_number_of_full_time_workers_mixed 50.943193 0.3624 \n", - "coef_number_of_non_workers_adults 40.041010 0.6263 \n", - "coef_number_of_non_workers_mixed -96.438666 -0.3724 \n", - "coef_number_of_part_time_workers_adults 47.088158 0.5412 \n", - "coef_number_of_part_time_workers_mixed 58.958712 0.3164 \n", - "coef_number_of_pre_driving_age_children_children 12.678858 0.7306 \n", - "coef_number_of_pre_driving_age_children_mixed 158.960267 0.3532 \n", - "coef_number_of_university_students -5.007830 0.8245 \n", - "coef_tour_purpose_is_discretionary_adults 0.764800 0.7648 \n", - "coef_tour_purpose_is_discretionary_children 0.510100 0.5101 \n", - "coef_tour_purpose_is_eating_out_children -0.967800 -0.9678 \n", - "coef_tour_purpose_is_eating_out_mixed -0.802700 -0.8027 \n", - "coef_unavailable -999.000000 -999.0000 \n", + " value best \\\n", + "param_name \n", + "coef_asc_children 6.744041 6.744041 \n", + "coef_asc_mixed 6.886657 6.886657 \n", + "coef_household_has_more_cars_than_workers_adults 3.138920 3.138920 \n", + "coef_household_has_more_cars_than_workers_mixed 0.384250 0.384250 \n", + "coef_household_in_suburban_area_adults -1.123570 -1.123570 \n", + "coef_household_in_suburban_area_mixed 0.258299 0.258299 \n", + "coef_household_in_urban_area -0.441828 -0.441828 \n", + "coef_log_max_overlap_of_adults_time_windows 1.288269 1.288269 \n", + "coef_log_max_overlap_of_childrens_time_windows 1.783892 1.783892 \n", + "coef_log_max_overlap_of_time_windows 1.505521 1.505521 \n", + "coef_low_income_households_adults 2.520875 2.520875 \n", + "coef_low_income_households_mixed 0.683195 0.683195 \n", + "coef_medium_income_households 1.853225 1.853225 \n", + "coef_number_of_children_too_young_for_school_ch... 0.661222 0.661222 \n", + "coef_number_of_children_too_young_for_school_mixed 1.065525 1.065525 \n", + "coef_number_of_driving_age_children_children 0.646806 0.646806 \n", + "coef_number_of_driving_age_children_mixed 0.494992 0.494992 \n", + "coef_number_of_full_time_workers_adults 1.638383 1.638383 \n", + "coef_number_of_full_time_workers_mixed 0.106573 0.106573 \n", + "coef_number_of_non_workers_adults 0.344889 0.344889 \n", + "coef_number_of_non_workers_mixed -0.067851 -0.067851 \n", + "coef_number_of_part_time_workers_adults 0.094715 0.094715 \n", + "coef_number_of_part_time_workers_mixed 0.182067 0.182067 \n", + "coef_number_of_pre_driving_age_children_children 0.256545 0.256545 \n", + "coef_number_of_pre_driving_age_children_mixed 0.311384 0.311384 \n", + "coef_number_of_university_students 0.067485 0.067485 \n", + "coef_tour_purpose_is_discretionary_adults 0.764800 0.764800 \n", + "coef_tour_purpose_is_discretionary_children 0.510100 0.510100 \n", + "coef_tour_purpose_is_eating_out_children -0.967800 -0.967800 \n", + "coef_tour_purpose_is_eating_out_mixed -0.802700 -0.802700 \n", + "coef_unavailable -999.000000 -999.000000 \n", "\n", - " nullvalue minimum \\\n", - "coef_asc_children 0.0 NaN \n", - "coef_asc_mixed 0.0 NaN \n", - "coef_household_has_more_cars_than_workers_adults 0.0 NaN \n", - "coef_household_has_more_cars_than_workers_mixed 0.0 NaN \n", - "coef_household_in_suburban_area_adults 0.0 NaN \n", - "coef_household_in_suburban_area_mixed 0.0 NaN \n", - "coef_household_in_urban_area 0.0 NaN \n", - "coef_log_max_overlap_of_adults_time_windows 0.0 NaN \n", - "coef_log_max_overlap_of_childrens_time_windows 0.0 NaN \n", - "coef_log_max_overlap_of_time_windows 0.0 NaN \n", - "coef_low_income_households_adults 0.0 NaN \n", - "coef_low_income_households_mixed 0.0 NaN \n", - "coef_medium_income_households 0.0 NaN \n", - "coef_number_of_children_too_young_for_school_ch... 0.0 NaN \n", - "coef_number_of_children_too_young_for_school_mixed 0.0 NaN \n", - "coef_number_of_driving_age_children_children 0.0 NaN \n", - "coef_number_of_driving_age_children_mixed 0.0 NaN \n", - "coef_number_of_full_time_workers_adults 0.0 NaN \n", - "coef_number_of_full_time_workers_mixed 0.0 NaN \n", - "coef_number_of_non_workers_adults 0.0 NaN \n", - "coef_number_of_non_workers_mixed 0.0 NaN \n", - "coef_number_of_part_time_workers_adults 0.0 NaN \n", - "coef_number_of_part_time_workers_mixed 0.0 NaN \n", - "coef_number_of_pre_driving_age_children_children 0.0 NaN \n", - "coef_number_of_pre_driving_age_children_mixed 0.0 NaN \n", - "coef_number_of_university_students 0.0 NaN \n", - "coef_tour_purpose_is_discretionary_adults 0.0 NaN \n", - "coef_tour_purpose_is_discretionary_children 0.0 NaN \n", - "coef_tour_purpose_is_eating_out_children 0.0 NaN \n", - "coef_tour_purpose_is_eating_out_mixed 0.0 NaN \n", - "coef_unavailable 0.0 NaN \n", + " initvalue minimum \\\n", + "param_name \n", + "coef_asc_children 5.3517 -50.0 \n", + "coef_asc_mixed 5.6290 -50.0 \n", + "coef_household_has_more_cars_than_workers_adults 1.3860 -50.0 \n", + "coef_household_has_more_cars_than_workers_mixed 0.7510 -50.0 \n", + "coef_household_in_suburban_area_adults 0.5105 -50.0 \n", + "coef_household_in_suburban_area_mixed 0.1283 -50.0 \n", + "coef_household_in_urban_area 0.5741 -50.0 \n", + "coef_log_max_overlap_of_adults_time_windows 1.1920 -50.0 \n", + "coef_log_max_overlap_of_childrens_time_windows 1.8410 -50.0 \n", + "coef_log_max_overlap_of_time_windows 1.9580 -50.0 \n", + "coef_low_income_households_adults 1.2480 -50.0 \n", + "coef_low_income_households_mixed 0.5755 -50.0 \n", + "coef_medium_income_households 0.8369 -50.0 \n", + "coef_number_of_children_too_young_for_school_ch... 0.7306 -50.0 \n", + "coef_number_of_children_too_young_for_school_mixed 0.7906 -50.0 \n", + "coef_number_of_driving_age_children_children -0.2667 -50.0 \n", + "coef_number_of_driving_age_children_mixed -0.9399 -50.0 \n", + "coef_number_of_full_time_workers_adults 1.0240 -50.0 \n", + "coef_number_of_full_time_workers_mixed 0.3624 -50.0 \n", + "coef_number_of_non_workers_adults 0.6263 -50.0 \n", + "coef_number_of_non_workers_mixed -0.3724 -50.0 \n", + "coef_number_of_part_time_workers_adults 0.5412 -50.0 \n", + "coef_number_of_part_time_workers_mixed 0.3164 -50.0 \n", + "coef_number_of_pre_driving_age_children_children 0.7306 -50.0 \n", + "coef_number_of_pre_driving_age_children_mixed 0.3532 -50.0 \n", + "coef_number_of_university_students 0.8245 -50.0 \n", + "coef_tour_purpose_is_discretionary_adults 0.7648 -50.0 \n", + "coef_tour_purpose_is_discretionary_children 0.5101 -50.0 \n", + "coef_tour_purpose_is_eating_out_children -0.9678 -50.0 \n", + "coef_tour_purpose_is_eating_out_mixed -0.8027 -50.0 \n", + "coef_unavailable -999.0000 -999.0 \n", "\n", - " maximum holdfast note \\\n", - "coef_asc_children NaN 0 \n", - "coef_asc_mixed NaN 0 \n", - "coef_household_has_more_cars_than_workers_adults NaN 0 \n", - "coef_household_has_more_cars_than_workers_mixed NaN 0 \n", - "coef_household_in_suburban_area_adults NaN 0 \n", - "coef_household_in_suburban_area_mixed NaN 0 \n", - "coef_household_in_urban_area NaN 0 \n", - "coef_log_max_overlap_of_adults_time_windows NaN 0 \n", - "coef_log_max_overlap_of_childrens_time_windows NaN 0 \n", - "coef_log_max_overlap_of_time_windows NaN 0 \n", - "coef_low_income_households_adults NaN 0 \n", - "coef_low_income_households_mixed NaN 0 \n", - "coef_medium_income_households NaN 0 \n", - "coef_number_of_children_too_young_for_school_ch... NaN 0 \n", - "coef_number_of_children_too_young_for_school_mixed NaN 0 \n", - "coef_number_of_driving_age_children_children NaN 0 \n", - "coef_number_of_driving_age_children_mixed NaN 0 \n", - "coef_number_of_full_time_workers_adults NaN 0 \n", - "coef_number_of_full_time_workers_mixed NaN 0 \n", - "coef_number_of_non_workers_adults NaN 0 \n", - "coef_number_of_non_workers_mixed NaN 0 \n", - "coef_number_of_part_time_workers_adults NaN 0 \n", - "coef_number_of_part_time_workers_mixed NaN 0 \n", - "coef_number_of_pre_driving_age_children_children NaN 0 \n", - "coef_number_of_pre_driving_age_children_mixed NaN 0 \n", - "coef_number_of_university_students NaN 0 \n", - "coef_tour_purpose_is_discretionary_adults NaN 0 \n", - "coef_tour_purpose_is_discretionary_children NaN 0 \n", - "coef_tour_purpose_is_eating_out_children NaN 0 \n", - "coef_tour_purpose_is_eating_out_mixed NaN 0 \n", - "coef_unavailable NaN 1 \n", + " maximum nullvalue \\\n", + "param_name \n", + "coef_asc_children 50.0 0.0 \n", + "coef_asc_mixed 50.0 0.0 \n", + "coef_household_has_more_cars_than_workers_adults 50.0 0.0 \n", + "coef_household_has_more_cars_than_workers_mixed 50.0 0.0 \n", + "coef_household_in_suburban_area_adults 50.0 0.0 \n", + "coef_household_in_suburban_area_mixed 50.0 0.0 \n", + "coef_household_in_urban_area 50.0 0.0 \n", + "coef_log_max_overlap_of_adults_time_windows 50.0 0.0 \n", + "coef_log_max_overlap_of_childrens_time_windows 50.0 0.0 \n", + "coef_log_max_overlap_of_time_windows 50.0 0.0 \n", + "coef_low_income_households_adults 50.0 0.0 \n", + "coef_low_income_households_mixed 50.0 0.0 \n", + "coef_medium_income_households 50.0 0.0 \n", + "coef_number_of_children_too_young_for_school_ch... 50.0 0.0 \n", + "coef_number_of_children_too_young_for_school_mixed 50.0 0.0 \n", + "coef_number_of_driving_age_children_children 50.0 0.0 \n", + "coef_number_of_driving_age_children_mixed 50.0 0.0 \n", + "coef_number_of_full_time_workers_adults 50.0 0.0 \n", + "coef_number_of_full_time_workers_mixed 50.0 0.0 \n", + "coef_number_of_non_workers_adults 50.0 0.0 \n", + "coef_number_of_non_workers_mixed 50.0 0.0 \n", + "coef_number_of_part_time_workers_adults 50.0 0.0 \n", + "coef_number_of_part_time_workers_mixed 50.0 0.0 \n", + "coef_number_of_pre_driving_age_children_children 50.0 0.0 \n", + "coef_number_of_pre_driving_age_children_mixed 50.0 0.0 \n", + "coef_number_of_university_students 50.0 0.0 \n", + "coef_tour_purpose_is_discretionary_adults 50.0 0.0 \n", + "coef_tour_purpose_is_discretionary_children 50.0 0.0 \n", + "coef_tour_purpose_is_eating_out_children 50.0 0.0 \n", + "coef_tour_purpose_is_eating_out_mixed 50.0 0.0 \n", + "coef_unavailable -999.0 0.0 \n", "\n", - " best \n", - "coef_asc_children 121.627746 \n", - "coef_asc_mixed -88.249613 \n", - "coef_household_has_more_cars_than_workers_adults -40.894264 \n", - "coef_household_has_more_cars_than_workers_mixed 153.815203 \n", - "coef_household_in_suburban_area_adults 0.510500 \n", - "coef_household_in_suburban_area_mixed 0.128300 \n", - "coef_household_in_urban_area -21.823334 \n", - "coef_log_max_overlap_of_adults_time_windows -36.285976 \n", - "coef_log_max_overlap_of_childrens_time_windows 283.696667 \n", - "coef_log_max_overlap_of_time_windows 196.728573 \n", - "coef_low_income_households_adults -16.894954 \n", - "coef_low_income_households_mixed -3.143593 \n", - "coef_medium_income_households -161.727385 \n", - "coef_number_of_children_too_young_for_school_ch... -110.048280 \n", - "coef_number_of_children_too_young_for_school_mixed 9.539326 \n", - "coef_number_of_driving_age_children_children -172.311937 \n", - "coef_number_of_driving_age_children_mixed 184.761407 \n", - "coef_number_of_full_time_workers_adults 185.490311 \n", - "coef_number_of_full_time_workers_mixed 50.943193 \n", - "coef_number_of_non_workers_adults 40.041010 \n", - "coef_number_of_non_workers_mixed -96.438666 \n", - "coef_number_of_part_time_workers_adults 47.088158 \n", - "coef_number_of_part_time_workers_mixed 58.958712 \n", - "coef_number_of_pre_driving_age_children_children 12.678858 \n", - "coef_number_of_pre_driving_age_children_mixed 158.960267 \n", - "coef_number_of_university_students -5.007830 \n", - "coef_tour_purpose_is_discretionary_adults 0.764800 \n", - "coef_tour_purpose_is_discretionary_children 0.510100 \n", - "coef_tour_purpose_is_eating_out_children -0.967800 \n", - "coef_tour_purpose_is_eating_out_mixed -0.802700 \n", - "coef_unavailable -999.000000 " + " holdfast \n", + "param_name \n", + "coef_asc_children 0 \n", + "coef_asc_mixed 0 \n", + "coef_household_has_more_cars_than_workers_adults 0 \n", + "coef_household_has_more_cars_than_workers_mixed 0 \n", + "coef_household_in_suburban_area_adults 0 \n", + "coef_household_in_suburban_area_mixed 0 \n", + "coef_household_in_urban_area 0 \n", + "coef_log_max_overlap_of_adults_time_windows 0 \n", + "coef_log_max_overlap_of_childrens_time_windows 0 \n", + "coef_log_max_overlap_of_time_windows 0 \n", + "coef_low_income_households_adults 0 \n", + "coef_low_income_households_mixed 0 \n", + "coef_medium_income_households 0 \n", + "coef_number_of_children_too_young_for_school_ch... 0 \n", + "coef_number_of_children_too_young_for_school_mixed 0 \n", + "coef_number_of_driving_age_children_children 0 \n", + "coef_number_of_driving_age_children_mixed 0 \n", + "coef_number_of_full_time_workers_adults 0 \n", + "coef_number_of_full_time_workers_mixed 0 \n", + "coef_number_of_non_workers_adults 0 \n", + "coef_number_of_non_workers_mixed 0 \n", + "coef_number_of_part_time_workers_adults 0 \n", + "coef_number_of_part_time_workers_mixed 0 \n", + "coef_number_of_pre_driving_age_children_children 0 \n", + "coef_number_of_pre_driving_age_children_mixed 0 \n", + "coef_number_of_university_students 0 \n", + "coef_tour_purpose_is_discretionary_adults 0 \n", + "coef_tour_purpose_is_discretionary_children 0 \n", + "coef_tour_purpose_is_eating_out_children 0 \n", + "coef_tour_purpose_is_eating_out_mixed 0 \n", + "coef_unavailable 1 " ] }, "metadata": {}, @@ -1782,12 +1819,8 @@ "name": "stderr", "output_type": "stream", "text": [ - ":1: PossibleOverspecification: WARNING: Model is possibly over-specified (hessian is nearly singular).\n", - " model.estimate(method='SLSQP')\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 0.0 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - ":1: RuntimeWarning: invalid value encountered in sqrt\n", - " model.estimate(method='SLSQP')\n" + "/Users/jpn/Git/est-mode/larch/src/larch/model/jaxmodel.py:1156: PossibleOverspecification: Model is possibly over-specified (hessian is nearly singular).\n", + " self.calculate_parameter_covariance()\n" ] }, { @@ -1803,107 +1836,107 @@ " \n", " \n", " coef_asc_children\n", - " 121.627746\n", + " 6.744041\n", " \n", " \n", " coef_asc_mixed\n", - " -88.249613\n", + " 6.886657\n", " \n", " \n", " coef_household_has_more_cars_than_workers_adults\n", - " -40.894264\n", + " 3.138920\n", " \n", " \n", " coef_household_has_more_cars_than_workers_mixed\n", - " 153.815203\n", + " 0.384250\n", " \n", " \n", " coef_household_in_suburban_area_adults\n", - " 0.510500\n", + " -1.123570\n", " \n", " \n", " coef_household_in_suburban_area_mixed\n", - " 0.128300\n", + " 0.258299\n", " \n", " \n", " coef_household_in_urban_area\n", - " -21.823334\n", + " -0.441828\n", " \n", " \n", " coef_log_max_overlap_of_adults_time_windows\n", - " -36.285976\n", + " 1.288269\n", " \n", " \n", " coef_log_max_overlap_of_childrens_time_windows\n", - " 283.696667\n", + " 1.783892\n", " \n", " \n", " coef_log_max_overlap_of_time_windows\n", - " 196.728573\n", + " 1.505521\n", " \n", " \n", " coef_low_income_households_adults\n", - " -16.894954\n", + " 2.520875\n", " \n", " \n", " coef_low_income_households_mixed\n", - " -3.143593\n", + " 0.683195\n", " \n", " \n", " coef_medium_income_households\n", - " -161.727385\n", + " 1.853225\n", " \n", " \n", " coef_number_of_children_too_young_for_school_children\n", - " -110.048280\n", + " 0.661222\n", " \n", " \n", " coef_number_of_children_too_young_for_school_mixed\n", - " 9.539326\n", + " 1.065525\n", " \n", " \n", " coef_number_of_driving_age_children_children\n", - " -172.311937\n", + " 0.646806\n", " \n", " \n", " coef_number_of_driving_age_children_mixed\n", - " 184.761407\n", + " 0.494992\n", " \n", " \n", " coef_number_of_full_time_workers_adults\n", - " 185.490311\n", + " 1.638383\n", " \n", " \n", " coef_number_of_full_time_workers_mixed\n", - " 50.943193\n", + " 0.106573\n", " \n", " \n", " coef_number_of_non_workers_adults\n", - " 40.041010\n", + " 0.344889\n", " \n", " \n", " coef_number_of_non_workers_mixed\n", - " -96.438666\n", + " -0.067851\n", " \n", " \n", " coef_number_of_part_time_workers_adults\n", - " 47.088158\n", + " 0.094715\n", " \n", " \n", " coef_number_of_part_time_workers_mixed\n", - " 58.958712\n", + " 0.182067\n", " \n", " \n", " coef_number_of_pre_driving_age_children_children\n", - " 12.678858\n", + " 0.256545\n", " \n", " \n", " coef_number_of_pre_driving_age_children_mixed\n", - " 158.960267\n", + " 0.311384\n", " \n", " \n", " coef_number_of_university_students\n", - " -5.007830\n", + " 0.067485\n", " \n", " \n", " coef_tour_purpose_is_discretionary_adults\n", @@ -1926,7 +1959,7 @@ " -999.000000\n", " \n", " \n", - "loglike-9.786597596036862e-07d_loglike\n", + "
logloss0.2061557647817926d_logloss\n", " \n", " \n", " \n", @@ -1936,107 +1969,107 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2059,85 +2092,85 @@ " \n", " \n", " \n", - "
coef_asc_children-1.199240e-064.680292e-05
coef_asc_mixed1.199240e-061.506794e-04
coef_household_has_more_cars_than_workers_adults-7.697895e-122-1.303235e-04
coef_household_has_more_cars_than_workers_mixed2.677106e-094.087211e-05
coef_household_in_suburban_area_adults0.000000e+00-2.788428e-05
coef_household_in_suburban_area_mixed0.000000e+00-2.733559e-05
coef_household_in_urban_area-1.311061e-38-1.695981e-04
coef_log_max_overlap_of_adults_time_windows-2.551704e-387.673766e-05
coef_log_max_overlap_of_childrens_time_windows-2.523891e-063.533351e-05
coef_log_max_overlap_of_time_windows2.726540e-062.703275e-05
coef_low_income_households_adults-4.843014e-79-1.364236e-04
coef_low_income_households_mixed4.440892e-165.443801e-05
coef_medium_income_households-1.620456e-77-7.972989e-05
coef_number_of_children_too_young_for_school_children8.759917e-08-1.415851e-04
coef_number_of_children_too_young_for_school_mixed-8.759917e-08-1.265584e-04
coef_number_of_driving_age_children_children-2.272077e-16-7.515067e-05
coef_number_of_driving_age_children_mixed4.440892e-16-7.904237e-05
coef_number_of_full_time_workers_adults-3.933184e-381.573128e-04
coef_number_of_full_time_workers_mixed2.196009e-064.624742e-05
coef_number_of_non_workers_adults-4.909798e-77-2.862258e-05
coef_number_of_non_workers_mixed2.677106e-09-1.424617e-05
coef_number_of_part_time_workers_adults-1.620456e-77-2.202661e-04
coef_number_of_part_time_workers_mixed-8.759917e-082.445794e-07
coef_number_of_pre_driving_age_children_children-2.486079e-06-1.084978e-05
coef_number_of_pre_driving_age_children_mixed2.486079e-063.508229e-05
coef_number_of_university_students-2.474369e-317-5.764209e-05
coef_tour_purpose_is_discretionary_adults0.000000e+00
nit33nfev39njev33status0message'Optimization terminated successfully'successTrueelapsed_time0:00:00.266490method'SLSQP'n_cases91iteration_number33logloss1.075450285278776e-08" + "nit95nfev95njev95status0message'Optimization terminated successfully'successTrueelapsed_time0:00:00.247365method'SLSQP'n_cases1277iteration_number95loglike-263.2609116263491" ], "text/plain": [ - "┣ x: coef_asc_children 121.627746\n", - "┃ coef_asc_mixed -88.249613\n", - "┃ coef_household_has_more_cars_than_workers_adults -40.894264\n", - "┃ coef_household_has_more_cars_than_workers_mixed 153.815203\n", - "┃ coef_household_in_suburban_area_adults 0.510500\n", - "┃ coef_household_in_suburban_area_mixed 0.128300\n", - "┃ coef_household_in_urban_area -21.823334\n", - "┃ coef_log_max_overlap_of_adults_time_windows -36.285976\n", - "┃ coef_log_max_overlap_of_childrens_time_windows 283.696667\n", - "┃ coef_log_max_overlap_of_time_windows 196.728573\n", - "┃ coef_low_income_households_adults -16.894954\n", - "┃ coef_low_income_households_mixed -3.143593\n", - "┃ coef_medium_income_households -161.727385\n", - "┃ coef_number_of_children_too_young_for_school_children -110.048280\n", - "┃ coef_number_of_children_too_young_for_school_mixed 9.539326\n", - "┃ coef_number_of_driving_age_children_children -172.311937\n", - "┃ coef_number_of_driving_age_children_mixed 184.761407\n", - "┃ coef_number_of_full_time_workers_adults 185.490311\n", - "┃ coef_number_of_full_time_workers_mixed 50.943193\n", - "┃ coef_number_of_non_workers_adults 40.041010\n", - "┃ coef_number_of_non_workers_mixed -96.438666\n", - "┃ coef_number_of_part_time_workers_adults 47.088158\n", - "┃ coef_number_of_part_time_workers_mixed 58.958712\n", - "┃ coef_number_of_pre_driving_age_children_children 12.678858\n", - "┃ coef_number_of_pre_driving_age_children_mixed 158.960267\n", - "┃ coef_number_of_university_students -5.007830\n", + "┣ x: coef_asc_children 6.744041\n", + "┃ coef_asc_mixed 6.886657\n", + "┃ coef_household_has_more_cars_than_workers_adults 3.138920\n", + "┃ coef_household_has_more_cars_than_workers_mixed 0.384250\n", + "┃ coef_household_in_suburban_area_adults -1.123570\n", + "┃ coef_household_in_suburban_area_mixed 0.258299\n", + "┃ coef_household_in_urban_area -0.441828\n", + "┃ coef_log_max_overlap_of_adults_time_windows 1.288269\n", + "┃ coef_log_max_overlap_of_childrens_time_windows 1.783892\n", + "┃ coef_log_max_overlap_of_time_windows 1.505521\n", + "┃ coef_low_income_households_adults 2.520875\n", + "┃ coef_low_income_households_mixed 0.683195\n", + "┃ coef_medium_income_households 1.853225\n", + "┃ coef_number_of_children_too_young_for_school_children 0.661222\n", + "┃ coef_number_of_children_too_young_for_school_mixed 1.065525\n", + "┃ coef_number_of_driving_age_children_children 0.646806\n", + "┃ coef_number_of_driving_age_children_mixed 0.494992\n", + "┃ coef_number_of_full_time_workers_adults 1.638383\n", + "┃ coef_number_of_full_time_workers_mixed 0.106573\n", + "┃ coef_number_of_non_workers_adults 0.344889\n", + "┃ coef_number_of_non_workers_mixed -0.067851\n", + "┃ coef_number_of_part_time_workers_adults 0.094715\n", + "┃ coef_number_of_part_time_workers_mixed 0.182067\n", + "┃ coef_number_of_pre_driving_age_children_children 0.256545\n", + "┃ coef_number_of_pre_driving_age_children_mixed 0.311384\n", + "┃ coef_number_of_university_students 0.067485\n", "┃ coef_tour_purpose_is_discretionary_adults 0.764800\n", "┃ coef_tour_purpose_is_discretionary_children 0.510100\n", "┃ coef_tour_purpose_is_eating_out_children -0.967800\n", "┃ coef_tour_purpose_is_eating_out_mixed -0.802700\n", "┃ coef_unavailable -999.000000\n", "┃ dtype: float64\n", - "┣ loglike: -9.786597596036862e-07\n", - "┣ d_loglike: coef_asc_children -1.199240e-06\n", - "┃ coef_asc_mixed 1.199240e-06\n", - "┃ coef_household_has_more_cars_than_workers_adults -7.697895e-122\n", - "┃ coef_household_has_more_cars_than_workers_mixed 2.677106e-09\n", - "┃ coef_household_in_suburban_area_adults 0.000000e+00\n", - "┃ coef_household_in_suburban_area_mixed 0.000000e+00\n", - "┃ coef_household_in_urban_area -1.311061e-38\n", - "┃ coef_log_max_overlap_of_adults_time_windows -2.551704e-38\n", - "┃ coef_log_max_overlap_of_childrens_time_windows -2.523891e-06\n", - "┃ coef_log_max_overlap_of_time_windows 2.726540e-06\n", - "┃ coef_low_income_households_adults -4.843014e-79\n", - "┃ coef_low_income_households_mixed 4.440892e-16\n", - "┃ coef_medium_income_households -1.620456e-77\n", - "┃ coef_number_of_children_too_young_for_school_children 8.759917e-08\n", - "┃ coef_number_of_children_too_young_for_school_mixed -8.759917e-08\n", - "┃ coef_number_of_driving_age_children_children -2.272077e-16\n", - "┃ coef_number_of_driving_age_children_mixed 4.440892e-16\n", - "┃ coef_number_of_full_time_workers_adults -3.933184e-38\n", - "┃ coef_number_of_full_time_workers_mixed 2.196009e-06\n", - "┃ coef_number_of_non_workers_adults -4.909798e-77\n", - "┃ coef_number_of_non_workers_mixed 2.677106e-09\n", - "┃ coef_number_of_part_time_workers_adults -1.620456e-77\n", - "┃ coef_number_of_part_time_workers_mixed -8.759917e-08\n", - "┃ coef_number_of_pre_driving_age_children_children -2.486079e-06\n", - "┃ coef_number_of_pre_driving_age_children_mixed 2.486079e-06\n", - "┃ coef_number_of_university_students -2.474369e-317\n", - "┃ coef_tour_purpose_is_discretionary_adults 0.000000e+00\n", - "┃ coef_tour_purpose_is_discretionary_children 0.000000e+00\n", - "┃ coef_tour_purpose_is_eating_out_children 0.000000e+00\n", - "┃ coef_tour_purpose_is_eating_out_mixed 0.000000e+00\n", - "┃ coef_unavailable 0.000000e+00\n", + "┣ logloss: 0.2061557647817926\n", + "┣ d_logloss: coef_asc_children 4.680292e-05\n", + "┃ coef_asc_mixed 1.506794e-04\n", + "┃ coef_household_has_more_cars_than_workers_adults -1.303235e-04\n", + "┃ coef_household_has_more_cars_than_workers_mixed 4.087211e-05\n", + "┃ coef_household_in_suburban_area_adults -2.788428e-05\n", + "┃ coef_household_in_suburban_area_mixed -2.733559e-05\n", + "┃ coef_household_in_urban_area -1.695981e-04\n", + "┃ coef_log_max_overlap_of_adults_time_windows 7.673766e-05\n", + "┃ coef_log_max_overlap_of_childrens_time_windows 3.533351e-05\n", + "┃ coef_log_max_overlap_of_time_windows 2.703275e-05\n", + "┃ coef_low_income_households_adults -1.364236e-04\n", + "┃ coef_low_income_households_mixed 5.443801e-05\n", + "┃ coef_medium_income_households -7.972989e-05\n", + "┃ coef_number_of_children_too_young_for_school_children -1.415851e-04\n", + "┃ coef_number_of_children_too_young_for_school_mixed -1.265584e-04\n", + "┃ coef_number_of_driving_age_children_children -7.515067e-05\n", + "┃ coef_number_of_driving_age_children_mixed -7.904237e-05\n", + "┃ coef_number_of_full_time_workers_adults 1.573128e-04\n", + "┃ coef_number_of_full_time_workers_mixed 4.624742e-05\n", + "┃ coef_number_of_non_workers_adults -2.862258e-05\n", + "┃ coef_number_of_non_workers_mixed -1.424617e-05\n", + "┃ coef_number_of_part_time_workers_adults -2.202661e-04\n", + "┃ coef_number_of_part_time_workers_mixed 2.445794e-07\n", + "┃ coef_number_of_pre_driving_age_children_children -1.084978e-05\n", + "┃ coef_number_of_pre_driving_age_children_mixed 3.508229e-05\n", + "┃ coef_number_of_university_students -5.764209e-05\n", + "┃ coef_tour_purpose_is_discretionary_adults 0.000000e+00\n", + "┃ coef_tour_purpose_is_discretionary_children 0.000000e+00\n", + "┃ coef_tour_purpose_is_eating_out_children 0.000000e+00\n", + "┃ coef_tour_purpose_is_eating_out_mixed 0.000000e+00\n", + "┃ coef_unavailable 0.000000e+00\n", "┃ dtype: float64\n", - "┣ nit: 33\n", - "┣ nfev: 39\n", - "┣ njev: 33\n", + "┣ nit: 95\n", + "┣ nfev: 95\n", + "┣ njev: 95\n", "┣ status: 0\n", "┣ message: 'Optimization terminated successfully'\n", "┣ success: True\n", - "┣ elapsed_time: datetime.timedelta(microseconds=266490)\n", + "┣ elapsed_time: datetime.timedelta(microseconds=247365)\n", "┣ method: 'SLSQP'\n", - "┣ n_cases: 91\n", - "┣ iteration_number: 33\n", - "┣ logloss: 1.075450285278776e-08" + "┣ n_cases: 1277\n", + "┣ iteration_number: 95\n", + "┣ loglike: -263.2609116263491" ] }, "execution_count": 7, @@ -2172,330 +2205,325 @@ { "data": { "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Value Std Err t Stat Signif Like Ratio Null Value Constrained
coef_asc_children 122. NA NA[***] 306.42 0.00
coef_asc_mixed-88.2 2.20e+04-0.00 NA 0.00
coef_household_has_more_cars_than_workers_adults-40.9 NA NA[] 0.00 0.00
coef_household_has_more_cars_than_workers_mixed 154. 4.67e+04 0.00 NA 0.00
coef_household_in_suburban_area_adults 0.511 NA NA[] 0.00 0.00
coef_household_in_suburban_area_mixed 0.128 NA NA[] 0.00 0.00
coef_household_in_urban_area-21.8 NA NA[] 0.00 0.00
coef_log_max_overlap_of_adults_time_windows-36.3 NA NA[] 0.00 0.00
coef_log_max_overlap_of_childrens_time_windows 284. NA NA[***] BIG 0.00
coef_log_max_overlap_of_time_windows 197. 1.02e+04 0.02 NA 0.00
coef_low_income_households_adults-16.9 NA NA[] 0.00 0.00
coef_low_income_households_mixed-3.14 NA NA[] 0.00 0.00
coef_medium_income_households-162. NA NA[] 0.00 0.00
coef_number_of_children_too_young_for_school_children-110. 9.62e+03-0.01 NA 0.00
coef_number_of_children_too_young_for_school_mixed 9.54 4.19e+03 0.00 NA 0.00
coef_number_of_driving_age_children_children-172. 1.21e+05-0.00 NA 0.00
coef_number_of_driving_age_children_mixed 185. NA NA[***] 293.31 0.00
coef_number_of_full_time_workers_adults 185. NA NA[***] 216.30 0.00
coef_number_of_full_time_workers_mixed 50.9 3.72e+03 0.01 NA 0.00
coef_number_of_non_workers_adults 40.0 NA NA[] 0.00 0.00
coef_number_of_non_workers_mixed-96.4 2.02e+05-0.00 NA 0.00
coef_number_of_part_time_workers_adults 47.1 NA NA[] 0.00 0.00
coef_number_of_part_time_workers_mixed 59.0 4.19e+03 0.01 NA 0.00
coef_number_of_pre_driving_age_children_children 12.7 1.41e+04 0.00 NA 0.00
coef_number_of_pre_driving_age_children_mixed 159. 2.22e+04 0.01 NA 0.00
coef_number_of_university_students-5.01 0.00 NA[] 0.00 0.00
coef_tour_purpose_is_discretionary_adults 0.765 0.00 NA[] 0.00 0.00
coef_tour_purpose_is_discretionary_children 0.510 0.00 NA[] 0.00 0.00
coef_tour_purpose_is_eating_out_children-0.968 0.00 NA[] 0.00 0.00
coef_tour_purpose_is_eating_out_mixed-0.803 0.00 NA[] 0.00 0.00
coef_unavailable-999. NA NA NA 0.00fixed value
" + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ValueStd Errt StatSignifNull ValueConstrained
Parameter      
coef_asc_children 6.74 NA NA 0.00
coef_asc_mixed 6.89 NA NA 0.00
coef_household_has_more_cars_than_workers_adults 3.14 1.19 2.64** 0.00
coef_household_has_more_cars_than_workers_mixed 0.384 0.275 1.40 0.00
coef_household_in_suburban_area_adults-1.12 NA NA 0.00
coef_household_in_suburban_area_mixed 0.258 0.272 0.95 0.00
coef_household_in_urban_area-0.442 NA NA 0.00
coef_log_max_overlap_of_adults_time_windows 1.29 0.921 1.40 0.00
coef_log_max_overlap_of_childrens_time_windows 1.78 0.379 4.71*** 0.00
coef_log_max_overlap_of_time_windows 1.51 0.376 4.00*** 0.00
coef_low_income_households_adults 2.52 1.01 2.48* 0.00
coef_low_income_households_mixed 0.683 0.345 1.98* 0.00
coef_medium_income_households 1.85 0.782 2.37* 0.00
coef_number_of_children_too_young_for_school_children 0.661 0.684 0.97 0.00
coef_number_of_children_too_young_for_school_mixed 1.07 0.653 1.63 0.00
coef_number_of_driving_age_children_children 0.647 0.901 0.72 0.00
coef_number_of_driving_age_children_mixed 0.495 0.870 0.57 0.00
coef_number_of_full_time_workers_adults 1.64 0.455 3.60*** 0.00
coef_number_of_full_time_workers_mixed 0.107 0.175 0.61 0.00
coef_number_of_non_workers_adults 0.345 0.455 0.76 0.00
coef_number_of_non_workers_mixed-0.0679 0.175-0.39 0.00
coef_number_of_part_time_workers_adults 0.0947 0.789 0.12 0.00
coef_number_of_part_time_workers_mixed 0.182 0.227 0.80 0.00
coef_number_of_pre_driving_age_children_children 0.257 0.503 0.51 0.00
coef_number_of_pre_driving_age_children_mixed 0.311 0.475 0.66 0.00
coef_number_of_university_students 0.0675 0.499 0.14 0.00
coef_tour_purpose_is_discretionary_adults 0.765 0.00 NA 0.00
coef_tour_purpose_is_discretionary_children 0.510 0.00 NA 0.00
coef_tour_purpose_is_eating_out_children-0.968 0.00 NA 0.00
coef_tour_purpose_is_eating_out_mixed-0.803 0.00 NA 0.00
coef_unavailable-999. 0.00 NA 0.00fixed value
\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 8, @@ -2542,18 +2570,7 @@ "cell_type": "code", "execution_count": 10, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "model.to_xlsx(\n", " result_dir/f\"{modelname}_model_estimation.xlsx\", \n", @@ -2611,13 +2628,13 @@ " \n", " 1\n", " coef_asc_children\n", - " 121.627746\n", + " 6.744041\n", " F\n", " \n", " \n", " 2\n", " coef_asc_mixed\n", - " -88.249613\n", + " 6.886657\n", " fF\n", " \n", " \n", @@ -2647,145 +2664,145 @@ " \n", " 7\n", " coef_number_of_full_time_workers_adults\n", - " 185.490311\n", + " 1.638383\n", " F\n", " \n", " \n", " 8\n", " coef_number_of_full_time_workers_mixed\n", - " 50.943193\n", + " 0.106573\n", " F\n", " \n", " \n", " 9\n", " coef_number_of_part_time_workers_adults\n", - " 47.088158\n", + " 0.094715\n", " F\n", " \n", " \n", " 10\n", " coef_number_of_part_time_workers_mixed\n", - " 58.958712\n", + " 0.182067\n", " F\n", " \n", " \n", " 11\n", " coef_number_of_university_students\n", - " -5.007830\n", + " 0.067485\n", " F\n", " \n", " \n", " 12\n", " coef_number_of_non_workers_adults\n", - " 40.041010\n", + " 0.344889\n", " F\n", " \n", " \n", " 13\n", " coef_number_of_non_workers_mixed\n", - " -96.438666\n", + " -0.067851\n", " F\n", " \n", " \n", " 14\n", " coef_number_of_children_too_young_for_school_c...\n", - " -110.048280\n", + " 0.661222\n", " F\n", " \n", " \n", " 15\n", " coef_number_of_children_too_young_for_school_m...\n", - " 9.539326\n", + " 1.065525\n", " F\n", " \n", " \n", " 16\n", " coef_number_of_pre_driving_age_children_children\n", - " 12.678858\n", + " 0.256545\n", " F\n", " \n", " \n", " 17\n", " coef_number_of_pre_driving_age_children_mixed\n", - " 158.960267\n", + " 0.311384\n", " F\n", " \n", " \n", " 18\n", " coef_number_of_driving_age_children_children\n", - " -172.311937\n", + " 0.646806\n", " F\n", " \n", " \n", " 19\n", " coef_number_of_driving_age_children_mixed\n", - " 184.761407\n", + " 0.494992\n", " F\n", " \n", " \n", " 20\n", " coef_low_income_households_adults\n", - " -16.894954\n", + " 2.520875\n", " F\n", " \n", " \n", " 21\n", " coef_low_income_households_mixed\n", - " -3.143593\n", + " 0.683195\n", " F\n", " \n", " \n", " 22\n", " coef_medium_income_households\n", - " -161.727385\n", + " 1.853225\n", " F\n", " \n", " \n", " 23\n", " coef_household_has_more_cars_than_workers_adults\n", - " -40.894264\n", + " 3.138920\n", " F\n", " \n", " \n", " 24\n", " coef_household_has_more_cars_than_workers_mixed\n", - " 153.815203\n", + " 0.384250\n", " F\n", " \n", " \n", " 25\n", " coef_household_in_urban_area\n", - " -21.823334\n", + " -0.441828\n", " F\n", " \n", " \n", " 26\n", " coef_household_in_suburban_area_adults\n", - " 0.510500\n", + " -1.123570\n", " F\n", " \n", " \n", " 27\n", " coef_household_in_suburban_area_mixed\n", - " 0.128300\n", + " 0.258299\n", " F\n", " \n", " \n", " 28\n", " coef_log_max_overlap_of_adults_time_windows\n", - " -36.285976\n", + " 1.288269\n", " F\n", " \n", " \n", " 29\n", " coef_log_max_overlap_of_childrens_time_windows\n", - " 283.696667\n", + " 1.783892\n", " F\n", " \n", " \n", " 30\n", " coef_log_max_overlap_of_time_windows\n", - " 196.728573\n", + " 1.505521\n", " F\n", " \n", " \n", @@ -2795,36 +2812,36 @@ "text/plain": [ " coefficient_name value constrain\n", "0 coef_unavailable -999.000000 T\n", - "1 coef_asc_children 121.627746 F\n", - "2 coef_asc_mixed -88.249613 fF\n", + "1 coef_asc_children 6.744041 F\n", + "2 coef_asc_mixed 6.886657 fF\n", "3 coef_tour_purpose_is_eating_out_children -0.967800 F\n", "4 coef_tour_purpose_is_eating_out_mixed -0.802700 F\n", "5 coef_tour_purpose_is_discretionary_adults 0.764800 F\n", "6 coef_tour_purpose_is_discretionary_children 0.510100 F\n", - "7 coef_number_of_full_time_workers_adults 185.490311 F\n", - "8 coef_number_of_full_time_workers_mixed 50.943193 F\n", - "9 coef_number_of_part_time_workers_adults 47.088158 F\n", - "10 coef_number_of_part_time_workers_mixed 58.958712 F\n", - "11 coef_number_of_university_students -5.007830 F\n", - "12 coef_number_of_non_workers_adults 40.041010 F\n", - "13 coef_number_of_non_workers_mixed -96.438666 F\n", - "14 coef_number_of_children_too_young_for_school_c... -110.048280 F\n", - "15 coef_number_of_children_too_young_for_school_m... 9.539326 F\n", - "16 coef_number_of_pre_driving_age_children_children 12.678858 F\n", - "17 coef_number_of_pre_driving_age_children_mixed 158.960267 F\n", - "18 coef_number_of_driving_age_children_children -172.311937 F\n", - "19 coef_number_of_driving_age_children_mixed 184.761407 F\n", - "20 coef_low_income_households_adults -16.894954 F\n", - "21 coef_low_income_households_mixed -3.143593 F\n", - "22 coef_medium_income_households -161.727385 F\n", - "23 coef_household_has_more_cars_than_workers_adults -40.894264 F\n", - "24 coef_household_has_more_cars_than_workers_mixed 153.815203 F\n", - "25 coef_household_in_urban_area -21.823334 F\n", - "26 coef_household_in_suburban_area_adults 0.510500 F\n", - "27 coef_household_in_suburban_area_mixed 0.128300 F\n", - "28 coef_log_max_overlap_of_adults_time_windows -36.285976 F\n", - "29 coef_log_max_overlap_of_childrens_time_windows 283.696667 F\n", - "30 coef_log_max_overlap_of_time_windows 196.728573 F" + "7 coef_number_of_full_time_workers_adults 1.638383 F\n", + "8 coef_number_of_full_time_workers_mixed 0.106573 F\n", + "9 coef_number_of_part_time_workers_adults 0.094715 F\n", + "10 coef_number_of_part_time_workers_mixed 0.182067 F\n", + "11 coef_number_of_university_students 0.067485 F\n", + "12 coef_number_of_non_workers_adults 0.344889 F\n", + "13 coef_number_of_non_workers_mixed -0.067851 F\n", + "14 coef_number_of_children_too_young_for_school_c... 0.661222 F\n", + "15 coef_number_of_children_too_young_for_school_m... 1.065525 F\n", + "16 coef_number_of_pre_driving_age_children_children 0.256545 F\n", + "17 coef_number_of_pre_driving_age_children_mixed 0.311384 F\n", + "18 coef_number_of_driving_age_children_children 0.646806 F\n", + "19 coef_number_of_driving_age_children_mixed 0.494992 F\n", + "20 coef_low_income_households_adults 2.520875 F\n", + "21 coef_low_income_households_mixed 0.683195 F\n", + "22 coef_medium_income_households 1.853225 F\n", + "23 coef_household_has_more_cars_than_workers_adults 3.138920 F\n", + "24 coef_household_has_more_cars_than_workers_mixed 0.384250 F\n", + "25 coef_household_in_urban_area -0.441828 F\n", + "26 coef_household_in_suburban_area_adults -1.123570 F\n", + "27 coef_household_in_suburban_area_mixed 0.258299 F\n", + "28 coef_log_max_overlap_of_adults_time_windows 1.288269 F\n", + "29 coef_log_max_overlap_of_childrens_time_windows 1.783892 F\n", + "30 coef_log_max_overlap_of_time_windows 1.505521 F" ] }, "execution_count": 11, @@ -2844,7 +2861,7 @@ "toc_visible": true }, "kernelspec": { - "display_name": "Python 3", + "display_name": "ESTER", "language": "python", "name": "python3" }, @@ -2858,7 +2875,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.10.15" }, "toc": { "base_numbering": 1, diff --git a/activitysim/examples/example_estimation/notebooks/12_joint_tour_participation.ipynb b/activitysim/examples/example_estimation/notebooks/12_joint_tour_participation.ipynb index 22eb78efa..6aa4c7d14 100644 --- a/activitysim/examples/example_estimation/notebooks/12_joint_tour_participation.ipynb +++ b/activitysim/examples/example_estimation/notebooks/12_joint_tour_participation.ipynb @@ -34,27 +34,75 @@ "id": "s53VwlPwtNnr", "outputId": "d1208b7a-c1f2-4b0b-c439-bf312fe12be0" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "JAX not found. Some functionality will be unavailable.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'larch': '6.0.32',\n", + " 'sharrow': '2.13.0',\n", + " 'numpy': '1.26.4',\n", + " 'pandas': '1.5.3',\n", + " 'xarray': '2024.3.0',\n", + " 'numba': '0.60.0'}" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "import os\n", - "import larch # !conda install larch -c conda-forge # for estimation\n", - "import pandas as pd" + "import larch as lx\n", + "import pandas as pd\n", + "\n", + "lx.versions()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We'll work in our `test` directory, where ActivitySim has saved the estimation data bundles." + "For this demo, we will assume that you have already run ActivitySim in estimation\n", + "mode, and saved the required estimation data bundles (EDB's) to disk. See\n", + "the [first notebook](./01_estimation_mode.ipynb) for details. The following module\n", + "will run a script to set everything up if the example data is not already available." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "EDB directory already populated.\n" + ] + }, + { + "data": { + "text/plain": [ + "PosixPath('test-estimation-data/activitysim-prototype-mtc-extended')" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "os.chdir('test')" + "from est_mode_setup import prepare\n", + "\n", + "prepare()" ] }, { @@ -68,12 +116,27 @@ "cell_type": "code", "execution_count": 3, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "loading from output-est-mode/estimation_data_bundle/joint_tour_participation/joint_tour_participation_coefficients.csv\n", + "loading spec from output-est-mode/estimation_data_bundle/joint_tour_participation/joint_tour_participation_SPEC.csv\n", + "loading from output-est-mode/estimation_data_bundle/joint_tour_participation/joint_tour_participation_values_combined.parquet\n" + ] + } + ], "source": [ "modelname = \"joint_tour_participation\"\n", "\n", "from activitysim.estimation.larch import component_model\n", - "model, data = component_model(modelname, return_data=True)" + "\n", + "model, data = component_model(\n", + " modelname,\n", + " edb_directory=f\"output-est-mode/estimation_data_bundle/{modelname}/\",\n", + " return_data=True,\n", + ")" ] }, { @@ -794,14 +857,14 @@ " \n", " \n", " \n", - " 778529801\n", + " 785368601\n", " 0\n", " 0\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", - " 0.0\n", + " 1.0\n", " 0.0\n", " 0.0\n", " 0.0\n", @@ -812,20 +875,20 @@ " True\n", " False\n", " False\n", + " True\n", " False\n", - " False\n", - " False\n", + " True\n", " 1\n", " \n", " \n", - " 778529802\n", + " 785368602\n", " 0\n", " 0\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", - " 0.0\n", + " 1.0\n", " 0.0\n", " 0.0\n", " 0.0\n", @@ -836,20 +899,20 @@ " True\n", " False\n", " False\n", + " True\n", " False\n", - " False\n", - " False\n", + " True\n", " 1\n", " \n", " \n", - " 870845401\n", + " 790231801\n", " 0\n", " 0\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", - " 0.0\n", + " 1.0\n", " 0.0\n", " 0.0\n", " 0.0\n", @@ -860,20 +923,20 @@ " True\n", " False\n", " False\n", + " True\n", " False\n", - " False\n", - " False\n", + " True\n", " 1\n", " \n", " \n", - " 870845402\n", + " 790231802\n", " 0\n", " 0\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", - " 0.0\n", + " 1.0\n", " 0.0\n", " 0.0\n", " 0.0\n", @@ -884,20 +947,20 @@ " True\n", " False\n", " False\n", + " True\n", " False\n", - " False\n", - " False\n", + " True\n", " 1\n", " \n", " \n", - " 971500601\n", + " 790977601\n", " 0\n", " 0\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", - " 0.0\n", + " 1.0\n", " 0.0\n", " 0.0\n", " 0.0\n", @@ -910,7 +973,7 @@ " False\n", " False\n", " False\n", - " False\n", + " True\n", " 1\n", " \n", " \n", @@ -938,10 +1001,9 @@ " ...\n", " \n", " \n", - " 29881474102\n", - " 0\n", - " 0\n", - " 0.0\n", + " 30524624502\n", + " 1\n", + " 1\n", " 1.0\n", " 0.0\n", " 0.0\n", @@ -949,25 +1011,26 @@ " 0.0\n", " 0.0\n", " 0.0\n", + " 0.0\n", " ...\n", " False\n", " False\n", " False\n", - " True\n", " False\n", " False\n", + " True\n", " False\n", " True\n", " False\n", - " 1\n", + " 2\n", " \n", " \n", - " 30181098001\n", - " 1\n", - " 1\n", - " 0.0\n", + " 30524624503\n", + " 0\n", + " 0\n", " 0.0\n", " 0.0\n", + " 1.0\n", " 0.0\n", " 0.0\n", " 0.0\n", @@ -977,21 +1040,21 @@ " False\n", " False\n", " False\n", - " True\n", " False\n", " False\n", + " True\n", " False\n", " True\n", " False\n", - " 2\n", + " 1\n", " \n", " \n", - " 30181098002\n", + " 30524624504\n", " 0\n", " 0\n", " 0.0\n", " 0.0\n", - " 0.0\n", + " 1.0\n", " 0.0\n", " 0.0\n", " 0.0\n", @@ -1001,22 +1064,22 @@ " False\n", " False\n", " False\n", - " True\n", " False\n", " False\n", + " True\n", " False\n", " True\n", " False\n", " 1\n", " \n", " \n", - " 30181098003\n", + " 30524624505\n", " 0\n", " 0\n", " 0.0\n", " 0.0\n", " 0.0\n", - " 0.0\n", + " 1.0\n", " 0.0\n", " 0.0\n", " 0.0\n", @@ -1025,16 +1088,16 @@ " False\n", " False\n", " False\n", - " True\n", " False\n", " False\n", + " True\n", " False\n", " True\n", " False\n", " 1\n", " \n", " \n", - " 30181098004\n", + " 30524624506\n", " 0\n", " 0\n", " 0.0\n", @@ -1044,14 +1107,14 @@ " 0.0\n", " 0.0\n", " 0.0\n", - " 0.0\n", + " 1.0\n", " ...\n", + " True\n", " False\n", " False\n", " False\n", - " True\n", - " False\n", " False\n", + " True\n", " False\n", " True\n", " False\n", @@ -1059,193 +1122,193 @@ " \n", " \n", "\n", - "

304 rows × 226 columns

\n", + "

4500 rows × 226 columns

\n", "" ], "text/plain": [ " model_choice override_choice \\\n", "participant_id \n", - "778529801 0 0 \n", - "778529802 0 0 \n", - "870845401 0 0 \n", - "870845402 0 0 \n", - "971500601 0 0 \n", + "785368601 0 0 \n", + "785368602 0 0 \n", + "790231801 0 0 \n", + "790231802 0 0 \n", + "790977601 0 0 \n", "... ... ... \n", - "29881474102 0 0 \n", - "30181098001 1 1 \n", - "30181098002 0 0 \n", - "30181098003 0 0 \n", - "30181098004 0 0 \n", + "30524624502 1 1 \n", + "30524624503 0 0 \n", + "30524624504 0 0 \n", + "30524624505 0 0 \n", + "30524624506 0 0 \n", "\n", " util_full_time_worker_mixed_party \\\n", "participant_id \n", - "778529801 0.0 \n", - "778529802 0.0 \n", - "870845401 0.0 \n", - "870845402 0.0 \n", - "971500601 0.0 \n", + "785368601 0.0 \n", + "785368602 0.0 \n", + "790231801 0.0 \n", + "790231802 0.0 \n", + "790977601 0.0 \n", "... ... \n", - "29881474102 0.0 \n", - "30181098001 0.0 \n", - "30181098002 0.0 \n", - "30181098003 0.0 \n", - "30181098004 0.0 \n", + "30524624502 1.0 \n", + "30524624503 0.0 \n", + "30524624504 0.0 \n", + "30524624505 0.0 \n", + "30524624506 0.0 \n", "\n", " util_part_time_worker_adults_only_party \\\n", "participant_id \n", - "778529801 0.0 \n", - "778529802 0.0 \n", - "870845401 0.0 \n", - "870845402 0.0 \n", - "971500601 0.0 \n", + "785368601 0.0 \n", + "785368602 0.0 \n", + "790231801 0.0 \n", + "790231802 0.0 \n", + "790977601 0.0 \n", "... ... \n", - "29881474102 1.0 \n", - "30181098001 0.0 \n", - "30181098002 0.0 \n", - "30181098003 0.0 \n", - "30181098004 0.0 \n", + "30524624502 0.0 \n", + "30524624503 0.0 \n", + "30524624504 0.0 \n", + "30524624505 0.0 \n", + "30524624506 0.0 \n", "\n", " util_part_time_worker_mixed_party \\\n", "participant_id \n", - "778529801 0.0 \n", - "778529802 0.0 \n", - "870845401 0.0 \n", - "870845402 0.0 \n", - "971500601 0.0 \n", + "785368601 0.0 \n", + "785368602 0.0 \n", + "790231801 0.0 \n", + "790231802 0.0 \n", + "790977601 0.0 \n", "... ... \n", - "29881474102 0.0 \n", - "30181098001 0.0 \n", - "30181098002 0.0 \n", - "30181098003 0.0 \n", - "30181098004 0.0 \n", + "30524624502 0.0 \n", + "30524624503 1.0 \n", + "30524624504 1.0 \n", + "30524624505 0.0 \n", + "30524624506 0.0 \n", "\n", " util_university_student_mixed_party \\\n", "participant_id \n", - "778529801 0.0 \n", - "778529802 0.0 \n", - "870845401 0.0 \n", - "870845402 0.0 \n", - "971500601 0.0 \n", + "785368601 0.0 \n", + "785368602 0.0 \n", + "790231801 0.0 \n", + "790231802 0.0 \n", + "790977601 0.0 \n", "... ... \n", - "29881474102 0.0 \n", - "30181098001 0.0 \n", - "30181098002 0.0 \n", - "30181098003 0.0 \n", - "30181098004 0.0 \n", + "30524624502 0.0 \n", + "30524624503 0.0 \n", + "30524624504 0.0 \n", + "30524624505 1.0 \n", + "30524624506 0.0 \n", "\n", " util_non_worker_adults_only_party \\\n", "participant_id \n", - "778529801 0.0 \n", - "778529802 0.0 \n", - "870845401 0.0 \n", - "870845402 0.0 \n", - "971500601 0.0 \n", + "785368601 1.0 \n", + "785368602 1.0 \n", + "790231801 1.0 \n", + "790231802 1.0 \n", + "790977601 1.0 \n", "... ... \n", - "29881474102 0.0 \n", - "30181098001 0.0 \n", - "30181098002 0.0 \n", - "30181098003 0.0 \n", - "30181098004 0.0 \n", + "30524624502 0.0 \n", + "30524624503 0.0 \n", + "30524624504 0.0 \n", + "30524624505 0.0 \n", + "30524624506 0.0 \n", "\n", " util_non_worker_mixed_party \\\n", "participant_id \n", - "778529801 0.0 \n", - "778529802 0.0 \n", - "870845401 0.0 \n", - "870845402 0.0 \n", - "971500601 0.0 \n", + "785368601 0.0 \n", + "785368602 0.0 \n", + "790231801 0.0 \n", + "790231802 0.0 \n", + "790977601 0.0 \n", "... ... \n", - "29881474102 0.0 \n", - "30181098001 0.0 \n", - "30181098002 0.0 \n", - "30181098003 0.0 \n", - "30181098004 0.0 \n", + "30524624502 0.0 \n", + "30524624503 0.0 \n", + "30524624504 0.0 \n", + "30524624505 0.0 \n", + "30524624506 0.0 \n", "\n", " util_child_too_young_for_school_children_only_party \\\n", "participant_id \n", - "778529801 0.0 \n", - "778529802 0.0 \n", - "870845401 0.0 \n", - "870845402 0.0 \n", - "971500601 0.0 \n", + "785368601 0.0 \n", + "785368602 0.0 \n", + "790231801 0.0 \n", + "790231802 0.0 \n", + "790977601 0.0 \n", "... ... \n", - "29881474102 0.0 \n", - "30181098001 0.0 \n", - "30181098002 0.0 \n", - "30181098003 0.0 \n", - "30181098004 0.0 \n", + "30524624502 0.0 \n", + "30524624503 0.0 \n", + "30524624504 0.0 \n", + "30524624505 0.0 \n", + "30524624506 0.0 \n", "\n", " util_child_too_young_for_school_mixed_party ... \\\n", "participant_id ... \n", - "778529801 0.0 ... \n", - "778529802 0.0 ... \n", - "870845401 0.0 ... \n", - "870845402 0.0 ... \n", - "971500601 0.0 ... \n", + "785368601 0.0 ... \n", + "785368602 0.0 ... \n", + "790231801 0.0 ... \n", + "790231802 0.0 ... \n", + "790977601 0.0 ... \n", "... ... ... \n", - "29881474102 0.0 ... \n", - "30181098001 0.0 ... \n", - "30181098002 0.0 ... \n", - "30181098003 0.0 ... \n", - "30181098004 0.0 ... \n", + "30524624502 0.0 ... \n", + "30524624503 0.0 ... \n", + "30524624504 0.0 ... \n", + "30524624505 0.0 ... \n", + "30524624506 1.0 ... \n", "\n", " person_is_preschool tour_type_is_eat tour_type_is_disc \\\n", "participant_id \n", - "778529801 False False False \n", - "778529802 False False False \n", - "870845401 False False False \n", - "870845402 False False False \n", - "971500601 False False False \n", + "785368601 False False False \n", + "785368602 False False False \n", + "790231801 False False False \n", + "790231802 False False False \n", + "790977601 False False False \n", "... ... ... ... \n", - "29881474102 False False False \n", - "30181098001 False False False \n", - "30181098002 False False False \n", - "30181098003 False False False \n", - "30181098004 False False False \n", + "30524624502 False False False \n", + "30524624503 False False False \n", + "30524624504 False False False \n", + "30524624505 False False False \n", + "30524624506 True False False \n", "\n", " tour_composition_is_adults tour_composition_is_children \\\n", "participant_id \n", - "778529801 True False \n", - "778529802 True False \n", - "870845401 True False \n", - "870845402 True False \n", - "971500601 True False \n", + "785368601 True False \n", + "785368602 True False \n", + "790231801 True False \n", + "790231802 True False \n", + "790977601 True False \n", "... ... ... \n", - "29881474102 True False \n", - "30181098001 True False \n", - "30181098002 True False \n", - "30181098003 True False \n", - "30181098004 True False \n", + "30524624502 False False \n", + "30524624503 False False \n", + "30524624504 False False \n", + "30524624505 False False \n", + "30524624506 False False \n", "\n", " tour_composition_is_mixed home_is_suburban high_income \\\n", "participant_id \n", - "778529801 False False False \n", - "778529802 False False False \n", - "870845401 False False False \n", - "870845402 False False False \n", - "971500601 False False False \n", + "785368601 False True False \n", + "785368602 False True False \n", + "790231801 False True False \n", + "790231802 False True False \n", + "790977601 False False False \n", "... ... ... ... \n", - "29881474102 False False True \n", - "30181098001 False False True \n", - "30181098002 False False True \n", - "30181098003 False False True \n", - "30181098004 False False True \n", + "30524624502 True False True \n", + "30524624503 True False True \n", + "30524624504 True False True \n", + "30524624505 True False True \n", + "30524624506 True False True \n", "\n", " more_cars_than_workers override_choice_code \n", "participant_id \n", - "778529801 False 1 \n", - "778529802 False 1 \n", - "870845401 False 1 \n", - "870845402 False 1 \n", - "971500601 False 1 \n", + "785368601 True 1 \n", + "785368602 True 1 \n", + "790231801 True 1 \n", + "790231802 True 1 \n", + "790977601 True 1 \n", "... ... ... \n", - "29881474102 False 1 \n", - "30181098001 False 2 \n", - "30181098002 False 1 \n", - "30181098003 False 1 \n", - "30181098004 False 1 \n", + "30524624502 False 2 \n", + "30524624503 False 1 \n", + "30524624504 False 1 \n", + "30524624505 False 1 \n", + "30524624506 False 1 \n", "\n", - "[304 rows x 226 columns]" + "[4500 rows x 226 columns]" ] }, "execution_count": 6, @@ -1271,17 +1334,10 @@ "execution_count": 7, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "req_data does not request avail_ca or avail_co but it is set and being provided\n" - ] - }, { "data": { "text/html": [ - "

Iteration 112 [Optimization terminated successfully]

" + "

Iteration 080 [Optimization terminated successfully]

" ], "text/plain": [ "" @@ -1293,7 +1349,7 @@ { "data": { "text/html": [ - "

Best LL = -61.383086448632596

" + "

Best LL = -1240.495238444391

" ], "text/plain": [ "" @@ -1324,913 +1380,867 @@ " \n", " \n", " value\n", + " best\n", " initvalue\n", - " nullvalue\n", " minimum\n", " maximum\n", + " nullvalue\n", " holdfast\n", - " note\n", - " best\n", + " \n", + " \n", + " param_name\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " coef_adult_log_of_max_window_overlap_with_a_child_mixed\n", - " 4.595737\n", + " 2.125116\n", + " 2.125116\n", " 2.18900\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 4.595737\n", " \n", " \n", " coef_adult_log_of_max_window_overlap_with_an_adult_adult_only_party\n", - " 1.692145\n", + " 1.280678\n", + " 1.280678\n", " 0.84360\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.692145\n", " \n", " \n", " coef_adult_more_automobiles_than_workers_adult_only_party\n", - " 0.311671\n", + " 0.121220\n", + " 0.121220\n", " -0.21330\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.311671\n", " \n", " \n", " coef_adult_more_automobiles_than_workers_mixed_party\n", - " -1.827740\n", + " -0.591966\n", + " -0.591966\n", " -0.60310\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -1.827740\n", " \n", " \n", " coef_adult_number_of_joint_tours_adult_only\n", - " -2.134054\n", + " -0.794091\n", + " -0.794091\n", " -0.32420\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -2.134054\n", " \n", " \n", " coef_adult_number_of_joint_tours_mixed\n", - " -28.572220\n", + " -1.417451\n", + " -1.417451\n", " -0.35840\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -28.572220\n", " \n", " \n", " coef_adult_number_of_other_adults_in_the_household_adults_only_party\n", " 0.000000\n", + " 0.000000\n", " 0.00000\n", " 0.0\n", - " NaN\n", - " NaN\n", + " 0.0\n", + " 0.0\n", " 1\n", - " \n", - " 0.000000\n", " \n", " \n", " coef_adult_number_of_other_adults_in_the_household_mixed_party\n", " 0.000000\n", + " 0.000000\n", " 0.00000\n", " 0.0\n", - " NaN\n", - " NaN\n", + " 0.0\n", + " 0.0\n", " 1\n", - " \n", - " 0.000000\n", " \n", " \n", " coef_child_log_of_max_window_overlap_with_a_child_child\n", - " 1.275585\n", + " 1.296000\n", + " 1.296000\n", " 1.29600\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.275585\n", " \n", " \n", " coef_child_log_of_max_window_overlap_with_an_adult_mixed\n", - " 1.539267\n", + " 1.538000\n", + " 1.538000\n", " 1.53800\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.539267\n", " \n", " \n", " coef_child_more_automobiles_than_workers_child_only_party\n", - " -0.394683\n", + " -0.421400\n", + " -0.421400\n", " -0.42140\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.394683\n", " \n", " \n", " coef_child_more_automobiles_than_workers_mixed_party\n", - " -1.551914\n", + " -0.366466\n", + " -0.366466\n", " -0.37760\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -1.551914\n", " \n", " \n", " coef_child_number_of_joint_tours_child_only\n", - " 4.977604\n", + " 0.866122\n", + " 0.866122\n", " 0.10470\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 4.977604\n", " \n", " \n", " coef_child_number_of_joint_tours_mixed\n", - " 17.894892\n", + " -0.261747\n", + " -0.261747\n", " -0.50890\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 17.894892\n", " \n", " \n", " coef_child_number_of_other_children_in_the_household_child_only_party\n", " 0.000000\n", + " 0.000000\n", " 0.00000\n", " 0.0\n", - " NaN\n", - " NaN\n", + " 0.0\n", + " 0.0\n", " 1\n", - " \n", - " 0.000000\n", " \n", " \n", " coef_child_number_of_other_children_in_the_household_mixed\n", " 0.000000\n", + " 0.000000\n", " 0.00000\n", " 0.0\n", - " NaN\n", - " NaN\n", + " 0.0\n", + " 0.0\n", " 1\n", - " \n", - " 0.000000\n", " \n", " \n", " coef_child_too_young_for_school_children_only_party\n", - " -2.785631\n", + " -1.149596\n", + " -1.149596\n", " -2.78600\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -2.785631\n", " \n", " \n", " coef_child_too_young_for_school_mixed_party\n", - " 2.069934\n", + " 0.197836\n", + " 0.197836\n", " -1.89300\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 2.069934\n", " \n", " \n", " coef_child_too_young_for_school_specific_to_discretionary_joint_tours\n", - " 0.128371\n", + " 0.128400\n", + " 0.128400\n", " 0.12840\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.128371\n", " \n", " \n", " coef_child_too_young_for_school_specific_to_eating_out_joint_tours\n", - " 0.658655\n", + " 0.658900\n", + " 0.658900\n", " 0.65890\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.658655\n", " \n", " \n", " coef_driving_age_student_children_only_party\n", - " -1.822000\n", + " -2.120496\n", + " -2.120496\n", " -1.82200\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -1.822000\n", " \n", " \n", " coef_driving_age_student_mixed_party\n", - " -28.998969\n", + " 0.322986\n", + " 0.322986\n", " -1.35300\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -28.998969\n", " \n", " \n", " coef_driving_age_student_specific_to_discretionary_joint_tours\n", " -0.667500\n", + " -0.667500\n", " -0.66750\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.667500\n", " \n", " \n", " coef_driving_age_student_specific_to_eating_out_joint_tours\n", " 2.344000\n", + " 2.344000\n", " 2.34400\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 2.344000\n", " \n", " \n", " coef_dummy_for_high_income_for_adult_in_adult_party\n", - " 0.131783\n", + " -0.068202\n", + " -0.068202\n", " -0.16820\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.131783\n", " \n", " \n", " coef_dummy_for_high_income_for_adult_in_mixed_party\n", - " -0.378918\n", + " 0.112930\n", + " 0.112930\n", " -0.02613\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.378918\n", " \n", " \n", " coef_dummy_for_high_income_for_child_in_children_party\n", - " -0.561900\n", + " -0.211892\n", + " -0.211892\n", " -0.56190\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.561900\n", " \n", " \n", " coef_dummy_for_high_income_for_child_in_mixed_party\n", - " -0.513571\n", + " -0.013740\n", + " -0.013740\n", " -0.15280\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.513571\n", " \n", " \n", " coef_full_time_worker_mixed_party\n", - " -957.202749\n", + " -3.527365\n", + " -3.527365\n", " -3.56600\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -957.202749\n", " \n", " \n", " coef_full_time_worker_mixed_party_not\n", " 0.500000\n", + " 0.500000\n", " 0.50000\n", + " 0.5\n", + " 0.5\n", " 0.0\n", - " NaN\n", - " NaN\n", " 1\n", - " \n", - " 0.500000\n", " \n", " \n", " coef_full_time_worker_specific_to_discretionary_joint_tours\n", " 0.439200\n", + " 0.439200\n", " 0.43920\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.439200\n", " \n", " \n", " coef_full_time_worker_specific_to_discretionary_joint_tours_not\n", " 0.500000\n", + " 0.500000\n", " 0.50000\n", + " 0.5\n", + " 0.5\n", " 0.0\n", - " NaN\n", - " NaN\n", " 1\n", - " \n", - " 0.500000\n", " \n", " \n", " coef_full_time_worker_specific_to_eating_out_joint_tours\n", " 0.715700\n", + " 0.715700\n", " 0.71570\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.715700\n", " \n", " \n", " coef_full_time_worker_specific_to_eating_out_joint_tours_not\n", " 0.500000\n", + " 0.500000\n", " 0.50000\n", + " 0.5\n", + " 0.5\n", " 0.0\n", - " NaN\n", - " NaN\n", " 1\n", - " \n", - " 0.500000\n", " \n", " \n", " coef_household_in_suburban_area_adult_adult_only_party\n", " 0.000000\n", + " 0.000000\n", " 0.00000\n", " 0.0\n", - " NaN\n", - " NaN\n", + " 0.0\n", + " 0.0\n", " 1\n", - " \n", - " 0.000000\n", " \n", " \n", " coef_household_in_suburban_area_adult_mixed_party\n", - " -0.060070\n", + " 1.239881\n", + " 1.239881\n", " -0.06007\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.060070\n", " \n", " \n", " coef_household_in_suburban_area_child_child_only_party\n", " 0.000000\n", + " 0.000000\n", " 0.00000\n", " 0.0\n", - " NaN\n", - " NaN\n", + " 0.0\n", + " 0.0\n", " 1\n", - " \n", - " 0.000000\n", " \n", " \n", " coef_household_in_suburban_area_child_mixed_party\n", " 0.000000\n", + " 0.000000\n", " 0.00000\n", " 0.0\n", - " NaN\n", - " NaN\n", + " 0.0\n", + " 0.0\n", " 1\n", - " \n", - " 0.000000\n", " \n", " \n", " coef_household_in_urban_area_adult_adult_only_party\n", " 0.000000\n", + " 0.000000\n", " 0.00000\n", " 0.0\n", - " NaN\n", - " NaN\n", + " 0.0\n", + " 0.0\n", " 1\n", - " \n", - " 0.000000\n", " \n", " \n", " coef_household_in_urban_area_adult_mixed_party\n", - " 978.504490\n", + " 1.204039\n", + " 1.204039\n", " -0.13700\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 978.504490\n", " \n", " \n", " coef_household_in_urban_area_child_child_only_party\n", - " 6.082784\n", + " -0.145369\n", + " -0.145369\n", " 1.21000\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 6.082784\n", " \n", " \n", " coef_household_in_urban_area_child_mixed_party\n", - " -19.290030\n", + " -0.138857\n", + " -0.138857\n", " 0.62650\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -19.290030\n", " \n", " \n", " coef_non_worker_adults_only_party\n", - " -4.080384\n", + " -3.161945\n", + " -3.161945\n", " -3.16400\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -4.080384\n", " \n", " \n", " coef_non_worker_mixed_party\n", - " -125.288137\n", + " 1.059162\n", + " 1.059162\n", " 0.71520\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -125.288137\n", " \n", " \n", " coef_non_worker_specific_to_discretionary_joint_tours\n", " -0.183500\n", + " -0.183500\n", " -0.18350\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.183500\n", " \n", " \n", " coef_non_worker_specific_to_eating_out_joint_tours\n", " 0.161700\n", + " 0.161700\n", " 0.16170\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.161700\n", " \n", " \n", " coef_part_time_worker_adults_only_party\n", - " -3.248302\n", + " -3.631928\n", + " -3.631928\n", " -3.56600\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -3.248302\n", " \n", " \n", " coef_part_time_worker_adults_only_party_not\n", " 0.500000\n", + " 0.500000\n", " 0.50000\n", + " 0.5\n", + " 0.5\n", " 0.0\n", - " NaN\n", - " NaN\n", " 1\n", - " \n", - " 0.500000\n", " \n", " \n", " coef_part_time_worker_mixed_party\n", - " 2254.660944\n", + " -0.447984\n", + " -0.447984\n", " -0.36550\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 2254.660944\n", " \n", " \n", " coef_part_time_worker_specific_to_discretionary_joint_tours\n", " 0.285000\n", + " 0.285000\n", " 0.28500\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.285000\n", " \n", " \n", " coef_part_time_worker_specific_to_eating_out_joint_tours\n", " 2.188000\n", + " 2.188000\n", " 2.18800\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 2.188000\n", " \n", " \n", " coef_pre_driving_age_student_children_only_party\n", - " 4.151085\n", + " 0.991812\n", + " 0.991812\n", " -0.72170\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 4.151085\n", " \n", " \n", " coef_pre_driving_age_student_mixed_party\n", - " 2.007228\n", + " -0.073175\n", + " -0.073175\n", " -1.75200\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 2.007228\n", " \n", " \n", " coef_pre_driving_age_student_specific_to_discretionary_joint_tours\n", " 0.662600\n", + " 0.662600\n", " 0.66260\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.662600\n", " \n", " \n", " coef_pre_driving_age_student_specific_to_eating_out_joint_tours\n", " 1.391000\n", + " 1.391000\n", " 1.39100\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.391000\n", " \n", " \n", " coef_unavailable\n", " -999.000000\n", + " -999.000000\n", " -999.00000\n", + " -999.0\n", + " -999.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 1\n", - " \n", - " -999.000000\n", " \n", " \n", " coef_university_student_mixed_party\n", - " -958.612314\n", + " -2.902637\n", + " -2.902637\n", " -3.04100\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -958.612314\n", " \n", " \n", " coef_university_student_specific_to_discretionary_joint_tours\n", " 0.000000\n", + " 0.000000\n", " 0.00000\n", " 0.0\n", - " NaN\n", - " NaN\n", + " 0.0\n", + " 0.0\n", " 1\n", - " \n", - " 0.000000\n", " \n", " \n", " coef_university_student_specific_to_eating_out_joint_tours\n", " -0.820000\n", + " -0.820000\n", " -0.82000\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.820000\n", " \n", " \n", "\n", "" ], "text/plain": [ - " value initvalue \\\n", - "coef_adult_log_of_max_window_overlap_with_a_chi... 4.595737 2.18900 \n", - "coef_adult_log_of_max_window_overlap_with_an_ad... 1.692145 0.84360 \n", - "coef_adult_more_automobiles_than_workers_adult_... 0.311671 -0.21330 \n", - "coef_adult_more_automobiles_than_workers_mixed_... -1.827740 -0.60310 \n", - "coef_adult_number_of_joint_tours_adult_only -2.134054 -0.32420 \n", - "coef_adult_number_of_joint_tours_mixed -28.572220 -0.35840 \n", - "coef_adult_number_of_other_adults_in_the_househ... 0.000000 0.00000 \n", - "coef_adult_number_of_other_adults_in_the_househ... 0.000000 0.00000 \n", - "coef_child_log_of_max_window_overlap_with_a_chi... 1.275585 1.29600 \n", - "coef_child_log_of_max_window_overlap_with_an_ad... 1.539267 1.53800 \n", - "coef_child_more_automobiles_than_workers_child_... -0.394683 -0.42140 \n", - "coef_child_more_automobiles_than_workers_mixed_... -1.551914 -0.37760 \n", - "coef_child_number_of_joint_tours_child_only 4.977604 0.10470 \n", - "coef_child_number_of_joint_tours_mixed 17.894892 -0.50890 \n", - "coef_child_number_of_other_children_in_the_hous... 0.000000 0.00000 \n", - "coef_child_number_of_other_children_in_the_hous... 0.000000 0.00000 \n", - "coef_child_too_young_for_school_children_only_p... -2.785631 -2.78600 \n", - "coef_child_too_young_for_school_mixed_party 2.069934 -1.89300 \n", - "coef_child_too_young_for_school_specific_to_dis... 0.128371 0.12840 \n", - "coef_child_too_young_for_school_specific_to_eat... 0.658655 0.65890 \n", - "coef_driving_age_student_children_only_party -1.822000 -1.82200 \n", - "coef_driving_age_student_mixed_party -28.998969 -1.35300 \n", - "coef_driving_age_student_specific_to_discretion... -0.667500 -0.66750 \n", - "coef_driving_age_student_specific_to_eating_out... 2.344000 2.34400 \n", - "coef_dummy_for_high_income_for_adult_in_adult_p... 0.131783 -0.16820 \n", - "coef_dummy_for_high_income_for_adult_in_mixed_p... -0.378918 -0.02613 \n", - "coef_dummy_for_high_income_for_child_in_childre... -0.561900 -0.56190 \n", - "coef_dummy_for_high_income_for_child_in_mixed_p... -0.513571 -0.15280 \n", - "coef_full_time_worker_mixed_party -957.202749 -3.56600 \n", - "coef_full_time_worker_mixed_party_not 0.500000 0.50000 \n", - "coef_full_time_worker_specific_to_discretionary... 0.439200 0.43920 \n", - "coef_full_time_worker_specific_to_discretionary... 0.500000 0.50000 \n", - "coef_full_time_worker_specific_to_eating_out_jo... 0.715700 0.71570 \n", - "coef_full_time_worker_specific_to_eating_out_jo... 0.500000 0.50000 \n", - "coef_household_in_suburban_area_adult_adult_onl... 0.000000 0.00000 \n", - "coef_household_in_suburban_area_adult_mixed_party -0.060070 -0.06007 \n", - "coef_household_in_suburban_area_child_child_onl... 0.000000 0.00000 \n", - "coef_household_in_suburban_area_child_mixed_party 0.000000 0.00000 \n", - "coef_household_in_urban_area_adult_adult_only_p... 0.000000 0.00000 \n", - "coef_household_in_urban_area_adult_mixed_party 978.504490 -0.13700 \n", - "coef_household_in_urban_area_child_child_only_p... 6.082784 1.21000 \n", - "coef_household_in_urban_area_child_mixed_party -19.290030 0.62650 \n", - "coef_non_worker_adults_only_party -4.080384 -3.16400 \n", - "coef_non_worker_mixed_party -125.288137 0.71520 \n", - "coef_non_worker_specific_to_discretionary_joint... -0.183500 -0.18350 \n", - "coef_non_worker_specific_to_eating_out_joint_tours 0.161700 0.16170 \n", - "coef_part_time_worker_adults_only_party -3.248302 -3.56600 \n", - "coef_part_time_worker_adults_only_party_not 0.500000 0.50000 \n", - "coef_part_time_worker_mixed_party 2254.660944 -0.36550 \n", - "coef_part_time_worker_specific_to_discretionary... 0.285000 0.28500 \n", - "coef_part_time_worker_specific_to_eating_out_jo... 2.188000 2.18800 \n", - "coef_pre_driving_age_student_children_only_party 4.151085 -0.72170 \n", - "coef_pre_driving_age_student_mixed_party 2.007228 -1.75200 \n", - "coef_pre_driving_age_student_specific_to_discre... 0.662600 0.66260 \n", - "coef_pre_driving_age_student_specific_to_eating... 1.391000 1.39100 \n", - "coef_unavailable -999.000000 -999.00000 \n", - "coef_university_student_mixed_party -958.612314 -3.04100 \n", - "coef_university_student_specific_to_discretiona... 0.000000 0.00000 \n", - "coef_university_student_specific_to_eating_out_... -0.820000 -0.82000 \n", + " value best \\\n", + "param_name \n", + "coef_adult_log_of_max_window_overlap_with_a_chi... 2.125116 2.125116 \n", + "coef_adult_log_of_max_window_overlap_with_an_ad... 1.280678 1.280678 \n", + "coef_adult_more_automobiles_than_workers_adult_... 0.121220 0.121220 \n", + "coef_adult_more_automobiles_than_workers_mixed_... -0.591966 -0.591966 \n", + "coef_adult_number_of_joint_tours_adult_only -0.794091 -0.794091 \n", + "coef_adult_number_of_joint_tours_mixed -1.417451 -1.417451 \n", + "coef_adult_number_of_other_adults_in_the_househ... 0.000000 0.000000 \n", + "coef_adult_number_of_other_adults_in_the_househ... 0.000000 0.000000 \n", + "coef_child_log_of_max_window_overlap_with_a_chi... 1.296000 1.296000 \n", + "coef_child_log_of_max_window_overlap_with_an_ad... 1.538000 1.538000 \n", + "coef_child_more_automobiles_than_workers_child_... -0.421400 -0.421400 \n", + "coef_child_more_automobiles_than_workers_mixed_... -0.366466 -0.366466 \n", + "coef_child_number_of_joint_tours_child_only 0.866122 0.866122 \n", + "coef_child_number_of_joint_tours_mixed -0.261747 -0.261747 \n", + "coef_child_number_of_other_children_in_the_hous... 0.000000 0.000000 \n", + "coef_child_number_of_other_children_in_the_hous... 0.000000 0.000000 \n", + "coef_child_too_young_for_school_children_only_p... -1.149596 -1.149596 \n", + "coef_child_too_young_for_school_mixed_party 0.197836 0.197836 \n", + "coef_child_too_young_for_school_specific_to_dis... 0.128400 0.128400 \n", + "coef_child_too_young_for_school_specific_to_eat... 0.658900 0.658900 \n", + "coef_driving_age_student_children_only_party -2.120496 -2.120496 \n", + "coef_driving_age_student_mixed_party 0.322986 0.322986 \n", + "coef_driving_age_student_specific_to_discretion... -0.667500 -0.667500 \n", + "coef_driving_age_student_specific_to_eating_out... 2.344000 2.344000 \n", + "coef_dummy_for_high_income_for_adult_in_adult_p... -0.068202 -0.068202 \n", + "coef_dummy_for_high_income_for_adult_in_mixed_p... 0.112930 0.112930 \n", + "coef_dummy_for_high_income_for_child_in_childre... -0.211892 -0.211892 \n", + "coef_dummy_for_high_income_for_child_in_mixed_p... -0.013740 -0.013740 \n", + "coef_full_time_worker_mixed_party -3.527365 -3.527365 \n", + "coef_full_time_worker_mixed_party_not 0.500000 0.500000 \n", + "coef_full_time_worker_specific_to_discretionary... 0.439200 0.439200 \n", + "coef_full_time_worker_specific_to_discretionary... 0.500000 0.500000 \n", + "coef_full_time_worker_specific_to_eating_out_jo... 0.715700 0.715700 \n", + "coef_full_time_worker_specific_to_eating_out_jo... 0.500000 0.500000 \n", + "coef_household_in_suburban_area_adult_adult_onl... 0.000000 0.000000 \n", + "coef_household_in_suburban_area_adult_mixed_party 1.239881 1.239881 \n", + "coef_household_in_suburban_area_child_child_onl... 0.000000 0.000000 \n", + "coef_household_in_suburban_area_child_mixed_party 0.000000 0.000000 \n", + "coef_household_in_urban_area_adult_adult_only_p... 0.000000 0.000000 \n", + "coef_household_in_urban_area_adult_mixed_party 1.204039 1.204039 \n", + "coef_household_in_urban_area_child_child_only_p... -0.145369 -0.145369 \n", + "coef_household_in_urban_area_child_mixed_party -0.138857 -0.138857 \n", + "coef_non_worker_adults_only_party -3.161945 -3.161945 \n", + "coef_non_worker_mixed_party 1.059162 1.059162 \n", + "coef_non_worker_specific_to_discretionary_joint... -0.183500 -0.183500 \n", + "coef_non_worker_specific_to_eating_out_joint_tours 0.161700 0.161700 \n", + "coef_part_time_worker_adults_only_party -3.631928 -3.631928 \n", + "coef_part_time_worker_adults_only_party_not 0.500000 0.500000 \n", + "coef_part_time_worker_mixed_party -0.447984 -0.447984 \n", + "coef_part_time_worker_specific_to_discretionary... 0.285000 0.285000 \n", + "coef_part_time_worker_specific_to_eating_out_jo... 2.188000 2.188000 \n", + "coef_pre_driving_age_student_children_only_party 0.991812 0.991812 \n", + "coef_pre_driving_age_student_mixed_party -0.073175 -0.073175 \n", + "coef_pre_driving_age_student_specific_to_discre... 0.662600 0.662600 \n", + "coef_pre_driving_age_student_specific_to_eating... 1.391000 1.391000 \n", + "coef_unavailable -999.000000 -999.000000 \n", + "coef_university_student_mixed_party -2.902637 -2.902637 \n", + "coef_university_student_specific_to_discretiona... 0.000000 0.000000 \n", + "coef_university_student_specific_to_eating_out_... -0.820000 -0.820000 \n", "\n", - " nullvalue minimum \\\n", - "coef_adult_log_of_max_window_overlap_with_a_chi... 0.0 NaN \n", - "coef_adult_log_of_max_window_overlap_with_an_ad... 0.0 NaN \n", - "coef_adult_more_automobiles_than_workers_adult_... 0.0 NaN \n", - "coef_adult_more_automobiles_than_workers_mixed_... 0.0 NaN \n", - "coef_adult_number_of_joint_tours_adult_only 0.0 NaN \n", - "coef_adult_number_of_joint_tours_mixed 0.0 NaN \n", - "coef_adult_number_of_other_adults_in_the_househ... 0.0 NaN \n", - "coef_adult_number_of_other_adults_in_the_househ... 0.0 NaN \n", - "coef_child_log_of_max_window_overlap_with_a_chi... 0.0 NaN \n", - "coef_child_log_of_max_window_overlap_with_an_ad... 0.0 NaN \n", - "coef_child_more_automobiles_than_workers_child_... 0.0 NaN \n", - "coef_child_more_automobiles_than_workers_mixed_... 0.0 NaN \n", - "coef_child_number_of_joint_tours_child_only 0.0 NaN \n", - "coef_child_number_of_joint_tours_mixed 0.0 NaN \n", - "coef_child_number_of_other_children_in_the_hous... 0.0 NaN \n", - "coef_child_number_of_other_children_in_the_hous... 0.0 NaN \n", - "coef_child_too_young_for_school_children_only_p... 0.0 NaN \n", - "coef_child_too_young_for_school_mixed_party 0.0 NaN \n", - "coef_child_too_young_for_school_specific_to_dis... 0.0 NaN \n", - "coef_child_too_young_for_school_specific_to_eat... 0.0 NaN \n", - "coef_driving_age_student_children_only_party 0.0 NaN \n", - "coef_driving_age_student_mixed_party 0.0 NaN \n", - "coef_driving_age_student_specific_to_discretion... 0.0 NaN \n", - "coef_driving_age_student_specific_to_eating_out... 0.0 NaN \n", - "coef_dummy_for_high_income_for_adult_in_adult_p... 0.0 NaN \n", - "coef_dummy_for_high_income_for_adult_in_mixed_p... 0.0 NaN \n", - "coef_dummy_for_high_income_for_child_in_childre... 0.0 NaN \n", - "coef_dummy_for_high_income_for_child_in_mixed_p... 0.0 NaN \n", - "coef_full_time_worker_mixed_party 0.0 NaN \n", - "coef_full_time_worker_mixed_party_not 0.0 NaN \n", - "coef_full_time_worker_specific_to_discretionary... 0.0 NaN \n", - "coef_full_time_worker_specific_to_discretionary... 0.0 NaN \n", - "coef_full_time_worker_specific_to_eating_out_jo... 0.0 NaN \n", - "coef_full_time_worker_specific_to_eating_out_jo... 0.0 NaN \n", - "coef_household_in_suburban_area_adult_adult_onl... 0.0 NaN \n", - "coef_household_in_suburban_area_adult_mixed_party 0.0 NaN \n", - "coef_household_in_suburban_area_child_child_onl... 0.0 NaN \n", - "coef_household_in_suburban_area_child_mixed_party 0.0 NaN \n", - "coef_household_in_urban_area_adult_adult_only_p... 0.0 NaN \n", - "coef_household_in_urban_area_adult_mixed_party 0.0 NaN \n", - "coef_household_in_urban_area_child_child_only_p... 0.0 NaN \n", - "coef_household_in_urban_area_child_mixed_party 0.0 NaN \n", - "coef_non_worker_adults_only_party 0.0 NaN \n", - "coef_non_worker_mixed_party 0.0 NaN \n", - "coef_non_worker_specific_to_discretionary_joint... 0.0 NaN \n", - "coef_non_worker_specific_to_eating_out_joint_tours 0.0 NaN \n", - "coef_part_time_worker_adults_only_party 0.0 NaN \n", - "coef_part_time_worker_adults_only_party_not 0.0 NaN \n", - "coef_part_time_worker_mixed_party 0.0 NaN \n", - "coef_part_time_worker_specific_to_discretionary... 0.0 NaN \n", - "coef_part_time_worker_specific_to_eating_out_jo... 0.0 NaN \n", - "coef_pre_driving_age_student_children_only_party 0.0 NaN \n", - "coef_pre_driving_age_student_mixed_party 0.0 NaN \n", - "coef_pre_driving_age_student_specific_to_discre... 0.0 NaN \n", - "coef_pre_driving_age_student_specific_to_eating... 0.0 NaN \n", - "coef_unavailable 0.0 NaN \n", - "coef_university_student_mixed_party 0.0 NaN \n", - "coef_university_student_specific_to_discretiona... 0.0 NaN \n", - "coef_university_student_specific_to_eating_out_... 0.0 NaN \n", + " initvalue minimum \\\n", + "param_name \n", + "coef_adult_log_of_max_window_overlap_with_a_chi... 2.18900 -50.0 \n", + "coef_adult_log_of_max_window_overlap_with_an_ad... 0.84360 -50.0 \n", + "coef_adult_more_automobiles_than_workers_adult_... -0.21330 -50.0 \n", + "coef_adult_more_automobiles_than_workers_mixed_... -0.60310 -50.0 \n", + "coef_adult_number_of_joint_tours_adult_only -0.32420 -50.0 \n", + "coef_adult_number_of_joint_tours_mixed -0.35840 -50.0 \n", + "coef_adult_number_of_other_adults_in_the_househ... 0.00000 0.0 \n", + "coef_adult_number_of_other_adults_in_the_househ... 0.00000 0.0 \n", + "coef_child_log_of_max_window_overlap_with_a_chi... 1.29600 -50.0 \n", + "coef_child_log_of_max_window_overlap_with_an_ad... 1.53800 -50.0 \n", + "coef_child_more_automobiles_than_workers_child_... -0.42140 -50.0 \n", + "coef_child_more_automobiles_than_workers_mixed_... -0.37760 -50.0 \n", + "coef_child_number_of_joint_tours_child_only 0.10470 -50.0 \n", + "coef_child_number_of_joint_tours_mixed -0.50890 -50.0 \n", + "coef_child_number_of_other_children_in_the_hous... 0.00000 0.0 \n", + "coef_child_number_of_other_children_in_the_hous... 0.00000 0.0 \n", + "coef_child_too_young_for_school_children_only_p... -2.78600 -50.0 \n", + "coef_child_too_young_for_school_mixed_party -1.89300 -50.0 \n", + "coef_child_too_young_for_school_specific_to_dis... 0.12840 -50.0 \n", + "coef_child_too_young_for_school_specific_to_eat... 0.65890 -50.0 \n", + "coef_driving_age_student_children_only_party -1.82200 -50.0 \n", + "coef_driving_age_student_mixed_party -1.35300 -50.0 \n", + "coef_driving_age_student_specific_to_discretion... -0.66750 -50.0 \n", + "coef_driving_age_student_specific_to_eating_out... 2.34400 -50.0 \n", + "coef_dummy_for_high_income_for_adult_in_adult_p... -0.16820 -50.0 \n", + "coef_dummy_for_high_income_for_adult_in_mixed_p... -0.02613 -50.0 \n", + "coef_dummy_for_high_income_for_child_in_childre... -0.56190 -50.0 \n", + "coef_dummy_for_high_income_for_child_in_mixed_p... -0.15280 -50.0 \n", + "coef_full_time_worker_mixed_party -3.56600 -50.0 \n", + "coef_full_time_worker_mixed_party_not 0.50000 0.5 \n", + "coef_full_time_worker_specific_to_discretionary... 0.43920 -50.0 \n", + "coef_full_time_worker_specific_to_discretionary... 0.50000 0.5 \n", + "coef_full_time_worker_specific_to_eating_out_jo... 0.71570 -50.0 \n", + "coef_full_time_worker_specific_to_eating_out_jo... 0.50000 0.5 \n", + "coef_household_in_suburban_area_adult_adult_onl... 0.00000 0.0 \n", + "coef_household_in_suburban_area_adult_mixed_party -0.06007 -50.0 \n", + "coef_household_in_suburban_area_child_child_onl... 0.00000 0.0 \n", + "coef_household_in_suburban_area_child_mixed_party 0.00000 0.0 \n", + "coef_household_in_urban_area_adult_adult_only_p... 0.00000 0.0 \n", + "coef_household_in_urban_area_adult_mixed_party -0.13700 -50.0 \n", + "coef_household_in_urban_area_child_child_only_p... 1.21000 -50.0 \n", + "coef_household_in_urban_area_child_mixed_party 0.62650 -50.0 \n", + "coef_non_worker_adults_only_party -3.16400 -50.0 \n", + "coef_non_worker_mixed_party 0.71520 -50.0 \n", + "coef_non_worker_specific_to_discretionary_joint... -0.18350 -50.0 \n", + "coef_non_worker_specific_to_eating_out_joint_tours 0.16170 -50.0 \n", + "coef_part_time_worker_adults_only_party -3.56600 -50.0 \n", + "coef_part_time_worker_adults_only_party_not 0.50000 0.5 \n", + "coef_part_time_worker_mixed_party -0.36550 -50.0 \n", + "coef_part_time_worker_specific_to_discretionary... 0.28500 -50.0 \n", + "coef_part_time_worker_specific_to_eating_out_jo... 2.18800 -50.0 \n", + "coef_pre_driving_age_student_children_only_party -0.72170 -50.0 \n", + "coef_pre_driving_age_student_mixed_party -1.75200 -50.0 \n", + "coef_pre_driving_age_student_specific_to_discre... 0.66260 -50.0 \n", + "coef_pre_driving_age_student_specific_to_eating... 1.39100 -50.0 \n", + "coef_unavailable -999.00000 -999.0 \n", + "coef_university_student_mixed_party -3.04100 -50.0 \n", + "coef_university_student_specific_to_discretiona... 0.00000 0.0 \n", + "coef_university_student_specific_to_eating_out_... -0.82000 -50.0 \n", "\n", - " maximum holdfast note \\\n", - "coef_adult_log_of_max_window_overlap_with_a_chi... NaN 0 \n", - "coef_adult_log_of_max_window_overlap_with_an_ad... NaN 0 \n", - "coef_adult_more_automobiles_than_workers_adult_... NaN 0 \n", - "coef_adult_more_automobiles_than_workers_mixed_... NaN 0 \n", - "coef_adult_number_of_joint_tours_adult_only NaN 0 \n", - "coef_adult_number_of_joint_tours_mixed NaN 0 \n", - "coef_adult_number_of_other_adults_in_the_househ... NaN 1 \n", - "coef_adult_number_of_other_adults_in_the_househ... NaN 1 \n", - "coef_child_log_of_max_window_overlap_with_a_chi... NaN 0 \n", - "coef_child_log_of_max_window_overlap_with_an_ad... NaN 0 \n", - "coef_child_more_automobiles_than_workers_child_... NaN 0 \n", - "coef_child_more_automobiles_than_workers_mixed_... NaN 0 \n", - "coef_child_number_of_joint_tours_child_only NaN 0 \n", - "coef_child_number_of_joint_tours_mixed NaN 0 \n", - "coef_child_number_of_other_children_in_the_hous... NaN 1 \n", - "coef_child_number_of_other_children_in_the_hous... NaN 1 \n", - "coef_child_too_young_for_school_children_only_p... NaN 0 \n", - "coef_child_too_young_for_school_mixed_party NaN 0 \n", - "coef_child_too_young_for_school_specific_to_dis... NaN 0 \n", - "coef_child_too_young_for_school_specific_to_eat... NaN 0 \n", - "coef_driving_age_student_children_only_party NaN 0 \n", - "coef_driving_age_student_mixed_party NaN 0 \n", - "coef_driving_age_student_specific_to_discretion... NaN 0 \n", - "coef_driving_age_student_specific_to_eating_out... NaN 0 \n", - "coef_dummy_for_high_income_for_adult_in_adult_p... NaN 0 \n", - "coef_dummy_for_high_income_for_adult_in_mixed_p... NaN 0 \n", - "coef_dummy_for_high_income_for_child_in_childre... NaN 0 \n", - "coef_dummy_for_high_income_for_child_in_mixed_p... NaN 0 \n", - "coef_full_time_worker_mixed_party NaN 0 \n", - "coef_full_time_worker_mixed_party_not NaN 1 \n", - "coef_full_time_worker_specific_to_discretionary... NaN 0 \n", - "coef_full_time_worker_specific_to_discretionary... NaN 1 \n", - "coef_full_time_worker_specific_to_eating_out_jo... NaN 0 \n", - "coef_full_time_worker_specific_to_eating_out_jo... NaN 1 \n", - "coef_household_in_suburban_area_adult_adult_onl... NaN 1 \n", - "coef_household_in_suburban_area_adult_mixed_party NaN 0 \n", - "coef_household_in_suburban_area_child_child_onl... NaN 1 \n", - "coef_household_in_suburban_area_child_mixed_party NaN 1 \n", - "coef_household_in_urban_area_adult_adult_only_p... NaN 1 \n", - "coef_household_in_urban_area_adult_mixed_party NaN 0 \n", - "coef_household_in_urban_area_child_child_only_p... NaN 0 \n", - "coef_household_in_urban_area_child_mixed_party NaN 0 \n", - "coef_non_worker_adults_only_party NaN 0 \n", - "coef_non_worker_mixed_party NaN 0 \n", - "coef_non_worker_specific_to_discretionary_joint... NaN 0 \n", - "coef_non_worker_specific_to_eating_out_joint_tours NaN 0 \n", - "coef_part_time_worker_adults_only_party NaN 0 \n", - "coef_part_time_worker_adults_only_party_not NaN 1 \n", - "coef_part_time_worker_mixed_party NaN 0 \n", - "coef_part_time_worker_specific_to_discretionary... NaN 0 \n", - "coef_part_time_worker_specific_to_eating_out_jo... NaN 0 \n", - "coef_pre_driving_age_student_children_only_party NaN 0 \n", - "coef_pre_driving_age_student_mixed_party NaN 0 \n", - "coef_pre_driving_age_student_specific_to_discre... NaN 0 \n", - "coef_pre_driving_age_student_specific_to_eating... NaN 0 \n", - "coef_unavailable NaN 1 \n", - "coef_university_student_mixed_party NaN 0 \n", - "coef_university_student_specific_to_discretiona... NaN 1 \n", - "coef_university_student_specific_to_eating_out_... NaN 0 \n", + " maximum nullvalue \\\n", + "param_name \n", + "coef_adult_log_of_max_window_overlap_with_a_chi... 50.0 0.0 \n", + "coef_adult_log_of_max_window_overlap_with_an_ad... 50.0 0.0 \n", + "coef_adult_more_automobiles_than_workers_adult_... 50.0 0.0 \n", + "coef_adult_more_automobiles_than_workers_mixed_... 50.0 0.0 \n", + "coef_adult_number_of_joint_tours_adult_only 50.0 0.0 \n", + "coef_adult_number_of_joint_tours_mixed 50.0 0.0 \n", + "coef_adult_number_of_other_adults_in_the_househ... 0.0 0.0 \n", + "coef_adult_number_of_other_adults_in_the_househ... 0.0 0.0 \n", + "coef_child_log_of_max_window_overlap_with_a_chi... 50.0 0.0 \n", + "coef_child_log_of_max_window_overlap_with_an_ad... 50.0 0.0 \n", + "coef_child_more_automobiles_than_workers_child_... 50.0 0.0 \n", + "coef_child_more_automobiles_than_workers_mixed_... 50.0 0.0 \n", + "coef_child_number_of_joint_tours_child_only 50.0 0.0 \n", + "coef_child_number_of_joint_tours_mixed 50.0 0.0 \n", + "coef_child_number_of_other_children_in_the_hous... 0.0 0.0 \n", + "coef_child_number_of_other_children_in_the_hous... 0.0 0.0 \n", + "coef_child_too_young_for_school_children_only_p... 50.0 0.0 \n", + "coef_child_too_young_for_school_mixed_party 50.0 0.0 \n", + "coef_child_too_young_for_school_specific_to_dis... 50.0 0.0 \n", + "coef_child_too_young_for_school_specific_to_eat... 50.0 0.0 \n", + "coef_driving_age_student_children_only_party 50.0 0.0 \n", + "coef_driving_age_student_mixed_party 50.0 0.0 \n", + "coef_driving_age_student_specific_to_discretion... 50.0 0.0 \n", + "coef_driving_age_student_specific_to_eating_out... 50.0 0.0 \n", + "coef_dummy_for_high_income_for_adult_in_adult_p... 50.0 0.0 \n", + "coef_dummy_for_high_income_for_adult_in_mixed_p... 50.0 0.0 \n", + "coef_dummy_for_high_income_for_child_in_childre... 50.0 0.0 \n", + "coef_dummy_for_high_income_for_child_in_mixed_p... 50.0 0.0 \n", + "coef_full_time_worker_mixed_party 50.0 0.0 \n", + "coef_full_time_worker_mixed_party_not 0.5 0.0 \n", + "coef_full_time_worker_specific_to_discretionary... 50.0 0.0 \n", + "coef_full_time_worker_specific_to_discretionary... 0.5 0.0 \n", + "coef_full_time_worker_specific_to_eating_out_jo... 50.0 0.0 \n", + "coef_full_time_worker_specific_to_eating_out_jo... 0.5 0.0 \n", + "coef_household_in_suburban_area_adult_adult_onl... 0.0 0.0 \n", + "coef_household_in_suburban_area_adult_mixed_party 50.0 0.0 \n", + "coef_household_in_suburban_area_child_child_onl... 0.0 0.0 \n", + "coef_household_in_suburban_area_child_mixed_party 0.0 0.0 \n", + "coef_household_in_urban_area_adult_adult_only_p... 0.0 0.0 \n", + "coef_household_in_urban_area_adult_mixed_party 50.0 0.0 \n", + "coef_household_in_urban_area_child_child_only_p... 50.0 0.0 \n", + "coef_household_in_urban_area_child_mixed_party 50.0 0.0 \n", + "coef_non_worker_adults_only_party 50.0 0.0 \n", + "coef_non_worker_mixed_party 50.0 0.0 \n", + "coef_non_worker_specific_to_discretionary_joint... 50.0 0.0 \n", + "coef_non_worker_specific_to_eating_out_joint_tours 50.0 0.0 \n", + "coef_part_time_worker_adults_only_party 50.0 0.0 \n", + "coef_part_time_worker_adults_only_party_not 0.5 0.0 \n", + "coef_part_time_worker_mixed_party 50.0 0.0 \n", + "coef_part_time_worker_specific_to_discretionary... 50.0 0.0 \n", + "coef_part_time_worker_specific_to_eating_out_jo... 50.0 0.0 \n", + "coef_pre_driving_age_student_children_only_party 50.0 0.0 \n", + "coef_pre_driving_age_student_mixed_party 50.0 0.0 \n", + "coef_pre_driving_age_student_specific_to_discre... 50.0 0.0 \n", + "coef_pre_driving_age_student_specific_to_eating... 50.0 0.0 \n", + "coef_unavailable -999.0 0.0 \n", + "coef_university_student_mixed_party 50.0 0.0 \n", + "coef_university_student_specific_to_discretiona... 0.0 0.0 \n", + "coef_university_student_specific_to_eating_out_... 50.0 0.0 \n", "\n", - " best \n", - "coef_adult_log_of_max_window_overlap_with_a_chi... 4.595737 \n", - "coef_adult_log_of_max_window_overlap_with_an_ad... 1.692145 \n", - "coef_adult_more_automobiles_than_workers_adult_... 0.311671 \n", - "coef_adult_more_automobiles_than_workers_mixed_... -1.827740 \n", - "coef_adult_number_of_joint_tours_adult_only -2.134054 \n", - "coef_adult_number_of_joint_tours_mixed -28.572220 \n", - "coef_adult_number_of_other_adults_in_the_househ... 0.000000 \n", - "coef_adult_number_of_other_adults_in_the_househ... 0.000000 \n", - "coef_child_log_of_max_window_overlap_with_a_chi... 1.275585 \n", - "coef_child_log_of_max_window_overlap_with_an_ad... 1.539267 \n", - "coef_child_more_automobiles_than_workers_child_... -0.394683 \n", - "coef_child_more_automobiles_than_workers_mixed_... -1.551914 \n", - "coef_child_number_of_joint_tours_child_only 4.977604 \n", - "coef_child_number_of_joint_tours_mixed 17.894892 \n", - "coef_child_number_of_other_children_in_the_hous... 0.000000 \n", - "coef_child_number_of_other_children_in_the_hous... 0.000000 \n", - "coef_child_too_young_for_school_children_only_p... -2.785631 \n", - "coef_child_too_young_for_school_mixed_party 2.069934 \n", - "coef_child_too_young_for_school_specific_to_dis... 0.128371 \n", - "coef_child_too_young_for_school_specific_to_eat... 0.658655 \n", - "coef_driving_age_student_children_only_party -1.822000 \n", - "coef_driving_age_student_mixed_party -28.998969 \n", - "coef_driving_age_student_specific_to_discretion... -0.667500 \n", - "coef_driving_age_student_specific_to_eating_out... 2.344000 \n", - "coef_dummy_for_high_income_for_adult_in_adult_p... 0.131783 \n", - "coef_dummy_for_high_income_for_adult_in_mixed_p... -0.378918 \n", - "coef_dummy_for_high_income_for_child_in_childre... -0.561900 \n", - "coef_dummy_for_high_income_for_child_in_mixed_p... -0.513571 \n", - "coef_full_time_worker_mixed_party -957.202749 \n", - "coef_full_time_worker_mixed_party_not 0.500000 \n", - "coef_full_time_worker_specific_to_discretionary... 0.439200 \n", - "coef_full_time_worker_specific_to_discretionary... 0.500000 \n", - "coef_full_time_worker_specific_to_eating_out_jo... 0.715700 \n", - "coef_full_time_worker_specific_to_eating_out_jo... 0.500000 \n", - "coef_household_in_suburban_area_adult_adult_onl... 0.000000 \n", - "coef_household_in_suburban_area_adult_mixed_party -0.060070 \n", - "coef_household_in_suburban_area_child_child_onl... 0.000000 \n", - "coef_household_in_suburban_area_child_mixed_party 0.000000 \n", - "coef_household_in_urban_area_adult_adult_only_p... 0.000000 \n", - "coef_household_in_urban_area_adult_mixed_party 978.504490 \n", - "coef_household_in_urban_area_child_child_only_p... 6.082784 \n", - "coef_household_in_urban_area_child_mixed_party -19.290030 \n", - "coef_non_worker_adults_only_party -4.080384 \n", - "coef_non_worker_mixed_party -125.288137 \n", - "coef_non_worker_specific_to_discretionary_joint... -0.183500 \n", - "coef_non_worker_specific_to_eating_out_joint_tours 0.161700 \n", - "coef_part_time_worker_adults_only_party -3.248302 \n", - "coef_part_time_worker_adults_only_party_not 0.500000 \n", - "coef_part_time_worker_mixed_party 2254.660944 \n", - "coef_part_time_worker_specific_to_discretionary... 0.285000 \n", - "coef_part_time_worker_specific_to_eating_out_jo... 2.188000 \n", - "coef_pre_driving_age_student_children_only_party 4.151085 \n", - "coef_pre_driving_age_student_mixed_party 2.007228 \n", - "coef_pre_driving_age_student_specific_to_discre... 0.662600 \n", - "coef_pre_driving_age_student_specific_to_eating... 1.391000 \n", - "coef_unavailable -999.000000 \n", - "coef_university_student_mixed_party -958.612314 \n", - "coef_university_student_specific_to_discretiona... 0.000000 \n", - "coef_university_student_specific_to_eating_out_... -0.820000 " + " holdfast \n", + "param_name \n", + "coef_adult_log_of_max_window_overlap_with_a_chi... 0 \n", + "coef_adult_log_of_max_window_overlap_with_an_ad... 0 \n", + "coef_adult_more_automobiles_than_workers_adult_... 0 \n", + "coef_adult_more_automobiles_than_workers_mixed_... 0 \n", + "coef_adult_number_of_joint_tours_adult_only 0 \n", + "coef_adult_number_of_joint_tours_mixed 0 \n", + "coef_adult_number_of_other_adults_in_the_househ... 1 \n", + "coef_adult_number_of_other_adults_in_the_househ... 1 \n", + "coef_child_log_of_max_window_overlap_with_a_chi... 0 \n", + "coef_child_log_of_max_window_overlap_with_an_ad... 0 \n", + "coef_child_more_automobiles_than_workers_child_... 0 \n", + "coef_child_more_automobiles_than_workers_mixed_... 0 \n", + "coef_child_number_of_joint_tours_child_only 0 \n", + "coef_child_number_of_joint_tours_mixed 0 \n", + "coef_child_number_of_other_children_in_the_hous... 1 \n", + "coef_child_number_of_other_children_in_the_hous... 1 \n", + "coef_child_too_young_for_school_children_only_p... 0 \n", + "coef_child_too_young_for_school_mixed_party 0 \n", + "coef_child_too_young_for_school_specific_to_dis... 0 \n", + "coef_child_too_young_for_school_specific_to_eat... 0 \n", + "coef_driving_age_student_children_only_party 0 \n", + "coef_driving_age_student_mixed_party 0 \n", + "coef_driving_age_student_specific_to_discretion... 0 \n", + "coef_driving_age_student_specific_to_eating_out... 0 \n", + "coef_dummy_for_high_income_for_adult_in_adult_p... 0 \n", + "coef_dummy_for_high_income_for_adult_in_mixed_p... 0 \n", + "coef_dummy_for_high_income_for_child_in_childre... 0 \n", + "coef_dummy_for_high_income_for_child_in_mixed_p... 0 \n", + "coef_full_time_worker_mixed_party 0 \n", + "coef_full_time_worker_mixed_party_not 1 \n", + "coef_full_time_worker_specific_to_discretionary... 0 \n", + "coef_full_time_worker_specific_to_discretionary... 1 \n", + "coef_full_time_worker_specific_to_eating_out_jo... 0 \n", + "coef_full_time_worker_specific_to_eating_out_jo... 1 \n", + "coef_household_in_suburban_area_adult_adult_onl... 1 \n", + "coef_household_in_suburban_area_adult_mixed_party 0 \n", + "coef_household_in_suburban_area_child_child_onl... 1 \n", + "coef_household_in_suburban_area_child_mixed_party 1 \n", + "coef_household_in_urban_area_adult_adult_only_p... 1 \n", + "coef_household_in_urban_area_adult_mixed_party 0 \n", + "coef_household_in_urban_area_child_child_only_p... 0 \n", + "coef_household_in_urban_area_child_mixed_party 0 \n", + "coef_non_worker_adults_only_party 0 \n", + "coef_non_worker_mixed_party 0 \n", + "coef_non_worker_specific_to_discretionary_joint... 0 \n", + "coef_non_worker_specific_to_eating_out_joint_tours 0 \n", + "coef_part_time_worker_adults_only_party 0 \n", + "coef_part_time_worker_adults_only_party_not 1 \n", + "coef_part_time_worker_mixed_party 0 \n", + "coef_part_time_worker_specific_to_discretionary... 0 \n", + "coef_part_time_worker_specific_to_eating_out_jo... 0 \n", + "coef_pre_driving_age_student_children_only_party 0 \n", + "coef_pre_driving_age_student_mixed_party 0 \n", + "coef_pre_driving_age_student_specific_to_discre... 0 \n", + "coef_pre_driving_age_student_specific_to_eating... 0 \n", + "coef_unavailable 1 \n", + "coef_university_student_mixed_party 0 \n", + "coef_university_student_specific_to_discretiona... 1 \n", + "coef_university_student_specific_to_eating_out_... 0 " ] }, "metadata": {}, @@ -2240,16 +2250,8 @@ "name": "stderr", "output_type": "stream", "text": [ - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 0.0 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 0.0 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - ":1: PossibleOverspecification: WARNING: Model is possibly over-specified (hessian is nearly singular).\n", - " model.estimate()\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 0.0 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - ":1: RuntimeWarning: invalid value encountered in sqrt\n", - " model.estimate()\n" + "/Users/jpn/Git/est-mode/larch/src/larch/model/jaxmodel.py:1156: PossibleOverspecification: Model is possibly over-specified (hessian is nearly singular).\n", + " self.calculate_parameter_covariance()\n" ] }, { @@ -2265,242 +2267,242 @@ " \n", " \n", " coef_adult_log_of_max_window_overlap_with_a_child_mixed\n", - " 4.595737e+00\n", + " 2.125116\n", " \n", " \n", " coef_adult_log_of_max_window_overlap_with_an_adult_adult_only_party\n", - " 1.692145e+00\n", + " 1.280678\n", " \n", " \n", " coef_adult_more_automobiles_than_workers_adult_only_party\n", - " 3.116710e-01\n", + " 0.121220\n", " \n", " \n", " coef_adult_more_automobiles_than_workers_mixed_party\n", - " -1.827740e+00\n", + " -0.591966\n", " \n", " \n", " coef_adult_number_of_joint_tours_adult_only\n", - " -2.134054e+00\n", + " -0.794091\n", " \n", " \n", " coef_adult_number_of_joint_tours_mixed\n", - " -2.857222e+01\n", + " -1.417451\n", " \n", " \n", " coef_adult_number_of_other_adults_in_the_household_adults_only_party\n", - " -1.648956e-17\n", + " 0.000000\n", " \n", " \n", " coef_adult_number_of_other_adults_in_the_household_mixed_party\n", - " 7.224396e-18\n", + " 0.000000\n", " \n", " \n", " coef_child_log_of_max_window_overlap_with_a_child_child\n", - " 1.275585e+00\n", + " 1.296000\n", " \n", " \n", " coef_child_log_of_max_window_overlap_with_an_adult_mixed\n", - " 1.539267e+00\n", + " 1.538000\n", " \n", " \n", " coef_child_more_automobiles_than_workers_child_only_party\n", - " -3.946825e-01\n", + " -0.421400\n", " \n", " \n", " coef_child_more_automobiles_than_workers_mixed_party\n", - " -1.551914e+00\n", + " -0.366466\n", " \n", " \n", " coef_child_number_of_joint_tours_child_only\n", - " 4.977604e+00\n", + " 0.866122\n", " \n", " \n", " coef_child_number_of_joint_tours_mixed\n", - " 1.789489e+01\n", + " -0.261747\n", " \n", " \n", " coef_child_number_of_other_children_in_the_household_child_only_party\n", - " -2.228152e-18\n", + " 0.000000\n", " \n", " \n", " coef_child_number_of_other_children_in_the_household_mixed\n", - " -3.324715e-17\n", + " 0.000000\n", " \n", " \n", " coef_child_too_young_for_school_children_only_party\n", - " -2.785631e+00\n", + " -1.149596\n", " \n", " \n", " coef_child_too_young_for_school_mixed_party\n", - " 2.069934e+00\n", + " 0.197836\n", " \n", " \n", " coef_child_too_young_for_school_specific_to_discretionary_joint_tours\n", - " 1.283705e-01\n", + " 0.128400\n", " \n", " \n", " coef_child_too_young_for_school_specific_to_eating_out_joint_tours\n", - " 6.586549e-01\n", + " 0.658900\n", " \n", " \n", " coef_driving_age_student_children_only_party\n", - " -1.822000e+00\n", + " -2.120496\n", " \n", " \n", " coef_driving_age_student_mixed_party\n", - " -2.899897e+01\n", + " 0.322986\n", " \n", " \n", " coef_driving_age_student_specific_to_discretionary_joint_tours\n", - " -6.675000e-01\n", + " -0.667500\n", " \n", " \n", " coef_driving_age_student_specific_to_eating_out_joint_tours\n", - " 2.344000e+00\n", + " 2.344000\n", " \n", " \n", " coef_dummy_for_high_income_for_adult_in_adult_party\n", - " 1.317830e-01\n", + " -0.068202\n", " \n", " \n", " coef_dummy_for_high_income_for_adult_in_mixed_party\n", - " -3.789182e-01\n", + " 0.112930\n", " \n", " \n", " coef_dummy_for_high_income_for_child_in_children_party\n", - " -5.619000e-01\n", + " -0.211892\n", " \n", " \n", " coef_dummy_for_high_income_for_child_in_mixed_party\n", - " -5.135707e-01\n", + " -0.013740\n", " \n", " \n", " coef_full_time_worker_mixed_party\n", - " -9.572027e+02\n", + " -3.527365\n", " \n", " \n", " coef_full_time_worker_mixed_party_not\n", - " 5.000000e-01\n", + " 0.500000\n", " \n", " \n", " coef_full_time_worker_specific_to_discretionary_joint_tours\n", - " 4.392000e-01\n", + " 0.439200\n", " \n", " \n", " coef_full_time_worker_specific_to_discretionary_joint_tours_not\n", - " 5.000000e-01\n", + " 0.500000\n", " \n", " \n", " coef_full_time_worker_specific_to_eating_out_joint_tours\n", - " 7.157000e-01\n", + " 0.715700\n", " \n", " \n", " coef_full_time_worker_specific_to_eating_out_joint_tours_not\n", - " 5.000000e-01\n", + " 0.500000\n", " \n", " \n", " coef_household_in_suburban_area_adult_adult_only_party\n", - " 0.000000e+00\n", + " 0.000000\n", " \n", " \n", " coef_household_in_suburban_area_adult_mixed_party\n", - " -6.007000e-02\n", + " 1.239881\n", " \n", " \n", " coef_household_in_suburban_area_child_child_only_party\n", - " 0.000000e+00\n", + " 0.000000\n", " \n", " \n", " coef_household_in_suburban_area_child_mixed_party\n", - " 0.000000e+00\n", + " 0.000000\n", " \n", " \n", " coef_household_in_urban_area_adult_adult_only_party\n", - " 0.000000e+00\n", + " 0.000000\n", " \n", " \n", " coef_household_in_urban_area_adult_mixed_party\n", - " 9.785045e+02\n", + " 1.204039\n", " \n", " \n", " coef_household_in_urban_area_child_child_only_party\n", - " 6.082784e+00\n", + " -0.145369\n", " \n", " \n", " coef_household_in_urban_area_child_mixed_party\n", - " -1.929003e+01\n", + " -0.138857\n", " \n", " \n", " coef_non_worker_adults_only_party\n", - " -4.080384e+00\n", + " -3.161945\n", " \n", " \n", " coef_non_worker_mixed_party\n", - " -1.252881e+02\n", + " 1.059162\n", " \n", " \n", " coef_non_worker_specific_to_discretionary_joint_tours\n", - " -1.835000e-01\n", + " -0.183500\n", " \n", " \n", " coef_non_worker_specific_to_eating_out_joint_tours\n", - " 1.617000e-01\n", + " 0.161700\n", " \n", " \n", " coef_part_time_worker_adults_only_party\n", - " -3.248302e+00\n", + " -3.631928\n", " \n", " \n", " coef_part_time_worker_adults_only_party_not\n", - " 5.000000e-01\n", + " 0.500000\n", " \n", " \n", " coef_part_time_worker_mixed_party\n", - " 2.254661e+03\n", + " -0.447984\n", " \n", " \n", " coef_part_time_worker_specific_to_discretionary_joint_tours\n", - " 2.850000e-01\n", + " 0.285000\n", " \n", " \n", " coef_part_time_worker_specific_to_eating_out_joint_tours\n", - " 2.188000e+00\n", + " 2.188000\n", " \n", " \n", " coef_pre_driving_age_student_children_only_party\n", - " 4.151085e+00\n", + " 0.991812\n", " \n", " \n", " coef_pre_driving_age_student_mixed_party\n", - " 2.007228e+00\n", + " -0.073175\n", " \n", " \n", " coef_pre_driving_age_student_specific_to_discretionary_joint_tours\n", - " 6.626000e-01\n", + " 0.662600\n", " \n", " \n", " coef_pre_driving_age_student_specific_to_eating_out_joint_tours\n", - " 1.391000e+00\n", + " 1.391000\n", " \n", " \n", " coef_unavailable\n", - " -9.990000e+02\n", + " -999.000000\n", " \n", " \n", " coef_university_student_mixed_party\n", - " -9.586123e+02\n", + " -2.902637\n", " \n", " \n", " coef_university_student_specific_to_discretionary_joint_tours\n", - " 0.000000e+00\n", + " 0.000000\n", " \n", " \n", " coef_university_student_specific_to_eating_out_joint_tours\n", - " -8.200000e-01\n", + " -0.820000\n", " \n", " \n", - "loglike-61.383086448632596d_loglike\n", + "
logloss0.275665608543198d_logloss\n", " \n", " \n", " \n", @@ -2510,376 +2512,376 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - "
coef_adult_log_of_max_window_overlap_with_a_child_mixed-4.096171e-040.000012
coef_adult_log_of_max_window_overlap_with_an_adult_adult_only_party2.436129e-050.000013
coef_adult_more_automobiles_than_workers_adult_only_party5.345149e-05-0.000165
coef_adult_more_automobiles_than_workers_mixed_party1.722466e-04-0.000051
coef_adult_number_of_joint_tours_adult_only1.769263e-04-0.000006
coef_adult_number_of_joint_tours_mixed3.181344e-04-0.000088
coef_adult_number_of_other_adults_in_the_household_adults_only_party0.000000e+000.000000
coef_adult_number_of_other_adults_in_the_household_mixed_party0.000000e+000.000000
coef_child_log_of_max_window_overlap_with_a_child_child0.000000e+000.000000
coef_child_log_of_max_window_overlap_with_an_adult_mixed0.000000e+000.000000
coef_child_more_automobiles_than_workers_child_only_party0.000000e+000.000000
coef_child_more_automobiles_than_workers_mixed_party1.722466e-04-0.000051
coef_child_number_of_joint_tours_child_only7.427872e-07-0.000119
coef_child_number_of_joint_tours_mixed-7.098060e-05-0.000047
coef_child_number_of_other_children_in_the_household_child_only_party0.000000e+000.000000
coef_child_number_of_other_children_in_the_household_mixed0.000000e+000.000000
coef_child_too_young_for_school_children_only_party0.000000e+000.000066
coef_child_too_young_for_school_mixed_party-4.267128e-050.000136
coef_child_too_young_for_school_specific_to_discretionary_joint_tours0.000000e+000.000000
coef_child_too_young_for_school_specific_to_eating_out_joint_tours0.000000e+000.000000
coef_driving_age_student_children_only_party0.000000e+000.000265
coef_driving_age_student_mixed_party-7.460379e-06-0.000060
coef_driving_age_student_specific_to_discretionary_joint_tours0.000000e+000.000000
coef_driving_age_student_specific_to_eating_out_joint_tours0.000000e+000.000000
coef_dummy_for_high_income_for_adult_in_adult_party-2.777090e-040.000017
coef_dummy_for_high_income_for_adult_in_mixed_party7.481814e-050.000026
coef_dummy_for_high_income_for_child_in_children_party0.000000e+000.000114
coef_dummy_for_high_income_for_child_in_mixed_party7.481814e-050.000026
coef_full_time_worker_mixed_party1.834492e-05-0.000152
coef_full_time_worker_mixed_party_not0.000000e+000.000000
coef_full_time_worker_specific_to_discretionary_joint_tours0.000000e+000.000000
coef_full_time_worker_specific_to_discretionary_joint_tours_not0.000000e+000.000000
coef_full_time_worker_specific_to_eating_out_joint_tours0.000000e+000.000000
coef_full_time_worker_specific_to_eating_out_joint_tours_not0.000000e+000.000000
coef_household_in_suburban_area_adult_adult_only_party0.000000e+000.000000
coef_household_in_suburban_area_adult_mixed_party0.000000e+000.000250
coef_household_in_suburban_area_child_child_only_party0.000000e+000.000000
coef_household_in_suburban_area_child_mixed_party0.000000e+000.000000
coef_household_in_urban_area_adult_adult_only_party0.000000e+000.000000
coef_household_in_urban_area_adult_mixed_party3.181344e-04-0.000179
coef_household_in_urban_area_child_child_only_party7.427872e-070.000131
coef_household_in_urban_area_child_mixed_party-6.353745e-05-0.000081
coef_non_worker_adults_only_party3.691375e-040.000062
coef_non_worker_mixed_party-1.839038e-700.000002
coef_non_worker_specific_to_discretionary_joint_tours0.000000e+000.000000
coef_non_worker_specific_to_eating_out_joint_tours0.000000e+000.000000
coef_part_time_worker_adults_only_party5.695694e-050.000239
coef_part_time_worker_adults_only_party_not0.000000e+000.000000
coef_part_time_worker_mixed_party0.000000e+00-0.000099
coef_part_time_worker_specific_to_discretionary_joint_tours0.000000e+000.000000
coef_part_time_worker_specific_to_eating_out_joint_tours0.000000e+000.000000
coef_pre_driving_age_student_children_only_party7.427872e-07-0.000108
coef_pre_driving_age_student_mixed_party-1.340579e-05-0.000009
coef_pre_driving_age_student_specific_to_discretionary_joint_tours0.000000e+000.000000
coef_pre_driving_age_student_specific_to_eating_out_joint_tours0.000000e+000.000000
coef_unavailable0.000000e+000.000000
coef_university_student_mixed_party2.997895e-040.000080
coef_university_student_specific_to_discretionary_joint_tours0.000000e+000.000000
coef_university_student_specific_to_eating_out_joint_tours0.000000e+000.000000
nit13nfev22njev13status0message'Optimization terminated successfully'successTrueelapsed_time0:00:00.868469method'bhhh|slsqp'n_cases304iteration_number112logloss0.2019180475283967" + "nit80nfev81njev80status0message'Optimization terminated successfully'successTrueelapsed_time0:00:00.325635method'slsqp'n_cases4500iteration_number80loglike-1240.495238444391" ], "text/plain": [ - "┣ x: coef_adult_log_of_max_window_overlap_with_a_child_mixed 4.595737e+00\n", - "┃ coef_adult_log_of_max_window_overlap_with_an_adult_adult_only_party 1.692145e+00\n", - "┃ coef_adult_more_automobiles_than_workers_adult_only_party 3.116710e-01\n", - "┃ coef_adult_more_automobiles_than_workers_mixed_party -1.827740e+00\n", - "┃ coef_adult_number_of_joint_tours_adult_only -2.134054e+00\n", - "┃ coef_adult_number_of_joint_tours_mixed -2.857222e+01\n", - "┃ coef_adult_number_of_other_adults_in_the_household_adults_only_party -1.648956e-17\n", - "┃ coef_adult_number_of_other_adults_in_the_household_mixed_party 7.224396e-18\n", - "┃ coef_child_log_of_max_window_overlap_with_a_child_child 1.275585e+00\n", - "┃ coef_child_log_of_max_window_overlap_with_an_adult_mixed 1.539267e+00\n", - "┃ coef_child_more_automobiles_than_workers_child_only_party -3.946825e-01\n", - "┃ coef_child_more_automobiles_than_workers_mixed_party -1.551914e+00\n", - "┃ coef_child_number_of_joint_tours_child_only 4.977604e+00\n", - "┃ coef_child_number_of_joint_tours_mixed 1.789489e+01\n", - "┃ coef_child_number_of_other_children_in_the_household_child_only_party -2.228152e-18\n", - "┃ coef_child_number_of_other_children_in_the_household_mixed -3.324715e-17\n", - "┃ coef_child_too_young_for_school_children_only_party -2.785631e+00\n", - "┃ coef_child_too_young_for_school_mixed_party 2.069934e+00\n", - "┃ coef_child_too_young_for_school_specific_to_discretionary_joint_tours 1.283705e-01\n", - "┃ coef_child_too_young_for_school_specific_to_eating_out_joint_tours 6.586549e-01\n", - "┃ coef_driving_age_student_children_only_party -1.822000e+00\n", - "┃ coef_driving_age_student_mixed_party -2.899897e+01\n", - "┃ coef_driving_age_student_specific_to_discretionary_joint_tours -6.675000e-01\n", - "┃ coef_driving_age_student_specific_to_eating_out_joint_tours 2.344000e+00\n", - "┃ coef_dummy_for_high_income_for_adult_in_adult_party 1.317830e-01\n", - "┃ coef_dummy_for_high_income_for_adult_in_mixed_party -3.789182e-01\n", - "┃ coef_dummy_for_high_income_for_child_in_children_party -5.619000e-01\n", - "┃ coef_dummy_for_high_income_for_child_in_mixed_party -5.135707e-01\n", - "┃ coef_full_time_worker_mixed_party -9.572027e+02\n", - "┃ coef_full_time_worker_mixed_party_not 5.000000e-01\n", - "┃ coef_full_time_worker_specific_to_discretionary_joint_tours 4.392000e-01\n", - "┃ coef_full_time_worker_specific_to_discretionary_joint_tours_not 5.000000e-01\n", - "┃ coef_full_time_worker_specific_to_eating_out_joint_tours 7.157000e-01\n", - "┃ coef_full_time_worker_specific_to_eating_out_joint_tours_not 5.000000e-01\n", - "┃ coef_household_in_suburban_area_adult_adult_only_party 0.000000e+00\n", - "┃ coef_household_in_suburban_area_adult_mixed_party -6.007000e-02\n", - "┃ coef_household_in_suburban_area_child_child_only_party 0.000000e+00\n", - "┃ coef_household_in_suburban_area_child_mixed_party 0.000000e+00\n", - "┃ coef_household_in_urban_area_adult_adult_only_party 0.000000e+00\n", - "┃ coef_household_in_urban_area_adult_mixed_party 9.785045e+02\n", - "┃ coef_household_in_urban_area_child_child_only_party 6.082784e+00\n", - "┃ coef_household_in_urban_area_child_mixed_party -1.929003e+01\n", - "┃ coef_non_worker_adults_only_party -4.080384e+00\n", - "┃ coef_non_worker_mixed_party -1.252881e+02\n", - "┃ coef_non_worker_specific_to_discretionary_joint_tours -1.835000e-01\n", - "┃ coef_non_worker_specific_to_eating_out_joint_tours 1.617000e-01\n", - "┃ coef_part_time_worker_adults_only_party -3.248302e+00\n", - "┃ coef_part_time_worker_adults_only_party_not 5.000000e-01\n", - "┃ coef_part_time_worker_mixed_party 2.254661e+03\n", - "┃ coef_part_time_worker_specific_to_discretionary_joint_tours 2.850000e-01\n", - "┃ coef_part_time_worker_specific_to_eating_out_joint_tours 2.188000e+00\n", - "┃ coef_pre_driving_age_student_children_only_party 4.151085e+00\n", - "┃ coef_pre_driving_age_student_mixed_party 2.007228e+00\n", - "┃ coef_pre_driving_age_student_specific_to_discretionary_joint_tours 6.626000e-01\n", - "┃ coef_pre_driving_age_student_specific_to_eating_out_joint_tours 1.391000e+00\n", - "┃ coef_unavailable -9.990000e+02\n", - "┃ coef_university_student_mixed_party -9.586123e+02\n", - "┃ coef_university_student_specific_to_discretionary_joint_tours 0.000000e+00\n", - "┃ coef_university_student_specific_to_eating_out_joint_tours -8.200000e-01\n", + "┣ x: coef_adult_log_of_max_window_overlap_with_a_child_mixed 2.125116\n", + "┃ coef_adult_log_of_max_window_overlap_with_an_adult_adult_only_party 1.280678\n", + "┃ coef_adult_more_automobiles_than_workers_adult_only_party 0.121220\n", + "┃ coef_adult_more_automobiles_than_workers_mixed_party -0.591966\n", + "┃ coef_adult_number_of_joint_tours_adult_only -0.794091\n", + "┃ coef_adult_number_of_joint_tours_mixed -1.417451\n", + "┃ coef_adult_number_of_other_adults_in_the_household_adults_only_party 0.000000\n", + "┃ coef_adult_number_of_other_adults_in_the_household_mixed_party 0.000000\n", + "┃ coef_child_log_of_max_window_overlap_with_a_child_child 1.296000\n", + "┃ coef_child_log_of_max_window_overlap_with_an_adult_mixed 1.538000\n", + "┃ coef_child_more_automobiles_than_workers_child_only_party -0.421400\n", + "┃ coef_child_more_automobiles_than_workers_mixed_party -0.366466\n", + "┃ coef_child_number_of_joint_tours_child_only 0.866122\n", + "┃ coef_child_number_of_joint_tours_mixed -0.261747\n", + "┃ coef_child_number_of_other_children_in_the_household_child_only_party 0.000000\n", + "┃ coef_child_number_of_other_children_in_the_household_mixed 0.000000\n", + "┃ coef_child_too_young_for_school_children_only_party -1.149596\n", + "┃ coef_child_too_young_for_school_mixed_party 0.197836\n", + "┃ coef_child_too_young_for_school_specific_to_discretionary_joint_tours 0.128400\n", + "┃ coef_child_too_young_for_school_specific_to_eating_out_joint_tours 0.658900\n", + "┃ coef_driving_age_student_children_only_party -2.120496\n", + "┃ coef_driving_age_student_mixed_party 0.322986\n", + "┃ coef_driving_age_student_specific_to_discretionary_joint_tours -0.667500\n", + "┃ coef_driving_age_student_specific_to_eating_out_joint_tours 2.344000\n", + "┃ coef_dummy_for_high_income_for_adult_in_adult_party -0.068202\n", + "┃ coef_dummy_for_high_income_for_adult_in_mixed_party 0.112930\n", + "┃ coef_dummy_for_high_income_for_child_in_children_party -0.211892\n", + "┃ coef_dummy_for_high_income_for_child_in_mixed_party -0.013740\n", + "┃ coef_full_time_worker_mixed_party -3.527365\n", + "┃ coef_full_time_worker_mixed_party_not 0.500000\n", + "┃ coef_full_time_worker_specific_to_discretionary_joint_tours 0.439200\n", + "┃ coef_full_time_worker_specific_to_discretionary_joint_tours_not 0.500000\n", + "┃ coef_full_time_worker_specific_to_eating_out_joint_tours 0.715700\n", + "┃ coef_full_time_worker_specific_to_eating_out_joint_tours_not 0.500000\n", + "┃ coef_household_in_suburban_area_adult_adult_only_party 0.000000\n", + "┃ coef_household_in_suburban_area_adult_mixed_party 1.239881\n", + "┃ coef_household_in_suburban_area_child_child_only_party 0.000000\n", + "┃ coef_household_in_suburban_area_child_mixed_party 0.000000\n", + "┃ coef_household_in_urban_area_adult_adult_only_party 0.000000\n", + "┃ coef_household_in_urban_area_adult_mixed_party 1.204039\n", + "┃ coef_household_in_urban_area_child_child_only_party -0.145369\n", + "┃ coef_household_in_urban_area_child_mixed_party -0.138857\n", + "┃ coef_non_worker_adults_only_party -3.161945\n", + "┃ coef_non_worker_mixed_party 1.059162\n", + "┃ coef_non_worker_specific_to_discretionary_joint_tours -0.183500\n", + "┃ coef_non_worker_specific_to_eating_out_joint_tours 0.161700\n", + "┃ coef_part_time_worker_adults_only_party -3.631928\n", + "┃ coef_part_time_worker_adults_only_party_not 0.500000\n", + "┃ coef_part_time_worker_mixed_party -0.447984\n", + "┃ coef_part_time_worker_specific_to_discretionary_joint_tours 0.285000\n", + "┃ coef_part_time_worker_specific_to_eating_out_joint_tours 2.188000\n", + "┃ coef_pre_driving_age_student_children_only_party 0.991812\n", + "┃ coef_pre_driving_age_student_mixed_party -0.073175\n", + "┃ coef_pre_driving_age_student_specific_to_discretionary_joint_tours 0.662600\n", + "┃ coef_pre_driving_age_student_specific_to_eating_out_joint_tours 1.391000\n", + "┃ coef_unavailable -999.000000\n", + "┃ coef_university_student_mixed_party -2.902637\n", + "┃ coef_university_student_specific_to_discretionary_joint_tours 0.000000\n", + "┃ coef_university_student_specific_to_eating_out_joint_tours -0.820000\n", "┃ dtype: float64\n", - "┣ loglike: -61.383086448632596\n", - "┣ d_loglike: coef_adult_log_of_max_window_overlap_with_a_child_mixed -4.096171e-04\n", - "┃ coef_adult_log_of_max_window_overlap_with_an_adult_adult_only_party 2.436129e-05\n", - "┃ coef_adult_more_automobiles_than_workers_adult_only_party 5.345149e-05\n", - "┃ coef_adult_more_automobiles_than_workers_mixed_party 1.722466e-04\n", - "┃ coef_adult_number_of_joint_tours_adult_only 1.769263e-04\n", - "┃ coef_adult_number_of_joint_tours_mixed 3.181344e-04\n", - "┃ coef_adult_number_of_other_adults_in_the_household_adults_only_party 0.000000e+00\n", - "┃ coef_adult_number_of_other_adults_in_the_household_mixed_party 0.000000e+00\n", - "┃ coef_child_log_of_max_window_overlap_with_a_child_child 0.000000e+00\n", - "┃ coef_child_log_of_max_window_overlap_with_an_adult_mixed 0.000000e+00\n", - "┃ coef_child_more_automobiles_than_workers_child_only_party 0.000000e+00\n", - "┃ coef_child_more_automobiles_than_workers_mixed_party 1.722466e-04\n", - "┃ coef_child_number_of_joint_tours_child_only 7.427872e-07\n", - "┃ coef_child_number_of_joint_tours_mixed -7.098060e-05\n", - "┃ coef_child_number_of_other_children_in_the_household_child_only_party 0.000000e+00\n", - "┃ coef_child_number_of_other_children_in_the_household_mixed 0.000000e+00\n", - "┃ coef_child_too_young_for_school_children_only_party 0.000000e+00\n", - "┃ coef_child_too_young_for_school_mixed_party -4.267128e-05\n", - "┃ coef_child_too_young_for_school_specific_to_discretionary_joint_tours 0.000000e+00\n", - "┃ coef_child_too_young_for_school_specific_to_eating_out_joint_tours 0.000000e+00\n", - "┃ coef_driving_age_student_children_only_party 0.000000e+00\n", - "┃ coef_driving_age_student_mixed_party -7.460379e-06\n", - "┃ coef_driving_age_student_specific_to_discretionary_joint_tours 0.000000e+00\n", - "┃ coef_driving_age_student_specific_to_eating_out_joint_tours 0.000000e+00\n", - "┃ coef_dummy_for_high_income_for_adult_in_adult_party -2.777090e-04\n", - "┃ coef_dummy_for_high_income_for_adult_in_mixed_party 7.481814e-05\n", - "┃ coef_dummy_for_high_income_for_child_in_children_party 0.000000e+00\n", - "┃ coef_dummy_for_high_income_for_child_in_mixed_party 7.481814e-05\n", - "┃ coef_full_time_worker_mixed_party 1.834492e-05\n", - "┃ coef_full_time_worker_mixed_party_not 0.000000e+00\n", - "┃ coef_full_time_worker_specific_to_discretionary_joint_tours 0.000000e+00\n", - "┃ coef_full_time_worker_specific_to_discretionary_joint_tours_not 0.000000e+00\n", - "┃ coef_full_time_worker_specific_to_eating_out_joint_tours 0.000000e+00\n", - "┃ coef_full_time_worker_specific_to_eating_out_joint_tours_not 0.000000e+00\n", - "┃ coef_household_in_suburban_area_adult_adult_only_party 0.000000e+00\n", - "┃ coef_household_in_suburban_area_adult_mixed_party 0.000000e+00\n", - "┃ coef_household_in_suburban_area_child_child_only_party 0.000000e+00\n", - "┃ coef_household_in_suburban_area_child_mixed_party 0.000000e+00\n", - "┃ coef_household_in_urban_area_adult_adult_only_party 0.000000e+00\n", - "┃ coef_household_in_urban_area_adult_mixed_party 3.181344e-04\n", - "┃ coef_household_in_urban_area_child_child_only_party 7.427872e-07\n", - "┃ coef_household_in_urban_area_child_mixed_party -6.353745e-05\n", - "┃ coef_non_worker_adults_only_party 3.691375e-04\n", - "┃ coef_non_worker_mixed_party -1.839038e-70\n", - "┃ coef_non_worker_specific_to_discretionary_joint_tours 0.000000e+00\n", - "┃ coef_non_worker_specific_to_eating_out_joint_tours 0.000000e+00\n", - "┃ coef_part_time_worker_adults_only_party 5.695694e-05\n", - "┃ coef_part_time_worker_adults_only_party_not 0.000000e+00\n", - "┃ coef_part_time_worker_mixed_party 0.000000e+00\n", - "┃ coef_part_time_worker_specific_to_discretionary_joint_tours 0.000000e+00\n", - "┃ coef_part_time_worker_specific_to_eating_out_joint_tours 0.000000e+00\n", - "┃ coef_pre_driving_age_student_children_only_party 7.427872e-07\n", - "┃ coef_pre_driving_age_student_mixed_party -1.340579e-05\n", - "┃ coef_pre_driving_age_student_specific_to_discretionary_joint_tours 0.000000e+00\n", - "┃ coef_pre_driving_age_student_specific_to_eating_out_joint_tours 0.000000e+00\n", - "┃ coef_unavailable 0.000000e+00\n", - "┃ coef_university_student_mixed_party 2.997895e-04\n", - "┃ coef_university_student_specific_to_discretionary_joint_tours 0.000000e+00\n", - "┃ coef_university_student_specific_to_eating_out_joint_tours 0.000000e+00\n", + "┣ logloss: 0.275665608543198\n", + "┣ d_logloss: coef_adult_log_of_max_window_overlap_with_a_child_mixed 0.000012\n", + "┃ coef_adult_log_of_max_window_overlap_with_an_adult_adult_only_party 0.000013\n", + "┃ coef_adult_more_automobiles_than_workers_adult_only_party -0.000165\n", + "┃ coef_adult_more_automobiles_than_workers_mixed_party -0.000051\n", + "┃ coef_adult_number_of_joint_tours_adult_only -0.000006\n", + "┃ coef_adult_number_of_joint_tours_mixed -0.000088\n", + "┃ coef_adult_number_of_other_adults_in_the_household_adults_only_party 0.000000\n", + "┃ coef_adult_number_of_other_adults_in_the_household_mixed_party 0.000000\n", + "┃ coef_child_log_of_max_window_overlap_with_a_child_child 0.000000\n", + "┃ coef_child_log_of_max_window_overlap_with_an_adult_mixed 0.000000\n", + "┃ coef_child_more_automobiles_than_workers_child_only_party 0.000000\n", + "┃ coef_child_more_automobiles_than_workers_mixed_party -0.000051\n", + "┃ coef_child_number_of_joint_tours_child_only -0.000119\n", + "┃ coef_child_number_of_joint_tours_mixed -0.000047\n", + "┃ coef_child_number_of_other_children_in_the_household_child_only_party 0.000000\n", + "┃ coef_child_number_of_other_children_in_the_household_mixed 0.000000\n", + "┃ coef_child_too_young_for_school_children_only_party 0.000066\n", + "┃ coef_child_too_young_for_school_mixed_party 0.000136\n", + "┃ coef_child_too_young_for_school_specific_to_discretionary_joint_tours 0.000000\n", + "┃ coef_child_too_young_for_school_specific_to_eating_out_joint_tours 0.000000\n", + "┃ coef_driving_age_student_children_only_party 0.000265\n", + "┃ coef_driving_age_student_mixed_party -0.000060\n", + "┃ coef_driving_age_student_specific_to_discretionary_joint_tours 0.000000\n", + "┃ coef_driving_age_student_specific_to_eating_out_joint_tours 0.000000\n", + "┃ coef_dummy_for_high_income_for_adult_in_adult_party 0.000017\n", + "┃ coef_dummy_for_high_income_for_adult_in_mixed_party 0.000026\n", + "┃ coef_dummy_for_high_income_for_child_in_children_party 0.000114\n", + "┃ coef_dummy_for_high_income_for_child_in_mixed_party 0.000026\n", + "┃ coef_full_time_worker_mixed_party -0.000152\n", + "┃ coef_full_time_worker_mixed_party_not 0.000000\n", + "┃ coef_full_time_worker_specific_to_discretionary_joint_tours 0.000000\n", + "┃ coef_full_time_worker_specific_to_discretionary_joint_tours_not 0.000000\n", + "┃ coef_full_time_worker_specific_to_eating_out_joint_tours 0.000000\n", + "┃ coef_full_time_worker_specific_to_eating_out_joint_tours_not 0.000000\n", + "┃ coef_household_in_suburban_area_adult_adult_only_party 0.000000\n", + "┃ coef_household_in_suburban_area_adult_mixed_party 0.000250\n", + "┃ coef_household_in_suburban_area_child_child_only_party 0.000000\n", + "┃ coef_household_in_suburban_area_child_mixed_party 0.000000\n", + "┃ coef_household_in_urban_area_adult_adult_only_party 0.000000\n", + "┃ coef_household_in_urban_area_adult_mixed_party -0.000179\n", + "┃ coef_household_in_urban_area_child_child_only_party 0.000131\n", + "┃ coef_household_in_urban_area_child_mixed_party -0.000081\n", + "┃ coef_non_worker_adults_only_party 0.000062\n", + "┃ coef_non_worker_mixed_party 0.000002\n", + "┃ coef_non_worker_specific_to_discretionary_joint_tours 0.000000\n", + "┃ coef_non_worker_specific_to_eating_out_joint_tours 0.000000\n", + "┃ coef_part_time_worker_adults_only_party 0.000239\n", + "┃ coef_part_time_worker_adults_only_party_not 0.000000\n", + "┃ coef_part_time_worker_mixed_party -0.000099\n", + "┃ coef_part_time_worker_specific_to_discretionary_joint_tours 0.000000\n", + "┃ coef_part_time_worker_specific_to_eating_out_joint_tours 0.000000\n", + "┃ coef_pre_driving_age_student_children_only_party -0.000108\n", + "┃ coef_pre_driving_age_student_mixed_party -0.000009\n", + "┃ coef_pre_driving_age_student_specific_to_discretionary_joint_tours 0.000000\n", + "┃ coef_pre_driving_age_student_specific_to_eating_out_joint_tours 0.000000\n", + "┃ coef_unavailable 0.000000\n", + "┃ coef_university_student_mixed_party 0.000080\n", + "┃ coef_university_student_specific_to_discretionary_joint_tours 0.000000\n", + "┃ coef_university_student_specific_to_eating_out_joint_tours 0.000000\n", "┃ dtype: float64\n", - "┣ nit: 13\n", - "┣ nfev: 22\n", - "┣ njev: 13\n", + "┣ nit: 80\n", + "┣ nfev: 81\n", + "┣ njev: 80\n", "┣ status: 0\n", "┣ message: 'Optimization terminated successfully'\n", "┣ success: True\n", - "┣ elapsed_time: datetime.timedelta(microseconds=868469)\n", - "┣ method: 'bhhh|slsqp'\n", - "┣ n_cases: 304\n", - "┣ iteration_number: 112\n", - "┣ logloss: 0.2019180475283967" + "┣ elapsed_time: datetime.timedelta(microseconds=325635)\n", + "┣ method: 'slsqp'\n", + "┣ n_cases: 4500\n", + "┣ iteration_number: 80\n", + "┣ loglike: -1240.495238444391" ] }, "execution_count": 7, @@ -2926,30 +2928,30 @@ " \n", " 1\n", " participate\n", - " 228.0\n", - " 304.0\n", + " 3317\n", + " 4500\n", " \n", " \n", " 2\n", " not_participate\n", - " 76.0\n", - " 304.0\n", + " 1183\n", + " 4500\n", " \n", " \n", " < Total All Alternatives >\n", " \n", - " 304.0\n", - " \n", + " 4500\n", + " <NA>\n", " \n", " \n", "\n", "" ], "text/plain": [ - " name chosen available\n", - "1 participate 228.0 304.0\n", - "2 not_participate 76.0 304.0\n", - "< Total All Alternatives > 304.0 " + " name chosen available\n", + "1 participate 3317 4500\n", + "2 not_participate 1183 4500\n", + "< Total All Alternatives > 4500 " ] }, "execution_count": 8, @@ -2958,7 +2960,7 @@ } ], "source": [ - "model.dataframes.choice_avail_summary()" + "model.choice_avail_summary()" ] }, { @@ -2976,610 +2978,577 @@ { "data": { "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Value Std Err t Stat Signif Like Ratio Null Value Constrained
coef_adult_log_of_max_window_overlap_with_a_child_mixed 4.60 1.53 3.00** NA 0.00
coef_adult_log_of_max_window_overlap_with_an_adult_adult_only_party 1.69 0.833 2.03* NA 0.00
coef_adult_more_automobiles_than_workers_adult_only_party 0.312 1.08 0.29 NA 0.00
coef_adult_more_automobiles_than_workers_mixed_party-1.83 0.672-2.72** NA 0.00
coef_adult_number_of_joint_tours_adult_only-2.13 2.00-1.07 NA 0.00
coef_adult_number_of_joint_tours_mixed-28.6 NA NA[***] 499.96 0.00
coef_adult_number_of_other_adults_in_the_household_adults_only_party 0.00 NA NA NA 0.00fixed value
coef_adult_number_of_other_adults_in_the_household_mixed_party 0.00 NA NA NA 0.00fixed value
coef_child_log_of_max_window_overlap_with_a_child_child 1.28 0.00450 283.43*** NA 0.00
coef_child_log_of_max_window_overlap_with_an_adult_mixed 1.54 0.00635 242.24*** NA 0.00
coef_child_more_automobiles_than_workers_child_only_party-0.395 0.0443-8.91*** NA 0.00
coef_child_more_automobiles_than_workers_mixed_party-1.55 0.672-2.31* NA 0.00
coef_child_number_of_joint_tours_child_only 4.98 388. 0.01 NA 0.00
coef_child_number_of_joint_tours_mixed 17.9 3.48e+03 0.01 NA 0.00
coef_child_number_of_other_children_in_the_household_child_only_party 0.00 NA NA NA 0.00fixed value
coef_child_number_of_other_children_in_the_household_mixed 0.00 NA NA NA 0.00fixed value
coef_child_too_young_for_school_children_only_party-2.79 0.000873-BIG*** NA 0.00
coef_child_too_young_for_school_mixed_party 2.07 1.97e+04 0.00 NA 0.00
coef_child_too_young_for_school_specific_to_discretionary_joint_tours 0.128 0.000270 475.53*** NA 0.00
coef_child_too_young_for_school_specific_to_eating_out_joint_tours 0.659 3.84e-10 BIG*** NA 0.00
coef_driving_age_student_children_only_party-1.82 1.84e-10-BIG*** NA 0.00
coef_driving_age_student_mixed_party-29.0 2.06e+04-0.00 NA 0.00
coef_driving_age_student_specific_to_discretionary_joint_tours-0.667 5.70e-13-BIG*** NA 0.00
coef_driving_age_student_specific_to_eating_out_joint_tours 2.34 0.00 NA[] 0.00 0.00
coef_dummy_for_high_income_for_adult_in_adult_party 0.132 0.897 0.15 NA 0.00
coef_dummy_for_high_income_for_adult_in_mixed_party-0.379 0.321-1.18 NA 0.00
coef_dummy_for_high_income_for_child_in_children_party-0.562 0.00 NA[] 0.00 0.00
coef_dummy_for_high_income_for_child_in_mixed_party-0.514 0.321-1.60 NA 0.00
coef_full_time_worker_mixed_party-957. NA NA[***] NA 0.00
coef_full_time_worker_mixed_party_not 0.500 NA NA NA 0.00fixed value
coef_full_time_worker_specific_to_discretionary_joint_tours 0.439 0.00 NA[] 0.00 0.00
coef_full_time_worker_specific_to_discretionary_joint_tours_not 0.500 NA NA NA 0.00fixed value
coef_full_time_worker_specific_to_eating_out_joint_tours 0.716 0.00 NA[] 0.00 0.00
coef_full_time_worker_specific_to_eating_out_joint_tours_not 0.500 NA NA NA 0.00fixed value
coef_household_in_suburban_area_adult_adult_only_party 0.00 NA NA NA 0.00fixed value
coef_household_in_suburban_area_adult_mixed_party-0.0601 0.00 NA[] 0.00 0.00
coef_household_in_suburban_area_child_child_only_party 0.00 NA NA NA 0.00fixed value
coef_household_in_suburban_area_child_mixed_party 0.00 NA NA NA 0.00fixed value
coef_household_in_urban_area_adult_adult_only_party 0.00 NA NA NA 0.00fixed value
coef_household_in_urban_area_adult_mixed_party 979. 3.97e+03 0.25 NA 0.00
coef_household_in_urban_area_child_child_only_party 6.08 388. 0.02 NA 0.00
coef_household_in_urban_area_child_mixed_party-19.3 1.94e+04-0.00 NA 0.00
coef_non_worker_adults_only_party-4.08 1.45-2.81** NA 0.00
coef_non_worker_mixed_party-125. 0.00 NA[] 0.00 0.00
coef_non_worker_specific_to_discretionary_joint_tours-0.183 0.00 NA[] 0.00 0.00
coef_non_worker_specific_to_eating_out_joint_tours 0.162 0.00 NA[] 0.00 0.00
coef_part_time_worker_adults_only_party-3.25 1.03-3.14** NA 0.00
coef_part_time_worker_adults_only_party_not 0.500 NA NA NA 0.00fixed value
coef_part_time_worker_mixed_party 2.25e+03 0.00 NA[] 0.00 0.00
coef_part_time_worker_specific_to_discretionary_joint_tours 0.285 0.00 NA[] 0.00 0.00
coef_part_time_worker_specific_to_eating_out_joint_tours 2.19 0.00 NA[] 0.00 0.00
coef_pre_driving_age_student_children_only_party 4.15 388. 0.01 NA 0.00
coef_pre_driving_age_student_mixed_party 2.01 1.97e+04 0.00 NA 0.00
coef_pre_driving_age_student_specific_to_discretionary_joint_tours 0.663 0.00 NA[] 0.00 0.00
coef_pre_driving_age_student_specific_to_eating_out_joint_tours 1.39 0.00 NA[] 0.00 0.00
coef_unavailable-999. NA NA NA 0.00fixed value
coef_university_student_mixed_party-959. NA NA[***] NA 0.00
coef_university_student_specific_to_discretionary_joint_tours 0.00 NA NA NA 0.00fixed value
coef_university_student_specific_to_eating_out_joint_tours-0.820 0.00 NA[] 0.00 0.00
" + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ValueStd Errt StatSignifNull ValueConstrained
Parameter      
coef_adult_log_of_max_window_overlap_with_a_child_mixed 2.13 0.234 9.09*** 0.00
coef_adult_log_of_max_window_overlap_with_an_adult_adult_only_party 1.28 0.229 5.59*** 0.00
coef_adult_more_automobiles_than_workers_adult_only_party 0.121 0.233 0.52 0.00
coef_adult_more_automobiles_than_workers_mixed_party-0.592 0.0889-6.66*** 0.00
coef_adult_number_of_joint_tours_adult_only-0.794 0.488-1.63 0.00
coef_adult_number_of_joint_tours_mixed-1.42 0.525-2.70** 0.00
coef_adult_number_of_other_adults_in_the_household_adults_only_party 0.00 0.00 NA 0.00fixed value
coef_adult_number_of_other_adults_in_the_household_mixed_party 0.00 0.00 NA 0.00fixed value
coef_child_log_of_max_window_overlap_with_a_child_child 1.30 NA NA 0.00
coef_child_log_of_max_window_overlap_with_an_adult_mixed 1.54 NA NA 0.00
coef_child_more_automobiles_than_workers_child_only_party-0.421 6.40e-14-BIG*** 0.00
coef_child_more_automobiles_than_workers_mixed_party-0.366 0.0889-4.12*** 0.00
coef_child_number_of_joint_tours_child_only 0.866 1.10 0.79 0.00
coef_child_number_of_joint_tours_mixed-0.262 0.497-0.53 0.00
coef_child_number_of_other_children_in_the_household_child_only_party 0.00 0.00 NA 0.00fixed value
coef_child_number_of_other_children_in_the_household_mixed 0.00 0.00 NA 0.00fixed value
coef_child_too_young_for_school_children_only_party-1.15 1.19-0.97 0.00
coef_child_too_young_for_school_mixed_party 0.198 0.525 0.38 0.00
coef_child_too_young_for_school_specific_to_discretionary_joint_tours 0.128 NA NA 0.00
coef_child_too_young_for_school_specific_to_eating_out_joint_tours 0.659 1.08e-14 BIG*** 0.00
coef_driving_age_student_children_only_party-2.12 1.40-1.51 0.00
coef_driving_age_student_mixed_party 0.323 0.613 0.53 0.00
coef_driving_age_student_specific_to_discretionary_joint_tours-0.668 4.92e-15-BIG*** 0.00
coef_driving_age_student_specific_to_eating_out_joint_tours 2.34 NA NA 0.00
coef_dummy_for_high_income_for_adult_in_adult_party-0.0682 0.231-0.29 0.00
coef_dummy_for_high_income_for_adult_in_mixed_party 0.113 0.0599 1.89 0.00
coef_dummy_for_high_income_for_child_in_children_party-0.212 0.453-0.47 0.00
coef_dummy_for_high_income_for_child_in_mixed_party-0.0137 0.0599-0.23 0.00
coef_full_time_worker_mixed_party-3.53 0.837-4.21*** 0.00
coef_full_time_worker_mixed_party_not 0.500 0.00 NA 0.00fixed value
coef_full_time_worker_specific_to_discretionary_joint_tours 0.439 7.59e-16 BIG*** 0.00
coef_full_time_worker_specific_to_discretionary_joint_tours_not 0.500 0.00 NA 0.00fixed value
coef_full_time_worker_specific_to_eating_out_joint_tours 0.716 1.68e-16 BIG*** 0.00
coef_full_time_worker_specific_to_eating_out_joint_tours_not 0.500 0.00 NA 0.00fixed value
coef_household_in_suburban_area_adult_adult_only_party 0.00 0.00 NA 0.00fixed value
coef_household_in_suburban_area_adult_mixed_party 1.24 1.10 1.13 0.00
coef_household_in_suburban_area_child_child_only_party 0.00 0.00 NA 0.00fixed value
coef_household_in_suburban_area_child_mixed_party 0.00 0.00 NA 0.00fixed value
coef_household_in_urban_area_adult_adult_only_party 0.00 0.00 NA 0.00fixed value
coef_household_in_urban_area_adult_mixed_party 1.20 1.11 1.09 0.00
coef_household_in_urban_area_child_child_only_party-0.145 0.520-0.28 0.00
coef_household_in_urban_area_child_mixed_party-0.139 0.189-0.74 0.00
coef_non_worker_adults_only_party-3.16 0.310-10.20*** 0.00
coef_non_worker_mixed_party 1.06 1.05 1.01 0.00
coef_non_worker_specific_to_discretionary_joint_tours-0.184 0.00 NA 0.00
coef_non_worker_specific_to_eating_out_joint_tours 0.162 0.00 NA 0.00
coef_part_time_worker_adults_only_party-3.63 0.389-9.33*** 0.00
coef_part_time_worker_adults_only_party_not 0.500 0.00 NA 0.00fixed value
coef_part_time_worker_mixed_party-0.448 0.942-0.48 0.00
coef_part_time_worker_specific_to_discretionary_joint_tours 0.285 0.00 NA 0.00
coef_part_time_worker_specific_to_eating_out_joint_tours 2.19 0.00 NA 0.00
coef_pre_driving_age_student_children_only_party 0.992 1.18 0.84 0.00
coef_pre_driving_age_student_mixed_party-0.0732 0.527-0.14 0.00
coef_pre_driving_age_student_specific_to_discretionary_joint_tours 0.663 0.00 NA 0.00
coef_pre_driving_age_student_specific_to_eating_out_joint_tours 1.39 0.00 NA 0.00
coef_unavailable-999. 0.00 NA 0.00fixed value
coef_university_student_mixed_party-2.90 0.860-3.38*** 0.00
coef_university_student_specific_to_discretionary_joint_tours 0.00 0.00 NA 0.00fixed value
coef_university_student_specific_to_eating_out_joint_tours-0.820 0.00 NA 0.00
\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 9, @@ -3626,18 +3595,7 @@ "cell_type": "code", "execution_count": 11, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "model.to_xlsx(\n", " result_dir/f\"{modelname}_model_estimation.xlsx\", \n", @@ -3695,7 +3653,7 @@ " \n", " 1\n", " coef_full_time_worker_mixed_party\n", - " -957.202749\n", + " -3.527365\n", " F\n", " \n", " \n", @@ -3707,7 +3665,7 @@ " \n", " 3\n", " coef_part_time_worker_adults_only_party\n", - " -3.248302\n", + " -3.631928\n", " F\n", " \n", " \n", @@ -3719,61 +3677,61 @@ " \n", " 5\n", " coef_part_time_worker_mixed_party\n", - " 2254.660944\n", + " -0.447984\n", " F\n", " \n", " \n", " 6\n", " coef_university_student_mixed_party\n", - " -958.612314\n", + " -2.902637\n", " F\n", " \n", " \n", " 7\n", " coef_non_worker_adults_only_party\n", - " -4.080384\n", + " -3.161945\n", " F\n", " \n", " \n", " 8\n", " coef_non_worker_mixed_party\n", - " -125.288137\n", + " 1.059162\n", " F\n", " \n", " \n", " 9\n", " coef_child_too_young_for_school_children_only_...\n", - " -2.785631\n", + " -1.149596\n", " F\n", " \n", " \n", " 10\n", " coef_child_too_young_for_school_mixed_party\n", - " 2.069934\n", + " 0.197836\n", " F\n", " \n", " \n", " 11\n", " coef_pre_driving_age_student_children_only_party\n", - " 4.151085\n", + " 0.991812\n", " F\n", " \n", " \n", " 12\n", " coef_pre_driving_age_student_mixed_party\n", - " 2.007228\n", + " -0.073175\n", " F\n", " \n", " \n", " 13\n", " coef_driving_age_student_children_only_party\n", - " -1.822000\n", + " -2.120496\n", " F\n", " \n", " \n", " 14\n", " coef_driving_age_student_mixed_party\n", - " -28.998969\n", + " 0.322986\n", " F\n", " \n", " \n", @@ -3839,13 +3797,13 @@ " \n", " 25\n", " coef_child_too_young_for_school_specific_to_ea...\n", - " 0.658655\n", + " 0.658900\n", " F\n", " \n", " \n", " 26\n", " coef_child_too_young_for_school_specific_to_di...\n", - " 0.128371\n", + " 0.128400\n", " F\n", " \n", " \n", @@ -3881,19 +3839,19 @@ " \n", " 32\n", " coef_household_in_urban_area_adult_mixed_party\n", - " 978.504490\n", + " 1.204039\n", " F\n", " \n", " \n", " 33\n", " coef_household_in_urban_area_child_child_only_...\n", - " 6.082784\n", + " -0.145369\n", " F\n", " \n", " \n", " 34\n", " coef_household_in_urban_area_child_mixed_party\n", - " -19.290030\n", + " -0.138857\n", " F\n", " \n", " \n", @@ -3905,7 +3863,7 @@ " \n", " 36\n", " coef_household_in_suburban_area_adult_mixed_party\n", - " -0.060070\n", + " 1.239881\n", " F\n", " \n", " \n", @@ -3923,73 +3881,73 @@ " \n", " 39\n", " coef_adult_more_automobiles_than_workers_adult...\n", - " 0.311671\n", + " 0.121220\n", " F\n", " \n", " \n", " 40\n", " coef_adult_more_automobiles_than_workers_mixed...\n", - " -1.827740\n", + " -0.591966\n", " F\n", " \n", " \n", " 41\n", " coef_child_more_automobiles_than_workers_child...\n", - " -0.394683\n", + " -0.421400\n", " F\n", " \n", " \n", " 42\n", " coef_child_more_automobiles_than_workers_mixed...\n", - " -1.551914\n", + " -0.366466\n", " F\n", " \n", " \n", " 43\n", " coef_dummy_for_high_income_for_adult_in_adult_...\n", - " 0.131783\n", + " -0.068202\n", " F\n", " \n", " \n", " 44\n", " coef_dummy_for_high_income_for_adult_in_mixed_...\n", - " -0.378918\n", + " 0.112930\n", " F\n", " \n", " \n", " 45\n", " coef_dummy_for_high_income_for_child_in_childr...\n", - " -0.561900\n", + " -0.211892\n", " F\n", " \n", " \n", " 46\n", " coef_dummy_for_high_income_for_child_in_mixed_...\n", - " -0.513571\n", + " -0.013740\n", " F\n", " \n", " \n", " 47\n", " coef_adult_number_of_joint_tours_adult_only\n", - " -2.134054\n", + " -0.794091\n", " F\n", " \n", " \n", " 48\n", " coef_adult_number_of_joint_tours_mixed\n", - " -28.572220\n", + " -1.417451\n", " F\n", " \n", " \n", " 49\n", " coef_child_number_of_joint_tours_child_only\n", - " 4.977604\n", + " 0.866122\n", " F\n", " \n", " \n", " 50\n", " coef_child_number_of_joint_tours_mixed\n", - " 17.894892\n", + " -0.261747\n", " F\n", " \n", " \n", @@ -4019,25 +3977,25 @@ " \n", " 55\n", " coef_adult_log_of_max_window_overlap_with_an_a...\n", - " 1.692145\n", + " 1.280678\n", " F\n", " \n", " \n", " 56\n", " coef_adult_log_of_max_window_overlap_with_a_ch...\n", - " 4.595737\n", + " 2.125116\n", " F\n", " \n", " \n", " 57\n", " coef_child_log_of_max_window_overlap_with_an_a...\n", - " 1.539267\n", + " 1.538000\n", " F\n", " \n", " \n", " 58\n", " coef_child_log_of_max_window_overlap_with_a_ch...\n", - " 1.275585\n", + " 1.296000\n", " F\n", " \n", " \n", @@ -4045,66 +4003,66 @@ "" ], "text/plain": [ - " coefficient_name value constrain\n", - "0 coef_unavailable -999.000000 T\n", - "1 coef_full_time_worker_mixed_party -957.202749 F\n", - "2 coef_full_time_worker_mixed_party_not 0.500000 T\n", - "3 coef_part_time_worker_adults_only_party -3.248302 F\n", - "4 coef_part_time_worker_adults_only_party_not 0.500000 T\n", - "5 coef_part_time_worker_mixed_party 2254.660944 F\n", - "6 coef_university_student_mixed_party -958.612314 F\n", - "7 coef_non_worker_adults_only_party -4.080384 F\n", - "8 coef_non_worker_mixed_party -125.288137 F\n", - "9 coef_child_too_young_for_school_children_only_... -2.785631 F\n", - "10 coef_child_too_young_for_school_mixed_party 2.069934 F\n", - "11 coef_pre_driving_age_student_children_only_party 4.151085 F\n", - "12 coef_pre_driving_age_student_mixed_party 2.007228 F\n", - "13 coef_driving_age_student_children_only_party -1.822000 F\n", - "14 coef_driving_age_student_mixed_party -28.998969 F\n", - "15 coef_full_time_worker_specific_to_eating_out_j... 0.715700 F\n", - "16 coef_full_time_worker_specific_to_eating_out_j... 0.500000 T\n", - "17 coef_full_time_worker_specific_to_discretionar... 0.439200 F\n", - "18 coef_full_time_worker_specific_to_discretionar... 0.500000 T\n", - "19 coef_part_time_worker_specific_to_eating_out_j... 2.188000 F\n", - "20 coef_part_time_worker_specific_to_discretionar... 0.285000 F\n", - "21 coef_university_student_specific_to_eating_out... -0.820000 F\n", - "22 coef_university_student_specific_to_discretion... 0.000000 T\n", - "23 coef_non_worker_specific_to_eating_out_joint_t... 0.161700 F\n", - "24 coef_non_worker_specific_to_discretionary_join... -0.183500 F\n", - "25 coef_child_too_young_for_school_specific_to_ea... 0.658655 F\n", - "26 coef_child_too_young_for_school_specific_to_di... 0.128371 F\n", - "27 coef_pre_driving_age_student_specific_to_eatin... 1.391000 F\n", - "28 coef_pre_driving_age_student_specific_to_discr... 0.662600 F\n", - "29 coef_driving_age_student_specific_to_eating_ou... 2.344000 F\n", - "30 coef_driving_age_student_specific_to_discretio... -0.667500 F\n", - "31 coef_household_in_urban_area_adult_adult_only_... 0.000000 T\n", - "32 coef_household_in_urban_area_adult_mixed_party 978.504490 F\n", - "33 coef_household_in_urban_area_child_child_only_... 6.082784 F\n", - "34 coef_household_in_urban_area_child_mixed_party -19.290030 F\n", - "35 coef_household_in_suburban_area_adult_adult_on... 0.000000 T\n", - "36 coef_household_in_suburban_area_adult_mixed_party -0.060070 F\n", - "37 coef_household_in_suburban_area_child_child_on... 0.000000 T\n", - "38 coef_household_in_suburban_area_child_mixed_party 0.000000 T\n", - "39 coef_adult_more_automobiles_than_workers_adult... 0.311671 F\n", - "40 coef_adult_more_automobiles_than_workers_mixed... -1.827740 F\n", - "41 coef_child_more_automobiles_than_workers_child... -0.394683 F\n", - "42 coef_child_more_automobiles_than_workers_mixed... -1.551914 F\n", - "43 coef_dummy_for_high_income_for_adult_in_adult_... 0.131783 F\n", - "44 coef_dummy_for_high_income_for_adult_in_mixed_... -0.378918 F\n", - "45 coef_dummy_for_high_income_for_child_in_childr... -0.561900 F\n", - "46 coef_dummy_for_high_income_for_child_in_mixed_... -0.513571 F\n", - "47 coef_adult_number_of_joint_tours_adult_only -2.134054 F\n", - "48 coef_adult_number_of_joint_tours_mixed -28.572220 F\n", - "49 coef_child_number_of_joint_tours_child_only 4.977604 F\n", - "50 coef_child_number_of_joint_tours_mixed 17.894892 F\n", - "51 coef_adult_number_of_other_adults_in_the_house... 0.000000 T\n", - "52 coef_adult_number_of_other_adults_in_the_house... 0.000000 T\n", - "53 coef_child_number_of_other_children_in_the_hou... 0.000000 T\n", - "54 coef_child_number_of_other_children_in_the_hou... 0.000000 T\n", - "55 coef_adult_log_of_max_window_overlap_with_an_a... 1.692145 F\n", - "56 coef_adult_log_of_max_window_overlap_with_a_ch... 4.595737 F\n", - "57 coef_child_log_of_max_window_overlap_with_an_a... 1.539267 F\n", - "58 coef_child_log_of_max_window_overlap_with_a_ch... 1.275585 F" + " coefficient_name value constrain\n", + "0 coef_unavailable -999.000000 T\n", + "1 coef_full_time_worker_mixed_party -3.527365 F\n", + "2 coef_full_time_worker_mixed_party_not 0.500000 T\n", + "3 coef_part_time_worker_adults_only_party -3.631928 F\n", + "4 coef_part_time_worker_adults_only_party_not 0.500000 T\n", + "5 coef_part_time_worker_mixed_party -0.447984 F\n", + "6 coef_university_student_mixed_party -2.902637 F\n", + "7 coef_non_worker_adults_only_party -3.161945 F\n", + "8 coef_non_worker_mixed_party 1.059162 F\n", + "9 coef_child_too_young_for_school_children_only_... -1.149596 F\n", + "10 coef_child_too_young_for_school_mixed_party 0.197836 F\n", + "11 coef_pre_driving_age_student_children_only_party 0.991812 F\n", + "12 coef_pre_driving_age_student_mixed_party -0.073175 F\n", + "13 coef_driving_age_student_children_only_party -2.120496 F\n", + "14 coef_driving_age_student_mixed_party 0.322986 F\n", + "15 coef_full_time_worker_specific_to_eating_out_j... 0.715700 F\n", + "16 coef_full_time_worker_specific_to_eating_out_j... 0.500000 T\n", + "17 coef_full_time_worker_specific_to_discretionar... 0.439200 F\n", + "18 coef_full_time_worker_specific_to_discretionar... 0.500000 T\n", + "19 coef_part_time_worker_specific_to_eating_out_j... 2.188000 F\n", + "20 coef_part_time_worker_specific_to_discretionar... 0.285000 F\n", + "21 coef_university_student_specific_to_eating_out... -0.820000 F\n", + "22 coef_university_student_specific_to_discretion... 0.000000 T\n", + "23 coef_non_worker_specific_to_eating_out_joint_t... 0.161700 F\n", + "24 coef_non_worker_specific_to_discretionary_join... -0.183500 F\n", + "25 coef_child_too_young_for_school_specific_to_ea... 0.658900 F\n", + "26 coef_child_too_young_for_school_specific_to_di... 0.128400 F\n", + "27 coef_pre_driving_age_student_specific_to_eatin... 1.391000 F\n", + "28 coef_pre_driving_age_student_specific_to_discr... 0.662600 F\n", + "29 coef_driving_age_student_specific_to_eating_ou... 2.344000 F\n", + "30 coef_driving_age_student_specific_to_discretio... -0.667500 F\n", + "31 coef_household_in_urban_area_adult_adult_only_... 0.000000 T\n", + "32 coef_household_in_urban_area_adult_mixed_party 1.204039 F\n", + "33 coef_household_in_urban_area_child_child_only_... -0.145369 F\n", + "34 coef_household_in_urban_area_child_mixed_party -0.138857 F\n", + "35 coef_household_in_suburban_area_adult_adult_on... 0.000000 T\n", + "36 coef_household_in_suburban_area_adult_mixed_party 1.239881 F\n", + "37 coef_household_in_suburban_area_child_child_on... 0.000000 T\n", + "38 coef_household_in_suburban_area_child_mixed_party 0.000000 T\n", + "39 coef_adult_more_automobiles_than_workers_adult... 0.121220 F\n", + "40 coef_adult_more_automobiles_than_workers_mixed... -0.591966 F\n", + "41 coef_child_more_automobiles_than_workers_child... -0.421400 F\n", + "42 coef_child_more_automobiles_than_workers_mixed... -0.366466 F\n", + "43 coef_dummy_for_high_income_for_adult_in_adult_... -0.068202 F\n", + "44 coef_dummy_for_high_income_for_adult_in_mixed_... 0.112930 F\n", + "45 coef_dummy_for_high_income_for_child_in_childr... -0.211892 F\n", + "46 coef_dummy_for_high_income_for_child_in_mixed_... -0.013740 F\n", + "47 coef_adult_number_of_joint_tours_adult_only -0.794091 F\n", + "48 coef_adult_number_of_joint_tours_mixed -1.417451 F\n", + "49 coef_child_number_of_joint_tours_child_only 0.866122 F\n", + "50 coef_child_number_of_joint_tours_mixed -0.261747 F\n", + "51 coef_adult_number_of_other_adults_in_the_house... 0.000000 T\n", + "52 coef_adult_number_of_other_adults_in_the_house... 0.000000 T\n", + "53 coef_child_number_of_other_children_in_the_hou... 0.000000 T\n", + "54 coef_child_number_of_other_children_in_the_hou... 0.000000 T\n", + "55 coef_adult_log_of_max_window_overlap_with_an_a... 1.280678 F\n", + "56 coef_adult_log_of_max_window_overlap_with_a_ch... 2.125116 F\n", + "57 coef_child_log_of_max_window_overlap_with_an_a... 1.538000 F\n", + "58 coef_child_log_of_max_window_overlap_with_a_ch... 1.296000 F" ] }, "execution_count": 12, @@ -4124,7 +4082,7 @@ "toc_visible": true }, "kernelspec": { - "display_name": "Python 3", + "display_name": "ESTER", "language": "python", "name": "python3" }, @@ -4138,7 +4096,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.10.15" }, "toc": { "base_numbering": 1, diff --git a/activitysim/examples/example_estimation/notebooks/13_joint_nonmand_tour_dest.ipynb b/activitysim/examples/example_estimation/notebooks/13_joint_nonmand_tour_dest.ipynb index 82fc07c16..20b9d7cac 100644 --- a/activitysim/examples/example_estimation/notebooks/13_joint_nonmand_tour_dest.ipynb +++ b/activitysim/examples/example_estimation/notebooks/13_joint_nonmand_tour_dest.ipynb @@ -28,30 +28,74 @@ "cell_type": "code", "execution_count": 1, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "JAX not found. Some functionality will be unavailable.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'larch': '6.0.32',\n", + " 'sharrow': '2.13.0',\n", + " 'numpy': '1.26.4',\n", + " 'pandas': '1.5.3',\n", + " 'xarray': '2024.3.0',\n", + " 'numba': '0.60.0'}" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "import larch # !conda install larch #for estimation\n", + "import larch as lx\n", "import pandas as pd\n", - "import numpy as np\n", - "import yaml \n", - "import larch.util.excel\n", - "import os" + "\n", + "lx.versions()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We'll work in our `test` directory, where ActivitySim has saved the estimation data bundles." + "For this demo, we will assume that you have already run ActivitySim in estimation\n", + "mode, and saved the required estimation data bundles (EDB's) to disk. See\n", + "the [first notebook](./01_estimation_mode.ipynb) for details. The following module\n", + "will run a script to set everything up if the example data is not already available." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "EDB directory already populated.\n" + ] + }, + { + "data": { + "text/plain": [ + "PosixPath('test-estimation-data/activitysim-prototype-mtc-extended')" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "os.chdir('test')" + "from est_mode_setup import prepare\n", + "\n", + "prepare()" ] }, { @@ -65,19 +109,36 @@ "cell_type": "code", "execution_count": 3, "metadata": {}, - "outputs": [], - "source": [ - "modelnames = (\"non_mandatory_tour_destination\", \"joint_tour_destination\")" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "loading from output-est-mode/estimation_data_bundle/non_mandatory_tour_destination/non_mandatory_tour_destination_coefficients.csv\n", + "loading from output-est-mode/estimation_data_bundle/non_mandatory_tour_destination/non_mandatory_tour_destination_SPEC.csv\n", + "loading from output-est-mode/estimation_data_bundle/non_mandatory_tour_destination/non_mandatory_tour_destination_alternatives_combined.parquet\n", + "loading from output-est-mode/estimation_data_bundle/non_mandatory_tour_destination/non_mandatory_tour_destination_choosers_combined.parquet\n", + "loading from output-est-mode/estimation_data_bundle/non_mandatory_tour_destination/non_mandatory_tour_destination_landuse.csv\n", + "loading from output-est-mode/estimation_data_bundle/non_mandatory_tour_destination/non_mandatory_tour_destination_size_terms.csv\n", + "loading from output-est-mode/estimation_data_bundle/joint_tour_destination/non_mandatory_tour_destination_coefficients.csv\n", + "loading from output-est-mode/estimation_data_bundle/joint_tour_destination/joint_tour_destination_SPEC.csv\n", + "loading from output-est-mode/estimation_data_bundle/joint_tour_destination/joint_tour_destination_alternatives_combined.parquet\n", + "loading from output-est-mode/estimation_data_bundle/joint_tour_destination/joint_tour_destination_choosers_combined.parquet\n", + "loading from output-est-mode/estimation_data_bundle/joint_tour_destination/joint_tour_destination_landuse.csv\n", + "loading from output-est-mode/estimation_data_bundle/joint_tour_destination/joint_tour_destination_size_terms.csv\n" + ] + } + ], "source": [ + "modelnames = (\"non_mandatory_tour_destination\", \"joint_tour_destination\")\n", + "\n", "from activitysim.estimation.larch import component_model\n", - "model, data = component_model(modelnames, return_data=True)" + "\n", + "model, data = component_model(\n", + " modelnames,\n", + " edb_directory=\"output-est-mode/estimation_data_bundle/{name}/\",\n", + " return_data=True,\n", + ")" ] }, { @@ -89,26 +150,6 @@ "all models in the group." ] }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "larch.model.model_group.ModelGroup" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(model)" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -127,7 +168,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -272,7 +313,7 @@ "coef_othdiscr_dist_5_plus -0.1193 F" ] }, - "execution_count": 6, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -290,7 +331,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -315,148 +356,88 @@ " \n", " \n", " tour_id\n", - " variable\n", - " 1\n", - " 2\n", - " 3\n", - " 4\n", - " 5\n", - " 6\n", - " 7\n", - " 8\n", - " ...\n", - " 181\n", - " 182\n", - " 183\n", - " 184\n", - " 185\n", - " 186\n", - " 187\n", - " 188\n", - " 189\n", - " 190\n", + " alt_dest\n", + " variable_label0000\n", + " variable_label0001\n", + " variable_label0002\n", + " variable_label0003\n", + " variable_label0004\n", + " variable_label0005\n", + " variable_label0006\n", + " variable_label0007\n", + " variable_label0008\n", " \n", " \n", " \n", " \n", " 0\n", - " 6812\n", - " variable_label0001\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " ...\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", + " 1870\n", + " 8\n", " 1.0\n", + " 1.00\n", + " 2.06\n", + " 0.0\n", + " 0.0\n", + " 7.492867\n", + " False\n", + " -0.349936\n", + " 4.970833\n", " \n", " \n", " 1\n", - " 6812\n", - " variable_label0004\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " ...\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", + " 1870\n", + " 16\n", + " 1.0\n", + " 1.00\n", + " 2.74\n", " 0.0\n", " 0.0\n", + " 8.289751\n", + " False\n", + " -0.487843\n", + " 4.510890\n", " \n", " \n", " 2\n", - " 6812\n", - " variable_label0002\n", - " 1.3199999332427979\n", - " 1.0299999713897705\n", - " 0.8499999046325684\n", - " 1.190000057220459\n", - " 1.0299999713897705\n", - " 0.7799999713897705\n", - " 0.8399999141693115\n", - " 0.9900000095367432\n", - " ...\n", - " 3.0\n", - " 3.0\n", - " 3.0\n", - " 2.7800002098083496\n", - " 2.25\n", - " 3.0\n", - " 3.0\n", - " 3.0\n", - " 3.0\n", - " 3.0\n", + " 1870\n", + " 17\n", + " 1.0\n", + " 1.00\n", + " 3.00\n", + " 0.1\n", + " 0.0\n", + " 7.651656\n", + " False\n", + " -0.537413\n", + " 5.289744\n", " \n", " \n", " 3\n", - " 6812\n", - " variable_label0003\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " ...\n", - " 0.17999982833862305\n", - " 1.0900001525878906\n", - " 0.619999885559082\n", + " 1870\n", + " 24\n", + " 1.0\n", + " 1.00\n", + " 1.77\n", " 0.0\n", " 0.0\n", - " 0.36999988555908203\n", - " 0.7699999809265137\n", - " 0.880000114440918\n", - " 1.8299999237060547\n", - " 1.9099998474121094\n", + " 7.111745\n", + " False\n", + " -0.401546\n", + " 5.208261\n", " \n", " \n", " 4\n", - " 6812\n", - " variable_label0005\n", - " 6.577240859271166\n", - " 7.294423493874009\n", - " 5.752909090156044\n", - " 7.026094604325162\n", - " 8.012728626482545\n", - " 6.442966827027993\n", - " 7.224737382332969\n", - " 6.539973163879868\n", - " ...\n", - " 4.866333729879064\n", - " 5.1845549872093715\n", - " 5.945708525269778\n", - " 6.047381635266343\n", - " 6.06715626447492\n", - " 5.987948372605412\n", - " 5.730242629913322\n", - " 7.343549119396827\n", - " 3.6375335267623483\n", - " 5.304200029706192\n", + " 1870\n", + " 26\n", + " 1.0\n", + " 1.00\n", + " 1.78\n", + " 0.0\n", + " 0.0\n", + " 6.132923\n", + " False\n", + " -0.354362\n", + " 6.192038\n", " \n", " \n", " ...\n", @@ -471,238 +452,139 @@ " ...\n", " ...\n", " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", " \n", " \n", - " 22405\n", - " 309796969\n", - " variable_label0005\n", - " 6.920922213193693\n", - " 7.5031529068855916\n", - " 5.943363520428754\n", - " 7.177433500369317\n", - " 7.744893706655902\n", - " 7.132142856175178\n", - " 7.776358418630959\n", - " 7.492867258990462\n", - " ...\n", - " 6.295404368250281\n", - " 6.542860933838223\n", - " 7.009064302237333\n", - " 6.995735936068004\n", - " 7.245322332115837\n", - " 6.883649044438551\n", - " 6.242536445981009\n", - " 7.341552978800834\n", - " 6.826019054785318\n", - " 6.176073070133304\n", - " \n", - " \n", - " 22406\n", - " 309796969\n", - " variable_label0006\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " ...\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", + " 712367\n", + " 310220296\n", + " 1428\n", + " 1.0\n", + " 1.00\n", + " 1.02\n", + " 0.0\n", + " 0.0\n", + " 7.202319\n", " False\n", + " -0.662897\n", + " 3.354280\n", " \n", " \n", - " 22407\n", - " 309796969\n", - " variable_label0008\n", - " 5.933573903741054\n", - " 5.344185216853384\n", - " 6.89562358280515\n", - " 5.647237616473043\n", - " 5.057110403289843\n", - " 5.668668226461269\n", - " 5.005364682150095\n", - " 5.194710813754951\n", - " ...\n", - " 6.636636760302007\n", - " 6.2913541739318335\n", - " 5.78578181451264\n", - " 5.731482098740245\n", - " 5.204415731979751\n", - " 5.650324057176968\n", - " 6.038731661211121\n", - " 4.657280162420779\n", - " 5.539483971790338\n", - " 6.352944918087955\n", - " \n", - " \n", - " 22408\n", - " 309796969\n", - " variable_label0000\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " ...\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", + " 712368\n", + " 310220296\n", + " 1430\n", " 1.0\n", + " 1.00\n", + " 0.90\n", + " 0.0\n", + " 0.0\n", + " 7.344198\n", + " False\n", + " -0.447759\n", + " 4.749178\n", + " \n", + " \n", + " 712369\n", + " 310220296\n", + " 1436\n", " 1.0\n", + " 1.00\n", + " 0.05\n", + " 0.0\n", + " 0.0\n", + " 6.819036\n", + " False\n", + " -0.234562\n", + " 3.150228\n", + " \n", + " \n", + " 712370\n", + " 310220296\n", + " 1437\n", " 1.0\n", + " 0.02\n", + " 0.00\n", + " 0.0\n", + " 0.0\n", + " 7.407333\n", + " False\n", + " 0.312912\n", + " 2.531655\n", " \n", " \n", - " 22409\n", - " 309796969\n", - " variable_label0007\n", - " -1.5391004507505035\n", - " -1.5110957206148612\n", - " -1.515112303709407\n", - " -1.4410914767289662\n", - " -1.4214516815414362\n", - " -1.3281227091644512\n", - " -1.305374454701245\n", - " -1.2231266453653264\n", - " ...\n", - " -1.3908896863022484\n", - " -1.2171103795210079\n", - " -1.1316699151863123\n", - " -1.027487960708256\n", - " -0.8599094598489491\n", - " -0.893210378354493\n", - " -0.8567540808188664\n", - " -0.739846345991969\n", - " -0.9938403733030249\n", - " -1.1919534906357447\n", + " 712371\n", + " 310220296\n", + " 1438\n", + " 1.0\n", + " 1.00\n", + " 0.12\n", + " 0.0\n", + " 0.0\n", + " 7.404157\n", + " False\n", + " -0.267253\n", + " 3.706103\n", " \n", " \n", "\n", - "

22410 rows × 192 columns

\n", + "

712372 rows × 11 columns

\n", "" ], "text/plain": [ - " tour_id variable 1 \\\n", - "0 6812 variable_label0001 1.0 \n", - "1 6812 variable_label0004 0.0 \n", - "2 6812 variable_label0002 1.3199999332427979 \n", - "3 6812 variable_label0003 0.0 \n", - "4 6812 variable_label0005 6.577240859271166 \n", - "... ... ... ... \n", - "22405 309796969 variable_label0005 6.920922213193693 \n", - "22406 309796969 variable_label0006 False \n", - "22407 309796969 variable_label0008 5.933573903741054 \n", - "22408 309796969 variable_label0000 1.0 \n", - "22409 309796969 variable_label0007 -1.5391004507505035 \n", + " tour_id alt_dest variable_label0000 variable_label0001 \\\n", + "0 1870 8 1.0 1.00 \n", + "1 1870 16 1.0 1.00 \n", + "2 1870 17 1.0 1.00 \n", + "3 1870 24 1.0 1.00 \n", + "4 1870 26 1.0 1.00 \n", + "... ... ... ... ... \n", + "712367 310220296 1428 1.0 1.00 \n", + "712368 310220296 1430 1.0 1.00 \n", + "712369 310220296 1436 1.0 1.00 \n", + "712370 310220296 1437 1.0 0.02 \n", + "712371 310220296 1438 1.0 1.00 \n", "\n", - " 2 3 4 \\\n", - "0 1.0 1.0 1.0 \n", - "1 0.0 0.0 0.0 \n", - "2 1.0299999713897705 0.8499999046325684 1.190000057220459 \n", - "3 0.0 0.0 0.0 \n", - "4 7.294423493874009 5.752909090156044 7.026094604325162 \n", - "... ... ... ... \n", - "22405 7.5031529068855916 5.943363520428754 7.177433500369317 \n", - "22406 False False False \n", - "22407 5.344185216853384 6.89562358280515 5.647237616473043 \n", - "22408 1.0 1.0 1.0 \n", - "22409 -1.5110957206148612 -1.515112303709407 -1.4410914767289662 \n", + " variable_label0002 variable_label0003 variable_label0004 \\\n", + "0 2.06 0.0 0.0 \n", + "1 2.74 0.0 0.0 \n", + "2 3.00 0.1 0.0 \n", + "3 1.77 0.0 0.0 \n", + "4 1.78 0.0 0.0 \n", + "... ... ... ... \n", + "712367 1.02 0.0 0.0 \n", + "712368 0.90 0.0 0.0 \n", + "712369 0.05 0.0 0.0 \n", + "712370 0.00 0.0 0.0 \n", + "712371 0.12 0.0 0.0 \n", "\n", - " 5 6 7 \\\n", - "0 1.0 1.0 1.0 \n", - "1 0.0 0.0 0.0 \n", - "2 1.0299999713897705 0.7799999713897705 0.8399999141693115 \n", - "3 0.0 0.0 0.0 \n", - "4 8.012728626482545 6.442966827027993 7.224737382332969 \n", - "... ... ... ... \n", - "22405 7.744893706655902 7.132142856175178 7.776358418630959 \n", - "22406 False False False \n", - "22407 5.057110403289843 5.668668226461269 5.005364682150095 \n", - "22408 1.0 1.0 1.0 \n", - "22409 -1.4214516815414362 -1.3281227091644512 -1.305374454701245 \n", + " variable_label0005 variable_label0006 variable_label0007 \\\n", + "0 7.492867 False -0.349936 \n", + "1 8.289751 False -0.487843 \n", + "2 7.651656 False -0.537413 \n", + "3 7.111745 False -0.401546 \n", + "4 6.132923 False -0.354362 \n", + "... ... ... ... \n", + "712367 7.202319 False -0.662897 \n", + "712368 7.344198 False -0.447759 \n", + "712369 6.819036 False -0.234562 \n", + "712370 7.407333 False 0.312912 \n", + "712371 7.404157 False -0.267253 \n", "\n", - " 8 ... 181 182 \\\n", - "0 1.0 ... 1.0 1.0 \n", - "1 0.0 ... 0.0 0.0 \n", - "2 0.9900000095367432 ... 3.0 3.0 \n", - "3 0.0 ... 0.17999982833862305 1.0900001525878906 \n", - "4 6.539973163879868 ... 4.866333729879064 5.1845549872093715 \n", - "... ... ... ... ... \n", - "22405 7.492867258990462 ... 6.295404368250281 6.542860933838223 \n", - "22406 False ... False False \n", - "22407 5.194710813754951 ... 6.636636760302007 6.2913541739318335 \n", - "22408 1.0 ... 1.0 1.0 \n", - "22409 -1.2231266453653264 ... -1.3908896863022484 -1.2171103795210079 \n", + " variable_label0008 \n", + "0 4.970833 \n", + "1 4.510890 \n", + "2 5.289744 \n", + "3 5.208261 \n", + "4 6.192038 \n", + "... ... \n", + "712367 3.354280 \n", + "712368 4.749178 \n", + "712369 3.150228 \n", + "712370 2.531655 \n", + "712371 3.706103 \n", "\n", - " 183 184 185 \\\n", - "0 1.0 1.0 1.0 \n", - "1 0.0 0.0 0.0 \n", - "2 3.0 2.7800002098083496 2.25 \n", - "3 0.619999885559082 0.0 0.0 \n", - "4 5.945708525269778 6.047381635266343 6.06715626447492 \n", - "... ... ... ... \n", - "22405 7.009064302237333 6.995735936068004 7.245322332115837 \n", - "22406 False False False \n", - "22407 5.78578181451264 5.731482098740245 5.204415731979751 \n", - "22408 1.0 1.0 1.0 \n", - "22409 -1.1316699151863123 -1.027487960708256 -0.8599094598489491 \n", - "\n", - " 186 187 188 \\\n", - "0 1.0 1.0 1.0 \n", - "1 0.0 0.0 0.0 \n", - "2 3.0 3.0 3.0 \n", - "3 0.36999988555908203 0.7699999809265137 0.880000114440918 \n", - "4 5.987948372605412 5.730242629913322 7.343549119396827 \n", - "... ... ... ... \n", - "22405 6.883649044438551 6.242536445981009 7.341552978800834 \n", - "22406 False False False \n", - "22407 5.650324057176968 6.038731661211121 4.657280162420779 \n", - "22408 1.0 1.0 1.0 \n", - "22409 -0.893210378354493 -0.8567540808188664 -0.739846345991969 \n", - "\n", - " 189 190 \n", - "0 1.0 1.0 \n", - "1 0.0 0.0 \n", - "2 3.0 3.0 \n", - "3 1.8299999237060547 1.9099998474121094 \n", - "4 3.6375335267623483 5.304200029706192 \n", - "... ... ... \n", - "22405 6.826019054785318 6.176073070133304 \n", - "22406 False False \n", - "22407 5.539483971790338 6.352944918087955 \n", - "22408 1.0 1.0 \n", - "22409 -0.9938403733030249 -1.1919534906357447 \n", - "\n", - "[22410 rows x 192 columns]" + "[712372 rows x 11 columns]" ] }, - "execution_count": 7, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -713,7 +595,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -738,148 +620,88 @@ " \n", " \n", " tour_id\n", - " variable\n", - " 1\n", - " 2\n", - " 3\n", - " 4\n", - " 5\n", - " 6\n", - " 7\n", - " 8\n", - " ...\n", - " 181\n", - " 182\n", - " 183\n", - " 184\n", - " 185\n", - " 186\n", - " 187\n", - " 188\n", - " 189\n", - " 190\n", + " alt_dest\n", + " variable_label0000\n", + " variable_label0001\n", + " variable_label0002\n", + " variable_label0003\n", + " variable_label0004\n", + " variable_label0005\n", + " variable_label0006\n", + " variable_label0007\n", + " variable_label0008\n", " \n", " \n", " \n", " \n", " 0\n", - " 7785298\n", - " variable_label0001\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " ...\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", + " 7853686\n", + " 5\n", " 1.0\n", " 1.0\n", + " 3.0\n", + " 5.42\n", + " 0.000000\n", + " 8.012729\n", + " False\n", + " -3.683188\n", + " 5.037499\n", " \n", " \n", " 1\n", - " 7785298\n", - " variable_label0004\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " ...\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", + " 7853686\n", + " 9\n", + " 1.0\n", + " 1.0\n", + " 3.0\n", + " 4.65\n", + " 0.000000\n", + " 7.841204\n", + " False\n", + " -3.477110\n", + " 4.420550\n", " \n", " \n", " 2\n", - " 7785298\n", - " variable_label0002\n", - " 3.0\n", - " 3.0\n", - " 3.0\n", - " 3.0\n", - " 3.0\n", - " 3.0\n", - " 3.0\n", - " 2.8600001335144043\n", - " ...\n", - " 3.0\n", + " 7853686\n", + " 14\n", + " 1.0\n", + " 1.0\n", " 3.0\n", - " 2.8299999237060547\n", - " 2.739999771118164\n", - " 2.179999828338623\n", - " 2.3499999046325684\n", - " 1.4000000953674316\n", - " 0.8399999141693115\n", - " 1.5699999332427979\n", - " 1.9100000858306885\n", + " 5.74\n", + " 0.000000\n", + " 6.755056\n", + " False\n", + " -3.777769\n", + " 5.641640\n", " \n", " \n", " 3\n", - " 7785298\n", - " variable_label0003\n", - " 0.6700000762939453\n", - " 0.6100001335144043\n", - " 0.5399999618530273\n", - " 0.4200000762939453\n", - " 0.2199997901916504\n", - " 0.2199997901916504\n", - " 0.059999942779541016\n", - " 0.0\n", - " ...\n", - " 0.940000057220459\n", - " 0.07000017166137695\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", + " 7853686\n", + " 19\n", + " 1.0\n", + " 1.0\n", + " 3.0\n", + " 4.64\n", + " 0.000000\n", + " 6.889447\n", + " False\n", + " -3.279737\n", + " 5.371069\n", " \n", " \n", " 4\n", - " 7785298\n", - " variable_label0005\n", - " 6.577240859271166\n", - " 7.294423493874009\n", - " 5.752909090156044\n", - " 7.026094604325162\n", - " 8.012728626482545\n", - " 6.442966827027993\n", - " 7.224737382332969\n", - " 6.539973163879868\n", - " ...\n", - " 4.866333729879064\n", - " 5.1845549872093715\n", - " 5.945708525269778\n", - " 6.047381635266343\n", - " 6.06715626447492\n", - " 5.987948372605412\n", - " 5.730242629913322\n", - " 7.343549119396827\n", - " 3.6375335267623483\n", - " 5.304200029706192\n", + " 7853686\n", + " 29\n", + " 1.0\n", + " 1.0\n", + " 3.0\n", + " 5.56\n", + " 0.000000\n", + " 6.470564\n", + " False\n", + " -3.709382\n", + " 6.596995\n", " \n", " \n", " ...\n", @@ -894,238 +716,139 @@ " ...\n", " ...\n", " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", " \n", " \n", - " 814\n", - " 301810980\n", - " variable_label0005\n", - " 7.1032677847373105\n", - " 7.823256899589877\n", - " 6.287721004233\n", - " 7.524478114358913\n", - " 8.260705863875177\n", - " 7.010517622311502\n", - " 7.824700996306483\n", - " 6.949116008358706\n", - " ...\n", - " 4.686971346676491\n", - " 4.924888571639326\n", - " 6.1286361810072245\n", - " 6.008528132533862\n", - " 6.327743907987008\n", - " 6.145720935633594\n", - " 5.563462376541104\n", - " 7.432773706720803\n", - " 3.829901471825824\n", - " 5.955267258796094\n", - " \n", - " \n", - " 815\n", - " 301810980\n", - " variable_label0006\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " ...\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", + " 32626\n", + " 305246245\n", + " 940\n", + " 1.0\n", + " 1.0\n", + " 3.0\n", + " 10.00\n", + " 0.220000\n", + " 6.621308\n", " False\n", + " -0.893075\n", + " 7.328697\n", " \n", " \n", - " 816\n", - " 301810980\n", - " variable_label0008\n", - " 5.435061452848071\n", - " 4.708514344404673\n", - " 6.2363992236454076\n", - " 4.98543309636194\n", - " 4.2284383398225796\n", - " 5.478626581386255\n", - " 4.646955223240626\n", - " 5.500680232862738\n", - " ...\n", - " 5.932115933542424\n", - " 6.178598653123427\n", - " 4.696321042115209\n", - " 4.610559147685053\n", - " 4.291343372231907\n", - " 4.552081408216856\n", - " 5.61268490695845\n", - " 3.809978548664433\n", - " 7.98807577917251\n", - " 5.735554926665741\n", - " \n", - " \n", - " 817\n", - " 301810980\n", - " variable_label0000\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " ...\n", + " 32627\n", + " 305246245\n", + " 971\n", " 1.0\n", " 1.0\n", + " 3.0\n", + " 9.43\n", + " 0.000000\n", + " 8.112977\n", + " False\n", + " -0.434306\n", + " 5.742782\n", + " \n", + " \n", + " 32628\n", + " 305246245\n", + " 1059\n", " 1.0\n", " 1.0\n", - " 0.9399999976158142\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", + " 3.0\n", + " 10.00\n", + " 5.740000\n", + " 7.339134\n", + " False\n", + " -1.306979\n", + " 7.269407\n", + " \n", + " \n", + " 32629\n", + " 305246245\n", + " 1155\n", " 1.0\n", " 1.0\n", + " 3.0\n", + " 10.00\n", + " 6.820000\n", + " 5.311707\n", + " False\n", + " -1.512147\n", + " 9.425679\n", " \n", " \n", - " 818\n", - " 301810980\n", - " variable_label0007\n", - " -0.8924086549271812\n", - " -0.8596752541456291\n", - " -0.7887167508610915\n", - " -0.8239646807369198\n", - " -0.7776481658829295\n", - " -0.6851415905513534\n", - " -0.682423134247482\n", - " -0.6410852233787339\n", - " ...\n", - " -0.09090903171439692\n", - " -0.23708230600538932\n", - " -0.1763447711955836\n", - " 0.16355680008666837\n", - " 0.41059384524240944\n", - " -0.15526899236164834\n", - " -0.2398310223012045\n", - " -0.27770426926470554\n", - " -0.45370314739749773\n", - " -0.42464839165931\n", + " 32630\n", + " 305246245\n", + " 1441\n", + " 1.0\n", + " 1.0\n", + " 3.0\n", + " 10.00\n", + " 6.059999\n", + " 7.107612\n", + " False\n", + " -1.349290\n", + " 7.539106\n", " \n", " \n", "\n", - "

819 rows × 192 columns

\n", + "

32631 rows × 11 columns

\n", "" ], "text/plain": [ - " tour_id variable 1 2 \\\n", - "0 7785298 variable_label0001 1.0 1.0 \n", - "1 7785298 variable_label0004 0.0 0.0 \n", - "2 7785298 variable_label0002 3.0 3.0 \n", - "3 7785298 variable_label0003 0.6700000762939453 0.6100001335144043 \n", - "4 7785298 variable_label0005 6.577240859271166 7.294423493874009 \n", - ".. ... ... ... ... \n", - "814 301810980 variable_label0005 7.1032677847373105 7.823256899589877 \n", - "815 301810980 variable_label0006 False False \n", - "816 301810980 variable_label0008 5.435061452848071 4.708514344404673 \n", - "817 301810980 variable_label0000 1.0 1.0 \n", - "818 301810980 variable_label0007 -0.8924086549271812 -0.8596752541456291 \n", - "\n", - " 3 4 5 \\\n", - "0 1.0 1.0 1.0 \n", - "1 0.0 0.0 0.0 \n", - "2 3.0 3.0 3.0 \n", - "3 0.5399999618530273 0.4200000762939453 0.2199997901916504 \n", - "4 5.752909090156044 7.026094604325162 8.012728626482545 \n", - ".. ... ... ... \n", - "814 6.287721004233 7.524478114358913 8.260705863875177 \n", - "815 False False False \n", - "816 6.2363992236454076 4.98543309636194 4.2284383398225796 \n", - "817 1.0 1.0 1.0 \n", - "818 -0.7887167508610915 -0.8239646807369198 -0.7776481658829295 \n", + " tour_id alt_dest variable_label0000 variable_label0001 \\\n", + "0 7853686 5 1.0 1.0 \n", + "1 7853686 9 1.0 1.0 \n", + "2 7853686 14 1.0 1.0 \n", + "3 7853686 19 1.0 1.0 \n", + "4 7853686 29 1.0 1.0 \n", + "... ... ... ... ... \n", + "32626 305246245 940 1.0 1.0 \n", + "32627 305246245 971 1.0 1.0 \n", + "32628 305246245 1059 1.0 1.0 \n", + "32629 305246245 1155 1.0 1.0 \n", + "32630 305246245 1441 1.0 1.0 \n", "\n", - " 6 7 8 ... \\\n", - "0 1.0 1.0 1.0 ... \n", - "1 0.0 0.0 0.0 ... \n", - "2 3.0 3.0 2.8600001335144043 ... \n", - "3 0.2199997901916504 0.059999942779541016 0.0 ... \n", - "4 6.442966827027993 7.224737382332969 6.539973163879868 ... \n", - ".. ... ... ... ... \n", - "814 7.010517622311502 7.824700996306483 6.949116008358706 ... \n", - "815 False False False ... \n", - "816 5.478626581386255 4.646955223240626 5.500680232862738 ... \n", - "817 1.0 1.0 1.0 ... \n", - "818 -0.6851415905513534 -0.682423134247482 -0.6410852233787339 ... \n", + " variable_label0002 variable_label0003 variable_label0004 \\\n", + "0 3.0 5.42 0.000000 \n", + "1 3.0 4.65 0.000000 \n", + "2 3.0 5.74 0.000000 \n", + "3 3.0 4.64 0.000000 \n", + "4 3.0 5.56 0.000000 \n", + "... ... ... ... \n", + "32626 3.0 10.00 0.220000 \n", + "32627 3.0 9.43 0.000000 \n", + "32628 3.0 10.00 5.740000 \n", + "32629 3.0 10.00 6.820000 \n", + "32630 3.0 10.00 6.059999 \n", "\n", - " 181 182 183 \\\n", - "0 1.0 1.0 1.0 \n", - "1 0.0 0.0 0.0 \n", - "2 3.0 3.0 2.8299999237060547 \n", - "3 0.940000057220459 0.07000017166137695 0.0 \n", - "4 4.866333729879064 5.1845549872093715 5.945708525269778 \n", - ".. ... ... ... \n", - "814 4.686971346676491 4.924888571639326 6.1286361810072245 \n", - "815 False False False \n", - "816 5.932115933542424 6.178598653123427 4.696321042115209 \n", - "817 1.0 1.0 1.0 \n", - "818 -0.09090903171439692 -0.23708230600538932 -0.1763447711955836 \n", + " variable_label0005 variable_label0006 variable_label0007 \\\n", + "0 8.012729 False -3.683188 \n", + "1 7.841204 False -3.477110 \n", + "2 6.755056 False -3.777769 \n", + "3 6.889447 False -3.279737 \n", + "4 6.470564 False -3.709382 \n", + "... ... ... ... \n", + "32626 6.621308 False -0.893075 \n", + "32627 8.112977 False -0.434306 \n", + "32628 7.339134 False -1.306979 \n", + "32629 5.311707 False -1.512147 \n", + "32630 7.107612 False -1.349290 \n", "\n", - " 184 185 186 \\\n", - "0 1.0 1.0 1.0 \n", - "1 0.0 0.0 0.0 \n", - "2 2.739999771118164 2.179999828338623 2.3499999046325684 \n", - "3 0.0 0.0 0.0 \n", - "4 6.047381635266343 6.06715626447492 5.987948372605412 \n", - ".. ... ... ... \n", - "814 6.008528132533862 6.327743907987008 6.145720935633594 \n", - "815 False False False \n", - "816 4.610559147685053 4.291343372231907 4.552081408216856 \n", - "817 1.0 0.9399999976158142 1.0 \n", - "818 0.16355680008666837 0.41059384524240944 -0.15526899236164834 \n", + " variable_label0008 \n", + "0 5.037499 \n", + "1 4.420550 \n", + "2 5.641640 \n", + "3 5.371069 \n", + "4 6.596995 \n", + "... ... \n", + "32626 7.328697 \n", + "32627 5.742782 \n", + "32628 7.269407 \n", + "32629 9.425679 \n", + "32630 7.539106 \n", "\n", - " 187 188 189 \\\n", - "0 1.0 1.0 1.0 \n", - "1 0.0 0.0 0.0 \n", - "2 1.4000000953674316 0.8399999141693115 1.5699999332427979 \n", - "3 0.0 0.0 0.0 \n", - "4 5.730242629913322 7.343549119396827 3.6375335267623483 \n", - ".. ... ... ... \n", - "814 5.563462376541104 7.432773706720803 3.829901471825824 \n", - "815 False False False \n", - "816 5.61268490695845 3.809978548664433 7.98807577917251 \n", - "817 1.0 1.0 1.0 \n", - "818 -0.2398310223012045 -0.27770426926470554 -0.45370314739749773 \n", - "\n", - " 190 \n", - "0 1.0 \n", - "1 0.0 \n", - "2 1.9100000858306885 \n", - "3 0.0 \n", - "4 5.304200029706192 \n", - ".. ... \n", - "814 5.955267258796094 \n", - "815 False \n", - "816 5.735554926665741 \n", - "817 1.0 \n", - "818 -0.42464839165931 \n", - "\n", - "[819 rows x 192 columns]" + "[32631 rows x 11 columns]" ] }, - "execution_count": 8, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -1143,7 +866,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -1178,48 +901,48 @@ " \n", " \n", " 0\n", - " 6812\n", - " 72\n", - " 72.0\n", - " 166\n", - " eatout\n", - " 71\n", + " 1870\n", + " 70\n", + " 26\n", + " 45\n", + " othdiscr\n", + " 52\n", " \n", " \n", " 1\n", - " 8110\n", - " 62\n", - " 47.0\n", - " 197\n", - " shopping\n", - " 80\n", + " 20468\n", + " 138\n", + " 161\n", + " 499\n", + " escort\n", + " 124\n", " \n", " \n", " 2\n", - " 11013\n", - " 33\n", - " 32.0\n", - " 268\n", - " othdiscr\n", - " 91\n", + " 27055\n", + " 133\n", + " 185\n", + " 659\n", + " social\n", + " 132\n", " \n", " \n", " 3\n", - " 11016\n", - " 71\n", - " 71.0\n", - " 268\n", - " othmaint\n", - " 91\n", + " 38877\n", + " 115\n", + " 147\n", + " 948\n", + " escort\n", + " 148\n", " \n", " \n", " 4\n", - " 15403\n", - " 67\n", - " 67.0\n", - " 375\n", - " othmaint\n", - " 105\n", + " 38904\n", + " 107\n", + " 104\n", + " 948\n", + " social\n", + " 148\n", " \n", " \n", " ...\n", @@ -1231,86 +954,86 @@ " ...\n", " \n", " \n", - " 2485\n", - " 309760814\n", - " 154\n", - " 154.0\n", - " 7555141\n", + " 29664\n", + " 310197956\n", + " 1374\n", + " 1384\n", + " 7565803\n", " shopping\n", - " 85\n", + " 1386\n", " \n", " \n", - " 2486\n", - " 309760815\n", - " 41\n", - " 41.0\n", - " 7555141\n", - " shopping\n", - " 85\n", + " 29665\n", + " 310202376\n", + " 1402\n", + " 1402\n", + " 7565911\n", + " othdiscr\n", + " 1402\n", " \n", " \n", - " 2487\n", - " 309790009\n", - " 36\n", - " 36.0\n", - " 7555853\n", - " social\n", - " 115\n", + " 29666\n", + " 310202384\n", + " 1402\n", + " 1402\n", + " 7565911\n", + " shopping\n", + " 1402\n", " \n", " \n", - " 2488\n", - " 309796968\n", - " 94\n", - " 94.0\n", - " 7556023\n", - " othdiscr\n", - " 136\n", + " 29667\n", + " 310212634\n", + " 1405\n", + " 1422\n", + " 7566161\n", + " shopping\n", + " 1421\n", " \n", " \n", - " 2489\n", - " 309796969\n", - " 129\n", - " 128.0\n", - " 7556023\n", - " othdiscr\n", - " 136\n", + " 29668\n", + " 310220296\n", + " 1156\n", + " 1430\n", + " 7566348\n", + " othmaint\n", + " 1437\n", " \n", " \n", "\n", - "

2490 rows × 6 columns

\n", + "

29669 rows × 6 columns

\n", "" ], "text/plain": [ - " tour_id model_choice override_choice person_id tour_type \\\n", - "0 6812 72 72.0 166 eatout \n", - "1 8110 62 47.0 197 shopping \n", - "2 11013 33 32.0 268 othdiscr \n", - "3 11016 71 71.0 268 othmaint \n", - "4 15403 67 67.0 375 othmaint \n", - "... ... ... ... ... ... \n", - "2485 309760814 154 154.0 7555141 shopping \n", - "2486 309760815 41 41.0 7555141 shopping \n", - "2487 309790009 36 36.0 7555853 social \n", - "2488 309796968 94 94.0 7556023 othdiscr \n", - "2489 309796969 129 128.0 7556023 othdiscr \n", + " tour_id model_choice override_choice person_id tour_type \\\n", + "0 1870 70 26 45 othdiscr \n", + "1 20468 138 161 499 escort \n", + "2 27055 133 185 659 social \n", + "3 38877 115 147 948 escort \n", + "4 38904 107 104 948 social \n", + "... ... ... ... ... ... \n", + "29664 310197956 1374 1384 7565803 shopping \n", + "29665 310202376 1402 1402 7565911 othdiscr \n", + "29666 310202384 1402 1402 7565911 shopping \n", + "29667 310212634 1405 1422 7566161 shopping \n", + "29668 310220296 1156 1430 7566348 othmaint \n", "\n", - " home_zone_id \n", - "0 71 \n", - "1 80 \n", - "2 91 \n", - "3 91 \n", - "4 105 \n", - "... ... \n", - "2485 85 \n", - "2486 85 \n", - "2487 115 \n", - "2488 136 \n", - "2489 136 \n", + " home_zone_id \n", + "0 52 \n", + "1 124 \n", + "2 132 \n", + "3 148 \n", + "4 148 \n", + "... ... \n", + "29664 1386 \n", + "29665 1402 \n", + "29666 1402 \n", + "29667 1421 \n", + "29668 1437 \n", "\n", - "[2490 rows x 6 columns]" + "[29669 rows x 6 columns]" ] }, - "execution_count": 9, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -1321,7 +1044,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -1356,48 +1079,48 @@ " \n", " \n", " 0\n", - " 7785298\n", - " 113\n", - " 103.0\n", - " 189885\n", + " 7853686\n", + " 131\n", + " 131\n", + " 191553\n", " eatout\n", - " 135\n", + " 217\n", " \n", " \n", " 1\n", - " 8708454\n", - " 103\n", - " 106.0\n", - " 212401\n", - " eatout\n", - " 8\n", + " 7902318\n", + " 321\n", + " 323\n", + " 192739\n", + " shopping\n", + " 322\n", " \n", " \n", " 2\n", - " 9715006\n", - " 188\n", - " 188.0\n", - " 236951\n", + " 7909776\n", + " 350\n", + " 320\n", + " 192921\n", " othdiscr\n", - " 183\n", + " 330\n", " \n", " \n", " 3\n", - " 10831112\n", - " 105\n", - " 105.0\n", - " 264173\n", - " shopping\n", - " 10\n", + " 7988742\n", + " 527\n", + " 637\n", + " 194847\n", + " othdiscr\n", + " 526\n", " \n", " \n", " 4\n", - " 20334787\n", - " 157\n", - " 157.0\n", - " 495970\n", - " othmaint\n", - " 140\n", + " 8103874\n", + " 591\n", + " 687\n", + " 197655\n", + " shopping\n", + " 683\n", " \n", " \n", " ...\n", @@ -1409,86 +1132,86 @@ " ...\n", " \n", " \n", - " 86\n", - " 283676518\n", - " 115\n", - " 115.0\n", - " 6918939\n", - " shopping\n", - " 121\n", + " 1272\n", + " 303771147\n", + " 484\n", + " 673\n", + " 7409052\n", + " othdiscr\n", + " 675\n", " \n", " \n", - " 87\n", - " 295260168\n", - " 7\n", - " 7.0\n", - " 7201469\n", + " 1273\n", + " 304144212\n", + " 796\n", + " 843\n", + " 7418154\n", " social\n", - " 114\n", + " 806\n", " \n", " \n", - " 88\n", - " 297646485\n", - " 90\n", - " 89.0\n", - " 7259670\n", + " 1274\n", + " 304463637\n", + " 9\n", + " 38\n", + " 7425942\n", " othdiscr\n", - " 25\n", + " 1043\n", " \n", " \n", - " 89\n", - " 298814741\n", - " 147\n", - " 147.0\n", - " 7288164\n", - " othmaint\n", - " 74\n", + " 1275\n", + " 305125582\n", + " 29\n", + " 98\n", + " 7442087\n", + " othdiscr\n", + " 50\n", " \n", " \n", - " 90\n", - " 301810980\n", - " 66\n", - " 66.0\n", - " 7361244\n", - " othmaint\n", - " 177\n", + " 1276\n", + " 305246245\n", + " 2\n", + " 149\n", + " 7445030\n", + " othdiscr\n", + " 149\n", " \n", " \n", "\n", - "

91 rows × 6 columns

\n", + "

1277 rows × 6 columns

\n", "" ], "text/plain": [ - " tour_id model_choice override_choice person_id tour_type \\\n", - "0 7785298 113 103.0 189885 eatout \n", - "1 8708454 103 106.0 212401 eatout \n", - "2 9715006 188 188.0 236951 othdiscr \n", - "3 10831112 105 105.0 264173 shopping \n", - "4 20334787 157 157.0 495970 othmaint \n", - ".. ... ... ... ... ... \n", - "86 283676518 115 115.0 6918939 shopping \n", - "87 295260168 7 7.0 7201469 social \n", - "88 297646485 90 89.0 7259670 othdiscr \n", - "89 298814741 147 147.0 7288164 othmaint \n", - "90 301810980 66 66.0 7361244 othmaint \n", + " tour_id model_choice override_choice person_id tour_type \\\n", + "0 7853686 131 131 191553 eatout \n", + "1 7902318 321 323 192739 shopping \n", + "2 7909776 350 320 192921 othdiscr \n", + "3 7988742 527 637 194847 othdiscr \n", + "4 8103874 591 687 197655 shopping \n", + "... ... ... ... ... ... \n", + "1272 303771147 484 673 7409052 othdiscr \n", + "1273 304144212 796 843 7418154 social \n", + "1274 304463637 9 38 7425942 othdiscr \n", + "1275 305125582 29 98 7442087 othdiscr \n", + "1276 305246245 2 149 7445030 othdiscr \n", "\n", - " home_zone_id \n", - "0 135 \n", - "1 8 \n", - "2 183 \n", - "3 10 \n", - "4 140 \n", - ".. ... \n", - "86 121 \n", - "87 114 \n", - "88 25 \n", - "89 74 \n", - "90 177 \n", + " home_zone_id \n", + "0 217 \n", + "1 322 \n", + "2 330 \n", + "3 526 \n", + "4 683 \n", + "... ... \n", + "1272 675 \n", + "1273 806 \n", + "1274 1043 \n", + "1275 50 \n", + "1276 149 \n", "\n", - "[91 rows x 6 columns]" + "[1277 rows x 6 columns]" ] }, - "execution_count": 10, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -1506,7 +1229,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -1592,9 +1315,9 @@ " 7\n", " ...\n", " 0\n", + " 0.0\n", " 0.00000\n", - " 0.00000\n", - " 0.00000\n", + " 0.0\n", " 3\n", " 5.89564\n", " 2.875000\n", @@ -1616,9 +1339,9 @@ " 19\n", " ...\n", " 0\n", + " 0.0\n", " 0.00000\n", - " 0.00000\n", - " 0.00000\n", + " 0.0\n", " 1\n", " 5.84871\n", " 5.195214\n", @@ -1640,9 +1363,9 @@ " 38\n", " ...\n", " 0\n", + " 0.0\n", " 0.00000\n", - " 0.00000\n", - " 0.00000\n", + " 0.0\n", " 1\n", " 5.53231\n", " 80.470405\n", @@ -1664,9 +1387,9 @@ " 20\n", " ...\n", " 0\n", + " 0.0\n", " 0.00000\n", - " 0.00000\n", - " 0.00000\n", + " 0.0\n", " 2\n", " 5.64330\n", " 7.947368\n", @@ -1688,9 +1411,9 @@ " 86\n", " ...\n", " 0\n", - " 0.00000\n", + " 0.0\n", " 72.14684\n", - " 0.00000\n", + " 0.0\n", " 1\n", " 5.52555\n", " 38.187500\n", @@ -1723,191 +1446,191 @@ " ...\n", " \n", " \n", - " 186\n", - " 4\n", - " 4\n", - " 1\n", - " 2779\n", - " 8062\n", - " 376.0\n", - " 172.0\n", - " 15.00000\n", - " 1760\n", - " 1178\n", + " 1450\n", + " 34\n", + " 34\n", + " 9\n", + " 2724\n", + " 6493\n", + " 1320.0\n", + " 630.0\n", + " 69.00000\n", + " 1046\n", + " 1013\n", " ...\n", - " 3\n", - " 0.00000\n", - " 0.00000\n", + " 4\n", + " 0.0\n", " 0.00000\n", + " 0.0\n", " 1\n", - " 2.04173\n", - " 14.860963\n", - " 9.411765\n", - " 5.762347\n", + " 1.12116\n", + " 3.896996\n", + " 1.496423\n", + " 1.081235\n", " False\n", " \n", " \n", - " 187\n", - " 4\n", - " 4\n", - " 1\n", - " 1492\n", - " 4139\n", - " 214.0\n", - " 116.0\n", - " 10.00000\n", - " 808\n", - " 603\n", + " 1451\n", + " 34\n", + " 34\n", + " 9\n", + " 2016\n", + " 4835\n", + " 664.0\n", + " 379.0\n", + " 43.00000\n", + " 757\n", + " 757\n", " ...\n", - " 3\n", - " 0.00000\n", - " 0.00000\n", + " 4\n", + " 0.0\n", " 0.00000\n", - " 2\n", - " 1.73676\n", - " 11.841270\n", - " 6.412698\n", - " 4.159890\n", + " 0.0\n", + " 1\n", + " 1.17116\n", + " 4.777251\n", + " 1.793839\n", + " 1.304140\n", " False\n", " \n", " \n", - " 188\n", - " 4\n", - " 4\n", - " 1\n", - " 753\n", - " 4072\n", - " 232.0\n", - " 11.0\n", - " 178.00000\n", - " 4502\n", - " 1117\n", + " 1452\n", + " 34\n", + " 34\n", + " 9\n", + " 2178\n", + " 5055\n", + " 1068.0\n", + " 602.0\n", + " 35.00000\n", + " 2110\n", + " 789\n", " ...\n", - " 2\n", - " 3961.04761\n", - " 17397.79102\n", - " 11152.93652\n", + " 4\n", + " 0.0\n", + " 0.00000\n", + " 0.0\n", " 1\n", - " 2.28992\n", - " 3.984127\n", - " 23.820106\n", - " 3.413233\n", + " 1.17587\n", + " 3.419152\n", + " 3.312402\n", + " 1.682465\n", " False\n", " \n", " \n", - " 189\n", - " 4\n", - " 4\n", - " 1\n", - " 3546\n", - " 8476\n", - " 201.0\n", - " 72.0\n", - " 6.00000\n", - " 226\n", - " 1057\n", + " 1453\n", + " 34\n", + " 34\n", + " 9\n", + " 298\n", + " 779\n", + " 14195.0\n", + " 429.0\n", + " 4.00000\n", + " 922\n", + " 88\n", " ...\n", - " 2\n", - " 0.00000\n", - " 0.00000\n", + " 5\n", + " 0.0\n", " 0.00000\n", + " 0.0\n", " 1\n", - " 2.88773\n", - " 45.461538\n", - " 2.897436\n", - " 2.723836\n", + " 1.01972\n", + " 0.688222\n", + " 2.129330\n", + " 0.520115\n", " False\n", " \n", " \n", - " 190\n", - " 4\n", - " 4\n", - " 1\n", - " 968\n", - " 1647\n", - " 1381.0\n", - " 14.0\n", - " 28.00000\n", - " 1010\n", - " 114\n", + " 1454\n", + " 34\n", + " 34\n", + " 9\n", + " 1068\n", + " 2337\n", + " 10469.0\n", + " 1114.0\n", + " 27.00000\n", + " 607\n", + " 418\n", " ...\n", - " 3\n", - " 0.00000\n", - " 0.00000\n", + " 5\n", + " 0.0\n", " 0.00000\n", + " 0.0\n", " 1\n", - " 2.60309\n", - " 23.047619\n", - " 24.047619\n", - " 11.768501\n", + " 0.95542\n", + " 0.936021\n", + " 0.531989\n", + " 0.339203\n", " False\n", " \n", " \n", "\n", - "

190 rows × 28 columns

\n", + "

1454 rows × 28 columns

\n", "" ], "text/plain": [ - " DISTRICT SD county_id TOTHH TOTPOP TOTACRE RESACRE CIACRE \\\n", - "zone_id \n", - "1 1 1 1 46 82 20.3 1.0 15.00000 \n", - "2 1 1 1 134 240 31.1 1.0 24.79297 \n", - "3 1 1 1 267 476 14.7 1.0 2.31799 \n", - "4 1 1 1 151 253 19.3 1.0 18.00000 \n", - "5 1 1 1 611 1069 52.7 1.0 15.00000 \n", - "... ... .. ... ... ... ... ... ... \n", - "186 4 4 1 2779 8062 376.0 172.0 15.00000 \n", - "187 4 4 1 1492 4139 214.0 116.0 10.00000 \n", - "188 4 4 1 753 4072 232.0 11.0 178.00000 \n", - "189 4 4 1 3546 8476 201.0 72.0 6.00000 \n", - "190 4 4 1 968 1647 1381.0 14.0 28.00000 \n", + " DISTRICT SD county_id TOTHH TOTPOP TOTACRE RESACRE CIACRE \\\n", + "zone_id \n", + "1 1 1 1 46 82 20.3 1.0 15.00000 \n", + "2 1 1 1 134 240 31.1 1.0 24.79297 \n", + "3 1 1 1 267 476 14.7 1.0 2.31799 \n", + "4 1 1 1 151 253 19.3 1.0 18.00000 \n", + "5 1 1 1 611 1069 52.7 1.0 15.00000 \n", + "... ... .. ... ... ... ... ... ... \n", + "1450 34 34 9 2724 6493 1320.0 630.0 69.00000 \n", + "1451 34 34 9 2016 4835 664.0 379.0 43.00000 \n", + "1452 34 34 9 2178 5055 1068.0 602.0 35.00000 \n", + "1453 34 34 9 298 779 14195.0 429.0 4.00000 \n", + "1454 34 34 9 1068 2337 10469.0 1114.0 27.00000 \n", "\n", - " TOTEMP AGE0519 ... area_type HSENROLL COLLFTE \\\n", - "zone_id ... \n", - "1 27318 7 ... 0 0.00000 0.00000 \n", - "2 42078 19 ... 0 0.00000 0.00000 \n", - "3 2445 38 ... 0 0.00000 0.00000 \n", - "4 22434 20 ... 0 0.00000 0.00000 \n", - "5 15662 86 ... 0 0.00000 72.14684 \n", - "... ... ... ... ... ... ... \n", - "186 1760 1178 ... 3 0.00000 0.00000 \n", - "187 808 603 ... 3 0.00000 0.00000 \n", - "188 4502 1117 ... 2 3961.04761 17397.79102 \n", - "189 226 1057 ... 2 0.00000 0.00000 \n", - "190 1010 114 ... 3 0.00000 0.00000 \n", + " TOTEMP AGE0519 ... area_type HSENROLL COLLFTE COLLPTE \\\n", + "zone_id ... \n", + "1 27318 7 ... 0 0.0 0.00000 0.0 \n", + "2 42078 19 ... 0 0.0 0.00000 0.0 \n", + "3 2445 38 ... 0 0.0 0.00000 0.0 \n", + "4 22434 20 ... 0 0.0 0.00000 0.0 \n", + "5 15662 86 ... 0 0.0 72.14684 0.0 \n", + "... ... ... ... ... ... ... ... \n", + "1450 1046 1013 ... 4 0.0 0.00000 0.0 \n", + "1451 757 757 ... 4 0.0 0.00000 0.0 \n", + "1452 2110 789 ... 4 0.0 0.00000 0.0 \n", + "1453 922 88 ... 5 0.0 0.00000 0.0 \n", + "1454 607 418 ... 5 0.0 0.00000 0.0 \n", "\n", - " COLLPTE TOPOLOGY TERMINAL household_density \\\n", - "zone_id \n", - "1 0.00000 3 5.89564 2.875000 \n", - "2 0.00000 1 5.84871 5.195214 \n", - "3 0.00000 1 5.53231 80.470405 \n", - "4 0.00000 2 5.64330 7.947368 \n", - "5 0.00000 1 5.52555 38.187500 \n", - "... ... ... ... ... \n", - "186 0.00000 1 2.04173 14.860963 \n", - "187 0.00000 2 1.73676 11.841270 \n", - "188 11152.93652 1 2.28992 3.984127 \n", - "189 0.00000 1 2.88773 45.461538 \n", - "190 0.00000 1 2.60309 23.047619 \n", + " TOPOLOGY TERMINAL household_density employment_density \\\n", + "zone_id \n", + "1 3 5.89564 2.875000 1707.375000 \n", + "2 1 5.84871 5.195214 1631.374751 \n", + "3 1 5.53231 80.470405 736.891913 \n", + "4 2 5.64330 7.947368 1180.736842 \n", + "5 1 5.52555 38.187500 978.875000 \n", + "... ... ... ... ... \n", + "1450 1 1.12116 3.896996 1.496423 \n", + "1451 1 1.17116 4.777251 1.793839 \n", + "1452 1 1.17587 3.419152 3.312402 \n", + "1453 1 1.01972 0.688222 2.129330 \n", + "1454 1 0.95542 0.936021 0.531989 \n", "\n", - " employment_density density_index is_cbd \n", - "zone_id \n", - "1 1707.375000 2.870167 False \n", - "2 1631.374751 5.178722 False \n", - "3 736.891913 72.547987 False \n", - "4 1180.736842 7.894233 False \n", - "5 978.875000 36.753679 False \n", - "... ... ... ... \n", - "186 9.411765 5.762347 False \n", - "187 6.412698 4.159890 False \n", - "188 23.820106 3.413233 False \n", - "189 2.897436 2.723836 False \n", - "190 24.047619 11.768501 False \n", + " density_index is_cbd \n", + "zone_id \n", + "1 2.870167 False \n", + "2 5.178722 False \n", + "3 72.547987 False \n", + "4 7.894233 False \n", + "5 36.753679 False \n", + "... ... ... \n", + "1450 1.081235 False \n", + "1451 1.304140 False \n", + "1452 1.682465 False \n", + "1453 0.520115 False \n", + "1454 0.339203 False \n", "\n", - "[190 rows x 28 columns]" + "[1454 rows x 28 columns]" ] }, - "execution_count": 11, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -1925,7 +1648,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -2141,7 +1864,7 @@ "7 1 " ] }, - "execution_count": 12, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -2159,7 +1882,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -2270,7 +1993,7 @@ "othdiscr 0.252 0.212 0.272 0.165 0.000 0.098" ] }, - "execution_count": 13, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -2290,21 +2013,13 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 12, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "req_data does not request avail_ca or avail_co but it is set and being provided\n", - "req_data does not request avail_ca or avail_co but it is set and being provided\n" - ] - }, { "data": { "text/html": [ - "

Iteration 029 [Optimization terminated successfully]

" + "

Iteration 046 [Optimization terminated successfully]

" ], "text/plain": [ "" @@ -2316,7 +2031,7 @@ { "data": { "text/html": [ - "

Best LL = -13268.709190928732

" + "

Best LL = -85747.12036028807

" ], "text/plain": [ "" @@ -2347,13 +2062,22 @@ " \n", " \n", " value\n", + " best\n", " initvalue\n", - " nullvalue\n", " minimum\n", " maximum\n", + " nullvalue\n", " holdfast\n", - " note\n", - " best\n", + " \n", + " \n", + " param_name\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -2361,465 +2085,432 @@ " -999\n", " -999.000000\n", " -999.000000\n", - " -999.0\n", - " -999.0\n", - " -999.0\n", - " 1\n", - " \n", " -999.000000\n", + " -999.000000\n", + " -999.000000\n", + " 0.0\n", + " 1\n", " \n", " \n", " 0\n", " 0.000000\n", " 0.000000\n", - " 0.0\n", - " 0.0\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", " 0.0\n", " 1\n", - " \n", - " 0.000000\n", " \n", " \n", " 1\n", " 1.000000\n", " 1.000000\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1\n", - " \n", " 1.000000\n", + " 1.000000\n", + " 1.000000\n", + " 0.0\n", + " 1\n", " \n", " \n", " coef_eatout_dist_0_2\n", - " -0.767979\n", + " -0.959646\n", + " -0.959646\n", " -0.560900\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.767979\n", " \n", " \n", " coef_eatout_dist_2_5\n", - " -0.226448\n", + " -0.427890\n", + " -0.427890\n", " -0.319200\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.226448\n", " \n", " \n", " coef_eatout_dist_5_plus\n", - " -0.188137\n", + " -0.182199\n", + " -0.182199\n", " -0.123800\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.188137\n", " \n", " \n", " coef_escort_dist_0_2\n", - " 0.226691\n", + " -0.290871\n", + " -0.290871\n", " -0.149900\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.226691\n", " \n", " \n", " coef_escort_dist_2_5\n", - " -0.813494\n", + " -0.959038\n", + " -0.959038\n", " -0.867100\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.813494\n", " \n", " \n", " coef_escort_dist_5_plus\n", - " -0.255056\n", + " -0.264682\n", + " -0.264682\n", " -0.213700\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.255056\n", " \n", " \n", " coef_mode_logsum\n", - " 0.662937\n", + " 0.165346\n", + " 0.165346\n", " 0.675500\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.662937\n", " \n", " \n", " coef_othdiscr_dist_0_2\n", - " -0.203187\n", + " -0.424399\n", + " -0.424399\n", " -0.167700\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.203187\n", " \n", " \n", " coef_othdiscr_dist_2_5\n", - " -0.550945\n", + " -0.615669\n", + " -0.615669\n", " -0.495500\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.550945\n", " \n", " \n", " coef_othdiscr_dist_5_plus\n", - " -0.000141\n", + " -0.171387\n", + " -0.171387\n", " -0.119300\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.000141\n", " \n", " \n", " coef_othmaint_dist_2_5\n", - " -0.579932\n", + " -0.796780\n", + " -0.796780\n", " -0.605500\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.579932\n", " \n", " \n", " coef_othmaint_dist_5_plus\n", - " -0.229655\n", + " -0.156745\n", + " -0.156745\n", " -0.109300\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.229655\n", " \n", " \n", " coef_shopping_dist_2_5\n", - " -0.629792\n", + " -0.704553\n", + " -0.704553\n", " -0.565500\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.629792\n", " \n", " \n", " coef_shopping_dist_5_plus\n", - " -0.130649\n", + " -0.234821\n", + " -0.234821\n", " -0.183200\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.130649\n", " \n", " \n", " coef_social_dist_2_5\n", - " -0.245175\n", + " -0.464176\n", + " -0.464176\n", " -0.348500\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.245175\n", " \n", " \n", " coef_social_dist_5_plus\n", - " -0.190239\n", + " -0.176446\n", + " -0.176446\n", " -0.130600\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.190239\n", " \n", " \n", " eatout_HEREMPN\n", - " -0.946877\n", + " -1.601448\n", + " -1.601448\n", " -1.354796\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -0.946877\n", " \n", " \n", " eatout_RETEMPN\n", " -0.298406\n", " -0.298406\n", + " -0.298406\n", + " -0.298406\n", + " -0.298406\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 1\n", - " \n", - " -0.298406\n", " \n", " \n", " escort_AGE0519\n", - " -1.171241\n", + " -0.765963\n", + " -0.765963\n", " -0.765718\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -1.171241\n", " \n", " \n", " escort_HEREMPN\n", - " -2.450057\n", + " -1.996310\n", + " -1.996310\n", " -1.937942\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -2.450057\n", " \n", " \n", " escort_HSENROLL\n", - " -3.304440\n", - " -1.795767\n", + " -1.872611\n", + " -1.872611\n", + " -1.795768\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -3.304440\n", " \n", " \n", " escort_RETEMPN\n", " -1.491655\n", " -1.491655\n", + " -1.491655\n", + " -1.491655\n", + " -1.491655\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 1\n", - " \n", - " -1.491655\n", " \n", " \n", " othdiscr_HEREMPN\n", - " -1.584964\n", + " -1.342128\n", + " -1.342128\n", " -1.301953\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -1.584964\n", " \n", " \n", " othdiscr_HSENROLL\n", - " -2.466750\n", + " -2.287886\n", + " -2.287886\n", " -2.322788\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -2.466750\n", " \n", " \n", " othdiscr_OTHEMPN\n", - " -2.370292\n", + " -1.905661\n", + " -1.905661\n", " -1.801810\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -2.370292\n", " \n", " \n", " othdiscr_RETEMPN\n", - " -1.238181\n", + " -1.550175\n", + " -1.550175\n", " -1.551169\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -1.238181\n", " \n", " \n", " othdiscr_TOTHH\n", " -1.378326\n", " -1.378326\n", + " -1.378326\n", + " -1.378326\n", + " -1.378326\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 1\n", - " \n", - " -1.378326\n", " \n", " \n", " othmaint_HEREMPN\n", - " -0.668952\n", + " -0.689025\n", + " -0.689025\n", " -0.657780\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -0.668952\n", " \n", " \n", " othmaint_RETEMPN\n", " -0.729811\n", " -0.729811\n", + " -0.729811\n", + " -0.729811\n", + " -0.729811\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 1\n", - " \n", - " -0.729811\n", " \n", " \n", " shopping_RETEMPN\n", " 0.000000\n", " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 1\n", - " \n", - " 0.000000\n", " \n", " \n", " social_HEREMPN\n", - " -0.302843\n", + " -0.831065\n", + " -0.831065\n", " -0.738145\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -0.302843\n", " \n", " \n", " social_RETEMPN\n", " -0.650088\n", " -0.650088\n", + " -0.650088\n", + " -0.650088\n", + " -0.650088\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 1\n", - " \n", - " -0.650088\n", " \n", " \n", "\n", "" ], "text/plain": [ - " value initvalue nullvalue minimum \\\n", - "-999 -999.000000 -999.000000 -999.0 -999.0 \n", - "0 0.000000 0.000000 0.0 0.0 \n", - "1 1.000000 1.000000 1.0 1.0 \n", - "coef_eatout_dist_0_2 -0.767979 -0.560900 0.0 NaN \n", - "coef_eatout_dist_2_5 -0.226448 -0.319200 0.0 NaN \n", - "coef_eatout_dist_5_plus -0.188137 -0.123800 0.0 NaN \n", - "coef_escort_dist_0_2 0.226691 -0.149900 0.0 NaN \n", - "coef_escort_dist_2_5 -0.813494 -0.867100 0.0 NaN \n", - "coef_escort_dist_5_plus -0.255056 -0.213700 0.0 NaN \n", - "coef_mode_logsum 0.662937 0.675500 0.0 NaN \n", - "coef_othdiscr_dist_0_2 -0.203187 -0.167700 0.0 NaN \n", - "coef_othdiscr_dist_2_5 -0.550945 -0.495500 0.0 NaN \n", - "coef_othdiscr_dist_5_plus -0.000141 -0.119300 0.0 NaN \n", - "coef_othmaint_dist_2_5 -0.579932 -0.605500 0.0 NaN \n", - "coef_othmaint_dist_5_plus -0.229655 -0.109300 0.0 NaN \n", - "coef_shopping_dist_2_5 -0.629792 -0.565500 0.0 NaN \n", - "coef_shopping_dist_5_plus -0.130649 -0.183200 0.0 NaN \n", - "coef_social_dist_2_5 -0.245175 -0.348500 0.0 NaN \n", - "coef_social_dist_5_plus -0.190239 -0.130600 0.0 NaN \n", - "eatout_HEREMPN -0.946877 -1.354796 0.0 -6.0 \n", - "eatout_RETEMPN -0.298406 -0.298406 0.0 -6.0 \n", - "escort_AGE0519 -1.171241 -0.765718 0.0 -6.0 \n", - "escort_HEREMPN -2.450057 -1.937942 0.0 -6.0 \n", - "escort_HSENROLL -3.304440 -1.795767 0.0 -6.0 \n", - "escort_RETEMPN -1.491655 -1.491655 0.0 -6.0 \n", - "othdiscr_HEREMPN -1.584964 -1.301953 0.0 -6.0 \n", - "othdiscr_HSENROLL -2.466750 -2.322788 0.0 -6.0 \n", - "othdiscr_OTHEMPN -2.370292 -1.801810 0.0 -6.0 \n", - "othdiscr_RETEMPN -1.238181 -1.551169 0.0 -6.0 \n", - "othdiscr_TOTHH -1.378326 -1.378326 0.0 -6.0 \n", - "othmaint_HEREMPN -0.668952 -0.657780 0.0 -6.0 \n", - "othmaint_RETEMPN -0.729811 -0.729811 0.0 -6.0 \n", - "shopping_RETEMPN 0.000000 0.000000 0.0 -6.0 \n", - "social_HEREMPN -0.302843 -0.738145 0.0 -6.0 \n", - "social_RETEMPN -0.650088 -0.650088 0.0 -6.0 \n", + " value best initvalue minimum \\\n", + "param_name \n", + "-999 -999.000000 -999.000000 -999.000000 -999.000000 \n", + "0 0.000000 0.000000 0.000000 0.000000 \n", + "1 1.000000 1.000000 1.000000 1.000000 \n", + "coef_eatout_dist_0_2 -0.959646 -0.959646 -0.560900 -25.000000 \n", + "coef_eatout_dist_2_5 -0.427890 -0.427890 -0.319200 -25.000000 \n", + "coef_eatout_dist_5_plus -0.182199 -0.182199 -0.123800 -25.000000 \n", + "coef_escort_dist_0_2 -0.290871 -0.290871 -0.149900 -25.000000 \n", + "coef_escort_dist_2_5 -0.959038 -0.959038 -0.867100 -25.000000 \n", + "coef_escort_dist_5_plus -0.264682 -0.264682 -0.213700 -25.000000 \n", + "coef_mode_logsum 0.165346 0.165346 0.675500 -25.000000 \n", + "coef_othdiscr_dist_0_2 -0.424399 -0.424399 -0.167700 -25.000000 \n", + "coef_othdiscr_dist_2_5 -0.615669 -0.615669 -0.495500 -25.000000 \n", + "coef_othdiscr_dist_5_plus -0.171387 -0.171387 -0.119300 -25.000000 \n", + "coef_othmaint_dist_2_5 -0.796780 -0.796780 -0.605500 -25.000000 \n", + "coef_othmaint_dist_5_plus -0.156745 -0.156745 -0.109300 -25.000000 \n", + "coef_shopping_dist_2_5 -0.704553 -0.704553 -0.565500 -25.000000 \n", + "coef_shopping_dist_5_plus -0.234821 -0.234821 -0.183200 -25.000000 \n", + "coef_social_dist_2_5 -0.464176 -0.464176 -0.348500 -25.000000 \n", + "coef_social_dist_5_plus -0.176446 -0.176446 -0.130600 -25.000000 \n", + "eatout_HEREMPN -1.601448 -1.601448 -1.354796 -6.000000 \n", + "eatout_RETEMPN -0.298406 -0.298406 -0.298406 -0.298406 \n", + "escort_AGE0519 -0.765963 -0.765963 -0.765718 -6.000000 \n", + "escort_HEREMPN -1.996310 -1.996310 -1.937942 -6.000000 \n", + "escort_HSENROLL -1.872611 -1.872611 -1.795768 -6.000000 \n", + "escort_RETEMPN -1.491655 -1.491655 -1.491655 -1.491655 \n", + "othdiscr_HEREMPN -1.342128 -1.342128 -1.301953 -6.000000 \n", + "othdiscr_HSENROLL -2.287886 -2.287886 -2.322788 -6.000000 \n", + "othdiscr_OTHEMPN -1.905661 -1.905661 -1.801810 -6.000000 \n", + "othdiscr_RETEMPN -1.550175 -1.550175 -1.551169 -6.000000 \n", + "othdiscr_TOTHH -1.378326 -1.378326 -1.378326 -1.378326 \n", + "othmaint_HEREMPN -0.689025 -0.689025 -0.657780 -6.000000 \n", + "othmaint_RETEMPN -0.729811 -0.729811 -0.729811 -0.729811 \n", + "shopping_RETEMPN 0.000000 0.000000 0.000000 0.000000 \n", + "social_HEREMPN -0.831065 -0.831065 -0.738145 -6.000000 \n", + "social_RETEMPN -0.650088 -0.650088 -0.650088 -0.650088 \n", "\n", - " maximum holdfast note best \n", - "-999 -999.0 1 -999.000000 \n", - "0 0.0 1 0.000000 \n", - "1 1.0 1 1.000000 \n", - "coef_eatout_dist_0_2 NaN 0 -0.767979 \n", - "coef_eatout_dist_2_5 NaN 0 -0.226448 \n", - "coef_eatout_dist_5_plus NaN 0 -0.188137 \n", - "coef_escort_dist_0_2 NaN 0 0.226691 \n", - "coef_escort_dist_2_5 NaN 0 -0.813494 \n", - "coef_escort_dist_5_plus NaN 0 -0.255056 \n", - "coef_mode_logsum NaN 0 0.662937 \n", - "coef_othdiscr_dist_0_2 NaN 0 -0.203187 \n", - "coef_othdiscr_dist_2_5 NaN 0 -0.550945 \n", - "coef_othdiscr_dist_5_plus NaN 0 -0.000141 \n", - "coef_othmaint_dist_2_5 NaN 0 -0.579932 \n", - "coef_othmaint_dist_5_plus NaN 0 -0.229655 \n", - "coef_shopping_dist_2_5 NaN 0 -0.629792 \n", - "coef_shopping_dist_5_plus NaN 0 -0.130649 \n", - "coef_social_dist_2_5 NaN 0 -0.245175 \n", - "coef_social_dist_5_plus NaN 0 -0.190239 \n", - "eatout_HEREMPN 6.0 0 -0.946877 \n", - "eatout_RETEMPN 6.0 1 -0.298406 \n", - "escort_AGE0519 6.0 0 -1.171241 \n", - "escort_HEREMPN 6.0 0 -2.450057 \n", - "escort_HSENROLL 6.0 0 -3.304440 \n", - "escort_RETEMPN 6.0 1 -1.491655 \n", - "othdiscr_HEREMPN 6.0 0 -1.584964 \n", - "othdiscr_HSENROLL 6.0 0 -2.466750 \n", - "othdiscr_OTHEMPN 6.0 0 -2.370292 \n", - "othdiscr_RETEMPN 6.0 0 -1.238181 \n", - "othdiscr_TOTHH 6.0 1 -1.378326 \n", - "othmaint_HEREMPN 6.0 0 -0.668952 \n", - "othmaint_RETEMPN 6.0 1 -0.729811 \n", - "shopping_RETEMPN 6.0 1 0.000000 \n", - "social_HEREMPN 6.0 0 -0.302843 \n", - "social_RETEMPN 6.0 1 -0.650088 " + " maximum nullvalue holdfast \n", + "param_name \n", + "-999 -999.000000 0.0 1 \n", + "0 0.000000 0.0 1 \n", + "1 1.000000 0.0 1 \n", + "coef_eatout_dist_0_2 25.000000 0.0 0 \n", + "coef_eatout_dist_2_5 25.000000 0.0 0 \n", + "coef_eatout_dist_5_plus 25.000000 0.0 0 \n", + "coef_escort_dist_0_2 25.000000 0.0 0 \n", + "coef_escort_dist_2_5 25.000000 0.0 0 \n", + "coef_escort_dist_5_plus 25.000000 0.0 0 \n", + "coef_mode_logsum 25.000000 0.0 0 \n", + "coef_othdiscr_dist_0_2 25.000000 0.0 0 \n", + "coef_othdiscr_dist_2_5 25.000000 0.0 0 \n", + "coef_othdiscr_dist_5_plus 25.000000 0.0 0 \n", + "coef_othmaint_dist_2_5 25.000000 0.0 0 \n", + "coef_othmaint_dist_5_plus 25.000000 0.0 0 \n", + "coef_shopping_dist_2_5 25.000000 0.0 0 \n", + "coef_shopping_dist_5_plus 25.000000 0.0 0 \n", + "coef_social_dist_2_5 25.000000 0.0 0 \n", + "coef_social_dist_5_plus 25.000000 0.0 0 \n", + "eatout_HEREMPN 6.000000 0.0 0 \n", + "eatout_RETEMPN -0.298406 0.0 1 \n", + "escort_AGE0519 6.000000 0.0 0 \n", + "escort_HEREMPN 6.000000 0.0 0 \n", + "escort_HSENROLL 6.000000 0.0 0 \n", + "escort_RETEMPN -1.491655 0.0 1 \n", + "othdiscr_HEREMPN 6.000000 0.0 0 \n", + "othdiscr_HSENROLL 6.000000 0.0 0 \n", + "othdiscr_OTHEMPN 6.000000 0.0 0 \n", + "othdiscr_RETEMPN 6.000000 0.0 0 \n", + "othdiscr_TOTHH -1.378326 0.0 1 \n", + "othmaint_HEREMPN 6.000000 0.0 0 \n", + "othmaint_RETEMPN -0.729811 0.0 1 \n", + "shopping_RETEMPN 0.000000 0.0 1 \n", + "social_HEREMPN 6.000000 0.0 0 \n", + "social_RETEMPN -0.650088 0.0 1 " ] }, "metadata": {}, @@ -2850,71 +2541,71 @@ " \n", " \n", " coef_eatout_dist_0_2\n", - " -0.767979\n", + " -0.959646\n", " \n", " \n", " coef_eatout_dist_2_5\n", - " -0.226448\n", + " -0.427890\n", " \n", " \n", " coef_eatout_dist_5_plus\n", - " -0.188137\n", + " -0.182199\n", " \n", " \n", " coef_escort_dist_0_2\n", - " 0.226691\n", + " -0.290871\n", " \n", " \n", " coef_escort_dist_2_5\n", - " -0.813494\n", + " -0.959038\n", " \n", " \n", " coef_escort_dist_5_plus\n", - " -0.255056\n", + " -0.264682\n", " \n", " \n", " coef_mode_logsum\n", - " 0.662937\n", + " 0.165346\n", " \n", " \n", " coef_othdiscr_dist_0_2\n", - " -0.203187\n", + " -0.424399\n", " \n", " \n", " coef_othdiscr_dist_2_5\n", - " -0.550945\n", + " -0.615669\n", " \n", " \n", " coef_othdiscr_dist_5_plus\n", - " -0.000141\n", + " -0.171387\n", " \n", " \n", " coef_othmaint_dist_2_5\n", - " -0.579932\n", + " -0.796780\n", " \n", " \n", " coef_othmaint_dist_5_plus\n", - " -0.229655\n", + " -0.156745\n", " \n", " \n", " coef_shopping_dist_2_5\n", - " -0.629792\n", + " -0.704553\n", " \n", " \n", " coef_shopping_dist_5_plus\n", - " -0.130649\n", + " -0.234821\n", " \n", " \n", " coef_social_dist_2_5\n", - " -0.245175\n", + " -0.464176\n", " \n", " \n", " coef_social_dist_5_plus\n", - " -0.190239\n", + " -0.176446\n", " \n", " \n", " eatout_HEREMPN\n", - " -0.946877\n", + " -1.601448\n", " \n", " \n", " eatout_RETEMPN\n", @@ -2922,15 +2613,15 @@ " \n", " \n", " escort_AGE0519\n", - " -1.171241\n", + " -0.765963\n", " \n", " \n", " escort_HEREMPN\n", - " -2.450057\n", + " -1.996310\n", " \n", " \n", " escort_HSENROLL\n", - " -3.304440\n", + " -1.872611\n", " \n", " \n", " escort_RETEMPN\n", @@ -2938,19 +2629,19 @@ " \n", " \n", " othdiscr_HEREMPN\n", - " -1.584964\n", + " -1.342128\n", " \n", " \n", " othdiscr_HSENROLL\n", - " -2.466750\n", + " -2.287886\n", " \n", " \n", " othdiscr_OTHEMPN\n", - " -2.370292\n", + " -1.905661\n", " \n", " \n", " othdiscr_RETEMPN\n", - " -1.238181\n", + " -1.550175\n", " \n", " \n", " othdiscr_TOTHH\n", @@ -2958,7 +2649,7 @@ " \n", " \n", " othmaint_HEREMPN\n", - " -0.668952\n", + " -0.689025\n", " \n", " \n", " othmaint_RETEMPN\n", @@ -2970,14 +2661,14 @@ " \n", " \n", " social_HEREMPN\n", - " -0.302843\n", + " -0.831065\n", " \n", " \n", " social_RETEMPN\n", " -0.650088\n", " \n", " \n", - "loglike-13268.709190928732d_loglike\n", + "
logloss2.770862804895239d_logloss\n", " \n", " \n", " \n", @@ -2999,71 +2690,71 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3071,15 +2762,15 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3087,19 +2778,19 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3107,7 +2798,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3119,109 +2810,109 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - "
coef_eatout_dist_0_20.0003340.000068
coef_eatout_dist_2_50.0006060.000060
coef_eatout_dist_5_plus-0.0012540.000251
coef_escort_dist_0_20.0000040.000236
coef_escort_dist_2_5-0.001135-0.000043
coef_escort_dist_5_plus-0.0005190.000007
coef_mode_logsum0.000531-0.000027
coef_othdiscr_dist_0_2-0.001077-0.000193
coef_othdiscr_dist_2_5-0.001877-0.000067
coef_othdiscr_dist_5_plus-0.0013870.000015
coef_othmaint_dist_2_5-0.000112-0.000110
coef_othmaint_dist_5_plus-0.000787-0.000227
coef_shopping_dist_2_5-0.0002320.000147
coef_shopping_dist_5_plus-0.0007950.000482
coef_social_dist_2_5-0.000397-0.000027
coef_social_dist_5_plus0.000937-0.000062
eatout_HEREMPN-0.0002880.000078
eatout_RETEMPN
escort_AGE0519-0.000725-0.000137
escort_HEREMPN0.000389-0.000064
escort_HSENROLL-0.000033-0.000067
escort_RETEMPN
othdiscr_HEREMPN0.0013260.000065
othdiscr_HSENROLL0.0000250.000034
othdiscr_OTHEMPN0.000044-0.000049
othdiscr_RETEMPN-0.0002870.000009
othdiscr_TOTHH
othmaint_HEREMPN0.000035-0.000002
othmaint_RETEMPN
social_HEREMPN-0.000091-0.000084
social_RETEMPN0.000000
nit29nfev79njev29status0message'Optimization terminated successfully'successTrueelapsed_time0:00:07.087910method'SLSQP'n_cases2581iteration_number29logloss5.140917935268784" + "nit46nfev46njev46status0message'Optimization terminated successfully'successTrueelapsed_time0:00:06.714015method'slsqp'n_cases30946iteration_number46loglike-85747.12036028807" ], "text/plain": [ "┣ x: -999 -999.000000\n", "┃ 0 0.000000\n", "┃ 1 1.000000\n", - "┃ coef_eatout_dist_0_2 -0.767979\n", - "┃ coef_eatout_dist_2_5 -0.226448\n", - "┃ coef_eatout_dist_5_plus -0.188137\n", - "┃ coef_escort_dist_0_2 0.226691\n", - "┃ coef_escort_dist_2_5 -0.813494\n", - "┃ coef_escort_dist_5_plus -0.255056\n", - "┃ coef_mode_logsum 0.662937\n", - "┃ coef_othdiscr_dist_0_2 -0.203187\n", - "┃ coef_othdiscr_dist_2_5 -0.550945\n", - "┃ coef_othdiscr_dist_5_plus -0.000141\n", - "┃ coef_othmaint_dist_2_5 -0.579932\n", - "┃ coef_othmaint_dist_5_plus -0.229655\n", - "┃ coef_shopping_dist_2_5 -0.629792\n", - "┃ coef_shopping_dist_5_plus -0.130649\n", - "┃ coef_social_dist_2_5 -0.245175\n", - "┃ coef_social_dist_5_plus -0.190239\n", - "┃ eatout_HEREMPN -0.946877\n", + "┃ coef_eatout_dist_0_2 -0.959646\n", + "┃ coef_eatout_dist_2_5 -0.427890\n", + "┃ coef_eatout_dist_5_plus -0.182199\n", + "┃ coef_escort_dist_0_2 -0.290871\n", + "┃ coef_escort_dist_2_5 -0.959038\n", + "┃ coef_escort_dist_5_plus -0.264682\n", + "┃ coef_mode_logsum 0.165346\n", + "┃ coef_othdiscr_dist_0_2 -0.424399\n", + "┃ coef_othdiscr_dist_2_5 -0.615669\n", + "┃ coef_othdiscr_dist_5_plus -0.171387\n", + "┃ coef_othmaint_dist_2_5 -0.796780\n", + "┃ coef_othmaint_dist_5_plus -0.156745\n", + "┃ coef_shopping_dist_2_5 -0.704553\n", + "┃ coef_shopping_dist_5_plus -0.234821\n", + "┃ coef_social_dist_2_5 -0.464176\n", + "┃ coef_social_dist_5_plus -0.176446\n", + "┃ eatout_HEREMPN -1.601448\n", "┃ eatout_RETEMPN -0.298406\n", - "┃ escort_AGE0519 -1.171241\n", - "┃ escort_HEREMPN -2.450057\n", - "┃ escort_HSENROLL -3.304440\n", + "┃ escort_AGE0519 -0.765963\n", + "┃ escort_HEREMPN -1.996310\n", + "┃ escort_HSENROLL -1.872611\n", "┃ escort_RETEMPN -1.491655\n", - "┃ othdiscr_HEREMPN -1.584964\n", - "┃ othdiscr_HSENROLL -2.466750\n", - "┃ othdiscr_OTHEMPN -2.370292\n", - "┃ othdiscr_RETEMPN -1.238181\n", + "┃ othdiscr_HEREMPN -1.342128\n", + "┃ othdiscr_HSENROLL -2.287886\n", + "┃ othdiscr_OTHEMPN -1.905661\n", + "┃ othdiscr_RETEMPN -1.550175\n", "┃ othdiscr_TOTHH -1.378326\n", - "┃ othmaint_HEREMPN -0.668952\n", + "┃ othmaint_HEREMPN -0.689025\n", "┃ othmaint_RETEMPN -0.729811\n", "┃ shopping_RETEMPN 0.000000\n", - "┃ social_HEREMPN -0.302843\n", + "┃ social_HEREMPN -0.831065\n", "┃ social_RETEMPN -0.650088\n", "┃ dtype: float64\n", - "┣ loglike: -13268.709190928732\n", - "┣ d_loglike: -999 0.000000\n", + "┣ logloss: 2.770862804895239\n", + "┣ d_logloss: -999 0.000000\n", "┃ 0 0.000000\n", "┃ 1 0.000000\n", - "┃ coef_eatout_dist_0_2 0.000334\n", - "┃ coef_eatout_dist_2_5 0.000606\n", - "┃ coef_eatout_dist_5_plus -0.001254\n", - "┃ coef_escort_dist_0_2 0.000004\n", - "┃ coef_escort_dist_2_5 -0.001135\n", - "┃ coef_escort_dist_5_plus -0.000519\n", - "┃ coef_mode_logsum 0.000531\n", - "┃ coef_othdiscr_dist_0_2 -0.001077\n", - "┃ coef_othdiscr_dist_2_5 -0.001877\n", - "┃ coef_othdiscr_dist_5_plus -0.001387\n", - "┃ coef_othmaint_dist_2_5 -0.000112\n", - "┃ coef_othmaint_dist_5_plus -0.000787\n", - "┃ coef_shopping_dist_2_5 -0.000232\n", - "┃ coef_shopping_dist_5_plus -0.000795\n", - "┃ coef_social_dist_2_5 -0.000397\n", - "┃ coef_social_dist_5_plus 0.000937\n", - "┃ eatout_HEREMPN -0.000288\n", + "┃ coef_eatout_dist_0_2 0.000068\n", + "┃ coef_eatout_dist_2_5 0.000060\n", + "┃ coef_eatout_dist_5_plus 0.000251\n", + "┃ coef_escort_dist_0_2 0.000236\n", + "┃ coef_escort_dist_2_5 -0.000043\n", + "┃ coef_escort_dist_5_plus 0.000007\n", + "┃ coef_mode_logsum -0.000027\n", + "┃ coef_othdiscr_dist_0_2 -0.000193\n", + "┃ coef_othdiscr_dist_2_5 -0.000067\n", + "┃ coef_othdiscr_dist_5_plus 0.000015\n", + "┃ coef_othmaint_dist_2_5 -0.000110\n", + "┃ coef_othmaint_dist_5_plus -0.000227\n", + "┃ coef_shopping_dist_2_5 0.000147\n", + "┃ coef_shopping_dist_5_plus 0.000482\n", + "┃ coef_social_dist_2_5 -0.000027\n", + "┃ coef_social_dist_5_plus -0.000062\n", + "┃ eatout_HEREMPN 0.000078\n", "┃ eatout_RETEMPN 0.000000\n", - "┃ escort_AGE0519 -0.000725\n", - "┃ escort_HEREMPN 0.000389\n", - "┃ escort_HSENROLL -0.000033\n", + "┃ escort_AGE0519 -0.000137\n", + "┃ escort_HEREMPN -0.000064\n", + "┃ escort_HSENROLL -0.000067\n", "┃ escort_RETEMPN 0.000000\n", - "┃ othdiscr_HEREMPN 0.001326\n", - "┃ othdiscr_HSENROLL 0.000025\n", - "┃ othdiscr_OTHEMPN 0.000044\n", - "┃ othdiscr_RETEMPN -0.000287\n", + "┃ othdiscr_HEREMPN 0.000065\n", + "┃ othdiscr_HSENROLL 0.000034\n", + "┃ othdiscr_OTHEMPN -0.000049\n", + "┃ othdiscr_RETEMPN 0.000009\n", "┃ othdiscr_TOTHH 0.000000\n", - "┃ othmaint_HEREMPN 0.000035\n", + "┃ othmaint_HEREMPN -0.000002\n", "┃ othmaint_RETEMPN 0.000000\n", "┃ shopping_RETEMPN 0.000000\n", - "┃ social_HEREMPN -0.000091\n", + "┃ social_HEREMPN -0.000084\n", "┃ social_RETEMPN 0.000000\n", "┃ dtype: float64\n", - "┣ nit: 29\n", - "┣ nfev: 79\n", - "┣ njev: 29\n", + "┣ nit: 46\n", + "┣ nfev: 46\n", + "┣ njev: 46\n", "┣ status: 0\n", "┣ message: 'Optimization terminated successfully'\n", "┣ success: True\n", - "┣ elapsed_time: datetime.timedelta(seconds=7, microseconds=87910)\n", - "┣ method: 'SLSQP'\n", - "┣ n_cases: 2581\n", - "┣ iteration_number: 29\n", - "┣ logloss: 5.140917935268784" + "┣ elapsed_time: datetime.timedelta(seconds=6, microseconds=714015)\n", + "┣ method: 'slsqp'\n", + "┣ n_cases: 30946\n", + "┣ iteration_number: 46\n", + "┣ loglike: -85747.12036028807" ] }, - "execution_count": 14, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "model.estimate(method='SLSQP')" + "model.estimate(maxiter=900)" ] }, { @@ -3233,309 +2924,333 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Value Std Err t Stat Signif Null Value
-999-999. 0.00 NA-999.00
0 0.00 0.00 NA 0.00
1 1.00 0.00 NA 1.00
coef_eatout_dist_0_2-0.768 0.138-5.58*** 0.00
coef_eatout_dist_2_5-0.226 0.0689-3.29** 0.00
coef_eatout_dist_5_plus-0.188 0.105-1.80 0.00
coef_escort_dist_0_2 0.227 0.197 1.15 0.00
coef_escort_dist_2_5-0.813 0.0600-13.57*** 0.00
coef_escort_dist_5_plus-0.255 0.0751-3.39*** 0.00
coef_mode_logsum 0.663 0.0562 11.80*** 0.00
coef_othdiscr_dist_0_2-0.203 0.127-1.61 0.00
coef_othdiscr_dist_2_5-0.551 0.0530-10.39*** 0.00
coef_othdiscr_dist_5_plus-0.000141 0.0704-0.00 0.00
coef_othmaint_dist_2_5-0.580 0.0552-10.51*** 0.00
coef_othmaint_dist_5_plus-0.230 0.0903-2.54* 0.00
coef_shopping_dist_2_5-0.630 0.0445-14.16*** 0.00
coef_shopping_dist_5_plus-0.131 0.0623-2.10* 0.00
coef_social_dist_2_5-0.245 0.0817-3.00** 0.00
coef_social_dist_5_plus-0.190 0.129-1.48 0.00
eatout_HEREMPN-0.947 0.265-3.57*** 0.00
eatout_RETEMPN-0.298 0.00 NA 0.00
escort_AGE0519-1.17 0.413-2.84** 0.00
escort_HEREMPN-2.45 0.502-4.88*** 0.00
escort_HSENROLL-3.30 1.25-2.64** 0.00
escort_RETEMPN-1.49 0.00 NA 0.00
othdiscr_HEREMPN-1.58 0.284-5.58*** 0.00
othdiscr_HSENROLL-2.47 0.962-2.56* 0.00
othdiscr_OTHEMPN-2.37 0.595-3.98*** 0.00
othdiscr_RETEMPN-1.24 0.836-1.48 0.00
othdiscr_TOTHH-1.38 0.00 NA 0.00
othmaint_HEREMPN-0.669 0.275-2.44* 0.00
othmaint_RETEMPN-0.730 0.00 NA 0.00
shopping_RETEMPN 0.00 0.00 NA 0.00
social_HEREMPN-0.303 0.458-0.66 0.00
social_RETEMPN-0.650 0.00 NA 0.00
" + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ValueStd Errt StatSignifNull Value
Parameter     
-999-999. 0.00 NA 0.00
0 0.00 0.00 NA 0.00
1 1.00 0.00 NA 0.00
coef_eatout_dist_0_2-0.960 0.0437-21.97*** 0.00
coef_eatout_dist_2_5-0.428 0.0207-20.70*** 0.00
coef_eatout_dist_5_plus-0.182 0.00484-37.68*** 0.00
coef_escort_dist_0_2-0.291 0.0329-8.85*** 0.00
coef_escort_dist_2_5-0.959 0.0161-59.53*** 0.00
coef_escort_dist_5_plus-0.265 0.00711-37.23*** 0.00
coef_mode_logsum 0.165 0.0124 13.36*** 0.00
coef_othdiscr_dist_0_2-0.424 0.0382-11.12*** 0.00
coef_othdiscr_dist_2_5-0.616 0.0146-42.26*** 0.00
coef_othdiscr_dist_5_plus-0.171 0.00349-49.12*** 0.00
coef_othmaint_dist_2_5-0.797 0.0158-50.41*** 0.00
coef_othmaint_dist_5_plus-0.157 0.00396-39.57*** 0.00
coef_shopping_dist_2_5-0.705 0.0120-58.52*** 0.00
coef_shopping_dist_5_plus-0.235 0.00446-52.69*** 0.00
coef_social_dist_2_5-0.464 0.0245-18.97*** 0.00
coef_social_dist_5_plus-0.176 0.00583-30.29*** 0.00
eatout_HEREMPN-1.60 0.0888-18.04*** 0.00
eatout_RETEMPN-0.298 0.00 NA 0.00
escort_AGE0519-0.766 0.185-4.15*** 0.00
escort_HEREMPN-2.00 0.229-8.71*** 0.00
escort_HSENROLL-1.87 0.200-9.36*** 0.00
escort_RETEMPN-1.49 0.00 NA 0.00
othdiscr_HEREMPN-1.34 0.0798-16.83*** 0.00
othdiscr_HSENROLL-2.29 0.182-12.56*** 0.00
othdiscr_OTHEMPN-1.91 0.128-14.93*** 0.00
othdiscr_RETEMPN-1.55 0.240-6.46*** 0.00
othdiscr_TOTHH-1.38 0.00 NA 0.00
othmaint_HEREMPN-0.689 0.0969-7.11*** 0.00
othmaint_RETEMPN-0.730 0.00 NA 0.00
shopping_RETEMPN 0.00 0.00 NA 0.00
social_HEREMPN-0.831 0.133-6.25*** 0.00
social_RETEMPN-0.650 0.00 NA 0.00
\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 15, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -3556,7 +3271,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ @@ -3582,7 +3297,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ @@ -3591,7 +3306,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ @@ -3610,7 +3325,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -3767,14 +3482,14 @@ " escort\n", " non_mandatory\n", " 0.000000\n", - " 0.341950\n", + " 0.229722\n", " 0.000000\n", - " 0.131140\n", + " 0.138687\n", " 0.000000\n", " 0.000000\n", " 0.000000\n", - " 0.471104\n", - " 0.055806\n", + " 0.474643\n", + " 0.156948\n", " 0.000000\n", " 0.000000\n", " \n", @@ -3799,9 +3514,9 @@ " eatout\n", " non_mandatory\n", " 0.000000\n", - " 0.656666\n", + " 0.786346\n", " 0.000000\n", - " 0.343334\n", + " 0.213654\n", " 0.000000\n", " 0.000000\n", " 0.000000\n", @@ -3815,9 +3530,9 @@ " othmaint\n", " non_mandatory\n", " 0.000000\n", - " 0.484790\n", + " 0.489805\n", " 0.000000\n", - " 0.515210\n", + " 0.510195\n", " 0.000000\n", " 0.000000\n", " 0.000000\n", @@ -3831,9 +3546,9 @@ " social\n", " non_mandatory\n", " 0.000000\n", - " 0.414051\n", + " 0.545121\n", " 0.000000\n", - " 0.585949\n", + " 0.454879\n", " 0.000000\n", " 0.000000\n", " 0.000000\n", @@ -3846,15 +3561,15 @@ " 12\n", " othdiscr\n", " non_mandatory\n", - " 0.272379\n", - " 0.313357\n", + " 0.258275\n", + " 0.217495\n", " 0.000000\n", - " 0.221530\n", - " 0.101011\n", + " 0.267795\n", + " 0.152428\n", " 0.000000\n", " 0.000000\n", " 0.000000\n", - " 0.091723\n", + " 0.104008\n", " 0.000000\n", " 0.000000\n", " \n", @@ -4015,12 +3730,12 @@ "4 university school 0.000000 0.000000 0.000000 0.000000 \n", "5 gradeschool school 0.000000 0.000000 0.000000 0.000000 \n", "6 highschool school 0.000000 0.000000 0.000000 0.000000 \n", - "7 escort non_mandatory 0.000000 0.341950 0.000000 0.131140 \n", + "7 escort non_mandatory 0.000000 0.229722 0.000000 0.138687 \n", "8 shopping non_mandatory 0.000000 1.000000 0.000000 0.000000 \n", - "9 eatout non_mandatory 0.000000 0.656666 0.000000 0.343334 \n", - "10 othmaint non_mandatory 0.000000 0.484790 0.000000 0.515210 \n", - "11 social non_mandatory 0.000000 0.414051 0.000000 0.585949 \n", - "12 othdiscr non_mandatory 0.272379 0.313357 0.000000 0.221530 \n", + "9 eatout non_mandatory 0.000000 0.786346 0.000000 0.213654 \n", + "10 othmaint non_mandatory 0.000000 0.489805 0.000000 0.510195 \n", + "11 social non_mandatory 0.000000 0.545121 0.000000 0.454879 \n", + "12 othdiscr non_mandatory 0.258275 0.217495 0.000000 0.267795 \n", "13 atwork atwork 0.000000 0.742000 0.000000 0.258000 \n", "14 work trip 0.000000 0.166667 0.166667 0.166667 \n", "15 escort trip 0.001000 0.225000 0.000000 0.144000 \n", @@ -4039,12 +3754,12 @@ "4 0.000000 0.000000 0.000000 0.000000 0.000000 0.592000 0.408000 \n", "5 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 \n", "6 0.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 \n", - "7 0.000000 0.000000 0.000000 0.471104 0.055806 0.000000 0.000000 \n", + "7 0.000000 0.000000 0.000000 0.474643 0.156948 0.000000 0.000000 \n", "8 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n", "9 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n", "10 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n", "11 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n", - "12 0.101011 0.000000 0.000000 0.000000 0.091723 0.000000 0.000000 \n", + "12 0.152428 0.000000 0.000000 0.000000 0.104008 0.000000 0.000000 \n", "13 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n", "14 0.166667 0.166667 0.166667 0.000000 0.000000 0.000000 0.000000 \n", "15 0.000000 0.000000 0.000000 0.464000 0.166000 0.000000 0.000000 \n", @@ -4056,7 +3771,7 @@ "21 0.000000 0.000000 0.000000 0.000000 0.000000 0.591409 0.407592 " ] }, - "execution_count": 19, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -4085,7 +3800,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 18, "metadata": {}, "outputs": [], "source": [ @@ -4113,7 +3828,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -4146,19 +3861,19 @@ " \n", " 0\n", " coef_mode_logsum\n", - " 0.662937\n", + " 0.165346\n", " F\n", " \n", " \n", " 1\n", " coef_escort_dist_0_2\n", - " 0.226691\n", + " -0.290871\n", " F\n", " \n", " \n", " 2\n", " coef_eatout_dist_0_2\n", - " -0.767979\n", + " -0.959646\n", " F\n", " \n", " \n", @@ -4170,79 +3885,79 @@ " \n", " 4\n", " coef_othdiscr_dist_0_2\n", - " -0.203187\n", + " -0.424399\n", " F\n", " \n", " \n", " 5\n", " coef_escort_dist_2_5\n", - " -0.813494\n", + " -0.959038\n", " F\n", " \n", " \n", " 6\n", " coef_shopping_dist_2_5\n", - " -0.629792\n", + " -0.704553\n", " F\n", " \n", " \n", " 7\n", " coef_eatout_dist_2_5\n", - " -0.226448\n", + " -0.427890\n", " F\n", " \n", " \n", " 8\n", " coef_othmaint_dist_2_5\n", - " -0.579932\n", + " -0.796780\n", " F\n", " \n", " \n", " 9\n", " coef_social_dist_2_5\n", - " -0.245175\n", + " -0.464176\n", " F\n", " \n", " \n", " 10\n", " coef_othdiscr_dist_2_5\n", - " -0.550945\n", + " -0.615669\n", " F\n", " \n", " \n", " 11\n", " coef_escort_dist_5_plus\n", - " -0.255056\n", + " -0.264682\n", " F\n", " \n", " \n", " 12\n", " coef_shopping_dist_5_plus\n", - " -0.130649\n", + " -0.234821\n", " F\n", " \n", " \n", " 13\n", " coef_eatout_dist_5_plus\n", - " -0.188137\n", + " -0.182199\n", " F\n", " \n", " \n", " 14\n", " coef_othmaint_dist_5_plus\n", - " -0.229655\n", + " -0.156745\n", " F\n", " \n", " \n", " 15\n", " coef_social_dist_5_plus\n", - " -0.190239\n", + " -0.176446\n", " F\n", " \n", " \n", " 16\n", " coef_othdiscr_dist_5_plus\n", - " -0.000141\n", + " -0.171387\n", " F\n", " \n", " \n", @@ -4251,26 +3966,26 @@ ], "text/plain": [ " coefficient_name value constrain\n", - "0 coef_mode_logsum 0.662937 F\n", - "1 coef_escort_dist_0_2 0.226691 F\n", - "2 coef_eatout_dist_0_2 -0.767979 F\n", + "0 coef_mode_logsum 0.165346 F\n", + "1 coef_escort_dist_0_2 -0.290871 F\n", + "2 coef_eatout_dist_0_2 -0.959646 F\n", "3 coef_eatout_social_0_2 -0.560900 F\n", - "4 coef_othdiscr_dist_0_2 -0.203187 F\n", - "5 coef_escort_dist_2_5 -0.813494 F\n", - "6 coef_shopping_dist_2_5 -0.629792 F\n", - "7 coef_eatout_dist_2_5 -0.226448 F\n", - "8 coef_othmaint_dist_2_5 -0.579932 F\n", - "9 coef_social_dist_2_5 -0.245175 F\n", - "10 coef_othdiscr_dist_2_5 -0.550945 F\n", - "11 coef_escort_dist_5_plus -0.255056 F\n", - "12 coef_shopping_dist_5_plus -0.130649 F\n", - "13 coef_eatout_dist_5_plus -0.188137 F\n", - "14 coef_othmaint_dist_5_plus -0.229655 F\n", - "15 coef_social_dist_5_plus -0.190239 F\n", - "16 coef_othdiscr_dist_5_plus -0.000141 F" + "4 coef_othdiscr_dist_0_2 -0.424399 F\n", + "5 coef_escort_dist_2_5 -0.959038 F\n", + "6 coef_shopping_dist_2_5 -0.704553 F\n", + "7 coef_eatout_dist_2_5 -0.427890 F\n", + "8 coef_othmaint_dist_2_5 -0.796780 F\n", + "9 coef_social_dist_2_5 -0.464176 F\n", + "10 coef_othdiscr_dist_2_5 -0.615669 F\n", + "11 coef_escort_dist_5_plus -0.264682 F\n", + "12 coef_shopping_dist_5_plus -0.234821 F\n", + "13 coef_eatout_dist_5_plus -0.182199 F\n", + "14 coef_othmaint_dist_5_plus -0.156745 F\n", + "15 coef_social_dist_5_plus -0.176446 F\n", + "16 coef_othdiscr_dist_5_plus -0.171387 F" ] }, - "execution_count": 21, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -4281,7 +3996,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -4447,14 +4162,14 @@ " escort\n", " non_mandatory\n", " 0.000000\n", - " 0.341950\n", + " 0.229722\n", " 0.000000\n", - " 0.131140\n", + " 0.138687\n", " 0.000000\n", " 0.000000\n", " 0.000000\n", - " 0.471104\n", - " 0.055806\n", + " 0.474643\n", + " 0.156948\n", " 0.000000\n", " 0.000000\n", " \n", @@ -4481,9 +4196,9 @@ " eatout\n", " non_mandatory\n", " 0.000000\n", - " 0.656666\n", + " 0.786346\n", " 0.000000\n", - " 0.343334\n", + " 0.213654\n", " 0.000000\n", " 0.000000\n", " 0.000000\n", @@ -4498,9 +4213,9 @@ " othmaint\n", " non_mandatory\n", " 0.000000\n", - " 0.484790\n", + " 0.489805\n", " 0.000000\n", - " 0.515210\n", + " 0.510195\n", " 0.000000\n", " 0.000000\n", " 0.000000\n", @@ -4515,9 +4230,9 @@ " social\n", " non_mandatory\n", " 0.000000\n", - " 0.414051\n", + " 0.545121\n", " 0.000000\n", - " 0.585949\n", + " 0.454879\n", " 0.000000\n", " 0.000000\n", " 0.000000\n", @@ -4531,15 +4246,15 @@ " 12\n", " othdiscr\n", " non_mandatory\n", - " 0.272379\n", - " 0.313357\n", + " 0.258275\n", + " 0.217495\n", " 0.000000\n", - " 0.221530\n", - " 0.101011\n", + " 0.267795\n", + " 0.152428\n", " 0.000000\n", " 0.000000\n", " 0.000000\n", - " 0.091723\n", + " 0.104008\n", " 0.000000\n", " 0.000000\n", " \n", @@ -4709,12 +4424,12 @@ "4 4 university school 0.000000 0.000000 0.000000 \n", "5 5 gradeschool school 0.000000 0.000000 0.000000 \n", "6 6 highschool school 0.000000 0.000000 0.000000 \n", - "7 7 escort non_mandatory 0.000000 0.341950 0.000000 \n", + "7 7 escort non_mandatory 0.000000 0.229722 0.000000 \n", "8 8 shopping non_mandatory 0.000000 1.000000 0.000000 \n", - "9 9 eatout non_mandatory 0.000000 0.656666 0.000000 \n", - "10 10 othmaint non_mandatory 0.000000 0.484790 0.000000 \n", - "11 11 social non_mandatory 0.000000 0.414051 0.000000 \n", - "12 12 othdiscr non_mandatory 0.272379 0.313357 0.000000 \n", + "9 9 eatout non_mandatory 0.000000 0.786346 0.000000 \n", + "10 10 othmaint non_mandatory 0.000000 0.489805 0.000000 \n", + "11 11 social non_mandatory 0.000000 0.545121 0.000000 \n", + "12 12 othdiscr non_mandatory 0.258275 0.217495 0.000000 \n", "13 13 atwork atwork 0.000000 0.742000 0.000000 \n", "14 14 work trip 0.000000 0.166667 0.166667 \n", "15 15 escort trip 0.001000 0.225000 0.000000 \n", @@ -4733,12 +4448,12 @@ "4 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.592000 \n", "5 0.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 \n", "6 0.000000 0.000000 0.000000 0.000000 0.000000 1.000000 0.000000 \n", - "7 0.131140 0.000000 0.000000 0.000000 0.471104 0.055806 0.000000 \n", + "7 0.138687 0.000000 0.000000 0.000000 0.474643 0.156948 0.000000 \n", "8 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n", - "9 0.343334 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n", - "10 0.515210 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n", - "11 0.585949 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n", - "12 0.221530 0.101011 0.000000 0.000000 0.000000 0.091723 0.000000 \n", + "9 0.213654 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n", + "10 0.510195 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n", + "11 0.454879 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n", + "12 0.267795 0.152428 0.000000 0.000000 0.000000 0.104008 0.000000 \n", "13 0.258000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n", "14 0.166667 0.166667 0.166667 0.166667 0.000000 0.000000 0.000000 \n", "15 0.144000 0.000000 0.000000 0.000000 0.464000 0.166000 0.000000 \n", @@ -4774,7 +4489,7 @@ "21 0.407592 " ] }, - "execution_count": 22, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -4791,7 +4506,7 @@ "toc_visible": true }, "kernelspec": { - "display_name": "Python 3", + "display_name": "ESTER", "language": "python", "name": "python3" }, @@ -4805,7 +4520,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.10.15" }, "toc": { "base_numbering": 1, diff --git a/activitysim/examples/example_estimation/notebooks/14_joint_tour_scheduling.ipynb b/activitysim/examples/example_estimation/notebooks/14_joint_tour_scheduling.ipynb index c2973c29b..b05d68490 100644 --- a/activitysim/examples/example_estimation/notebooks/14_joint_tour_scheduling.ipynb +++ b/activitysim/examples/example_estimation/notebooks/14_joint_tour_scheduling.ipynb @@ -34,27 +34,74 @@ "id": "s53VwlPwtNnr", "outputId": "d1208b7a-c1f2-4b0b-c439-bf312fe12be0" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "JAX not found. Some functionality will be unavailable.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'larch': '6.0.32',\n", + " 'sharrow': '2.13.0',\n", + " 'numpy': '1.26.4',\n", + " 'pandas': '1.5.3',\n", + " 'xarray': '2024.3.0',\n", + " 'numba': '0.60.0'}" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "import os\n", - "import larch # !conda install larch -c conda-forge # for estimation\n", - "import pandas as pd" + "import larch as lx\n", + "import pandas as pd\n", + "\n", + "lx.versions()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We'll work in our `test` directory, where ActivitySim has saved the estimation data bundles." + "For this demo, we will assume that you have already run ActivitySim in estimation\n", + "mode, and saved the required estimation data bundles (EDB's) to disk. See\n", + "the [first notebook](./01_estimation_mode.ipynb) for details. The following module\n", + "will run a script to set everything up if the example data is not already available." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "EDB directory already populated.\n" + ] + }, + { + "data": { + "text/plain": [ + "PosixPath('test-estimation-data/activitysim-prototype-mtc-extended')" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "os.chdir('test')" + "from est_mode_setup import prepare\n", + "\n", + "prepare()" ] }, { @@ -68,12 +115,28 @@ "cell_type": "code", "execution_count": 3, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "loading from output-est-mode/estimation_data_bundle/joint_tour_scheduling/tour_scheduling_joint_coefficients.csv\n", + "loading from output-est-mode/estimation_data_bundle/joint_tour_scheduling/joint_tour_scheduling_SPEC.csv\n", + "loading from output-est-mode/estimation_data_bundle/joint_tour_scheduling/joint_tour_scheduling_alternatives_combined.parquet\n", + "loading from output-est-mode/estimation_data_bundle/joint_tour_scheduling/joint_tour_scheduling_choosers_combined.parquet\n" + ] + } + ], "source": [ "modelname = \"joint_tour_scheduling\"\n", "\n", "from activitysim.estimation.larch import component_model\n", - "model, data = component_model(modelname, return_data=True)" + "\n", + "model, data = component_model(\n", + " modelname,\n", + " edb_directory=f\"output-est-mode/estimation_data_bundle/{modelname}/\",\n", + " return_data=True,\n", + ")" ] }, { @@ -746,28 +809,28 @@ " 30\n", " util_adjacent_window_exists_before_this_depart...\n", " Adjacent window exists before this departure h...\n", - " @(df.tour_type_count>1) & (df.tour_type_num ==...\n", + " @(df.tour_type_count>1) * (df.tour_type_num ==...\n", " coef_adjacent_window_exists_before_this_depart...\n", " \n", " \n", " 31\n", " util_adjacent_window_exists_after_this_arrival...\n", " Adjacent window exists after this arrival hour...\n", - " @(df.tour_type_count>1) & (df.tour_type_num ==...\n", + " @(df.tour_type_count>1) * (df.tour_type_num ==...\n", " coef_adjacent_window_exists_after_this_arrival...\n", " \n", " \n", " 32\n", " util_adjacent_window_exists_before_this_depart...\n", " Adjacent window exists before this departure h...\n", - " @(df.tour_type_num > 1) & _adjacent_window_before\n", + " @(df.tour_type_num > 1) * _adjacent_window_before\n", " coef_adjacent_window_exists_before_this_depart...\n", " \n", " \n", " 33\n", " util_adjacent_window_exists_after_this_arrival...\n", " Adjacent window exists after this arrival hour...\n", - " @(df.tour_type_num > 1) & _adjacent_window_after\n", + " @(df.tour_type_num > 1) * _adjacent_window_after\n", " coef_adjacent_window_exists_after_this_arrival...\n", " \n", " \n", @@ -1115,10 +1178,10 @@ "25 adult & (num_children > 0) & ( end > 18 ) & ( ... \n", "28 @tt.previous_tour_ends(df.tour_id, df.start) \n", "29 @tt.previous_tour_begins(df.tour_id, df.end) \n", - "30 @(df.tour_type_count>1) & (df.tour_type_num ==... \n", - "31 @(df.tour_type_count>1) & (df.tour_type_num ==... \n", - "32 @(df.tour_type_num > 1) & _adjacent_window_before \n", - "33 @(df.tour_type_num > 1) & _adjacent_window_after \n", + "30 @(df.tour_type_count>1) * (df.tour_type_num ==... \n", + "31 @(df.tour_type_count>1) * (df.tour_type_num ==... \n", + "32 @(df.tour_type_num > 1) * _adjacent_window_before \n", + "33 @(df.tour_type_num > 1) * _adjacent_window_after \n", "34 (tour_type != 'escort') & (start < 6) \n", "35 (tour_type != 'escort') & (start == 6) \n", "36 (tour_type != 'escort') & (start == 7) \n", @@ -1262,14 +1325,14 @@ " tour_count\n", " tour_category\n", " ...\n", - " COLLPTE\n", - " TOPOLOGY\n", - " TERMINAL\n", - " household_density\n", - " employment_density\n", - " density_index\n", - " is_cbd\n", - " tour_id.1\n", + " auOpRetail\n", + " auOpTotal\n", + " trPkRetail\n", + " trPkTotal\n", + " trOpRetail\n", + " trOpTotal\n", + " nmRetail\n", + " nmTotal\n", " start_previous\n", " end_previous\n", " \n", @@ -1277,10 +1340,10 @@ " \n", " \n", " 0\n", - " 7785298\n", - " 146\n", - " 146\n", - " 189885\n", + " 7853686\n", + " 115\n", + " 104\n", + " 191553\n", " eatout\n", " 1\n", " 1\n", @@ -1288,47 +1351,47 @@ " 1\n", " joint\n", " ...\n", - " 0.0\n", - " 1\n", - " 2.94885\n", - " 23.215385\n", - " 11.646154\n", - " 7.755537\n", - " False\n", - " 7785298\n", + " 10.032432\n", + " 12.426053\n", + " 4.842958\n", + " 6.577576\n", + " 4.825284\n", + " 6.554185\n", + " 5.384032\n", + " 6.267720\n", " 5\n", " 5\n", " \n", " \n", " 1\n", - " 8708454\n", - " 145\n", - " 145\n", - " 212401\n", - " eatout\n", + " 7902318\n", + " 127\n", + " 91\n", + " 192739\n", + " shopping\n", " 1\n", " 1\n", " 1\n", " 1\n", " joint\n", " ...\n", - " 0.0\n", - " 2\n", - " 4.64648\n", - " 196.395950\n", - " 178.779465\n", - " 93.587057\n", - " False\n", - " 8708454\n", + " 9.804714\n", + " 12.378032\n", + " 2.085722\n", + " 3.940109\n", + " 2.097132\n", + " 3.946235\n", + " 4.015752\n", + " 6.526846\n", " 5\n", " 5\n", " \n", " \n", " 2\n", - " 9715006\n", - " 115\n", - " 115\n", - " 236951\n", + " 7909776\n", + " 90\n", + " 105\n", + " 192921\n", " othdiscr\n", " 1\n", " 1\n", @@ -1336,62 +1399,62 @@ " 1\n", " joint\n", " ...\n", - " 0.0\n", - " 1\n", - " 2.08699\n", - " 16.952703\n", - " 7.608108\n", - " 5.251374\n", - " False\n", - " 9715006\n", + " 9.924635\n", + " 12.521312\n", + " 1.451325\n", + " 3.811134\n", + " 1.458624\n", + " 3.813040\n", + " 4.422027\n", + " 6.644415\n", " 5\n", " 5\n", " \n", " \n", " 3\n", - " 10831112\n", - " 115\n", - " 115\n", - " 264173\n", - " shopping\n", + " 7988742\n", + " 101\n", + " 101\n", + " 194847\n", + " othdiscr\n", " 1\n", " 1\n", " 1\n", " 1\n", " joint\n", " ...\n", - " 0.0\n", - " 3\n", - " 4.73802\n", - " 117.769796\n", - " 246.205869\n", - " 79.663609\n", - " False\n", - " 10831112\n", + " 10.124314\n", + " 12.525120\n", + " 2.760744\n", + " 4.989736\n", + " 2.749302\n", + " 4.964188\n", + " 4.106787\n", + " 6.259962\n", " 5\n", " 5\n", " \n", " \n", " 4\n", - " 20334787\n", - " 37\n", - " 37\n", - " 495970\n", - " othmaint\n", + " 8103874\n", + " 74\n", + " 74\n", + " 197655\n", + " shopping\n", " 1\n", " 1\n", " 1\n", " 1\n", " joint\n", " ...\n", - " 0.0\n", - " 1\n", - " 2.17734\n", - " 17.968750\n", - " 4.109375\n", - " 3.344502\n", - " False\n", - " 20334787\n", + " 9.966499\n", + " 12.292832\n", + " 2.097899\n", + " 4.282017\n", + " 0.920538\n", + " 2.790691\n", + " 5.043413\n", + " 6.194205\n", " 5\n", " 5\n", " \n", @@ -1420,35 +1483,35 @@ " ...\n", " \n", " \n", - " 86\n", - " 283676518\n", - " 145\n", - " 145\n", - " 6918939\n", - " shopping\n", + " 1272\n", + " 303771147\n", + " 171\n", + " 171\n", + " 7409052\n", + " othdiscr\n", " 1\n", " 1\n", " 1\n", " 1\n", " joint\n", " ...\n", - " 0.0\n", - " 1\n", - " 2.18894\n", - " 20.746032\n", - " 9.793651\n", - " 6.652963\n", - " False\n", - " 283676518\n", + " 9.795165\n", + " 12.124129\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 4.666818\n", + " 6.381846\n", " 5\n", " 5\n", " \n", " \n", - " 87\n", - " 295260168\n", - " 158\n", - " 158\n", - " 7201469\n", + " 1273\n", + " 304144212\n", + " 77\n", + " 126\n", + " 7418154\n", " social\n", " 1\n", " 1\n", @@ -1456,23 +1519,23 @@ " 1\n", " joint\n", " ...\n", - " 0.0\n", - " 1\n", - " 3.19780\n", - " 25.035085\n", - " 34.002224\n", - " 14.418824\n", - " False\n", - " 295260168\n", + " 9.808362\n", + " 12.224503\n", + " 0.198489\n", + " 0.838468\n", + " 0.197857\n", + " 0.826233\n", + " 5.214767\n", + " 7.781673\n", " 5\n", " 5\n", " \n", " \n", - " 88\n", - " 297646485\n", - " 104\n", - " 104\n", - " 7259670\n", + " 1274\n", + " 304463637\n", + " 138\n", + " 127\n", + " 7425942\n", " othdiscr\n", " 1\n", " 1\n", @@ -1480,124 +1543,124 @@ " 1\n", " joint\n", " ...\n", - " 0.0\n", - " 1\n", - " 4.89113\n", - " 193.875000\n", - " 201.000000\n", - " 98.686610\n", - " False\n", - " 297646485\n", + " 9.674598\n", + " 12.273909\n", + " 2.314454\n", + " 5.062339\n", + " 2.170577\n", + " 4.928170\n", + " 3.927607\n", + " 5.937753\n", " 5\n", " 5\n", " \n", " \n", - " 89\n", - " 298814741\n", - " 74\n", - " 74\n", - " 7288164\n", - " othmaint\n", + " 1275\n", + " 305125582\n", + " 156\n", + " 177\n", + " 7442087\n", + " othdiscr\n", " 1\n", " 1\n", " 1\n", " 1\n", " joint\n", " ...\n", - " 0.0\n", - " 1\n", - " 4.29646\n", - " 57.195122\n", - " 95.975610\n", - " 35.838026\n", - " True\n", - " 298814741\n", + " 10.150831\n", + " 12.839956\n", + " 6.746949\n", + " 9.644580\n", + " 6.245710\n", + " 8.925880\n", + " 6.393693\n", + " 8.676755\n", " 5\n", " 5\n", " \n", " \n", - " 90\n", - " 301810980\n", + " 1276\n", + " 305246245\n", " 54\n", " 54\n", - " 7361244\n", - " othmaint\n", + " 7445030\n", + " othdiscr\n", " 1\n", " 1\n", " 1\n", " 1\n", " joint\n", " ...\n", - " 0.0\n", - " 1\n", - " 2.47787\n", - " 23.993197\n", - " 11.945578\n", - " 7.975024\n", - " False\n", - " 301810980\n", + " 10.154352\n", + " 12.772396\n", + " 5.492171\n", + " 8.363419\n", + " 5.092918\n", + " 7.921567\n", + " 4.507081\n", + " 7.061687\n", " 5\n", " 5\n", " \n", " \n", "\n", - "

91 rows × 151 columns

\n", + "

1277 rows × 150 columns

\n", "" ], "text/plain": [ - " tour_id model_choice override_choice person_id tour_type \\\n", - "0 7785298 146 146 189885 eatout \n", - "1 8708454 145 145 212401 eatout \n", - "2 9715006 115 115 236951 othdiscr \n", - "3 10831112 115 115 264173 shopping \n", - "4 20334787 37 37 495970 othmaint \n", - ".. ... ... ... ... ... \n", - "86 283676518 145 145 6918939 shopping \n", - "87 295260168 158 158 7201469 social \n", - "88 297646485 104 104 7259670 othdiscr \n", - "89 298814741 74 74 7288164 othmaint \n", - "90 301810980 54 54 7361244 othmaint \n", + " tour_id model_choice override_choice person_id tour_type \\\n", + "0 7853686 115 104 191553 eatout \n", + "1 7902318 127 91 192739 shopping \n", + "2 7909776 90 105 192921 othdiscr \n", + "3 7988742 101 101 194847 othdiscr \n", + "4 8103874 74 74 197655 shopping \n", + "... ... ... ... ... ... \n", + "1272 303771147 171 171 7409052 othdiscr \n", + "1273 304144212 77 126 7418154 social \n", + "1274 304463637 138 127 7425942 othdiscr \n", + "1275 305125582 156 177 7442087 othdiscr \n", + "1276 305246245 54 54 7445030 othdiscr \n", "\n", - " tour_type_count tour_type_num tour_num tour_count tour_category ... \\\n", - "0 1 1 1 1 joint ... \n", - "1 1 1 1 1 joint ... \n", - "2 1 1 1 1 joint ... \n", - "3 1 1 1 1 joint ... \n", - "4 1 1 1 1 joint ... \n", - ".. ... ... ... ... ... ... \n", - "86 1 1 1 1 joint ... \n", - "87 1 1 1 1 joint ... \n", - "88 1 1 1 1 joint ... \n", - "89 1 1 1 1 joint ... \n", - "90 1 1 1 1 joint ... \n", + " tour_type_count tour_type_num tour_num tour_count tour_category ... \\\n", + "0 1 1 1 1 joint ... \n", + "1 1 1 1 1 joint ... \n", + "2 1 1 1 1 joint ... \n", + "3 1 1 1 1 joint ... \n", + "4 1 1 1 1 joint ... \n", + "... ... ... ... ... ... ... \n", + "1272 1 1 1 1 joint ... \n", + "1273 1 1 1 1 joint ... \n", + "1274 1 1 1 1 joint ... \n", + "1275 1 1 1 1 joint ... \n", + "1276 1 1 1 1 joint ... \n", "\n", - " COLLPTE TOPOLOGY TERMINAL household_density employment_density \\\n", - "0 0.0 1 2.94885 23.215385 11.646154 \n", - "1 0.0 2 4.64648 196.395950 178.779465 \n", - "2 0.0 1 2.08699 16.952703 7.608108 \n", - "3 0.0 3 4.73802 117.769796 246.205869 \n", - "4 0.0 1 2.17734 17.968750 4.109375 \n", - ".. ... ... ... ... ... \n", - "86 0.0 1 2.18894 20.746032 9.793651 \n", - "87 0.0 1 3.19780 25.035085 34.002224 \n", - "88 0.0 1 4.89113 193.875000 201.000000 \n", - "89 0.0 1 4.29646 57.195122 95.975610 \n", - "90 0.0 1 2.47787 23.993197 11.945578 \n", + " auOpRetail auOpTotal trPkRetail trPkTotal trOpRetail trOpTotal \\\n", + "0 10.032432 12.426053 4.842958 6.577576 4.825284 6.554185 \n", + "1 9.804714 12.378032 2.085722 3.940109 2.097132 3.946235 \n", + "2 9.924635 12.521312 1.451325 3.811134 1.458624 3.813040 \n", + "3 10.124314 12.525120 2.760744 4.989736 2.749302 4.964188 \n", + "4 9.966499 12.292832 2.097899 4.282017 0.920538 2.790691 \n", + "... ... ... ... ... ... ... \n", + "1272 9.795165 12.124129 0.000000 0.000000 0.000000 0.000000 \n", + "1273 9.808362 12.224503 0.198489 0.838468 0.197857 0.826233 \n", + "1274 9.674598 12.273909 2.314454 5.062339 2.170577 4.928170 \n", + "1275 10.150831 12.839956 6.746949 9.644580 6.245710 8.925880 \n", + "1276 10.154352 12.772396 5.492171 8.363419 5.092918 7.921567 \n", "\n", - " density_index is_cbd tour_id.1 start_previous end_previous \n", - "0 7.755537 False 7785298 5 5 \n", - "1 93.587057 False 8708454 5 5 \n", - "2 5.251374 False 9715006 5 5 \n", - "3 79.663609 False 10831112 5 5 \n", - "4 3.344502 False 20334787 5 5 \n", - ".. ... ... ... ... ... \n", - "86 6.652963 False 283676518 5 5 \n", - "87 14.418824 False 295260168 5 5 \n", - "88 98.686610 False 297646485 5 5 \n", - "89 35.838026 True 298814741 5 5 \n", - "90 7.975024 False 301810980 5 5 \n", + " nmRetail nmTotal start_previous end_previous \n", + "0 5.384032 6.267720 5 5 \n", + "1 4.015752 6.526846 5 5 \n", + "2 4.422027 6.644415 5 5 \n", + "3 4.106787 6.259962 5 5 \n", + "4 5.043413 6.194205 5 5 \n", + "... ... ... ... ... \n", + "1272 4.666818 6.381846 5 5 \n", + "1273 5.214767 7.781673 5 5 \n", + "1274 3.927607 5.937753 5 5 \n", + "1275 6.393693 8.676755 5 5 \n", + "1276 4.507081 7.061687 5 5 \n", "\n", - "[91 rows x 151 columns]" + "[1277 rows x 150 columns]" ] }, "execution_count": 6, @@ -1643,135 +1706,135 @@ " \n", " \n", " tour_id\n", - " variable\n", - " 0\n", - " 1\n", - " 2\n", - " 3\n", - " 4\n", - " 5\n", - " 6\n", - " 7\n", + " start\n", + " end\n", + " duration\n", + " tdd\n", + " mode_choice_logsum\n", + " util_subsequent_tour_must_start_after_previous_tour_for_this_purpose_ends\n", + " util_free_flow_round_trip_auto_time_shift_effects_duration\n", + " util_shopping_tour_departure_shift_effects\n", + " util_shopping_tour_duration_shift_effects\n", " ...\n", - " 180\n", - " 181\n", - " 182\n", - " 183\n", - " 184\n", - " 185\n", - " 186\n", - " 187\n", - " 188\n", - " 189\n", + " util_arrival_constants_pm_peak_4\n", + " util_arrival_constants_evening\n", + " util_arrival_constants_late\n", + " util_duration_constants_0_to_1_hours\n", + " util_duration_constants_2_to_3_hours\n", + " util_duration_constants_4_to_5_hours\n", + " util_duration_constants_6_to_7_hours\n", + " util_duration_constants_8_to_10_hours\n", + " util_duration_constants_11_to_13_hours\n", + " util_duration_constants_14_to_18_hours\n", " \n", " \n", " \n", " \n", " 0\n", - " 7785298\n", - " duration\n", - " 0.0\n", - " 1.0\n", - " 2.0\n", + " 7853686\n", + " 5\n", + " 5\n", " 0\n", " 0\n", " 0\n", + " False\n", + " 0.000000\n", " 0\n", " 0\n", " ...\n", - " 0.0\n", - " 1.0\n", - " 2.0\n", - " 3.0\n", - " 0.0\n", - " 1.0\n", - " 2.0\n", - " 0.0\n", - " 1.0\n", - " 0.0\n", + " False\n", + " False\n", + " False\n", + " True\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", " 1\n", - " 7785298\n", - " end\n", - " 5.0\n", - " 6.0\n", - " 7.0\n", - " 0\n", - " 0\n", + " 7853686\n", + " 5\n", + " 6\n", + " 1\n", + " 1\n", " 0\n", + " False\n", + " 24.259998\n", " 0\n", " 0\n", " ...\n", - " 20.0\n", - " 21.0\n", - " 22.0\n", - " 23.0\n", - " 21.0\n", - " 22.0\n", - " 23.0\n", - " 22.0\n", - " 23.0\n", - " 23.0\n", + " False\n", + " False\n", + " False\n", + " True\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", " 2\n", - " 7785298\n", - " mode_choice_logsum\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0\n", - " 0\n", + " 7853686\n", + " 5\n", + " 7\n", + " 2\n", + " 2\n", " 0\n", + " False\n", + " 48.519997\n", " 0\n", " 0\n", " ...\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", + " False\n", + " False\n", + " False\n", + " False\n", + " True\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", " 3\n", - " 7785298\n", - " start\n", - " 5.0\n", - " 5.0\n", - " 5.0\n", - " 0\n", - " 0\n", + " 7853686\n", + " 5\n", + " 8\n", + " 3\n", + " 3\n", " 0\n", + " False\n", + " 72.779999\n", " 0\n", " 0\n", " ...\n", - " 20.0\n", - " 20.0\n", - " 20.0\n", - " 20.0\n", - " 21.0\n", - " 21.0\n", - " 21.0\n", - " 22.0\n", - " 22.0\n", - " 23.0\n", - " \n", - " \n", - " 4\n", - " 7785298\n", - " util_adjacent_window_exists_after_this_arrival...\n", " False\n", " False\n", " False\n", + " False\n", + " True\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 4\n", + " 7853686\n", + " 5\n", + " 9\n", + " 4\n", + " 4\n", " 0\n", - " 0\n", - " 0\n", + " False\n", + " 97.039993\n", " 0\n", " 0\n", " ...\n", @@ -1780,7 +1843,7 @@ " False\n", " False\n", " False\n", - " False\n", + " True\n", " False\n", " False\n", " False\n", @@ -1811,47 +1874,47 @@ " ...\n", " \n", " \n", - " 5728\n", - " 301810980\n", - " util_subsequent_of_2_plus_tours_for_same_purpo...\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", + " 107101\n", + " 305246245\n", + " 21\n", + " 22\n", + " 1\n", + " 185\n", " 0\n", + " False\n", + " 2.480000\n", " 0\n", " 0\n", " ...\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " \n", - " \n", - " 5729\n", - " 301810980\n", - " util_subsequent_tour_must_start_after_previous...\n", + " False\n", + " False\n", + " True\n", + " True\n", " False\n", " False\n", " False\n", " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 107102\n", + " 305246245\n", + " 21\n", + " 23\n", + " 2\n", + " 186\n", " 0\n", - " 0\n", + " False\n", + " 4.960000\n", " 0\n", " 0\n", " ...\n", " False\n", " False\n", + " True\n", " False\n", - " False\n", - " False\n", + " True\n", " False\n", " False\n", " False\n", @@ -1859,22 +1922,22 @@ " False\n", " \n", " \n", - " 5730\n", - " 301810980\n", - " util_university_student_arrive_after_22\n", - " False\n", - " False\n", - " False\n", - " False\n", + " 107103\n", + " 305246245\n", + " 22\n", + " 22\n", " 0\n", + " 187\n", " 0\n", + " False\n", + " 0.000000\n", " 0\n", " 0\n", " ...\n", " False\n", " False\n", - " False\n", - " False\n", + " True\n", + " True\n", " False\n", " False\n", " False\n", @@ -1883,99 +1946,229 @@ " False\n", " \n", " \n", - " 5731\n", - " 301810980\n", - " util_visit_tour_departure_shift_effects\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", + " 107104\n", + " 305246245\n", + " 22\n", + " 23\n", + " 1\n", + " 188\n", " 0\n", + " False\n", + " 2.480000\n", " 0\n", " 0\n", " ...\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", + " False\n", + " False\n", + " True\n", + " True\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", - " 5732\n", - " 301810980\n", - " util_visit_tour_duration_shift_effects\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", + " 107105\n", + " 305246245\n", + " 23\n", + " 23\n", " 0\n", + " 189\n", " 0\n", + " False\n", + " 0.000000\n", " 0\n", " 0\n", " ...\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", + " False\n", + " False\n", + " True\n", + " True\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", "\n", - "

5733 rows × 192 columns

\n", + "

107106 rows × 65 columns

\n", "" ], "text/plain": [ - " tour_id variable 0 \\\n", - "0 7785298 duration 0.0 \n", - "1 7785298 end 5.0 \n", - "2 7785298 mode_choice_logsum 0.0 \n", - "3 7785298 start 5.0 \n", - "4 7785298 util_adjacent_window_exists_after_this_arrival... False \n", - "... ... ... ... \n", - "5728 301810980 util_subsequent_of_2_plus_tours_for_same_purpo... 0 \n", - "5729 301810980 util_subsequent_tour_must_start_after_previous... False \n", - "5730 301810980 util_university_student_arrive_after_22 False \n", - "5731 301810980 util_visit_tour_departure_shift_effects 0 \n", - "5732 301810980 util_visit_tour_duration_shift_effects 0 \n", + " tour_id start end duration tdd mode_choice_logsum \\\n", + "0 7853686 5 5 0 0 0 \n", + "1 7853686 5 6 1 1 0 \n", + "2 7853686 5 7 2 2 0 \n", + "3 7853686 5 8 3 3 0 \n", + "4 7853686 5 9 4 4 0 \n", + "... ... ... ... ... ... ... \n", + "107101 305246245 21 22 1 185 0 \n", + "107102 305246245 21 23 2 186 0 \n", + "107103 305246245 22 22 0 187 0 \n", + "107104 305246245 22 23 1 188 0 \n", + "107105 305246245 23 23 0 189 0 \n", + "\n", + " util_subsequent_tour_must_start_after_previous_tour_for_this_purpose_ends \\\n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "... ... \n", + "107101 False \n", + "107102 False \n", + "107103 False \n", + "107104 False \n", + "107105 False \n", + "\n", + " util_free_flow_round_trip_auto_time_shift_effects_duration \\\n", + "0 0.000000 \n", + "1 24.259998 \n", + "2 48.519997 \n", + "3 72.779999 \n", + "4 97.039993 \n", + "... ... \n", + "107101 2.480000 \n", + "107102 4.960000 \n", + "107103 0.000000 \n", + "107104 2.480000 \n", + "107105 0.000000 \n", + "\n", + " util_shopping_tour_departure_shift_effects \\\n", + "0 0 \n", + "1 0 \n", + "2 0 \n", + "3 0 \n", + "4 0 \n", + "... ... \n", + "107101 0 \n", + "107102 0 \n", + "107103 0 \n", + "107104 0 \n", + "107105 0 \n", + "\n", + " util_shopping_tour_duration_shift_effects ... \\\n", + "0 0 ... \n", + "1 0 ... \n", + "2 0 ... \n", + "3 0 ... \n", + "4 0 ... \n", + "... ... ... \n", + "107101 0 ... \n", + "107102 0 ... \n", + "107103 0 ... \n", + "107104 0 ... \n", + "107105 0 ... \n", + "\n", + " util_arrival_constants_pm_peak_4 util_arrival_constants_evening \\\n", + "0 False False \n", + "1 False False \n", + "2 False False \n", + "3 False False \n", + "4 False False \n", + "... ... ... \n", + "107101 False False \n", + "107102 False False \n", + "107103 False False \n", + "107104 False False \n", + "107105 False False \n", + "\n", + " util_arrival_constants_late util_duration_constants_0_to_1_hours \\\n", + "0 False True \n", + "1 False True \n", + "2 False False \n", + "3 False False \n", + "4 False False \n", + "... ... ... \n", + "107101 True True \n", + "107102 True False \n", + "107103 True True \n", + "107104 True True \n", + "107105 True True \n", + "\n", + " util_duration_constants_2_to_3_hours \\\n", + "0 False \n", + "1 False \n", + "2 True \n", + "3 True \n", + "4 False \n", + "... ... \n", + "107101 False \n", + "107102 True \n", + "107103 False \n", + "107104 False \n", + "107105 False \n", "\n", - " 1 2 3 4 5 6 7 ... 180 181 182 183 184 \\\n", - "0 1.0 2.0 0 0 0 0 0 ... 0.0 1.0 2.0 3.0 0.0 \n", - "1 6.0 7.0 0 0 0 0 0 ... 20.0 21.0 22.0 23.0 21.0 \n", - "2 0.0 0.0 0 0 0 0 0 ... 0.0 0.0 0.0 0.0 0.0 \n", - "3 5.0 5.0 0 0 0 0 0 ... 20.0 20.0 20.0 20.0 21.0 \n", - "4 False False 0 0 0 0 0 ... False False False False False \n", - "... ... ... ... .. .. .. .. ... ... ... ... ... ... \n", - "5728 0 0 0 0 0 0 0 ... 0 0 0 0 0 \n", - "5729 False False False 0 0 0 0 ... False False False False False \n", - "5730 False False False 0 0 0 0 ... False False False False False \n", - "5731 0 0 0 0 0 0 0 ... 0 0 0 0 0 \n", - "5732 0 0 0 0 0 0 0 ... 0 0 0 0 0 \n", + " util_duration_constants_4_to_5_hours \\\n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 True \n", + "... ... \n", + "107101 False \n", + "107102 False \n", + "107103 False \n", + "107104 False \n", + "107105 False \n", "\n", - " 185 186 187 188 189 \n", - "0 1.0 2.0 0.0 1.0 0.0 \n", - "1 22.0 23.0 22.0 23.0 23.0 \n", - "2 0.0 0.0 0.0 0.0 0.0 \n", - "3 21.0 21.0 22.0 22.0 23.0 \n", - "4 False False False False False \n", - "... ... ... ... ... ... \n", - "5728 0 0 0 0 0 \n", - "5729 False False False False False \n", - "5730 False False False False False \n", - "5731 0 0 0 0 0 \n", - "5732 0 0 0 0 0 \n", + " util_duration_constants_6_to_7_hours \\\n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "... ... \n", + "107101 False \n", + "107102 False \n", + "107103 False \n", + "107104 False \n", + "107105 False \n", "\n", - "[5733 rows x 192 columns]" + " util_duration_constants_8_to_10_hours \\\n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "... ... \n", + "107101 False \n", + "107102 False \n", + "107103 False \n", + "107104 False \n", + "107105 False \n", + "\n", + " util_duration_constants_11_to_13_hours \\\n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "... ... \n", + "107101 False \n", + "107102 False \n", + "107103 False \n", + "107104 False \n", + "107105 False \n", + "\n", + " util_duration_constants_14_to_18_hours \n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "... ... \n", + "107101 False \n", + "107102 False \n", + "107103 False \n", + "107104 False \n", + "107105 False \n", + "\n", + "[107106 rows x 65 columns]" ] }, "execution_count": 7, @@ -2005,13 +2198,36 @@ "name": "stderr", "output_type": "stream", "text": [ - "req_data does not request avail_ca or avail_co but it is set and being provided\n" + "problem: chosen_but_not_available has (2 issues)\n" ] }, + { + "data": { + "text/plain": [ + "(,\n", + " ┣ chosen_but_not_available: altid n example rows\n", + " ┃ 0 115 1 356\n", + " ┃ 1 149 2 732, 1183)" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.doctor(repair_ch_av=\"-\")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ { "data": { "text/html": [ - "

Iteration 067 [Optimization terminated successfully]

" + "

Iteration 144 [Optimization terminated successfully]

" ], "text/plain": [ "" @@ -2023,7 +2239,7 @@ { "data": { "text/html": [ - "

Best LL = -173.82837615906058

" + "

Best LL = -2789.512559021124

" ], "text/plain": [ "" @@ -2054,913 +2270,867 @@ " \n", " \n", " value\n", + " best\n", " initvalue\n", - " nullvalue\n", " minimum\n", " maximum\n", + " nullvalue\n", " holdfast\n", - " note\n", - " best\n", + " \n", + " \n", + " param_name\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction\n", - " -13.526580\n", + " 0.800851\n", + " 0.800851\n", " -0.025700\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -13.526580\n", " \n", " \n", " coef_adjacent_window_exists_after_this_arrival_hour_second_tour_interaction\n", - " -14.169341\n", + " 0.494438\n", + " 0.494438\n", " -0.027340\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -14.169341\n", " \n", " \n", " coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction\n", - " -13.495922\n", + " 0.008839\n", + " 0.008839\n", " 0.008442\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -13.495922\n", " \n", " \n", " coef_adjacent_window_exists_before_this_departure_hour_second_tour_interaction\n", - " -7.716247\n", + " -0.549692\n", + " -0.549692\n", " -0.059300\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -7.716247\n", " \n", " \n", " coef_adult_with_children_in_hh_arrive_19_21\n", - " -0.002541\n", + " -0.078997\n", + " -0.078997\n", " 0.336000\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.002541\n", " \n", " \n", " coef_arrival_constants_am_peak\n", - " 4.647673\n", + " -8.413713\n", + " -8.413713\n", " -8.728880\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 4.647673\n", " \n", " \n", " coef_arrival_constants_early\n", - " 24.793142\n", + " -6.758955\n", + " -6.758955\n", " -8.728880\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 24.793142\n", " \n", " \n", " coef_arrival_constants_evening\n", - " -4.291783\n", + " -2.675953\n", + " -2.675953\n", " -2.748940\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -4.291783\n", " \n", " \n", " coef_arrival_constants_late\n", - " -9.617038\n", + " -4.194942\n", + " -4.194942\n", " -4.242530\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -9.617038\n", " \n", " \n", " coef_arrival_constants_midday_1\n", " 0.000000\n", " 0.000000\n", + " 0.000000\n", + " 0.0\n", + " 0.0\n", " 0.0\n", - " -25.0\n", - " 25.0\n", " 1\n", - " \n", - " 0.000000\n", " \n", " \n", " coef_arrival_constants_midday_2\n", - " 2.692519\n", + " 1.416723\n", + " 1.416723\n", " 1.408040\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 2.692519\n", " \n", " \n", " coef_arrival_constants_pm_peak_1\n", - " 1.849237\n", + " 0.964024\n", + " 0.964024\n", " 1.020360\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 1.849237\n", " \n", " \n", " coef_arrival_constants_pm_peak_2\n", - " 1.518410\n", + " 1.200835\n", + " 1.200835\n", " 1.068630\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 1.518410\n", " \n", " \n", " coef_arrival_constants_pm_peak_3\n", " 0.000000\n", " 0.000000\n", + " 0.000000\n", + " 0.0\n", + " 0.0\n", " 0.0\n", - " -25.0\n", - " 25.0\n", " 1\n", - " \n", - " 0.000000\n", " \n", " \n", " coef_arrival_constants_pm_peak_4\n", - " -1.182768\n", + " -0.725959\n", + " -0.725959\n", " -0.596260\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -1.182768\n", " \n", " \n", " coef_departure_constants_am_peak_1\n", - " -25.000000\n", + " -13.990759\n", + " -13.990759\n", " -11.595050\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -25.000000\n", " \n", " \n", " coef_departure_constants_am_peak_2\n", - " -4.236849\n", + " -10.163788\n", + " -10.163788\n", " -9.005190\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -4.236849\n", " \n", " \n", " coef_departure_constants_am_peak_3\n", - " 0.806223\n", + " -2.799430\n", + " -2.799430\n", " -2.733150\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.806223\n", " \n", " \n", " coef_departure_constants_am_peak_4\n", - " 1.408142\n", + " 0.514393\n", + " 0.514393\n", " 0.266540\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 1.408142\n", " \n", " \n", " coef_departure_constants_early\n", - " -24.418086\n", + " -17.865880\n", + " -17.865880\n", " -14.477080\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -24.418086\n", " \n", " \n", " coef_departure_constants_evening\n", - " -14.557517\n", + " -19.574287\n", + " -19.574287\n", " -18.987370\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -14.557517\n", " \n", " \n", " coef_departure_constants_late\n", - " -20.421814\n", + " -21.444922\n", + " -21.444922\n", " -20.278070\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -20.421814\n", " \n", " \n", " coef_departure_constants_midday_1\n", " 0.000000\n", " 0.000000\n", + " 0.000000\n", + " 0.0\n", + " 0.0\n", " 0.0\n", - " -25.0\n", - " 25.0\n", " 1\n", - " \n", - " 0.000000\n", " \n", " \n", " coef_departure_constants_midday_2\n", - " -4.501238\n", + " -1.886316\n", + " -1.886316\n", " -1.602600\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -4.501238\n", " \n", " \n", " coef_departure_constants_pm_peak\n", - " -12.638403\n", + " -18.238556\n", + " -18.238556\n", " -17.695980\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -12.638403\n", " \n", " \n", " coef_destination_in_cbd_duration_shift_effects\n", - " 0.572330\n", + " 0.130935\n", + " 0.130935\n", " 0.106700\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.572330\n", " \n", " \n", " coef_discretionary_tour_duration_lt_2_hours\n", - " -1.022488\n", + " -0.772425\n", + " -0.772425\n", " -0.697400\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -1.022488\n", " \n", " \n", " coef_duration_constants_0_to_1_hours\n", - " -2.750481\n", + " -2.021348\n", + " -2.021348\n", " -2.228260\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -2.750481\n", " \n", " \n", " coef_duration_constants_11_to_13_hours\n", - " -6.162737\n", + " -1.608105\n", + " -1.608105\n", " -0.815190\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -6.162737\n", " \n", " \n", " coef_duration_constants_14_to_18_hours\n", - " -2.800706\n", + " -3.067613\n", + " -3.067613\n", " -2.738440\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -2.800706\n", " \n", " \n", " coef_duration_constants_2_to_3_hours\n", " 0.000000\n", " 0.000000\n", + " 0.000000\n", + " 0.0\n", + " 0.0\n", " 0.0\n", - " -25.0\n", - " 25.0\n", " 1\n", - " \n", - " 0.000000\n", " \n", " \n", " coef_duration_constants_4_to_5_hours\n", - " 0.301145\n", + " -0.519561\n", + " -0.519561\n", " -0.561740\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.301145\n", " \n", " \n", " coef_duration_constants_6_to_7_hours\n", - " 0.144072\n", + " -0.868309\n", + " -0.868309\n", " -0.655470\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.144072\n", " \n", " \n", " coef_duration_constants_8_to_10_hours\n", - " -10.570858\n", + " -1.020095\n", + " -1.020095\n", " -0.740620\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -10.570858\n", " \n", " \n", " coef_eat_out_tour_departure_shift_effects\n", - " -0.024649\n", + " 0.056578\n", + " 0.056578\n", " 0.075490\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.024649\n", " \n", " \n", " coef_first_of_2_plus_tours_for_same_purpose_departure_shift_effect\n", - " -1.329351\n", + " -0.506782\n", + " -0.506782\n", " -0.236400\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -1.329351\n", " \n", " \n", " coef_free_flow_round_trip_auto_time_shift_effects_duration\n", - " 0.017752\n", + " 0.003622\n", + " 0.003622\n", " 0.003195\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.017752\n", " \n", " \n", " coef_maintenance_tour_depart_before_7\n", - " 1.154584\n", + " -0.523693\n", + " -0.523693\n", " -0.882600\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 1.154584\n", " \n", " \n", " coef_maintenance_tour_departure_shift_effects\n", - " -0.159210\n", + " -0.135634\n", + " -0.135634\n", " -0.148900\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.159210\n", " \n", " \n", " coef_maintenance_tour_duration_shift_effects\n", - " -0.146459\n", + " -0.038428\n", + " -0.038428\n", " -0.083720\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.146459\n", " \n", " \n", " coef_number_of_joint_tours_departure_shift_effects\n", - " 1.356173\n", + " 0.128742\n", + " 0.128742\n", " 0.052080\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 1.356173\n", " \n", " \n", " coef_number_of_mandatory_tours_departure_shift_effects\n", - " 0.076326\n", + " -0.009788\n", + " -0.009788\n", " 0.046730\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.076326\n", " \n", " \n", " coef_school_child_age_16_plus_departure_shift_effects\n", + " 0.106395\n", + " 0.106395\n", " 0.072660\n", - " 0.072660\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.072660\n", " \n", " \n", " coef_school_child_age_16_plus_duration_shift_effects\n", + " 0.315781\n", + " 0.315781\n", " 0.209500\n", - " 0.209500\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.209500\n", " \n", " \n", " coef_school_child_age_under_16_departure_shift_effects\n", - " 0.239007\n", + " 0.015473\n", + " 0.015473\n", " 0.046570\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.239007\n", " \n", " \n", " coef_school_child_age_under_16_duration_shift_effects\n", - " -0.567863\n", + " 0.327527\n", + " 0.327527\n", " 0.327200\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.567863\n", " \n", " \n", " coef_school_child_under_16_arrive_after_22\n", - " -6.147237\n", + " -5.038827\n", + " -5.038827\n", " -1.180000\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -6.147237\n", " \n", " \n", " coef_shopping_tour_arrive_after_22\n", - " -7.221041\n", + " -0.033268\n", + " -0.033268\n", " -0.602700\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -7.221041\n", " \n", " \n", " coef_shopping_tour_depart_before_8\n", - " 1.458488\n", + " -1.484109\n", + " -1.484109\n", " -1.037000\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 1.458488\n", " \n", " \n", " coef_shopping_tour_departure_shift_effects\n", - " -0.045633\n", + " -0.099254\n", + " -0.099254\n", " -0.060150\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.045633\n", " \n", " \n", " coef_shopping_tour_duration_lt_2_hours\n", - " 0.189427\n", + " 0.699700\n", + " 0.699700\n", " 0.516800\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.189427\n", " \n", " \n", " coef_shopping_tour_duration_shift_effects\n", - " -0.359705\n", + " -0.101207\n", + " -0.101207\n", " -0.120800\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.359705\n", " \n", " \n", " coef_some_previously_scheduled_tour_begins_in_this_arrival_hour\n", - " 0.411979\n", + " -0.017681\n", + " -0.017681\n", " -0.399200\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.411979\n", " \n", " \n", " coef_some_previously_scheduled_tour_ends_in_this_departure_hour\n", - " 0.282029\n", + " -0.288048\n", + " -0.288048\n", " -0.456200\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.282029\n", " \n", " \n", " coef_subsequent_of_2_plus_tours_for_same_purpose_duration_shift_effect\n", - " 0.191264\n", + " 0.062417\n", + " 0.062417\n", " -0.173100\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.191264\n", " \n", " \n", " coef_unavailable\n", " -999.000000\n", " -999.000000\n", + " -999.000000\n", + " -999.0\n", + " -999.0\n", " 0.0\n", - " -25.0\n", - " 25.0\n", " 1\n", - " \n", - " -999.000000\n", " \n", " \n", " coef_university_student_arrive_after_22\n", - " -9.181095\n", + " 0.360948\n", + " 0.360948\n", " 0.546600\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -9.181095\n", " \n", " \n", " coef_visit_tour_departure_shift_effects\n", - " -0.109515\n", + " 0.136717\n", + " 0.136717\n", " 0.096880\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.109515\n", " \n", " \n", " coef_visit_tour_duration_shift_effects\n", - " -0.123814\n", + " 0.172436\n", + " 0.172436\n", " 0.163800\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.123814\n", " \n", " \n", "\n", "" ], "text/plain": [ - " value initvalue \\\n", - "coef_adjacent_window_exists_after_this_arrival_... -13.526580 -0.025700 \n", - "coef_adjacent_window_exists_after_this_arrival_... -14.169341 -0.027340 \n", - "coef_adjacent_window_exists_before_this_departu... -13.495922 0.008442 \n", - "coef_adjacent_window_exists_before_this_departu... -7.716247 -0.059300 \n", - "coef_adult_with_children_in_hh_arrive_19_21 -0.002541 0.336000 \n", - "coef_arrival_constants_am_peak 4.647673 -8.728880 \n", - "coef_arrival_constants_early 24.793142 -8.728880 \n", - "coef_arrival_constants_evening -4.291783 -2.748940 \n", - "coef_arrival_constants_late -9.617038 -4.242530 \n", + " value best \\\n", + "param_name \n", + "coef_adjacent_window_exists_after_this_arrival_... 0.800851 0.800851 \n", + "coef_adjacent_window_exists_after_this_arrival_... 0.494438 0.494438 \n", + "coef_adjacent_window_exists_before_this_departu... 0.008839 0.008839 \n", + "coef_adjacent_window_exists_before_this_departu... -0.549692 -0.549692 \n", + "coef_adult_with_children_in_hh_arrive_19_21 -0.078997 -0.078997 \n", + "coef_arrival_constants_am_peak -8.413713 -8.413713 \n", + "coef_arrival_constants_early -6.758955 -6.758955 \n", + "coef_arrival_constants_evening -2.675953 -2.675953 \n", + "coef_arrival_constants_late -4.194942 -4.194942 \n", "coef_arrival_constants_midday_1 0.000000 0.000000 \n", - "coef_arrival_constants_midday_2 2.692519 1.408040 \n", - "coef_arrival_constants_pm_peak_1 1.849237 1.020360 \n", - "coef_arrival_constants_pm_peak_2 1.518410 1.068630 \n", + "coef_arrival_constants_midday_2 1.416723 1.416723 \n", + "coef_arrival_constants_pm_peak_1 0.964024 0.964024 \n", + "coef_arrival_constants_pm_peak_2 1.200835 1.200835 \n", "coef_arrival_constants_pm_peak_3 0.000000 0.000000 \n", - "coef_arrival_constants_pm_peak_4 -1.182768 -0.596260 \n", - "coef_departure_constants_am_peak_1 -25.000000 -11.595050 \n", - "coef_departure_constants_am_peak_2 -4.236849 -9.005190 \n", - "coef_departure_constants_am_peak_3 0.806223 -2.733150 \n", - "coef_departure_constants_am_peak_4 1.408142 0.266540 \n", - "coef_departure_constants_early -24.418086 -14.477080 \n", - "coef_departure_constants_evening -14.557517 -18.987370 \n", - "coef_departure_constants_late -20.421814 -20.278070 \n", + "coef_arrival_constants_pm_peak_4 -0.725959 -0.725959 \n", + "coef_departure_constants_am_peak_1 -13.990759 -13.990759 \n", + "coef_departure_constants_am_peak_2 -10.163788 -10.163788 \n", + "coef_departure_constants_am_peak_3 -2.799430 -2.799430 \n", + "coef_departure_constants_am_peak_4 0.514393 0.514393 \n", + "coef_departure_constants_early -17.865880 -17.865880 \n", + "coef_departure_constants_evening -19.574287 -19.574287 \n", + "coef_departure_constants_late -21.444922 -21.444922 \n", "coef_departure_constants_midday_1 0.000000 0.000000 \n", - "coef_departure_constants_midday_2 -4.501238 -1.602600 \n", - "coef_departure_constants_pm_peak -12.638403 -17.695980 \n", - "coef_destination_in_cbd_duration_shift_effects 0.572330 0.106700 \n", - "coef_discretionary_tour_duration_lt_2_hours -1.022488 -0.697400 \n", - "coef_duration_constants_0_to_1_hours -2.750481 -2.228260 \n", - "coef_duration_constants_11_to_13_hours -6.162737 -0.815190 \n", - "coef_duration_constants_14_to_18_hours -2.800706 -2.738440 \n", + "coef_departure_constants_midday_2 -1.886316 -1.886316 \n", + "coef_departure_constants_pm_peak -18.238556 -18.238556 \n", + "coef_destination_in_cbd_duration_shift_effects 0.130935 0.130935 \n", + "coef_discretionary_tour_duration_lt_2_hours -0.772425 -0.772425 \n", + "coef_duration_constants_0_to_1_hours -2.021348 -2.021348 \n", + "coef_duration_constants_11_to_13_hours -1.608105 -1.608105 \n", + "coef_duration_constants_14_to_18_hours -3.067613 -3.067613 \n", "coef_duration_constants_2_to_3_hours 0.000000 0.000000 \n", - "coef_duration_constants_4_to_5_hours 0.301145 -0.561740 \n", - "coef_duration_constants_6_to_7_hours 0.144072 -0.655470 \n", - "coef_duration_constants_8_to_10_hours -10.570858 -0.740620 \n", - "coef_eat_out_tour_departure_shift_effects -0.024649 0.075490 \n", - "coef_first_of_2_plus_tours_for_same_purpose_dep... -1.329351 -0.236400 \n", - "coef_free_flow_round_trip_auto_time_shift_effec... 0.017752 0.003195 \n", - "coef_maintenance_tour_depart_before_7 1.154584 -0.882600 \n", - "coef_maintenance_tour_departure_shift_effects -0.159210 -0.148900 \n", - "coef_maintenance_tour_duration_shift_effects -0.146459 -0.083720 \n", - "coef_number_of_joint_tours_departure_shift_effects 1.356173 0.052080 \n", - "coef_number_of_mandatory_tours_departure_shift_... 0.076326 0.046730 \n", - "coef_school_child_age_16_plus_departure_shift_e... 0.072660 0.072660 \n", - "coef_school_child_age_16_plus_duration_shift_ef... 0.209500 0.209500 \n", - "coef_school_child_age_under_16_departure_shift_... 0.239007 0.046570 \n", - "coef_school_child_age_under_16_duration_shift_e... -0.567863 0.327200 \n", - "coef_school_child_under_16_arrive_after_22 -6.147237 -1.180000 \n", - "coef_shopping_tour_arrive_after_22 -7.221041 -0.602700 \n", - "coef_shopping_tour_depart_before_8 1.458488 -1.037000 \n", - "coef_shopping_tour_departure_shift_effects -0.045633 -0.060150 \n", - "coef_shopping_tour_duration_lt_2_hours 0.189427 0.516800 \n", - "coef_shopping_tour_duration_shift_effects -0.359705 -0.120800 \n", - "coef_some_previously_scheduled_tour_begins_in_t... 0.411979 -0.399200 \n", - "coef_some_previously_scheduled_tour_ends_in_thi... 0.282029 -0.456200 \n", - "coef_subsequent_of_2_plus_tours_for_same_purpos... 0.191264 -0.173100 \n", + "coef_duration_constants_4_to_5_hours -0.519561 -0.519561 \n", + "coef_duration_constants_6_to_7_hours -0.868309 -0.868309 \n", + "coef_duration_constants_8_to_10_hours -1.020095 -1.020095 \n", + "coef_eat_out_tour_departure_shift_effects 0.056578 0.056578 \n", + "coef_first_of_2_plus_tours_for_same_purpose_dep... -0.506782 -0.506782 \n", + "coef_free_flow_round_trip_auto_time_shift_effec... 0.003622 0.003622 \n", + "coef_maintenance_tour_depart_before_7 -0.523693 -0.523693 \n", + "coef_maintenance_tour_departure_shift_effects -0.135634 -0.135634 \n", + "coef_maintenance_tour_duration_shift_effects -0.038428 -0.038428 \n", + "coef_number_of_joint_tours_departure_shift_effects 0.128742 0.128742 \n", + "coef_number_of_mandatory_tours_departure_shift_... -0.009788 -0.009788 \n", + "coef_school_child_age_16_plus_departure_shift_e... 0.106395 0.106395 \n", + "coef_school_child_age_16_plus_duration_shift_ef... 0.315781 0.315781 \n", + "coef_school_child_age_under_16_departure_shift_... 0.015473 0.015473 \n", + "coef_school_child_age_under_16_duration_shift_e... 0.327527 0.327527 \n", + "coef_school_child_under_16_arrive_after_22 -5.038827 -5.038827 \n", + "coef_shopping_tour_arrive_after_22 -0.033268 -0.033268 \n", + "coef_shopping_tour_depart_before_8 -1.484109 -1.484109 \n", + "coef_shopping_tour_departure_shift_effects -0.099254 -0.099254 \n", + "coef_shopping_tour_duration_lt_2_hours 0.699700 0.699700 \n", + "coef_shopping_tour_duration_shift_effects -0.101207 -0.101207 \n", + "coef_some_previously_scheduled_tour_begins_in_t... -0.017681 -0.017681 \n", + "coef_some_previously_scheduled_tour_ends_in_thi... -0.288048 -0.288048 \n", + "coef_subsequent_of_2_plus_tours_for_same_purpos... 0.062417 0.062417 \n", "coef_unavailable -999.000000 -999.000000 \n", - "coef_university_student_arrive_after_22 -9.181095 0.546600 \n", - "coef_visit_tour_departure_shift_effects -0.109515 0.096880 \n", - "coef_visit_tour_duration_shift_effects -0.123814 0.163800 \n", + "coef_university_student_arrive_after_22 0.360948 0.360948 \n", + "coef_visit_tour_departure_shift_effects 0.136717 0.136717 \n", + "coef_visit_tour_duration_shift_effects 0.172436 0.172436 \n", "\n", - " nullvalue minimum \\\n", - "coef_adjacent_window_exists_after_this_arrival_... 0.0 -25.0 \n", - "coef_adjacent_window_exists_after_this_arrival_... 0.0 -25.0 \n", - "coef_adjacent_window_exists_before_this_departu... 0.0 -25.0 \n", - "coef_adjacent_window_exists_before_this_departu... 0.0 -25.0 \n", - "coef_adult_with_children_in_hh_arrive_19_21 0.0 -25.0 \n", - "coef_arrival_constants_am_peak 0.0 -25.0 \n", - "coef_arrival_constants_early 0.0 -25.0 \n", - "coef_arrival_constants_evening 0.0 -25.0 \n", - "coef_arrival_constants_late 0.0 -25.0 \n", - "coef_arrival_constants_midday_1 0.0 -25.0 \n", - "coef_arrival_constants_midday_2 0.0 -25.0 \n", - "coef_arrival_constants_pm_peak_1 0.0 -25.0 \n", - "coef_arrival_constants_pm_peak_2 0.0 -25.0 \n", - "coef_arrival_constants_pm_peak_3 0.0 -25.0 \n", - "coef_arrival_constants_pm_peak_4 0.0 -25.0 \n", - "coef_departure_constants_am_peak_1 0.0 -25.0 \n", - "coef_departure_constants_am_peak_2 0.0 -25.0 \n", - "coef_departure_constants_am_peak_3 0.0 -25.0 \n", - "coef_departure_constants_am_peak_4 0.0 -25.0 \n", - "coef_departure_constants_early 0.0 -25.0 \n", - "coef_departure_constants_evening 0.0 -25.0 \n", - "coef_departure_constants_late 0.0 -25.0 \n", - "coef_departure_constants_midday_1 0.0 -25.0 \n", - "coef_departure_constants_midday_2 0.0 -25.0 \n", - "coef_departure_constants_pm_peak 0.0 -25.0 \n", - "coef_destination_in_cbd_duration_shift_effects 0.0 -25.0 \n", - "coef_discretionary_tour_duration_lt_2_hours 0.0 -25.0 \n", - "coef_duration_constants_0_to_1_hours 0.0 -25.0 \n", - "coef_duration_constants_11_to_13_hours 0.0 -25.0 \n", - "coef_duration_constants_14_to_18_hours 0.0 -25.0 \n", - "coef_duration_constants_2_to_3_hours 0.0 -25.0 \n", - "coef_duration_constants_4_to_5_hours 0.0 -25.0 \n", - "coef_duration_constants_6_to_7_hours 0.0 -25.0 \n", - "coef_duration_constants_8_to_10_hours 0.0 -25.0 \n", - "coef_eat_out_tour_departure_shift_effects 0.0 -25.0 \n", - "coef_first_of_2_plus_tours_for_same_purpose_dep... 0.0 -25.0 \n", - "coef_free_flow_round_trip_auto_time_shift_effec... 0.0 -25.0 \n", - "coef_maintenance_tour_depart_before_7 0.0 -25.0 \n", - "coef_maintenance_tour_departure_shift_effects 0.0 -25.0 \n", - "coef_maintenance_tour_duration_shift_effects 0.0 -25.0 \n", - "coef_number_of_joint_tours_departure_shift_effects 0.0 -25.0 \n", - "coef_number_of_mandatory_tours_departure_shift_... 0.0 -25.0 \n", - "coef_school_child_age_16_plus_departure_shift_e... 0.0 -25.0 \n", - "coef_school_child_age_16_plus_duration_shift_ef... 0.0 -25.0 \n", - "coef_school_child_age_under_16_departure_shift_... 0.0 -25.0 \n", - "coef_school_child_age_under_16_duration_shift_e... 0.0 -25.0 \n", - "coef_school_child_under_16_arrive_after_22 0.0 -25.0 \n", - "coef_shopping_tour_arrive_after_22 0.0 -25.0 \n", - "coef_shopping_tour_depart_before_8 0.0 -25.0 \n", - "coef_shopping_tour_departure_shift_effects 0.0 -25.0 \n", - "coef_shopping_tour_duration_lt_2_hours 0.0 -25.0 \n", - "coef_shopping_tour_duration_shift_effects 0.0 -25.0 \n", - "coef_some_previously_scheduled_tour_begins_in_t... 0.0 -25.0 \n", - "coef_some_previously_scheduled_tour_ends_in_thi... 0.0 -25.0 \n", - "coef_subsequent_of_2_plus_tours_for_same_purpos... 0.0 -25.0 \n", - "coef_unavailable 0.0 -25.0 \n", - "coef_university_student_arrive_after_22 0.0 -25.0 \n", - "coef_visit_tour_departure_shift_effects 0.0 -25.0 \n", - "coef_visit_tour_duration_shift_effects 0.0 -25.0 \n", + " initvalue minimum \\\n", + "param_name \n", + "coef_adjacent_window_exists_after_this_arrival_... -0.025700 -25.0 \n", + "coef_adjacent_window_exists_after_this_arrival_... -0.027340 -25.0 \n", + "coef_adjacent_window_exists_before_this_departu... 0.008442 -25.0 \n", + "coef_adjacent_window_exists_before_this_departu... -0.059300 -25.0 \n", + "coef_adult_with_children_in_hh_arrive_19_21 0.336000 -25.0 \n", + "coef_arrival_constants_am_peak -8.728880 -25.0 \n", + "coef_arrival_constants_early -8.728880 -25.0 \n", + "coef_arrival_constants_evening -2.748940 -25.0 \n", + "coef_arrival_constants_late -4.242530 -25.0 \n", + "coef_arrival_constants_midday_1 0.000000 0.0 \n", + "coef_arrival_constants_midday_2 1.408040 -25.0 \n", + "coef_arrival_constants_pm_peak_1 1.020360 -25.0 \n", + "coef_arrival_constants_pm_peak_2 1.068630 -25.0 \n", + "coef_arrival_constants_pm_peak_3 0.000000 0.0 \n", + "coef_arrival_constants_pm_peak_4 -0.596260 -25.0 \n", + "coef_departure_constants_am_peak_1 -11.595050 -25.0 \n", + "coef_departure_constants_am_peak_2 -9.005190 -25.0 \n", + "coef_departure_constants_am_peak_3 -2.733150 -25.0 \n", + "coef_departure_constants_am_peak_4 0.266540 -25.0 \n", + "coef_departure_constants_early -14.477080 -25.0 \n", + "coef_departure_constants_evening -18.987370 -25.0 \n", + "coef_departure_constants_late -20.278070 -25.0 \n", + "coef_departure_constants_midday_1 0.000000 0.0 \n", + "coef_departure_constants_midday_2 -1.602600 -25.0 \n", + "coef_departure_constants_pm_peak -17.695980 -25.0 \n", + "coef_destination_in_cbd_duration_shift_effects 0.106700 -25.0 \n", + "coef_discretionary_tour_duration_lt_2_hours -0.697400 -25.0 \n", + "coef_duration_constants_0_to_1_hours -2.228260 -25.0 \n", + "coef_duration_constants_11_to_13_hours -0.815190 -25.0 \n", + "coef_duration_constants_14_to_18_hours -2.738440 -25.0 \n", + "coef_duration_constants_2_to_3_hours 0.000000 0.0 \n", + "coef_duration_constants_4_to_5_hours -0.561740 -25.0 \n", + "coef_duration_constants_6_to_7_hours -0.655470 -25.0 \n", + "coef_duration_constants_8_to_10_hours -0.740620 -25.0 \n", + "coef_eat_out_tour_departure_shift_effects 0.075490 -25.0 \n", + "coef_first_of_2_plus_tours_for_same_purpose_dep... -0.236400 -25.0 \n", + "coef_free_flow_round_trip_auto_time_shift_effec... 0.003195 -25.0 \n", + "coef_maintenance_tour_depart_before_7 -0.882600 -25.0 \n", + "coef_maintenance_tour_departure_shift_effects -0.148900 -25.0 \n", + "coef_maintenance_tour_duration_shift_effects -0.083720 -25.0 \n", + "coef_number_of_joint_tours_departure_shift_effects 0.052080 -25.0 \n", + "coef_number_of_mandatory_tours_departure_shift_... 0.046730 -25.0 \n", + "coef_school_child_age_16_plus_departure_shift_e... 0.072660 -25.0 \n", + "coef_school_child_age_16_plus_duration_shift_ef... 0.209500 -25.0 \n", + "coef_school_child_age_under_16_departure_shift_... 0.046570 -25.0 \n", + "coef_school_child_age_under_16_duration_shift_e... 0.327200 -25.0 \n", + "coef_school_child_under_16_arrive_after_22 -1.180000 -25.0 \n", + "coef_shopping_tour_arrive_after_22 -0.602700 -25.0 \n", + "coef_shopping_tour_depart_before_8 -1.037000 -25.0 \n", + "coef_shopping_tour_departure_shift_effects -0.060150 -25.0 \n", + "coef_shopping_tour_duration_lt_2_hours 0.516800 -25.0 \n", + "coef_shopping_tour_duration_shift_effects -0.120800 -25.0 \n", + "coef_some_previously_scheduled_tour_begins_in_t... -0.399200 -25.0 \n", + "coef_some_previously_scheduled_tour_ends_in_thi... -0.456200 -25.0 \n", + "coef_subsequent_of_2_plus_tours_for_same_purpos... -0.173100 -25.0 \n", + "coef_unavailable -999.000000 -999.0 \n", + "coef_university_student_arrive_after_22 0.546600 -25.0 \n", + "coef_visit_tour_departure_shift_effects 0.096880 -25.0 \n", + "coef_visit_tour_duration_shift_effects 0.163800 -25.0 \n", "\n", - " maximum holdfast note \\\n", - "coef_adjacent_window_exists_after_this_arrival_... 25.0 0 \n", - "coef_adjacent_window_exists_after_this_arrival_... 25.0 0 \n", - "coef_adjacent_window_exists_before_this_departu... 25.0 0 \n", - "coef_adjacent_window_exists_before_this_departu... 25.0 0 \n", - "coef_adult_with_children_in_hh_arrive_19_21 25.0 0 \n", - "coef_arrival_constants_am_peak 25.0 0 \n", - "coef_arrival_constants_early 25.0 0 \n", - "coef_arrival_constants_evening 25.0 0 \n", - "coef_arrival_constants_late 25.0 0 \n", - "coef_arrival_constants_midday_1 25.0 1 \n", - "coef_arrival_constants_midday_2 25.0 0 \n", - "coef_arrival_constants_pm_peak_1 25.0 0 \n", - "coef_arrival_constants_pm_peak_2 25.0 0 \n", - "coef_arrival_constants_pm_peak_3 25.0 1 \n", - "coef_arrival_constants_pm_peak_4 25.0 0 \n", - "coef_departure_constants_am_peak_1 25.0 0 \n", - "coef_departure_constants_am_peak_2 25.0 0 \n", - "coef_departure_constants_am_peak_3 25.0 0 \n", - "coef_departure_constants_am_peak_4 25.0 0 \n", - "coef_departure_constants_early 25.0 0 \n", - "coef_departure_constants_evening 25.0 0 \n", - "coef_departure_constants_late 25.0 0 \n", - "coef_departure_constants_midday_1 25.0 1 \n", - "coef_departure_constants_midday_2 25.0 0 \n", - "coef_departure_constants_pm_peak 25.0 0 \n", - "coef_destination_in_cbd_duration_shift_effects 25.0 0 \n", - "coef_discretionary_tour_duration_lt_2_hours 25.0 0 \n", - "coef_duration_constants_0_to_1_hours 25.0 0 \n", - "coef_duration_constants_11_to_13_hours 25.0 0 \n", - "coef_duration_constants_14_to_18_hours 25.0 0 \n", - "coef_duration_constants_2_to_3_hours 25.0 1 \n", - "coef_duration_constants_4_to_5_hours 25.0 0 \n", - "coef_duration_constants_6_to_7_hours 25.0 0 \n", - "coef_duration_constants_8_to_10_hours 25.0 0 \n", - "coef_eat_out_tour_departure_shift_effects 25.0 0 \n", - "coef_first_of_2_plus_tours_for_same_purpose_dep... 25.0 0 \n", - "coef_free_flow_round_trip_auto_time_shift_effec... 25.0 0 \n", - "coef_maintenance_tour_depart_before_7 25.0 0 \n", - "coef_maintenance_tour_departure_shift_effects 25.0 0 \n", - "coef_maintenance_tour_duration_shift_effects 25.0 0 \n", - "coef_number_of_joint_tours_departure_shift_effects 25.0 0 \n", - "coef_number_of_mandatory_tours_departure_shift_... 25.0 0 \n", - "coef_school_child_age_16_plus_departure_shift_e... 25.0 0 \n", - "coef_school_child_age_16_plus_duration_shift_ef... 25.0 0 \n", - "coef_school_child_age_under_16_departure_shift_... 25.0 0 \n", - "coef_school_child_age_under_16_duration_shift_e... 25.0 0 \n", - "coef_school_child_under_16_arrive_after_22 25.0 0 \n", - "coef_shopping_tour_arrive_after_22 25.0 0 \n", - "coef_shopping_tour_depart_before_8 25.0 0 \n", - "coef_shopping_tour_departure_shift_effects 25.0 0 \n", - "coef_shopping_tour_duration_lt_2_hours 25.0 0 \n", - "coef_shopping_tour_duration_shift_effects 25.0 0 \n", - "coef_some_previously_scheduled_tour_begins_in_t... 25.0 0 \n", - "coef_some_previously_scheduled_tour_ends_in_thi... 25.0 0 \n", - "coef_subsequent_of_2_plus_tours_for_same_purpos... 25.0 0 \n", - "coef_unavailable 25.0 1 \n", - "coef_university_student_arrive_after_22 25.0 0 \n", - "coef_visit_tour_departure_shift_effects 25.0 0 \n", - "coef_visit_tour_duration_shift_effects 25.0 0 \n", + " maximum nullvalue \\\n", + "param_name \n", + "coef_adjacent_window_exists_after_this_arrival_... 25.0 0.0 \n", + "coef_adjacent_window_exists_after_this_arrival_... 25.0 0.0 \n", + "coef_adjacent_window_exists_before_this_departu... 25.0 0.0 \n", + "coef_adjacent_window_exists_before_this_departu... 25.0 0.0 \n", + "coef_adult_with_children_in_hh_arrive_19_21 25.0 0.0 \n", + "coef_arrival_constants_am_peak 25.0 0.0 \n", + "coef_arrival_constants_early 25.0 0.0 \n", + "coef_arrival_constants_evening 25.0 0.0 \n", + "coef_arrival_constants_late 25.0 0.0 \n", + "coef_arrival_constants_midday_1 0.0 0.0 \n", + "coef_arrival_constants_midday_2 25.0 0.0 \n", + "coef_arrival_constants_pm_peak_1 25.0 0.0 \n", + "coef_arrival_constants_pm_peak_2 25.0 0.0 \n", + "coef_arrival_constants_pm_peak_3 0.0 0.0 \n", + "coef_arrival_constants_pm_peak_4 25.0 0.0 \n", + "coef_departure_constants_am_peak_1 25.0 0.0 \n", + "coef_departure_constants_am_peak_2 25.0 0.0 \n", + "coef_departure_constants_am_peak_3 25.0 0.0 \n", + "coef_departure_constants_am_peak_4 25.0 0.0 \n", + "coef_departure_constants_early 25.0 0.0 \n", + "coef_departure_constants_evening 25.0 0.0 \n", + "coef_departure_constants_late 25.0 0.0 \n", + "coef_departure_constants_midday_1 0.0 0.0 \n", + "coef_departure_constants_midday_2 25.0 0.0 \n", + "coef_departure_constants_pm_peak 25.0 0.0 \n", + "coef_destination_in_cbd_duration_shift_effects 25.0 0.0 \n", + "coef_discretionary_tour_duration_lt_2_hours 25.0 0.0 \n", + "coef_duration_constants_0_to_1_hours 25.0 0.0 \n", + "coef_duration_constants_11_to_13_hours 25.0 0.0 \n", + "coef_duration_constants_14_to_18_hours 25.0 0.0 \n", + "coef_duration_constants_2_to_3_hours 0.0 0.0 \n", + "coef_duration_constants_4_to_5_hours 25.0 0.0 \n", + "coef_duration_constants_6_to_7_hours 25.0 0.0 \n", + "coef_duration_constants_8_to_10_hours 25.0 0.0 \n", + "coef_eat_out_tour_departure_shift_effects 25.0 0.0 \n", + "coef_first_of_2_plus_tours_for_same_purpose_dep... 25.0 0.0 \n", + "coef_free_flow_round_trip_auto_time_shift_effec... 25.0 0.0 \n", + "coef_maintenance_tour_depart_before_7 25.0 0.0 \n", + "coef_maintenance_tour_departure_shift_effects 25.0 0.0 \n", + "coef_maintenance_tour_duration_shift_effects 25.0 0.0 \n", + "coef_number_of_joint_tours_departure_shift_effects 25.0 0.0 \n", + "coef_number_of_mandatory_tours_departure_shift_... 25.0 0.0 \n", + "coef_school_child_age_16_plus_departure_shift_e... 25.0 0.0 \n", + "coef_school_child_age_16_plus_duration_shift_ef... 25.0 0.0 \n", + "coef_school_child_age_under_16_departure_shift_... 25.0 0.0 \n", + "coef_school_child_age_under_16_duration_shift_e... 25.0 0.0 \n", + "coef_school_child_under_16_arrive_after_22 25.0 0.0 \n", + "coef_shopping_tour_arrive_after_22 25.0 0.0 \n", + "coef_shopping_tour_depart_before_8 25.0 0.0 \n", + "coef_shopping_tour_departure_shift_effects 25.0 0.0 \n", + "coef_shopping_tour_duration_lt_2_hours 25.0 0.0 \n", + "coef_shopping_tour_duration_shift_effects 25.0 0.0 \n", + "coef_some_previously_scheduled_tour_begins_in_t... 25.0 0.0 \n", + "coef_some_previously_scheduled_tour_ends_in_thi... 25.0 0.0 \n", + "coef_subsequent_of_2_plus_tours_for_same_purpos... 25.0 0.0 \n", + "coef_unavailable -999.0 0.0 \n", + "coef_university_student_arrive_after_22 25.0 0.0 \n", + "coef_visit_tour_departure_shift_effects 25.0 0.0 \n", + "coef_visit_tour_duration_shift_effects 25.0 0.0 \n", "\n", - " best \n", - "coef_adjacent_window_exists_after_this_arrival_... -13.526580 \n", - "coef_adjacent_window_exists_after_this_arrival_... -14.169341 \n", - "coef_adjacent_window_exists_before_this_departu... -13.495922 \n", - "coef_adjacent_window_exists_before_this_departu... -7.716247 \n", - "coef_adult_with_children_in_hh_arrive_19_21 -0.002541 \n", - "coef_arrival_constants_am_peak 4.647673 \n", - "coef_arrival_constants_early 24.793142 \n", - "coef_arrival_constants_evening -4.291783 \n", - "coef_arrival_constants_late -9.617038 \n", - "coef_arrival_constants_midday_1 0.000000 \n", - "coef_arrival_constants_midday_2 2.692519 \n", - "coef_arrival_constants_pm_peak_1 1.849237 \n", - "coef_arrival_constants_pm_peak_2 1.518410 \n", - "coef_arrival_constants_pm_peak_3 0.000000 \n", - "coef_arrival_constants_pm_peak_4 -1.182768 \n", - "coef_departure_constants_am_peak_1 -25.000000 \n", - "coef_departure_constants_am_peak_2 -4.236849 \n", - "coef_departure_constants_am_peak_3 0.806223 \n", - "coef_departure_constants_am_peak_4 1.408142 \n", - "coef_departure_constants_early -24.418086 \n", - "coef_departure_constants_evening -14.557517 \n", - "coef_departure_constants_late -20.421814 \n", - "coef_departure_constants_midday_1 0.000000 \n", - "coef_departure_constants_midday_2 -4.501238 \n", - "coef_departure_constants_pm_peak -12.638403 \n", - "coef_destination_in_cbd_duration_shift_effects 0.572330 \n", - "coef_discretionary_tour_duration_lt_2_hours -1.022488 \n", - "coef_duration_constants_0_to_1_hours -2.750481 \n", - "coef_duration_constants_11_to_13_hours -6.162737 \n", - "coef_duration_constants_14_to_18_hours -2.800706 \n", - "coef_duration_constants_2_to_3_hours 0.000000 \n", - "coef_duration_constants_4_to_5_hours 0.301145 \n", - "coef_duration_constants_6_to_7_hours 0.144072 \n", - "coef_duration_constants_8_to_10_hours -10.570858 \n", - "coef_eat_out_tour_departure_shift_effects -0.024649 \n", - "coef_first_of_2_plus_tours_for_same_purpose_dep... -1.329351 \n", - "coef_free_flow_round_trip_auto_time_shift_effec... 0.017752 \n", - "coef_maintenance_tour_depart_before_7 1.154584 \n", - "coef_maintenance_tour_departure_shift_effects -0.159210 \n", - "coef_maintenance_tour_duration_shift_effects -0.146459 \n", - "coef_number_of_joint_tours_departure_shift_effects 1.356173 \n", - "coef_number_of_mandatory_tours_departure_shift_... 0.076326 \n", - "coef_school_child_age_16_plus_departure_shift_e... 0.072660 \n", - "coef_school_child_age_16_plus_duration_shift_ef... 0.209500 \n", - "coef_school_child_age_under_16_departure_shift_... 0.239007 \n", - "coef_school_child_age_under_16_duration_shift_e... -0.567863 \n", - "coef_school_child_under_16_arrive_after_22 -6.147237 \n", - "coef_shopping_tour_arrive_after_22 -7.221041 \n", - "coef_shopping_tour_depart_before_8 1.458488 \n", - "coef_shopping_tour_departure_shift_effects -0.045633 \n", - "coef_shopping_tour_duration_lt_2_hours 0.189427 \n", - "coef_shopping_tour_duration_shift_effects -0.359705 \n", - "coef_some_previously_scheduled_tour_begins_in_t... 0.411979 \n", - "coef_some_previously_scheduled_tour_ends_in_thi... 0.282029 \n", - "coef_subsequent_of_2_plus_tours_for_same_purpos... 0.191264 \n", - "coef_unavailable -999.000000 \n", - "coef_university_student_arrive_after_22 -9.181095 \n", - "coef_visit_tour_departure_shift_effects -0.109515 \n", - "coef_visit_tour_duration_shift_effects -0.123814 " + " holdfast \n", + "param_name \n", + "coef_adjacent_window_exists_after_this_arrival_... 0 \n", + "coef_adjacent_window_exists_after_this_arrival_... 0 \n", + "coef_adjacent_window_exists_before_this_departu... 0 \n", + "coef_adjacent_window_exists_before_this_departu... 0 \n", + "coef_adult_with_children_in_hh_arrive_19_21 0 \n", + "coef_arrival_constants_am_peak 0 \n", + "coef_arrival_constants_early 0 \n", + "coef_arrival_constants_evening 0 \n", + "coef_arrival_constants_late 0 \n", + "coef_arrival_constants_midday_1 1 \n", + "coef_arrival_constants_midday_2 0 \n", + "coef_arrival_constants_pm_peak_1 0 \n", + "coef_arrival_constants_pm_peak_2 0 \n", + "coef_arrival_constants_pm_peak_3 1 \n", + "coef_arrival_constants_pm_peak_4 0 \n", + "coef_departure_constants_am_peak_1 0 \n", + "coef_departure_constants_am_peak_2 0 \n", + "coef_departure_constants_am_peak_3 0 \n", + "coef_departure_constants_am_peak_4 0 \n", + "coef_departure_constants_early 0 \n", + "coef_departure_constants_evening 0 \n", + "coef_departure_constants_late 0 \n", + "coef_departure_constants_midday_1 1 \n", + "coef_departure_constants_midday_2 0 \n", + "coef_departure_constants_pm_peak 0 \n", + "coef_destination_in_cbd_duration_shift_effects 0 \n", + "coef_discretionary_tour_duration_lt_2_hours 0 \n", + "coef_duration_constants_0_to_1_hours 0 \n", + "coef_duration_constants_11_to_13_hours 0 \n", + "coef_duration_constants_14_to_18_hours 0 \n", + "coef_duration_constants_2_to_3_hours 1 \n", + "coef_duration_constants_4_to_5_hours 0 \n", + "coef_duration_constants_6_to_7_hours 0 \n", + "coef_duration_constants_8_to_10_hours 0 \n", + "coef_eat_out_tour_departure_shift_effects 0 \n", + "coef_first_of_2_plus_tours_for_same_purpose_dep... 0 \n", + "coef_free_flow_round_trip_auto_time_shift_effec... 0 \n", + "coef_maintenance_tour_depart_before_7 0 \n", + "coef_maintenance_tour_departure_shift_effects 0 \n", + "coef_maintenance_tour_duration_shift_effects 0 \n", + "coef_number_of_joint_tours_departure_shift_effects 0 \n", + "coef_number_of_mandatory_tours_departure_shift_... 0 \n", + "coef_school_child_age_16_plus_departure_shift_e... 0 \n", + "coef_school_child_age_16_plus_duration_shift_ef... 0 \n", + "coef_school_child_age_under_16_departure_shift_... 0 \n", + "coef_school_child_age_under_16_duration_shift_e... 0 \n", + "coef_school_child_under_16_arrive_after_22 0 \n", + "coef_shopping_tour_arrive_after_22 0 \n", + "coef_shopping_tour_depart_before_8 0 \n", + "coef_shopping_tour_departure_shift_effects 0 \n", + "coef_shopping_tour_duration_lt_2_hours 0 \n", + "coef_shopping_tour_duration_shift_effects 0 \n", + "coef_some_previously_scheduled_tour_begins_in_t... 0 \n", + "coef_some_previously_scheduled_tour_ends_in_thi... 0 \n", + "coef_subsequent_of_2_plus_tours_for_same_purpos... 0 \n", + "coef_unavailable 1 \n", + "coef_university_student_arrive_after_22 0 \n", + "coef_visit_tour_departure_shift_effects 0 \n", + "coef_visit_tour_duration_shift_effects 0 " ] }, "metadata": {}, @@ -2970,10 +3140,8 @@ "name": "stderr", "output_type": "stream", "text": [ - ":1: PossibleOverspecification: WARNING: Model is possibly over-specified (hessian is nearly singular).\n", - " model.estimate()\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.472441734021349e-17 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n" + "/Users/jpn/Git/est-mode/larch/src/larch/model/jaxmodel.py:1156: PossibleOverspecification: Model is possibly over-specified (hessian is nearly singular).\n", + " self.calculate_parameter_covariance()\n" ] }, { @@ -2989,39 +3157,39 @@ " \n", " \n", " coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction\n", - " -13.526580\n", + " 0.800851\n", " \n", " \n", " coef_adjacent_window_exists_after_this_arrival_hour_second_tour_interaction\n", - " -14.169341\n", + " 0.494438\n", " \n", " \n", " coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction\n", - " -13.495922\n", + " 0.008839\n", " \n", " \n", " coef_adjacent_window_exists_before_this_departure_hour_second_tour_interaction\n", - " -7.716247\n", + " -0.549692\n", " \n", " \n", " coef_adult_with_children_in_hh_arrive_19_21\n", - " -0.002541\n", + " -0.078997\n", " \n", " \n", " coef_arrival_constants_am_peak\n", - " 4.647673\n", + " -8.413713\n", " \n", " \n", " coef_arrival_constants_early\n", - " 24.793142\n", + " -6.758955\n", " \n", " \n", " coef_arrival_constants_evening\n", - " -4.291783\n", + " -2.675953\n", " \n", " \n", " coef_arrival_constants_late\n", - " -9.617038\n", + " -4.194942\n", " \n", " \n", " coef_arrival_constants_midday_1\n", @@ -3029,15 +3197,15 @@ " \n", " \n", " coef_arrival_constants_midday_2\n", - " 2.692519\n", + " 1.416723\n", " \n", " \n", " coef_arrival_constants_pm_peak_1\n", - " 1.849237\n", + " 0.964024\n", " \n", " \n", " coef_arrival_constants_pm_peak_2\n", - " 1.518410\n", + " 1.200835\n", " \n", " \n", " coef_arrival_constants_pm_peak_3\n", @@ -3045,35 +3213,35 @@ " \n", " \n", " coef_arrival_constants_pm_peak_4\n", - " -1.182768\n", + " -0.725959\n", " \n", " \n", " coef_departure_constants_am_peak_1\n", - " -25.000000\n", + " -13.990759\n", " \n", " \n", " coef_departure_constants_am_peak_2\n", - " -4.236849\n", + " -10.163788\n", " \n", " \n", " coef_departure_constants_am_peak_3\n", - " 0.806223\n", + " -2.799430\n", " \n", " \n", " coef_departure_constants_am_peak_4\n", - " 1.408142\n", + " 0.514393\n", " \n", " \n", " coef_departure_constants_early\n", - " -24.418086\n", + " -17.865880\n", " \n", " \n", " coef_departure_constants_evening\n", - " -14.557517\n", + " -19.574287\n", " \n", " \n", " coef_departure_constants_late\n", - " -20.421814\n", + " -21.444922\n", " \n", " \n", " coef_departure_constants_midday_1\n", @@ -3081,31 +3249,31 @@ " \n", " \n", " coef_departure_constants_midday_2\n", - " -4.501238\n", + " -1.886316\n", " \n", " \n", " coef_departure_constants_pm_peak\n", - " -12.638403\n", + " -18.238556\n", " \n", " \n", " coef_destination_in_cbd_duration_shift_effects\n", - " 0.572330\n", + " 0.130935\n", " \n", " \n", " coef_discretionary_tour_duration_lt_2_hours\n", - " -1.022488\n", + " -0.772425\n", " \n", " \n", " coef_duration_constants_0_to_1_hours\n", - " -2.750481\n", + " -2.021348\n", " \n", " \n", " coef_duration_constants_11_to_13_hours\n", - " -6.162737\n", + " -1.608105\n", " \n", " \n", " coef_duration_constants_14_to_18_hours\n", - " -2.800706\n", + " -3.067613\n", " \n", " \n", " coef_duration_constants_2_to_3_hours\n", @@ -3113,118 +3281,118 @@ " \n", " \n", " coef_duration_constants_4_to_5_hours\n", - " 0.301145\n", + " -0.519561\n", " \n", " \n", " coef_duration_constants_6_to_7_hours\n", - " 0.144072\n", + " -0.868309\n", " \n", " \n", " coef_duration_constants_8_to_10_hours\n", - " -10.570858\n", + " -1.020095\n", " \n", " \n", " coef_eat_out_tour_departure_shift_effects\n", - " -0.024649\n", + " 0.056578\n", " \n", " \n", " coef_first_of_2_plus_tours_for_same_purpose_departure_shift_effect\n", - " -1.329351\n", + " -0.506782\n", " \n", " \n", " coef_free_flow_round_trip_auto_time_shift_effects_duration\n", - " 0.017752\n", + " 0.003622\n", " \n", " \n", " coef_maintenance_tour_depart_before_7\n", - " 1.154584\n", + " -0.523693\n", " \n", " \n", " coef_maintenance_tour_departure_shift_effects\n", - " -0.159210\n", + " -0.135634\n", " \n", " \n", " coef_maintenance_tour_duration_shift_effects\n", - " -0.146459\n", + " -0.038428\n", " \n", " \n", " coef_number_of_joint_tours_departure_shift_effects\n", - " 1.356173\n", + " 0.128742\n", " \n", " \n", " coef_number_of_mandatory_tours_departure_shift_effects\n", - " 0.076326\n", + " -0.009788\n", " \n", " \n", " coef_school_child_age_16_plus_departure_shift_effects\n", - " 0.072660\n", + " 0.106395\n", " \n", " \n", " coef_school_child_age_16_plus_duration_shift_effects\n", - " 0.209500\n", + " 0.315781\n", " \n", " \n", " coef_school_child_age_under_16_departure_shift_effects\n", - " 0.239007\n", + " 0.015473\n", " \n", " \n", " coef_school_child_age_under_16_duration_shift_effects\n", - " -0.567863\n", + " 0.327527\n", " \n", " \n", " coef_school_child_under_16_arrive_after_22\n", - " -6.147237\n", + " -5.038827\n", " \n", " \n", " coef_shopping_tour_arrive_after_22\n", - " -7.221041\n", + " -0.033268\n", " \n", " \n", " coef_shopping_tour_depart_before_8\n", - " 1.458488\n", + " -1.484109\n", " \n", " \n", " coef_shopping_tour_departure_shift_effects\n", - " -0.045633\n", + " -0.099254\n", " \n", " \n", " coef_shopping_tour_duration_lt_2_hours\n", - " 0.189427\n", + " 0.699700\n", " \n", " \n", " coef_shopping_tour_duration_shift_effects\n", - " -0.359705\n", + " -0.101207\n", " \n", " \n", " coef_some_previously_scheduled_tour_begins_in_this_arrival_hour\n", - " 0.411979\n", + " -0.017681\n", " \n", " \n", " coef_some_previously_scheduled_tour_ends_in_this_departure_hour\n", - " 0.282029\n", + " -0.288048\n", " \n", " \n", " coef_subsequent_of_2_plus_tours_for_same_purpose_duration_shift_effect\n", - " 0.191264\n", + " 0.062417\n", " \n", " \n", " coef_unavailable\n", - " -25.000000\n", + " -999.000000\n", " \n", " \n", " coef_university_student_arrive_after_22\n", - " -9.181095\n", + " 0.360948\n", " \n", " \n", " coef_visit_tour_departure_shift_effects\n", - " -0.109515\n", + " 0.136717\n", " \n", " \n", " coef_visit_tour_duration_shift_effects\n", - " -0.123814\n", + " 0.172436\n", " \n", " \n", - "loglike-173.82837615906058d_loglike\n", + "
logloss2.1895702975048073d_logloss\n", " \n", " \n", " \n", @@ -3234,39 +3402,39 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3274,15 +3442,15 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3290,35 +3458,35 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3326,31 +3494,31 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3358,99 +3526,99 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3458,161 +3626,161 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - "
coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction-9.350492e-076.340297e-05
coef_adjacent_window_exists_after_this_arrival_hour_second_tour_interaction-3.831848e-074.838604e-05
coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction-1.411114e-062.000787e-08
coef_adjacent_window_exists_before_this_departure_hour_second_tour_interaction-8.562988e-066.385755e-05
coef_adult_with_children_in_hh_arrive_19_219.515373e-051.672535e-04
coef_arrival_constants_am_peak-5.959256e-054.015659e-05
coef_arrival_constants_early-6.500054e-05-7.121334e-05
coef_arrival_constants_evening2.456794e-041.588972e-05
coef_arrival_constants_late-2.788545e-041.960950e-04
coef_arrival_constants_midday_1
coef_arrival_constants_midday_2-2.921253e-05-7.425169e-06
coef_arrival_constants_pm_peak_1-8.553639e-05-8.554627e-05
coef_arrival_constants_pm_peak_22.958919e-05-2.178755e-05
coef_arrival_constants_pm_peak_3
coef_arrival_constants_pm_peak_4-6.027051e-063.187347e-05
coef_departure_constants_am_peak_1-9.035869e-057.176011e-06
coef_departure_constants_am_peak_2-3.843278e-071.002541e-04
coef_departure_constants_am_peak_3-1.038927e-045.286380e-05
coef_departure_constants_am_peak_42.089562e-055.196924e-06
coef_departure_constants_early2.533008e-05-4.734722e-05
coef_departure_constants_evening9.169928e-06-5.250786e-05
coef_departure_constants_late-5.558022e-044.394692e-05
coef_departure_constants_midday_1
coef_departure_constants_midday_22.692412e-05-1.886914e-04
coef_departure_constants_pm_peak1.942225e-043.759255e-05
coef_destination_in_cbd_duration_shift_effects3.441152e-041.613685e-05
coef_discretionary_tour_duration_lt_2_hours7.722617e-05-2.070609e-04
coef_duration_constants_0_to_1_hours-1.588601e-044.953135e-05
coef_duration_constants_11_to_13_hours-3.605513e-042.382282e-05
coef_duration_constants_14_to_18_hours-1.774351e-04-3.488047e-05
coef_duration_constants_2_to_3_hours
coef_duration_constants_4_to_5_hours2.266202e-05-7.768694e-07
coef_duration_constants_6_to_7_hours-4.640922e-05-1.838870e-05
coef_duration_constants_8_to_10_hours-2.554467e-05-2.938670e-05
coef_eat_out_tour_departure_shift_effects-3.267677e-042.917206e-05
coef_first_of_2_plus_tours_for_same_purpose_departure_shift_effect-1.021958e-059.739371e-05
coef_free_flow_round_trip_auto_time_shift_effects_duration8.421848e-03-1.212989e-05
coef_maintenance_tour_depart_before_7-1.129004e-048.298165e-06
coef_maintenance_tour_departure_shift_effects-2.093211e-031.059914e-04
coef_maintenance_tour_duration_shift_effects2.786266e-042.022297e-05
coef_number_of_joint_tours_departure_shift_effects-2.856908e-03-1.252624e-04
coef_number_of_mandatory_tours_departure_shift_effects-2.687845e-03-1.288240e-04
coef_school_child_age_16_plus_departure_shift_effects0.000000e+001.808366e-04
coef_school_child_age_16_plus_duration_shift_effects0.000000e+004.559202e-05
coef_school_child_age_under_16_departure_shift_effects-1.932195e-04-1.455769e-05
coef_school_child_age_under_16_duration_shift_effects1.479815e-04-4.476322e-05
coef_school_child_under_16_arrive_after_22-9.565965e-05-4.170945e-05
coef_shopping_tour_arrive_after_22-7.152259e-05-8.668123e-05
coef_shopping_tour_depart_before_8-3.306479e-056.613654e-05
coef_shopping_tour_departure_shift_effects-2.740920e-049.925783e-05
coef_shopping_tour_duration_lt_2_hours3.816925e-058.629531e-05
coef_shopping_tour_duration_shift_effects1.258312e-041.970358e-05
coef_some_previously_scheduled_tour_begins_in_this_arrival_hour3.226289e-056.069742e-05
coef_some_previously_scheduled_tour_ends_in_this_departure_hour3.161563e-043.334213e-05
coef_subsequent_of_2_plus_tours_for_same_purpose_duration_shift_effect1.181360e-05-1.230984e-04
coef_unavailable
coef_university_student_arrive_after_22-2.193359e-06-5.714988e-05
coef_visit_tour_departure_shift_effects-4.986513e-04-1.378200e-04
coef_visit_tour_duration_shift_effects2.469947e-04-2.132350e-05
nit67nfev106njev67status0message'Optimization terminated successfully'successTrueelapsed_time0:00:00.587568method'slsqp'n_cases91iteration_number67logloss1.9102019358138524" + "nit144nfev148njev144status0message'Optimization terminated successfully'successTrueelapsed_time0:00:03.104941method'slsqp'n_cases1277iteration_number144loglike-2789.5125590211246" ], "text/plain": [ - "┣ x: coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction -13.526580\n", - "┃ coef_adjacent_window_exists_after_this_arrival_hour_second_tour_interaction -14.169341\n", - "┃ coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction -13.495922\n", - "┃ coef_adjacent_window_exists_before_this_departure_hour_second_tour_interaction -7.716247\n", - "┃ coef_adult_with_children_in_hh_arrive_19_21 -0.002541\n", - "┃ coef_arrival_constants_am_peak 4.647673\n", - "┃ coef_arrival_constants_early 24.793142\n", - "┃ coef_arrival_constants_evening -4.291783\n", - "┃ coef_arrival_constants_late -9.617038\n", - "┃ coef_arrival_constants_midday_1 0.000000\n", - "┃ coef_arrival_constants_midday_2 2.692519\n", - "┃ coef_arrival_constants_pm_peak_1 1.849237\n", - "┃ coef_arrival_constants_pm_peak_2 1.518410\n", - "┃ coef_arrival_constants_pm_peak_3 0.000000\n", - "┃ coef_arrival_constants_pm_peak_4 -1.182768\n", - "┃ coef_departure_constants_am_peak_1 -25.000000\n", - "┃ coef_departure_constants_am_peak_2 -4.236849\n", - "┃ coef_departure_constants_am_peak_3 0.806223\n", - "┃ coef_departure_constants_am_peak_4 1.408142\n", - "┃ coef_departure_constants_early -24.418086\n", - "┃ coef_departure_constants_evening -14.557517\n", - "┃ coef_departure_constants_late -20.421814\n", - "┃ coef_departure_constants_midday_1 0.000000\n", - "┃ coef_departure_constants_midday_2 -4.501238\n", - "┃ coef_departure_constants_pm_peak -12.638403\n", - "┃ coef_destination_in_cbd_duration_shift_effects 0.572330\n", - "┃ coef_discretionary_tour_duration_lt_2_hours -1.022488\n", - "┃ coef_duration_constants_0_to_1_hours -2.750481\n", - "┃ coef_duration_constants_11_to_13_hours -6.162737\n", - "┃ coef_duration_constants_14_to_18_hours -2.800706\n", - "┃ coef_duration_constants_2_to_3_hours 0.000000\n", - "┃ coef_duration_constants_4_to_5_hours 0.301145\n", - "┃ coef_duration_constants_6_to_7_hours 0.144072\n", - "┃ coef_duration_constants_8_to_10_hours -10.570858\n", - "┃ coef_eat_out_tour_departure_shift_effects -0.024649\n", - "┃ coef_first_of_2_plus_tours_for_same_purpose_departure_shift_effect -1.329351\n", - "┃ coef_free_flow_round_trip_auto_time_shift_effects_duration 0.017752\n", - "┃ coef_maintenance_tour_depart_before_7 1.154584\n", - "┃ coef_maintenance_tour_departure_shift_effects -0.159210\n", - "┃ coef_maintenance_tour_duration_shift_effects -0.146459\n", - "┃ coef_number_of_joint_tours_departure_shift_effects 1.356173\n", - "┃ coef_number_of_mandatory_tours_departure_shift_effects 0.076326\n", - "┃ coef_school_child_age_16_plus_departure_shift_effects 0.072660\n", - "┃ coef_school_child_age_16_plus_duration_shift_effects 0.209500\n", - "┃ coef_school_child_age_under_16_departure_shift_effects 0.239007\n", - "┃ coef_school_child_age_under_16_duration_shift_effects -0.567863\n", - "┃ coef_school_child_under_16_arrive_after_22 -6.147237\n", - "┃ coef_shopping_tour_arrive_after_22 -7.221041\n", - "┃ coef_shopping_tour_depart_before_8 1.458488\n", - "┃ coef_shopping_tour_departure_shift_effects -0.045633\n", - "┃ coef_shopping_tour_duration_lt_2_hours 0.189427\n", - "┃ coef_shopping_tour_duration_shift_effects -0.359705\n", - "┃ coef_some_previously_scheduled_tour_begins_in_this_arrival_hour 0.411979\n", - "┃ coef_some_previously_scheduled_tour_ends_in_this_departure_hour 0.282029\n", - "┃ coef_subsequent_of_2_plus_tours_for_same_purpose_duration_shift_effect 0.191264\n", - "┃ coef_unavailable -25.000000\n", - "┃ coef_university_student_arrive_after_22 -9.181095\n", - "┃ coef_visit_tour_departure_shift_effects -0.109515\n", - "┃ coef_visit_tour_duration_shift_effects -0.123814\n", + "┣ x: coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction 0.800851\n", + "┃ coef_adjacent_window_exists_after_this_arrival_hour_second_tour_interaction 0.494438\n", + "┃ coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction 0.008839\n", + "┃ coef_adjacent_window_exists_before_this_departure_hour_second_tour_interaction -0.549692\n", + "┃ coef_adult_with_children_in_hh_arrive_19_21 -0.078997\n", + "┃ coef_arrival_constants_am_peak -8.413713\n", + "┃ coef_arrival_constants_early -6.758955\n", + "┃ coef_arrival_constants_evening -2.675953\n", + "┃ coef_arrival_constants_late -4.194942\n", + "┃ coef_arrival_constants_midday_1 0.000000\n", + "┃ coef_arrival_constants_midday_2 1.416723\n", + "┃ coef_arrival_constants_pm_peak_1 0.964024\n", + "┃ coef_arrival_constants_pm_peak_2 1.200835\n", + "┃ coef_arrival_constants_pm_peak_3 0.000000\n", + "┃ coef_arrival_constants_pm_peak_4 -0.725959\n", + "┃ coef_departure_constants_am_peak_1 -13.990759\n", + "┃ coef_departure_constants_am_peak_2 -10.163788\n", + "┃ coef_departure_constants_am_peak_3 -2.799430\n", + "┃ coef_departure_constants_am_peak_4 0.514393\n", + "┃ coef_departure_constants_early -17.865880\n", + "┃ coef_departure_constants_evening -19.574287\n", + "┃ coef_departure_constants_late -21.444922\n", + "┃ coef_departure_constants_midday_1 0.000000\n", + "┃ coef_departure_constants_midday_2 -1.886316\n", + "┃ coef_departure_constants_pm_peak -18.238556\n", + "┃ coef_destination_in_cbd_duration_shift_effects 0.130935\n", + "┃ coef_discretionary_tour_duration_lt_2_hours -0.772425\n", + "┃ coef_duration_constants_0_to_1_hours -2.021348\n", + "┃ coef_duration_constants_11_to_13_hours -1.608105\n", + "┃ coef_duration_constants_14_to_18_hours -3.067613\n", + "┃ coef_duration_constants_2_to_3_hours 0.000000\n", + "┃ coef_duration_constants_4_to_5_hours -0.519561\n", + "┃ coef_duration_constants_6_to_7_hours -0.868309\n", + "┃ coef_duration_constants_8_to_10_hours -1.020095\n", + "┃ coef_eat_out_tour_departure_shift_effects 0.056578\n", + "┃ coef_first_of_2_plus_tours_for_same_purpose_departure_shift_effect -0.506782\n", + "┃ coef_free_flow_round_trip_auto_time_shift_effects_duration 0.003622\n", + "┃ coef_maintenance_tour_depart_before_7 -0.523693\n", + "┃ coef_maintenance_tour_departure_shift_effects -0.135634\n", + "┃ coef_maintenance_tour_duration_shift_effects -0.038428\n", + "┃ coef_number_of_joint_tours_departure_shift_effects 0.128742\n", + "┃ coef_number_of_mandatory_tours_departure_shift_effects -0.009788\n", + "┃ coef_school_child_age_16_plus_departure_shift_effects 0.106395\n", + "┃ coef_school_child_age_16_plus_duration_shift_effects 0.315781\n", + "┃ coef_school_child_age_under_16_departure_shift_effects 0.015473\n", + "┃ coef_school_child_age_under_16_duration_shift_effects 0.327527\n", + "┃ coef_school_child_under_16_arrive_after_22 -5.038827\n", + "┃ coef_shopping_tour_arrive_after_22 -0.033268\n", + "┃ coef_shopping_tour_depart_before_8 -1.484109\n", + "┃ coef_shopping_tour_departure_shift_effects -0.099254\n", + "┃ coef_shopping_tour_duration_lt_2_hours 0.699700\n", + "┃ coef_shopping_tour_duration_shift_effects -0.101207\n", + "┃ coef_some_previously_scheduled_tour_begins_in_this_arrival_hour -0.017681\n", + "┃ coef_some_previously_scheduled_tour_ends_in_this_departure_hour -0.288048\n", + "┃ coef_subsequent_of_2_plus_tours_for_same_purpose_duration_shift_effect 0.062417\n", + "┃ coef_unavailable -999.000000\n", + "┃ coef_university_student_arrive_after_22 0.360948\n", + "┃ coef_visit_tour_departure_shift_effects 0.136717\n", + "┃ coef_visit_tour_duration_shift_effects 0.172436\n", "┃ dtype: float64\n", - "┣ loglike: -173.82837615906058\n", - "┣ d_loglike: coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction -9.350492e-07\n", - "┃ coef_adjacent_window_exists_after_this_arrival_hour_second_tour_interaction -3.831848e-07\n", - "┃ coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction -1.411114e-06\n", - "┃ coef_adjacent_window_exists_before_this_departure_hour_second_tour_interaction -8.562988e-06\n", - "┃ coef_adult_with_children_in_hh_arrive_19_21 9.515373e-05\n", - "┃ coef_arrival_constants_am_peak -5.959256e-05\n", - "┃ coef_arrival_constants_early -6.500054e-05\n", - "┃ coef_arrival_constants_evening 2.456794e-04\n", - "┃ coef_arrival_constants_late -2.788545e-04\n", + "┣ logloss: 2.1895702975048073\n", + "┣ d_logloss: coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction 6.340297e-05\n", + "┃ coef_adjacent_window_exists_after_this_arrival_hour_second_tour_interaction 4.838604e-05\n", + "┃ coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction 2.000787e-08\n", + "┃ coef_adjacent_window_exists_before_this_departure_hour_second_tour_interaction 6.385755e-05\n", + "┃ coef_adult_with_children_in_hh_arrive_19_21 1.672535e-04\n", + "┃ coef_arrival_constants_am_peak 4.015659e-05\n", + "┃ coef_arrival_constants_early -7.121334e-05\n", + "┃ coef_arrival_constants_evening 1.588972e-05\n", + "┃ coef_arrival_constants_late 1.960950e-04\n", "┃ coef_arrival_constants_midday_1 0.000000e+00\n", - "┃ coef_arrival_constants_midday_2 -2.921253e-05\n", - "┃ coef_arrival_constants_pm_peak_1 -8.553639e-05\n", - "┃ coef_arrival_constants_pm_peak_2 2.958919e-05\n", + "┃ coef_arrival_constants_midday_2 -7.425169e-06\n", + "┃ coef_arrival_constants_pm_peak_1 -8.554627e-05\n", + "┃ coef_arrival_constants_pm_peak_2 -2.178755e-05\n", "┃ coef_arrival_constants_pm_peak_3 0.000000e+00\n", - "┃ coef_arrival_constants_pm_peak_4 -6.027051e-06\n", - "┃ coef_departure_constants_am_peak_1 -9.035869e-05\n", - "┃ coef_departure_constants_am_peak_2 -3.843278e-07\n", - "┃ coef_departure_constants_am_peak_3 -1.038927e-04\n", - "┃ coef_departure_constants_am_peak_4 2.089562e-05\n", - "┃ coef_departure_constants_early 2.533008e-05\n", - "┃ coef_departure_constants_evening 9.169928e-06\n", - "┃ coef_departure_constants_late -5.558022e-04\n", + "┃ coef_arrival_constants_pm_peak_4 3.187347e-05\n", + "┃ coef_departure_constants_am_peak_1 7.176011e-06\n", + "┃ coef_departure_constants_am_peak_2 1.002541e-04\n", + "┃ coef_departure_constants_am_peak_3 5.286380e-05\n", + "┃ coef_departure_constants_am_peak_4 5.196924e-06\n", + "┃ coef_departure_constants_early -4.734722e-05\n", + "┃ coef_departure_constants_evening -5.250786e-05\n", + "┃ coef_departure_constants_late 4.394692e-05\n", "┃ coef_departure_constants_midday_1 0.000000e+00\n", - "┃ coef_departure_constants_midday_2 2.692412e-05\n", - "┃ coef_departure_constants_pm_peak 1.942225e-04\n", - "┃ coef_destination_in_cbd_duration_shift_effects 3.441152e-04\n", - "┃ coef_discretionary_tour_duration_lt_2_hours 7.722617e-05\n", - "┃ coef_duration_constants_0_to_1_hours -1.588601e-04\n", - "┃ coef_duration_constants_11_to_13_hours -3.605513e-04\n", - "┃ coef_duration_constants_14_to_18_hours -1.774351e-04\n", + "┃ coef_departure_constants_midday_2 -1.886914e-04\n", + "┃ coef_departure_constants_pm_peak 3.759255e-05\n", + "┃ coef_destination_in_cbd_duration_shift_effects 1.613685e-05\n", + "┃ coef_discretionary_tour_duration_lt_2_hours -2.070609e-04\n", + "┃ coef_duration_constants_0_to_1_hours 4.953135e-05\n", + "┃ coef_duration_constants_11_to_13_hours 2.382282e-05\n", + "┃ coef_duration_constants_14_to_18_hours -3.488047e-05\n", "┃ coef_duration_constants_2_to_3_hours 0.000000e+00\n", - "┃ coef_duration_constants_4_to_5_hours 2.266202e-05\n", - "┃ coef_duration_constants_6_to_7_hours -4.640922e-05\n", - "┃ coef_duration_constants_8_to_10_hours -2.554467e-05\n", - "┃ coef_eat_out_tour_departure_shift_effects -3.267677e-04\n", - "┃ coef_first_of_2_plus_tours_for_same_purpose_departure_shift_effect -1.021958e-05\n", - "┃ coef_free_flow_round_trip_auto_time_shift_effects_duration 8.421848e-03\n", - "┃ coef_maintenance_tour_depart_before_7 -1.129004e-04\n", - "┃ coef_maintenance_tour_departure_shift_effects -2.093211e-03\n", - "┃ coef_maintenance_tour_duration_shift_effects 2.786266e-04\n", - "┃ coef_number_of_joint_tours_departure_shift_effects -2.856908e-03\n", - "┃ coef_number_of_mandatory_tours_departure_shift_effects -2.687845e-03\n", - "┃ coef_school_child_age_16_plus_departure_shift_effects 0.000000e+00\n", - "┃ coef_school_child_age_16_plus_duration_shift_effects 0.000000e+00\n", - "┃ coef_school_child_age_under_16_departure_shift_effects -1.932195e-04\n", - "┃ coef_school_child_age_under_16_duration_shift_effects 1.479815e-04\n", - "┃ coef_school_child_under_16_arrive_after_22 -9.565965e-05\n", - "┃ coef_shopping_tour_arrive_after_22 -7.152259e-05\n", - "┃ coef_shopping_tour_depart_before_8 -3.306479e-05\n", - "┃ coef_shopping_tour_departure_shift_effects -2.740920e-04\n", - "┃ coef_shopping_tour_duration_lt_2_hours 3.816925e-05\n", - "┃ coef_shopping_tour_duration_shift_effects 1.258312e-04\n", - "┃ coef_some_previously_scheduled_tour_begins_in_this_arrival_hour 3.226289e-05\n", - "┃ coef_some_previously_scheduled_tour_ends_in_this_departure_hour 3.161563e-04\n", - "┃ coef_subsequent_of_2_plus_tours_for_same_purpose_duration_shift_effect 1.181360e-05\n", + "┃ coef_duration_constants_4_to_5_hours -7.768694e-07\n", + "┃ coef_duration_constants_6_to_7_hours -1.838870e-05\n", + "┃ coef_duration_constants_8_to_10_hours -2.938670e-05\n", + "┃ coef_eat_out_tour_departure_shift_effects 2.917206e-05\n", + "┃ coef_first_of_2_plus_tours_for_same_purpose_departure_shift_effect 9.739371e-05\n", + "┃ coef_free_flow_round_trip_auto_time_shift_effects_duration -1.212989e-05\n", + "┃ coef_maintenance_tour_depart_before_7 8.298165e-06\n", + "┃ coef_maintenance_tour_departure_shift_effects 1.059914e-04\n", + "┃ coef_maintenance_tour_duration_shift_effects 2.022297e-05\n", + "┃ coef_number_of_joint_tours_departure_shift_effects -1.252624e-04\n", + "┃ coef_number_of_mandatory_tours_departure_shift_effects -1.288240e-04\n", + "┃ coef_school_child_age_16_plus_departure_shift_effects 1.808366e-04\n", + "┃ coef_school_child_age_16_plus_duration_shift_effects 4.559202e-05\n", + "┃ coef_school_child_age_under_16_departure_shift_effects -1.455769e-05\n", + "┃ coef_school_child_age_under_16_duration_shift_effects -4.476322e-05\n", + "┃ coef_school_child_under_16_arrive_after_22 -4.170945e-05\n", + "┃ coef_shopping_tour_arrive_after_22 -8.668123e-05\n", + "┃ coef_shopping_tour_depart_before_8 6.613654e-05\n", + "┃ coef_shopping_tour_departure_shift_effects 9.925783e-05\n", + "┃ coef_shopping_tour_duration_lt_2_hours 8.629531e-05\n", + "┃ coef_shopping_tour_duration_shift_effects 1.970358e-05\n", + "┃ coef_some_previously_scheduled_tour_begins_in_this_arrival_hour 6.069742e-05\n", + "┃ coef_some_previously_scheduled_tour_ends_in_this_departure_hour 3.334213e-05\n", + "┃ coef_subsequent_of_2_plus_tours_for_same_purpose_duration_shift_effect -1.230984e-04\n", "┃ coef_unavailable 0.000000e+00\n", - "┃ coef_university_student_arrive_after_22 -2.193359e-06\n", - "┃ coef_visit_tour_departure_shift_effects -4.986513e-04\n", - "┃ coef_visit_tour_duration_shift_effects 2.469947e-04\n", + "┃ coef_university_student_arrive_after_22 -5.714988e-05\n", + "┃ coef_visit_tour_departure_shift_effects -1.378200e-04\n", + "┃ coef_visit_tour_duration_shift_effects -2.132350e-05\n", "┃ dtype: float64\n", - "┣ nit: 67\n", - "┣ nfev: 106\n", - "┣ njev: 67\n", + "┣ nit: 144\n", + "┣ nfev: 148\n", + "┣ njev: 144\n", "┣ status: 0\n", "┣ message: 'Optimization terminated successfully'\n", "┣ success: True\n", - "┣ elapsed_time: datetime.timedelta(microseconds=587568)\n", + "┣ elapsed_time: datetime.timedelta(seconds=3, microseconds=104941)\n", "┣ method: 'slsqp'\n", - "┣ n_cases: 91\n", - "┣ iteration_number: 67\n", - "┣ logloss: 1.9102019358138524" + "┣ n_cases: 1277\n", + "┣ iteration_number: 144\n", + "┣ loglike: -2789.5125590211246" ] }, - "execution_count": 8, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "model.estimate()" + "model.estimate(maxiter=900)" ] }, { @@ -3624,619 +3792,586 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Value Std Err t Stat Signif Like Ratio Null Value Constrained
coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction-13.5 1.03e+03-0.01 NA 0.00
coef_adjacent_window_exists_after_this_arrival_hour_second_tour_interaction-14.2 1.62e+03-0.01 NA 0.00
coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction-13.5 842.-0.02 NA 0.00
coef_adjacent_window_exists_before_this_departure_hour_second_tour_interaction-7.72 342.-0.02 NA 0.00
coef_adult_with_children_in_hh_arrive_19_21-0.00254 0.815-0.00 NA 0.00
coef_arrival_constants_am_peak 4.65 1.75 2.66** NA 0.00
coef_arrival_constants_early 24.8 1.71 14.53*** NA 0.00
coef_arrival_constants_evening-4.29 0.931-4.61*** NA 0.00
coef_arrival_constants_late-9.62 1.70-5.65*** NA 0.00
coef_arrival_constants_midday_1 0.00 NA NA NA 0.00fixed value
coef_arrival_constants_midday_2 2.69 0.752 3.58*** NA 0.00
coef_arrival_constants_pm_peak_1 1.85 0.647 2.86** NA 0.00
coef_arrival_constants_pm_peak_2 1.52 0.532 2.85** NA 0.00
coef_arrival_constants_pm_peak_3 0.00 NA NA NA 0.00fixed value
coef_arrival_constants_pm_peak_4-1.18 0.567-2.08* NA 0.00
coef_departure_constants_am_peak_1-25.0 NA NA[***] BIG 0.00coef_departure_constants_am_peak_1 ≥ -25.0
coef_departure_constants_am_peak_2-4.24 1.90-2.23* NA 0.00
coef_departure_constants_am_peak_3 0.806 1.29 0.62 NA 0.00
coef_departure_constants_am_peak_4 1.41 0.775 1.82 NA 0.00
coef_departure_constants_early-24.4 1.04-23.39*** NA 0.00
coef_departure_constants_evening-14.6 2.93-4.96*** NA 0.00
coef_departure_constants_late-20.4 42.5-0.48 NA 0.00
coef_departure_constants_midday_1 0.00 NA NA NA 0.00fixed value
coef_departure_constants_midday_2-4.50 1.17-3.85*** NA 0.00
coef_departure_constants_pm_peak-12.6 2.65-4.77*** NA 0.00
coef_destination_in_cbd_duration_shift_effects 0.572 0.222 2.58** NA 0.00
coef_discretionary_tour_duration_lt_2_hours-1.02 1.10-0.93 NA 0.00
coef_duration_constants_0_to_1_hours-2.75 0.678-4.05*** NA 0.00
coef_duration_constants_11_to_13_hours-6.16 52.7-0.12 NA 0.00
coef_duration_constants_14_to_18_hours-2.80 75.2-0.04 NA 0.00
coef_duration_constants_2_to_3_hours 0.00 NA NA NA 0.00fixed value
coef_duration_constants_4_to_5_hours 0.301 0.552 0.55 NA 0.00
coef_duration_constants_6_to_7_hours 0.144 1.03 0.14 NA 0.00
coef_duration_constants_8_to_10_hours-10.6 198.-0.05 NA 0.00
coef_eat_out_tour_departure_shift_effects-0.0246 0.146-0.17 NA 0.00
coef_first_of_2_plus_tours_for_same_purpose_departure_shift_effect-1.33 0.662-2.01* NA 0.00
coef_free_flow_round_trip_auto_time_shift_effects_duration 0.0178 0.00963 1.84 NA 0.00
coef_maintenance_tour_depart_before_7 1.15 1.69 0.68 NA 0.00
coef_maintenance_tour_departure_shift_effects-0.159 0.129-1.23 NA 0.00
coef_maintenance_tour_duration_shift_effects-0.146 0.234-0.62 NA 0.00
coef_number_of_joint_tours_departure_shift_effects 1.36 0.199 6.82*** NA 0.00
coef_number_of_mandatory_tours_departure_shift_effects 0.0763 0.0738 1.03 NA 0.00
coef_school_child_age_16_plus_departure_shift_effects 0.0727 6.26e-07 BIG*** NA 0.00
coef_school_child_age_16_plus_duration_shift_effects 0.209 2.94e-07 BIG*** NA 0.00
coef_school_child_age_under_16_departure_shift_effects 0.239 0.289 0.83 NA 0.00
coef_school_child_age_under_16_duration_shift_effects-0.568 0.535-1.06 NA 0.00
coef_school_child_under_16_arrive_after_22-6.15 102.-0.06 NA 0.00
coef_shopping_tour_arrive_after_22-7.22 118.-0.06 NA 0.00
coef_shopping_tour_depart_before_8 1.46 2.09 0.70 NA 0.00
coef_shopping_tour_departure_shift_effects-0.0456 0.177-0.26 NA 0.00
coef_shopping_tour_duration_lt_2_hours 0.189 1.14 0.17 NA 0.00
coef_shopping_tour_duration_shift_effects-0.360 0.344-1.04 NA 0.00
coef_some_previously_scheduled_tour_begins_in_this_arrival_hour 0.412 0.861 0.48 NA 0.00
coef_some_previously_scheduled_tour_ends_in_this_departure_hour 0.282 0.440 0.64 NA 0.00
coef_subsequent_of_2_plus_tours_for_same_purpose_duration_shift_effect 0.191 0.745 0.26 NA 0.00
coef_unavailable-999. NA NA NA 0.00fixed value
coef_university_student_arrive_after_22-9.18 675.-0.01 NA 0.00
coef_visit_tour_departure_shift_effects-0.110 0.135-0.81 NA 0.00
coef_visit_tour_duration_shift_effects-0.124 0.317-0.39 NA 0.00
" + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ValueStd Errt StatSignifNull ValueConstrained
Parameter      
coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction 0.801 3.59 0.22 0.00
coef_adjacent_window_exists_after_this_arrival_hour_second_tour_interaction 0.494 4.24 0.12 0.00
coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction 0.00884 198. 0.00 0.00
coef_adjacent_window_exists_before_this_departure_hour_second_tour_interaction-0.550 1.32-0.42 0.00
coef_adult_with_children_in_hh_arrive_19_21-0.0790 0.205-0.39 0.00
coef_arrival_constants_am_peak-8.41 19.7-0.43 0.00
coef_arrival_constants_early-6.76 19.7-0.34 0.00
coef_arrival_constants_evening-2.68 0.227-11.78*** 0.00
coef_arrival_constants_late-4.19 0.286-14.65*** 0.00
coef_arrival_constants_midday_1 0.00 0.00 NA 0.00fixed value
coef_arrival_constants_midday_2 1.42 0.133 10.62*** 0.00
coef_arrival_constants_pm_peak_1 0.964 0.146 6.59*** 0.00
coef_arrival_constants_pm_peak_2 1.20 0.131 9.17*** 0.00
coef_arrival_constants_pm_peak_3 0.00 0.00 NA 0.00fixed value
coef_arrival_constants_pm_peak_4-0.726 0.157-4.63*** 0.00
coef_departure_constants_am_peak_1-14.0 1.35-10.33*** 0.00
coef_departure_constants_am_peak_2-10.2 0.850-11.96*** 0.00
coef_departure_constants_am_peak_3-2.80 0.381-7.35*** 0.00
coef_departure_constants_am_peak_4 0.514 0.155 3.32*** 0.00
coef_departure_constants_early-17.9 1.63-10.95*** 0.00
coef_departure_constants_evening-19.6 19.7-0.99 0.00
coef_departure_constants_late-21.4 19.7-1.09 0.00
coef_departure_constants_midday_1 0.00 0.00 NA 0.00fixed value
coef_departure_constants_midday_2-1.89 0.244-7.72*** 0.00
coef_departure_constants_pm_peak-18.2 19.7-0.93 0.00
coef_destination_in_cbd_duration_shift_effects 0.131 0.0653 2.01* 0.00
coef_discretionary_tour_duration_lt_2_hours-0.772 0.233-3.32*** 0.00
coef_duration_constants_0_to_1_hours-2.02 0.171-11.83*** 0.00
coef_duration_constants_11_to_13_hours-1.61 0.861-1.87 0.00
coef_duration_constants_14_to_18_hours-3.07 4.80-0.64 0.00
coef_duration_constants_2_to_3_hours 0.00 0.00 NA 0.00fixed value
coef_duration_constants_4_to_5_hours-0.520 0.116-4.49*** 0.00
coef_duration_constants_6_to_7_hours-0.868 0.210-4.13*** 0.00
coef_duration_constants_8_to_10_hours-1.02 0.359-2.84** 0.00
coef_eat_out_tour_departure_shift_effects 0.0566 0.0437 1.29 0.00
coef_first_of_2_plus_tours_for_same_purpose_departure_shift_effect-0.507 0.511-0.99 0.00
coef_free_flow_round_trip_auto_time_shift_effects_duration 0.00362 0.00112 3.25** 0.00
coef_maintenance_tour_depart_before_7-0.524 0.819-0.64 0.00
coef_maintenance_tour_departure_shift_effects-0.136 0.0418-3.24** 0.00
coef_maintenance_tour_duration_shift_effects-0.0384 0.0575-0.67 0.00
coef_number_of_joint_tours_departure_shift_effects 0.129 0.0651 1.98* 0.00
coef_number_of_mandatory_tours_departure_shift_effects-0.00979 0.0303-0.32 0.00
coef_school_child_age_16_plus_departure_shift_effects 0.106 0.110 0.96 0.00
coef_school_child_age_16_plus_duration_shift_effects 0.316 0.131 2.40* 0.00
coef_school_child_age_under_16_departure_shift_effects 0.0155 0.0681 0.23 0.00
coef_school_child_age_under_16_duration_shift_effects 0.328 0.0792 4.13*** 0.00
coef_school_child_under_16_arrive_after_22-5.04 4.37-1.15 0.00
coef_shopping_tour_arrive_after_22-0.0333 0.576-0.06 0.00
coef_shopping_tour_depart_before_8-1.48 1.11-1.34 0.00
coef_shopping_tour_departure_shift_effects-0.0993 0.0762-1.30 0.00
coef_shopping_tour_duration_lt_2_hours 0.700 0.275 2.54* 0.00
coef_shopping_tour_duration_shift_effects-0.101 0.0665-1.52 0.00
coef_some_previously_scheduled_tour_begins_in_this_arrival_hour-0.0177 0.224-0.08 0.00
coef_some_previously_scheduled_tour_ends_in_this_departure_hour-0.288 0.121-2.38* 0.00
coef_subsequent_of_2_plus_tours_for_same_purpose_duration_shift_effect 0.0624 0.340 0.18 0.00
coef_unavailable-999. 0.00 NA 0.00fixed value
coef_university_student_arrive_after_22 0.361 0.694 0.52 0.00
coef_visit_tour_departure_shift_effects 0.137 0.0492 2.78** 0.00
coef_visit_tour_duration_shift_effects 0.172 0.0622 2.77** 0.00
\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 9, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -4257,7 +4392,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ @@ -4278,20 +4413,9 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "model.to_xlsx(\n", " result_dir/f\"{modelname}_model_estimation.xlsx\", \n", @@ -4310,7 +4434,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -4355,217 +4479,217 @@ " \n", " 2\n", " coef_free_flow_round_trip_auto_time_shift_effe...\n", - " 0.017752\n", + " 0.003622\n", " F\n", " \n", " \n", " 3\n", " coef_shopping_tour_departure_shift_effects\n", - " -0.045633\n", + " -0.099254\n", " F\n", " \n", " \n", " 4\n", " coef_shopping_tour_duration_shift_effects\n", - " -0.359705\n", + " -0.101207\n", " F\n", " \n", " \n", " 5\n", " coef_maintenance_tour_departure_shift_effects\n", - " -0.159210\n", + " -0.135634\n", " F\n", " \n", " \n", " 6\n", " coef_maintenance_tour_duration_shift_effects\n", - " -0.146459\n", + " -0.038428\n", " F\n", " \n", " \n", " 7\n", " coef_visit_tour_departure_shift_effects\n", - " -0.109515\n", + " 0.136717\n", " F\n", " \n", " \n", " 8\n", " coef_visit_tour_duration_shift_effects\n", - " -0.123814\n", + " 0.172436\n", " F\n", " \n", " \n", " 9\n", " coef_eat_out_tour_departure_shift_effects\n", - " -0.024649\n", + " 0.056578\n", " F\n", " \n", " \n", " 10\n", " coef_school_child_age_16_plus_departure_shift_...\n", - " 0.072660\n", + " 0.106395\n", " F\n", " \n", " \n", " 11\n", " coef_school_child_age_16_plus_duration_shift_e...\n", - " 0.209500\n", + " 0.315781\n", " F\n", " \n", " \n", " 12\n", " coef_school_child_age_under_16_departure_shift...\n", - " 0.239007\n", + " 0.015473\n", " F\n", " \n", " \n", " 13\n", " coef_school_child_age_under_16_duration_shift_...\n", - " -0.567863\n", + " 0.327527\n", " F\n", " \n", " \n", " 14\n", " coef_destination_in_cbd_duration_shift_effects\n", - " 0.572330\n", + " 0.130935\n", " F\n", " \n", " \n", " 15\n", " coef_number_of_mandatory_tours_departure_shift...\n", - " 0.076326\n", + " -0.009788\n", " F\n", " \n", " \n", " 16\n", " coef_number_of_joint_tours_departure_shift_eff...\n", - " 1.356173\n", + " 0.128742\n", " F\n", " \n", " \n", " 17\n", " coef_first_of_2_plus_tours_for_same_purpose_de...\n", - " -1.329351\n", + " -0.506782\n", " F\n", " \n", " \n", " 18\n", " coef_subsequent_of_2_plus_tours_for_same_purpo...\n", - " 0.191264\n", + " 0.062417\n", " F\n", " \n", " \n", " 19\n", " coef_maintenance_tour_depart_before_7\n", - " 1.154584\n", + " -0.523693\n", " F\n", " \n", " \n", " 20\n", " coef_shopping_tour_depart_before_8\n", - " 1.458488\n", + " -1.484109\n", " F\n", " \n", " \n", " 21\n", " coef_shopping_tour_arrive_after_22\n", - " -7.221041\n", + " -0.033268\n", " F\n", " \n", " \n", " 22\n", " coef_school_child_under_16_arrive_after_22\n", - " -6.147237\n", + " -5.038827\n", " F\n", " \n", " \n", " 23\n", " coef_university_student_arrive_after_22\n", - " -9.181095\n", + " 0.360948\n", " F\n", " \n", " \n", " 24\n", " coef_shopping_tour_duration_lt_2_hours\n", - " 0.189427\n", + " 0.699700\n", " F\n", " \n", " \n", " 25\n", " coef_discretionary_tour_duration_lt_2_hours\n", - " -1.022488\n", + " -0.772425\n", " F\n", " \n", " \n", " 26\n", " coef_adult_with_children_in_hh_arrive_19_21\n", - " -0.002541\n", + " -0.078997\n", " F\n", " \n", " \n", " 27\n", " coef_some_previously_scheduled_tour_ends_in_th...\n", - " 0.282029\n", + " -0.288048\n", " F\n", " \n", " \n", " 28\n", " coef_some_previously_scheduled_tour_begins_in_...\n", - " 0.411979\n", + " -0.017681\n", " F\n", " \n", " \n", " 29\n", " coef_adjacent_window_exists_before_this_depart...\n", - " -13.495922\n", + " 0.008839\n", " F\n", " \n", " \n", " 30\n", " coef_adjacent_window_exists_after_this_arrival...\n", - " -13.526580\n", + " 0.800851\n", " F\n", " \n", " \n", " 31\n", " coef_adjacent_window_exists_before_this_depart...\n", - " -7.716247\n", + " -0.549692\n", " F\n", " \n", " \n", " 32\n", " coef_adjacent_window_exists_after_this_arrival...\n", - " -14.169341\n", + " 0.494438\n", " F\n", " \n", " \n", " 33\n", " coef_departure_constants_early\n", - " -24.418086\n", + " -17.865880\n", " F\n", " \n", " \n", " 34\n", " coef_departure_constants_am_peak_1\n", - " -25.000000\n", + " -13.990759\n", " F\n", " \n", " \n", " 35\n", " coef_departure_constants_am_peak_2\n", - " -4.236849\n", + " -10.163788\n", " F\n", " \n", " \n", " 36\n", " coef_departure_constants_am_peak_3\n", - " 0.806223\n", + " -2.799430\n", " F\n", " \n", " \n", " 37\n", " coef_departure_constants_am_peak_4\n", - " 1.408142\n", + " 0.514393\n", " F\n", " \n", " \n", @@ -4577,37 +4701,37 @@ " \n", " 39\n", " coef_departure_constants_midday_2\n", - " -4.501238\n", + " -1.886316\n", " F\n", " \n", " \n", " 40\n", " coef_departure_constants_pm_peak\n", - " -12.638403\n", + " -18.238556\n", " F\n", " \n", " \n", " 41\n", " coef_departure_constants_evening\n", - " -14.557517\n", + " -19.574287\n", " F\n", " \n", " \n", " 42\n", " coef_departure_constants_late\n", - " -20.421814\n", + " -21.444922\n", " F\n", " \n", " \n", " 43\n", " coef_arrival_constants_early\n", - " 24.793142\n", + " -6.758955\n", " F\n", " \n", " \n", " 44\n", " coef_arrival_constants_am_peak\n", - " 4.647673\n", + " -8.413713\n", " F\n", " \n", " \n", @@ -4619,19 +4743,19 @@ " \n", " 46\n", " coef_arrival_constants_midday_2\n", - " 2.692519\n", + " 1.416723\n", " F\n", " \n", " \n", " 47\n", " coef_arrival_constants_pm_peak_1\n", - " 1.849237\n", + " 0.964024\n", " F\n", " \n", " \n", " 48\n", " coef_arrival_constants_pm_peak_2\n", - " 1.518410\n", + " 1.200835\n", " F\n", " \n", " \n", @@ -4643,25 +4767,25 @@ " \n", " 50\n", " coef_arrival_constants_pm_peak_4\n", - " -1.182768\n", + " -0.725959\n", " F\n", " \n", " \n", " 51\n", " coef_arrival_constants_evening\n", - " -4.291783\n", + " -2.675953\n", " F\n", " \n", " \n", " 52\n", " coef_arrival_constants_late\n", - " -9.617038\n", + " -4.194942\n", " F\n", " \n", " \n", " 53\n", " coef_duration_constants_0_to_1_hours\n", - " -2.750481\n", + " -2.021348\n", " F\n", " \n", " \n", @@ -4673,31 +4797,31 @@ " \n", " 55\n", " coef_duration_constants_4_to_5_hours\n", - " 0.301145\n", + " -0.519561\n", " F\n", " \n", " \n", " 56\n", " coef_duration_constants_6_to_7_hours\n", - " 0.144072\n", + " -0.868309\n", " F\n", " \n", " \n", " 57\n", " coef_duration_constants_8_to_10_hours\n", - " -10.570858\n", + " -1.020095\n", " F\n", " \n", " \n", " 58\n", " coef_duration_constants_11_to_13_hours\n", - " -6.162737\n", + " -1.608105\n", " F\n", " \n", " \n", " 59\n", " coef_duration_constants_14_to_18_hours\n", - " -2.800706\n", + " -3.067613\n", " F\n", " \n", " \n", @@ -4708,67 +4832,67 @@ " coefficient_name value constrain\n", "0 coef_dummy 1.000000 T\n", "1 coef_unavailable -999.000000 T\n", - "2 coef_free_flow_round_trip_auto_time_shift_effe... 0.017752 F\n", - "3 coef_shopping_tour_departure_shift_effects -0.045633 F\n", - "4 coef_shopping_tour_duration_shift_effects -0.359705 F\n", - "5 coef_maintenance_tour_departure_shift_effects -0.159210 F\n", - "6 coef_maintenance_tour_duration_shift_effects -0.146459 F\n", - "7 coef_visit_tour_departure_shift_effects -0.109515 F\n", - "8 coef_visit_tour_duration_shift_effects -0.123814 F\n", - "9 coef_eat_out_tour_departure_shift_effects -0.024649 F\n", - "10 coef_school_child_age_16_plus_departure_shift_... 0.072660 F\n", - "11 coef_school_child_age_16_plus_duration_shift_e... 0.209500 F\n", - "12 coef_school_child_age_under_16_departure_shift... 0.239007 F\n", - "13 coef_school_child_age_under_16_duration_shift_... -0.567863 F\n", - "14 coef_destination_in_cbd_duration_shift_effects 0.572330 F\n", - "15 coef_number_of_mandatory_tours_departure_shift... 0.076326 F\n", - "16 coef_number_of_joint_tours_departure_shift_eff... 1.356173 F\n", - "17 coef_first_of_2_plus_tours_for_same_purpose_de... -1.329351 F\n", - "18 coef_subsequent_of_2_plus_tours_for_same_purpo... 0.191264 F\n", - "19 coef_maintenance_tour_depart_before_7 1.154584 F\n", - "20 coef_shopping_tour_depart_before_8 1.458488 F\n", - "21 coef_shopping_tour_arrive_after_22 -7.221041 F\n", - "22 coef_school_child_under_16_arrive_after_22 -6.147237 F\n", - "23 coef_university_student_arrive_after_22 -9.181095 F\n", - "24 coef_shopping_tour_duration_lt_2_hours 0.189427 F\n", - "25 coef_discretionary_tour_duration_lt_2_hours -1.022488 F\n", - "26 coef_adult_with_children_in_hh_arrive_19_21 -0.002541 F\n", - "27 coef_some_previously_scheduled_tour_ends_in_th... 0.282029 F\n", - "28 coef_some_previously_scheduled_tour_begins_in_... 0.411979 F\n", - "29 coef_adjacent_window_exists_before_this_depart... -13.495922 F\n", - "30 coef_adjacent_window_exists_after_this_arrival... -13.526580 F\n", - "31 coef_adjacent_window_exists_before_this_depart... -7.716247 F\n", - "32 coef_adjacent_window_exists_after_this_arrival... -14.169341 F\n", - "33 coef_departure_constants_early -24.418086 F\n", - "34 coef_departure_constants_am_peak_1 -25.000000 F\n", - "35 coef_departure_constants_am_peak_2 -4.236849 F\n", - "36 coef_departure_constants_am_peak_3 0.806223 F\n", - "37 coef_departure_constants_am_peak_4 1.408142 F\n", + "2 coef_free_flow_round_trip_auto_time_shift_effe... 0.003622 F\n", + "3 coef_shopping_tour_departure_shift_effects -0.099254 F\n", + "4 coef_shopping_tour_duration_shift_effects -0.101207 F\n", + "5 coef_maintenance_tour_departure_shift_effects -0.135634 F\n", + "6 coef_maintenance_tour_duration_shift_effects -0.038428 F\n", + "7 coef_visit_tour_departure_shift_effects 0.136717 F\n", + "8 coef_visit_tour_duration_shift_effects 0.172436 F\n", + "9 coef_eat_out_tour_departure_shift_effects 0.056578 F\n", + "10 coef_school_child_age_16_plus_departure_shift_... 0.106395 F\n", + "11 coef_school_child_age_16_plus_duration_shift_e... 0.315781 F\n", + "12 coef_school_child_age_under_16_departure_shift... 0.015473 F\n", + "13 coef_school_child_age_under_16_duration_shift_... 0.327527 F\n", + "14 coef_destination_in_cbd_duration_shift_effects 0.130935 F\n", + "15 coef_number_of_mandatory_tours_departure_shift... -0.009788 F\n", + "16 coef_number_of_joint_tours_departure_shift_eff... 0.128742 F\n", + "17 coef_first_of_2_plus_tours_for_same_purpose_de... -0.506782 F\n", + "18 coef_subsequent_of_2_plus_tours_for_same_purpo... 0.062417 F\n", + "19 coef_maintenance_tour_depart_before_7 -0.523693 F\n", + "20 coef_shopping_tour_depart_before_8 -1.484109 F\n", + "21 coef_shopping_tour_arrive_after_22 -0.033268 F\n", + "22 coef_school_child_under_16_arrive_after_22 -5.038827 F\n", + "23 coef_university_student_arrive_after_22 0.360948 F\n", + "24 coef_shopping_tour_duration_lt_2_hours 0.699700 F\n", + "25 coef_discretionary_tour_duration_lt_2_hours -0.772425 F\n", + "26 coef_adult_with_children_in_hh_arrive_19_21 -0.078997 F\n", + "27 coef_some_previously_scheduled_tour_ends_in_th... -0.288048 F\n", + "28 coef_some_previously_scheduled_tour_begins_in_... -0.017681 F\n", + "29 coef_adjacent_window_exists_before_this_depart... 0.008839 F\n", + "30 coef_adjacent_window_exists_after_this_arrival... 0.800851 F\n", + "31 coef_adjacent_window_exists_before_this_depart... -0.549692 F\n", + "32 coef_adjacent_window_exists_after_this_arrival... 0.494438 F\n", + "33 coef_departure_constants_early -17.865880 F\n", + "34 coef_departure_constants_am_peak_1 -13.990759 F\n", + "35 coef_departure_constants_am_peak_2 -10.163788 F\n", + "36 coef_departure_constants_am_peak_3 -2.799430 F\n", + "37 coef_departure_constants_am_peak_4 0.514393 F\n", "38 coef_departure_constants_midday_1 0.000000 T\n", - "39 coef_departure_constants_midday_2 -4.501238 F\n", - "40 coef_departure_constants_pm_peak -12.638403 F\n", - "41 coef_departure_constants_evening -14.557517 F\n", - "42 coef_departure_constants_late -20.421814 F\n", - "43 coef_arrival_constants_early 24.793142 F\n", - "44 coef_arrival_constants_am_peak 4.647673 F\n", + "39 coef_departure_constants_midday_2 -1.886316 F\n", + "40 coef_departure_constants_pm_peak -18.238556 F\n", + "41 coef_departure_constants_evening -19.574287 F\n", + "42 coef_departure_constants_late -21.444922 F\n", + "43 coef_arrival_constants_early -6.758955 F\n", + "44 coef_arrival_constants_am_peak -8.413713 F\n", "45 coef_arrival_constants_midday_1 0.000000 T\n", - "46 coef_arrival_constants_midday_2 2.692519 F\n", - "47 coef_arrival_constants_pm_peak_1 1.849237 F\n", - "48 coef_arrival_constants_pm_peak_2 1.518410 F\n", + "46 coef_arrival_constants_midday_2 1.416723 F\n", + "47 coef_arrival_constants_pm_peak_1 0.964024 F\n", + "48 coef_arrival_constants_pm_peak_2 1.200835 F\n", "49 coef_arrival_constants_pm_peak_3 0.000000 T\n", - "50 coef_arrival_constants_pm_peak_4 -1.182768 F\n", - "51 coef_arrival_constants_evening -4.291783 F\n", - "52 coef_arrival_constants_late -9.617038 F\n", - "53 coef_duration_constants_0_to_1_hours -2.750481 F\n", + "50 coef_arrival_constants_pm_peak_4 -0.725959 F\n", + "51 coef_arrival_constants_evening -2.675953 F\n", + "52 coef_arrival_constants_late -4.194942 F\n", + "53 coef_duration_constants_0_to_1_hours -2.021348 F\n", "54 coef_duration_constants_2_to_3_hours 0.000000 T\n", - "55 coef_duration_constants_4_to_5_hours 0.301145 F\n", - "56 coef_duration_constants_6_to_7_hours 0.144072 F\n", - "57 coef_duration_constants_8_to_10_hours -10.570858 F\n", - "58 coef_duration_constants_11_to_13_hours -6.162737 F\n", - "59 coef_duration_constants_14_to_18_hours -2.800706 F" + "55 coef_duration_constants_4_to_5_hours -0.519561 F\n", + "56 coef_duration_constants_6_to_7_hours -0.868309 F\n", + "57 coef_duration_constants_8_to_10_hours -1.020095 F\n", + "58 coef_duration_constants_11_to_13_hours -1.608105 F\n", + "59 coef_duration_constants_14_to_18_hours -3.067613 F" ] }, - "execution_count": 12, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -4785,7 +4909,7 @@ "toc_visible": true }, "kernelspec": { - "display_name": "Python 3", + "display_name": "ESTER", "language": "python", "name": "python3" }, @@ -4799,7 +4923,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.10.15" }, "toc": { "base_numbering": 1, diff --git a/activitysim/examples/example_estimation/notebooks/15_non_mand_tour_freq.ipynb b/activitysim/examples/example_estimation/notebooks/15_non_mand_tour_freq.ipynb index 81092083f..933656370 100644 --- a/activitysim/examples/example_estimation/notebooks/15_non_mand_tour_freq.ipynb +++ b/activitysim/examples/example_estimation/notebooks/15_non_mand_tour_freq.ipynb @@ -35,10 +35,22 @@ "outputId": "d1208b7a-c1f2-4b0b-c439-bf312fe12be0" }, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "JAX not found. Some functionality will be unavailable.\n" + ] + }, { "data": { "text/plain": [ - "'1.1.0'" + "{'larch': '6.0.32',\n", + " 'sharrow': '2.13.0',\n", + " 'numpy': '1.26.4',\n", + " 'pandas': '1.5.3',\n", + " 'xarray': '2024.3.0',\n", + " 'numba': '0.60.0'}" ] }, "execution_count": 1, @@ -47,27 +59,49 @@ } ], "source": [ - "import os\n", - "import larch # !conda install larch -c conda-forge # for estimation\n", + "import larch as lx\n", "import pandas as pd\n", - "import activitysim\n", - "activitysim.__version__" + "\n", + "lx.versions()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We'll work in our `test` directory, where ActivitySim has saved the estimation data bundles." + "For this demo, we will assume that you have already run ActivitySim in estimation\n", + "mode, and saved the required estimation data bundles (EDB's) to disk. See\n", + "the [first notebook](./01_estimation_mode.ipynb) for details. The following module\n", + "will run a script to set everything up if the example data is not already available." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "EDB directory already populated.\n" + ] + }, + { + "data": { + "text/plain": [ + "PosixPath('test-estimation-data/activitysim-prototype-mtc-extended')" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "os.chdir('test')" + "from est_mode_setup import prepare\n", + "\n", + "prepare()" ] }, { @@ -81,12 +115,67 @@ "cell_type": "code", "execution_count": 3, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Loading EDB for PTYPE_FULL segment\n", + "loading from output-est-mode/estimation_data_bundle/non_mandatory_tour_frequency/PTYPE_FULL/non_mandatory_tour_frequency_coefficients_PTYPE_FULL.csv\n", + "loading from output-est-mode/estimation_data_bundle/non_mandatory_tour_frequency/PTYPE_FULL/non_mandatory_tour_frequency_choosers_combined.parquet\n", + "loading from output-est-mode/estimation_data_bundle/non_mandatory_tour_frequency/PTYPE_FULL/non_mandatory_tour_frequency_interaction_expression_values.parquet\n", + "Loading EDB for PTYPE_PART segment\n", + "loading from output-est-mode/estimation_data_bundle/non_mandatory_tour_frequency/PTYPE_PART/non_mandatory_tour_frequency_coefficients_PTYPE_PART.csv\n", + "loading from output-est-mode/estimation_data_bundle/non_mandatory_tour_frequency/PTYPE_PART/non_mandatory_tour_frequency_choosers_combined.parquet\n", + "loading from output-est-mode/estimation_data_bundle/non_mandatory_tour_frequency/PTYPE_PART/non_mandatory_tour_frequency_interaction_expression_values.parquet\n", + "Loading EDB for PTYPE_UNIVERSITY segment\n", + "loading from output-est-mode/estimation_data_bundle/non_mandatory_tour_frequency/PTYPE_UNIVERSITY/non_mandatory_tour_frequency_coefficients_PTYPE_UNIVERSITY.csv\n", + "loading from output-est-mode/estimation_data_bundle/non_mandatory_tour_frequency/PTYPE_UNIVERSITY/non_mandatory_tour_frequency_choosers_combined.parquet\n", + "loading from output-est-mode/estimation_data_bundle/non_mandatory_tour_frequency/PTYPE_UNIVERSITY/non_mandatory_tour_frequency_interaction_expression_values.parquet\n", + "Loading EDB for PTYPE_NONWORK segment\n", + "loading from output-est-mode/estimation_data_bundle/non_mandatory_tour_frequency/PTYPE_NONWORK/non_mandatory_tour_frequency_coefficients_PTYPE_NONWORK.csv\n", + "loading from output-est-mode/estimation_data_bundle/non_mandatory_tour_frequency/PTYPE_NONWORK/non_mandatory_tour_frequency_choosers_combined.parquet\n", + "loading from output-est-mode/estimation_data_bundle/non_mandatory_tour_frequency/PTYPE_NONWORK/non_mandatory_tour_frequency_interaction_expression_values.parquet\n", + "Loading EDB for PTYPE_RETIRED segment\n", + "loading from output-est-mode/estimation_data_bundle/non_mandatory_tour_frequency/PTYPE_RETIRED/non_mandatory_tour_frequency_coefficients_PTYPE_RETIRED.csv\n", + "loading from output-est-mode/estimation_data_bundle/non_mandatory_tour_frequency/PTYPE_RETIRED/non_mandatory_tour_frequency_choosers_combined.parquet\n", + "loading from output-est-mode/estimation_data_bundle/non_mandatory_tour_frequency/PTYPE_RETIRED/non_mandatory_tour_frequency_interaction_expression_values.parquet\n", + "Loading EDB for PTYPE_DRIVING segment\n", + "loading from output-est-mode/estimation_data_bundle/non_mandatory_tour_frequency/PTYPE_DRIVING/non_mandatory_tour_frequency_coefficients_PTYPE_DRIVING.csv\n", + "loading from output-est-mode/estimation_data_bundle/non_mandatory_tour_frequency/PTYPE_DRIVING/non_mandatory_tour_frequency_choosers_combined.parquet\n", + "loading from output-est-mode/estimation_data_bundle/non_mandatory_tour_frequency/PTYPE_DRIVING/non_mandatory_tour_frequency_interaction_expression_values.parquet\n", + "Loading EDB for PTYPE_SCHOOL segment\n", + "loading from output-est-mode/estimation_data_bundle/non_mandatory_tour_frequency/PTYPE_SCHOOL/non_mandatory_tour_frequency_coefficients_PTYPE_SCHOOL.csv\n", + "loading from output-est-mode/estimation_data_bundle/non_mandatory_tour_frequency/PTYPE_SCHOOL/non_mandatory_tour_frequency_choosers_combined.parquet\n", + "loading from output-est-mode/estimation_data_bundle/non_mandatory_tour_frequency/PTYPE_SCHOOL/non_mandatory_tour_frequency_interaction_expression_values.parquet\n", + "Loading EDB for PTYPE_PRESCHOOL segment\n", + "loading from output-est-mode/estimation_data_bundle/non_mandatory_tour_frequency/PTYPE_PRESCHOOL/non_mandatory_tour_frequency_coefficients_PTYPE_PRESCHOOL.csv\n", + "loading from output-est-mode/estimation_data_bundle/non_mandatory_tour_frequency/PTYPE_PRESCHOOL/non_mandatory_tour_frequency_choosers_combined.parquet\n", + "loading from output-est-mode/estimation_data_bundle/non_mandatory_tour_frequency/PTYPE_PRESCHOOL/non_mandatory_tour_frequency_interaction_expression_values.parquet\n", + "loading from output-est-mode/estimation_data_bundle/non_mandatory_tour_frequency/PTYPE_FULL/non_mandatory_tour_frequency_SPEC.csv\n", + "loading from output-est-mode/estimation_data_bundle/non_mandatory_tour_frequency/PTYPE_FULL/non_mandatory_tour_frequency_alternatives.csv\n", + "Creating larch model for PTYPE_FULL\n", + "Creating larch model for PTYPE_PART\n", + "Creating larch model for PTYPE_UNIVERSITY\n", + "Creating larch model for PTYPE_NONWORK\n", + "Creating larch model for PTYPE_RETIRED\n", + "Creating larch model for PTYPE_DRIVING\n", + "Creating larch model for PTYPE_SCHOOL\n", + "Creating larch model for PTYPE_PRESCHOOL\n" + ] + } + ], "source": [ "modelname = \"nonmand_tour_freq\"\n", "\n", "from activitysim.estimation.larch import component_model\n", - "model, data = component_model(modelname, return_data=True, condense_parameters=True)" + "\n", + "model, data = component_model(\n", + " modelname,\n", + " edb_directory=f\"output-est-mode/estimation_data_bundle/non_mandatory_tour_frequency/\",\n", + " return_data=True,\n", + " condense_parameters=True,\n", + ")" ] }, { @@ -383,20 +472,20 @@ " \n", " \n", " 0\n", - " 72241\n", + " 72355\n", " 0\n", " 0\n", - " 72241\n", - " 56\n", - " 1\n", + " 72355\n", + " 52\n", " 1\n", + " 2\n", " 1\n", " 3\n", " 1\n", " ...\n", " False\n", " False\n", - " 0\n", + " 1\n", " 0\n", " 0\n", " 0\n", @@ -407,13 +496,13 @@ " \n", " \n", " 1\n", - " 72441\n", + " 72384\n", " 0\n", " 0\n", - " 72441\n", - " 49\n", - " 1\n", + " 72384\n", + " 28\n", " 1\n", + " 2\n", " 1\n", " 3\n", " 1\n", @@ -431,11 +520,11 @@ " \n", " \n", " 2\n", - " 73144\n", - " 0\n", + " 72407\n", + " 1\n", " 0\n", - " 73144\n", - " 31\n", + " 72407\n", + " 52\n", " 1\n", " 2\n", " 1\n", @@ -443,8 +532,8 @@ " 1\n", " ...\n", " False\n", - " True\n", - " -1\n", + " False\n", + " 0\n", " 0\n", " 0\n", " 0\n", @@ -455,20 +544,20 @@ " \n", " \n", " 3\n", - " 73493\n", + " 72459\n", " 0\n", " 0\n", - " 73493\n", - " 31\n", + " 72459\n", + " 38\n", + " 1\n", " 1\n", - " 2\n", " 1\n", " 3\n", " 1\n", " ...\n", " False\n", - " False\n", - " 0\n", + " True\n", + " -1\n", " 0\n", " 0\n", " 0\n", @@ -479,11 +568,11 @@ " \n", " \n", " 4\n", - " 73706\n", - " 0\n", - " 0\n", - " 73706\n", - " 26\n", + " 72569\n", + " 1\n", + " 20\n", + " 72569\n", + " 49\n", " 1\n", " 1\n", " 1\n", @@ -491,14 +580,14 @@ " 1\n", " ...\n", " False\n", - " False\n", + " True\n", + " -1\n", " 0\n", " 0\n", " 0\n", " 0\n", " 0\n", " 0\n", - " 1\n", " 0\n", " \n", " \n", @@ -526,14 +615,14 @@ " ...\n", " \n", " \n", - " 1759\n", - " 7512288\n", - " 5\n", - " 5\n", - " 2820953\n", - " 28\n", - " 1\n", + " 19354\n", + " 7538573\n", + " 0\n", + " 0\n", + " 2847238\n", + " 67\n", " 1\n", + " 2\n", " 1\n", " 3\n", " 1\n", @@ -546,18 +635,18 @@ " 0\n", " 0\n", " 0\n", - " 0\n", + " 1\n", " 0\n", " \n", " \n", - " 1760\n", - " 7512469\n", + " 19355\n", + " 7538990\n", " 1\n", + " 19\n", + " 2847655\n", + " 72\n", " 1\n", - " 2821134\n", - " 34\n", " 1\n", - " 2\n", " 1\n", " 3\n", " 1\n", @@ -570,16 +659,16 @@ " 0\n", " 0\n", " 0\n", - " 1\n", + " 0\n", " 0\n", " \n", " \n", - " 1761\n", - " 7513117\n", + " 19356\n", + " 7539071\n", " 0\n", " 0\n", - " 2821782\n", - " 16\n", + " 2847736\n", + " 70\n", " 1\n", " 1\n", " 1\n", @@ -587,8 +676,8 @@ " 1\n", " ...\n", " False\n", - " True\n", - " -1\n", + " False\n", + " 1\n", " 0\n", " 0\n", " 0\n", @@ -598,12 +687,12 @@ " 0\n", " \n", " \n", - " 1762\n", - " 7513996\n", + " 19357\n", + " 7539203\n", " 0\n", " 0\n", - " 2822661\n", - " 24\n", + " 2847868\n", + " 87\n", " 1\n", " 1\n", " 1\n", @@ -622,21 +711,21 @@ " 0\n", " \n", " \n", - " 1763\n", - " 7514404\n", + " 19358\n", + " 7539317\n", " 0\n", " 0\n", - " 2823069\n", - " 30\n", + " 2847982\n", + " 70\n", + " 1\n", " 1\n", - " 2\n", " 1\n", " 3\n", " 1\n", " ...\n", " False\n", - " True\n", - " -1\n", + " False\n", + " 0\n", " 0\n", " 0\n", " 0\n", @@ -647,76 +736,76 @@ " \n", " \n", "\n", - "

1764 rows × 142 columns

\n", + "

19359 rows × 142 columns

\n", "" ], "text/plain": [ - " person_id model_choice override_choice household_id age PNUM sex \\\n", - "0 72241 0 0 72241 56 1 1 \n", - "1 72441 0 0 72441 49 1 1 \n", - "2 73144 0 0 73144 31 1 2 \n", - "3 73493 0 0 73493 31 1 2 \n", - "4 73706 0 0 73706 26 1 1 \n", - "... ... ... ... ... ... ... ... \n", - "1759 7512288 5 5 2820953 28 1 1 \n", - "1760 7512469 1 1 2821134 34 1 2 \n", - "1761 7513117 0 0 2821782 16 1 1 \n", - "1762 7513996 0 0 2822661 24 1 1 \n", - "1763 7514404 0 0 2823069 30 1 2 \n", - "\n", - " pemploy pstudent ptype ... high_income no_cars car_sufficiency \\\n", - "0 1 3 1 ... False False 0 \n", - "1 1 3 1 ... False False 0 \n", - "2 1 3 1 ... False True -1 \n", - "3 1 3 1 ... False False 0 \n", - "4 1 3 1 ... False False 0 \n", - "... ... ... ... ... ... ... ... \n", - "1759 1 3 1 ... False True -1 \n", - "1760 1 3 1 ... False True -1 \n", - "1761 1 3 1 ... False True -1 \n", - "1762 1 3 1 ... False False 0 \n", - "1763 1 3 1 ... False True -1 \n", + " person_id model_choice override_choice household_id age PNUM sex \\\n", + "0 72355 0 0 72355 52 1 2 \n", + "1 72384 0 0 72384 28 1 2 \n", + "2 72407 1 0 72407 52 1 2 \n", + "3 72459 0 0 72459 38 1 1 \n", + "4 72569 1 20 72569 49 1 1 \n", + "... ... ... ... ... ... ... ... \n", + "19354 7538573 0 0 2847238 67 1 2 \n", + "19355 7538990 1 19 2847655 72 1 1 \n", + "19356 7539071 0 0 2847736 70 1 1 \n", + "19357 7539203 0 0 2847868 87 1 1 \n", + "19358 7539317 0 0 2847982 70 1 1 \n", "\n", - " num_hh_joint_shop_tours num_hh_joint_eatout_tours \\\n", - "0 0 0 \n", - "1 0 0 \n", - "2 0 0 \n", - "3 0 0 \n", - "4 0 0 \n", - "... ... ... \n", - "1759 0 0 \n", - "1760 0 0 \n", - "1761 0 0 \n", - "1762 0 0 \n", - "1763 0 0 \n", + " pemploy pstudent ptype ... high_income no_cars car_sufficiency \\\n", + "0 1 3 1 ... False False 1 \n", + "1 1 3 1 ... False False 0 \n", + "2 1 3 1 ... False False 0 \n", + "3 1 3 1 ... False True -1 \n", + "4 1 3 1 ... False True -1 \n", + "... ... ... ... ... ... ... ... \n", + "19354 1 3 1 ... False True -1 \n", + "19355 1 3 1 ... False True -1 \n", + "19356 1 3 1 ... False False 1 \n", + "19357 1 3 1 ... False False 0 \n", + "19358 1 3 1 ... False False 0 \n", "\n", - " num_hh_joint_maint_tours num_hh_joint_social_tours \\\n", + " num_hh_joint_shop_tours num_hh_joint_eatout_tours \\\n", "0 0 0 \n", "1 0 0 \n", "2 0 0 \n", "3 0 0 \n", "4 0 0 \n", "... ... ... \n", - "1759 0 0 \n", - "1760 0 0 \n", - "1761 0 0 \n", - "1762 0 0 \n", - "1763 0 0 \n", + "19354 0 0 \n", + "19355 0 0 \n", + "19356 0 0 \n", + "19357 0 0 \n", + "19358 0 0 \n", "\n", - " num_hh_joint_othdiscr_tours has_mandatory_tour has_joint_tour \n", - "0 0 1 0 \n", - "1 0 1 0 \n", - "2 0 1 0 \n", - "3 0 1 0 \n", - "4 0 1 0 \n", - "... ... ... ... \n", - "1759 0 0 0 \n", - "1760 0 1 0 \n", - "1761 0 1 0 \n", - "1762 0 1 0 \n", - "1763 0 1 0 \n", + " num_hh_joint_maint_tours num_hh_joint_social_tours \\\n", + "0 0 0 \n", + "1 0 0 \n", + "2 0 0 \n", + "3 0 0 \n", + "4 0 0 \n", + "... ... ... \n", + "19354 0 0 \n", + "19355 0 0 \n", + "19356 0 0 \n", + "19357 0 0 \n", + "19358 0 0 \n", "\n", - "[1764 rows x 142 columns]" + " num_hh_joint_othdiscr_tours has_mandatory_tour has_joint_tour \n", + "0 0 1 0 \n", + "1 0 1 0 \n", + "2 0 1 0 \n", + "3 0 1 0 \n", + "4 0 0 0 \n", + "... ... ... ... \n", + "19354 0 1 0 \n", + "19355 0 0 0 \n", + "19356 0 1 0 \n", + "19357 0 1 0 \n", + "19358 0 1 0 \n", + "\n", + "[19359 rows x 142 columns]" ] }, "execution_count": 8, @@ -741,6 +830,1896 @@ "cell_type": "code", "execution_count": 9, "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset> Size: 2GB\n",
+       "Dimensions:                                                                      (\n",
+       "                                                                                  person_id: 19359,\n",
+       "                                                                                  alt_id: 96)\n",
+       "Coordinates:\n",
+       "  * person_id                                                                    (person_id) int64 155kB ...\n",
+       "  * alt_id                                                                       (alt_id) int64 768B ...\n",
+       "Data variables: (12/353)\n",
+       "    index                                                                        (person_id, alt_id) int64 15MB ...\n",
+       "    util_escorting_tour                                                          (person_id, alt_id) int64 15MB ...\n",
+       "    util_discretionary_tour                                                      (person_id, alt_id) int64 15MB ...\n",
+       "    util_shopping_tour                                                           (person_id, alt_id) int64 15MB ...\n",
+       "    util_maintenance_tour                                                        (person_id, alt_id) int64 15MB ...\n",
+       "    util_visiting_or_social_tour                                                 (person_id, alt_id) int64 15MB ...\n",
+       "    ...                                                                           ...\n",
+       "    num_hh_joint_eatout_tours                                                    (person_id) int8 19kB ...\n",
+       "    num_hh_joint_maint_tours                                                     (person_id) int8 19kB ...\n",
+       "    num_hh_joint_social_tours                                                    (person_id) int8 19kB ...\n",
+       "    num_hh_joint_othdiscr_tours                                                  (person_id) int8 19kB ...\n",
+       "    has_mandatory_tour                                                           (person_id) int64 155kB ...\n",
+       "    has_joint_tour                                                               (person_id) int64 155kB ...\n",
+       "Attributes:\n",
+       "    _caseid_:  person_id\n",
+       "    _altid_:   alt_id
" + ], + "text/plain": [ + " Size: 2GB\n", + "Dimensions: (\n", + " person_id: 19359,\n", + " alt_id: 96)\n", + "Coordinates:\n", + " * person_id (person_id) int64 155kB ...\n", + " * alt_id (alt_id) int64 768B ...\n", + "Data variables: (12/353)\n", + " index (person_id, alt_id) int64 15MB ...\n", + " util_escorting_tour (person_id, alt_id) int64 15MB ...\n", + " util_discretionary_tour (person_id, alt_id) int64 15MB ...\n", + " util_shopping_tour (person_id, alt_id) int64 15MB ...\n", + " util_maintenance_tour (person_id, alt_id) int64 15MB ...\n", + " util_visiting_or_social_tour (person_id, alt_id) int64 15MB ...\n", + " ... ...\n", + " num_hh_joint_eatout_tours (person_id) int8 19kB ...\n", + " num_hh_joint_maint_tours (person_id) int8 19kB ...\n", + " num_hh_joint_social_tours (person_id) int8 19kB ...\n", + " num_hh_joint_othdiscr_tours (person_id) int8 19kB ...\n", + " has_mandatory_tour (person_id) int64 155kB ...\n", + " has_joint_tour (person_id) int64 155kB ...\n", + "Attributes:\n", + " _caseid_: person_id\n", + " _altid_: alt_id" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model['PTYPE_FULL'].datatree.root_dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -768,27 +2747,29 @@ "source": [ "For future estimation work, parameters can be intelligently named and applied to match the model developer's desired structure (by using the same named parameter for multiple rows of the spec file). If this is done, the \"short cut\" should be disabled by setting `condense_parameters=False` in the loading step above.\n", "\n", - "Larch has a built-in estimation methods including BHHH, and also offers access to more advanced general purpose non-linear optimizers in the `scipy` package, including SLSQP, which allows for bounds and constraints on parameters. BHHH is the default and typically runs faster, but does not follow constraints on parameters." + "Larch has a built-in estimation methods including BHHH, and also offers access to more advanced general purpose non-linear optimizers in the `scipy` package, including SLSQP, which allows for bounds and constraints on parameters. BHHH is the default and typically runs faster, but does not follow constraints on parameters.\n", + "\n", + "For this model, we will sequentially estimate the models by person type and then save and clear the results, to avoid running out of memory, as the models are large and use a lot of resources. " ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": { "scrolled": false }, "outputs": [ { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "req_data does not request avail_ca or avail_co but it is set and being provided\n" + "Model PTYPE_FULL\n" ] }, { "data": { "text/html": [ - "

Iteration 070 [Optimization terminated successfully]

" + "

Iteration 049 [Optimization terminated successfully]

" ], "text/plain": [ "" @@ -800,7 +2781,7 @@ { "data": { "text/html": [ - "

Best LL = -1831.0744991680774

" + "

Best LL = -19916.199393036724

" ], "text/plain": [ "" @@ -831,70 +2812,74 @@ " \n", " \n", " value\n", + " best\n", " initvalue\n", - " nullvalue\n", " minimum\n", " maximum\n", + " nullvalue\n", " holdfast\n", - " note\n", - " best\n", + " \n", + " \n", + " param_name\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " coef_0_auto_household_and_escorting_tour\n", " -2.000000\n", + " -2.000000\n", " -2.0000\n", - " 0.0\n", " -2.0\n", " -2.0\n", + " 0.0\n", " 1\n", - " \n", - " -2.000000\n", " \n", " \n", " coef_1_escort_tour_constant\n", - " 0.319037\n", + " -0.065728\n", + " -0.065728\n", " 0.0298\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.319037\n", " \n", " \n", " coef_1_plus_eating_out_tours_constant\n", - " -1.012856\n", + " 0.047768\n", + " 0.047768\n", " 0.0097\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -1.012856\n", " \n", " \n", " coef_1_plus_maintenance_tours_constant\n", - " -2.842643\n", + " 0.079776\n", + " 0.079776\n", " 0.1202\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -2.842643\n", " \n", " \n", " coef_1_plus_other_discretionary_tours_constant\n", - " 10.543979\n", + " 0.733799\n", + " 0.733799\n", " 0.7412\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 10.543979\n", " \n", " \n", " ...\n", @@ -905,122 +2890,120 @@ " ...\n", " ...\n", " ...\n", - " ...\n", " \n", " \n", " coef_walk_access_to_retail_and_discretionary\n", - " 0.160520\n", + " 0.060958\n", + " 0.060958\n", " 0.0567\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.160520\n", " \n", " \n", " coef_walk_access_to_retail_and_eating_out\n", - " 0.211289\n", + " 0.156964\n", + " 0.156964\n", " 0.1450\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.211289\n", " \n", " \n", " coef_walk_access_to_retail_and_escorting\n", - " -0.105285\n", + " 0.066031\n", + " 0.066031\n", " 0.0451\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.105285\n", " \n", " \n", " coef_walk_access_to_retail_and_shopping\n", - " 0.030182\n", + " 0.031695\n", + " 0.031695\n", " 0.0330\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.030182\n", " \n", " \n", " coef_zero_car_ownership_and_tour_frequency_is_5_plus\n", - " -0.227492\n", + " -0.239893\n", + " -0.239893\n", " -0.3486\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.227492\n", " \n", " \n", "\n", - "

72 rows × 8 columns

\n", + "

72 rows × 7 columns

\n", "" ], "text/plain": [ - " value initvalue \\\n", - "coef_0_auto_household_and_escorting_tour -2.000000 -2.0000 \n", - "coef_1_escort_tour_constant 0.319037 0.0298 \n", - "coef_1_plus_eating_out_tours_constant -1.012856 0.0097 \n", - "coef_1_plus_maintenance_tours_constant -2.842643 0.1202 \n", - "coef_1_plus_other_discretionary_tours_constant 10.543979 0.7412 \n", - "... ... ... \n", - "coef_walk_access_to_retail_and_discretionary 0.160520 0.0567 \n", - "coef_walk_access_to_retail_and_eating_out 0.211289 0.1450 \n", - "coef_walk_access_to_retail_and_escorting -0.105285 0.0451 \n", - "coef_walk_access_to_retail_and_shopping 0.030182 0.0330 \n", - "coef_zero_car_ownership_and_tour_frequency_is_5... -0.227492 -0.3486 \n", + " value best \\\n", + "param_name \n", + "coef_0_auto_household_and_escorting_tour -2.000000 -2.000000 \n", + "coef_1_escort_tour_constant -0.065728 -0.065728 \n", + "coef_1_plus_eating_out_tours_constant 0.047768 0.047768 \n", + "coef_1_plus_maintenance_tours_constant 0.079776 0.079776 \n", + "coef_1_plus_other_discretionary_tours_constant 0.733799 0.733799 \n", + "... ... ... \n", + "coef_walk_access_to_retail_and_discretionary 0.060958 0.060958 \n", + "coef_walk_access_to_retail_and_eating_out 0.156964 0.156964 \n", + "coef_walk_access_to_retail_and_escorting 0.066031 0.066031 \n", + "coef_walk_access_to_retail_and_shopping 0.031695 0.031695 \n", + "coef_zero_car_ownership_and_tour_frequency_is_5... -0.239893 -0.239893 \n", "\n", - " nullvalue minimum \\\n", - "coef_0_auto_household_and_escorting_tour 0.0 -2.0 \n", - "coef_1_escort_tour_constant 0.0 NaN \n", - "coef_1_plus_eating_out_tours_constant 0.0 NaN \n", - "coef_1_plus_maintenance_tours_constant 0.0 NaN \n", - "coef_1_plus_other_discretionary_tours_constant 0.0 NaN \n", + " initvalue minimum \\\n", + "param_name \n", + "coef_0_auto_household_and_escorting_tour -2.0000 -2.0 \n", + "coef_1_escort_tour_constant 0.0298 -20.0 \n", + "coef_1_plus_eating_out_tours_constant 0.0097 -20.0 \n", + "coef_1_plus_maintenance_tours_constant 0.1202 -20.0 \n", + "coef_1_plus_other_discretionary_tours_constant 0.7412 -20.0 \n", "... ... ... \n", - "coef_walk_access_to_retail_and_discretionary 0.0 NaN \n", - "coef_walk_access_to_retail_and_eating_out 0.0 NaN \n", - "coef_walk_access_to_retail_and_escorting 0.0 NaN \n", - "coef_walk_access_to_retail_and_shopping 0.0 NaN \n", - "coef_zero_car_ownership_and_tour_frequency_is_5... 0.0 NaN \n", + "coef_walk_access_to_retail_and_discretionary 0.0567 -20.0 \n", + "coef_walk_access_to_retail_and_eating_out 0.1450 -20.0 \n", + "coef_walk_access_to_retail_and_escorting 0.0451 -20.0 \n", + "coef_walk_access_to_retail_and_shopping 0.0330 -20.0 \n", + "coef_zero_car_ownership_and_tour_frequency_is_5... -0.3486 -20.0 \n", "\n", - " maximum holdfast note \\\n", - "coef_0_auto_household_and_escorting_tour -2.0 1 \n", - "coef_1_escort_tour_constant NaN 0 \n", - "coef_1_plus_eating_out_tours_constant NaN 0 \n", - "coef_1_plus_maintenance_tours_constant NaN 0 \n", - "coef_1_plus_other_discretionary_tours_constant NaN 0 \n", - "... ... ... ... \n", - "coef_walk_access_to_retail_and_discretionary NaN 0 \n", - "coef_walk_access_to_retail_and_eating_out NaN 0 \n", - "coef_walk_access_to_retail_and_escorting NaN 0 \n", - "coef_walk_access_to_retail_and_shopping NaN 0 \n", - "coef_zero_car_ownership_and_tour_frequency_is_5... NaN 0 \n", + " maximum nullvalue \\\n", + "param_name \n", + "coef_0_auto_household_and_escorting_tour -2.0 0.0 \n", + "coef_1_escort_tour_constant 20.0 0.0 \n", + "coef_1_plus_eating_out_tours_constant 20.0 0.0 \n", + "coef_1_plus_maintenance_tours_constant 20.0 0.0 \n", + "coef_1_plus_other_discretionary_tours_constant 20.0 0.0 \n", + "... ... ... \n", + "coef_walk_access_to_retail_and_discretionary 20.0 0.0 \n", + "coef_walk_access_to_retail_and_eating_out 20.0 0.0 \n", + "coef_walk_access_to_retail_and_escorting 20.0 0.0 \n", + "coef_walk_access_to_retail_and_shopping 20.0 0.0 \n", + "coef_zero_car_ownership_and_tour_frequency_is_5... 20.0 0.0 \n", "\n", - " best \n", - "coef_0_auto_household_and_escorting_tour -2.000000 \n", - "coef_1_escort_tour_constant 0.319037 \n", - "coef_1_plus_eating_out_tours_constant -1.012856 \n", - "coef_1_plus_maintenance_tours_constant -2.842643 \n", - "coef_1_plus_other_discretionary_tours_constant 10.543979 \n", - "... ... \n", - "coef_walk_access_to_retail_and_discretionary 0.160520 \n", - "coef_walk_access_to_retail_and_eating_out 0.211289 \n", - "coef_walk_access_to_retail_and_escorting -0.105285 \n", - "coef_walk_access_to_retail_and_shopping 0.030182 \n", - "coef_zero_car_ownership_and_tour_frequency_is_5... -0.227492 \n", + " holdfast \n", + "param_name \n", + "coef_0_auto_household_and_escorting_tour 1 \n", + "coef_1_escort_tour_constant 0 \n", + "coef_1_plus_eating_out_tours_constant 0 \n", + "coef_1_plus_maintenance_tours_constant 0 \n", + "coef_1_plus_other_discretionary_tours_constant 0 \n", + "... ... \n", + "coef_walk_access_to_retail_and_discretionary 0 \n", + "coef_walk_access_to_retail_and_eating_out 0 \n", + "coef_walk_access_to_retail_and_escorting 0 \n", + "coef_walk_access_to_retail_and_shopping 0 \n", + "coef_zero_car_ownership_and_tour_frequency_is_5... 0 \n", "\n", - "[72 rows x 8 columns]" + "[72 rows x 7 columns]" ] }, "metadata": {}, @@ -1030,24 +3013,717 @@ "name": "stderr", "output_type": "stream", "text": [ - "/var/folders/js/bk_dt9015j79_f6bxnc44dsr0000gp/T/ipykernel_48972/89088409.py:2: PossibleOverspecification: WARNING: Model is possibly over-specified (hessian is nearly singular).\n", - " m.estimate(method='SLSQP')\n", - "/Users/jeffnewman/LocalGit/asim-larch/activitysim-larch/conda-environments/AL-ENV/lib/python3.9/site-packages/larch/linalg/__init__.py:18: UserWarning: minimum eig 5.456681257677148e-07 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/var/folders/js/bk_dt9015j79_f6bxnc44dsr0000gp/T/ipykernel_48972/89088409.py:2: PossibleOverspecification: WARNING: Model seems to have 3 parameter estimators with negative variance\n", - "- coef_1_escort_tour_constant\n", - "- coef_2_plus_escort_tours_constant\n", - "- coef_urban_and_escorting_tour\n", - " m.estimate(method='SLSQP')\n", - "/var/folders/js/bk_dt9015j79_f6bxnc44dsr0000gp/T/ipykernel_48972/89088409.py:2: RuntimeWarning: invalid value encountered in sqrt\n", - " m.estimate(method='SLSQP')\n", - "req_data does not request avail_ca or avail_co but it is set and being provided\n" + "/Users/jpn/Git/est-mode/larch/src/larch/model/jaxmodel.py:1156: PossibleOverspecification: Model is possibly over-specified (hessian is nearly singular).\n", + " self.calculate_parameter_covariance()\n" ] }, { "data": { "text/html": [ - "

Iteration 039 [Optimization terminated successfully]

" + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ValueStd Errt StatSignifNull ValueConstrained
Parameter      
coef_0_auto_household_and_escorting_tour-2.00 0.00 NA 0.00fixed value
coef_1_escort_tour_constant-0.0657 49.6-0.00 0.00
coef_1_plus_eating_out_tours_constant 0.0478 49.6 0.00 0.00
coef_1_plus_maintenance_tours_constant 0.0798 49.6 0.00 0.00
coef_1_plus_other_discretionary_tours_constant 0.734 49.6 0.01 0.00
coef_1_plus_shopping_tours_constant 0.360 49.6 0.01 0.00
coef_1_plus_visting_tours_constant-0.0190 49.6-0.00 0.00
coef_2_plus_escort_tours_constant 0.688 99.2 0.01 0.00
coef_at_home_pre_driving_school_kid_and_escorting_tour-0.471 0.160-2.94** 0.00
coef_at_home_pre_school_kid_and_discretionary_tour-0.223 0.186-1.20 0.00
coef_at_home_pre_school_kid_and_escorting_tour-1.53 0.227-6.75*** 0.00
coef_auto_access_to_retail_and_discretionary 0.0857 0.0630 1.36 0.00
coef_auto_access_to_retail_and_maintenance 0.0843 0.0587 1.44 0.00
coef_auto_access_to_retail_and_shopping 0.103 0.0604 1.71 0.00
coef_car_surplus_vs_workers_and_tour_frequency_is_5_plus 0.120 0.0470 2.55* 0.00
coef_female_and_escorting_tour 0.177 0.0645 2.74** 0.00
coef_female_and_tour_frequency_is_1-0.0844 0.0430-1.96* 0.00
coef_female_and_tour_frequency_is_2-0.0975 0.0857-1.14 0.00
coef_female_and_tour_frequency_is_5-0.446 0.180-2.47* 0.00
coef_high_income_group_and_discretionary_tour 0.213 0.0780 2.74** 0.00
coef_high_income_group_and_eating_out_tour 0.384 0.0963 3.99*** 0.00
coef_high_income_group_and_tour_frequency_is_1 0.355 0.114 3.12** 0.00
coef_high_income_group_and_tour_frequency_is_2 0.990 0.240 4.12*** 0.00
coef_high_income_group_and_tour_frequency_is_5_plus 1.29 0.555 2.32* 0.00
coef_high_income_group_and_visiting_tour-0.228 0.122-1.87 0.00
coef_logged_maximum_residual_window_tour_frequency_is_1 1.28 0.0731 17.53*** 0.00
coef_logged_maximum_residual_window_tour_frequency_is_2 1.45 0.0918 15.83*** 0.00
coef_logged_maximum_residual_window_tour_frequency_is_5_plus 1.43 0.142 10.06*** 0.00
coef_mediumhigh_income_group_and_tour_frequency_is_1 0.376 0.110 3.42*** 0.00
coef_mediumhigh_income_group_and_tour_frequency_is_2 0.794 0.235 3.38*** 0.00
coef_mediumhigh_income_group_and_tour_frequency_is_5_plus 1.03 0.548 1.88 0.00
coef_number_of_joint_eating_out_tours-0.618 0.529-1.17 0.00
coef_number_of_mandatory_tours_and_tour_frequency_is_2-1.07 0.158-6.75*** 0.00
coef_number_of_mandatory_tours_and_tour_frequency_is_5_plus-2.50 0.307-8.15*** 0.00
coef_presence_of_driving_school_kid_and_discretionary_tour-0.364 0.128-2.84** 0.00
coef_presence_of_driving_school_kid_and_escorting_tour 0.429 0.0738 5.81*** 0.00
coef_presence_of_full_time_worker_and_discretionary_tour-0.601 0.0679-8.86*** 0.00
coef_presence_of_full_time_worker_and_eating_out_tour-0.280 0.0777-3.60*** 0.00
coef_presence_of_full_time_worker_and_maintenance_tour-0.264 0.0767-3.45*** 0.00
coef_presence_of_full_time_worker_and_shopping_tour-0.175 0.0618-2.83** 0.00
coef_presence_of_non_worker_and_discretionary_tour-0.484 0.0844-5.73*** 0.00
coef_presence_of_non_worker_and_eating_out_tour-0.172 0.0913-1.88 0.00
coef_presence_of_non_worker_and_escorting_tour-0.476 0.0747-6.37*** 0.00
coef_presence_of_non_worker_and_maintenance_tour-0.279 0.0939-2.97** 0.00
coef_presence_of_non_worker_and_shopping_tour-0.419 0.0783-5.35*** 0.00
coef_presence_of_part_time_worker_and_discretionary_tour-0.252 0.0806-3.13** 0.00
coef_presence_of_part_time_worker_and_maintenance_tour-0.0951 0.0856-1.11 0.00
coef_presence_of_part_time_worker_and_shopping_tour-0.150 0.0686-2.19* 0.00
coef_presence_of_pre_driving_school_kid_and_discretionary_tour-0.401 0.0837-4.79*** 0.00
coef_presence_of_pre_driving_school_kid_and_escorting_tour 1.38 0.0611 22.52*** 0.00
coef_presence_of_pre_school_kid_and_discretionary_tour-0.509 0.100-5.09*** 0.00
coef_presence_of_pre_school_kid_and_eating_out_tour-0.481 0.108-4.44*** 0.00
coef_presence_of_pre_school_kid_and_escorting_tour 0.654 0.0634 10.32*** 0.00
coef_presence_of_pre_school_kid_and_shopping_tour-0.0802 0.0795-1.01 0.00
coef_presence_of_retiree_and_discretionary_tour-1.05 0.154-6.82*** 0.00
coef_presence_of_retiree_and_eating_out_tour-0.430 0.147-2.92** 0.00
coef_presence_of_retiree_and_escorting_tour-0.694 0.143-4.86*** 0.00
coef_presence_of_university_student_and_discretionary_tour-0.532 0.114-4.67*** 0.00
coef_total_number_of_tours_is_1-7.26 49.6-0.15 0.00
coef_total_number_of_tours_is_2-10.7 99.2-0.11 0.00
coef_total_number_of_tours_is_3-13.4 149.-0.09 0.00
coef_total_number_of_tours_is_4-16.5 198.-0.08 0.00
coef_total_number_of_tours_is_5-19.7 248.-0.08 0.00
coef_total_number_of_tours_is_6_plus-999. 0.00 NA 0.00fixed value
coef_transit_access_to_retail_and_tour_frequency_is_5_plus 0.0132 0.0114 1.15 0.00
coef_urban_and_discretionary_tour 0.00 0.00 NA 0.00fixed value
coef_urban_and_escorting_tour-0.486 0.0782-6.21*** 0.00
coef_walk_access_to_retail_and_discretionary 0.0610 0.0251 2.42* 0.00
coef_walk_access_to_retail_and_eating_out 0.157 0.0243 6.47*** 0.00
coef_walk_access_to_retail_and_escorting 0.0660 0.0200 3.30*** 0.00
coef_walk_access_to_retail_and_shopping 0.0317 0.0241 1.31 0.00
coef_zero_car_ownership_and_tour_frequency_is_5_plus-0.240 0.109-2.19* 0.00
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model PTYPE_PART\n" + ] + }, + { + "data": { + "text/html": [ + "

Iteration 060 [Optimization terminated successfully]

" ], "text/plain": [ "" @@ -1059,7 +3735,7 @@ { "data": { "text/html": [ - "

Best LL = -856.8595081667797

" + "

Best LL = -9327.08229602112

" ], "text/plain": [ "" @@ -1090,793 +3766,755 @@ " \n", " \n", " value\n", + " best\n", " initvalue\n", - " nullvalue\n", " minimum\n", " maximum\n", + " nullvalue\n", " holdfast\n", - " note\n", - " best\n", + " \n", + " \n", + " param_name\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " coef_0_auto_household_and_escorting_tour\n", " -2.000000\n", - " -2.0000\n", - " 0.0\n", + " -2.000000\n", + " -2.000000\n", " -2.0\n", " -2.0\n", + " 0.0\n", " 1\n", - " \n", - " -2.000000\n", " \n", " \n", " coef_1_escort_tour_constant\n", - " 0.777927\n", - " 0.5272\n", + " 0.430423\n", + " 0.430423\n", + " 0.527200\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.777927\n", " \n", " \n", " coef_1_plus_eating_out_tours_constant\n", - " 1.665075\n", - " 0.6914\n", + " 0.732307\n", + " 0.732307\n", + " 0.691400\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.665075\n", " \n", " \n", " coef_1_plus_maintenance_tours_constant\n", - " 1.214734\n", - " 0.5533\n", + " 0.480847\n", + " 0.480847\n", + " 0.553300\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.214734\n", " \n", " \n", " coef_1_plus_other_discretionary_tours_constant\n", - " 1.783871\n", - " 0.7989\n", + " 0.900550\n", + " 0.900550\n", + " 0.798900\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.783871\n", " \n", " \n", " coef_1_plus_shopping_tours_constant\n", - " 1.521613\n", - " 0.7569\n", + " 0.731723\n", + " 0.731723\n", + " 0.756900\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.521613\n", " \n", " \n", " coef_1_plus_visting_tours_constant\n", - " 1.045482\n", - " 0.1405\n", + " 0.250360\n", + " 0.250360\n", + " 0.140500\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.045482\n", " \n", " \n", " coef_2_plus_escort_tours_constant\n", - " 1.882661\n", - " 1.5987\n", + " 1.457716\n", + " 1.457716\n", + " 1.598700\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.882661\n", " \n", " \n", " coef_car_shortage_vs_workers_and_tour_frequency_is_5_plus\n", - " 0.049232\n", - " -0.5498\n", + " -0.400969\n", + " -0.400969\n", + " -0.549800\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.049232\n", " \n", " \n", " coef_female_and_discretionary_tour\n", - " 0.439252\n", - " 0.3072\n", + " 0.316191\n", + " 0.316191\n", + " 0.307200\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.439252\n", " \n", " \n", " coef_female_and_shopping_tour\n", - " 0.753133\n", - " 0.4524\n", + " 0.352178\n", + " 0.352178\n", + " 0.452400\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.753133\n", " \n", " \n", " coef_high_income_group_and_discretionary_tour\n", - " 0.236506\n", - " 0.2960\n", + " 0.245706\n", + " 0.245706\n", + " 0.296000\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.236506\n", " \n", " \n", " coef_high_income_group_and_maintenance_tour\n", - " 1.385100\n", - " 0.6763\n", + " 0.828693\n", + " 0.828693\n", + " 0.676300\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.385100\n", " \n", " \n", " coef_high_income_group_and_shopping_tour\n", - " 0.819417\n", - " 0.7066\n", + " 0.846024\n", + " 0.846024\n", + " 0.706600\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.819417\n", " \n", " \n", " coef_high_income_group_and_tour_frequency_is_1\n", - " 1.145715\n", - " 0.8682\n", + " 0.809721\n", + " 0.809721\n", + " 0.868200\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.145715\n", " \n", " \n", " coef_high_income_group_and_tour_frequency_is_2\n", - " 1.347519\n", - " 1.5362\n", + " 1.223360\n", + " 1.223360\n", + " 1.536200\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.347519\n", " \n", " \n", " coef_high_income_group_and_tour_frequency_is_5_plus\n", - " 1.498903\n", - " 1.9331\n", + " 1.571734\n", + " 1.571734\n", + " 1.933100\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.498903\n", " \n", " \n", " coef_high_income_group_and_visiting_tour\n", - " -0.517316\n", - " -0.6868\n", + " -0.714757\n", + " -0.714757\n", + " -0.686800\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.517316\n", " \n", " \n", " coef_logged_maximum_residual_window_tour_frequency_is_1\n", - " 0.768519\n", - " 1.5748\n", + " 1.659306\n", + " 1.659306\n", + " 1.574800\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.768519\n", " \n", " \n", " coef_logged_maximum_residual_window_tour_frequency_is_5_plus\n", - " 1.243995\n", - " 2.0026\n", + " 1.957087\n", + " 1.957087\n", + " 2.002600\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.243995\n", " \n", " \n", " coef_mediumhigh_income_group_and_shopping_tour\n", - " 0.605047\n", - " 0.4421\n", + " 0.573217\n", + " 0.573217\n", + " 0.442100\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.605047\n", " \n", " \n", " coef_mediumlow_income_group_and_tour_frequency_is_1\n", - " 0.784377\n", - " 0.5981\n", + " 0.685180\n", + " 0.685180\n", + " 0.598100\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.784377\n", " \n", " \n", " coef_mediumlow_income_group_and_tour_frequency_is_2\n", - " 0.776466\n", - " 0.9178\n", + " 0.592898\n", + " 0.592898\n", + " 0.917800\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.776466\n", " \n", " \n", " coef_mediumlow_income_group_and_tour_frequency_is_5_plus\n", - " 0.850898\n", - " 1.7539\n", + " 1.597675\n", + " 1.597675\n", + " 1.753900\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.850898\n", " \n", " \n", " coef_number_of_joint_tours_and_tour_frequency_is_4\n", - " -1.347657\n", - " -1.1986\n", + " -0.760824\n", + " -0.760824\n", + " -1.198600\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -1.347657\n", " \n", " \n", " coef_number_of_joint_tours_and_tour_frequency_is_5_plus\n", " -999.000000\n", - " -999.0000\n", - " 0.0\n", + " -999.000000\n", + " -999.000000\n", " -999.0\n", " -999.0\n", + " 0.0\n", " 1\n", - " \n", - " -999.000000\n", " \n", " \n", " coef_number_of_mandatory_tours_and_tour_frequency_is_1\n", - " -0.989069\n", - " -0.2390\n", + " -0.358322\n", + " -0.358322\n", + " -0.239000\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.989069\n", " \n", " \n", " coef_number_of_mandatory_tours_and_tour_frequency_is_2\n", - " -2.829794\n", - " -1.8208\n", + " -1.622848\n", + " -1.622848\n", + " -1.820800\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -2.829794\n", " \n", " \n", " coef_number_of_mandatory_tours_and_tour_frequency_is_5_plus\n", - " -2.785677\n", - " -2.5923\n", + " -2.631492\n", + " -2.631492\n", + " -2.592300\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -2.785677\n", " \n", " \n", " coef_presence_of_driving_school_kid_and_escorting_tour\n", - " 1.029447\n", - " 0.4164\n", + " 0.367517\n", + " 0.367517\n", + " 0.416400\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.029447\n", " \n", " \n", " coef_presence_of_full_time_worker_and_maintenance_tour\n", - " -0.484999\n", - " -0.3131\n", + " -0.254950\n", + " -0.254950\n", + " -0.313100\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.484999\n", " \n", " \n", " coef_presence_of_non_worker_and_discretionary_tour\n", - " -0.556803\n", - " -1.0371\n", + " -0.828046\n", + " -0.828046\n", + " -1.037100\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.556803\n", " \n", " \n", " coef_presence_of_non_worker_and_eating_out_tour\n", - " -0.231608\n", - " -0.6545\n", + " -0.660344\n", + " -0.660344\n", + " -0.654500\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.231608\n", " \n", " \n", " coef_presence_of_non_worker_and_escorting_tour\n", - " -0.617113\n", - " -0.5263\n", + " -0.530905\n", + " -0.530905\n", + " -0.526300\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.617113\n", " \n", " \n", " coef_presence_of_part_time_worker_and_maintenance_tour\n", - " -1.034909\n", - " -0.5621\n", + " -0.576071\n", + " -0.576071\n", + " -0.562100\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -1.034909\n", " \n", " \n", " coef_presence_of_pre_driving_school_kid_and_escorting_tour\n", - " 1.808890\n", - " 1.5795\n", + " 1.756066\n", + " 1.756066\n", + " 1.579500\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.808890\n", " \n", " \n", " coef_presence_of_pre_school_kid_and_escorting_tour\n", - " 0.291702\n", - " 0.5414\n", + " 0.549515\n", + " 0.549515\n", + " 0.541400\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.291702\n", " \n", " \n", " coef_presence_of_preschool_kid_in_household_and_tour_frequency_is_1\n", - " 0.308611\n", - " -0.1559\n", + " -0.340060\n", + " -0.340060\n", + " -0.155900\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.308611\n", " \n", " \n", " coef_presence_of_preschool_kid_in_household_and_tour_frequency_is_5\n", - " -0.530685\n", - " -0.5681\n", + " -0.650421\n", + " -0.650421\n", + " -0.568100\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.530685\n", " \n", " \n", " coef_presence_of_retiree_and_eating_out_tour\n", - " 0.109209\n", - " -1.3890\n", + " -1.202708\n", + " -1.202708\n", + " -1.389000\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.109209\n", " \n", " \n", " coef_presence_of_retiree_and_escorting_tour\n", - " -0.461150\n", - " -0.7516\n", + " -0.801304\n", + " -0.801304\n", + " -0.751600\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.461150\n", " \n", " \n", " coef_presence_of_university_student_and_eating_out_tour\n", - " -1.759323\n", - " -1.4318\n", + " -1.695822\n", + " -1.695822\n", + " -1.431800\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -1.759323\n", " \n", " \n", " coef_total_number_of_tours_is_1\n", - " -6.812615\n", - " -7.6391\n", + " -7.835780\n", + " -7.835780\n", + " -7.639100\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -6.812615\n", " \n", " \n", " coef_total_number_of_tours_is_2\n", - " -9.848060\n", - " -10.4557\n", + " -10.277923\n", + " -10.277923\n", + " -10.455700\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -9.848060\n", " \n", " \n", " coef_total_number_of_tours_is_3\n", - " -12.828277\n", - " -14.0176\n", + " -14.048815\n", + " -14.048815\n", + " -14.017600\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -12.828277\n", " \n", " \n", " coef_total_number_of_tours_is_4\n", - " -17.097027\n", - " -16.9717\n", + " -17.043997\n", + " -17.043997\n", + " -16.971701\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -17.097027\n", " \n", " \n", " coef_urban_and_discretionary_tour\n", " 0.000000\n", - " 0.0000\n", + " 0.000000\n", + " 0.000000\n", " 0.0\n", " 0.0\n", " 0.0\n", " 1\n", - " \n", - " 0.000000\n", " \n", " \n", " coef_urban_and_escorting_tour\n", - " 0.425750\n", - " -0.3929\n", + " -0.503217\n", + " -0.503217\n", + " -0.392900\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.425750\n", " \n", " \n", " coef_walk_access_to_retail_and_tour_frequency_is_1\n", - " 0.080140\n", - " 0.0899\n", + " 0.108136\n", + " 0.108136\n", + " 0.089900\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.080140\n", " \n", " \n", " coef_walk_access_to_retail_and_tour_frequency_is_2\n", - " 0.103820\n", - " 0.1447\n", + " 0.128901\n", + " 0.128901\n", + " 0.144700\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.103820\n", " \n", " \n", " coef_walk_access_to_retail_and_tour_frequency_is_5_plus\n", - " 0.050631\n", - " 0.3479\n", + " 0.385133\n", + " 0.385133\n", + " 0.347900\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.050631\n", " \n", " \n", "\n", "" ], "text/plain": [ - " value initvalue \\\n", - "coef_0_auto_household_and_escorting_tour -2.000000 -2.0000 \n", - "coef_1_escort_tour_constant 0.777927 0.5272 \n", - "coef_1_plus_eating_out_tours_constant 1.665075 0.6914 \n", - "coef_1_plus_maintenance_tours_constant 1.214734 0.5533 \n", - "coef_1_plus_other_discretionary_tours_constant 1.783871 0.7989 \n", - "coef_1_plus_shopping_tours_constant 1.521613 0.7569 \n", - "coef_1_plus_visting_tours_constant 1.045482 0.1405 \n", - "coef_2_plus_escort_tours_constant 1.882661 1.5987 \n", - "coef_car_shortage_vs_workers_and_tour_frequency... 0.049232 -0.5498 \n", - "coef_female_and_discretionary_tour 0.439252 0.3072 \n", - "coef_female_and_shopping_tour 0.753133 0.4524 \n", - "coef_high_income_group_and_discretionary_tour 0.236506 0.2960 \n", - "coef_high_income_group_and_maintenance_tour 1.385100 0.6763 \n", - "coef_high_income_group_and_shopping_tour 0.819417 0.7066 \n", - "coef_high_income_group_and_tour_frequency_is_1 1.145715 0.8682 \n", - "coef_high_income_group_and_tour_frequency_is_2 1.347519 1.5362 \n", - "coef_high_income_group_and_tour_frequency_is_5_... 1.498903 1.9331 \n", - "coef_high_income_group_and_visiting_tour -0.517316 -0.6868 \n", - "coef_logged_maximum_residual_window_tour_freque... 0.768519 1.5748 \n", - "coef_logged_maximum_residual_window_tour_freque... 1.243995 2.0026 \n", - "coef_mediumhigh_income_group_and_shopping_tour 0.605047 0.4421 \n", - "coef_mediumlow_income_group_and_tour_frequency_... 0.784377 0.5981 \n", - "coef_mediumlow_income_group_and_tour_frequency_... 0.776466 0.9178 \n", - "coef_mediumlow_income_group_and_tour_frequency_... 0.850898 1.7539 \n", - "coef_number_of_joint_tours_and_tour_frequency_is_4 -1.347657 -1.1986 \n", - "coef_number_of_joint_tours_and_tour_frequency_i... -999.000000 -999.0000 \n", - "coef_number_of_mandatory_tours_and_tour_frequen... -0.989069 -0.2390 \n", - "coef_number_of_mandatory_tours_and_tour_frequen... -2.829794 -1.8208 \n", - "coef_number_of_mandatory_tours_and_tour_frequen... -2.785677 -2.5923 \n", - "coef_presence_of_driving_school_kid_and_escorti... 1.029447 0.4164 \n", - "coef_presence_of_full_time_worker_and_maintenan... -0.484999 -0.3131 \n", - "coef_presence_of_non_worker_and_discretionary_tour -0.556803 -1.0371 \n", - "coef_presence_of_non_worker_and_eating_out_tour -0.231608 -0.6545 \n", - "coef_presence_of_non_worker_and_escorting_tour -0.617113 -0.5263 \n", - "coef_presence_of_part_time_worker_and_maintenan... -1.034909 -0.5621 \n", - "coef_presence_of_pre_driving_school_kid_and_esc... 1.808890 1.5795 \n", - "coef_presence_of_pre_school_kid_and_escorting_tour 0.291702 0.5414 \n", - "coef_presence_of_preschool_kid_in_household_and... 0.308611 -0.1559 \n", - "coef_presence_of_preschool_kid_in_household_and... -0.530685 -0.5681 \n", - "coef_presence_of_retiree_and_eating_out_tour 0.109209 -1.3890 \n", - "coef_presence_of_retiree_and_escorting_tour -0.461150 -0.7516 \n", - "coef_presence_of_university_student_and_eating_... -1.759323 -1.4318 \n", - "coef_total_number_of_tours_is_1 -6.812615 -7.6391 \n", - "coef_total_number_of_tours_is_2 -9.848060 -10.4557 \n", - "coef_total_number_of_tours_is_3 -12.828277 -14.0176 \n", - "coef_total_number_of_tours_is_4 -17.097027 -16.9717 \n", - "coef_urban_and_discretionary_tour 0.000000 0.0000 \n", - "coef_urban_and_escorting_tour 0.425750 -0.3929 \n", - "coef_walk_access_to_retail_and_tour_frequency_is_1 0.080140 0.0899 \n", - "coef_walk_access_to_retail_and_tour_frequency_is_2 0.103820 0.1447 \n", - "coef_walk_access_to_retail_and_tour_frequency_i... 0.050631 0.3479 \n", + " value best \\\n", + "param_name \n", + "coef_0_auto_household_and_escorting_tour -2.000000 -2.000000 \n", + "coef_1_escort_tour_constant 0.430423 0.430423 \n", + "coef_1_plus_eating_out_tours_constant 0.732307 0.732307 \n", + "coef_1_plus_maintenance_tours_constant 0.480847 0.480847 \n", + "coef_1_plus_other_discretionary_tours_constant 0.900550 0.900550 \n", + "coef_1_plus_shopping_tours_constant 0.731723 0.731723 \n", + "coef_1_plus_visting_tours_constant 0.250360 0.250360 \n", + "coef_2_plus_escort_tours_constant 1.457716 1.457716 \n", + "coef_car_shortage_vs_workers_and_tour_frequency... -0.400969 -0.400969 \n", + "coef_female_and_discretionary_tour 0.316191 0.316191 \n", + "coef_female_and_shopping_tour 0.352178 0.352178 \n", + "coef_high_income_group_and_discretionary_tour 0.245706 0.245706 \n", + "coef_high_income_group_and_maintenance_tour 0.828693 0.828693 \n", + "coef_high_income_group_and_shopping_tour 0.846024 0.846024 \n", + "coef_high_income_group_and_tour_frequency_is_1 0.809721 0.809721 \n", + "coef_high_income_group_and_tour_frequency_is_2 1.223360 1.223360 \n", + "coef_high_income_group_and_tour_frequency_is_5_... 1.571734 1.571734 \n", + "coef_high_income_group_and_visiting_tour -0.714757 -0.714757 \n", + "coef_logged_maximum_residual_window_tour_freque... 1.659306 1.659306 \n", + "coef_logged_maximum_residual_window_tour_freque... 1.957087 1.957087 \n", + "coef_mediumhigh_income_group_and_shopping_tour 0.573217 0.573217 \n", + "coef_mediumlow_income_group_and_tour_frequency_... 0.685180 0.685180 \n", + "coef_mediumlow_income_group_and_tour_frequency_... 0.592898 0.592898 \n", + "coef_mediumlow_income_group_and_tour_frequency_... 1.597675 1.597675 \n", + "coef_number_of_joint_tours_and_tour_frequency_is_4 -0.760824 -0.760824 \n", + "coef_number_of_joint_tours_and_tour_frequency_i... -999.000000 -999.000000 \n", + "coef_number_of_mandatory_tours_and_tour_frequen... -0.358322 -0.358322 \n", + "coef_number_of_mandatory_tours_and_tour_frequen... -1.622848 -1.622848 \n", + "coef_number_of_mandatory_tours_and_tour_frequen... -2.631492 -2.631492 \n", + "coef_presence_of_driving_school_kid_and_escorti... 0.367517 0.367517 \n", + "coef_presence_of_full_time_worker_and_maintenan... -0.254950 -0.254950 \n", + "coef_presence_of_non_worker_and_discretionary_tour -0.828046 -0.828046 \n", + "coef_presence_of_non_worker_and_eating_out_tour -0.660344 -0.660344 \n", + "coef_presence_of_non_worker_and_escorting_tour -0.530905 -0.530905 \n", + "coef_presence_of_part_time_worker_and_maintenan... -0.576071 -0.576071 \n", + "coef_presence_of_pre_driving_school_kid_and_esc... 1.756066 1.756066 \n", + "coef_presence_of_pre_school_kid_and_escorting_tour 0.549515 0.549515 \n", + "coef_presence_of_preschool_kid_in_household_and... -0.340060 -0.340060 \n", + "coef_presence_of_preschool_kid_in_household_and... -0.650421 -0.650421 \n", + "coef_presence_of_retiree_and_eating_out_tour -1.202708 -1.202708 \n", + "coef_presence_of_retiree_and_escorting_tour -0.801304 -0.801304 \n", + "coef_presence_of_university_student_and_eating_... -1.695822 -1.695822 \n", + "coef_total_number_of_tours_is_1 -7.835780 -7.835780 \n", + "coef_total_number_of_tours_is_2 -10.277923 -10.277923 \n", + "coef_total_number_of_tours_is_3 -14.048815 -14.048815 \n", + "coef_total_number_of_tours_is_4 -17.043997 -17.043997 \n", + "coef_urban_and_discretionary_tour 0.000000 0.000000 \n", + "coef_urban_and_escorting_tour -0.503217 -0.503217 \n", + "coef_walk_access_to_retail_and_tour_frequency_is_1 0.108136 0.108136 \n", + "coef_walk_access_to_retail_and_tour_frequency_is_2 0.128901 0.128901 \n", + "coef_walk_access_to_retail_and_tour_frequency_i... 0.385133 0.385133 \n", "\n", - " nullvalue minimum \\\n", - "coef_0_auto_household_and_escorting_tour 0.0 -2.0 \n", - "coef_1_escort_tour_constant 0.0 NaN \n", - "coef_1_plus_eating_out_tours_constant 0.0 NaN \n", - "coef_1_plus_maintenance_tours_constant 0.0 NaN \n", - "coef_1_plus_other_discretionary_tours_constant 0.0 NaN \n", - "coef_1_plus_shopping_tours_constant 0.0 NaN \n", - "coef_1_plus_visting_tours_constant 0.0 NaN \n", - "coef_2_plus_escort_tours_constant 0.0 NaN \n", - "coef_car_shortage_vs_workers_and_tour_frequency... 0.0 NaN \n", - "coef_female_and_discretionary_tour 0.0 NaN \n", - "coef_female_and_shopping_tour 0.0 NaN \n", - "coef_high_income_group_and_discretionary_tour 0.0 NaN \n", - "coef_high_income_group_and_maintenance_tour 0.0 NaN \n", - "coef_high_income_group_and_shopping_tour 0.0 NaN \n", - "coef_high_income_group_and_tour_frequency_is_1 0.0 NaN \n", - "coef_high_income_group_and_tour_frequency_is_2 0.0 NaN \n", - "coef_high_income_group_and_tour_frequency_is_5_... 0.0 NaN \n", - "coef_high_income_group_and_visiting_tour 0.0 NaN \n", - "coef_logged_maximum_residual_window_tour_freque... 0.0 NaN \n", - "coef_logged_maximum_residual_window_tour_freque... 0.0 NaN \n", - "coef_mediumhigh_income_group_and_shopping_tour 0.0 NaN \n", - "coef_mediumlow_income_group_and_tour_frequency_... 0.0 NaN \n", - "coef_mediumlow_income_group_and_tour_frequency_... 0.0 NaN \n", - "coef_mediumlow_income_group_and_tour_frequency_... 0.0 NaN \n", - "coef_number_of_joint_tours_and_tour_frequency_is_4 0.0 NaN \n", - "coef_number_of_joint_tours_and_tour_frequency_i... 0.0 -999.0 \n", - "coef_number_of_mandatory_tours_and_tour_frequen... 0.0 NaN \n", - "coef_number_of_mandatory_tours_and_tour_frequen... 0.0 NaN \n", - "coef_number_of_mandatory_tours_and_tour_frequen... 0.0 NaN \n", - "coef_presence_of_driving_school_kid_and_escorti... 0.0 NaN \n", - "coef_presence_of_full_time_worker_and_maintenan... 0.0 NaN \n", - "coef_presence_of_non_worker_and_discretionary_tour 0.0 NaN \n", - "coef_presence_of_non_worker_and_eating_out_tour 0.0 NaN \n", - "coef_presence_of_non_worker_and_escorting_tour 0.0 NaN \n", - "coef_presence_of_part_time_worker_and_maintenan... 0.0 NaN \n", - "coef_presence_of_pre_driving_school_kid_and_esc... 0.0 NaN \n", - "coef_presence_of_pre_school_kid_and_escorting_tour 0.0 NaN \n", - "coef_presence_of_preschool_kid_in_household_and... 0.0 NaN \n", - "coef_presence_of_preschool_kid_in_household_and... 0.0 NaN \n", - "coef_presence_of_retiree_and_eating_out_tour 0.0 NaN \n", - "coef_presence_of_retiree_and_escorting_tour 0.0 NaN \n", - "coef_presence_of_university_student_and_eating_... 0.0 NaN \n", - "coef_total_number_of_tours_is_1 0.0 NaN \n", - "coef_total_number_of_tours_is_2 0.0 NaN \n", - "coef_total_number_of_tours_is_3 0.0 NaN \n", - "coef_total_number_of_tours_is_4 0.0 NaN \n", - "coef_urban_and_discretionary_tour 0.0 0.0 \n", - "coef_urban_and_escorting_tour 0.0 NaN \n", - "coef_walk_access_to_retail_and_tour_frequency_is_1 0.0 NaN \n", - "coef_walk_access_to_retail_and_tour_frequency_is_2 0.0 NaN \n", - "coef_walk_access_to_retail_and_tour_frequency_i... 0.0 NaN \n", + " initvalue minimum \\\n", + "param_name \n", + "coef_0_auto_household_and_escorting_tour -2.000000 -2.0 \n", + "coef_1_escort_tour_constant 0.527200 -20.0 \n", + "coef_1_plus_eating_out_tours_constant 0.691400 -20.0 \n", + "coef_1_plus_maintenance_tours_constant 0.553300 -20.0 \n", + "coef_1_plus_other_discretionary_tours_constant 0.798900 -20.0 \n", + "coef_1_plus_shopping_tours_constant 0.756900 -20.0 \n", + "coef_1_plus_visting_tours_constant 0.140500 -20.0 \n", + "coef_2_plus_escort_tours_constant 1.598700 -20.0 \n", + "coef_car_shortage_vs_workers_and_tour_frequency... -0.549800 -20.0 \n", + "coef_female_and_discretionary_tour 0.307200 -20.0 \n", + "coef_female_and_shopping_tour 0.452400 -20.0 \n", + "coef_high_income_group_and_discretionary_tour 0.296000 -20.0 \n", + "coef_high_income_group_and_maintenance_tour 0.676300 -20.0 \n", + "coef_high_income_group_and_shopping_tour 0.706600 -20.0 \n", + "coef_high_income_group_and_tour_frequency_is_1 0.868200 -20.0 \n", + "coef_high_income_group_and_tour_frequency_is_2 1.536200 -20.0 \n", + "coef_high_income_group_and_tour_frequency_is_5_... 1.933100 -20.0 \n", + "coef_high_income_group_and_visiting_tour -0.686800 -20.0 \n", + "coef_logged_maximum_residual_window_tour_freque... 1.574800 -20.0 \n", + "coef_logged_maximum_residual_window_tour_freque... 2.002600 -20.0 \n", + "coef_mediumhigh_income_group_and_shopping_tour 0.442100 -20.0 \n", + "coef_mediumlow_income_group_and_tour_frequency_... 0.598100 -20.0 \n", + "coef_mediumlow_income_group_and_tour_frequency_... 0.917800 -20.0 \n", + "coef_mediumlow_income_group_and_tour_frequency_... 1.753900 -20.0 \n", + "coef_number_of_joint_tours_and_tour_frequency_is_4 -1.198600 -20.0 \n", + "coef_number_of_joint_tours_and_tour_frequency_i... -999.000000 -999.0 \n", + "coef_number_of_mandatory_tours_and_tour_frequen... -0.239000 -20.0 \n", + "coef_number_of_mandatory_tours_and_tour_frequen... -1.820800 -20.0 \n", + "coef_number_of_mandatory_tours_and_tour_frequen... -2.592300 -20.0 \n", + "coef_presence_of_driving_school_kid_and_escorti... 0.416400 -20.0 \n", + "coef_presence_of_full_time_worker_and_maintenan... -0.313100 -20.0 \n", + "coef_presence_of_non_worker_and_discretionary_tour -1.037100 -20.0 \n", + "coef_presence_of_non_worker_and_eating_out_tour -0.654500 -20.0 \n", + "coef_presence_of_non_worker_and_escorting_tour -0.526300 -20.0 \n", + "coef_presence_of_part_time_worker_and_maintenan... -0.562100 -20.0 \n", + "coef_presence_of_pre_driving_school_kid_and_esc... 1.579500 -20.0 \n", + "coef_presence_of_pre_school_kid_and_escorting_tour 0.541400 -20.0 \n", + "coef_presence_of_preschool_kid_in_household_and... -0.155900 -20.0 \n", + "coef_presence_of_preschool_kid_in_household_and... -0.568100 -20.0 \n", + "coef_presence_of_retiree_and_eating_out_tour -1.389000 -20.0 \n", + "coef_presence_of_retiree_and_escorting_tour -0.751600 -20.0 \n", + "coef_presence_of_university_student_and_eating_... -1.431800 -20.0 \n", + "coef_total_number_of_tours_is_1 -7.639100 -20.0 \n", + "coef_total_number_of_tours_is_2 -10.455700 -20.0 \n", + "coef_total_number_of_tours_is_3 -14.017600 -20.0 \n", + "coef_total_number_of_tours_is_4 -16.971701 -20.0 \n", + "coef_urban_and_discretionary_tour 0.000000 0.0 \n", + "coef_urban_and_escorting_tour -0.392900 -20.0 \n", + "coef_walk_access_to_retail_and_tour_frequency_is_1 0.089900 -20.0 \n", + "coef_walk_access_to_retail_and_tour_frequency_is_2 0.144700 -20.0 \n", + "coef_walk_access_to_retail_and_tour_frequency_i... 0.347900 -20.0 \n", "\n", - " maximum holdfast note \\\n", - "coef_0_auto_household_and_escorting_tour -2.0 1 \n", - "coef_1_escort_tour_constant NaN 0 \n", - "coef_1_plus_eating_out_tours_constant NaN 0 \n", - "coef_1_plus_maintenance_tours_constant NaN 0 \n", - "coef_1_plus_other_discretionary_tours_constant NaN 0 \n", - "coef_1_plus_shopping_tours_constant NaN 0 \n", - "coef_1_plus_visting_tours_constant NaN 0 \n", - "coef_2_plus_escort_tours_constant NaN 0 \n", - "coef_car_shortage_vs_workers_and_tour_frequency... NaN 0 \n", - "coef_female_and_discretionary_tour NaN 0 \n", - "coef_female_and_shopping_tour NaN 0 \n", - "coef_high_income_group_and_discretionary_tour NaN 0 \n", - "coef_high_income_group_and_maintenance_tour NaN 0 \n", - "coef_high_income_group_and_shopping_tour NaN 0 \n", - "coef_high_income_group_and_tour_frequency_is_1 NaN 0 \n", - "coef_high_income_group_and_tour_frequency_is_2 NaN 0 \n", - "coef_high_income_group_and_tour_frequency_is_5_... NaN 0 \n", - "coef_high_income_group_and_visiting_tour NaN 0 \n", - "coef_logged_maximum_residual_window_tour_freque... NaN 0 \n", - "coef_logged_maximum_residual_window_tour_freque... NaN 0 \n", - "coef_mediumhigh_income_group_and_shopping_tour NaN 0 \n", - "coef_mediumlow_income_group_and_tour_frequency_... NaN 0 \n", - "coef_mediumlow_income_group_and_tour_frequency_... NaN 0 \n", - "coef_mediumlow_income_group_and_tour_frequency_... NaN 0 \n", - "coef_number_of_joint_tours_and_tour_frequency_is_4 NaN 0 \n", - "coef_number_of_joint_tours_and_tour_frequency_i... -999.0 1 \n", - "coef_number_of_mandatory_tours_and_tour_frequen... NaN 0 \n", - "coef_number_of_mandatory_tours_and_tour_frequen... NaN 0 \n", - "coef_number_of_mandatory_tours_and_tour_frequen... NaN 0 \n", - "coef_presence_of_driving_school_kid_and_escorti... NaN 0 \n", - "coef_presence_of_full_time_worker_and_maintenan... NaN 0 \n", - "coef_presence_of_non_worker_and_discretionary_tour NaN 0 \n", - "coef_presence_of_non_worker_and_eating_out_tour NaN 0 \n", - "coef_presence_of_non_worker_and_escorting_tour NaN 0 \n", - "coef_presence_of_part_time_worker_and_maintenan... NaN 0 \n", - "coef_presence_of_pre_driving_school_kid_and_esc... NaN 0 \n", - "coef_presence_of_pre_school_kid_and_escorting_tour NaN 0 \n", - "coef_presence_of_preschool_kid_in_household_and... NaN 0 \n", - "coef_presence_of_preschool_kid_in_household_and... NaN 0 \n", - "coef_presence_of_retiree_and_eating_out_tour NaN 0 \n", - "coef_presence_of_retiree_and_escorting_tour NaN 0 \n", - "coef_presence_of_university_student_and_eating_... NaN 0 \n", - "coef_total_number_of_tours_is_1 NaN 0 \n", - "coef_total_number_of_tours_is_2 NaN 0 \n", - "coef_total_number_of_tours_is_3 NaN 0 \n", - "coef_total_number_of_tours_is_4 NaN 0 \n", - "coef_urban_and_discretionary_tour 0.0 1 \n", - "coef_urban_and_escorting_tour NaN 0 \n", - "coef_walk_access_to_retail_and_tour_frequency_is_1 NaN 0 \n", - "coef_walk_access_to_retail_and_tour_frequency_is_2 NaN 0 \n", - "coef_walk_access_to_retail_and_tour_frequency_i... NaN 0 \n", + " maximum nullvalue \\\n", + "param_name \n", + "coef_0_auto_household_and_escorting_tour -2.0 0.0 \n", + "coef_1_escort_tour_constant 20.0 0.0 \n", + "coef_1_plus_eating_out_tours_constant 20.0 0.0 \n", + "coef_1_plus_maintenance_tours_constant 20.0 0.0 \n", + "coef_1_plus_other_discretionary_tours_constant 20.0 0.0 \n", + "coef_1_plus_shopping_tours_constant 20.0 0.0 \n", + "coef_1_plus_visting_tours_constant 20.0 0.0 \n", + "coef_2_plus_escort_tours_constant 20.0 0.0 \n", + "coef_car_shortage_vs_workers_and_tour_frequency... 20.0 0.0 \n", + "coef_female_and_discretionary_tour 20.0 0.0 \n", + "coef_female_and_shopping_tour 20.0 0.0 \n", + "coef_high_income_group_and_discretionary_tour 20.0 0.0 \n", + "coef_high_income_group_and_maintenance_tour 20.0 0.0 \n", + "coef_high_income_group_and_shopping_tour 20.0 0.0 \n", + "coef_high_income_group_and_tour_frequency_is_1 20.0 0.0 \n", + "coef_high_income_group_and_tour_frequency_is_2 20.0 0.0 \n", + "coef_high_income_group_and_tour_frequency_is_5_... 20.0 0.0 \n", + "coef_high_income_group_and_visiting_tour 20.0 0.0 \n", + "coef_logged_maximum_residual_window_tour_freque... 20.0 0.0 \n", + "coef_logged_maximum_residual_window_tour_freque... 20.0 0.0 \n", + "coef_mediumhigh_income_group_and_shopping_tour 20.0 0.0 \n", + "coef_mediumlow_income_group_and_tour_frequency_... 20.0 0.0 \n", + "coef_mediumlow_income_group_and_tour_frequency_... 20.0 0.0 \n", + "coef_mediumlow_income_group_and_tour_frequency_... 20.0 0.0 \n", + "coef_number_of_joint_tours_and_tour_frequency_is_4 20.0 0.0 \n", + "coef_number_of_joint_tours_and_tour_frequency_i... -999.0 0.0 \n", + "coef_number_of_mandatory_tours_and_tour_frequen... 20.0 0.0 \n", + "coef_number_of_mandatory_tours_and_tour_frequen... 20.0 0.0 \n", + "coef_number_of_mandatory_tours_and_tour_frequen... 20.0 0.0 \n", + "coef_presence_of_driving_school_kid_and_escorti... 20.0 0.0 \n", + "coef_presence_of_full_time_worker_and_maintenan... 20.0 0.0 \n", + "coef_presence_of_non_worker_and_discretionary_tour 20.0 0.0 \n", + "coef_presence_of_non_worker_and_eating_out_tour 20.0 0.0 \n", + "coef_presence_of_non_worker_and_escorting_tour 20.0 0.0 \n", + "coef_presence_of_part_time_worker_and_maintenan... 20.0 0.0 \n", + "coef_presence_of_pre_driving_school_kid_and_esc... 20.0 0.0 \n", + "coef_presence_of_pre_school_kid_and_escorting_tour 20.0 0.0 \n", + "coef_presence_of_preschool_kid_in_household_and... 20.0 0.0 \n", + "coef_presence_of_preschool_kid_in_household_and... 20.0 0.0 \n", + "coef_presence_of_retiree_and_eating_out_tour 20.0 0.0 \n", + "coef_presence_of_retiree_and_escorting_tour 20.0 0.0 \n", + "coef_presence_of_university_student_and_eating_... 20.0 0.0 \n", + "coef_total_number_of_tours_is_1 20.0 0.0 \n", + "coef_total_number_of_tours_is_2 20.0 0.0 \n", + "coef_total_number_of_tours_is_3 20.0 0.0 \n", + "coef_total_number_of_tours_is_4 20.0 0.0 \n", + "coef_urban_and_discretionary_tour 0.0 0.0 \n", + "coef_urban_and_escorting_tour 20.0 0.0 \n", + "coef_walk_access_to_retail_and_tour_frequency_is_1 20.0 0.0 \n", + "coef_walk_access_to_retail_and_tour_frequency_is_2 20.0 0.0 \n", + "coef_walk_access_to_retail_and_tour_frequency_i... 20.0 0.0 \n", "\n", - " best \n", - "coef_0_auto_household_and_escorting_tour -2.000000 \n", - "coef_1_escort_tour_constant 0.777927 \n", - "coef_1_plus_eating_out_tours_constant 1.665075 \n", - "coef_1_plus_maintenance_tours_constant 1.214734 \n", - "coef_1_plus_other_discretionary_tours_constant 1.783871 \n", - "coef_1_plus_shopping_tours_constant 1.521613 \n", - "coef_1_plus_visting_tours_constant 1.045482 \n", - "coef_2_plus_escort_tours_constant 1.882661 \n", - "coef_car_shortage_vs_workers_and_tour_frequency... 0.049232 \n", - "coef_female_and_discretionary_tour 0.439252 \n", - "coef_female_and_shopping_tour 0.753133 \n", - "coef_high_income_group_and_discretionary_tour 0.236506 \n", - "coef_high_income_group_and_maintenance_tour 1.385100 \n", - "coef_high_income_group_and_shopping_tour 0.819417 \n", - "coef_high_income_group_and_tour_frequency_is_1 1.145715 \n", - "coef_high_income_group_and_tour_frequency_is_2 1.347519 \n", - "coef_high_income_group_and_tour_frequency_is_5_... 1.498903 \n", - "coef_high_income_group_and_visiting_tour -0.517316 \n", - "coef_logged_maximum_residual_window_tour_freque... 0.768519 \n", - "coef_logged_maximum_residual_window_tour_freque... 1.243995 \n", - "coef_mediumhigh_income_group_and_shopping_tour 0.605047 \n", - "coef_mediumlow_income_group_and_tour_frequency_... 0.784377 \n", - "coef_mediumlow_income_group_and_tour_frequency_... 0.776466 \n", - "coef_mediumlow_income_group_and_tour_frequency_... 0.850898 \n", - "coef_number_of_joint_tours_and_tour_frequency_is_4 -1.347657 \n", - "coef_number_of_joint_tours_and_tour_frequency_i... -999.000000 \n", - "coef_number_of_mandatory_tours_and_tour_frequen... -0.989069 \n", - "coef_number_of_mandatory_tours_and_tour_frequen... -2.829794 \n", - "coef_number_of_mandatory_tours_and_tour_frequen... -2.785677 \n", - "coef_presence_of_driving_school_kid_and_escorti... 1.029447 \n", - "coef_presence_of_full_time_worker_and_maintenan... -0.484999 \n", - "coef_presence_of_non_worker_and_discretionary_tour -0.556803 \n", - "coef_presence_of_non_worker_and_eating_out_tour -0.231608 \n", - "coef_presence_of_non_worker_and_escorting_tour -0.617113 \n", - "coef_presence_of_part_time_worker_and_maintenan... -1.034909 \n", - "coef_presence_of_pre_driving_school_kid_and_esc... 1.808890 \n", - "coef_presence_of_pre_school_kid_and_escorting_tour 0.291702 \n", - "coef_presence_of_preschool_kid_in_household_and... 0.308611 \n", - "coef_presence_of_preschool_kid_in_household_and... -0.530685 \n", - "coef_presence_of_retiree_and_eating_out_tour 0.109209 \n", - "coef_presence_of_retiree_and_escorting_tour -0.461150 \n", - "coef_presence_of_university_student_and_eating_... -1.759323 \n", - "coef_total_number_of_tours_is_1 -6.812615 \n", - "coef_total_number_of_tours_is_2 -9.848060 \n", - "coef_total_number_of_tours_is_3 -12.828277 \n", - "coef_total_number_of_tours_is_4 -17.097027 \n", - "coef_urban_and_discretionary_tour 0.000000 \n", - "coef_urban_and_escorting_tour 0.425750 \n", - "coef_walk_access_to_retail_and_tour_frequency_is_1 0.080140 \n", - "coef_walk_access_to_retail_and_tour_frequency_is_2 0.103820 \n", - "coef_walk_access_to_retail_and_tour_frequency_i... 0.050631 " + " holdfast \n", + "param_name \n", + "coef_0_auto_household_and_escorting_tour 1 \n", + "coef_1_escort_tour_constant 0 \n", + "coef_1_plus_eating_out_tours_constant 0 \n", + "coef_1_plus_maintenance_tours_constant 0 \n", + "coef_1_plus_other_discretionary_tours_constant 0 \n", + "coef_1_plus_shopping_tours_constant 0 \n", + "coef_1_plus_visting_tours_constant 0 \n", + "coef_2_plus_escort_tours_constant 0 \n", + "coef_car_shortage_vs_workers_and_tour_frequency... 0 \n", + "coef_female_and_discretionary_tour 0 \n", + "coef_female_and_shopping_tour 0 \n", + "coef_high_income_group_and_discretionary_tour 0 \n", + "coef_high_income_group_and_maintenance_tour 0 \n", + "coef_high_income_group_and_shopping_tour 0 \n", + "coef_high_income_group_and_tour_frequency_is_1 0 \n", + "coef_high_income_group_and_tour_frequency_is_2 0 \n", + "coef_high_income_group_and_tour_frequency_is_5_... 0 \n", + "coef_high_income_group_and_visiting_tour 0 \n", + "coef_logged_maximum_residual_window_tour_freque... 0 \n", + "coef_logged_maximum_residual_window_tour_freque... 0 \n", + "coef_mediumhigh_income_group_and_shopping_tour 0 \n", + "coef_mediumlow_income_group_and_tour_frequency_... 0 \n", + "coef_mediumlow_income_group_and_tour_frequency_... 0 \n", + "coef_mediumlow_income_group_and_tour_frequency_... 0 \n", + "coef_number_of_joint_tours_and_tour_frequency_is_4 0 \n", + "coef_number_of_joint_tours_and_tour_frequency_i... 1 \n", + "coef_number_of_mandatory_tours_and_tour_frequen... 0 \n", + "coef_number_of_mandatory_tours_and_tour_frequen... 0 \n", + "coef_number_of_mandatory_tours_and_tour_frequen... 0 \n", + "coef_presence_of_driving_school_kid_and_escorti... 0 \n", + "coef_presence_of_full_time_worker_and_maintenan... 0 \n", + "coef_presence_of_non_worker_and_discretionary_tour 0 \n", + "coef_presence_of_non_worker_and_eating_out_tour 0 \n", + "coef_presence_of_non_worker_and_escorting_tour 0 \n", + "coef_presence_of_part_time_worker_and_maintenan... 0 \n", + "coef_presence_of_pre_driving_school_kid_and_esc... 0 \n", + "coef_presence_of_pre_school_kid_and_escorting_tour 0 \n", + "coef_presence_of_preschool_kid_in_household_and... 0 \n", + "coef_presence_of_preschool_kid_in_household_and... 0 \n", + "coef_presence_of_retiree_and_eating_out_tour 0 \n", + "coef_presence_of_retiree_and_escorting_tour 0 \n", + "coef_presence_of_university_student_and_eating_... 0 \n", + "coef_total_number_of_tours_is_1 0 \n", + "coef_total_number_of_tours_is_2 0 \n", + "coef_total_number_of_tours_is_3 0 \n", + "coef_total_number_of_tours_is_4 0 \n", + "coef_urban_and_discretionary_tour 1 \n", + "coef_urban_and_escorting_tour 0 \n", + "coef_walk_access_to_retail_and_tour_frequency_is_1 0 \n", + "coef_walk_access_to_retail_and_tour_frequency_is_2 0 \n", + "coef_walk_access_to_retail_and_tour_frequency_i... 0 " ] }, "metadata": {}, @@ -1886,23 +4524,528 @@ "name": "stderr", "output_type": "stream", "text": [ - "/var/folders/js/bk_dt9015j79_f6bxnc44dsr0000gp/T/ipykernel_48972/89088409.py:2: PossibleOverspecification: WARNING: Model is possibly over-specified (hessian is nearly singular).\n", - " m.estimate(method='SLSQP')\n", - "/Users/jeffnewman/LocalGit/asim-larch/activitysim-larch/conda-environments/AL-ENV/lib/python3.9/site-packages/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.818666298527715e-07 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/var/folders/js/bk_dt9015j79_f6bxnc44dsr0000gp/T/ipykernel_48972/89088409.py:2: PossibleOverspecification: WARNING: Model seems to have 2 parameter estimators with negative variance\n", - "- coef_1_escort_tour_constant\n", - "- coef_2_plus_escort_tours_constant\n", - " m.estimate(method='SLSQP')\n", - "/var/folders/js/bk_dt9015j79_f6bxnc44dsr0000gp/T/ipykernel_48972/89088409.py:2: RuntimeWarning: invalid value encountered in sqrt\n", - " m.estimate(method='SLSQP')\n", - "req_data does not request avail_ca or avail_co but it is set and being provided\n" + "/Users/jpn/Git/est-mode/larch/src/larch/model/jaxmodel.py:1156: PossibleOverspecification: Model is possibly over-specified (hessian is nearly singular).\n", + " self.calculate_parameter_covariance()\n" ] }, { "data": { "text/html": [ - "

Iteration 076 [Optimization terminated successfully]

" + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ValueStd Errt StatSignifNull ValueConstrained
Parameter      
coef_0_auto_household_and_escorting_tour-2.00 0.00 NA 0.00fixed value
coef_1_escort_tour_constant 0.430 NA NA 0.00
coef_1_plus_eating_out_tours_constant 0.732 NA NA 0.00
coef_1_plus_maintenance_tours_constant 0.481 NA NA 0.00
coef_1_plus_other_discretionary_tours_constant 0.901 NA NA 0.00
coef_1_plus_shopping_tours_constant 0.732 NA NA 0.00
coef_1_plus_visting_tours_constant 0.250 NA NA 0.00
coef_2_plus_escort_tours_constant 1.46 NA NA 0.00
coef_car_shortage_vs_workers_and_tour_frequency_is_5_plus-0.401 0.0883-4.54*** 0.00
coef_female_and_discretionary_tour 0.316 0.0881 3.59*** 0.00
coef_female_and_shopping_tour 0.352 0.0792 4.45*** 0.00
coef_high_income_group_and_discretionary_tour 0.246 0.163 1.50 0.00
coef_high_income_group_and_maintenance_tour 0.829 0.195 4.25*** 0.00
coef_high_income_group_and_shopping_tour 0.846 0.170 4.98*** 0.00
coef_high_income_group_and_tour_frequency_is_1 0.810 0.162 5.00*** 0.00
coef_high_income_group_and_tour_frequency_is_2 1.22 0.228 5.37*** 0.00
coef_high_income_group_and_tour_frequency_is_5_plus 1.57 0.350 4.49*** 0.00
coef_high_income_group_and_visiting_tour-0.715 0.204-3.50*** 0.00
coef_logged_maximum_residual_window_tour_frequency_is_1 1.66 0.131 12.64*** 0.00
coef_logged_maximum_residual_window_tour_frequency_is_5_plus 1.96 0.141 13.90*** 0.00
coef_mediumhigh_income_group_and_shopping_tour 0.573 0.164 3.49*** 0.00
coef_mediumlow_income_group_and_tour_frequency_is_1 0.685 0.171 4.01*** 0.00
coef_mediumlow_income_group_and_tour_frequency_is_2 0.593 0.242 2.45* 0.00
coef_mediumlow_income_group_and_tour_frequency_is_5_plus 1.60 0.362 4.41*** 0.00
coef_number_of_joint_tours_and_tour_frequency_is_4-0.761 0.227-3.36*** 0.00
coef_number_of_joint_tours_and_tour_frequency_is_5_plus-999. 0.00 NA 0.00fixed value
coef_number_of_mandatory_tours_and_tour_frequency_is_1-0.358 0.150-2.39* 0.00
coef_number_of_mandatory_tours_and_tour_frequency_is_2-1.62 0.237-6.86*** 0.00
coef_number_of_mandatory_tours_and_tour_frequency_is_5_plus-2.63 0.260-10.11*** 0.00
coef_presence_of_driving_school_kid_and_escorting_tour 0.368 0.0942 3.90*** 0.00
coef_presence_of_full_time_worker_and_maintenance_tour-0.255 0.0976-2.61** 0.00
coef_presence_of_non_worker_and_discretionary_tour-0.828 0.122-6.79*** 0.00
coef_presence_of_non_worker_and_eating_out_tour-0.660 0.155-4.26*** 0.00
coef_presence_of_non_worker_and_escorting_tour-0.531 0.0850-6.24*** 0.00
coef_presence_of_part_time_worker_and_maintenance_tour-0.576 0.109-5.30*** 0.00
coef_presence_of_pre_driving_school_kid_and_escorting_tour 1.76 0.0737 23.84*** 0.00
coef_presence_of_pre_school_kid_and_escorting_tour 0.550 0.0912 6.02*** 0.00
coef_presence_of_preschool_kid_in_household_and_tour_frequency_is_1-0.340 0.112-3.02** 0.00
coef_presence_of_preschool_kid_in_household_and_tour_frequency_is_5-0.650 0.151-4.31*** 0.00
coef_presence_of_retiree_and_eating_out_tour-1.20 0.245-4.90*** 0.00
coef_presence_of_retiree_and_escorting_tour-0.801 0.136-5.90*** 0.00
coef_presence_of_university_student_and_eating_out_tour-1.70 0.334-5.08*** 0.00
coef_total_number_of_tours_is_1-7.84 NA NA 0.00
coef_total_number_of_tours_is_2-10.3 NA NA 0.00
coef_total_number_of_tours_is_3-14.0 NA NA 0.00
coef_total_number_of_tours_is_4-17.0 NA NA 0.00
coef_urban_and_discretionary_tour 0.00 0.00 NA 0.00fixed value
coef_urban_and_escorting_tour-0.503 0.0816-6.17*** 0.00
coef_walk_access_to_retail_and_tour_frequency_is_1 0.108 0.0253 4.28*** 0.00
coef_walk_access_to_retail_and_tour_frequency_is_2 0.129 0.0303 4.25*** 0.00
coef_walk_access_to_retail_and_tour_frequency_is_5_plus 0.385 0.0468 8.23*** 0.00
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model PTYPE_UNIVERSITY\n" + ] + }, + { + "data": { + "text/html": [ + "

Iteration 074 [Optimization terminated successfully]

" ], "text/plain": [ "" @@ -1914,7 +5057,7 @@ { "data": { "text/html": [ - "

Best LL = -324.8584172756779

" + "

Best LL = -3512.6973954855457

" ], "text/plain": [ "" @@ -1945,70 +5088,74 @@ " \n", " \n", " value\n", + " best\n", " initvalue\n", - " nullvalue\n", " minimum\n", " maximum\n", + " nullvalue\n", " holdfast\n", - " note\n", - " best\n", + " \n", + " \n", + " param_name\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " coef_0_auto_household_and_escorting_tour\n", " -2.000000\n", + " -2.000000\n", " -2.0000\n", - " 0.0\n", " -2.0\n", " -2.0\n", + " 0.0\n", " 1\n", - " \n", - " -2.000000\n", " \n", " \n", " coef_1_escort_tour_constant\n", - " 1.851506\n", + " 1.761998\n", + " 1.761998\n", " 1.7028\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.851506\n", " \n", " \n", " coef_1_plus_eating_out_tours_constant\n", - " -13.970901\n", + " 2.214614\n", + " 2.214614\n", " 2.0723\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -13.970901\n", " \n", " \n", " coef_1_plus_maintenance_tours_constant\n", - " -0.338031\n", + " 0.085206\n", + " 0.085206\n", " 0.3348\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.338031\n", " \n", " \n", " coef_1_plus_other_discretionary_tours_constant\n", - " -1.473992\n", + " 1.308003\n", + " 1.308003\n", " 1.3389\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -1.473992\n", " \n", " \n", " ...\n", @@ -2019,109 +5166,106 @@ " ...\n", " ...\n", " ...\n", - " ...\n", " \n", " \n", " coef_urban_and_shopping_tour\n", - " 0.711573\n", + " 0.637185\n", + " 0.637185\n", " 0.5330\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.711573\n", " \n", " \n", " coef_urban_and_tour_frequency_is_1\n", - " -3.537340\n", + " -0.924987\n", + " -0.924987\n", " -1.1648\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -3.537340\n", " \n", " \n", " coef_urban_and_tour_frequency_is_2\n", - " -4.729195\n", + " -2.118276\n", + " -2.118276\n", " -2.3177\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -4.729195\n", " \n", " \n", " coef_urban_and_tour_frequency_is_5_plus\n", - " -6.020888\n", + " -2.502952\n", + " -2.502952\n", " -2.5027\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -6.020888\n", " \n", " \n", " coef_walk_access_to_retail_and_shopping\n", - " 0.102379\n", + " 0.072376\n", + " 0.072376\n", " 0.0972\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.102379\n", " \n", " \n", "\n", - "

70 rows × 8 columns

\n", + "

70 rows × 7 columns

\n", "" ], "text/plain": [ - " value initvalue \\\n", - "coef_0_auto_household_and_escorting_tour -2.000000 -2.0000 \n", - "coef_1_escort_tour_constant 1.851506 1.7028 \n", - "coef_1_plus_eating_out_tours_constant -13.970901 2.0723 \n", - "coef_1_plus_maintenance_tours_constant -0.338031 0.3348 \n", - "coef_1_plus_other_discretionary_tours_constant -1.473992 1.3389 \n", - "... ... ... \n", - "coef_urban_and_shopping_tour 0.711573 0.5330 \n", - "coef_urban_and_tour_frequency_is_1 -3.537340 -1.1648 \n", - "coef_urban_and_tour_frequency_is_2 -4.729195 -2.3177 \n", - "coef_urban_and_tour_frequency_is_5_plus -6.020888 -2.5027 \n", - "coef_walk_access_to_retail_and_shopping 0.102379 0.0972 \n", + " value best initvalue \\\n", + "param_name \n", + "coef_0_auto_household_and_escorting_tour -2.000000 -2.000000 -2.0000 \n", + "coef_1_escort_tour_constant 1.761998 1.761998 1.7028 \n", + "coef_1_plus_eating_out_tours_constant 2.214614 2.214614 2.0723 \n", + "coef_1_plus_maintenance_tours_constant 0.085206 0.085206 0.3348 \n", + "coef_1_plus_other_discretionary_tours_constant 1.308003 1.308003 1.3389 \n", + "... ... ... ... \n", + "coef_urban_and_shopping_tour 0.637185 0.637185 0.5330 \n", + "coef_urban_and_tour_frequency_is_1 -0.924987 -0.924987 -1.1648 \n", + "coef_urban_and_tour_frequency_is_2 -2.118276 -2.118276 -2.3177 \n", + "coef_urban_and_tour_frequency_is_5_plus -2.502952 -2.502952 -2.5027 \n", + "coef_walk_access_to_retail_and_shopping 0.072376 0.072376 0.0972 \n", "\n", - " nullvalue minimum maximum \\\n", - "coef_0_auto_household_and_escorting_tour 0.0 -2.0 -2.0 \n", - "coef_1_escort_tour_constant 0.0 NaN NaN \n", - "coef_1_plus_eating_out_tours_constant 0.0 NaN NaN \n", - "coef_1_plus_maintenance_tours_constant 0.0 NaN NaN \n", - "coef_1_plus_other_discretionary_tours_constant 0.0 NaN NaN \n", - "... ... ... ... \n", - "coef_urban_and_shopping_tour 0.0 NaN NaN \n", - "coef_urban_and_tour_frequency_is_1 0.0 NaN NaN \n", - "coef_urban_and_tour_frequency_is_2 0.0 NaN NaN \n", - "coef_urban_and_tour_frequency_is_5_plus 0.0 NaN NaN \n", - "coef_walk_access_to_retail_and_shopping 0.0 NaN NaN \n", + " minimum maximum nullvalue \\\n", + "param_name \n", + "coef_0_auto_household_and_escorting_tour -2.0 -2.0 0.0 \n", + "coef_1_escort_tour_constant -20.0 20.0 0.0 \n", + "coef_1_plus_eating_out_tours_constant -20.0 20.0 0.0 \n", + "coef_1_plus_maintenance_tours_constant -20.0 20.0 0.0 \n", + "coef_1_plus_other_discretionary_tours_constant -20.0 20.0 0.0 \n", + "... ... ... ... \n", + "coef_urban_and_shopping_tour -20.0 20.0 0.0 \n", + "coef_urban_and_tour_frequency_is_1 -20.0 20.0 0.0 \n", + "coef_urban_and_tour_frequency_is_2 -20.0 20.0 0.0 \n", + "coef_urban_and_tour_frequency_is_5_plus -20.0 20.0 0.0 \n", + "coef_walk_access_to_retail_and_shopping -20.0 20.0 0.0 \n", "\n", - " holdfast note best \n", - "coef_0_auto_household_and_escorting_tour 1 -2.000000 \n", - "coef_1_escort_tour_constant 0 1.851506 \n", - "coef_1_plus_eating_out_tours_constant 0 -13.970901 \n", - "coef_1_plus_maintenance_tours_constant 0 -0.338031 \n", - "coef_1_plus_other_discretionary_tours_constant 0 -1.473992 \n", - "... ... ... ... \n", - "coef_urban_and_shopping_tour 0 0.711573 \n", - "coef_urban_and_tour_frequency_is_1 0 -3.537340 \n", - "coef_urban_and_tour_frequency_is_2 0 -4.729195 \n", - "coef_urban_and_tour_frequency_is_5_plus 0 -6.020888 \n", - "coef_walk_access_to_retail_and_shopping 0 0.102379 \n", + " holdfast \n", + "param_name \n", + "coef_0_auto_household_and_escorting_tour 1 \n", + "coef_1_escort_tour_constant 0 \n", + "coef_1_plus_eating_out_tours_constant 0 \n", + "coef_1_plus_maintenance_tours_constant 0 \n", + "coef_1_plus_other_discretionary_tours_constant 0 \n", + "... ... \n", + "coef_urban_and_shopping_tour 0 \n", + "coef_urban_and_tour_frequency_is_1 0 \n", + "coef_urban_and_tour_frequency_is_2 0 \n", + "coef_urban_and_tour_frequency_is_5_plus 0 \n", + "coef_walk_access_to_retail_and_shopping 0 \n", "\n", - "[70 rows x 8 columns]" + "[70 rows x 7 columns]" ] }, "metadata": {}, @@ -2131,26 +5275,699 @@ "name": "stderr", "output_type": "stream", "text": [ - "/var/folders/js/bk_dt9015j79_f6bxnc44dsr0000gp/T/ipykernel_48972/89088409.py:2: PossibleOverspecification: WARNING: Model is possibly over-specified (hessian is nearly singular).\n", - " m.estimate(method='SLSQP')\n", - "/Users/jeffnewman/LocalGit/asim-larch/activitysim-larch/conda-environments/AL-ENV/lib/python3.9/site-packages/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.8717456834857003e-13 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/var/folders/js/bk_dt9015j79_f6bxnc44dsr0000gp/T/ipykernel_48972/89088409.py:2: PossibleOverspecification: WARNING: Model seems to have 13 parameter estimators with negative variance\n", - "- coef_1_plus_eating_out_tours_constant\n", - "- coef_1_plus_shopping_tours_constant\n", - "- coef_1_plus_visting_tours_constant\n", - "- coef_logged_maximum_residual_window_tour_frequency_is_0\n", - "- and 9 more\n", - " m.estimate(method='SLSQP')\n", - "/var/folders/js/bk_dt9015j79_f6bxnc44dsr0000gp/T/ipykernel_48972/89088409.py:2: RuntimeWarning: invalid value encountered in sqrt\n", - " m.estimate(method='SLSQP')\n", - "req_data does not request avail_ca or avail_co but it is set and being provided\n" + "/Users/jpn/Git/est-mode/larch/src/larch/model/jaxmodel.py:1156: PossibleOverspecification: Model is possibly over-specified (hessian is nearly singular).\n", + " self.calculate_parameter_covariance()\n" ] }, { "data": { "text/html": [ - "

Iteration 100 [Iteration limit reached]

" + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ValueStd Errt StatSignifNull ValueConstrained
Parameter      
coef_0_auto_household_and_escorting_tour-2.00 0.00 NA 0.00fixed value
coef_1_escort_tour_constant 1.76 185. 0.01 0.00
coef_1_plus_eating_out_tours_constant 2.21 185. 0.01 0.00
coef_1_plus_maintenance_tours_constant 0.0852 185. 0.00 0.00
coef_1_plus_other_discretionary_tours_constant 1.31 185. 0.01 0.00
coef_1_plus_shopping_tours_constant 1.84 185. 0.01 0.00
coef_1_plus_visting_tours_constant 1.17 185. 0.01 0.00
coef_2_plus_escort_tours_constant 3.01 371. 0.01 0.00
coef_auto_access_to_retail_and_discretionary 0.0900 0.138 0.65 0.00
coef_auto_access_to_retail_and_eating_out 0.0731 0.147 0.50 0.00
coef_car_shortage_vs_workers_and_tour_frequency_is_5_plus-0.790 0.187-4.23*** 0.00
coef_female_and_discretionary_tour-0.393 0.156-2.52* 0.00
coef_female_and_eatingout_tour-0.727 0.176-4.14*** 0.00
coef_female_and_tour_frequency_is_1-0.0110 0.151-0.07 0.00
coef_female_and_tour_frequency_is_2 0.140 0.188 0.74 0.00
coef_female_and_tour_frequency_is_5 1.41 0.250 5.62*** 0.00
coef_high_income_group_and_eating_out_tour-0.130 0.215-0.60 0.00
coef_high_income_group_and_shopping_tour 0.648 0.180 3.60*** 0.00
coef_high_income_group_and_tour_frequency_is_1 0.192 0.180 1.07 0.00
coef_high_income_group_and_tour_frequency_is_2 0.658 0.215 3.07** 0.00
coef_high_income_group_and_tour_frequency_is_5_plus 0.540 0.282 1.92 0.00
coef_high_income_group_and_visiting_tour-0.536 0.215-2.50* 0.00
coef_logged_maximum_residual_window_tour_frequency_is_0 1.14 NA NA 0.00
coef_logged_maximum_residual_window_tour_frequency_is_5_plus 1.53 NA NA 0.00
coef_mediumhigh_income_group_and_tour_frequency_is_1-0.0200 0.180-0.11 0.00
coef_mediumhigh_income_group_and_tour_frequency_is_2 0.0675 0.226 0.30 0.00
coef_mediumhigh_income_group_and_tour_frequency_is_5_plus 0.530 0.268 1.98* 0.00
coef_number_of_joint_discretionary_tours 1.21 0.353 3.43*** 0.00
coef_number_of_joint_shopping_tours-0.600 0.791-0.76 0.00
coef_number_of_joint_tours_and_tour_frequency_is_2-0.543 0.347-1.57 0.00
coef_number_of_joint_tours_and_tour_frequency_is_3-0.800 0.423-1.89 0.00
coef_number_of_joint_tours_and_tour_frequency_is_5_plus-999. 0.00 NA 0.00fixed value
coef_number_of_mandatory_tours_and_tour_frequency_is_1-0.0978 0.170-0.58 0.00
coef_number_of_mandatory_tours_and_tour_frequency_is_2-0.496 0.194-2.55* 0.00
coef_number_of_mandatory_tours_and_tour_frequency_is_3-1.55 0.250-6.21*** 0.00
coef_presence_of_full_time_worker_and_discretionary_tour-0.576 0.145-3.98*** 0.00
coef_presence_of_full_time_worker_and_eating_out_tour-0.770 0.198-3.89*** 0.00
coef_presence_of_full_time_worker_and_shopping_tour-0.732 0.158-4.63*** 0.00
coef_presence_of_non_worker_and_discretionary_tour 1.12 0.179 6.23*** 0.00
coef_presence_of_non_worker_and_tour_frequency_is_1-0.653 0.180-3.64*** 0.00
coef_presence_of_non_worker_and_tour_frequency_is_5-1.46 0.214-6.82*** 0.00
coef_presence_of_part_time_worker_and_eating_out_tour-2.81 0.388-7.24*** 0.00
coef_presence_of_part_time_worker_and_escorting_tour-1.59 0.172-9.21*** 0.00
coef_presence_of_part_time_worker_and_shopping_tour-0.486 0.156-3.11** 0.00
coef_presence_of_pre_driving_school_kid_and_escorting_tour 0.992 0.114 8.69*** 0.00
coef_presence_of_pre_driving_school_kid_and_maintenance_tour 0.880 0.221 3.98*** 0.00
coef_presence_of_pre_school_kid_and_escorting_tour 1.88 0.216 8.71*** 0.00
coef_presence_of_pre_school_kid_and_maintenance_tour 0.753 0.317 2.38* 0.00
coef_presence_of_pre_school_kid_and_shopping_tour 1.06 0.245 4.32*** 0.00
coef_presence_of_preschool_kid_in_household_and_tour_frequency_is_1-1.00 0.269-3.71*** 0.00
coef_presence_of_preschool_kid_in_household_and_tour_frequency_is_2-1.76 0.389-4.53*** 0.00
coef_presence_of_preschool_kid_in_household_and_tour_frequency_is_5-2.20 0.521-4.23*** 0.00
coef_presence_of_university_student_and_discretionary_tour-0.735 0.169-4.35*** 0.00
coef_presence_of_university_student_and_eating_out_tour-0.545 0.227-2.41* 0.00
coef_total_number_of_tours_is_1-6.46 185.-0.03 0.00
coef_total_number_of_tours_is_2-9.07 371.-0.02 0.00
coef_total_number_of_tours_is_3-12.0 556.-0.02 0.00
coef_total_number_of_tours_is_4-15.8 741.-0.02 0.00
coef_transit_access_to_retail_and_discretionary 0.00 0.00 NA 0.00fixed value
coef_transit_access_to_retail_and_maintenance 0.100 0.0621 1.61 0.00
coef_transit_access_to_retail_and_tour_frequency_is_5_plus 0.0272 0.0421 0.65 0.00
coef_urban_and_discretionary_tour 1.25 0.258 4.83*** 0.00
coef_urban_and_eatingout_tour 0.594 0.274 2.17* 0.00
coef_urban_and_escorting_tour 0.778 0.233 3.35*** 0.00
coef_urban_and_maintenance_tour 0.853 0.339 2.52* 0.00
coef_urban_and_shopping_tour 0.637 0.262 2.43* 0.00
coef_urban_and_tour_frequency_is_1-0.925 0.280-3.30*** 0.00
coef_urban_and_tour_frequency_is_2-2.12 0.455-4.66*** 0.00
coef_urban_and_tour_frequency_is_5_plus-2.50 0.659-3.80*** 0.00
coef_walk_access_to_retail_and_shopping 0.0724 0.0523 1.38 0.00
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model PTYPE_NONWORK\n" + ] + }, + { + "data": { + "text/html": [ + "

Iteration 152 [Optimization terminated successfully]

" ], "text/plain": [ "" @@ -2162,7 +5979,7 @@ { "data": { "text/html": [ - "

Best LL = -1038.9605658891858

" + "

Best LL = -15004.401530353549

" ], "text/plain": [ "" @@ -2193,70 +6010,74 @@ " \n", " \n", " value\n", + " best\n", " initvalue\n", - " nullvalue\n", " minimum\n", " maximum\n", + " nullvalue\n", " holdfast\n", - " note\n", - " best\n", + " \n", + " \n", + " param_name\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " coef_0_auto_household_and_escorting_tour\n", " -2.000000\n", + " -2.000000\n", " -2.0000\n", - " 0.0\n", " -2.0\n", " -2.0\n", + " 0.0\n", " 1\n", - " \n", - " -2.000000\n", " \n", " \n", " coef_1_escort_tour_constant\n", - " -4.317862\n", + " -0.539501\n", + " -0.539501\n", " -0.0629\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -4.317862\n", " \n", " \n", " coef_1_plus_eating_out_tours_constant\n", - " -4.459267\n", + " -0.520038\n", + " -0.520038\n", " -0.1429\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -4.459267\n", " \n", " \n", " coef_1_plus_maintenance_tours_constant\n", - " -9.609591\n", + " -0.627098\n", + " -0.627098\n", " -0.0653\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -9.609591\n", " \n", " \n", " coef_1_plus_other_discretionary_tours_constant\n", - " -4.488178\n", + " -0.154697\n", + " -0.154697\n", " 0.3334\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -4.488178\n", " \n", " \n", " ...\n", @@ -2267,122 +6088,120 @@ " ...\n", " ...\n", " ...\n", - " ...\n", " \n", " \n", " coef_walk_access_to_retail_and_discretionary\n", - " 0.214072\n", + " 0.089664\n", + " 0.089664\n", " 0.0772\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.214072\n", " \n", " \n", " coef_walk_access_to_retail_and_shopping\n", - " 0.039849\n", + " 0.080837\n", + " 0.080837\n", " 0.0598\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.039849\n", " \n", " \n", " coef_walk_access_to_retail_and_tour_frequency_is_1\n", - " -0.507092\n", + " 0.126334\n", + " 0.126334\n", " 0.0713\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.507092\n", " \n", " \n", " coef_walk_access_to_retail_and_tour_frequency_is_2\n", - " -0.403984\n", + " 0.186292\n", + " 0.186292\n", " 0.1256\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.403984\n", " \n", " \n", " coef_walk_access_to_retail_and_tour_frequency_is_5_plus\n", - " -0.260693\n", + " 0.163397\n", + " 0.163397\n", " 0.1508\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.260693\n", " \n", " \n", "\n", - "

77 rows × 8 columns

\n", + "

77 rows × 7 columns

\n", "" ], "text/plain": [ - " value initvalue \\\n", - "coef_0_auto_household_and_escorting_tour -2.000000 -2.0000 \n", - "coef_1_escort_tour_constant -4.317862 -0.0629 \n", - "coef_1_plus_eating_out_tours_constant -4.459267 -0.1429 \n", - "coef_1_plus_maintenance_tours_constant -9.609591 -0.0653 \n", - "coef_1_plus_other_discretionary_tours_constant -4.488178 0.3334 \n", - "... ... ... \n", - "coef_walk_access_to_retail_and_discretionary 0.214072 0.0772 \n", - "coef_walk_access_to_retail_and_shopping 0.039849 0.0598 \n", - "coef_walk_access_to_retail_and_tour_frequency_is_1 -0.507092 0.0713 \n", - "coef_walk_access_to_retail_and_tour_frequency_is_2 -0.403984 0.1256 \n", - "coef_walk_access_to_retail_and_tour_frequency_i... -0.260693 0.1508 \n", + " value best \\\n", + "param_name \n", + "coef_0_auto_household_and_escorting_tour -2.000000 -2.000000 \n", + "coef_1_escort_tour_constant -0.539501 -0.539501 \n", + "coef_1_plus_eating_out_tours_constant -0.520038 -0.520038 \n", + "coef_1_plus_maintenance_tours_constant -0.627098 -0.627098 \n", + "coef_1_plus_other_discretionary_tours_constant -0.154697 -0.154697 \n", + "... ... ... \n", + "coef_walk_access_to_retail_and_discretionary 0.089664 0.089664 \n", + "coef_walk_access_to_retail_and_shopping 0.080837 0.080837 \n", + "coef_walk_access_to_retail_and_tour_frequency_is_1 0.126334 0.126334 \n", + "coef_walk_access_to_retail_and_tour_frequency_is_2 0.186292 0.186292 \n", + "coef_walk_access_to_retail_and_tour_frequency_i... 0.163397 0.163397 \n", "\n", - " nullvalue minimum \\\n", - "coef_0_auto_household_and_escorting_tour 0.0 -2.0 \n", - "coef_1_escort_tour_constant 0.0 NaN \n", - "coef_1_plus_eating_out_tours_constant 0.0 NaN \n", - "coef_1_plus_maintenance_tours_constant 0.0 NaN \n", - "coef_1_plus_other_discretionary_tours_constant 0.0 NaN \n", + " initvalue minimum \\\n", + "param_name \n", + "coef_0_auto_household_and_escorting_tour -2.0000 -2.0 \n", + "coef_1_escort_tour_constant -0.0629 -20.0 \n", + "coef_1_plus_eating_out_tours_constant -0.1429 -20.0 \n", + "coef_1_plus_maintenance_tours_constant -0.0653 -20.0 \n", + "coef_1_plus_other_discretionary_tours_constant 0.3334 -20.0 \n", "... ... ... \n", - "coef_walk_access_to_retail_and_discretionary 0.0 NaN \n", - "coef_walk_access_to_retail_and_shopping 0.0 NaN \n", - "coef_walk_access_to_retail_and_tour_frequency_is_1 0.0 NaN \n", - "coef_walk_access_to_retail_and_tour_frequency_is_2 0.0 NaN \n", - "coef_walk_access_to_retail_and_tour_frequency_i... 0.0 NaN \n", + "coef_walk_access_to_retail_and_discretionary 0.0772 -20.0 \n", + "coef_walk_access_to_retail_and_shopping 0.0598 -20.0 \n", + "coef_walk_access_to_retail_and_tour_frequency_is_1 0.0713 -20.0 \n", + "coef_walk_access_to_retail_and_tour_frequency_is_2 0.1256 -20.0 \n", + "coef_walk_access_to_retail_and_tour_frequency_i... 0.1508 -20.0 \n", "\n", - " maximum holdfast note \\\n", - "coef_0_auto_household_and_escorting_tour -2.0 1 \n", - "coef_1_escort_tour_constant NaN 0 \n", - "coef_1_plus_eating_out_tours_constant NaN 0 \n", - "coef_1_plus_maintenance_tours_constant NaN 0 \n", - "coef_1_plus_other_discretionary_tours_constant NaN 0 \n", - "... ... ... ... \n", - "coef_walk_access_to_retail_and_discretionary NaN 0 \n", - "coef_walk_access_to_retail_and_shopping NaN 0 \n", - "coef_walk_access_to_retail_and_tour_frequency_is_1 NaN 0 \n", - "coef_walk_access_to_retail_and_tour_frequency_is_2 NaN 0 \n", - "coef_walk_access_to_retail_and_tour_frequency_i... NaN 0 \n", + " maximum nullvalue \\\n", + "param_name \n", + "coef_0_auto_household_and_escorting_tour -2.0 0.0 \n", + "coef_1_escort_tour_constant 20.0 0.0 \n", + "coef_1_plus_eating_out_tours_constant 20.0 0.0 \n", + "coef_1_plus_maintenance_tours_constant 20.0 0.0 \n", + "coef_1_plus_other_discretionary_tours_constant 20.0 0.0 \n", + "... ... ... \n", + "coef_walk_access_to_retail_and_discretionary 20.0 0.0 \n", + "coef_walk_access_to_retail_and_shopping 20.0 0.0 \n", + "coef_walk_access_to_retail_and_tour_frequency_is_1 20.0 0.0 \n", + "coef_walk_access_to_retail_and_tour_frequency_is_2 20.0 0.0 \n", + "coef_walk_access_to_retail_and_tour_frequency_i... 20.0 0.0 \n", "\n", - " best \n", - "coef_0_auto_household_and_escorting_tour -2.000000 \n", - "coef_1_escort_tour_constant -4.317862 \n", - "coef_1_plus_eating_out_tours_constant -4.459267 \n", - "coef_1_plus_maintenance_tours_constant -9.609591 \n", - "coef_1_plus_other_discretionary_tours_constant -4.488178 \n", + " holdfast \n", + "param_name \n", + "coef_0_auto_household_and_escorting_tour 1 \n", + "coef_1_escort_tour_constant 0 \n", + "coef_1_plus_eating_out_tours_constant 0 \n", + "coef_1_plus_maintenance_tours_constant 0 \n", + "coef_1_plus_other_discretionary_tours_constant 0 \n", "... ... \n", - "coef_walk_access_to_retail_and_discretionary 0.214072 \n", - "coef_walk_access_to_retail_and_shopping 0.039849 \n", - "coef_walk_access_to_retail_and_tour_frequency_is_1 -0.507092 \n", - "coef_walk_access_to_retail_and_tour_frequency_is_2 -0.403984 \n", - "coef_walk_access_to_retail_and_tour_frequency_i... -0.260693 \n", + "coef_walk_access_to_retail_and_discretionary 0 \n", + "coef_walk_access_to_retail_and_shopping 0 \n", + "coef_walk_access_to_retail_and_tour_frequency_is_1 0 \n", + "coef_walk_access_to_retail_and_tour_frequency_is_2 0 \n", + "coef_walk_access_to_retail_and_tour_frequency_i... 0 \n", "\n", - "[77 rows x 8 columns]" + "[77 rows x 7 columns]" ] }, "metadata": {}, @@ -2392,26 +6211,762 @@ "name": "stderr", "output_type": "stream", "text": [ - "/var/folders/js/bk_dt9015j79_f6bxnc44dsr0000gp/T/ipykernel_48972/89088409.py:2: PossibleOverspecification: WARNING: Model is possibly over-specified (hessian is nearly singular).\n", - " m.estimate(method='SLSQP')\n", - "/Users/jeffnewman/LocalGit/asim-larch/activitysim-larch/conda-environments/AL-ENV/lib/python3.9/site-packages/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.673077519570165e-16 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/var/folders/js/bk_dt9015j79_f6bxnc44dsr0000gp/T/ipykernel_48972/89088409.py:2: PossibleOverspecification: WARNING: Model seems to have 21 parameter estimators with negative variance\n", - "- coef_1_escort_tour_constant\n", - "- coef_1_plus_eating_out_tours_constant\n", - "- coef_1_plus_maintenance_tours_constant\n", - "- coef_1_plus_other_discretionary_tours_constant\n", - "- and 17 more\n", - " m.estimate(method='SLSQP')\n", - "/var/folders/js/bk_dt9015j79_f6bxnc44dsr0000gp/T/ipykernel_48972/89088409.py:2: RuntimeWarning: invalid value encountered in sqrt\n", - " m.estimate(method='SLSQP')\n", - "req_data does not request avail_ca or avail_co but it is set and being provided\n" + "/Users/jpn/Git/est-mode/larch/src/larch/model/jaxmodel.py:1156: PossibleOverspecification: Model is possibly over-specified (hessian is nearly singular).\n", + " self.calculate_parameter_covariance()\n" ] }, { "data": { "text/html": [ - "

Iteration 074 [Optimization terminated successfully]

" + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ValueStd Errt StatSignifNull ValueConstrained
Parameter      
coef_0_auto_household_and_escorting_tour-2.00 0.00 NA 0.00fixed value
coef_1_escort_tour_constant-0.540 102.-0.01 0.00
coef_1_plus_eating_out_tours_constant-0.520 102.-0.01 0.00
coef_1_plus_maintenance_tours_constant-0.627 102.-0.01 0.00
coef_1_plus_other_discretionary_tours_constant-0.155 102.-0.00 0.00
coef_1_plus_shopping_tours_constant-0.0544 102.-0.00 0.00
coef_1_plus_visting_tours_constant-0.452 102.-0.00 0.00
coef_2_plus_escort_tours_constant-0.0628 203.-0.00 0.00
coef_at_home_pre_driving_school_kid_and_escorting_tour-1.18 0.154-7.67*** 0.00
coef_at_home_pre_school_kid_and_eating_out_tour-0.368 0.216-1.70 0.00
coef_at_home_pre_school_kid_and_escorting_tour-0.332 0.105-3.18** 0.00
coef_auto_access_to_retail_and_maintenance 0.108 0.0554 1.94 0.00
coef_car_shortage_vs_workers_and_tour_frequency_is_1-0.160 0.414-0.39 0.00
coef_car_shortage_vs_workers_and_tour_frequency_is_2-1.15 0.428-2.70** 0.00
coef_car_shortage_vs_workers_and_tour_frequency_is_5_plus-1.52 0.484-3.14** 0.00
coef_car_surplus_vs_workers_and_tour_frequency_is_5_plus 0.878 0.240 3.65*** 0.00
coef_female_and_maintenance_tour-0.350 0.0674-5.19*** 0.00
coef_female_and_tour_frequency_is_1 0.509 0.192 2.65** 0.00
coef_female_and_tour_frequency_is_2 0.461 0.198 2.33* 0.00
coef_female_and_tour_frequency_is_3 0.637 0.220 2.89** 0.00
coef_female_and_tour_frequency_is_5 0.996 0.304 3.28** 0.00
coef_high_income_group_and_discretionary_tour 0.831 0.107 7.78*** 0.00
coef_high_income_group_and_eating_out_tour 0.589 0.153 3.86*** 0.00
coef_high_income_group_and_shopping_tour 0.913 0.0932 9.79*** 0.00
coef_high_income_group_and_tour_frequency_is_2 1.24 0.312 3.99*** 0.00
coef_high_income_group_and_tour_frequency_is_3 1.94 0.340 5.71*** 0.00
coef_high_income_group_and_tour_frequency_is_5_plus 2.71 0.384 7.04*** 0.00
coef_high_income_group_and_visiting_tour-1.12 0.169-6.63*** 0.00
coef_logged_maximum_residual_window_tour_frequency_is_1 3.58 0.342 10.47*** 0.00
coef_logged_maximum_residual_window_tour_frequency_is_5_plus 2.85 0.387 7.37*** 0.00
coef_mediumhigh_income_group_and_discretionary_tour 0.511 0.103 4.96*** 0.00
coef_mediumhigh_income_group_and_eating_out_tour 0.441 0.147 3.00** 0.00
coef_mediumhigh_income_group_and_shopping_tour 0.942 0.0888 10.61*** 0.00
coef_mediumhigh_income_group_and_tour_frequency_is_1 0.690 0.282 2.44* 0.00
coef_mediumhigh_income_group_and_tour_frequency_is_2 0.681 0.291 2.34* 0.00
coef_mediumhigh_income_group_and_tour_frequency_is_5_plus 0.625 0.314 1.99* 0.00
coef_mediumhigh_income_group_and_visiting_tour-0.429 0.112-3.83*** 0.00
coef_mediumlow_income_group_and_discretionary_tour 0.141 0.101 1.40 0.00
coef_mediumlow_income_group_and_eating_out_tour 0.125 0.142 0.88 0.00
coef_mediumlow_income_group_and_shopping_tour 0.698 0.0888 7.86*** 0.00
coef_mediumlow_income_group_and_tour_frequency_is_1 0.934 0.288 3.24** 0.00
coef_mediumlow_income_group_and_tour_frequency_is_5_plus 1.11 0.296 3.77*** 0.00
coef_number_of_joint_eating_out_tours-0.263 0.580-0.45 0.00
coef_number_of_joint_shopping_tours-0.612 0.233-2.62** 0.00
coef_number_of_joint_tours_and_tour_frequency_is_1-3.09 1.93-1.60 0.00
coef_number_of_joint_tours_and_tour_frequency_is_2-1.35 1.65-0.81 0.00
coef_number_of_joint_tours_and_tour_frequency_is_3-1.20 1.65-0.73 0.00
coef_number_of_joint_tours_and_tour_frequency_is_5_plus-1.39 1.67-0.83 0.00
coef_number_of_mandatory_tours_and_tour_frequency_is_1-0.677 1.06e-09-BIG*** 0.00
coef_number_of_mandatory_tours_and_tour_frequency_is_3-1.05 1.80e-09-BIG*** 0.00
coef_number_of_mandatory_tours_and_tour_frequency_is_5_plus-999. 0.00 NA 0.00fixed value
coef_presence_of_full_time_worker_and_eating_out_tour-0.429 0.109-3.93*** 0.00
coef_presence_of_full_time_worker_and_escorting_tour 0.436 0.0527 8.26*** 0.00
coef_presence_of_non_worker_and_eating_out_tour-0.413 0.107-3.86*** 0.00
coef_presence_of_non_worker_and_tour_frequency_is_1-0.162 0.185-0.87 0.00
coef_presence_of_non_worker_and_tour_frequency_is_2-0.633 0.192-3.30*** 0.00
coef_presence_of_non_worker_and_tour_frequency_is_5-1.03 0.212-4.86*** 0.00
coef_presence_of_part_time_worker_and_discretionary_tour-0.381 0.0565-6.74*** 0.00
coef_presence_of_part_time_worker_and_escorting_tour-0.642 0.0637-10.08*** 0.00
coef_presence_of_pre_driving_school_kid_and_escorting_tour 1.35 0.0589 22.99*** 0.00
coef_presence_of_pre_school_kid_and_escorting_tour 0.820 0.0530 15.45*** 0.00
coef_presence_of_predriving_school_kid_in_household_and_tour_frequency_is_1 0.0317 0.189 0.17 0.00
coef_presence_of_predriving_school_kid_in_household_and_tour_frequency_is_5 0.573 0.200 2.86** 0.00
coef_presence_of_preschool_kid_in_household_and_tour_frequency_is_5-0.739 0.186-3.98*** 0.00
coef_presence_of_retiree_and_eating_out_tour-0.778 0.186-4.19*** 0.00
coef_presence_of_retiree_and_tour_frequency_is_1-0.223 0.223-1.00 0.00
coef_presence_of_retiree_and_tour_frequency_is_5-0.225 0.230-0.98 0.00
coef_total_number_of_tours_is_1-10.6 102.-0.10 0.00
coef_total_number_of_tours_is_2-13.0 203.-0.06 0.00
coef_total_number_of_tours_is_3-15.2 305.-0.05 0.00
coef_total_number_of_tours_is_4-17.7 407.-0.04 0.00
coef_urban_and_discretionary_tour 0.00 0.00 NA 0.00fixed value
coef_walk_access_to_retail_and_discretionary 0.0897 0.0225 3.98*** 0.00
coef_walk_access_to_retail_and_shopping 0.0808 0.0199 4.07*** 0.00
coef_walk_access_to_retail_and_tour_frequency_is_1 0.126 0.0653 1.93 0.00
coef_walk_access_to_retail_and_tour_frequency_is_2 0.186 0.0679 2.74** 0.00
coef_walk_access_to_retail_and_tour_frequency_is_5_plus 0.163 0.0735 2.22* 0.00
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model PTYPE_RETIRED\n" + ] + }, + { + "data": { + "text/html": [ + "

Iteration 076 [Optimization terminated successfully]

" ], "text/plain": [ "" @@ -2423,7 +6978,7 @@ { "data": { "text/html": [ - "

Best LL = -787.4000431560225

" + "

Best LL = -7936.229778686792

" ], "text/plain": [ "" @@ -2454,823 +7009,783 @@ " \n", " \n", " value\n", + " best\n", " initvalue\n", - " nullvalue\n", " minimum\n", " maximum\n", + " nullvalue\n", " holdfast\n", - " note\n", - " best\n", + " \n", + " \n", + " param_name\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " coef_0_auto_household_and_escorting_tour\n", " -2.000000\n", + " -2.000000\n", " -2.0000\n", - " 0.0\n", " -2.0\n", " -2.0\n", + " 0.0\n", " 1\n", - " \n", - " -2.000000\n", " \n", " \n", " coef_1_escort_tour_constant\n", - " -2.730596\n", + " -0.420225\n", + " -0.420225\n", " -0.3992\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -2.730596\n", " \n", " \n", " coef_1_plus_eating_out_tours_constant\n", - " -2.583305\n", + " -0.040375\n", + " -0.040375\n", " 0.0245\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -2.583305\n", " \n", " \n", " coef_1_plus_maintenance_tours_constant\n", - " -2.299219\n", + " 0.008956\n", + " 0.008956\n", " 0.1046\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -2.299219\n", " \n", " \n", " coef_1_plus_other_discretionary_tours_constant\n", - " -2.243196\n", + " 0.373522\n", + " 0.373522\n", " 0.4282\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -2.243196\n", " \n", " \n", " coef_1_plus_shopping_tours_constant\n", - " -1.916643\n", + " 0.512414\n", + " 0.512414\n", " 0.5947\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -1.916643\n", " \n", " \n", " coef_1_plus_visting_tours_constant\n", - " -2.344018\n", + " 0.079465\n", + " 0.079465\n", " 0.2789\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -2.344018\n", " \n", " \n", " coef_2_plus_escort_tours_constant\n", - " -4.935937\n", + " 0.307462\n", + " 0.307462\n", " 0.5175\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -4.935937\n", " \n", " \n", " coef_car_surplus_vs_workers_and_tour_frequency_is_1\n", - " 3.094754\n", + " 1.243116\n", + " 1.243116\n", " 0.7965\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 3.094754\n", " \n", " \n", " coef_car_surplus_vs_workers_and_tour_frequency_is_5_plus\n", - " 3.475854\n", + " 2.463002\n", + " 2.463002\n", " 2.1302\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 3.475854\n", " \n", " \n", " coef_female_and_discretionary_tour\n", - " 0.541528\n", + " 0.503760\n", + " 0.503760\n", " 0.4954\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.541528\n", " \n", " \n", " coef_female_and_maintenance_tour\n", - " 0.708328\n", + " 0.726465\n", + " 0.726465\n", " 0.7424\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.708328\n", " \n", " \n", " coef_female_and_shopping_tour\n", - " 0.609316\n", + " 0.951849\n", + " 0.951849\n", " 0.9688\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.609316\n", " \n", " \n", " coef_female_and_tour_frequency_is_1\n", - " -2.519155\n", + " -0.637595\n", + " -0.637595\n", " -0.9348\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -2.519155\n", " \n", " \n", " coef_female_and_tour_frequency_is_2\n", - " -2.727169\n", + " -0.922030\n", + " -0.922030\n", " -1.3028\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -2.727169\n", " \n", " \n", " coef_female_and_tour_frequency_is_5\n", - " -4.160203\n", + " -1.995909\n", + " -1.995909\n", " -2.2660\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -4.160203\n", " \n", " \n", " coef_high_income_group_and_discretionary_tour\n", - " 0.925884\n", + " 0.912572\n", + " 0.912572\n", " 1.0095\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.925884\n", " \n", " \n", " coef_high_income_group_and_eating_out_tour\n", - " 1.624493\n", + " 1.333766\n", + " 1.333766\n", " 1.4842\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.624493\n", " \n", " \n", " coef_high_income_group_and_maintenance_tour\n", - " 1.006105\n", + " 1.269533\n", + " 1.269533\n", " 1.3795\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.006105\n", " \n", " \n", " coef_high_income_group_and_shopping_tour\n", - " 1.105171\n", + " 0.999823\n", + " 0.999823\n", " 1.0949\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.105171\n", " \n", " \n", " coef_high_income_group_and_visiting_tour\n", - " -0.656664\n", + " -0.187117\n", + " -0.187117\n", " -0.5137\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.656664\n", " \n", " \n", " coef_logged_maximum_residual_window_tour_frequency_is_1\n", - " 2.966557\n", + " 2.036712\n", + " 2.036712\n", " 1.8357\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 2.966557\n", " \n", " \n", " coef_logged_maximum_residual_window_tour_frequency_is_2\n", - " 5.581416\n", + " 2.413288\n", + " 2.413288\n", " 2.2707\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 5.581416\n", " \n", " \n", " coef_logged_maximum_residual_window_tour_frequency_is_5_plus\n", - " 31.909531\n", + " 4.720353\n", + " 4.720353\n", " 4.4023\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 31.909531\n", " \n", " \n", " coef_mediumhigh_income_group_and_eating_out_tour\n", - " 0.964279\n", + " 0.944127\n", + " 0.944127\n", " 1.1810\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.964279\n", " \n", " \n", " coef_mediumhigh_income_group_and_maintenance_tour\n", - " 0.465351\n", + " 0.688701\n", + " 0.688701\n", " 0.7648\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.465351\n", " \n", " \n", " coef_mediumhigh_income_group_and_visiting_tour\n", - " -0.478169\n", + " -0.370854\n", + " -0.370854\n", " -0.4368\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.478169\n", " \n", " \n", " coef_mediumlow_income_group_and_eating_out_tour\n", - " 0.877486\n", + " 0.937822\n", + " 0.937822\n", " 0.9769\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.877486\n", " \n", " \n", " coef_number_of_joint_shopping_tours\n", - " -0.290998\n", + " -1.313333\n", + " -1.313333\n", " -0.8072\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.290998\n", " \n", " \n", " coef_number_of_joint_tours_and_tour_frequency_is_2\n", - " -6.327143\n", + " -1.010634\n", + " -1.010634\n", " -0.9500\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -6.327143\n", " \n", " \n", " coef_number_of_joint_tours_and_tour_frequency_is_3\n", - " -85.627389\n", + " -7.212476\n", + " -7.212476\n", " -7.1430\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -85.627389\n", " \n", " \n", " coef_number_of_joint_tours_and_tour_frequency_is_5_plus\n", " -999.000000\n", + " -999.000000\n", " -999.0000\n", - " 0.0\n", " -999.0\n", " -999.0\n", + " 0.0\n", " 1\n", - " \n", - " -999.000000\n", " \n", " \n", " coef_number_of_mandatory_tours_and_tour_frequency_is_3\n", " -5.019600\n", + " -5.019600\n", " -5.0196\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -5.019600\n", " \n", " \n", " coef_presence_of_full_time_worker_and_discretionary_tour\n", - " -0.331984\n", + " -0.657085\n", + " -0.657085\n", " -0.4835\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.331984\n", " \n", " \n", " coef_presence_of_full_time_worker_and_shopping_tour\n", - " -0.207325\n", + " -0.421774\n", + " -0.421774\n", " -0.3609\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.207325\n", " \n", " \n", " coef_presence_of_non_worker_and_discretionary_tour\n", - " -0.084104\n", + " -0.575662\n", + " -0.575662\n", " -0.5603\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.084104\n", " \n", " \n", " coef_presence_of_non_worker_and_eating_out_tour\n", - " -0.701536\n", + " -0.905311\n", + " -0.905311\n", " -0.7880\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.701536\n", " \n", " \n", " coef_presence_of_non_worker_and_tour_frequency_is_1\n", - " 1.190681\n", + " -0.017018\n", + " -0.017018\n", " 0.2240\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.190681\n", " \n", " \n", " coef_presence_of_non_worker_and_tour_frequency_is_2\n", - " 1.374195\n", + " 0.067997\n", + " 0.067997\n", " 0.2436\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.374195\n", " \n", " \n", " coef_presence_of_non_worker_and_tour_frequency_is_3\n", - " 2.156822\n", + " 0.258114\n", + " 0.258114\n", " 0.6200\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 2.156822\n", " \n", " \n", " coef_presence_of_non_worker_and_tour_frequency_is_5\n", - " 3.694303\n", + " 3.203479\n", + " 3.203479\n", " 3.3742\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 3.694303\n", " \n", " \n", " coef_presence_of_pre_driving_school_kid_and_escorting_tour\n", - " 1.682880\n", + " 1.424066\n", + " 1.424066\n", " 1.4903\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.682880\n", " \n", " \n", " coef_presence_of_pre_school_kid_and_escorting_tour\n", - " 0.641813\n", + " 0.393961\n", + " 0.393961\n", " 0.5027\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.641813\n", " \n", " \n", " coef_presence_of_retiree_and_eating_out_tour\n", - " -0.944680\n", + " -0.793588\n", + " -0.793588\n", " -0.9282\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.944680\n", " \n", " \n", " coef_presence_of_retiree_and_tour_frequency_is_1\n", - " 0.321424\n", + " -0.721457\n", + " -0.721457\n", " -0.4458\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.321424\n", " \n", " \n", " coef_presence_of_retiree_and_tour_frequency_is_5\n", - " -0.051242\n", + " -0.751932\n", + " -0.751932\n", " -0.5315\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.051242\n", " \n", " \n", " coef_total_number_of_tours_is_1\n", - " -14.532345\n", + " -8.702153\n", + " -8.702153\n", " -8.5684\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -14.532345\n", " \n", " \n", " coef_total_number_of_tours_is_2\n", - " -15.267480\n", + " -12.664662\n", + " -12.664662\n", " -12.7416\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -15.267480\n", " \n", " \n", " coef_total_number_of_tours_is_3\n", - " -15.029318\n", + " -14.734677\n", + " -14.734677\n", " -15.0978\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -15.029318\n", " \n", " \n", " coef_total_number_of_tours_is_4\n", - " -14.905140\n", + " -19.432621\n", + " -19.432621\n", " -19.5439\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -14.905140\n", " \n", " \n", " coef_total_number_of_tours_is_5\n", - " -27.549766\n", + " -19.999982\n", + " -19.999982\n", " -20.7897\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -27.549766\n", " \n", " \n", " coef_urban_and_discretionary_tour\n", " 0.000000\n", + " 0.000000\n", " 0.0000\n", " 0.0\n", " 0.0\n", " 0.0\n", " 1\n", - " \n", - " 0.000000\n", " \n", " \n", " coef_walk_access_to_retail_and_tour_frequency_is_5_plus\n", - " 0.691082\n", + " -0.010167\n", + " -0.010167\n", " 0.0616\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.691082\n", " \n", " \n", "\n", "" ], "text/plain": [ - " value initvalue \\\n", - "coef_0_auto_household_and_escorting_tour -2.000000 -2.0000 \n", - "coef_1_escort_tour_constant -2.730596 -0.3992 \n", - "coef_1_plus_eating_out_tours_constant -2.583305 0.0245 \n", - "coef_1_plus_maintenance_tours_constant -2.299219 0.1046 \n", - "coef_1_plus_other_discretionary_tours_constant -2.243196 0.4282 \n", - "coef_1_plus_shopping_tours_constant -1.916643 0.5947 \n", - "coef_1_plus_visting_tours_constant -2.344018 0.2789 \n", - "coef_2_plus_escort_tours_constant -4.935937 0.5175 \n", - "coef_car_surplus_vs_workers_and_tour_frequency_... 3.094754 0.7965 \n", - "coef_car_surplus_vs_workers_and_tour_frequency_... 3.475854 2.1302 \n", - "coef_female_and_discretionary_tour 0.541528 0.4954 \n", - "coef_female_and_maintenance_tour 0.708328 0.7424 \n", - "coef_female_and_shopping_tour 0.609316 0.9688 \n", - "coef_female_and_tour_frequency_is_1 -2.519155 -0.9348 \n", - "coef_female_and_tour_frequency_is_2 -2.727169 -1.3028 \n", - "coef_female_and_tour_frequency_is_5 -4.160203 -2.2660 \n", - "coef_high_income_group_and_discretionary_tour 0.925884 1.0095 \n", - "coef_high_income_group_and_eating_out_tour 1.624493 1.4842 \n", - "coef_high_income_group_and_maintenance_tour 1.006105 1.3795 \n", - "coef_high_income_group_and_shopping_tour 1.105171 1.0949 \n", - "coef_high_income_group_and_visiting_tour -0.656664 -0.5137 \n", - "coef_logged_maximum_residual_window_tour_freque... 2.966557 1.8357 \n", - "coef_logged_maximum_residual_window_tour_freque... 5.581416 2.2707 \n", - "coef_logged_maximum_residual_window_tour_freque... 31.909531 4.4023 \n", - "coef_mediumhigh_income_group_and_eating_out_tour 0.964279 1.1810 \n", - "coef_mediumhigh_income_group_and_maintenance_tour 0.465351 0.7648 \n", - "coef_mediumhigh_income_group_and_visiting_tour -0.478169 -0.4368 \n", - "coef_mediumlow_income_group_and_eating_out_tour 0.877486 0.9769 \n", - "coef_number_of_joint_shopping_tours -0.290998 -0.8072 \n", - "coef_number_of_joint_tours_and_tour_frequency_is_2 -6.327143 -0.9500 \n", - "coef_number_of_joint_tours_and_tour_frequency_is_3 -85.627389 -7.1430 \n", - "coef_number_of_joint_tours_and_tour_frequency_i... -999.000000 -999.0000 \n", - "coef_number_of_mandatory_tours_and_tour_frequen... -5.019600 -5.0196 \n", - "coef_presence_of_full_time_worker_and_discretio... -0.331984 -0.4835 \n", - "coef_presence_of_full_time_worker_and_shopping_... -0.207325 -0.3609 \n", - "coef_presence_of_non_worker_and_discretionary_tour -0.084104 -0.5603 \n", - "coef_presence_of_non_worker_and_eating_out_tour -0.701536 -0.7880 \n", - "coef_presence_of_non_worker_and_tour_frequency_... 1.190681 0.2240 \n", - "coef_presence_of_non_worker_and_tour_frequency_... 1.374195 0.2436 \n", - "coef_presence_of_non_worker_and_tour_frequency_... 2.156822 0.6200 \n", - "coef_presence_of_non_worker_and_tour_frequency_... 3.694303 3.3742 \n", - "coef_presence_of_pre_driving_school_kid_and_esc... 1.682880 1.4903 \n", - "coef_presence_of_pre_school_kid_and_escorting_tour 0.641813 0.5027 \n", - "coef_presence_of_retiree_and_eating_out_tour -0.944680 -0.9282 \n", - "coef_presence_of_retiree_and_tour_frequency_is_1 0.321424 -0.4458 \n", - "coef_presence_of_retiree_and_tour_frequency_is_5 -0.051242 -0.5315 \n", - "coef_total_number_of_tours_is_1 -14.532345 -8.5684 \n", - "coef_total_number_of_tours_is_2 -15.267480 -12.7416 \n", - "coef_total_number_of_tours_is_3 -15.029318 -15.0978 \n", - "coef_total_number_of_tours_is_4 -14.905140 -19.5439 \n", - "coef_total_number_of_tours_is_5 -27.549766 -20.7897 \n", - "coef_urban_and_discretionary_tour 0.000000 0.0000 \n", - "coef_walk_access_to_retail_and_tour_frequency_i... 0.691082 0.0616 \n", + " value best \\\n", + "param_name \n", + "coef_0_auto_household_and_escorting_tour -2.000000 -2.000000 \n", + "coef_1_escort_tour_constant -0.420225 -0.420225 \n", + "coef_1_plus_eating_out_tours_constant -0.040375 -0.040375 \n", + "coef_1_plus_maintenance_tours_constant 0.008956 0.008956 \n", + "coef_1_plus_other_discretionary_tours_constant 0.373522 0.373522 \n", + "coef_1_plus_shopping_tours_constant 0.512414 0.512414 \n", + "coef_1_plus_visting_tours_constant 0.079465 0.079465 \n", + "coef_2_plus_escort_tours_constant 0.307462 0.307462 \n", + "coef_car_surplus_vs_workers_and_tour_frequency_... 1.243116 1.243116 \n", + "coef_car_surplus_vs_workers_and_tour_frequency_... 2.463002 2.463002 \n", + "coef_female_and_discretionary_tour 0.503760 0.503760 \n", + "coef_female_and_maintenance_tour 0.726465 0.726465 \n", + "coef_female_and_shopping_tour 0.951849 0.951849 \n", + "coef_female_and_tour_frequency_is_1 -0.637595 -0.637595 \n", + "coef_female_and_tour_frequency_is_2 -0.922030 -0.922030 \n", + "coef_female_and_tour_frequency_is_5 -1.995909 -1.995909 \n", + "coef_high_income_group_and_discretionary_tour 0.912572 0.912572 \n", + "coef_high_income_group_and_eating_out_tour 1.333766 1.333766 \n", + "coef_high_income_group_and_maintenance_tour 1.269533 1.269533 \n", + "coef_high_income_group_and_shopping_tour 0.999823 0.999823 \n", + "coef_high_income_group_and_visiting_tour -0.187117 -0.187117 \n", + "coef_logged_maximum_residual_window_tour_freque... 2.036712 2.036712 \n", + "coef_logged_maximum_residual_window_tour_freque... 2.413288 2.413288 \n", + "coef_logged_maximum_residual_window_tour_freque... 4.720353 4.720353 \n", + "coef_mediumhigh_income_group_and_eating_out_tour 0.944127 0.944127 \n", + "coef_mediumhigh_income_group_and_maintenance_tour 0.688701 0.688701 \n", + "coef_mediumhigh_income_group_and_visiting_tour -0.370854 -0.370854 \n", + "coef_mediumlow_income_group_and_eating_out_tour 0.937822 0.937822 \n", + "coef_number_of_joint_shopping_tours -1.313333 -1.313333 \n", + "coef_number_of_joint_tours_and_tour_frequency_is_2 -1.010634 -1.010634 \n", + "coef_number_of_joint_tours_and_tour_frequency_is_3 -7.212476 -7.212476 \n", + "coef_number_of_joint_tours_and_tour_frequency_i... -999.000000 -999.000000 \n", + "coef_number_of_mandatory_tours_and_tour_frequen... -5.019600 -5.019600 \n", + "coef_presence_of_full_time_worker_and_discretio... -0.657085 -0.657085 \n", + "coef_presence_of_full_time_worker_and_shopping_... -0.421774 -0.421774 \n", + "coef_presence_of_non_worker_and_discretionary_tour -0.575662 -0.575662 \n", + "coef_presence_of_non_worker_and_eating_out_tour -0.905311 -0.905311 \n", + "coef_presence_of_non_worker_and_tour_frequency_... -0.017018 -0.017018 \n", + "coef_presence_of_non_worker_and_tour_frequency_... 0.067997 0.067997 \n", + "coef_presence_of_non_worker_and_tour_frequency_... 0.258114 0.258114 \n", + "coef_presence_of_non_worker_and_tour_frequency_... 3.203479 3.203479 \n", + "coef_presence_of_pre_driving_school_kid_and_esc... 1.424066 1.424066 \n", + "coef_presence_of_pre_school_kid_and_escorting_tour 0.393961 0.393961 \n", + "coef_presence_of_retiree_and_eating_out_tour -0.793588 -0.793588 \n", + "coef_presence_of_retiree_and_tour_frequency_is_1 -0.721457 -0.721457 \n", + "coef_presence_of_retiree_and_tour_frequency_is_5 -0.751932 -0.751932 \n", + "coef_total_number_of_tours_is_1 -8.702153 -8.702153 \n", + "coef_total_number_of_tours_is_2 -12.664662 -12.664662 \n", + "coef_total_number_of_tours_is_3 -14.734677 -14.734677 \n", + "coef_total_number_of_tours_is_4 -19.432621 -19.432621 \n", + "coef_total_number_of_tours_is_5 -19.999982 -19.999982 \n", + "coef_urban_and_discretionary_tour 0.000000 0.000000 \n", + "coef_walk_access_to_retail_and_tour_frequency_i... -0.010167 -0.010167 \n", "\n", - " nullvalue minimum \\\n", - "coef_0_auto_household_and_escorting_tour 0.0 -2.0 \n", - "coef_1_escort_tour_constant 0.0 NaN \n", - "coef_1_plus_eating_out_tours_constant 0.0 NaN \n", - "coef_1_plus_maintenance_tours_constant 0.0 NaN \n", - "coef_1_plus_other_discretionary_tours_constant 0.0 NaN \n", - "coef_1_plus_shopping_tours_constant 0.0 NaN \n", - "coef_1_plus_visting_tours_constant 0.0 NaN \n", - "coef_2_plus_escort_tours_constant 0.0 NaN \n", - "coef_car_surplus_vs_workers_and_tour_frequency_... 0.0 NaN \n", - "coef_car_surplus_vs_workers_and_tour_frequency_... 0.0 NaN \n", - "coef_female_and_discretionary_tour 0.0 NaN \n", - "coef_female_and_maintenance_tour 0.0 NaN \n", - "coef_female_and_shopping_tour 0.0 NaN \n", - "coef_female_and_tour_frequency_is_1 0.0 NaN \n", - "coef_female_and_tour_frequency_is_2 0.0 NaN \n", - "coef_female_and_tour_frequency_is_5 0.0 NaN \n", - "coef_high_income_group_and_discretionary_tour 0.0 NaN \n", - "coef_high_income_group_and_eating_out_tour 0.0 NaN \n", - "coef_high_income_group_and_maintenance_tour 0.0 NaN \n", - "coef_high_income_group_and_shopping_tour 0.0 NaN \n", - "coef_high_income_group_and_visiting_tour 0.0 NaN \n", - "coef_logged_maximum_residual_window_tour_freque... 0.0 NaN \n", - "coef_logged_maximum_residual_window_tour_freque... 0.0 NaN \n", - "coef_logged_maximum_residual_window_tour_freque... 0.0 NaN \n", - "coef_mediumhigh_income_group_and_eating_out_tour 0.0 NaN \n", - "coef_mediumhigh_income_group_and_maintenance_tour 0.0 NaN \n", - "coef_mediumhigh_income_group_and_visiting_tour 0.0 NaN \n", - "coef_mediumlow_income_group_and_eating_out_tour 0.0 NaN \n", - "coef_number_of_joint_shopping_tours 0.0 NaN \n", - "coef_number_of_joint_tours_and_tour_frequency_is_2 0.0 NaN \n", - "coef_number_of_joint_tours_and_tour_frequency_is_3 0.0 NaN \n", - "coef_number_of_joint_tours_and_tour_frequency_i... 0.0 -999.0 \n", - "coef_number_of_mandatory_tours_and_tour_frequen... 0.0 NaN \n", - "coef_presence_of_full_time_worker_and_discretio... 0.0 NaN \n", - "coef_presence_of_full_time_worker_and_shopping_... 0.0 NaN \n", - "coef_presence_of_non_worker_and_discretionary_tour 0.0 NaN \n", - "coef_presence_of_non_worker_and_eating_out_tour 0.0 NaN \n", - "coef_presence_of_non_worker_and_tour_frequency_... 0.0 NaN \n", - "coef_presence_of_non_worker_and_tour_frequency_... 0.0 NaN \n", - "coef_presence_of_non_worker_and_tour_frequency_... 0.0 NaN \n", - "coef_presence_of_non_worker_and_tour_frequency_... 0.0 NaN \n", - "coef_presence_of_pre_driving_school_kid_and_esc... 0.0 NaN \n", - "coef_presence_of_pre_school_kid_and_escorting_tour 0.0 NaN \n", - "coef_presence_of_retiree_and_eating_out_tour 0.0 NaN \n", - "coef_presence_of_retiree_and_tour_frequency_is_1 0.0 NaN \n", - "coef_presence_of_retiree_and_tour_frequency_is_5 0.0 NaN \n", - "coef_total_number_of_tours_is_1 0.0 NaN \n", - "coef_total_number_of_tours_is_2 0.0 NaN \n", - "coef_total_number_of_tours_is_3 0.0 NaN \n", - "coef_total_number_of_tours_is_4 0.0 NaN \n", - "coef_total_number_of_tours_is_5 0.0 NaN \n", - "coef_urban_and_discretionary_tour 0.0 0.0 \n", - "coef_walk_access_to_retail_and_tour_frequency_i... 0.0 NaN \n", + " initvalue minimum \\\n", + "param_name \n", + "coef_0_auto_household_and_escorting_tour -2.0000 -2.0 \n", + "coef_1_escort_tour_constant -0.3992 -20.0 \n", + "coef_1_plus_eating_out_tours_constant 0.0245 -20.0 \n", + "coef_1_plus_maintenance_tours_constant 0.1046 -20.0 \n", + "coef_1_plus_other_discretionary_tours_constant 0.4282 -20.0 \n", + "coef_1_plus_shopping_tours_constant 0.5947 -20.0 \n", + "coef_1_plus_visting_tours_constant 0.2789 -20.0 \n", + "coef_2_plus_escort_tours_constant 0.5175 -20.0 \n", + "coef_car_surplus_vs_workers_and_tour_frequency_... 0.7965 -20.0 \n", + "coef_car_surplus_vs_workers_and_tour_frequency_... 2.1302 -20.0 \n", + "coef_female_and_discretionary_tour 0.4954 -20.0 \n", + "coef_female_and_maintenance_tour 0.7424 -20.0 \n", + "coef_female_and_shopping_tour 0.9688 -20.0 \n", + "coef_female_and_tour_frequency_is_1 -0.9348 -20.0 \n", + "coef_female_and_tour_frequency_is_2 -1.3028 -20.0 \n", + "coef_female_and_tour_frequency_is_5 -2.2660 -20.0 \n", + "coef_high_income_group_and_discretionary_tour 1.0095 -20.0 \n", + "coef_high_income_group_and_eating_out_tour 1.4842 -20.0 \n", + "coef_high_income_group_and_maintenance_tour 1.3795 -20.0 \n", + "coef_high_income_group_and_shopping_tour 1.0949 -20.0 \n", + "coef_high_income_group_and_visiting_tour -0.5137 -20.0 \n", + "coef_logged_maximum_residual_window_tour_freque... 1.8357 -20.0 \n", + "coef_logged_maximum_residual_window_tour_freque... 2.2707 -20.0 \n", + "coef_logged_maximum_residual_window_tour_freque... 4.4023 -20.0 \n", + "coef_mediumhigh_income_group_and_eating_out_tour 1.1810 -20.0 \n", + "coef_mediumhigh_income_group_and_maintenance_tour 0.7648 -20.0 \n", + "coef_mediumhigh_income_group_and_visiting_tour -0.4368 -20.0 \n", + "coef_mediumlow_income_group_and_eating_out_tour 0.9769 -20.0 \n", + "coef_number_of_joint_shopping_tours -0.8072 -20.0 \n", + "coef_number_of_joint_tours_and_tour_frequency_is_2 -0.9500 -20.0 \n", + "coef_number_of_joint_tours_and_tour_frequency_is_3 -7.1430 -20.0 \n", + "coef_number_of_joint_tours_and_tour_frequency_i... -999.0000 -999.0 \n", + "coef_number_of_mandatory_tours_and_tour_frequen... -5.0196 -20.0 \n", + "coef_presence_of_full_time_worker_and_discretio... -0.4835 -20.0 \n", + "coef_presence_of_full_time_worker_and_shopping_... -0.3609 -20.0 \n", + "coef_presence_of_non_worker_and_discretionary_tour -0.5603 -20.0 \n", + "coef_presence_of_non_worker_and_eating_out_tour -0.7880 -20.0 \n", + "coef_presence_of_non_worker_and_tour_frequency_... 0.2240 -20.0 \n", + "coef_presence_of_non_worker_and_tour_frequency_... 0.2436 -20.0 \n", + "coef_presence_of_non_worker_and_tour_frequency_... 0.6200 -20.0 \n", + "coef_presence_of_non_worker_and_tour_frequency_... 3.3742 -20.0 \n", + "coef_presence_of_pre_driving_school_kid_and_esc... 1.4903 -20.0 \n", + "coef_presence_of_pre_school_kid_and_escorting_tour 0.5027 -20.0 \n", + "coef_presence_of_retiree_and_eating_out_tour -0.9282 -20.0 \n", + "coef_presence_of_retiree_and_tour_frequency_is_1 -0.4458 -20.0 \n", + "coef_presence_of_retiree_and_tour_frequency_is_5 -0.5315 -20.0 \n", + "coef_total_number_of_tours_is_1 -8.5684 -20.0 \n", + "coef_total_number_of_tours_is_2 -12.7416 -20.0 \n", + "coef_total_number_of_tours_is_3 -15.0978 -20.0 \n", + "coef_total_number_of_tours_is_4 -19.5439 -20.0 \n", + "coef_total_number_of_tours_is_5 -20.7897 -20.0 \n", + "coef_urban_and_discretionary_tour 0.0000 0.0 \n", + "coef_walk_access_to_retail_and_tour_frequency_i... 0.0616 -20.0 \n", "\n", - " maximum holdfast note \\\n", - "coef_0_auto_household_and_escorting_tour -2.0 1 \n", - "coef_1_escort_tour_constant NaN 0 \n", - "coef_1_plus_eating_out_tours_constant NaN 0 \n", - "coef_1_plus_maintenance_tours_constant NaN 0 \n", - "coef_1_plus_other_discretionary_tours_constant NaN 0 \n", - "coef_1_plus_shopping_tours_constant NaN 0 \n", - "coef_1_plus_visting_tours_constant NaN 0 \n", - "coef_2_plus_escort_tours_constant NaN 0 \n", - "coef_car_surplus_vs_workers_and_tour_frequency_... NaN 0 \n", - "coef_car_surplus_vs_workers_and_tour_frequency_... NaN 0 \n", - "coef_female_and_discretionary_tour NaN 0 \n", - "coef_female_and_maintenance_tour NaN 0 \n", - "coef_female_and_shopping_tour NaN 0 \n", - "coef_female_and_tour_frequency_is_1 NaN 0 \n", - "coef_female_and_tour_frequency_is_2 NaN 0 \n", - "coef_female_and_tour_frequency_is_5 NaN 0 \n", - "coef_high_income_group_and_discretionary_tour NaN 0 \n", - "coef_high_income_group_and_eating_out_tour NaN 0 \n", - "coef_high_income_group_and_maintenance_tour NaN 0 \n", - "coef_high_income_group_and_shopping_tour NaN 0 \n", - "coef_high_income_group_and_visiting_tour NaN 0 \n", - "coef_logged_maximum_residual_window_tour_freque... NaN 0 \n", - "coef_logged_maximum_residual_window_tour_freque... NaN 0 \n", - "coef_logged_maximum_residual_window_tour_freque... NaN 0 \n", - "coef_mediumhigh_income_group_and_eating_out_tour NaN 0 \n", - "coef_mediumhigh_income_group_and_maintenance_tour NaN 0 \n", - "coef_mediumhigh_income_group_and_visiting_tour NaN 0 \n", - "coef_mediumlow_income_group_and_eating_out_tour NaN 0 \n", - "coef_number_of_joint_shopping_tours NaN 0 \n", - "coef_number_of_joint_tours_and_tour_frequency_is_2 NaN 0 \n", - "coef_number_of_joint_tours_and_tour_frequency_is_3 NaN 0 \n", - "coef_number_of_joint_tours_and_tour_frequency_i... -999.0 1 \n", - "coef_number_of_mandatory_tours_and_tour_frequen... NaN 0 \n", - "coef_presence_of_full_time_worker_and_discretio... NaN 0 \n", - "coef_presence_of_full_time_worker_and_shopping_... NaN 0 \n", - "coef_presence_of_non_worker_and_discretionary_tour NaN 0 \n", - "coef_presence_of_non_worker_and_eating_out_tour NaN 0 \n", - "coef_presence_of_non_worker_and_tour_frequency_... NaN 0 \n", - "coef_presence_of_non_worker_and_tour_frequency_... NaN 0 \n", - "coef_presence_of_non_worker_and_tour_frequency_... NaN 0 \n", - "coef_presence_of_non_worker_and_tour_frequency_... NaN 0 \n", - "coef_presence_of_pre_driving_school_kid_and_esc... NaN 0 \n", - "coef_presence_of_pre_school_kid_and_escorting_tour NaN 0 \n", - "coef_presence_of_retiree_and_eating_out_tour NaN 0 \n", - "coef_presence_of_retiree_and_tour_frequency_is_1 NaN 0 \n", - "coef_presence_of_retiree_and_tour_frequency_is_5 NaN 0 \n", - "coef_total_number_of_tours_is_1 NaN 0 \n", - "coef_total_number_of_tours_is_2 NaN 0 \n", - "coef_total_number_of_tours_is_3 NaN 0 \n", - "coef_total_number_of_tours_is_4 NaN 0 \n", - "coef_total_number_of_tours_is_5 NaN 0 \n", - "coef_urban_and_discretionary_tour 0.0 1 \n", - "coef_walk_access_to_retail_and_tour_frequency_i... NaN 0 \n", + " maximum nullvalue \\\n", + "param_name \n", + "coef_0_auto_household_and_escorting_tour -2.0 0.0 \n", + "coef_1_escort_tour_constant 20.0 0.0 \n", + "coef_1_plus_eating_out_tours_constant 20.0 0.0 \n", + "coef_1_plus_maintenance_tours_constant 20.0 0.0 \n", + "coef_1_plus_other_discretionary_tours_constant 20.0 0.0 \n", + "coef_1_plus_shopping_tours_constant 20.0 0.0 \n", + "coef_1_plus_visting_tours_constant 20.0 0.0 \n", + "coef_2_plus_escort_tours_constant 20.0 0.0 \n", + "coef_car_surplus_vs_workers_and_tour_frequency_... 20.0 0.0 \n", + "coef_car_surplus_vs_workers_and_tour_frequency_... 20.0 0.0 \n", + "coef_female_and_discretionary_tour 20.0 0.0 \n", + "coef_female_and_maintenance_tour 20.0 0.0 \n", + "coef_female_and_shopping_tour 20.0 0.0 \n", + "coef_female_and_tour_frequency_is_1 20.0 0.0 \n", + "coef_female_and_tour_frequency_is_2 20.0 0.0 \n", + "coef_female_and_tour_frequency_is_5 20.0 0.0 \n", + "coef_high_income_group_and_discretionary_tour 20.0 0.0 \n", + "coef_high_income_group_and_eating_out_tour 20.0 0.0 \n", + "coef_high_income_group_and_maintenance_tour 20.0 0.0 \n", + "coef_high_income_group_and_shopping_tour 20.0 0.0 \n", + "coef_high_income_group_and_visiting_tour 20.0 0.0 \n", + "coef_logged_maximum_residual_window_tour_freque... 20.0 0.0 \n", + "coef_logged_maximum_residual_window_tour_freque... 20.0 0.0 \n", + "coef_logged_maximum_residual_window_tour_freque... 20.0 0.0 \n", + "coef_mediumhigh_income_group_and_eating_out_tour 20.0 0.0 \n", + "coef_mediumhigh_income_group_and_maintenance_tour 20.0 0.0 \n", + "coef_mediumhigh_income_group_and_visiting_tour 20.0 0.0 \n", + "coef_mediumlow_income_group_and_eating_out_tour 20.0 0.0 \n", + "coef_number_of_joint_shopping_tours 20.0 0.0 \n", + "coef_number_of_joint_tours_and_tour_frequency_is_2 20.0 0.0 \n", + "coef_number_of_joint_tours_and_tour_frequency_is_3 20.0 0.0 \n", + "coef_number_of_joint_tours_and_tour_frequency_i... -999.0 0.0 \n", + "coef_number_of_mandatory_tours_and_tour_frequen... 20.0 0.0 \n", + "coef_presence_of_full_time_worker_and_discretio... 20.0 0.0 \n", + "coef_presence_of_full_time_worker_and_shopping_... 20.0 0.0 \n", + "coef_presence_of_non_worker_and_discretionary_tour 20.0 0.0 \n", + "coef_presence_of_non_worker_and_eating_out_tour 20.0 0.0 \n", + "coef_presence_of_non_worker_and_tour_frequency_... 20.0 0.0 \n", + "coef_presence_of_non_worker_and_tour_frequency_... 20.0 0.0 \n", + "coef_presence_of_non_worker_and_tour_frequency_... 20.0 0.0 \n", + "coef_presence_of_non_worker_and_tour_frequency_... 20.0 0.0 \n", + "coef_presence_of_pre_driving_school_kid_and_esc... 20.0 0.0 \n", + "coef_presence_of_pre_school_kid_and_escorting_tour 20.0 0.0 \n", + "coef_presence_of_retiree_and_eating_out_tour 20.0 0.0 \n", + "coef_presence_of_retiree_and_tour_frequency_is_1 20.0 0.0 \n", + "coef_presence_of_retiree_and_tour_frequency_is_5 20.0 0.0 \n", + "coef_total_number_of_tours_is_1 20.0 0.0 \n", + "coef_total_number_of_tours_is_2 20.0 0.0 \n", + "coef_total_number_of_tours_is_3 20.0 0.0 \n", + "coef_total_number_of_tours_is_4 20.0 0.0 \n", + "coef_total_number_of_tours_is_5 20.0 0.0 \n", + "coef_urban_and_discretionary_tour 0.0 0.0 \n", + "coef_walk_access_to_retail_and_tour_frequency_i... 20.0 0.0 \n", "\n", - " best \n", - "coef_0_auto_household_and_escorting_tour -2.000000 \n", - "coef_1_escort_tour_constant -2.730596 \n", - "coef_1_plus_eating_out_tours_constant -2.583305 \n", - "coef_1_plus_maintenance_tours_constant -2.299219 \n", - "coef_1_plus_other_discretionary_tours_constant -2.243196 \n", - "coef_1_plus_shopping_tours_constant -1.916643 \n", - "coef_1_plus_visting_tours_constant -2.344018 \n", - "coef_2_plus_escort_tours_constant -4.935937 \n", - "coef_car_surplus_vs_workers_and_tour_frequency_... 3.094754 \n", - "coef_car_surplus_vs_workers_and_tour_frequency_... 3.475854 \n", - "coef_female_and_discretionary_tour 0.541528 \n", - "coef_female_and_maintenance_tour 0.708328 \n", - "coef_female_and_shopping_tour 0.609316 \n", - "coef_female_and_tour_frequency_is_1 -2.519155 \n", - "coef_female_and_tour_frequency_is_2 -2.727169 \n", - "coef_female_and_tour_frequency_is_5 -4.160203 \n", - "coef_high_income_group_and_discretionary_tour 0.925884 \n", - "coef_high_income_group_and_eating_out_tour 1.624493 \n", - "coef_high_income_group_and_maintenance_tour 1.006105 \n", - "coef_high_income_group_and_shopping_tour 1.105171 \n", - "coef_high_income_group_and_visiting_tour -0.656664 \n", - "coef_logged_maximum_residual_window_tour_freque... 2.966557 \n", - "coef_logged_maximum_residual_window_tour_freque... 5.581416 \n", - "coef_logged_maximum_residual_window_tour_freque... 31.909531 \n", - "coef_mediumhigh_income_group_and_eating_out_tour 0.964279 \n", - "coef_mediumhigh_income_group_and_maintenance_tour 0.465351 \n", - "coef_mediumhigh_income_group_and_visiting_tour -0.478169 \n", - "coef_mediumlow_income_group_and_eating_out_tour 0.877486 \n", - "coef_number_of_joint_shopping_tours -0.290998 \n", - "coef_number_of_joint_tours_and_tour_frequency_is_2 -6.327143 \n", - "coef_number_of_joint_tours_and_tour_frequency_is_3 -85.627389 \n", - "coef_number_of_joint_tours_and_tour_frequency_i... -999.000000 \n", - "coef_number_of_mandatory_tours_and_tour_frequen... -5.019600 \n", - "coef_presence_of_full_time_worker_and_discretio... -0.331984 \n", - "coef_presence_of_full_time_worker_and_shopping_... -0.207325 \n", - "coef_presence_of_non_worker_and_discretionary_tour -0.084104 \n", - "coef_presence_of_non_worker_and_eating_out_tour -0.701536 \n", - "coef_presence_of_non_worker_and_tour_frequency_... 1.190681 \n", - "coef_presence_of_non_worker_and_tour_frequency_... 1.374195 \n", - "coef_presence_of_non_worker_and_tour_frequency_... 2.156822 \n", - "coef_presence_of_non_worker_and_tour_frequency_... 3.694303 \n", - "coef_presence_of_pre_driving_school_kid_and_esc... 1.682880 \n", - "coef_presence_of_pre_school_kid_and_escorting_tour 0.641813 \n", - "coef_presence_of_retiree_and_eating_out_tour -0.944680 \n", - "coef_presence_of_retiree_and_tour_frequency_is_1 0.321424 \n", - "coef_presence_of_retiree_and_tour_frequency_is_5 -0.051242 \n", - "coef_total_number_of_tours_is_1 -14.532345 \n", - "coef_total_number_of_tours_is_2 -15.267480 \n", - "coef_total_number_of_tours_is_3 -15.029318 \n", - "coef_total_number_of_tours_is_4 -14.905140 \n", - "coef_total_number_of_tours_is_5 -27.549766 \n", - "coef_urban_and_discretionary_tour 0.000000 \n", - "coef_walk_access_to_retail_and_tour_frequency_i... 0.691082 " + " holdfast \n", + "param_name \n", + "coef_0_auto_household_and_escorting_tour 1 \n", + "coef_1_escort_tour_constant 0 \n", + "coef_1_plus_eating_out_tours_constant 0 \n", + "coef_1_plus_maintenance_tours_constant 0 \n", + "coef_1_plus_other_discretionary_tours_constant 0 \n", + "coef_1_plus_shopping_tours_constant 0 \n", + "coef_1_plus_visting_tours_constant 0 \n", + "coef_2_plus_escort_tours_constant 0 \n", + "coef_car_surplus_vs_workers_and_tour_frequency_... 0 \n", + "coef_car_surplus_vs_workers_and_tour_frequency_... 0 \n", + "coef_female_and_discretionary_tour 0 \n", + "coef_female_and_maintenance_tour 0 \n", + "coef_female_and_shopping_tour 0 \n", + "coef_female_and_tour_frequency_is_1 0 \n", + "coef_female_and_tour_frequency_is_2 0 \n", + "coef_female_and_tour_frequency_is_5 0 \n", + "coef_high_income_group_and_discretionary_tour 0 \n", + "coef_high_income_group_and_eating_out_tour 0 \n", + "coef_high_income_group_and_maintenance_tour 0 \n", + "coef_high_income_group_and_shopping_tour 0 \n", + "coef_high_income_group_and_visiting_tour 0 \n", + "coef_logged_maximum_residual_window_tour_freque... 0 \n", + "coef_logged_maximum_residual_window_tour_freque... 0 \n", + "coef_logged_maximum_residual_window_tour_freque... 0 \n", + "coef_mediumhigh_income_group_and_eating_out_tour 0 \n", + "coef_mediumhigh_income_group_and_maintenance_tour 0 \n", + "coef_mediumhigh_income_group_and_visiting_tour 0 \n", + "coef_mediumlow_income_group_and_eating_out_tour 0 \n", + "coef_number_of_joint_shopping_tours 0 \n", + "coef_number_of_joint_tours_and_tour_frequency_is_2 0 \n", + "coef_number_of_joint_tours_and_tour_frequency_is_3 0 \n", + "coef_number_of_joint_tours_and_tour_frequency_i... 1 \n", + "coef_number_of_mandatory_tours_and_tour_frequen... 0 \n", + "coef_presence_of_full_time_worker_and_discretio... 0 \n", + "coef_presence_of_full_time_worker_and_shopping_... 0 \n", + "coef_presence_of_non_worker_and_discretionary_tour 0 \n", + "coef_presence_of_non_worker_and_eating_out_tour 0 \n", + "coef_presence_of_non_worker_and_tour_frequency_... 0 \n", + "coef_presence_of_non_worker_and_tour_frequency_... 0 \n", + "coef_presence_of_non_worker_and_tour_frequency_... 0 \n", + "coef_presence_of_non_worker_and_tour_frequency_... 0 \n", + "coef_presence_of_pre_driving_school_kid_and_esc... 0 \n", + "coef_presence_of_pre_school_kid_and_escorting_tour 0 \n", + "coef_presence_of_retiree_and_eating_out_tour 0 \n", + "coef_presence_of_retiree_and_tour_frequency_is_1 0 \n", + "coef_presence_of_retiree_and_tour_frequency_is_5 0 \n", + "coef_total_number_of_tours_is_1 0 \n", + "coef_total_number_of_tours_is_2 0 \n", + "coef_total_number_of_tours_is_3 0 \n", + "coef_total_number_of_tours_is_4 0 \n", + "coef_total_number_of_tours_is_5 0 \n", + "coef_urban_and_discretionary_tour 1 \n", + "coef_walk_access_to_retail_and_tour_frequency_i... 0 " ] }, "metadata": {}, @@ -3280,26 +7795,546 @@ "name": "stderr", "output_type": "stream", "text": [ - "/var/folders/js/bk_dt9015j79_f6bxnc44dsr0000gp/T/ipykernel_48972/89088409.py:2: PossibleOverspecification: WARNING: Model is possibly over-specified (hessian is nearly singular).\n", - " m.estimate(method='SLSQP')\n", - "/Users/jeffnewman/LocalGit/asim-larch/activitysim-larch/conda-environments/AL-ENV/lib/python3.9/site-packages/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.7375419460797773e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/var/folders/js/bk_dt9015j79_f6bxnc44dsr0000gp/T/ipykernel_48972/89088409.py:2: PossibleOverspecification: WARNING: Model seems to have 11 parameter estimators with negative variance\n", - "- coef_1_escort_tour_constant\n", - "- coef_1_plus_eating_out_tours_constant\n", - "- coef_1_plus_maintenance_tours_constant\n", - "- coef_1_plus_other_discretionary_tours_constant\n", - "- and 7 more\n", - " m.estimate(method='SLSQP')\n", - "/var/folders/js/bk_dt9015j79_f6bxnc44dsr0000gp/T/ipykernel_48972/89088409.py:2: RuntimeWarning: invalid value encountered in sqrt\n", - " m.estimate(method='SLSQP')\n", - "req_data does not request avail_ca or avail_co but it is set and being provided\n" + "/Users/jpn/Git/est-mode/larch/src/larch/model/jaxmodel.py:1156: PossibleOverspecification: Model is possibly over-specified (hessian is nearly singular).\n", + " self.calculate_parameter_covariance()\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ValueStd Errt StatSignifNull ValueConstrained
Parameter      
coef_0_auto_household_and_escorting_tour-2.00 0.00 NA 0.00fixed value
coef_1_escort_tour_constant-0.420 NA NA 0.00
coef_1_plus_eating_out_tours_constant-0.0404 NA NA 0.00
coef_1_plus_maintenance_tours_constant 0.00896 NA NA 0.00
coef_1_plus_other_discretionary_tours_constant 0.374 NA NA 0.00
coef_1_plus_shopping_tours_constant 0.512 NA NA 0.00
coef_1_plus_visting_tours_constant 0.0795 NA NA 0.00
coef_2_plus_escort_tours_constant 0.307 NA NA 0.00
coef_car_surplus_vs_workers_and_tour_frequency_is_1 1.24 0.325 3.82*** 0.00
coef_car_surplus_vs_workers_and_tour_frequency_is_5_plus 2.46 0.352 7.00*** 0.00
coef_female_and_discretionary_tour 0.504 0.0998 5.05*** 0.00
coef_female_and_maintenance_tour 0.726 0.101 7.19*** 0.00
coef_female_and_shopping_tour 0.952 0.0924 10.30*** 0.00
coef_female_and_tour_frequency_is_1-0.638 0.212-3.00** 0.00
coef_female_and_tour_frequency_is_2-0.922 0.243-3.79*** 0.00
coef_female_and_tour_frequency_is_5-2.00 0.299-6.67*** 0.00
coef_high_income_group_and_discretionary_tour 0.913 0.110 8.32*** 0.00
coef_high_income_group_and_eating_out_tour 1.33 0.218 6.13*** 0.00
coef_high_income_group_and_maintenance_tour 1.27 0.137 9.27*** 0.00
coef_high_income_group_and_shopping_tour 1.00 0.102 9.82*** 0.00
coef_high_income_group_and_visiting_tour-0.187 0.184-1.02 0.00
coef_logged_maximum_residual_window_tour_frequency_is_1 2.04 0.397 5.13*** 0.00
coef_logged_maximum_residual_window_tour_frequency_is_2 2.41 0.555 4.35*** 0.00
coef_logged_maximum_residual_window_tour_frequency_is_5_plus 4.72 1.20 3.94*** 0.00
coef_mediumhigh_income_group_and_eating_out_tour 0.944 0.193 4.88*** 0.00
coef_mediumhigh_income_group_and_maintenance_tour 0.689 0.112 6.16*** 0.00
coef_mediumhigh_income_group_and_visiting_tour-0.371 0.155-2.40* 0.00
coef_mediumlow_income_group_and_eating_out_tour 0.938 0.162 5.79*** 0.00
coef_number_of_joint_shopping_tours-1.31 0.343-3.83*** 0.00
coef_number_of_joint_tours_and_tour_frequency_is_2-1.01 1.37-0.74 0.00
coef_number_of_joint_tours_and_tour_frequency_is_3-7.21 3.36-2.15* 0.00
coef_number_of_joint_tours_and_tour_frequency_is_5_plus-999. 0.00 NA 0.00fixed value
coef_number_of_mandatory_tours_and_tour_frequency_is_3-5.02 1.36e-09-BIG*** 0.00
coef_presence_of_full_time_worker_and_discretionary_tour-0.657 0.104-6.31*** 0.00
coef_presence_of_full_time_worker_and_shopping_tour-0.422 0.0891-4.73*** 0.00
coef_presence_of_non_worker_and_discretionary_tour-0.576 0.128-4.50*** 0.00
coef_presence_of_non_worker_and_eating_out_tour-0.905 0.113-8.00*** 0.00
coef_presence_of_non_worker_and_tour_frequency_is_1-0.0170 0.239-0.07 0.00
coef_presence_of_non_worker_and_tour_frequency_is_2 0.0680 0.262 0.26 0.00
coef_presence_of_non_worker_and_tour_frequency_is_3 0.258 0.330 0.78 0.00
coef_presence_of_non_worker_and_tour_frequency_is_5 3.20 0.707 4.53*** 0.00
coef_presence_of_pre_driving_school_kid_and_escorting_tour 1.42 0.127 11.20*** 0.00
coef_presence_of_pre_school_kid_and_escorting_tour 0.394 0.177 2.22* 0.00
coef_presence_of_retiree_and_eating_out_tour-0.794 0.140-5.65*** 0.00
coef_presence_of_retiree_and_tour_frequency_is_1-0.721 0.238-3.03** 0.00
coef_presence_of_retiree_and_tour_frequency_is_5-0.752 0.248-3.03** 0.00
coef_total_number_of_tours_is_1-8.70 NA NA 0.00
coef_total_number_of_tours_is_2-12.7 NA NA 0.00
coef_total_number_of_tours_is_3-14.7 NA NA 0.00
coef_total_number_of_tours_is_4-19.4 NA NA 0.00
coef_total_number_of_tours_is_5-20.0 NA NA 0.00
coef_urban_and_discretionary_tour 0.00 0.00 NA 0.00fixed value
coef_walk_access_to_retail_and_tour_frequency_is_5_plus-0.0102 0.0639-0.16 0.00
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model PTYPE_DRIVING\n" ] }, { "data": { "text/html": [ - "

Iteration 078 [Optimization terminated successfully]

" + "

Iteration 111 [Optimization terminated successfully]

" ], "text/plain": [ "" @@ -3311,7 +8346,7 @@ { "data": { "text/html": [ - "

Best LL = -13.427352167831913

" + "

Best LL = -1410.7703396627119

" ], "text/plain": [ "" @@ -3342,673 +8377,643 @@ " \n", " \n", " value\n", + " best\n", " initvalue\n", - " nullvalue\n", " minimum\n", " maximum\n", + " nullvalue\n", " holdfast\n", - " note\n", - " best\n", + " \n", + " \n", + " param_name\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " coef_0_auto_household_and_escorting_tour\n", - " -289.819438\n", + " -2.355904\n", + " -2.355904\n", " -2.0000\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -289.819438\n", " \n", " \n", " coef_1_escort_tour_constant\n", - " -6434.961317\n", + " -0.591707\n", + " -0.591707\n", " -0.4934\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -6434.961317\n", " \n", " \n", " coef_1_plus_eating_out_tours_constant\n", - " -3885.411913\n", + " -0.530705\n", + " -0.530705\n", " -0.0242\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -3885.411913\n", " \n", " \n", " coef_1_plus_maintenance_tours_constant\n", - " -1195.807014\n", + " -0.478676\n", + " -0.478676\n", " -0.4344\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -1195.807014\n", " \n", " \n", " coef_1_plus_other_discretionary_tours_constant\n", - " -2406.806121\n", + " 0.075144\n", + " 0.075144\n", " -0.2602\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -2406.806121\n", " \n", " \n", " coef_1_plus_shopping_tours_constant\n", - " -2389.305945\n", + " 0.278338\n", + " 0.278338\n", " 0.5320\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -2389.305945\n", " \n", " \n", " coef_1_plus_visting_tours_constant\n", - " -2389.305996\n", + " 0.074734\n", + " 0.074734\n", " 0.2367\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -2389.305996\n", " \n", " \n", " coef_2_plus_escort_tours_constant\n", - " -5667.685401\n", + " 0.538812\n", + " 0.538812\n", " 1.4155\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -5667.685401\n", " \n", " \n", " coef_auto_access_to_retail_and_tour_frequency_is_5_plus\n", - " -44.188373\n", + " 0.120695\n", + " 0.120695\n", " 0.1004\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -44.188373\n", " \n", " \n", " coef_car_shortage_vs_workers_and_tour_frequency_is_5_plus\n", - " -17232.832071\n", + " -0.895829\n", + " -0.895829\n", " -0.6369\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -17232.832071\n", " \n", " \n", " coef_car_surplus_vs_workers_and_tour_frequency_is_1\n", - " -4035.619542\n", + " 0.384556\n", + " 0.384556\n", " 0.2902\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -4035.619542\n", " \n", " \n", " coef_car_surplus_vs_workers_and_tour_frequency_is_5_plus\n", - " 15225.992542\n", + " 1.915045\n", + " 1.915045\n", " 2.0352\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 15225.992542\n", " \n", " \n", " coef_high_income_group_and_discretionary_tour\n", - " 4481.084393\n", + " 1.973678\n", + " 1.973678\n", " 2.3270\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 4481.084393\n", " \n", " \n", " coef_high_income_group_and_eating_out_tour\n", - " -3157.273834\n", + " 1.115882\n", + " 1.115882\n", " 0.4916\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -3157.273834\n", " \n", " \n", " coef_high_income_group_and_maintenance_tour\n", - " 4461.484862\n", + " 0.535657\n", + " 0.535657\n", " 0.3982\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 4461.484862\n", " \n", " \n", " coef_high_income_group_and_shopping_tour\n", - " 4461.390803\n", + " 0.297949\n", + " 0.297949\n", " 0.2443\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 4461.390803\n", " \n", " \n", " coef_high_income_group_and_visiting_tour\n", - " 4461.390852\n", + " 0.657170\n", + " 0.657170\n", " 0.2858\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 4461.390852\n", " \n", " \n", " coef_logged_maximum_residual_window_tour_frequency_is_1\n", - " 16.594329\n", + " 1.842413\n", + " 1.842413\n", " 1.3298\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 16.594329\n", " \n", " \n", " coef_logged_maximum_residual_window_tour_frequency_is_2\n", - " -19742.937757\n", + " 2.746659\n", + " 2.746659\n", " 1.3759\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -19742.937757\n", " \n", " \n", " coef_logged_maximum_residual_window_tour_frequency_is_5_plus\n", - " -11491.665678\n", + " 3.207837\n", + " 3.207837\n", " 3.2808\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -11491.665678\n", " \n", " \n", " coef_mediumhigh_income_group_and_discretionary_tour\n", - " 572.847509\n", + " 0.785646\n", + " 0.785646\n", " 1.4050\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 572.847509\n", " \n", " \n", " coef_mediumlow_income_group_and_discretionary_tour\n", - " -4429.942211\n", + " 0.715806\n", + " 0.715806\n", " 0.9169\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -4429.942211\n", " \n", " \n", " coef_number_of_joint_tours_and_tour_frequency_is_1\n", - " -4180.353968\n", + " -0.076456\n", + " -0.076456\n", " -0.2162\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -4180.353968\n", " \n", " \n", " coef_number_of_joint_tours_and_tour_frequency_is_2\n", - " -1606.502880\n", + " -2.349128\n", + " -2.349128\n", " -0.3587\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -1606.502880\n", " \n", " \n", " coef_number_of_joint_tours_and_tour_frequency_is_3\n", - " -109.819329\n", + " -4.951681\n", + " -4.951681\n", " -4.2701\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -109.819329\n", " \n", " \n", " coef_number_of_joint_tours_and_tour_frequency_is_5_plus\n", " -999.000000\n", + " -999.000000\n", " -999.0000\n", - " 0.0\n", " -999.0\n", " -999.0\n", + " 0.0\n", " 1\n", - " \n", - " -999.000000\n", " \n", " \n", " coef_number_of_mandatory_tours_and_tour_frequency_is_1\n", - " -16877.023970\n", + " -0.717100\n", + " -0.717100\n", " -0.2340\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -16877.023970\n", " \n", " \n", " coef_number_of_mandatory_tours_and_tour_frequency_is_2\n", - " 12620.764595\n", + " -2.894440\n", + " -2.894440\n", " -0.9231\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 12620.764595\n", " \n", " \n", " coef_number_of_mandatory_tours_and_tour_frequency_is_3\n", - " -4861.997912\n", + " -6.487708\n", + " -6.487708\n", " -6.5835\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -4861.997912\n", " \n", " \n", " coef_presence_of_driving_school_kid_and_discretionary_tour\n", - " -578.872073\n", + " -0.825813\n", + " -0.825813\n", " -0.9202\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -578.872073\n", " \n", " \n", " coef_presence_of_driving_school_kid_and_eating_out_tour\n", - " 6.381728\n", + " -0.605776\n", + " -0.605776\n", " -0.6377\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 6.381728\n", " \n", " \n", " coef_presence_of_non_worker_and_tour_frequency_is_2\n", - " 878.008827\n", + " -0.268732\n", + " -0.268732\n", " -0.6571\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 878.008827\n", " \n", " \n", " coef_presence_of_non_worker_and_tour_frequency_is_5\n", - " -1944.922644\n", + " -3.177667\n", + " -3.177667\n", " -1.4044\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -1944.922644\n", " \n", " \n", " coef_presence_of_pre_driving_school_kid_and_eating_out_tour\n", - " -164.906255\n", + " -1.449331\n", + " -1.449331\n", " -1.5698\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -164.906255\n", " \n", " \n", " coef_presence_of_pre_school_kid_and_eating_out_tour\n", - " 313.476309\n", + " -1.804988\n", + " -1.804988\n", " -0.2987\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 313.476309\n", " \n", " \n", " coef_presence_of_predriving_school_kid_in_household_and_tour_frequency_is_1\n", - " 4033.566871\n", + " -0.395397\n", + " -0.395397\n", " -0.3219\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 4033.566871\n", " \n", " \n", " coef_presence_of_predriving_school_kid_in_household_and_tour_frequency_is_5\n", - " 10149.331976\n", + " -1.985303\n", + " -1.985303\n", " -1.0874\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 10149.331976\n", " \n", " \n", " coef_presence_of_university_student_and_discretionary_tour\n", - " 3906.378403\n", + " -1.663216\n", + " -1.663216\n", " -1.2834\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 3906.378403\n", " \n", " \n", " coef_total_number_of_tours_is_1\n", - " 15200.662337\n", + " -7.917385\n", + " -7.917385\n", " -7.1506\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 15200.662337\n", " \n", " \n", " coef_total_number_of_tours_is_2\n", - " -1638.556186\n", + " -11.926451\n", + " -11.926451\n", " -11.1214\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -1638.556186\n", " \n", " \n", " coef_total_number_of_tours_is_3\n", - " -14010.608324\n", + " -13.210287\n", + " -13.210287\n", " -13.1750\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -14010.608324\n", " \n", " \n", " coef_urban_and_discretionary_tour\n", " 0.000000\n", + " 0.000000\n", " 0.0000\n", " 0.0\n", " 0.0\n", " 0.0\n", " 1\n", - " \n", - " 0.000000\n", " \n", " \n", " coef_urban_and_maintenance_tour\n", - " -1194.333214\n", + " 1.131129\n", + " 1.131129\n", " 1.0394\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -1194.333214\n", " \n", " \n", "\n", "" ], "text/plain": [ - " value initvalue \\\n", - "coef_0_auto_household_and_escorting_tour -289.819438 -2.0000 \n", - "coef_1_escort_tour_constant -6434.961317 -0.4934 \n", - "coef_1_plus_eating_out_tours_constant -3885.411913 -0.0242 \n", - "coef_1_plus_maintenance_tours_constant -1195.807014 -0.4344 \n", - "coef_1_plus_other_discretionary_tours_constant -2406.806121 -0.2602 \n", - "coef_1_plus_shopping_tours_constant -2389.305945 0.5320 \n", - "coef_1_plus_visting_tours_constant -2389.305996 0.2367 \n", - "coef_2_plus_escort_tours_constant -5667.685401 1.4155 \n", - "coef_auto_access_to_retail_and_tour_frequency_i... -44.188373 0.1004 \n", - "coef_car_shortage_vs_workers_and_tour_frequency... -17232.832071 -0.6369 \n", - "coef_car_surplus_vs_workers_and_tour_frequency_... -4035.619542 0.2902 \n", - "coef_car_surplus_vs_workers_and_tour_frequency_... 15225.992542 2.0352 \n", - "coef_high_income_group_and_discretionary_tour 4481.084393 2.3270 \n", - "coef_high_income_group_and_eating_out_tour -3157.273834 0.4916 \n", - "coef_high_income_group_and_maintenance_tour 4461.484862 0.3982 \n", - "coef_high_income_group_and_shopping_tour 4461.390803 0.2443 \n", - "coef_high_income_group_and_visiting_tour 4461.390852 0.2858 \n", - "coef_logged_maximum_residual_window_tour_freque... 16.594329 1.3298 \n", - "coef_logged_maximum_residual_window_tour_freque... -19742.937757 1.3759 \n", - "coef_logged_maximum_residual_window_tour_freque... -11491.665678 3.2808 \n", - "coef_mediumhigh_income_group_and_discretionary_... 572.847509 1.4050 \n", - "coef_mediumlow_income_group_and_discretionary_tour -4429.942211 0.9169 \n", - "coef_number_of_joint_tours_and_tour_frequency_is_1 -4180.353968 -0.2162 \n", - "coef_number_of_joint_tours_and_tour_frequency_is_2 -1606.502880 -0.3587 \n", - "coef_number_of_joint_tours_and_tour_frequency_is_3 -109.819329 -4.2701 \n", - "coef_number_of_joint_tours_and_tour_frequency_i... -999.000000 -999.0000 \n", - "coef_number_of_mandatory_tours_and_tour_frequen... -16877.023970 -0.2340 \n", - "coef_number_of_mandatory_tours_and_tour_frequen... 12620.764595 -0.9231 \n", - "coef_number_of_mandatory_tours_and_tour_frequen... -4861.997912 -6.5835 \n", - "coef_presence_of_driving_school_kid_and_discret... -578.872073 -0.9202 \n", - "coef_presence_of_driving_school_kid_and_eating_... 6.381728 -0.6377 \n", - "coef_presence_of_non_worker_and_tour_frequency_... 878.008827 -0.6571 \n", - "coef_presence_of_non_worker_and_tour_frequency_... -1944.922644 -1.4044 \n", - "coef_presence_of_pre_driving_school_kid_and_eat... -164.906255 -1.5698 \n", - "coef_presence_of_pre_school_kid_and_eating_out_... 313.476309 -0.2987 \n", - "coef_presence_of_predriving_school_kid_in_house... 4033.566871 -0.3219 \n", - "coef_presence_of_predriving_school_kid_in_house... 10149.331976 -1.0874 \n", - "coef_presence_of_university_student_and_discret... 3906.378403 -1.2834 \n", - "coef_total_number_of_tours_is_1 15200.662337 -7.1506 \n", - "coef_total_number_of_tours_is_2 -1638.556186 -11.1214 \n", - "coef_total_number_of_tours_is_3 -14010.608324 -13.1750 \n", - "coef_urban_and_discretionary_tour 0.000000 0.0000 \n", - "coef_urban_and_maintenance_tour -1194.333214 1.0394 \n", + " value best \\\n", + "param_name \n", + "coef_0_auto_household_and_escorting_tour -2.355904 -2.355904 \n", + "coef_1_escort_tour_constant -0.591707 -0.591707 \n", + "coef_1_plus_eating_out_tours_constant -0.530705 -0.530705 \n", + "coef_1_plus_maintenance_tours_constant -0.478676 -0.478676 \n", + "coef_1_plus_other_discretionary_tours_constant 0.075144 0.075144 \n", + "coef_1_plus_shopping_tours_constant 0.278338 0.278338 \n", + "coef_1_plus_visting_tours_constant 0.074734 0.074734 \n", + "coef_2_plus_escort_tours_constant 0.538812 0.538812 \n", + "coef_auto_access_to_retail_and_tour_frequency_i... 0.120695 0.120695 \n", + "coef_car_shortage_vs_workers_and_tour_frequency... -0.895829 -0.895829 \n", + "coef_car_surplus_vs_workers_and_tour_frequency_... 0.384556 0.384556 \n", + "coef_car_surplus_vs_workers_and_tour_frequency_... 1.915045 1.915045 \n", + "coef_high_income_group_and_discretionary_tour 1.973678 1.973678 \n", + "coef_high_income_group_and_eating_out_tour 1.115882 1.115882 \n", + "coef_high_income_group_and_maintenance_tour 0.535657 0.535657 \n", + "coef_high_income_group_and_shopping_tour 0.297949 0.297949 \n", + "coef_high_income_group_and_visiting_tour 0.657170 0.657170 \n", + "coef_logged_maximum_residual_window_tour_freque... 1.842413 1.842413 \n", + "coef_logged_maximum_residual_window_tour_freque... 2.746659 2.746659 \n", + "coef_logged_maximum_residual_window_tour_freque... 3.207837 3.207837 \n", + "coef_mediumhigh_income_group_and_discretionary_... 0.785646 0.785646 \n", + "coef_mediumlow_income_group_and_discretionary_tour 0.715806 0.715806 \n", + "coef_number_of_joint_tours_and_tour_frequency_is_1 -0.076456 -0.076456 \n", + "coef_number_of_joint_tours_and_tour_frequency_is_2 -2.349128 -2.349128 \n", + "coef_number_of_joint_tours_and_tour_frequency_is_3 -4.951681 -4.951681 \n", + "coef_number_of_joint_tours_and_tour_frequency_i... -999.000000 -999.000000 \n", + "coef_number_of_mandatory_tours_and_tour_frequen... -0.717100 -0.717100 \n", + "coef_number_of_mandatory_tours_and_tour_frequen... -2.894440 -2.894440 \n", + "coef_number_of_mandatory_tours_and_tour_frequen... -6.487708 -6.487708 \n", + "coef_presence_of_driving_school_kid_and_discret... -0.825813 -0.825813 \n", + "coef_presence_of_driving_school_kid_and_eating_... -0.605776 -0.605776 \n", + "coef_presence_of_non_worker_and_tour_frequency_... -0.268732 -0.268732 \n", + "coef_presence_of_non_worker_and_tour_frequency_... -3.177667 -3.177667 \n", + "coef_presence_of_pre_driving_school_kid_and_eat... -1.449331 -1.449331 \n", + "coef_presence_of_pre_school_kid_and_eating_out_... -1.804988 -1.804988 \n", + "coef_presence_of_predriving_school_kid_in_house... -0.395397 -0.395397 \n", + "coef_presence_of_predriving_school_kid_in_house... -1.985303 -1.985303 \n", + "coef_presence_of_university_student_and_discret... -1.663216 -1.663216 \n", + "coef_total_number_of_tours_is_1 -7.917385 -7.917385 \n", + "coef_total_number_of_tours_is_2 -11.926451 -11.926451 \n", + "coef_total_number_of_tours_is_3 -13.210287 -13.210287 \n", + "coef_urban_and_discretionary_tour 0.000000 0.000000 \n", + "coef_urban_and_maintenance_tour 1.131129 1.131129 \n", "\n", - " nullvalue minimum \\\n", - "coef_0_auto_household_and_escorting_tour 0.0 NaN \n", - "coef_1_escort_tour_constant 0.0 NaN \n", - "coef_1_plus_eating_out_tours_constant 0.0 NaN \n", - "coef_1_plus_maintenance_tours_constant 0.0 NaN \n", - "coef_1_plus_other_discretionary_tours_constant 0.0 NaN \n", - "coef_1_plus_shopping_tours_constant 0.0 NaN \n", - "coef_1_plus_visting_tours_constant 0.0 NaN \n", - "coef_2_plus_escort_tours_constant 0.0 NaN \n", - "coef_auto_access_to_retail_and_tour_frequency_i... 0.0 NaN \n", - "coef_car_shortage_vs_workers_and_tour_frequency... 0.0 NaN \n", - "coef_car_surplus_vs_workers_and_tour_frequency_... 0.0 NaN \n", - "coef_car_surplus_vs_workers_and_tour_frequency_... 0.0 NaN \n", - "coef_high_income_group_and_discretionary_tour 0.0 NaN \n", - "coef_high_income_group_and_eating_out_tour 0.0 NaN \n", - "coef_high_income_group_and_maintenance_tour 0.0 NaN \n", - "coef_high_income_group_and_shopping_tour 0.0 NaN \n", - "coef_high_income_group_and_visiting_tour 0.0 NaN \n", - "coef_logged_maximum_residual_window_tour_freque... 0.0 NaN \n", - "coef_logged_maximum_residual_window_tour_freque... 0.0 NaN \n", - "coef_logged_maximum_residual_window_tour_freque... 0.0 NaN \n", - "coef_mediumhigh_income_group_and_discretionary_... 0.0 NaN \n", - "coef_mediumlow_income_group_and_discretionary_tour 0.0 NaN \n", - "coef_number_of_joint_tours_and_tour_frequency_is_1 0.0 NaN \n", - "coef_number_of_joint_tours_and_tour_frequency_is_2 0.0 NaN \n", - "coef_number_of_joint_tours_and_tour_frequency_is_3 0.0 NaN \n", - "coef_number_of_joint_tours_and_tour_frequency_i... 0.0 -999.0 \n", - "coef_number_of_mandatory_tours_and_tour_frequen... 0.0 NaN \n", - "coef_number_of_mandatory_tours_and_tour_frequen... 0.0 NaN \n", - "coef_number_of_mandatory_tours_and_tour_frequen... 0.0 NaN \n", - "coef_presence_of_driving_school_kid_and_discret... 0.0 NaN \n", - "coef_presence_of_driving_school_kid_and_eating_... 0.0 NaN \n", - "coef_presence_of_non_worker_and_tour_frequency_... 0.0 NaN \n", - "coef_presence_of_non_worker_and_tour_frequency_... 0.0 NaN \n", - "coef_presence_of_pre_driving_school_kid_and_eat... 0.0 NaN \n", - "coef_presence_of_pre_school_kid_and_eating_out_... 0.0 NaN \n", - "coef_presence_of_predriving_school_kid_in_house... 0.0 NaN \n", - "coef_presence_of_predriving_school_kid_in_house... 0.0 NaN \n", - "coef_presence_of_university_student_and_discret... 0.0 NaN \n", - "coef_total_number_of_tours_is_1 0.0 NaN \n", - "coef_total_number_of_tours_is_2 0.0 NaN \n", - "coef_total_number_of_tours_is_3 0.0 NaN \n", - "coef_urban_and_discretionary_tour 0.0 0.0 \n", - "coef_urban_and_maintenance_tour 0.0 NaN \n", + " initvalue minimum \\\n", + "param_name \n", + "coef_0_auto_household_and_escorting_tour -2.0000 -20.0 \n", + "coef_1_escort_tour_constant -0.4934 -20.0 \n", + "coef_1_plus_eating_out_tours_constant -0.0242 -20.0 \n", + "coef_1_plus_maintenance_tours_constant -0.4344 -20.0 \n", + "coef_1_plus_other_discretionary_tours_constant -0.2602 -20.0 \n", + "coef_1_plus_shopping_tours_constant 0.5320 -20.0 \n", + "coef_1_plus_visting_tours_constant 0.2367 -20.0 \n", + "coef_2_plus_escort_tours_constant 1.4155 -20.0 \n", + "coef_auto_access_to_retail_and_tour_frequency_i... 0.1004 -20.0 \n", + "coef_car_shortage_vs_workers_and_tour_frequency... -0.6369 -20.0 \n", + "coef_car_surplus_vs_workers_and_tour_frequency_... 0.2902 -20.0 \n", + "coef_car_surplus_vs_workers_and_tour_frequency_... 2.0352 -20.0 \n", + "coef_high_income_group_and_discretionary_tour 2.3270 -20.0 \n", + "coef_high_income_group_and_eating_out_tour 0.4916 -20.0 \n", + "coef_high_income_group_and_maintenance_tour 0.3982 -20.0 \n", + "coef_high_income_group_and_shopping_tour 0.2443 -20.0 \n", + "coef_high_income_group_and_visiting_tour 0.2858 -20.0 \n", + "coef_logged_maximum_residual_window_tour_freque... 1.3298 -20.0 \n", + "coef_logged_maximum_residual_window_tour_freque... 1.3759 -20.0 \n", + "coef_logged_maximum_residual_window_tour_freque... 3.2808 -20.0 \n", + "coef_mediumhigh_income_group_and_discretionary_... 1.4050 -20.0 \n", + "coef_mediumlow_income_group_and_discretionary_tour 0.9169 -20.0 \n", + "coef_number_of_joint_tours_and_tour_frequency_is_1 -0.2162 -20.0 \n", + "coef_number_of_joint_tours_and_tour_frequency_is_2 -0.3587 -20.0 \n", + "coef_number_of_joint_tours_and_tour_frequency_is_3 -4.2701 -20.0 \n", + "coef_number_of_joint_tours_and_tour_frequency_i... -999.0000 -999.0 \n", + "coef_number_of_mandatory_tours_and_tour_frequen... -0.2340 -20.0 \n", + "coef_number_of_mandatory_tours_and_tour_frequen... -0.9231 -20.0 \n", + "coef_number_of_mandatory_tours_and_tour_frequen... -6.5835 -20.0 \n", + "coef_presence_of_driving_school_kid_and_discret... -0.9202 -20.0 \n", + "coef_presence_of_driving_school_kid_and_eating_... -0.6377 -20.0 \n", + "coef_presence_of_non_worker_and_tour_frequency_... -0.6571 -20.0 \n", + "coef_presence_of_non_worker_and_tour_frequency_... -1.4044 -20.0 \n", + "coef_presence_of_pre_driving_school_kid_and_eat... -1.5698 -20.0 \n", + "coef_presence_of_pre_school_kid_and_eating_out_... -0.2987 -20.0 \n", + "coef_presence_of_predriving_school_kid_in_house... -0.3219 -20.0 \n", + "coef_presence_of_predriving_school_kid_in_house... -1.0874 -20.0 \n", + "coef_presence_of_university_student_and_discret... -1.2834 -20.0 \n", + "coef_total_number_of_tours_is_1 -7.1506 -20.0 \n", + "coef_total_number_of_tours_is_2 -11.1214 -20.0 \n", + "coef_total_number_of_tours_is_3 -13.1750 -20.0 \n", + "coef_urban_and_discretionary_tour 0.0000 0.0 \n", + "coef_urban_and_maintenance_tour 1.0394 -20.0 \n", "\n", - " maximum holdfast note \\\n", - "coef_0_auto_household_and_escorting_tour NaN 0 \n", - "coef_1_escort_tour_constant NaN 0 \n", - "coef_1_plus_eating_out_tours_constant NaN 0 \n", - "coef_1_plus_maintenance_tours_constant NaN 0 \n", - "coef_1_plus_other_discretionary_tours_constant NaN 0 \n", - "coef_1_plus_shopping_tours_constant NaN 0 \n", - "coef_1_plus_visting_tours_constant NaN 0 \n", - "coef_2_plus_escort_tours_constant NaN 0 \n", - "coef_auto_access_to_retail_and_tour_frequency_i... NaN 0 \n", - "coef_car_shortage_vs_workers_and_tour_frequency... NaN 0 \n", - "coef_car_surplus_vs_workers_and_tour_frequency_... NaN 0 \n", - "coef_car_surplus_vs_workers_and_tour_frequency_... NaN 0 \n", - "coef_high_income_group_and_discretionary_tour NaN 0 \n", - "coef_high_income_group_and_eating_out_tour NaN 0 \n", - "coef_high_income_group_and_maintenance_tour NaN 0 \n", - "coef_high_income_group_and_shopping_tour NaN 0 \n", - "coef_high_income_group_and_visiting_tour NaN 0 \n", - "coef_logged_maximum_residual_window_tour_freque... NaN 0 \n", - "coef_logged_maximum_residual_window_tour_freque... NaN 0 \n", - "coef_logged_maximum_residual_window_tour_freque... NaN 0 \n", - "coef_mediumhigh_income_group_and_discretionary_... NaN 0 \n", - "coef_mediumlow_income_group_and_discretionary_tour NaN 0 \n", - "coef_number_of_joint_tours_and_tour_frequency_is_1 NaN 0 \n", - "coef_number_of_joint_tours_and_tour_frequency_is_2 NaN 0 \n", - "coef_number_of_joint_tours_and_tour_frequency_is_3 NaN 0 \n", - "coef_number_of_joint_tours_and_tour_frequency_i... -999.0 1 \n", - "coef_number_of_mandatory_tours_and_tour_frequen... NaN 0 \n", - "coef_number_of_mandatory_tours_and_tour_frequen... NaN 0 \n", - "coef_number_of_mandatory_tours_and_tour_frequen... NaN 0 \n", - "coef_presence_of_driving_school_kid_and_discret... NaN 0 \n", - "coef_presence_of_driving_school_kid_and_eating_... NaN 0 \n", - "coef_presence_of_non_worker_and_tour_frequency_... NaN 0 \n", - "coef_presence_of_non_worker_and_tour_frequency_... NaN 0 \n", - "coef_presence_of_pre_driving_school_kid_and_eat... NaN 0 \n", - "coef_presence_of_pre_school_kid_and_eating_out_... NaN 0 \n", - "coef_presence_of_predriving_school_kid_in_house... NaN 0 \n", - "coef_presence_of_predriving_school_kid_in_house... NaN 0 \n", - "coef_presence_of_university_student_and_discret... NaN 0 \n", - "coef_total_number_of_tours_is_1 NaN 0 \n", - "coef_total_number_of_tours_is_2 NaN 0 \n", - "coef_total_number_of_tours_is_3 NaN 0 \n", - "coef_urban_and_discretionary_tour 0.0 1 \n", - "coef_urban_and_maintenance_tour NaN 0 \n", + " maximum nullvalue \\\n", + "param_name \n", + "coef_0_auto_household_and_escorting_tour 20.0 0.0 \n", + "coef_1_escort_tour_constant 20.0 0.0 \n", + "coef_1_plus_eating_out_tours_constant 20.0 0.0 \n", + "coef_1_plus_maintenance_tours_constant 20.0 0.0 \n", + "coef_1_plus_other_discretionary_tours_constant 20.0 0.0 \n", + "coef_1_plus_shopping_tours_constant 20.0 0.0 \n", + "coef_1_plus_visting_tours_constant 20.0 0.0 \n", + "coef_2_plus_escort_tours_constant 20.0 0.0 \n", + "coef_auto_access_to_retail_and_tour_frequency_i... 20.0 0.0 \n", + "coef_car_shortage_vs_workers_and_tour_frequency... 20.0 0.0 \n", + "coef_car_surplus_vs_workers_and_tour_frequency_... 20.0 0.0 \n", + "coef_car_surplus_vs_workers_and_tour_frequency_... 20.0 0.0 \n", + "coef_high_income_group_and_discretionary_tour 20.0 0.0 \n", + "coef_high_income_group_and_eating_out_tour 20.0 0.0 \n", + "coef_high_income_group_and_maintenance_tour 20.0 0.0 \n", + "coef_high_income_group_and_shopping_tour 20.0 0.0 \n", + "coef_high_income_group_and_visiting_tour 20.0 0.0 \n", + "coef_logged_maximum_residual_window_tour_freque... 20.0 0.0 \n", + "coef_logged_maximum_residual_window_tour_freque... 20.0 0.0 \n", + "coef_logged_maximum_residual_window_tour_freque... 20.0 0.0 \n", + "coef_mediumhigh_income_group_and_discretionary_... 20.0 0.0 \n", + "coef_mediumlow_income_group_and_discretionary_tour 20.0 0.0 \n", + "coef_number_of_joint_tours_and_tour_frequency_is_1 20.0 0.0 \n", + "coef_number_of_joint_tours_and_tour_frequency_is_2 20.0 0.0 \n", + "coef_number_of_joint_tours_and_tour_frequency_is_3 20.0 0.0 \n", + "coef_number_of_joint_tours_and_tour_frequency_i... -999.0 0.0 \n", + "coef_number_of_mandatory_tours_and_tour_frequen... 20.0 0.0 \n", + "coef_number_of_mandatory_tours_and_tour_frequen... 20.0 0.0 \n", + "coef_number_of_mandatory_tours_and_tour_frequen... 20.0 0.0 \n", + "coef_presence_of_driving_school_kid_and_discret... 20.0 0.0 \n", + "coef_presence_of_driving_school_kid_and_eating_... 20.0 0.0 \n", + "coef_presence_of_non_worker_and_tour_frequency_... 20.0 0.0 \n", + "coef_presence_of_non_worker_and_tour_frequency_... 20.0 0.0 \n", + "coef_presence_of_pre_driving_school_kid_and_eat... 20.0 0.0 \n", + "coef_presence_of_pre_school_kid_and_eating_out_... 20.0 0.0 \n", + "coef_presence_of_predriving_school_kid_in_house... 20.0 0.0 \n", + "coef_presence_of_predriving_school_kid_in_house... 20.0 0.0 \n", + "coef_presence_of_university_student_and_discret... 20.0 0.0 \n", + "coef_total_number_of_tours_is_1 20.0 0.0 \n", + "coef_total_number_of_tours_is_2 20.0 0.0 \n", + "coef_total_number_of_tours_is_3 20.0 0.0 \n", + "coef_urban_and_discretionary_tour 0.0 0.0 \n", + "coef_urban_and_maintenance_tour 20.0 0.0 \n", "\n", - " best \n", - "coef_0_auto_household_and_escorting_tour -289.819438 \n", - "coef_1_escort_tour_constant -6434.961317 \n", - "coef_1_plus_eating_out_tours_constant -3885.411913 \n", - "coef_1_plus_maintenance_tours_constant -1195.807014 \n", - "coef_1_plus_other_discretionary_tours_constant -2406.806121 \n", - "coef_1_plus_shopping_tours_constant -2389.305945 \n", - "coef_1_plus_visting_tours_constant -2389.305996 \n", - "coef_2_plus_escort_tours_constant -5667.685401 \n", - "coef_auto_access_to_retail_and_tour_frequency_i... -44.188373 \n", - "coef_car_shortage_vs_workers_and_tour_frequency... -17232.832071 \n", - "coef_car_surplus_vs_workers_and_tour_frequency_... -4035.619542 \n", - "coef_car_surplus_vs_workers_and_tour_frequency_... 15225.992542 \n", - "coef_high_income_group_and_discretionary_tour 4481.084393 \n", - "coef_high_income_group_and_eating_out_tour -3157.273834 \n", - "coef_high_income_group_and_maintenance_tour 4461.484862 \n", - "coef_high_income_group_and_shopping_tour 4461.390803 \n", - "coef_high_income_group_and_visiting_tour 4461.390852 \n", - "coef_logged_maximum_residual_window_tour_freque... 16.594329 \n", - "coef_logged_maximum_residual_window_tour_freque... -19742.937757 \n", - "coef_logged_maximum_residual_window_tour_freque... -11491.665678 \n", - "coef_mediumhigh_income_group_and_discretionary_... 572.847509 \n", - "coef_mediumlow_income_group_and_discretionary_tour -4429.942211 \n", - "coef_number_of_joint_tours_and_tour_frequency_is_1 -4180.353968 \n", - "coef_number_of_joint_tours_and_tour_frequency_is_2 -1606.502880 \n", - "coef_number_of_joint_tours_and_tour_frequency_is_3 -109.819329 \n", - "coef_number_of_joint_tours_and_tour_frequency_i... -999.000000 \n", - "coef_number_of_mandatory_tours_and_tour_frequen... -16877.023970 \n", - "coef_number_of_mandatory_tours_and_tour_frequen... 12620.764595 \n", - "coef_number_of_mandatory_tours_and_tour_frequen... -4861.997912 \n", - "coef_presence_of_driving_school_kid_and_discret... -578.872073 \n", - "coef_presence_of_driving_school_kid_and_eating_... 6.381728 \n", - "coef_presence_of_non_worker_and_tour_frequency_... 878.008827 \n", - "coef_presence_of_non_worker_and_tour_frequency_... -1944.922644 \n", - "coef_presence_of_pre_driving_school_kid_and_eat... -164.906255 \n", - "coef_presence_of_pre_school_kid_and_eating_out_... 313.476309 \n", - "coef_presence_of_predriving_school_kid_in_house... 4033.566871 \n", - "coef_presence_of_predriving_school_kid_in_house... 10149.331976 \n", - "coef_presence_of_university_student_and_discret... 3906.378403 \n", - "coef_total_number_of_tours_is_1 15200.662337 \n", - "coef_total_number_of_tours_is_2 -1638.556186 \n", - "coef_total_number_of_tours_is_3 -14010.608324 \n", - "coef_urban_and_discretionary_tour 0.000000 \n", - "coef_urban_and_maintenance_tour -1194.333214 " + " holdfast \n", + "param_name \n", + "coef_0_auto_household_and_escorting_tour 0 \n", + "coef_1_escort_tour_constant 0 \n", + "coef_1_plus_eating_out_tours_constant 0 \n", + "coef_1_plus_maintenance_tours_constant 0 \n", + "coef_1_plus_other_discretionary_tours_constant 0 \n", + "coef_1_plus_shopping_tours_constant 0 \n", + "coef_1_plus_visting_tours_constant 0 \n", + "coef_2_plus_escort_tours_constant 0 \n", + "coef_auto_access_to_retail_and_tour_frequency_i... 0 \n", + "coef_car_shortage_vs_workers_and_tour_frequency... 0 \n", + "coef_car_surplus_vs_workers_and_tour_frequency_... 0 \n", + "coef_car_surplus_vs_workers_and_tour_frequency_... 0 \n", + "coef_high_income_group_and_discretionary_tour 0 \n", + "coef_high_income_group_and_eating_out_tour 0 \n", + "coef_high_income_group_and_maintenance_tour 0 \n", + "coef_high_income_group_and_shopping_tour 0 \n", + "coef_high_income_group_and_visiting_tour 0 \n", + "coef_logged_maximum_residual_window_tour_freque... 0 \n", + "coef_logged_maximum_residual_window_tour_freque... 0 \n", + "coef_logged_maximum_residual_window_tour_freque... 0 \n", + "coef_mediumhigh_income_group_and_discretionary_... 0 \n", + "coef_mediumlow_income_group_and_discretionary_tour 0 \n", + "coef_number_of_joint_tours_and_tour_frequency_is_1 0 \n", + "coef_number_of_joint_tours_and_tour_frequency_is_2 0 \n", + "coef_number_of_joint_tours_and_tour_frequency_is_3 0 \n", + "coef_number_of_joint_tours_and_tour_frequency_i... 1 \n", + "coef_number_of_mandatory_tours_and_tour_frequen... 0 \n", + "coef_number_of_mandatory_tours_and_tour_frequen... 0 \n", + "coef_number_of_mandatory_tours_and_tour_frequen... 0 \n", + "coef_presence_of_driving_school_kid_and_discret... 0 \n", + "coef_presence_of_driving_school_kid_and_eating_... 0 \n", + "coef_presence_of_non_worker_and_tour_frequency_... 0 \n", + "coef_presence_of_non_worker_and_tour_frequency_... 0 \n", + "coef_presence_of_pre_driving_school_kid_and_eat... 0 \n", + "coef_presence_of_pre_school_kid_and_eating_out_... 0 \n", + "coef_presence_of_predriving_school_kid_in_house... 0 \n", + "coef_presence_of_predriving_school_kid_in_house... 0 \n", + "coef_presence_of_university_student_and_discret... 0 \n", + "coef_total_number_of_tours_is_1 0 \n", + "coef_total_number_of_tours_is_2 0 \n", + "coef_total_number_of_tours_is_3 0 \n", + "coef_urban_and_discretionary_tour 1 \n", + "coef_urban_and_maintenance_tour 0 " ] }, "metadata": {}, @@ -4018,26 +9023,456 @@ "name": "stderr", "output_type": "stream", "text": [ - "/var/folders/js/bk_dt9015j79_f6bxnc44dsr0000gp/T/ipykernel_48972/89088409.py:2: PossibleOverspecification: WARNING: Model is possibly over-specified (hessian is nearly singular).\n", - " m.estimate(method='SLSQP')\n", - "/Users/jeffnewman/LocalGit/asim-larch/activitysim-larch/conda-environments/AL-ENV/lib/python3.9/site-packages/larch/linalg/__init__.py:18: UserWarning: minimum eig 0.0 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/var/folders/js/bk_dt9015j79_f6bxnc44dsr0000gp/T/ipykernel_48972/89088409.py:2: PossibleOverspecification: WARNING: Model seems to have 14 parameter estimators with negative variance\n", - "- coef_1_plus_maintenance_tours_constant\n", - "- coef_1_plus_other_discretionary_tours_constant\n", - "- coef_1_plus_shopping_tours_constant\n", - "- coef_1_plus_visting_tours_constant\n", - "- and 10 more\n", - " m.estimate(method='SLSQP')\n", - "/var/folders/js/bk_dt9015j79_f6bxnc44dsr0000gp/T/ipykernel_48972/89088409.py:2: RuntimeWarning: invalid value encountered in sqrt\n", - " m.estimate(method='SLSQP')\n", - "req_data does not request avail_ca or avail_co but it is set and being provided\n" + "/Users/jpn/Git/est-mode/larch/src/larch/model/jaxmodel.py:1156: PossibleOverspecification: Model is possibly over-specified (hessian is nearly singular).\n", + " self.calculate_parameter_covariance()\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ValueStd Errt StatSignifNull ValueConstrained
Parameter      
coef_0_auto_household_and_escorting_tour-2.36 3.76-0.63 0.00
coef_1_escort_tour_constant-0.592 NA NA 0.00
coef_1_plus_eating_out_tours_constant-0.531 NA NA 0.00
coef_1_plus_maintenance_tours_constant-0.479 NA NA 0.00
coef_1_plus_other_discretionary_tours_constant 0.0751 NA NA 0.00
coef_1_plus_shopping_tours_constant 0.278 NA NA 0.00
coef_1_plus_visting_tours_constant 0.0747 NA NA 0.00
coef_2_plus_escort_tours_constant 0.539 NA NA 0.00
coef_auto_access_to_retail_and_tour_frequency_is_5_plus 0.121 0.110 1.10 0.00
coef_car_shortage_vs_workers_and_tour_frequency_is_5_plus-0.896 0.225-3.98*** 0.00
coef_car_surplus_vs_workers_and_tour_frequency_is_1 0.385 0.160 2.40* 0.00
coef_car_surplus_vs_workers_and_tour_frequency_is_5_plus 1.92 0.421 4.55*** 0.00
coef_high_income_group_and_discretionary_tour 1.97 0.433 4.56*** 0.00
coef_high_income_group_and_eating_out_tour 1.12 0.412 2.71** 0.00
coef_high_income_group_and_maintenance_tour 0.536 0.283 1.89 0.00
coef_high_income_group_and_shopping_tour 0.298 0.256 1.17 0.00
coef_high_income_group_and_visiting_tour 0.657 0.266 2.47* 0.00
coef_logged_maximum_residual_window_tour_frequency_is_1 1.84 0.280 6.58*** 0.00
coef_logged_maximum_residual_window_tour_frequency_is_2 2.75 0.544 5.05*** 0.00
coef_logged_maximum_residual_window_tour_frequency_is_5_plus 3.21 3.57 0.90 0.00
coef_mediumhigh_income_group_and_discretionary_tour 0.786 0.459 1.71 0.00
coef_mediumlow_income_group_and_discretionary_tour 0.716 0.472 1.52 0.00
coef_number_of_joint_tours_and_tour_frequency_is_1-0.0765 0.227-0.34 0.00
coef_number_of_joint_tours_and_tour_frequency_is_2-2.35 1.41-1.66 0.00
coef_number_of_joint_tours_and_tour_frequency_is_3-4.95 10.5-0.47 0.00
coef_number_of_joint_tours_and_tour_frequency_is_5_plus-999. 0.00 NA 0.00fixed value
coef_number_of_mandatory_tours_and_tour_frequency_is_1-0.717 0.256-2.80** 0.00
coef_number_of_mandatory_tours_and_tour_frequency_is_2-2.89 1.19-2.44* 0.00
coef_number_of_mandatory_tours_and_tour_frequency_is_3-6.49 8.76-0.74 0.00
coef_presence_of_driving_school_kid_and_discretionary_tour-0.826 0.330-2.50* 0.00
coef_presence_of_driving_school_kid_and_eating_out_tour-0.606 0.545-1.11 0.00
coef_presence_of_non_worker_and_tour_frequency_is_2-0.269 0.382-0.70 0.00
coef_presence_of_non_worker_and_tour_frequency_is_5-3.18 2.64-1.21 0.00
coef_presence_of_pre_driving_school_kid_and_eating_out_tour-1.45 0.500-2.90** 0.00
coef_presence_of_pre_school_kid_and_eating_out_tour-1.80 1.09-1.65 0.00
coef_presence_of_predriving_school_kid_in_household_and_tour_frequency_is_1-0.395 0.149-2.65** 0.00
coef_presence_of_predriving_school_kid_in_household_and_tour_frequency_is_5-1.99 0.501-3.96*** 0.00
coef_presence_of_university_student_and_discretionary_tour-1.66 0.377-4.42*** 0.00
coef_total_number_of_tours_is_1-7.92 NA NA 0.00
coef_total_number_of_tours_is_2-11.9 NA NA 0.00
coef_total_number_of_tours_is_3-13.2 NA NA 0.00
coef_urban_and_discretionary_tour 0.00 0.00 NA 0.00fixed value
coef_urban_and_maintenance_tour 1.13 0.259 4.36*** 0.00
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model PTYPE_SCHOOL\n" ] }, { "data": { "text/html": [ - "

Iteration 037 [Optimization terminated successfully]

" + "

Iteration 055 [Optimization terminated successfully]

" ], "text/plain": [ "" @@ -4049,7 +9484,7 @@ { "data": { "text/html": [ - "

Best LL = -256.78783276592117

" + "

Best LL = -5118.870584262372

" ], "text/plain": [ "" @@ -4080,538 +9515,517 @@ " \n", " \n", " value\n", + " best\n", " initvalue\n", - " nullvalue\n", " minimum\n", " maximum\n", + " nullvalue\n", " holdfast\n", - " note\n", - " best\n", + " \n", + " \n", + " param_name\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " coef_0_auto_household_and_escorting_tour\n", " -2.000000\n", + " -2.000000\n", " -2.0000\n", - " 0.0\n", " -2.0\n", " -2.0\n", + " 0.0\n", " 1\n", - " \n", - " -2.000000\n", " \n", " \n", " coef_1_escort_tour_constant\n", - " -1.572081\n", + " -0.710427\n", + " -0.710427\n", " -0.7551\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -1.572081\n", " \n", " \n", " coef_1_plus_eating_out_tours_constant\n", - " -2.222210\n", + " 1.267594\n", + " 1.267594\n", " 1.1145\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -2.222210\n", " \n", " \n", " coef_1_plus_maintenance_tours_constant\n", - " -1.497135\n", + " -0.580534\n", + " -0.580534\n", " -0.5060\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -1.497135\n", " \n", " \n", " coef_1_plus_other_discretionary_tours_constant\n", - " 0.090818\n", + " 0.614538\n", + " 0.614538\n", " 0.4634\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.090818\n", " \n", " \n", " coef_1_plus_shopping_tours_constant\n", - " 1.474688\n", + " 1.037830\n", + " 1.037830\n", " 0.4783\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.474688\n", " \n", " \n", " coef_1_plus_visting_tours_constant\n", - " -1.792608\n", + " -0.445905\n", + " -0.445905\n", " -0.4006\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -1.792608\n", " \n", " \n", " coef_2_plus_escort_tours_constant\n", - " -2.059623\n", + " -0.076053\n", + " -0.076053\n", " -0.0086\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -2.059623\n", " \n", " \n", " coef_auto_access_to_retail_and_escorting\n", - " 0.555108\n", + " 0.063236\n", + " 0.063236\n", " 0.0629\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.555108\n", " \n", " \n", " coef_high_income_group_and_eating_out_tour\n", - " -1.361980\n", + " -0.810212\n", + " -0.810212\n", " -0.7010\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -1.361980\n", " \n", " \n", " coef_high_income_group_and_shopping_tour\n", - " -3.736670\n", + " -0.945693\n", + " -0.945693\n", " -0.6506\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -3.736670\n", " \n", " \n", " coef_high_income_group_and_tour_frequency_is_5_plus\n", - " 16.017262\n", + " 2.304674\n", + " 2.304674\n", " 2.0175\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 16.017262\n", " \n", " \n", " coef_logged_maximum_residual_window_tour_frequency_is_5_plus\n", - " 1.526025\n", + " 1.353636\n", + " 1.353636\n", " 1.5603\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.526025\n", " \n", " \n", " coef_mediumhigh_income_group_and_tour_frequency_is_5_plus\n", - " 15.096814\n", + " 1.811428\n", + " 1.811428\n", " 1.5197\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 15.096814\n", " \n", " \n", " coef_mediumlow_income_group_and_tour_frequency_is_5_plus\n", - " 14.227759\n", + " 1.143302\n", + " 1.143302\n", " 1.0873\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 14.227759\n", " \n", " \n", " coef_number_of_joint_maintenance_tours\n", " -1.347600\n", + " -1.347600\n", " -1.3476\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -1.347600\n", " \n", " \n", " coef_number_of_joint_tours_and_tour_frequency_is_2\n", - " -1.197115\n", + " -0.540183\n", + " -0.540183\n", " -0.6149\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -1.197115\n", " \n", " \n", " coef_number_of_joint_tours_and_tour_frequency_is_5_plus\n", " -999.000000\n", + " -999.000000\n", " -999.0000\n", - " 0.0\n", " -999.0\n", " -999.0\n", + " 0.0\n", " 1\n", - " \n", - " -999.000000\n", " \n", " \n", " coef_number_of_mandatory_tours_and_tour_frequency_is_1\n", - " -9.889679\n", + " -1.256737\n", + " -1.256737\n", " -1.0331\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -9.889679\n", " \n", " \n", " coef_number_of_mandatory_tours_and_tour_frequency_is_3\n", - " -10.675107\n", + " -3.162364\n", + " -3.162364\n", " -2.7445\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -10.675107\n", " \n", " \n", " coef_presence_of_full_time_worker_and_discretionary_tour\n", - " 0.167217\n", + " 0.646457\n", + " 0.646457\n", " 0.7526\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.167217\n", " \n", " \n", " coef_presence_of_non_worker_and_eating_out_tour\n", - " -1.295662\n", + " -1.533575\n", + " -1.533575\n", " -1.3074\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -1.295662\n", " \n", " \n", " coef_presence_of_non_worker_and_shopping_tour\n", - " -1.353670\n", + " -0.760303\n", + " -0.760303\n", " -0.6450\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -1.353670\n", " \n", " \n", " coef_presence_of_non_worker_and_tour_frequency_is_5\n", - " -0.434686\n", + " 0.353557\n", + " 0.353557\n", " 0.2177\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.434686\n", " \n", " \n", " coef_presence_of_part_time_worker_and_discretionary_tour\n", - " -0.342155\n", + " 0.436183\n", + " 0.436183\n", " 0.3721\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.342155\n", " \n", " \n", " coef_presence_of_pre_driving_school_kid_and_shopping_tour\n", - " 1.415379\n", + " 0.745895\n", + " 0.745895\n", " 0.9365\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.415379\n", " \n", " \n", " coef_presence_of_predriving_school_kid_in_household_and_tour_frequency_is_5\n", - " 0.290181\n", + " -0.086497\n", + " -0.086497\n", " -0.2264\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.290181\n", " \n", " \n", " coef_presence_of_preschool_kid_in_household_and_tour_frequency_is_5\n", - " 0.328944\n", + " -0.357691\n", + " -0.357691\n", " -0.4439\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.328944\n", " \n", " \n", " coef_total_number_of_tours_is_1\n", - " -11.291182\n", + " -7.203758\n", + " -7.203758\n", " -7.4863\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -11.291182\n", " \n", " \n", " coef_total_number_of_tours_is_2\n", - " -13.228339\n", + " -10.489540\n", + " -10.489540\n", " -10.7180\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -13.228339\n", " \n", " \n", " coef_total_number_of_tours_is_3\n", - " -14.184905\n", + " -13.816990\n", + " -13.816990\n", " -13.7884\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -14.184905\n", " \n", " \n", " coef_urban_and_discretionary_tour\n", " 0.000000\n", + " 0.000000\n", " 0.0000\n", " 0.0\n", " 0.0\n", " 0.0\n", " 1\n", - " \n", - " 0.000000\n", " \n", " \n", " coef_urban_and_escorting_tour\n", - " -4.483827\n", + " 0.728596\n", + " 0.728596\n", " 0.4352\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -4.483827\n", " \n", " \n", " coef_walk_access_to_retail_and_eating_out\n", - " 0.400103\n", + " 0.099568\n", + " 0.099568\n", " 0.0738\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.400103\n", " \n", " \n", "\n", "" ], "text/plain": [ - " value initvalue \\\n", - "coef_0_auto_household_and_escorting_tour -2.000000 -2.0000 \n", - "coef_1_escort_tour_constant -1.572081 -0.7551 \n", - "coef_1_plus_eating_out_tours_constant -2.222210 1.1145 \n", - "coef_1_plus_maintenance_tours_constant -1.497135 -0.5060 \n", - "coef_1_plus_other_discretionary_tours_constant 0.090818 0.4634 \n", - "coef_1_plus_shopping_tours_constant 1.474688 0.4783 \n", - "coef_1_plus_visting_tours_constant -1.792608 -0.4006 \n", - "coef_2_plus_escort_tours_constant -2.059623 -0.0086 \n", - "coef_auto_access_to_retail_and_escorting 0.555108 0.0629 \n", - "coef_high_income_group_and_eating_out_tour -1.361980 -0.7010 \n", - "coef_high_income_group_and_shopping_tour -3.736670 -0.6506 \n", - "coef_high_income_group_and_tour_frequency_is_5_... 16.017262 2.0175 \n", - "coef_logged_maximum_residual_window_tour_freque... 1.526025 1.5603 \n", - "coef_mediumhigh_income_group_and_tour_frequency... 15.096814 1.5197 \n", - "coef_mediumlow_income_group_and_tour_frequency_... 14.227759 1.0873 \n", - "coef_number_of_joint_maintenance_tours -1.347600 -1.3476 \n", - "coef_number_of_joint_tours_and_tour_frequency_is_2 -1.197115 -0.6149 \n", - "coef_number_of_joint_tours_and_tour_frequency_i... -999.000000 -999.0000 \n", - "coef_number_of_mandatory_tours_and_tour_frequen... -9.889679 -1.0331 \n", - "coef_number_of_mandatory_tours_and_tour_frequen... -10.675107 -2.7445 \n", - "coef_presence_of_full_time_worker_and_discretio... 0.167217 0.7526 \n", - "coef_presence_of_non_worker_and_eating_out_tour -1.295662 -1.3074 \n", - "coef_presence_of_non_worker_and_shopping_tour -1.353670 -0.6450 \n", - "coef_presence_of_non_worker_and_tour_frequency_... -0.434686 0.2177 \n", - "coef_presence_of_part_time_worker_and_discretio... -0.342155 0.3721 \n", - "coef_presence_of_pre_driving_school_kid_and_sho... 1.415379 0.9365 \n", - "coef_presence_of_predriving_school_kid_in_house... 0.290181 -0.2264 \n", - "coef_presence_of_preschool_kid_in_household_and... 0.328944 -0.4439 \n", - "coef_total_number_of_tours_is_1 -11.291182 -7.4863 \n", - "coef_total_number_of_tours_is_2 -13.228339 -10.7180 \n", - "coef_total_number_of_tours_is_3 -14.184905 -13.7884 \n", - "coef_urban_and_discretionary_tour 0.000000 0.0000 \n", - "coef_urban_and_escorting_tour -4.483827 0.4352 \n", - "coef_walk_access_to_retail_and_eating_out 0.400103 0.0738 \n", + " value best \\\n", + "param_name \n", + "coef_0_auto_household_and_escorting_tour -2.000000 -2.000000 \n", + "coef_1_escort_tour_constant -0.710427 -0.710427 \n", + "coef_1_plus_eating_out_tours_constant 1.267594 1.267594 \n", + "coef_1_plus_maintenance_tours_constant -0.580534 -0.580534 \n", + "coef_1_plus_other_discretionary_tours_constant 0.614538 0.614538 \n", + "coef_1_plus_shopping_tours_constant 1.037830 1.037830 \n", + "coef_1_plus_visting_tours_constant -0.445905 -0.445905 \n", + "coef_2_plus_escort_tours_constant -0.076053 -0.076053 \n", + "coef_auto_access_to_retail_and_escorting 0.063236 0.063236 \n", + "coef_high_income_group_and_eating_out_tour -0.810212 -0.810212 \n", + "coef_high_income_group_and_shopping_tour -0.945693 -0.945693 \n", + "coef_high_income_group_and_tour_frequency_is_5_... 2.304674 2.304674 \n", + "coef_logged_maximum_residual_window_tour_freque... 1.353636 1.353636 \n", + "coef_mediumhigh_income_group_and_tour_frequency... 1.811428 1.811428 \n", + "coef_mediumlow_income_group_and_tour_frequency_... 1.143302 1.143302 \n", + "coef_number_of_joint_maintenance_tours -1.347600 -1.347600 \n", + "coef_number_of_joint_tours_and_tour_frequency_is_2 -0.540183 -0.540183 \n", + "coef_number_of_joint_tours_and_tour_frequency_i... -999.000000 -999.000000 \n", + "coef_number_of_mandatory_tours_and_tour_frequen... -1.256737 -1.256737 \n", + "coef_number_of_mandatory_tours_and_tour_frequen... -3.162364 -3.162364 \n", + "coef_presence_of_full_time_worker_and_discretio... 0.646457 0.646457 \n", + "coef_presence_of_non_worker_and_eating_out_tour -1.533575 -1.533575 \n", + "coef_presence_of_non_worker_and_shopping_tour -0.760303 -0.760303 \n", + "coef_presence_of_non_worker_and_tour_frequency_... 0.353557 0.353557 \n", + "coef_presence_of_part_time_worker_and_discretio... 0.436183 0.436183 \n", + "coef_presence_of_pre_driving_school_kid_and_sho... 0.745895 0.745895 \n", + "coef_presence_of_predriving_school_kid_in_house... -0.086497 -0.086497 \n", + "coef_presence_of_preschool_kid_in_household_and... -0.357691 -0.357691 \n", + "coef_total_number_of_tours_is_1 -7.203758 -7.203758 \n", + "coef_total_number_of_tours_is_2 -10.489540 -10.489540 \n", + "coef_total_number_of_tours_is_3 -13.816990 -13.816990 \n", + "coef_urban_and_discretionary_tour 0.000000 0.000000 \n", + "coef_urban_and_escorting_tour 0.728596 0.728596 \n", + "coef_walk_access_to_retail_and_eating_out 0.099568 0.099568 \n", "\n", - " nullvalue minimum \\\n", - "coef_0_auto_household_and_escorting_tour 0.0 -2.0 \n", - "coef_1_escort_tour_constant 0.0 NaN \n", - "coef_1_plus_eating_out_tours_constant 0.0 NaN \n", - "coef_1_plus_maintenance_tours_constant 0.0 NaN \n", - "coef_1_plus_other_discretionary_tours_constant 0.0 NaN \n", - "coef_1_plus_shopping_tours_constant 0.0 NaN \n", - "coef_1_plus_visting_tours_constant 0.0 NaN \n", - "coef_2_plus_escort_tours_constant 0.0 NaN \n", - "coef_auto_access_to_retail_and_escorting 0.0 NaN \n", - "coef_high_income_group_and_eating_out_tour 0.0 NaN \n", - "coef_high_income_group_and_shopping_tour 0.0 NaN \n", - "coef_high_income_group_and_tour_frequency_is_5_... 0.0 NaN \n", - "coef_logged_maximum_residual_window_tour_freque... 0.0 NaN \n", - "coef_mediumhigh_income_group_and_tour_frequency... 0.0 NaN \n", - "coef_mediumlow_income_group_and_tour_frequency_... 0.0 NaN \n", - "coef_number_of_joint_maintenance_tours 0.0 NaN \n", - "coef_number_of_joint_tours_and_tour_frequency_is_2 0.0 NaN \n", - "coef_number_of_joint_tours_and_tour_frequency_i... 0.0 -999.0 \n", - "coef_number_of_mandatory_tours_and_tour_frequen... 0.0 NaN \n", - "coef_number_of_mandatory_tours_and_tour_frequen... 0.0 NaN \n", - "coef_presence_of_full_time_worker_and_discretio... 0.0 NaN \n", - "coef_presence_of_non_worker_and_eating_out_tour 0.0 NaN \n", - "coef_presence_of_non_worker_and_shopping_tour 0.0 NaN \n", - "coef_presence_of_non_worker_and_tour_frequency_... 0.0 NaN \n", - "coef_presence_of_part_time_worker_and_discretio... 0.0 NaN \n", - "coef_presence_of_pre_driving_school_kid_and_sho... 0.0 NaN \n", - "coef_presence_of_predriving_school_kid_in_house... 0.0 NaN \n", - "coef_presence_of_preschool_kid_in_household_and... 0.0 NaN \n", - "coef_total_number_of_tours_is_1 0.0 NaN \n", - "coef_total_number_of_tours_is_2 0.0 NaN \n", - "coef_total_number_of_tours_is_3 0.0 NaN \n", - "coef_urban_and_discretionary_tour 0.0 0.0 \n", - "coef_urban_and_escorting_tour 0.0 NaN \n", - "coef_walk_access_to_retail_and_eating_out 0.0 NaN \n", + " initvalue minimum \\\n", + "param_name \n", + "coef_0_auto_household_and_escorting_tour -2.0000 -2.0 \n", + "coef_1_escort_tour_constant -0.7551 -20.0 \n", + "coef_1_plus_eating_out_tours_constant 1.1145 -20.0 \n", + "coef_1_plus_maintenance_tours_constant -0.5060 -20.0 \n", + "coef_1_plus_other_discretionary_tours_constant 0.4634 -20.0 \n", + "coef_1_plus_shopping_tours_constant 0.4783 -20.0 \n", + "coef_1_plus_visting_tours_constant -0.4006 -20.0 \n", + "coef_2_plus_escort_tours_constant -0.0086 -20.0 \n", + "coef_auto_access_to_retail_and_escorting 0.0629 -20.0 \n", + "coef_high_income_group_and_eating_out_tour -0.7010 -20.0 \n", + "coef_high_income_group_and_shopping_tour -0.6506 -20.0 \n", + "coef_high_income_group_and_tour_frequency_is_5_... 2.0175 -20.0 \n", + "coef_logged_maximum_residual_window_tour_freque... 1.5603 -20.0 \n", + "coef_mediumhigh_income_group_and_tour_frequency... 1.5197 -20.0 \n", + "coef_mediumlow_income_group_and_tour_frequency_... 1.0873 -20.0 \n", + "coef_number_of_joint_maintenance_tours -1.3476 -20.0 \n", + "coef_number_of_joint_tours_and_tour_frequency_is_2 -0.6149 -20.0 \n", + "coef_number_of_joint_tours_and_tour_frequency_i... -999.0000 -999.0 \n", + "coef_number_of_mandatory_tours_and_tour_frequen... -1.0331 -20.0 \n", + "coef_number_of_mandatory_tours_and_tour_frequen... -2.7445 -20.0 \n", + "coef_presence_of_full_time_worker_and_discretio... 0.7526 -20.0 \n", + "coef_presence_of_non_worker_and_eating_out_tour -1.3074 -20.0 \n", + "coef_presence_of_non_worker_and_shopping_tour -0.6450 -20.0 \n", + "coef_presence_of_non_worker_and_tour_frequency_... 0.2177 -20.0 \n", + "coef_presence_of_part_time_worker_and_discretio... 0.3721 -20.0 \n", + "coef_presence_of_pre_driving_school_kid_and_sho... 0.9365 -20.0 \n", + "coef_presence_of_predriving_school_kid_in_house... -0.2264 -20.0 \n", + "coef_presence_of_preschool_kid_in_household_and... -0.4439 -20.0 \n", + "coef_total_number_of_tours_is_1 -7.4863 -20.0 \n", + "coef_total_number_of_tours_is_2 -10.7180 -20.0 \n", + "coef_total_number_of_tours_is_3 -13.7884 -20.0 \n", + "coef_urban_and_discretionary_tour 0.0000 0.0 \n", + "coef_urban_and_escorting_tour 0.4352 -20.0 \n", + "coef_walk_access_to_retail_and_eating_out 0.0738 -20.0 \n", "\n", - " maximum holdfast note \\\n", - "coef_0_auto_household_and_escorting_tour -2.0 1 \n", - "coef_1_escort_tour_constant NaN 0 \n", - "coef_1_plus_eating_out_tours_constant NaN 0 \n", - "coef_1_plus_maintenance_tours_constant NaN 0 \n", - "coef_1_plus_other_discretionary_tours_constant NaN 0 \n", - "coef_1_plus_shopping_tours_constant NaN 0 \n", - "coef_1_plus_visting_tours_constant NaN 0 \n", - "coef_2_plus_escort_tours_constant NaN 0 \n", - "coef_auto_access_to_retail_and_escorting NaN 0 \n", - "coef_high_income_group_and_eating_out_tour NaN 0 \n", - "coef_high_income_group_and_shopping_tour NaN 0 \n", - "coef_high_income_group_and_tour_frequency_is_5_... NaN 0 \n", - "coef_logged_maximum_residual_window_tour_freque... NaN 0 \n", - "coef_mediumhigh_income_group_and_tour_frequency... NaN 0 \n", - "coef_mediumlow_income_group_and_tour_frequency_... NaN 0 \n", - "coef_number_of_joint_maintenance_tours NaN 0 \n", - "coef_number_of_joint_tours_and_tour_frequency_is_2 NaN 0 \n", - "coef_number_of_joint_tours_and_tour_frequency_i... -999.0 1 \n", - "coef_number_of_mandatory_tours_and_tour_frequen... NaN 0 \n", - "coef_number_of_mandatory_tours_and_tour_frequen... NaN 0 \n", - "coef_presence_of_full_time_worker_and_discretio... NaN 0 \n", - "coef_presence_of_non_worker_and_eating_out_tour NaN 0 \n", - "coef_presence_of_non_worker_and_shopping_tour NaN 0 \n", - "coef_presence_of_non_worker_and_tour_frequency_... NaN 0 \n", - "coef_presence_of_part_time_worker_and_discretio... NaN 0 \n", - "coef_presence_of_pre_driving_school_kid_and_sho... NaN 0 \n", - "coef_presence_of_predriving_school_kid_in_house... NaN 0 \n", - "coef_presence_of_preschool_kid_in_household_and... NaN 0 \n", - "coef_total_number_of_tours_is_1 NaN 0 \n", - "coef_total_number_of_tours_is_2 NaN 0 \n", - "coef_total_number_of_tours_is_3 NaN 0 \n", - "coef_urban_and_discretionary_tour 0.0 1 \n", - "coef_urban_and_escorting_tour NaN 0 \n", - "coef_walk_access_to_retail_and_eating_out NaN 0 \n", + " maximum nullvalue \\\n", + "param_name \n", + "coef_0_auto_household_and_escorting_tour -2.0 0.0 \n", + "coef_1_escort_tour_constant 20.0 0.0 \n", + "coef_1_plus_eating_out_tours_constant 20.0 0.0 \n", + "coef_1_plus_maintenance_tours_constant 20.0 0.0 \n", + "coef_1_plus_other_discretionary_tours_constant 20.0 0.0 \n", + "coef_1_plus_shopping_tours_constant 20.0 0.0 \n", + "coef_1_plus_visting_tours_constant 20.0 0.0 \n", + "coef_2_plus_escort_tours_constant 20.0 0.0 \n", + "coef_auto_access_to_retail_and_escorting 20.0 0.0 \n", + "coef_high_income_group_and_eating_out_tour 20.0 0.0 \n", + "coef_high_income_group_and_shopping_tour 20.0 0.0 \n", + "coef_high_income_group_and_tour_frequency_is_5_... 20.0 0.0 \n", + "coef_logged_maximum_residual_window_tour_freque... 20.0 0.0 \n", + "coef_mediumhigh_income_group_and_tour_frequency... 20.0 0.0 \n", + "coef_mediumlow_income_group_and_tour_frequency_... 20.0 0.0 \n", + "coef_number_of_joint_maintenance_tours 20.0 0.0 \n", + "coef_number_of_joint_tours_and_tour_frequency_is_2 20.0 0.0 \n", + "coef_number_of_joint_tours_and_tour_frequency_i... -999.0 0.0 \n", + "coef_number_of_mandatory_tours_and_tour_frequen... 20.0 0.0 \n", + "coef_number_of_mandatory_tours_and_tour_frequen... 20.0 0.0 \n", + "coef_presence_of_full_time_worker_and_discretio... 20.0 0.0 \n", + "coef_presence_of_non_worker_and_eating_out_tour 20.0 0.0 \n", + "coef_presence_of_non_worker_and_shopping_tour 20.0 0.0 \n", + "coef_presence_of_non_worker_and_tour_frequency_... 20.0 0.0 \n", + "coef_presence_of_part_time_worker_and_discretio... 20.0 0.0 \n", + "coef_presence_of_pre_driving_school_kid_and_sho... 20.0 0.0 \n", + "coef_presence_of_predriving_school_kid_in_house... 20.0 0.0 \n", + "coef_presence_of_preschool_kid_in_household_and... 20.0 0.0 \n", + "coef_total_number_of_tours_is_1 20.0 0.0 \n", + "coef_total_number_of_tours_is_2 20.0 0.0 \n", + "coef_total_number_of_tours_is_3 20.0 0.0 \n", + "coef_urban_and_discretionary_tour 0.0 0.0 \n", + "coef_urban_and_escorting_tour 20.0 0.0 \n", + "coef_walk_access_to_retail_and_eating_out 20.0 0.0 \n", "\n", - " best \n", - "coef_0_auto_household_and_escorting_tour -2.000000 \n", - "coef_1_escort_tour_constant -1.572081 \n", - "coef_1_plus_eating_out_tours_constant -2.222210 \n", - "coef_1_plus_maintenance_tours_constant -1.497135 \n", - "coef_1_plus_other_discretionary_tours_constant 0.090818 \n", - "coef_1_plus_shopping_tours_constant 1.474688 \n", - "coef_1_plus_visting_tours_constant -1.792608 \n", - "coef_2_plus_escort_tours_constant -2.059623 \n", - "coef_auto_access_to_retail_and_escorting 0.555108 \n", - "coef_high_income_group_and_eating_out_tour -1.361980 \n", - "coef_high_income_group_and_shopping_tour -3.736670 \n", - "coef_high_income_group_and_tour_frequency_is_5_... 16.017262 \n", - "coef_logged_maximum_residual_window_tour_freque... 1.526025 \n", - "coef_mediumhigh_income_group_and_tour_frequency... 15.096814 \n", - "coef_mediumlow_income_group_and_tour_frequency_... 14.227759 \n", - "coef_number_of_joint_maintenance_tours -1.347600 \n", - "coef_number_of_joint_tours_and_tour_frequency_is_2 -1.197115 \n", - "coef_number_of_joint_tours_and_tour_frequency_i... -999.000000 \n", - "coef_number_of_mandatory_tours_and_tour_frequen... -9.889679 \n", - "coef_number_of_mandatory_tours_and_tour_frequen... -10.675107 \n", - "coef_presence_of_full_time_worker_and_discretio... 0.167217 \n", - "coef_presence_of_non_worker_and_eating_out_tour -1.295662 \n", - "coef_presence_of_non_worker_and_shopping_tour -1.353670 \n", - "coef_presence_of_non_worker_and_tour_frequency_... -0.434686 \n", - "coef_presence_of_part_time_worker_and_discretio... -0.342155 \n", - "coef_presence_of_pre_driving_school_kid_and_sho... 1.415379 \n", - "coef_presence_of_predriving_school_kid_in_house... 0.290181 \n", - "coef_presence_of_preschool_kid_in_household_and... 0.328944 \n", - "coef_total_number_of_tours_is_1 -11.291182 \n", - "coef_total_number_of_tours_is_2 -13.228339 \n", - "coef_total_number_of_tours_is_3 -14.184905 \n", - "coef_urban_and_discretionary_tour 0.000000 \n", - "coef_urban_and_escorting_tour -4.483827 \n", - "coef_walk_access_to_retail_and_eating_out 0.400103 " + " holdfast \n", + "param_name \n", + "coef_0_auto_household_and_escorting_tour 1 \n", + "coef_1_escort_tour_constant 0 \n", + "coef_1_plus_eating_out_tours_constant 0 \n", + "coef_1_plus_maintenance_tours_constant 0 \n", + "coef_1_plus_other_discretionary_tours_constant 0 \n", + "coef_1_plus_shopping_tours_constant 0 \n", + "coef_1_plus_visting_tours_constant 0 \n", + "coef_2_plus_escort_tours_constant 0 \n", + "coef_auto_access_to_retail_and_escorting 0 \n", + "coef_high_income_group_and_eating_out_tour 0 \n", + "coef_high_income_group_and_shopping_tour 0 \n", + "coef_high_income_group_and_tour_frequency_is_5_... 0 \n", + "coef_logged_maximum_residual_window_tour_freque... 0 \n", + "coef_mediumhigh_income_group_and_tour_frequency... 0 \n", + "coef_mediumlow_income_group_and_tour_frequency_... 0 \n", + "coef_number_of_joint_maintenance_tours 0 \n", + "coef_number_of_joint_tours_and_tour_frequency_is_2 0 \n", + "coef_number_of_joint_tours_and_tour_frequency_i... 1 \n", + "coef_number_of_mandatory_tours_and_tour_frequen... 0 \n", + "coef_number_of_mandatory_tours_and_tour_frequen... 0 \n", + "coef_presence_of_full_time_worker_and_discretio... 0 \n", + "coef_presence_of_non_worker_and_eating_out_tour 0 \n", + "coef_presence_of_non_worker_and_shopping_tour 0 \n", + "coef_presence_of_non_worker_and_tour_frequency_... 0 \n", + "coef_presence_of_part_time_worker_and_discretio... 0 \n", + "coef_presence_of_pre_driving_school_kid_and_sho... 0 \n", + "coef_presence_of_predriving_school_kid_in_house... 0 \n", + "coef_presence_of_preschool_kid_in_household_and... 0 \n", + "coef_total_number_of_tours_is_1 0 \n", + "coef_total_number_of_tours_is_2 0 \n", + "coef_total_number_of_tours_is_3 0 \n", + "coef_urban_and_discretionary_tour 1 \n", + "coef_urban_and_escorting_tour 0 \n", + "coef_walk_access_to_retail_and_eating_out 0 " ] }, "metadata": {}, @@ -4621,24 +10035,375 @@ "name": "stderr", "output_type": "stream", "text": [ - "/var/folders/js/bk_dt9015j79_f6bxnc44dsr0000gp/T/ipykernel_48972/89088409.py:2: PossibleOverspecification: WARNING: Model is possibly over-specified (hessian is nearly singular).\n", - " m.estimate(method='SLSQP')\n", - "/Users/jeffnewman/LocalGit/asim-larch/activitysim-larch/conda-environments/AL-ENV/lib/python3.9/site-packages/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.064162929131762e-17 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/var/folders/js/bk_dt9015j79_f6bxnc44dsr0000gp/T/ipykernel_48972/89088409.py:2: PossibleOverspecification: WARNING: Model seems to have 3 parameter estimators with negative variance\n", - "- coef_1_escort_tour_constant\n", - "- coef_2_plus_escort_tours_constant\n", - "- coef_urban_and_escorting_tour\n", - " m.estimate(method='SLSQP')\n", - "/var/folders/js/bk_dt9015j79_f6bxnc44dsr0000gp/T/ipykernel_48972/89088409.py:2: RuntimeWarning: invalid value encountered in sqrt\n", - " m.estimate(method='SLSQP')\n", - "req_data does not request avail_ca or avail_co but it is set and being provided\n" + "/Users/jpn/Git/est-mode/larch/src/larch/model/jaxmodel.py:1156: PossibleOverspecification: Model is possibly over-specified (hessian is nearly singular).\n", + " self.calculate_parameter_covariance()\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ValueStd Errt StatSignifNull ValueConstrained
Parameter      
coef_0_auto_household_and_escorting_tour-2.00 0.00 NA 0.00fixed value
coef_1_escort_tour_constant-0.710 191.-0.00 0.00
coef_1_plus_eating_out_tours_constant 1.27 191. 0.01 0.00
coef_1_plus_maintenance_tours_constant-0.581 191.-0.00 0.00
coef_1_plus_other_discretionary_tours_constant 0.615 191. 0.00 0.00
coef_1_plus_shopping_tours_constant 1.04 191. 0.01 0.00
coef_1_plus_visting_tours_constant-0.446 191.-0.00 0.00
coef_2_plus_escort_tours_constant-0.0761 382.-0.00 0.00
coef_auto_access_to_retail_and_escorting 0.0632 0.112 0.56 0.00
coef_high_income_group_and_eating_out_tour-0.810 0.242-3.35*** 0.00
coef_high_income_group_and_shopping_tour-0.946 0.239-3.95*** 0.00
coef_high_income_group_and_tour_frequency_is_5_plus 2.30 0.217 10.62*** 0.00
coef_logged_maximum_residual_window_tour_frequency_is_5_plus 1.35 0.147 9.23*** 0.00
coef_mediumhigh_income_group_and_tour_frequency_is_5_plus 1.81 0.217 8.33*** 0.00
coef_mediumlow_income_group_and_tour_frequency_is_5_plus 1.14 0.225 5.08*** 0.00
coef_number_of_joint_maintenance_tours-1.35 NA NA 0.00
coef_number_of_joint_tours_and_tour_frequency_is_2-0.540 0.138-3.92*** 0.00
coef_number_of_joint_tours_and_tour_frequency_is_5_plus-999. 0.00 NA 0.00fixed value
coef_number_of_mandatory_tours_and_tour_frequency_is_1-1.26 0.206-6.10*** 0.00
coef_number_of_mandatory_tours_and_tour_frequency_is_3-3.16 0.312-10.14*** 0.00
coef_presence_of_full_time_worker_and_discretionary_tour 0.646 0.148 4.36*** 0.00
coef_presence_of_non_worker_and_eating_out_tour-1.53 0.168-9.11*** 0.00
coef_presence_of_non_worker_and_shopping_tour-0.760 0.151-5.05*** 0.00
coef_presence_of_non_worker_and_tour_frequency_is_5 0.354 0.0883 4.01*** 0.00
coef_presence_of_part_time_worker_and_discretionary_tour 0.436 0.0926 4.71*** 0.00
coef_presence_of_pre_driving_school_kid_and_shopping_tour 0.746 0.150 4.98*** 0.00
coef_presence_of_predriving_school_kid_in_household_and_tour_frequency_is_5-0.0865 0.0791-1.09 0.00
coef_presence_of_preschool_kid_in_household_and_tour_frequency_is_5-0.358 0.0910-3.93*** 0.00
coef_total_number_of_tours_is_1-7.20 191.-0.04 0.00
coef_total_number_of_tours_is_2-10.5 382.-0.03 0.00
coef_total_number_of_tours_is_3-13.8 574.-0.02 0.00
coef_urban_and_discretionary_tour 0.00 0.00 NA 0.00fixed value
coef_urban_and_escorting_tour 0.729 0.147 4.97*** 0.00
coef_walk_access_to_retail_and_eating_out 0.0996 0.0402 2.47* 0.00
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model PTYPE_PRESCHOOL\n" ] }, { "data": { "text/html": [ - "

Iteration 030 [Optimization terminated successfully]

" + "

Iteration 074 [Optimization terminated successfully]

" ], "text/plain": [ "" @@ -4650,7 +10415,7 @@ { "data": { "text/html": [ - "

Best LL = -225.00971520122772

" + "

Best LL = -3515.750312068413

" ], "text/plain": [ "" @@ -4681,403 +10446,391 @@ " \n", " \n", " value\n", + " best\n", " initvalue\n", - " nullvalue\n", " minimum\n", " maximum\n", + " nullvalue\n", " holdfast\n", - " note\n", - " best\n", + " \n", + " \n", + " param_name\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " coef_0_auto_household_and_escorting_tour\n", " -2.000000\n", - " -2.0000\n", - " 0.0\n", + " -2.000000\n", + " -2.000000\n", " -2.0\n", " -2.0\n", + " 0.0\n", " 1\n", - " \n", - " -2.000000\n", " \n", " \n", " coef_1_escort_tour_constant\n", - " 0.179651\n", - " 0.3622\n", + " 0.274841\n", + " 0.274841\n", + " 0.362200\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.179651\n", " \n", " \n", " coef_1_plus_eating_out_tours_constant\n", - " 0.204827\n", - " 0.9612\n", + " -0.253387\n", + " -0.253387\n", + " 0.961200\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.204827\n", " \n", " \n", " coef_1_plus_maintenance_tours_constant\n", - " 0.073169\n", - " 0.6788\n", + " 0.316648\n", + " 0.316648\n", + " 0.678800\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.073169\n", " \n", " \n", " coef_1_plus_other_discretionary_tours_constant\n", - " 1.133662\n", - " 1.4935\n", + " 1.168896\n", + " 1.168896\n", + " 1.493500\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.133662\n", " \n", " \n", " coef_1_plus_shopping_tours_constant\n", - " 0.785367\n", - " 1.6919\n", + " 1.139680\n", + " 1.139680\n", + " 1.691900\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.785367\n", " \n", " \n", " coef_1_plus_visting_tours_constant\n", - " -0.011286\n", - " 0.4424\n", + " 0.059049\n", + " 0.059049\n", + " 0.442400\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.011286\n", " \n", " \n", " coef_2_plus_escort_tours_constant\n", - " 1.744429\n", - " 2.2219\n", + " 1.941139\n", + " 1.941139\n", + " 2.221900\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.744429\n", " \n", " \n", " coef_discretionary_tour\n", - " 0.543162\n", - " 0.9030\n", + " 0.578396\n", + " 0.578396\n", + " 0.903000\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.543162\n", " \n", " \n", " coef_escorting_tour\n", - " 1.353509\n", - " 2.4910\n", + " 1.842119\n", + " 1.842119\n", + " 2.491000\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.353509\n", " \n", " \n", " coef_maintenance_tour\n", - " 0.416369\n", - " 1.0220\n", + " 0.659848\n", + " 0.659848\n", + " 1.022000\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.416369\n", " \n", " \n", " coef_presence_of_full_time_worker_and_escorting_tour\n", - " -0.613492\n", - " -0.8930\n", + " -0.928522\n", + " -0.928522\n", + " -0.893000\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.613492\n", " \n", " \n", " coef_presence_of_non_worker_and_discretionary_tour\n", - " 0.013879\n", - " 0.7910\n", + " 0.693868\n", + " 0.693868\n", + " 0.791000\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.013879\n", " \n", " \n", " coef_presence_of_non_worker_and_eating_out_tour\n", - " 1.115052\n", - " 1.1570\n", + " 1.549677\n", + " 1.549677\n", + " 1.157000\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.115052\n", " \n", " \n", " coef_presence_of_non_worker_and_escorting_tour\n", - " 0.890993\n", - " 0.8900\n", + " 0.960167\n", + " 0.960167\n", + " 0.890000\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.890993\n", " \n", " \n", " coef_presence_of_non_worker_and_shopping_tour\n", - " 0.231053\n", - " 0.8080\n", + " 0.669579\n", + " 0.669579\n", + " 0.808000\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.231053\n", " \n", " \n", " coef_presence_of_part_time_worker_and_eating_out_tour\n", - " 1.392675\n", - " 1.0370\n", + " 1.135686\n", + " 1.135686\n", + " 1.037000\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.392675\n", " \n", " \n", " coef_presence_of_part_time_worker_and_shopping_tour\n", - " 1.044044\n", - " 1.1550\n", + " 1.013348\n", + " 1.013348\n", + " 1.155000\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.044044\n", " \n", " \n", " coef_total_number_of_tours_is_1\n", - " -4.436747\n", - " -5.7590\n", + " -4.911268\n", + " -4.911268\n", + " -5.759000\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -4.436747\n", " \n", " \n", " coef_total_number_of_tours_is_2\n", - " -9.039558\n", - " -11.5170\n", + " -9.965345\n", + " -9.965345\n", + " -11.517000\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -9.039558\n", " \n", " \n", " coef_total_number_of_tours_is_3\n", - " -12.714429\n", - " -17.2760\n", + " -15.118161\n", + " -15.118161\n", + " -17.275999\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -12.714429\n", " \n", " \n", " coef_total_number_of_tours_is_4\n", - " -29.080351\n", - " -23.0350\n", + " -19.999999\n", + " -19.999999\n", + " -23.035000\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -29.080351\n", " \n", " \n", " coef_total_number_of_tours_is_6_plus\n", " -999.000000\n", - " -999.0000\n", - " 0.0\n", + " -999.000000\n", + " -999.000000\n", " -999.0\n", " -999.0\n", + " 0.0\n", " 1\n", - " \n", - " -999.000000\n", " \n", " \n", " coef_urban_and_discretionary_tour\n", " 0.000000\n", - " 0.0000\n", + " 0.000000\n", + " 0.000000\n", " 0.0\n", " 0.0\n", " 0.0\n", " 1\n", - " \n", - " 0.000000\n", " \n", " \n", " coef_visiting_or_social_tour\n", - " 0.315314\n", - " 0.7690\n", + " 0.385649\n", + " 0.385649\n", + " 0.769000\n", + " -20.0\n", + " 20.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.315314\n", " \n", " \n", "\n", "" ], "text/plain": [ - " value initvalue \\\n", - "coef_0_auto_household_and_escorting_tour -2.000000 -2.0000 \n", - "coef_1_escort_tour_constant 0.179651 0.3622 \n", - "coef_1_plus_eating_out_tours_constant 0.204827 0.9612 \n", - "coef_1_plus_maintenance_tours_constant 0.073169 0.6788 \n", - "coef_1_plus_other_discretionary_tours_constant 1.133662 1.4935 \n", - "coef_1_plus_shopping_tours_constant 0.785367 1.6919 \n", - "coef_1_plus_visting_tours_constant -0.011286 0.4424 \n", - "coef_2_plus_escort_tours_constant 1.744429 2.2219 \n", - "coef_discretionary_tour 0.543162 0.9030 \n", - "coef_escorting_tour 1.353509 2.4910 \n", - "coef_maintenance_tour 0.416369 1.0220 \n", - "coef_presence_of_full_time_worker_and_escorting... -0.613492 -0.8930 \n", - "coef_presence_of_non_worker_and_discretionary_tour 0.013879 0.7910 \n", - "coef_presence_of_non_worker_and_eating_out_tour 1.115052 1.1570 \n", - "coef_presence_of_non_worker_and_escorting_tour 0.890993 0.8900 \n", - "coef_presence_of_non_worker_and_shopping_tour 0.231053 0.8080 \n", - "coef_presence_of_part_time_worker_and_eating_ou... 1.392675 1.0370 \n", - "coef_presence_of_part_time_worker_and_shopping_... 1.044044 1.1550 \n", - "coef_total_number_of_tours_is_1 -4.436747 -5.7590 \n", - "coef_total_number_of_tours_is_2 -9.039558 -11.5170 \n", - "coef_total_number_of_tours_is_3 -12.714429 -17.2760 \n", - "coef_total_number_of_tours_is_4 -29.080351 -23.0350 \n", - "coef_total_number_of_tours_is_6_plus -999.000000 -999.0000 \n", - "coef_urban_and_discretionary_tour 0.000000 0.0000 \n", - "coef_visiting_or_social_tour 0.315314 0.7690 \n", + " value best \\\n", + "param_name \n", + "coef_0_auto_household_and_escorting_tour -2.000000 -2.000000 \n", + "coef_1_escort_tour_constant 0.274841 0.274841 \n", + "coef_1_plus_eating_out_tours_constant -0.253387 -0.253387 \n", + "coef_1_plus_maintenance_tours_constant 0.316648 0.316648 \n", + "coef_1_plus_other_discretionary_tours_constant 1.168896 1.168896 \n", + "coef_1_plus_shopping_tours_constant 1.139680 1.139680 \n", + "coef_1_plus_visting_tours_constant 0.059049 0.059049 \n", + "coef_2_plus_escort_tours_constant 1.941139 1.941139 \n", + "coef_discretionary_tour 0.578396 0.578396 \n", + "coef_escorting_tour 1.842119 1.842119 \n", + "coef_maintenance_tour 0.659848 0.659848 \n", + "coef_presence_of_full_time_worker_and_escorting... -0.928522 -0.928522 \n", + "coef_presence_of_non_worker_and_discretionary_tour 0.693868 0.693868 \n", + "coef_presence_of_non_worker_and_eating_out_tour 1.549677 1.549677 \n", + "coef_presence_of_non_worker_and_escorting_tour 0.960167 0.960167 \n", + "coef_presence_of_non_worker_and_shopping_tour 0.669579 0.669579 \n", + "coef_presence_of_part_time_worker_and_eating_ou... 1.135686 1.135686 \n", + "coef_presence_of_part_time_worker_and_shopping_... 1.013348 1.013348 \n", + "coef_total_number_of_tours_is_1 -4.911268 -4.911268 \n", + "coef_total_number_of_tours_is_2 -9.965345 -9.965345 \n", + "coef_total_number_of_tours_is_3 -15.118161 -15.118161 \n", + "coef_total_number_of_tours_is_4 -19.999999 -19.999999 \n", + "coef_total_number_of_tours_is_6_plus -999.000000 -999.000000 \n", + "coef_urban_and_discretionary_tour 0.000000 0.000000 \n", + "coef_visiting_or_social_tour 0.385649 0.385649 \n", "\n", - " nullvalue minimum \\\n", - "coef_0_auto_household_and_escorting_tour 0.0 -2.0 \n", - "coef_1_escort_tour_constant 0.0 NaN \n", - "coef_1_plus_eating_out_tours_constant 0.0 NaN \n", - "coef_1_plus_maintenance_tours_constant 0.0 NaN \n", - "coef_1_plus_other_discretionary_tours_constant 0.0 NaN \n", - "coef_1_plus_shopping_tours_constant 0.0 NaN \n", - "coef_1_plus_visting_tours_constant 0.0 NaN \n", - "coef_2_plus_escort_tours_constant 0.0 NaN \n", - "coef_discretionary_tour 0.0 NaN \n", - "coef_escorting_tour 0.0 NaN \n", - "coef_maintenance_tour 0.0 NaN \n", - "coef_presence_of_full_time_worker_and_escorting... 0.0 NaN \n", - "coef_presence_of_non_worker_and_discretionary_tour 0.0 NaN \n", - "coef_presence_of_non_worker_and_eating_out_tour 0.0 NaN \n", - "coef_presence_of_non_worker_and_escorting_tour 0.0 NaN \n", - "coef_presence_of_non_worker_and_shopping_tour 0.0 NaN \n", - "coef_presence_of_part_time_worker_and_eating_ou... 0.0 NaN \n", - "coef_presence_of_part_time_worker_and_shopping_... 0.0 NaN \n", - "coef_total_number_of_tours_is_1 0.0 NaN \n", - "coef_total_number_of_tours_is_2 0.0 NaN \n", - "coef_total_number_of_tours_is_3 0.0 NaN \n", - "coef_total_number_of_tours_is_4 0.0 NaN \n", - "coef_total_number_of_tours_is_6_plus 0.0 -999.0 \n", - "coef_urban_and_discretionary_tour 0.0 0.0 \n", - "coef_visiting_or_social_tour 0.0 NaN \n", + " initvalue minimum \\\n", + "param_name \n", + "coef_0_auto_household_and_escorting_tour -2.000000 -2.0 \n", + "coef_1_escort_tour_constant 0.362200 -20.0 \n", + "coef_1_plus_eating_out_tours_constant 0.961200 -20.0 \n", + "coef_1_plus_maintenance_tours_constant 0.678800 -20.0 \n", + "coef_1_plus_other_discretionary_tours_constant 1.493500 -20.0 \n", + "coef_1_plus_shopping_tours_constant 1.691900 -20.0 \n", + "coef_1_plus_visting_tours_constant 0.442400 -20.0 \n", + "coef_2_plus_escort_tours_constant 2.221900 -20.0 \n", + "coef_discretionary_tour 0.903000 -20.0 \n", + "coef_escorting_tour 2.491000 -20.0 \n", + "coef_maintenance_tour 1.022000 -20.0 \n", + "coef_presence_of_full_time_worker_and_escorting... -0.893000 -20.0 \n", + "coef_presence_of_non_worker_and_discretionary_tour 0.791000 -20.0 \n", + "coef_presence_of_non_worker_and_eating_out_tour 1.157000 -20.0 \n", + "coef_presence_of_non_worker_and_escorting_tour 0.890000 -20.0 \n", + "coef_presence_of_non_worker_and_shopping_tour 0.808000 -20.0 \n", + "coef_presence_of_part_time_worker_and_eating_ou... 1.037000 -20.0 \n", + "coef_presence_of_part_time_worker_and_shopping_... 1.155000 -20.0 \n", + "coef_total_number_of_tours_is_1 -5.759000 -20.0 \n", + "coef_total_number_of_tours_is_2 -11.517000 -20.0 \n", + "coef_total_number_of_tours_is_3 -17.275999 -20.0 \n", + "coef_total_number_of_tours_is_4 -23.035000 -20.0 \n", + "coef_total_number_of_tours_is_6_plus -999.000000 -999.0 \n", + "coef_urban_and_discretionary_tour 0.000000 0.0 \n", + "coef_visiting_or_social_tour 0.769000 -20.0 \n", "\n", - " maximum holdfast note \\\n", - "coef_0_auto_household_and_escorting_tour -2.0 1 \n", - "coef_1_escort_tour_constant NaN 0 \n", - "coef_1_plus_eating_out_tours_constant NaN 0 \n", - "coef_1_plus_maintenance_tours_constant NaN 0 \n", - "coef_1_plus_other_discretionary_tours_constant NaN 0 \n", - "coef_1_plus_shopping_tours_constant NaN 0 \n", - "coef_1_plus_visting_tours_constant NaN 0 \n", - "coef_2_plus_escort_tours_constant NaN 0 \n", - "coef_discretionary_tour NaN 0 \n", - "coef_escorting_tour NaN 0 \n", - "coef_maintenance_tour NaN 0 \n", - "coef_presence_of_full_time_worker_and_escorting... NaN 0 \n", - "coef_presence_of_non_worker_and_discretionary_tour NaN 0 \n", - "coef_presence_of_non_worker_and_eating_out_tour NaN 0 \n", - "coef_presence_of_non_worker_and_escorting_tour NaN 0 \n", - "coef_presence_of_non_worker_and_shopping_tour NaN 0 \n", - "coef_presence_of_part_time_worker_and_eating_ou... NaN 0 \n", - "coef_presence_of_part_time_worker_and_shopping_... NaN 0 \n", - "coef_total_number_of_tours_is_1 NaN 0 \n", - "coef_total_number_of_tours_is_2 NaN 0 \n", - "coef_total_number_of_tours_is_3 NaN 0 \n", - "coef_total_number_of_tours_is_4 NaN 0 \n", - "coef_total_number_of_tours_is_6_plus -999.0 1 \n", - "coef_urban_and_discretionary_tour 0.0 1 \n", - "coef_visiting_or_social_tour NaN 0 \n", + " maximum nullvalue \\\n", + "param_name \n", + "coef_0_auto_household_and_escorting_tour -2.0 0.0 \n", + "coef_1_escort_tour_constant 20.0 0.0 \n", + "coef_1_plus_eating_out_tours_constant 20.0 0.0 \n", + "coef_1_plus_maintenance_tours_constant 20.0 0.0 \n", + "coef_1_plus_other_discretionary_tours_constant 20.0 0.0 \n", + "coef_1_plus_shopping_tours_constant 20.0 0.0 \n", + "coef_1_plus_visting_tours_constant 20.0 0.0 \n", + "coef_2_plus_escort_tours_constant 20.0 0.0 \n", + "coef_discretionary_tour 20.0 0.0 \n", + "coef_escorting_tour 20.0 0.0 \n", + "coef_maintenance_tour 20.0 0.0 \n", + "coef_presence_of_full_time_worker_and_escorting... 20.0 0.0 \n", + "coef_presence_of_non_worker_and_discretionary_tour 20.0 0.0 \n", + "coef_presence_of_non_worker_and_eating_out_tour 20.0 0.0 \n", + "coef_presence_of_non_worker_and_escorting_tour 20.0 0.0 \n", + "coef_presence_of_non_worker_and_shopping_tour 20.0 0.0 \n", + "coef_presence_of_part_time_worker_and_eating_ou... 20.0 0.0 \n", + "coef_presence_of_part_time_worker_and_shopping_... 20.0 0.0 \n", + "coef_total_number_of_tours_is_1 20.0 0.0 \n", + "coef_total_number_of_tours_is_2 20.0 0.0 \n", + "coef_total_number_of_tours_is_3 20.0 0.0 \n", + "coef_total_number_of_tours_is_4 20.0 0.0 \n", + "coef_total_number_of_tours_is_6_plus -999.0 0.0 \n", + "coef_urban_and_discretionary_tour 0.0 0.0 \n", + "coef_visiting_or_social_tour 20.0 0.0 \n", "\n", - " best \n", - "coef_0_auto_household_and_escorting_tour -2.000000 \n", - "coef_1_escort_tour_constant 0.179651 \n", - "coef_1_plus_eating_out_tours_constant 0.204827 \n", - "coef_1_plus_maintenance_tours_constant 0.073169 \n", - "coef_1_plus_other_discretionary_tours_constant 1.133662 \n", - "coef_1_plus_shopping_tours_constant 0.785367 \n", - "coef_1_plus_visting_tours_constant -0.011286 \n", - "coef_2_plus_escort_tours_constant 1.744429 \n", - "coef_discretionary_tour 0.543162 \n", - "coef_escorting_tour 1.353509 \n", - "coef_maintenance_tour 0.416369 \n", - "coef_presence_of_full_time_worker_and_escorting... -0.613492 \n", - "coef_presence_of_non_worker_and_discretionary_tour 0.013879 \n", - "coef_presence_of_non_worker_and_eating_out_tour 1.115052 \n", - "coef_presence_of_non_worker_and_escorting_tour 0.890993 \n", - "coef_presence_of_non_worker_and_shopping_tour 0.231053 \n", - "coef_presence_of_part_time_worker_and_eating_ou... 1.392675 \n", - "coef_presence_of_part_time_worker_and_shopping_... 1.044044 \n", - "coef_total_number_of_tours_is_1 -4.436747 \n", - "coef_total_number_of_tours_is_2 -9.039558 \n", - "coef_total_number_of_tours_is_3 -12.714429 \n", - "coef_total_number_of_tours_is_4 -29.080351 \n", - "coef_total_number_of_tours_is_6_plus -999.000000 \n", - "coef_urban_and_discretionary_tour 0.000000 \n", - "coef_visiting_or_social_tour 0.315314 " + " holdfast \n", + "param_name \n", + "coef_0_auto_household_and_escorting_tour 1 \n", + "coef_1_escort_tour_constant 0 \n", + "coef_1_plus_eating_out_tours_constant 0 \n", + "coef_1_plus_maintenance_tours_constant 0 \n", + "coef_1_plus_other_discretionary_tours_constant 0 \n", + "coef_1_plus_shopping_tours_constant 0 \n", + "coef_1_plus_visting_tours_constant 0 \n", + "coef_2_plus_escort_tours_constant 0 \n", + "coef_discretionary_tour 0 \n", + "coef_escorting_tour 0 \n", + "coef_maintenance_tour 0 \n", + "coef_presence_of_full_time_worker_and_escorting... 0 \n", + "coef_presence_of_non_worker_and_discretionary_tour 0 \n", + "coef_presence_of_non_worker_and_eating_out_tour 0 \n", + "coef_presence_of_non_worker_and_escorting_tour 0 \n", + "coef_presence_of_non_worker_and_shopping_tour 0 \n", + "coef_presence_of_part_time_worker_and_eating_ou... 0 \n", + "coef_presence_of_part_time_worker_and_shopping_... 0 \n", + "coef_total_number_of_tours_is_1 0 \n", + "coef_total_number_of_tours_is_2 0 \n", + "coef_total_number_of_tours_is_3 0 \n", + "coef_total_number_of_tours_is_4 0 \n", + "coef_total_number_of_tours_is_6_plus 1 \n", + "coef_urban_and_discretionary_tour 1 \n", + "coef_visiting_or_social_tour 0 " ] }, "metadata": {}, @@ -5087,873 +10840,307 @@ "name": "stderr", "output_type": "stream", "text": [ - "/var/folders/js/bk_dt9015j79_f6bxnc44dsr0000gp/T/ipykernel_48972/89088409.py:2: PossibleOverspecification: WARNING: Model is possibly over-specified (hessian is nearly singular).\n", - " m.estimate(method='SLSQP')\n", - "/Users/jeffnewman/LocalGit/asim-larch/activitysim-larch/conda-environments/AL-ENV/lib/python3.9/site-packages/larch/linalg/__init__.py:18: UserWarning: minimum eig 2.8528068249273466e-08 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/var/folders/js/bk_dt9015j79_f6bxnc44dsr0000gp/T/ipykernel_48972/89088409.py:2: PossibleOverspecification: WARNING: Model seems to have 14 parameter estimators with negative variance\n", - "- coef_1_escort_tour_constant\n", - "- coef_1_plus_eating_out_tours_constant\n", - "- coef_1_plus_maintenance_tours_constant\n", - "- coef_1_plus_shopping_tours_constant\n", - "- and 10 more\n", - " m.estimate(method='SLSQP')\n", - "/var/folders/js/bk_dt9015j79_f6bxnc44dsr0000gp/T/ipykernel_48972/89088409.py:2: RuntimeWarning: invalid value encountered in sqrt\n", - " m.estimate(method='SLSQP')\n" + "/Users/jpn/Git/est-mode/larch/src/larch/model/jaxmodel.py:1156: PossibleOverspecification: Model is possibly over-specified (hessian is nearly singular).\n", + " self.calculate_parameter_covariance()\n" ] - } - ], - "source": [ - "for k, m in model.items():\n", - " m.estimate(method='SLSQP')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Estimated coefficients" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ + }, { "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 ValueStd Errt StatSignifLike RatioNull ValueConstrainedValueStd Errt StatSignifNull ValueConstrained
Parameter      
coef_0_auto_household_and_escorting_tour-2.00 NA NA NA 0.00fixed value
coef_1_escort_tour_constant 0.319 NA NA[*] 2.36 0.00
coef_1_plus_eating_out_tours_constant-1.01 124.-0.01 NA 0.00
coef_1_plus_maintenance_tours_constant-2.84 124.-0.02 NA 0.00
coef_1_plus_other_discretionary_tours_constant 10.5 123. 0.09 NA 0.00
coef_1_plus_shopping_tours_constant 7.18 124. 0.06 NA 0.00
coef_1_plus_visting_tours_constant-0.321 124.-0.00 NA 0.00
coef_2_plus_escort_tours_constant 0.607 NA NA[] 0.97 0.00
coef_at_home_pre_driving_school_kid_and_escorting_tour-0.926 1.05-0.89 NA 0.00
coef_at_home_pre_school_kid_and_discretionary_tour-0.656 0.743-0.88 NA 0.00
coef_at_home_pre_school_kid_and_escorting_tour-0.793 0.821-0.97 NA 0.00
coef_auto_access_to_retail_and_discretionary-1.05 0.957-1.10 NA 0.00
coef_auto_access_to_retail_and_maintenance 0.279 0.886 0.31 NA 0.00
coef_auto_access_to_retail_and_shopping-0.631 0.855-0.74 NA 0.00
coef_car_surplus_vs_workers_and_tour_frequency_is_5_plus 0.168 0.233 0.72 NA 0.00
coef_female_and_escorting_tour 0.601 0.266 2.26* NA 0.00
coef_female_and_tour_frequency_is_1-0.316 0.137-2.31* NA 0.00
coef_female_and_tour_frequency_is_2-0.583 0.277-2.11* NA 0.00
coef_female_and_tour_frequency_is_5 0.0227 0.671 0.03 NA 0.00
coef_high_income_group_and_discretionary_tour-0.0604 0.241-0.25 NA 0.00
coef_high_income_group_and_eating_out_tour 0.726 0.282 2.58** NA 0.00
coef_high_income_group_and_tour_frequency_is_1 1.14 0.408 2.79** NA 0.00
coef_high_income_group_and_tour_frequency_is_2 2.22 0.869 2.55* NA 0.00
coef_high_income_group_and_tour_frequency_is_5_plus 0.105 1.42 0.07 NA 0.00
coef_high_income_group_and_visiting_tour-0.863 0.350-2.46* NA 0.00
coef_logged_maximum_residual_window_tour_frequency_is_1 1.34 0.232 5.76*** NA 0.00
coef_logged_maximum_residual_window_tour_frequency_is_2 1.43 0.289 4.94*** NA 0.00
coef_logged_maximum_residual_window_tour_frequency_is_5_plus 0.640 1.09 0.59 NA 0.00
coef_mediumhigh_income_group_and_tour_frequency_is_1 1.09 0.394 2.77** NA 0.00
coef_mediumhigh_income_group_and_tour_frequency_is_2 1.81 0.850 2.13* NA 0.00
coef_mediumhigh_income_group_and_tour_frequency_is_5_plus 1.04 1.25 0.83 NA 0.00
coef_number_of_joint_eating_out_tours-9.98 147.-0.07 NA 0.00
coef_number_of_mandatory_tours_and_tour_frequency_is_2-1.43 0.489-2.93** NA 0.00
coef_number_of_mandatory_tours_and_tour_frequency_is_5_plus-1.64 2.28-0.72 NA 0.00
coef_presence_of_driving_school_kid_and_discretionary_tour 0.384 0.452 0.85 NA 0.00
coef_presence_of_driving_school_kid_and_escorting_tour-0.211 0.529-0.40 NA 0.00
coef_presence_of_full_time_worker_and_discretionary_tour-0.783 0.222-3.53*** NA 0.00
coef_presence_of_full_time_worker_and_eating_out_tour-0.748 0.221-3.38*** NA 0.00
coef_presence_of_full_time_worker_and_maintenance_tour-0.342 0.271-1.27 NA 0.00
coef_presence_of_full_time_worker_and_shopping_tour-0.631 0.190-3.32*** NA 0.00
coef_presence_of_non_worker_and_discretionary_tour-1.27 0.384-3.30*** NA 0.00
coef_presence_of_non_worker_and_eating_out_tour-0.445 0.327-1.36 NA 0.00
coef_presence_of_non_worker_and_escorting_tour-0.854 0.404-2.11* NA 0.00
coef_presence_of_non_worker_and_maintenance_tour-0.209 0.364-0.58 NA 0.00
coef_presence_of_non_worker_and_shopping_tour-0.844 0.301-2.80** NA 0.00
coef_presence_of_part_time_worker_and_discretionary_tour-0.0412 0.265-0.16 NA 0.00
coef_presence_of_part_time_worker_and_maintenance_tour-0.183 0.328-0.56 NA 0.00
coef_presence_of_part_time_worker_and_shopping_tour-0.149 0.224-0.66 NA 0.00
coef_presence_of_pre_driving_school_kid_and_discretionary_tour-0.126 0.314-0.40 NA 0.00
coef_presence_of_pre_driving_school_kid_and_escorting_tour 1.40 0.268 5.23*** NA 0.00
coef_presence_of_pre_school_kid_and_discretionary_tour-0.0171 0.349-0.05 NA 0.00
coef_presence_of_pre_school_kid_and_eating_out_tour-0.845 0.421-2.01* NA 0.00
coef_presence_of_pre_school_kid_and_escorting_tour 0.748 0.309 2.42* NA 0.00
coef_presence_of_pre_school_kid_and_shopping_tour-0.00614 0.294-0.02 NA 0.00
coef_presence_of_retiree_and_discretionary_tour-0.597 0.461-1.29 NA 0.00
coef_presence_of_retiree_and_eating_out_tour-1.29 0.618-2.08* NA 0.00
coef_presence_of_retiree_and_escorting_tour-12.9 250.-0.05 NA 0.00
coef_presence_of_university_student_and_discretionary_tour-0.407 0.376-1.08 NA 0.00
coef_total_number_of_tours_is_1-7.52 124.-0.06 NA 0.00
coef_total_number_of_tours_is_2-10.1 247.-0.04 NA 0.00
coef_total_number_of_tours_is_3-11.1 371.-0.03 NA 0.00
coef_total_number_of_tours_is_4-12.8 494.-0.03 NA 0.00
coef_total_number_of_tours_is_5-21.8 623.-0.03 NA 0.00
coef_total_number_of_tours_is_6_plus-999. NA NA NA 0.00fixed value
coef_transit_access_to_retail_and_tour_frequency_is_5_plus 0.0745 0.114 0.65 NA 0.00
coef_urban_and_discretionary_tour 0.00 NA NA NA 0.00fixed value
coef_urban_and_escorting_tour-0.409 NA NA[***] 6.54 0.00
coef_walk_access_to_retail_and_discretionary 0.161 0.169 0.95 NA 0.00
coef_walk_access_to_retail_and_eating_out 0.211 0.128 1.65 NA 0.00
coef_walk_access_to_retail_and_escorting-0.105 0.147-0.72 NA 0.00
coef_walk_access_to_retail_and_shopping 0.0302 0.146 0.21 NA 0.00
coef_zero_car_ownership_and_tour_frequency_is_5_plus-0.227 0.175-1.30 NA 0.00coef_0_auto_household_and_escorting_tour-2.00 0.00 NA 0.00fixed value
coef_1_escort_tour_constant 0.275 211. 0.00 0.00
coef_1_plus_eating_out_tours_constant-0.253 0.215-1.18 0.00
coef_1_plus_maintenance_tours_constant 0.317 9.89e+13 0.00 0.00
coef_1_plus_other_discretionary_tours_constant 1.17 2.63e+06 0.00 0.00
coef_1_plus_shopping_tours_constant 1.14 0.0702 16.23*** 0.00
coef_1_plus_visting_tours_constant 0.0590 NA NA 0.00
coef_2_plus_escort_tours_constant 1.94 421. 0.00 0.00
coef_discretionary_tour 0.578 NA NA 0.00
coef_escorting_tour 1.84 212. 0.01 0.00
coef_maintenance_tour 0.660 9.89e+13 0.00 0.00
coef_presence_of_full_time_worker_and_escorting_tour-0.929 0.105-8.82*** 0.00
coef_presence_of_non_worker_and_discretionary_tour 0.694 0.129 5.36*** 0.00
coef_presence_of_non_worker_and_eating_out_tour 1.55 0.222 6.97*** 0.00
coef_presence_of_non_worker_and_escorting_tour 0.960 0.127 7.56*** 0.00
coef_presence_of_non_worker_and_shopping_tour 0.670 0.151 4.44*** 0.00
coef_presence_of_part_time_worker_and_eating_out_tour 1.14 0.195 5.81*** 0.00
coef_presence_of_part_time_worker_and_shopping_tour 1.01 0.142 7.12*** 0.00
coef_total_number_of_tours_is_1-4.91 NA NA 0.00
coef_total_number_of_tours_is_2-9.97 NA NA 0.00
coef_total_number_of_tours_is_3-15.1 0.239-63.27*** 0.00
coef_total_number_of_tours_is_4-20.0 0.00 NA 0.00coef_total_number_of_tours_is_4 ≥ -20.0
coef_total_number_of_tours_is_6_plus-999. 0.00 NA 0.00fixed value
coef_urban_and_discretionary_tour 0.00 0.00 NA 0.00fixed value
coef_visiting_or_social_tour 0.386 NA NA 0.00
\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 11, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], - "source": [ - "model['PTYPE_FULL'].parameter_summary()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "TojXWivZsx7M" - }, - "source": [ - "# Output Estimation Results" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], "source": [ "from activitysim.estimation.larch import update_coefficients\n", + "\n", "for k, m in model.items():\n", + " print(f\"Model {k}\")\n", + " m.set_cap(20)\n", + " m.estimate(method='SLSQP', maxiter=900)\n", + "\n", + " display(m.parameter_summary())\n", + "\n", " result_dir = data.edb_directory/k/\"estimated\"\n", " update_coefficients(\n", " m, data.coefficients[k], result_dir,\n", " output_file=f\"{modelname}_{k}_coefficients_revised.csv\",\n", " relabel_coef=data.relabel_coef.get(k),\n", - " );" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Write the model estimation report, including coefficient t-statistic and log likelihood" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jeffnewman/LocalGit/asim-larch/activitysim-larch/conda-environments/AL-ENV/lib/python3.9/site-packages/larch/util/excel.py:523: FutureWarning: Use of **kwargs is deprecated, use engine_kwargs instead.\n", - " xl = ExcelWriter(filename, engine='xlsxwriter_larch', model=model, **kwargs)\n", - "/Users/jeffnewman/LocalGit/asim-larch/activitysim-larch/conda-environments/AL-ENV/lib/python3.9/site-packages/larch/util/excel.py:523: FutureWarning: Use of **kwargs is deprecated, use engine_kwargs instead.\n", - " xl = ExcelWriter(filename, engine='xlsxwriter_larch', model=model, **kwargs)\n", - "/Users/jeffnewman/LocalGit/asim-larch/activitysim-larch/conda-environments/AL-ENV/lib/python3.9/site-packages/larch/util/excel.py:523: FutureWarning: Use of **kwargs is deprecated, use engine_kwargs instead.\n", - " xl = ExcelWriter(filename, engine='xlsxwriter_larch', model=model, **kwargs)\n", - "/Users/jeffnewman/LocalGit/asim-larch/activitysim-larch/conda-environments/AL-ENV/lib/python3.9/site-packages/larch/util/excel.py:523: FutureWarning: Use of **kwargs is deprecated, use engine_kwargs instead.\n", - " xl = ExcelWriter(filename, engine='xlsxwriter_larch', model=model, **kwargs)\n", - "/Users/jeffnewman/LocalGit/asim-larch/activitysim-larch/conda-environments/AL-ENV/lib/python3.9/site-packages/larch/util/excel.py:523: FutureWarning: Use of **kwargs is deprecated, use engine_kwargs instead.\n", - " xl = ExcelWriter(filename, engine='xlsxwriter_larch', model=model, **kwargs)\n", - "/Users/jeffnewman/LocalGit/asim-larch/activitysim-larch/conda-environments/AL-ENV/lib/python3.9/site-packages/larch/util/excel.py:523: FutureWarning: Use of **kwargs is deprecated, use engine_kwargs instead.\n", - " xl = ExcelWriter(filename, engine='xlsxwriter_larch', model=model, **kwargs)\n", - "/Users/jeffnewman/LocalGit/asim-larch/activitysim-larch/conda-environments/AL-ENV/lib/python3.9/site-packages/larch/util/excel.py:523: FutureWarning: Use of **kwargs is deprecated, use engine_kwargs instead.\n", - " xl = ExcelWriter(filename, engine='xlsxwriter_larch', model=model, **kwargs)\n", - "/Users/jeffnewman/LocalGit/asim-larch/activitysim-larch/conda-environments/AL-ENV/lib/python3.9/site-packages/larch/util/excel.py:523: FutureWarning: Use of **kwargs is deprecated, use engine_kwargs instead.\n", - " xl = ExcelWriter(filename, engine='xlsxwriter_larch', model=model, **kwargs)\n" - ] - } - ], - "source": [ - "for k, m in model.items():\n", - " result_dir = data.edb_directory/k/\"estimated\"\n", + " )\n", + "\n", " m.to_xlsx(\n", " result_dir/f\"{modelname}_{k}_model_estimation.xlsx\", \n", " data_statistics=False,\n", - " )" + " )\n", + "\n", + " m.release_memory()\n" ] }, { @@ -5967,7 +11154,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -6036,25 +11223,25 @@ " \n", " 205\n", " coef_1_plus_maintenance_tours_constant\n", - " -2.842643\n", + " 0.079776\n", " F\n", " \n", " \n", " 206\n", " coef_1_plus_eating_out_tours_constant\n", - " -1.012856\n", + " 0.047768\n", " F\n", " \n", " \n", " 207\n", " coef_1_plus_visting_tours_constant\n", - " -0.320820\n", + " -0.019022\n", " F\n", " \n", " \n", " 208\n", " coef_1_plus_other_discretionary_tours_constant\n", - " 10.543979\n", + " 0.733799\n", " F\n", " \n", " \n", @@ -6069,23 +11256,23 @@ "" ], "text/plain": [ - " coefficient_name value constrain\n", - "0 coef_escorting_tour 0.000000 T\n", - "1 coef_discretionary_tour 0.000000 T\n", - "2 coef_shopping_tour 0.000000 T\n", - "3 coef_maintenance_tour 0.000000 T\n", - "4 coef_visiting_or_social_tour 0.000000 T\n", - ".. ... ... ...\n", - "205 coef_1_plus_maintenance_tours_constant -2.842643 F\n", - "206 coef_1_plus_eating_out_tours_constant -1.012856 F\n", - "207 coef_1_plus_visting_tours_constant -0.320820 F\n", - "208 coef_1_plus_other_discretionary_tours_constant 10.543979 F\n", - "209 coef_0_auto_household_and_escorting_tour -2.000000 T\n", + " coefficient_name value constrain\n", + "0 coef_escorting_tour 0.000000 T\n", + "1 coef_discretionary_tour 0.000000 T\n", + "2 coef_shopping_tour 0.000000 T\n", + "3 coef_maintenance_tour 0.000000 T\n", + "4 coef_visiting_or_social_tour 0.000000 T\n", + ".. ... ... ...\n", + "205 coef_1_plus_maintenance_tours_constant 0.079776 F\n", + "206 coef_1_plus_eating_out_tours_constant 0.047768 F\n", + "207 coef_1_plus_visting_tours_constant -0.019022 F\n", + "208 coef_1_plus_other_discretionary_tours_constant 0.733799 F\n", + "209 coef_0_auto_household_and_escorting_tour -2.000000 T\n", "\n", "[210 rows x 3 columns]" ] }, - "execution_count": 14, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -6103,7 +11290,7 @@ "toc_visible": true }, "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "ESTER", "language": "python", "name": "python3" }, @@ -6117,7 +11304,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.13" + "version": "3.10.15" }, "toc": { "base_numbering": 1, @@ -6135,4 +11322,4 @@ }, "nbformat": 4, "nbformat_minor": 1 -} \ No newline at end of file +} diff --git a/activitysim/examples/example_estimation/notebooks/16_nonmand_tour_scheduling.ipynb b/activitysim/examples/example_estimation/notebooks/16_nonmand_tour_scheduling.ipynb index 3d7a8214f..522ff71ca 100644 --- a/activitysim/examples/example_estimation/notebooks/16_nonmand_tour_scheduling.ipynb +++ b/activitysim/examples/example_estimation/notebooks/16_nonmand_tour_scheduling.ipynb @@ -34,27 +34,74 @@ "id": "s53VwlPwtNnr", "outputId": "d1208b7a-c1f2-4b0b-c439-bf312fe12be0" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "JAX not found. Some functionality will be unavailable.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'larch': '6.0.32',\n", + " 'sharrow': '2.13.0',\n", + " 'numpy': '1.26.4',\n", + " 'pandas': '1.5.3',\n", + " 'xarray': '2024.3.0',\n", + " 'numba': '0.60.0'}" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "import os\n", - "import larch # !conda install larch -c conda-forge # for estimation\n", - "import pandas as pd" + "import larch as lx\n", + "import pandas as pd\n", + "\n", + "lx.versions()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We'll work in our `test` directory, where ActivitySim has saved the estimation data bundles." + "For this demo, we will assume that you have already run ActivitySim in estimation\n", + "mode, and saved the required estimation data bundles (EDB's) to disk. See\n", + "the [first notebook](./01_estimation_mode.ipynb) for details. The following module\n", + "will run a script to set everything up if the example data is not already available." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "EDB directory already populated.\n" + ] + }, + { + "data": { + "text/plain": [ + "PosixPath('test-estimation-data/activitysim-prototype-mtc-extended')" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "os.chdir('test')" + "from est_mode_setup import prepare\n", + "\n", + "prepare()" ] }, { @@ -68,12 +115,28 @@ "cell_type": "code", "execution_count": 3, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "loading from output-est-mode/estimation_data_bundle/non_mandatory_tour_scheduling/tour_scheduling_nonmandatory_coefficients.csv\n", + "loading from output-est-mode/estimation_data_bundle/non_mandatory_tour_scheduling/non_mandatory_tour_scheduling_SPEC.csv\n", + "loading from output-est-mode/estimation_data_bundle/non_mandatory_tour_scheduling/non_mandatory_tour_scheduling_alternatives_combined.parquet\n", + "loading from output-est-mode/estimation_data_bundle/non_mandatory_tour_scheduling/non_mandatory_tour_scheduling_choosers_combined.parquet\n" + ] + } + ], "source": [ "modelname = \"non_mandatory_tour_scheduling\"\n", "\n", "from activitysim.estimation.larch import component_model\n", - "model, data = component_model(modelname, return_data=True)" + "\n", + "model, data = component_model(\n", + " modelname,\n", + " edb_directory=f\"output-est-mode/estimation_data_bundle/{modelname}/\",\n", + " return_data=True,\n", + ")" ] }, { @@ -256,38 +319,38 @@ " \n", " \n", " \n", - " 0\n", + " 5\n", " util_subsequent_tour_must_start_after_previous...\n", " Subsequent tour must start after previous tour...\n", " (start < end_previous) & (tour_type_num > 1)\n", " coef_subsequent_tour_must_start_after_previous...\n", " \n", " \n", - " 1\n", + " 6\n", " util_free_flow_round_trip_auto_time_shift_effe...\n", " Free-flow round trip auto time shift effects -...\n", " roundtrip_auto_time_to_work * duration\n", " coef_free_flow_round_trip_auto_time_shift_effe...\n", " \n", " \n", - " 2\n", + " 7\n", " util_shopping_tour_departure_shift_effects\n", " Shopping tour - departure shift effects\n", - " (tour_type == 'shopping') * start\n", + " @(_is_shopping) * df.start\n", " coef_shopping_tour_departure_shift_effects\n", " \n", " \n", - " 3\n", + " 8\n", " util_shopping_tour_duration_shift_effects\n", " Shopping tour - duration shift effects\n", - " (tour_type == 'shopping') * duration\n", + " @(_is_shopping) * df.duration\n", " coef_shopping_tour_duration_shift_effects\n", " \n", " \n", - " 4\n", + " 9\n", " util_maintenance_tour_departure_shift_effects\n", " Maintenance tour - departure shift effects\n", - " (tour_type == 'othmaint') * start\n", + " @(_is_othmaint) * df.start\n", " coef_maintenance_tour_departure_shift_effects\n", " \n", " \n", @@ -298,38 +361,38 @@ " ...\n", " \n", " \n", - " 86\n", + " 91\n", " util_escort_tour_duration_constants_4_to_5_hours\n", " Escort Tour Duration Constants -- 4 to 5 hours\n", - " (tour_type == 'escort') & (duration > 3) & (du...\n", + " @(_is_escort) * (df.duration > 3) * (df.durati...\n", " coef_escort_tour_duration_constants_4_to_5_hours\n", " \n", " \n", - " 87\n", + " 92\n", " util_escort_tour_duration_constants_6_to_7_hours\n", " Escort Tour Duration Constants -- 6 to 7 hours\n", - " (tour_type == 'escort') & (duration > 5) & (du...\n", + " @(_is_escort) * (df.duration > 5) * (df.durati...\n", " coef_escort_tour_duration_constants_6_to_7_hours\n", " \n", " \n", - " 88\n", + " 93\n", " util_escort_tour_duration_constants_8_to_10_hours\n", " Escort Tour Duration Constants -- 8 to 10 hours\n", - " (tour_type == 'escort') & (duration > 7) & (du...\n", + " @(_is_escort) * (df.duration > 7) * (df.durati...\n", " coef_escort_tour_duration_constants_8_to_10_hours\n", " \n", " \n", - " 89\n", + " 94\n", " util_escort_tour_duration_constants_11_to_13_h...\n", " Escort Tour Duration Constants -- 11 to 13 hours\n", - " (tour_type == 'escort') & (duration > 10) & (d...\n", + " @(_is_escort) * (df.duration > 10) * (df.durat...\n", " coef_escort_tour_duration_constants_11_to_13_h...\n", " \n", " \n", - " 90\n", + " 95\n", " util_escort_tour_duration_constants_14_to_18_h...\n", " Escort Tour Duration Constants -- 14 to 18 hours\n", - " (tour_type == 'escort') & (duration > 13) & (d...\n", + " @(_is_escort) * (df.duration > 13) * (df.durat...\n", " coef_escort_tour_duration_constants_14_to_18_h...\n", " \n", " \n", @@ -339,56 +402,56 @@ ], "text/plain": [ " Label \\\n", - "0 util_subsequent_tour_must_start_after_previous... \n", - "1 util_free_flow_round_trip_auto_time_shift_effe... \n", - "2 util_shopping_tour_departure_shift_effects \n", - "3 util_shopping_tour_duration_shift_effects \n", - "4 util_maintenance_tour_departure_shift_effects \n", + "5 util_subsequent_tour_must_start_after_previous... \n", + "6 util_free_flow_round_trip_auto_time_shift_effe... \n", + "7 util_shopping_tour_departure_shift_effects \n", + "8 util_shopping_tour_duration_shift_effects \n", + "9 util_maintenance_tour_departure_shift_effects \n", ".. ... \n", - "86 util_escort_tour_duration_constants_4_to_5_hours \n", - "87 util_escort_tour_duration_constants_6_to_7_hours \n", - "88 util_escort_tour_duration_constants_8_to_10_hours \n", - "89 util_escort_tour_duration_constants_11_to_13_h... \n", - "90 util_escort_tour_duration_constants_14_to_18_h... \n", + "91 util_escort_tour_duration_constants_4_to_5_hours \n", + "92 util_escort_tour_duration_constants_6_to_7_hours \n", + "93 util_escort_tour_duration_constants_8_to_10_hours \n", + "94 util_escort_tour_duration_constants_11_to_13_h... \n", + "95 util_escort_tour_duration_constants_14_to_18_h... \n", "\n", " Description \\\n", - "0 Subsequent tour must start after previous tour... \n", - "1 Free-flow round trip auto time shift effects -... \n", - "2 Shopping tour - departure shift effects \n", - "3 Shopping tour - duration shift effects \n", - "4 Maintenance tour - departure shift effects \n", + "5 Subsequent tour must start after previous tour... \n", + "6 Free-flow round trip auto time shift effects -... \n", + "7 Shopping tour - departure shift effects \n", + "8 Shopping tour - duration shift effects \n", + "9 Maintenance tour - departure shift effects \n", ".. ... \n", - "86 Escort Tour Duration Constants -- 4 to 5 hours \n", - "87 Escort Tour Duration Constants -- 6 to 7 hours \n", - "88 Escort Tour Duration Constants -- 8 to 10 hours \n", - "89 Escort Tour Duration Constants -- 11 to 13 hours \n", - "90 Escort Tour Duration Constants -- 14 to 18 hours \n", + "91 Escort Tour Duration Constants -- 4 to 5 hours \n", + "92 Escort Tour Duration Constants -- 6 to 7 hours \n", + "93 Escort Tour Duration Constants -- 8 to 10 hours \n", + "94 Escort Tour Duration Constants -- 11 to 13 hours \n", + "95 Escort Tour Duration Constants -- 14 to 18 hours \n", "\n", " Expression \\\n", - "0 (start < end_previous) & (tour_type_num > 1) \n", - "1 roundtrip_auto_time_to_work * duration \n", - "2 (tour_type == 'shopping') * start \n", - "3 (tour_type == 'shopping') * duration \n", - "4 (tour_type == 'othmaint') * start \n", + "5 (start < end_previous) & (tour_type_num > 1) \n", + "6 roundtrip_auto_time_to_work * duration \n", + "7 @(_is_shopping) * df.start \n", + "8 @(_is_shopping) * df.duration \n", + "9 @(_is_othmaint) * df.start \n", ".. ... \n", - "86 (tour_type == 'escort') & (duration > 3) & (du... \n", - "87 (tour_type == 'escort') & (duration > 5) & (du... \n", - "88 (tour_type == 'escort') & (duration > 7) & (du... \n", - "89 (tour_type == 'escort') & (duration > 10) & (d... \n", - "90 (tour_type == 'escort') & (duration > 13) & (d... \n", + "91 @(_is_escort) * (df.duration > 3) * (df.durati... \n", + "92 @(_is_escort) * (df.duration > 5) * (df.durati... \n", + "93 @(_is_escort) * (df.duration > 7) * (df.durati... \n", + "94 @(_is_escort) * (df.duration > 10) * (df.durat... \n", + "95 @(_is_escort) * (df.duration > 13) * (df.durat... \n", "\n", " Coefficient \n", - "0 coef_subsequent_tour_must_start_after_previous... \n", - "1 coef_free_flow_round_trip_auto_time_shift_effe... \n", - "2 coef_shopping_tour_departure_shift_effects \n", - "3 coef_shopping_tour_duration_shift_effects \n", - "4 coef_maintenance_tour_departure_shift_effects \n", + "5 coef_subsequent_tour_must_start_after_previous... \n", + "6 coef_free_flow_round_trip_auto_time_shift_effe... \n", + "7 coef_shopping_tour_departure_shift_effects \n", + "8 coef_shopping_tour_duration_shift_effects \n", + "9 coef_maintenance_tour_departure_shift_effects \n", ".. ... \n", - "86 coef_escort_tour_duration_constants_4_to_5_hours \n", - "87 coef_escort_tour_duration_constants_6_to_7_hours \n", - "88 coef_escort_tour_duration_constants_8_to_10_hours \n", - "89 coef_escort_tour_duration_constants_11_to_13_h... \n", - "90 coef_escort_tour_duration_constants_14_to_18_h... \n", + "91 coef_escort_tour_duration_constants_4_to_5_hours \n", + "92 coef_escort_tour_duration_constants_6_to_7_hours \n", + "93 coef_escort_tour_duration_constants_8_to_10_hours \n", + "94 coef_escort_tour_duration_constants_11_to_13_h... \n", + "95 coef_escort_tour_duration_constants_14_to_18_h... \n", "\n", "[89 rows x 4 columns]" ] @@ -461,11 +524,11 @@ " \n", " \n", " 0\n", - " 6812\n", - " 118\n", - " 118\n", - " 166\n", - " eatout\n", + " 1870\n", + " 73\n", + " 137\n", + " 45\n", + " othdiscr\n", " 1\n", " 1\n", " 1\n", @@ -485,11 +548,11 @@ " \n", " \n", " 1\n", - " 8110\n", - " 112\n", - " 112\n", - " 197\n", - " shopping\n", + " 20468\n", + " 99\n", + " 124\n", + " 499\n", + " escort\n", " 1\n", " 1\n", " 1\n", @@ -501,23 +564,23 @@ " 0\n", " 0.0\n", " 0\n", - " 0\n", " 1\n", + " 0\n", " True\n", " 5\n", " 5\n", " \n", " \n", " 2\n", - " 11013\n", - " 169\n", + " 27055\n", + " 146\n", " 169\n", - " 268\n", - " othdiscr\n", + " 659\n", + " social\n", + " 1\n", + " 1\n", " 1\n", " 1\n", - " 2\n", - " 2\n", " non_mandatory\n", " ...\n", " 0\n", @@ -526,18 +589,18 @@ " 0.0\n", " 0\n", " 0\n", - " 2\n", + " 1\n", " True\n", - " 12\n", - " 15\n", + " 5\n", + " 5\n", " \n", " \n", " 3\n", - " 11016\n", - " 115\n", - " 115\n", - " 268\n", - " othmaint\n", + " 38877\n", + " 37\n", + " 125\n", + " 948\n", + " escort\n", " 1\n", " 1\n", " 1\n", @@ -549,23 +612,23 @@ " 0\n", " 0.0\n", " 0\n", - " 0\n", - " 2\n", + " 1\n", + " 1\n", " True\n", " 5\n", " 5\n", " \n", " \n", " 4\n", - " 15403\n", - " 99\n", - " 99\n", - " 375\n", - " othmaint\n", - " 1\n", - " 1\n", + " 38904\n", + " 95\n", + " 172\n", + " 948\n", + " social\n", " 1\n", " 1\n", + " 2\n", + " 2\n", " non_mandatory\n", " ...\n", " 0\n", @@ -573,11 +636,11 @@ " 0\n", " 0.0\n", " 0\n", - " 0\n", + " 1\n", " 1\n", " True\n", - " 5\n", - " 5\n", + " 7\n", + " 7\n", " \n", " \n", " ...\n", @@ -604,16 +667,16 @@ " ...\n", " \n", " \n", - " 2485\n", - " 309760814\n", - " 71\n", - " 71\n", - " 7555141\n", + " 29664\n", + " 310197956\n", + " 125\n", + " 127\n", + " 7565803\n", " shopping\n", - " 2\n", " 1\n", " 1\n", - " 3\n", + " 1\n", + " 1\n", " non_mandatory\n", " ...\n", " 0\n", @@ -622,22 +685,22 @@ " 0.0\n", " 0\n", " 0\n", - " 3\n", + " 1\n", " True\n", " 5\n", " 5\n", " \n", " \n", - " 2486\n", - " 309760815\n", - " 137\n", - " 137\n", - " 7555141\n", - " shopping\n", - " 2\n", + " 29665\n", + " 310202376\n", + " 126\n", + " 5\n", + " 7565911\n", + " othdiscr\n", + " 1\n", + " 1\n", " 2\n", " 2\n", - " 3\n", " non_mandatory\n", " ...\n", " 0\n", @@ -646,22 +709,22 @@ " 0.0\n", " 0\n", " 0\n", - " 3\n", + " 2\n", " True\n", - " 9\n", - " 10\n", + " 15\n", + " 19\n", " \n", " \n", - " 2487\n", - " 309790009\n", - " 109\n", - " 109\n", - " 7555853\n", - " social\n", - " 1\n", + " 29666\n", + " 310202384\n", + " 149\n", + " 129\n", + " 7565911\n", + " shopping\n", " 1\n", " 1\n", " 1\n", + " 2\n", " non_mandatory\n", " ...\n", " 0\n", @@ -670,22 +733,22 @@ " 0.0\n", " 0\n", " 0\n", - " 1\n", + " 2\n", " True\n", " 5\n", " 5\n", " \n", " \n", - " 2488\n", - " 309796968\n", - " 146\n", + " 29667\n", + " 310212634\n", + " 86\n", " 146\n", - " 7556023\n", - " othdiscr\n", - " 2\n", + " 7566161\n", + " shopping\n", + " 1\n", + " 1\n", " 1\n", " 1\n", - " 2\n", " non_mandatory\n", " ...\n", " 0\n", @@ -694,22 +757,22 @@ " 0.0\n", " 0\n", " 0\n", - " 2\n", + " 1\n", " True\n", " 5\n", " 5\n", " \n", " \n", - " 2489\n", - " 309796969\n", - " 180\n", - " 180\n", - " 7556023\n", - " othdiscr\n", - " 2\n", - " 2\n", - " 2\n", - " 2\n", + " 29668\n", + " 310220296\n", + " 74\n", + " 126\n", + " 7566348\n", + " othmaint\n", + " 1\n", + " 1\n", + " 1\n", + " 1\n", " non_mandatory\n", " ...\n", " 0\n", @@ -718,83 +781,83 @@ " 0.0\n", " 0\n", " 0\n", - " 2\n", + " 1\n", " True\n", - " 15\n", - " 16\n", + " 5\n", + " 5\n", " \n", " \n", "\n", - "

2490 rows × 31 columns

\n", + "

29669 rows × 31 columns

\n", "" ], "text/plain": [ - " tour_id model_choice override_choice person_id tour_type \\\n", - "0 6812 118 118 166 eatout \n", - "1 8110 112 112 197 shopping \n", - "2 11013 169 169 268 othdiscr \n", - "3 11016 115 115 268 othmaint \n", - "4 15403 99 99 375 othmaint \n", - "... ... ... ... ... ... \n", - "2485 309760814 71 71 7555141 shopping \n", - "2486 309760815 137 137 7555141 shopping \n", - "2487 309790009 109 109 7555853 social \n", - "2488 309796968 146 146 7556023 othdiscr \n", - "2489 309796969 180 180 7556023 othdiscr \n", + " tour_id model_choice override_choice person_id tour_type \\\n", + "0 1870 73 137 45 othdiscr \n", + "1 20468 99 124 499 escort \n", + "2 27055 146 169 659 social \n", + "3 38877 37 125 948 escort \n", + "4 38904 95 172 948 social \n", + "... ... ... ... ... ... \n", + "29664 310197956 125 127 7565803 shopping \n", + "29665 310202376 126 5 7565911 othdiscr \n", + "29666 310202384 149 129 7565911 shopping \n", + "29667 310212634 86 146 7566161 shopping \n", + "29668 310220296 74 126 7566348 othmaint \n", "\n", - " tour_type_count tour_type_num tour_num tour_count tour_category \\\n", - "0 1 1 1 1 non_mandatory \n", - "1 1 1 1 1 non_mandatory \n", - "2 1 1 2 2 non_mandatory \n", - "3 1 1 1 2 non_mandatory \n", - "4 1 1 1 1 non_mandatory \n", - "... ... ... ... ... ... \n", - "2485 2 1 1 3 non_mandatory \n", - "2486 2 2 2 3 non_mandatory \n", - "2487 1 1 1 1 non_mandatory \n", - "2488 2 1 1 2 non_mandatory \n", - "2489 2 2 2 2 non_mandatory \n", + " tour_type_count tour_type_num tour_num tour_count tour_category \\\n", + "0 1 1 1 1 non_mandatory \n", + "1 1 1 1 1 non_mandatory \n", + "2 1 1 1 1 non_mandatory \n", + "3 1 1 1 2 non_mandatory \n", + "4 1 1 2 2 non_mandatory \n", + "... ... ... ... ... ... \n", + "29664 1 1 1 1 non_mandatory \n", + "29665 1 1 2 2 non_mandatory \n", + "29666 1 1 1 2 non_mandatory \n", + "29667 1 1 1 1 non_mandatory \n", + "29668 1 1 1 1 non_mandatory \n", "\n", - " ... num_person_joint_tours ptype num_children \\\n", - "0 ... 0 4 0 \n", - "1 ... 0 4 0 \n", - "2 ... 0 4 0 \n", - "3 ... 0 4 0 \n", - "4 ... 0 4 0 \n", - "... ... ... ... ... \n", - "2485 ... 0 5 0 \n", - "2486 ... 0 5 0 \n", - "2487 ... 0 5 0 \n", - "2488 ... 0 5 0 \n", - "2489 ... 0 5 0 \n", + " ... num_person_joint_tours ptype num_children \\\n", + "0 ... 0 4 0 \n", + "1 ... 0 4 0 \n", + "2 ... 0 4 0 \n", + "3 ... 0 4 0 \n", + "4 ... 0 4 0 \n", + "... ... ... ... ... \n", + "29664 ... 0 5 0 \n", + "29665 ... 0 5 0 \n", + "29666 ... 0 5 0 \n", + "29667 ... 0 5 0 \n", + "29668 ... 0 5 0 \n", "\n", - " roundtrip_auto_time_to_work num_mand num_escort_tours \\\n", - "0 0.0 0 0 \n", - "1 0.0 0 0 \n", - "2 0.0 0 0 \n", - "3 0.0 0 0 \n", - "4 0.0 0 0 \n", - "... ... ... ... \n", - "2485 0.0 0 0 \n", - "2486 0.0 0 0 \n", - "2487 0.0 0 0 \n", - "2488 0.0 0 0 \n", - "2489 0.0 0 0 \n", + " roundtrip_auto_time_to_work num_mand num_escort_tours \\\n", + "0 0.0 0 0 \n", + "1 0.0 0 1 \n", + "2 0.0 0 0 \n", + "3 0.0 0 1 \n", + "4 0.0 0 1 \n", + "... ... ... ... \n", + "29664 0.0 0 0 \n", + "29665 0.0 0 0 \n", + "29666 0.0 0 0 \n", + "29667 0.0 0 0 \n", + "29668 0.0 0 0 \n", "\n", - " num_non_escort_tours adult start_previous end_previous \n", - "0 1 True 5 5 \n", - "1 1 True 5 5 \n", - "2 2 True 12 15 \n", - "3 2 True 5 5 \n", - "4 1 True 5 5 \n", - "... ... ... ... ... \n", - "2485 3 True 5 5 \n", - "2486 3 True 9 10 \n", - "2487 1 True 5 5 \n", - "2488 2 True 5 5 \n", - "2489 2 True 15 16 \n", + " num_non_escort_tours adult start_previous end_previous \n", + "0 1 True 5 5 \n", + "1 0 True 5 5 \n", + "2 1 True 5 5 \n", + "3 1 True 5 5 \n", + "4 1 True 7 7 \n", + "... ... ... ... ... \n", + "29664 1 True 5 5 \n", + "29665 2 True 15 19 \n", + "29666 2 True 5 5 \n", + "29667 1 True 5 5 \n", + "29668 1 True 5 5 \n", "\n", - "[2490 rows x 31 columns]" + "[29669 rows x 31 columns]" ] }, "execution_count": 6, @@ -840,129 +903,114 @@ " \n", " \n", " tour_id\n", - " variable\n", - " 0\n", - " 1\n", - " 2\n", - " 3\n", - " 4\n", - " 5\n", - " 6\n", - " 7\n", + " start\n", + " end\n", + " duration\n", + " tdd\n", + " mode_choice_logsum\n", + " util_subsequent_tour_must_start_after_previous_tour_for_this_purpose_ends\n", + " util_free_flow_round_trip_auto_time_shift_effects_duration\n", + " util_shopping_tour_departure_shift_effects\n", + " util_shopping_tour_duration_shift_effects\n", " ...\n", - " 180\n", - " 181\n", - " 182\n", - " 183\n", - " 184\n", - " 185\n", - " 186\n", - " 187\n", - " 188\n", - " 189\n", + " util_escort_tour_arrival_constants_pm_peak_4\n", + " util_escort_tour_arrival_constants_evening\n", + " util_escort_tour_arrival_constants_late\n", + " util_escort_tour_duration_constants_0_to_1_hours\n", + " util_escort_tour_duration_constants_2_to_3_hours\n", + " util_escort_tour_duration_constants_4_to_5_hours\n", + " util_escort_tour_duration_constants_6_to_7_hours\n", + " util_escort_tour_duration_constants_8_to_10_hours\n", + " util_escort_tour_duration_constants_11_to_13_hours\n", + " util_escort_tour_duration_constants_14_to_18_hours\n", " \n", " \n", " \n", " \n", " 0\n", - " 6812\n", - " duration\n", + " 1870\n", + " 5\n", + " 5\n", + " 0\n", + " 0\n", + " 0\n", + " False\n", " 0.0\n", - " 1.0\n", - " 2.0\n", - " 3.0\n", - " 4.0\n", - " 5.0\n", - " 6.0\n", - " 7.0\n", + " 0\n", + " 0\n", " ...\n", - " 0.0\n", - " 1.0\n", - " 2.0\n", - " 3.0\n", - " 0.0\n", - " 1.0\n", - " 2.0\n", - " 0.0\n", - " 1.0\n", - " 0.0\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", " 1\n", - " 6812\n", - " end\n", - " 5.0\n", - " 6.0\n", - " 7.0\n", - " 8.0\n", - " 9.0\n", - " 10.0\n", - " 11.0\n", - " 12.0\n", - " ...\n", - " 20.0\n", - " 21.0\n", - " 22.0\n", - " 23.0\n", - " 21.0\n", - " 22.0\n", - " 23.0\n", - " 22.0\n", - " 23.0\n", - " 23.0\n", + " 1870\n", + " 5\n", + " 6\n", + " 1\n", + " 1\n", + " 0\n", + " False\n", + " 0.0\n", + " 0\n", + " 0\n", + " ...\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", " 2\n", - " 6812\n", - " mode_choice_logsum\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", + " 1870\n", + " 5\n", + " 7\n", + " 2\n", + " 2\n", + " 0\n", + " False\n", " 0.0\n", + " 0\n", + " 0\n", " ...\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", " 3\n", - " 6812\n", - " start\n", - " 5.0\n", - " 5.0\n", - " 5.0\n", - " 5.0\n", - " 5.0\n", - " 5.0\n", - " 5.0\n", - " 5.0\n", - " ...\n", - " 20.0\n", - " 20.0\n", - " 20.0\n", - " 20.0\n", - " 21.0\n", - " 21.0\n", - " 21.0\n", - " 22.0\n", - " 22.0\n", - " 23.0\n", - " \n", - " \n", - " 4\n", - " 6812\n", - " util_adjacent_window_exists_after_this_arrival...\n", + " 1870\n", + " 5\n", + " 8\n", + " 3\n", + " 3\n", + " 0\n", + " False\n", + " 0.0\n", + " 0\n", + " 0\n", + " ...\n", " False\n", " False\n", " False\n", @@ -971,6 +1019,21 @@ " False\n", " False\n", " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 4\n", + " 1870\n", + " 5\n", + " 9\n", + " 4\n", + " 4\n", + " 0\n", + " False\n", + " 0.0\n", + " 0\n", + " 0\n", " ...\n", " False\n", " False\n", @@ -1008,41 +1071,17 @@ " ...\n", " \n", " \n", - " 231565\n", - " 309796969\n", - " util_subsequent_of_2_plus_tours_for_same_purpo...\n", - " 0\n", + " 3632342\n", + " 310220296\n", + " 21\n", + " 22\n", " 1\n", - " 2\n", - " 3\n", - " 4\n", - " 5\n", - " 6\n", - " 7\n", - " ...\n", - " 0\n", - " 1\n", - " 2\n", - " 3\n", + " 185\n", " 0\n", - " 1\n", - " 2\n", + " False\n", + " 0.0\n", " 0\n", - " 1\n", " 0\n", - " \n", - " \n", - " 231566\n", - " 309796969\n", - " util_subsequent_tour_must_start_after_previous...\n", - " True\n", - " True\n", - " True\n", - " True\n", - " True\n", - " True\n", - " True\n", - " True\n", " ...\n", " False\n", " False\n", @@ -1056,9 +1095,21 @@ " False\n", " \n", " \n", - " 231567\n", - " 309796969\n", - " util_university_student_arrive_after_22\n", + " 3632343\n", + " 310220296\n", + " 21\n", + " 23\n", + " 2\n", + " 186\n", + " 0\n", + " False\n", + " 0.0\n", + " 0\n", + " 0\n", + " ...\n", + " False\n", + " False\n", + " False\n", " False\n", " False\n", " False\n", @@ -1066,7 +1117,19 @@ " False\n", " False\n", " False\n", + " \n", + " \n", + " 3632344\n", + " 310220296\n", + " 22\n", + " 22\n", + " 0\n", + " 187\n", + " 0\n", " False\n", + " 0.0\n", + " 0\n", + " 0\n", " ...\n", " False\n", " False\n", @@ -1080,99 +1143,255 @@ " False\n", " \n", " \n", - " 231568\n", - " 309796969\n", - " util_visit_tour_departure_shift_effects_start\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", + " 3632345\n", + " 310220296\n", + " 22\n", + " 23\n", + " 1\n", + " 188\n", " 0\n", + " False\n", + " 0.0\n", " 0\n", " 0\n", " ...\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", - " 231569\n", - " 309796969\n", - " util_visit_tour_duration_shift_effects_duration\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", + " 3632346\n", + " 310220296\n", + " 23\n", + " 23\n", " 0\n", + " 189\n", " 0\n", + " False\n", + " 0.0\n", " 0\n", " 0\n", " ...\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", "\n", - "

231570 rows × 192 columns

\n", + "

3632347 rows × 95 columns

\n", "" ], "text/plain": [ - " tour_id variable 0 \\\n", - "0 6812 duration 0.0 \n", - "1 6812 end 5.0 \n", - "2 6812 mode_choice_logsum 0.0 \n", - "3 6812 start 5.0 \n", - "4 6812 util_adjacent_window_exists_after_this_arrival... False \n", - "... ... ... ... \n", - "231565 309796969 util_subsequent_of_2_plus_tours_for_same_purpo... 0 \n", - "231566 309796969 util_subsequent_tour_must_start_after_previous... True \n", - "231567 309796969 util_university_student_arrive_after_22 False \n", - "231568 309796969 util_visit_tour_departure_shift_effects_start 0 \n", - "231569 309796969 util_visit_tour_duration_shift_effects_duration 0 \n", + " tour_id start end duration tdd mode_choice_logsum \\\n", + "0 1870 5 5 0 0 0 \n", + "1 1870 5 6 1 1 0 \n", + "2 1870 5 7 2 2 0 \n", + "3 1870 5 8 3 3 0 \n", + "4 1870 5 9 4 4 0 \n", + "... ... ... ... ... ... ... \n", + "3632342 310220296 21 22 1 185 0 \n", + "3632343 310220296 21 23 2 186 0 \n", + "3632344 310220296 22 22 0 187 0 \n", + "3632345 310220296 22 23 1 188 0 \n", + "3632346 310220296 23 23 0 189 0 \n", + "\n", + " util_subsequent_tour_must_start_after_previous_tour_for_this_purpose_ends \\\n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "... ... \n", + "3632342 False \n", + "3632343 False \n", + "3632344 False \n", + "3632345 False \n", + "3632346 False \n", "\n", - " 1 2 3 4 5 6 7 ... 180 181 \\\n", - "0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 ... 0.0 1.0 \n", - "1 6.0 7.0 8.0 9.0 10.0 11.0 12.0 ... 20.0 21.0 \n", - "2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 \n", - "3 5.0 5.0 5.0 5.0 5.0 5.0 5.0 ... 20.0 20.0 \n", - "4 False False False False False False False ... False False \n", - "... ... ... ... ... ... ... ... ... ... ... \n", - "231565 1 2 3 4 5 6 7 ... 0 1 \n", - "231566 True True True True True True True ... False False \n", - "231567 False False False False False False False ... False False \n", - "231568 0 0 0 0 0 0 0 ... 0 0 \n", - "231569 0 0 0 0 0 0 0 ... 0 0 \n", + " util_free_flow_round_trip_auto_time_shift_effects_duration \\\n", + "0 0.0 \n", + "1 0.0 \n", + "2 0.0 \n", + "3 0.0 \n", + "4 0.0 \n", + "... ... \n", + "3632342 0.0 \n", + "3632343 0.0 \n", + "3632344 0.0 \n", + "3632345 0.0 \n", + "3632346 0.0 \n", "\n", - " 182 183 184 185 186 187 188 189 \n", - "0 2.0 3.0 0.0 1.0 2.0 0.0 1.0 0.0 \n", - "1 22.0 23.0 21.0 22.0 23.0 22.0 23.0 23.0 \n", - "2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", - "3 20.0 20.0 21.0 21.0 21.0 22.0 22.0 23.0 \n", - "4 False False False False False False False False \n", - "... ... ... ... ... ... ... ... ... \n", - "231565 2 3 0 1 2 0 1 0 \n", - "231566 False False False False False False False False \n", - "231567 False False False False False False False False \n", - "231568 0 0 0 0 0 0 0 0 \n", - "231569 0 0 0 0 0 0 0 0 \n", + " util_shopping_tour_departure_shift_effects \\\n", + "0 0 \n", + "1 0 \n", + "2 0 \n", + "3 0 \n", + "4 0 \n", + "... ... \n", + "3632342 0 \n", + "3632343 0 \n", + "3632344 0 \n", + "3632345 0 \n", + "3632346 0 \n", "\n", - "[231570 rows x 192 columns]" + " util_shopping_tour_duration_shift_effects ... \\\n", + "0 0 ... \n", + "1 0 ... \n", + "2 0 ... \n", + "3 0 ... \n", + "4 0 ... \n", + "... ... ... \n", + "3632342 0 ... \n", + "3632343 0 ... \n", + "3632344 0 ... \n", + "3632345 0 ... \n", + "3632346 0 ... \n", + "\n", + " util_escort_tour_arrival_constants_pm_peak_4 \\\n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "... ... \n", + "3632342 False \n", + "3632343 False \n", + "3632344 False \n", + "3632345 False \n", + "3632346 False \n", + "\n", + " util_escort_tour_arrival_constants_evening \\\n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "... ... \n", + "3632342 False \n", + "3632343 False \n", + "3632344 False \n", + "3632345 False \n", + "3632346 False \n", + "\n", + " util_escort_tour_arrival_constants_late \\\n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "... ... \n", + "3632342 False \n", + "3632343 False \n", + "3632344 False \n", + "3632345 False \n", + "3632346 False \n", + "\n", + " util_escort_tour_duration_constants_0_to_1_hours \\\n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "... ... \n", + "3632342 False \n", + "3632343 False \n", + "3632344 False \n", + "3632345 False \n", + "3632346 False \n", + "\n", + " util_escort_tour_duration_constants_2_to_3_hours \\\n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "... ... \n", + "3632342 False \n", + "3632343 False \n", + "3632344 False \n", + "3632345 False \n", + "3632346 False \n", + "\n", + " util_escort_tour_duration_constants_4_to_5_hours \\\n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "... ... \n", + "3632342 False \n", + "3632343 False \n", + "3632344 False \n", + "3632345 False \n", + "3632346 False \n", + "\n", + " util_escort_tour_duration_constants_6_to_7_hours \\\n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "... ... \n", + "3632342 False \n", + "3632343 False \n", + "3632344 False \n", + "3632345 False \n", + "3632346 False \n", + "\n", + " util_escort_tour_duration_constants_8_to_10_hours \\\n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "... ... \n", + "3632342 False \n", + "3632343 False \n", + "3632344 False \n", + "3632345 False \n", + "3632346 False \n", + "\n", + " util_escort_tour_duration_constants_11_to_13_hours \\\n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "... ... \n", + "3632342 False \n", + "3632343 False \n", + "3632344 False \n", + "3632345 False \n", + "3632346 False \n", + "\n", + " util_escort_tour_duration_constants_14_to_18_hours \n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "... ... \n", + "3632342 False \n", + "3632343 False \n", + "3632344 False \n", + "3632345 False \n", + "3632346 False \n", + "\n", + "[3632347 rows x 95 columns]" ] }, "execution_count": 7, @@ -1202,13 +1421,47 @@ "name": "stderr", "output_type": "stream", "text": [ - "req_data does not request avail_ca or avail_co but it is set and being provided\n" + "problem: chosen_but_not_available has (149 issues)\n" ] }, + { + "data": { + "text/plain": [ + "(,\n", + " ┣ chosen_but_not_available: altid n example rows\n", + " ┃ 0 2 1 26680\n", + " ┃ 1 7 1 15549\n", + " ┃ 2 8 1 2727\n", + " ┃ 3 12 1 18739\n", + " ┃ 4 20 5 9872, 15764, 22362\n", + " ┃ .. ... .. ...\n", + " ┃ 144 183 12 4208, 14096, 15246\n", + " ┃ 145 184 5 1829, 8653, 13517\n", + " ┃ 146 185 10 626, 5650, 9208\n", + " ┃ 147 186 9 4563, 8308, 8746\n", + " ┃ 148 187 7 8216, 13933, 19491\n", + " ┃ \n", + " ┃ [149 rows x 3 columns])" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.doctor(repair_ch_av=\"-\")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ { "data": { "text/html": [ - "

Iteration 079 [Optimization terminated successfully]

" + "

Iteration 121 [Optimization terminated successfully]

" ], "text/plain": [ "" @@ -1220,7 +1473,7 @@ { "data": { "text/html": [ - "

Best LL = -9499.39971608494

" + "

Best LL = -103688.04725680027

" ], "text/plain": [ "" @@ -1251,70 +1504,74 @@ " \n", " \n", " value\n", + " best\n", " initvalue\n", - " nullvalue\n", " minimum\n", " maximum\n", + " nullvalue\n", " holdfast\n", - " note\n", - " best\n", + " \n", + " \n", + " param_name\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction\n", - " -0.127954\n", + " 0.126593\n", + " 0.126593\n", " -0.025700\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.127954\n", " \n", " \n", " coef_adjacent_window_exists_after_this_arrival_hour_second_plus_tour_interaction\n", - " 0.093954\n", + " -0.610258\n", + " -0.610258\n", " -0.027340\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.093954\n", " \n", " \n", " coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction\n", - " 0.253749\n", + " 0.113506\n", + " 0.113506\n", " 0.008442\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.253749\n", " \n", " \n", " coef_adjacent_window_exists_before_this_departure_hour_second_plus_tour_interaction\n", - " -0.198343\n", + " 0.386575\n", + " 0.386575\n", " -0.059300\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.198343\n", " \n", " \n", " coef_adult_with_children_in_hh_arrive_19_21\n", - " 0.309424\n", + " 0.281164\n", + " 0.281164\n", " 0.336000\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.309424\n", " \n", " \n", " ...\n", @@ -1325,135 +1582,125 @@ " ...\n", " ...\n", " ...\n", - " ...\n", " \n", " \n", " coef_subsequent_of_2_plus_tours_for_same_purpose_duration_shift_effect\n", - " -0.115107\n", + " -0.281272\n", + " -0.281272\n", " -0.173100\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.115107\n", " \n", " \n", " coef_subsequent_tour_must_start_after_previous_tour_for_this_purpose_ends\n", " -999.000000\n", " -999.000000\n", + " -999.000000\n", + " -999.0\n", + " -999.0\n", " 0.0\n", - " -25.0\n", - " 25.0\n", " 1\n", - " \n", - " -999.000000\n", " \n", " \n", " coef_university_student_arrive_after_22\n", - " -0.537299\n", + " 0.609651\n", + " 0.609651\n", " 0.546600\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.537299\n", " \n", " \n", " coef_visit_tour_departure_shift_effects\n", - " 0.169598\n", + " 0.080406\n", + " 0.080406\n", " 0.096880\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.169598\n", " \n", " \n", " coef_visit_tour_duration_shift_effects\n", - " 0.155783\n", + " 0.140532\n", + " 0.140532\n", " 0.163800\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.155783\n", " \n", " \n", "\n", - "

89 rows × 8 columns

\n", + "

89 rows × 7 columns

\n", "" ], "text/plain": [ - " value initvalue \\\n", - "coef_adjacent_window_exists_after_this_arrival_... -0.127954 -0.025700 \n", - "coef_adjacent_window_exists_after_this_arrival_... 0.093954 -0.027340 \n", - "coef_adjacent_window_exists_before_this_departu... 0.253749 0.008442 \n", - "coef_adjacent_window_exists_before_this_departu... -0.198343 -0.059300 \n", - "coef_adult_with_children_in_hh_arrive_19_21 0.309424 0.336000 \n", + " value best \\\n", + "param_name \n", + "coef_adjacent_window_exists_after_this_arrival_... 0.126593 0.126593 \n", + "coef_adjacent_window_exists_after_this_arrival_... -0.610258 -0.610258 \n", + "coef_adjacent_window_exists_before_this_departu... 0.113506 0.113506 \n", + "coef_adjacent_window_exists_before_this_departu... 0.386575 0.386575 \n", + "coef_adult_with_children_in_hh_arrive_19_21 0.281164 0.281164 \n", "... ... ... \n", - "coef_subsequent_of_2_plus_tours_for_same_purpos... -0.115107 -0.173100 \n", + "coef_subsequent_of_2_plus_tours_for_same_purpos... -0.281272 -0.281272 \n", "coef_subsequent_tour_must_start_after_previous_... -999.000000 -999.000000 \n", - "coef_university_student_arrive_after_22 -0.537299 0.546600 \n", - "coef_visit_tour_departure_shift_effects 0.169598 0.096880 \n", - "coef_visit_tour_duration_shift_effects 0.155783 0.163800 \n", + "coef_university_student_arrive_after_22 0.609651 0.609651 \n", + "coef_visit_tour_departure_shift_effects 0.080406 0.080406 \n", + "coef_visit_tour_duration_shift_effects 0.140532 0.140532 \n", "\n", - " nullvalue minimum \\\n", - "coef_adjacent_window_exists_after_this_arrival_... 0.0 -25.0 \n", - "coef_adjacent_window_exists_after_this_arrival_... 0.0 -25.0 \n", - "coef_adjacent_window_exists_before_this_departu... 0.0 -25.0 \n", - "coef_adjacent_window_exists_before_this_departu... 0.0 -25.0 \n", - "coef_adult_with_children_in_hh_arrive_19_21 0.0 -25.0 \n", - "... ... ... \n", - "coef_subsequent_of_2_plus_tours_for_same_purpos... 0.0 -25.0 \n", - "coef_subsequent_tour_must_start_after_previous_... 0.0 -25.0 \n", - "coef_university_student_arrive_after_22 0.0 -25.0 \n", - "coef_visit_tour_departure_shift_effects 0.0 -25.0 \n", - "coef_visit_tour_duration_shift_effects 0.0 -25.0 \n", + " initvalue minimum \\\n", + "param_name \n", + "coef_adjacent_window_exists_after_this_arrival_... -0.025700 -25.0 \n", + "coef_adjacent_window_exists_after_this_arrival_... -0.027340 -25.0 \n", + "coef_adjacent_window_exists_before_this_departu... 0.008442 -25.0 \n", + "coef_adjacent_window_exists_before_this_departu... -0.059300 -25.0 \n", + "coef_adult_with_children_in_hh_arrive_19_21 0.336000 -25.0 \n", + "... ... ... \n", + "coef_subsequent_of_2_plus_tours_for_same_purpos... -0.173100 -25.0 \n", + "coef_subsequent_tour_must_start_after_previous_... -999.000000 -999.0 \n", + "coef_university_student_arrive_after_22 0.546600 -25.0 \n", + "coef_visit_tour_departure_shift_effects 0.096880 -25.0 \n", + "coef_visit_tour_duration_shift_effects 0.163800 -25.0 \n", "\n", - " maximum holdfast note \\\n", - "coef_adjacent_window_exists_after_this_arrival_... 25.0 0 \n", - "coef_adjacent_window_exists_after_this_arrival_... 25.0 0 \n", - "coef_adjacent_window_exists_before_this_departu... 25.0 0 \n", - "coef_adjacent_window_exists_before_this_departu... 25.0 0 \n", - "coef_adult_with_children_in_hh_arrive_19_21 25.0 0 \n", - "... ... ... ... \n", - "coef_subsequent_of_2_plus_tours_for_same_purpos... 25.0 0 \n", - "coef_subsequent_tour_must_start_after_previous_... 25.0 1 \n", - "coef_university_student_arrive_after_22 25.0 0 \n", - "coef_visit_tour_departure_shift_effects 25.0 0 \n", - "coef_visit_tour_duration_shift_effects 25.0 0 \n", + " maximum nullvalue \\\n", + "param_name \n", + "coef_adjacent_window_exists_after_this_arrival_... 25.0 0.0 \n", + "coef_adjacent_window_exists_after_this_arrival_... 25.0 0.0 \n", + "coef_adjacent_window_exists_before_this_departu... 25.0 0.0 \n", + "coef_adjacent_window_exists_before_this_departu... 25.0 0.0 \n", + "coef_adult_with_children_in_hh_arrive_19_21 25.0 0.0 \n", + "... ... ... \n", + "coef_subsequent_of_2_plus_tours_for_same_purpos... 25.0 0.0 \n", + "coef_subsequent_tour_must_start_after_previous_... -999.0 0.0 \n", + "coef_university_student_arrive_after_22 25.0 0.0 \n", + "coef_visit_tour_departure_shift_effects 25.0 0.0 \n", + "coef_visit_tour_duration_shift_effects 25.0 0.0 \n", "\n", - " best \n", - "coef_adjacent_window_exists_after_this_arrival_... -0.127954 \n", - "coef_adjacent_window_exists_after_this_arrival_... 0.093954 \n", - "coef_adjacent_window_exists_before_this_departu... 0.253749 \n", - "coef_adjacent_window_exists_before_this_departu... -0.198343 \n", - "coef_adult_with_children_in_hh_arrive_19_21 0.309424 \n", - "... ... \n", - "coef_subsequent_of_2_plus_tours_for_same_purpos... -0.115107 \n", - "coef_subsequent_tour_must_start_after_previous_... -999.000000 \n", - "coef_university_student_arrive_after_22 -0.537299 \n", - "coef_visit_tour_departure_shift_effects 0.169598 \n", - "coef_visit_tour_duration_shift_effects 0.155783 \n", + " holdfast \n", + "param_name \n", + "coef_adjacent_window_exists_after_this_arrival_... 0 \n", + "coef_adjacent_window_exists_after_this_arrival_... 0 \n", + "coef_adjacent_window_exists_before_this_departu... 0 \n", + "coef_adjacent_window_exists_before_this_departu... 0 \n", + "coef_adult_with_children_in_hh_arrive_19_21 0 \n", + "... ... \n", + "coef_subsequent_of_2_plus_tours_for_same_purpos... 0 \n", + "coef_subsequent_tour_must_start_after_previous_... 1 \n", + "coef_university_student_arrive_after_22 0 \n", + "coef_visit_tour_departure_shift_effects 0 \n", + "coef_visit_tour_duration_shift_effects 0 \n", "\n", - "[89 rows x 8 columns]" + "[89 rows x 7 columns]" ] }, "metadata": {}, "output_type": "display_data" }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jeffnewman/opt/anaconda3/envs/garage38/lib/python3.8/site-packages/scipy/optimize/optimize.py:282: RuntimeWarning: Values in x were outside bounds during a minimize step, clipping to bounds\n", - " warnings.warn(\"Values in x were outside bounds during a \"\n" - ] - }, { "data": { "text/html": [ @@ -1467,31 +1714,31 @@ " \n", " \n", " coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction\n", - " -0.127954\n", + " 0.126593\n", " \n", " \n", " coef_adjacent_window_exists_after_this_arrival_hour_second_plus_tour_interaction\n", - " 0.093954\n", + " -0.610258\n", " \n", " \n", " coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction\n", - " 0.253749\n", + " 0.113506\n", " \n", " \n", " coef_adjacent_window_exists_before_this_departure_hour_second_plus_tour_interaction\n", - " -0.198343\n", + " 0.386575\n", " \n", " \n", " coef_adult_with_children_in_hh_arrive_19_21\n", - " 0.309424\n", + " 0.281164\n", " \n", " \n", " coef_arrival_constants_am_peak\n", - " 0.423382\n", + " -1.621626\n", " \n", " \n", " coef_arrival_constants_early\n", - " 2.912542\n", + " 0.006167\n", " \n", " \n", " coef_arrival_constants_evening\n", @@ -1499,67 +1746,67 @@ " \n", " \n", " coef_arrival_constants_late\n", - " -1.191037\n", + " -0.817500\n", " \n", " \n", " coef_arrival_constants_midday_1\n", - " 1.483808\n", + " 0.050461\n", " \n", " \n", " coef_arrival_constants_midday_2\n", - " 1.574014\n", + " 0.512472\n", " \n", " \n", " coef_arrival_constants_pm_peak_1\n", - " 1.409632\n", + " 0.637774\n", " \n", " \n", " coef_arrival_constants_pm_peak_2\n", - " 1.601585\n", + " 0.623529\n", " \n", " \n", " coef_arrival_constants_pm_peak_3\n", - " 1.110412\n", + " 0.299165\n", " \n", " \n", " coef_arrival_constants_pm_peak_4\n", - " 0.718971\n", + " 0.085991\n", " \n", " \n", " coef_departure_constants_am_peak_1\n", - " -0.462981\n", + " -0.564262\n", " \n", " \n", " coef_departure_constants_am_peak_2\n", - " 1.259376\n", + " 0.617882\n", " \n", " \n", " coef_departure_constants_am_peak_3\n", - " 1.496731\n", + " 1.077085\n", " \n", " \n", " coef_departure_constants_am_peak_4\n", - " 1.574361\n", + " 0.967759\n", " \n", " \n", " coef_departure_constants_early\n", - " -1.029511\n", + " -1.393229\n", " \n", " \n", " coef_departure_constants_evening\n", - " -1.905774\n", + " -1.688698\n", " \n", " \n", " coef_departure_constants_late\n", - " -5.863097\n", + " -4.308508\n", " \n", " \n", " coef_departure_constants_midday_1\n", - " 1.406032\n", + " 0.803175\n", " \n", " \n", " coef_departure_constants_midday_2\n", - " 0.672976\n", + " 0.328097\n", " \n", " \n", " coef_departure_constants_pm_peak\n", @@ -1567,11 +1814,11 @@ " \n", " \n", " coef_destination_in_cbd_duration_shift_effects\n", - " 0.116120\n", + " 0.110221\n", " \n", " \n", " coef_discretionary_tour_duration_lt_2_hours\n", - " -0.263935\n", + " -0.712606\n", " \n", " \n", " coef_duration_constants_0_to_1_hours\n", @@ -1579,31 +1826,31 @@ " \n", " \n", " coef_duration_constants_11_to_13_hours\n", - " -0.877324\n", + " -1.002178\n", " \n", " \n", " coef_duration_constants_14_to_18_hours\n", - " -2.821298\n", + " -1.203201\n", " \n", " \n", " coef_duration_constants_2_to_3_hours\n", - " 0.435394\n", + " -0.064944\n", " \n", " \n", " coef_duration_constants_4_to_5_hours\n", - " -0.223601\n", + " -0.717940\n", " \n", " \n", " coef_duration_constants_6_to_7_hours\n", - " -0.584059\n", + " -1.110132\n", " \n", " \n", " coef_duration_constants_8_to_10_hours\n", - " -0.527906\n", + " -0.954018\n", " \n", " \n", " coef_eat_out_tour_departure_shift_effects\n", - " 0.105657\n", + " 0.065095\n", " \n", " \n", " coef_escort_tour_arrival_constants_am_peak\n", @@ -1615,11 +1862,11 @@ " \n", " \n", " coef_escort_tour_arrival_constants_evening\n", - " -0.878853\n", + " -0.305413\n", " \n", " \n", " coef_escort_tour_arrival_constants_late\n", - " -1.254415\n", + " -0.704974\n", " \n", " \n", " coef_escort_tour_arrival_constants_midday_1\n", @@ -1647,35 +1894,35 @@ " \n", " \n", " coef_escort_tour_departure_constants_am_peak_1\n", - " 0.704309\n", + " -0.874537\n", " \n", " \n", " coef_escort_tour_departure_constants_am_peak_2\n", - " 2.276345\n", + " 1.002187\n", " \n", " \n", " coef_escort_tour_departure_constants_am_peak_3\n", - " 2.300896\n", + " 1.431663\n", " \n", " \n", " coef_escort_tour_departure_constants_am_peak_4\n", - " 0.493137\n", + " -0.076284\n", " \n", " \n", " coef_escort_tour_departure_constants_early\n", - " -0.493910\n", + " -1.237400\n", " \n", " \n", " coef_escort_tour_departure_constants_evening\n", - " -4.802269\n", + " -3.664017\n", " \n", " \n", " coef_escort_tour_departure_constants_late\n", - " -6.857486\n", + " -7.398170\n", " \n", " \n", " coef_escort_tour_departure_constants_midday_1\n", - " 0.746447\n", + " 0.185749\n", " \n", " \n", " coef_escort_tour_departure_constants_midday_2\n", @@ -1683,7 +1930,7 @@ " \n", " \n", " coef_escort_tour_departure_constants_pm_peak\n", - " -1.823360\n", + " -1.171787\n", " \n", " \n", " coef_escort_tour_duration_constants_0_to_1_hours\n", @@ -1691,138 +1938,138 @@ " \n", " \n", " coef_escort_tour_duration_constants_11_to_13_hours\n", - " -6.393148\n", + " -2.821199\n", " \n", " \n", " coef_escort_tour_duration_constants_14_to_18_hours\n", - " -9.419793\n", + " -2.493843\n", " \n", " \n", " coef_escort_tour_duration_constants_2_to_3_hours\n", - " -2.595592\n", + " -2.026673\n", " \n", " \n", " coef_escort_tour_duration_constants_4_to_5_hours\n", - " -3.522889\n", + " -2.941739\n", " \n", " \n", " coef_escort_tour_duration_constants_6_to_7_hours\n", - " -3.979277\n", + " -3.103903\n", " \n", " \n", " coef_escort_tour_duration_constants_8_to_10_hours\n", - " -5.158316\n", + " -3.097454\n", " \n", " \n", " coef_first_of_2_plus_tours_for_same_purpose_departure_shift_effect\n", - " -0.285201\n", + " -0.272458\n", " \n", " \n", " coef_free_flow_round_trip_auto_time_shift_effects_duration\n", - " 0.004992\n", + " 0.004326\n", " \n", " \n", " coef_maintenance_tour_depart_before_7\n", - " 0.041997\n", + " -0.819334\n", " \n", " \n", " coef_maintenance_tour_departure_shift_effects\n", - " -0.036636\n", + " -0.140265\n", " \n", " \n", " coef_maintenance_tour_duration_shift_effects\n", - " -0.115944\n", + " -0.068132\n", " \n", " \n", " coef_number_of_escort_tours_departure_shift_effects\n", - " 0.115214\n", + " 0.055565\n", " \n", " \n", " coef_number_of_individual_non_mandatory_tours_excluding_escort_departure_shift_effects\n", - " 0.104375\n", + " 0.054223\n", " \n", " \n", " coef_number_of_joint_tours_departure_shift_effects\n", - " 0.121920\n", + " 0.029269\n", " \n", " \n", " coef_number_of_mandatory_tours_departure_shift_effects\n", - " 0.170817\n", + " 0.031273\n", " \n", " \n", " coef_ratio_of_individual_non_mandatory_tours_to_be_scheduled_to_number_of_unscheduled_hours\n", - " 5.643619\n", + " -13.624709\n", " \n", " \n", " coef_school_child_age_16_plus_departure_shift_effects\n", - " 0.000283\n", + " 0.086050\n", " \n", " \n", " coef_school_child_age_16_plus_duration_shift_effects\n", - " 0.306122\n", + " 0.250586\n", " \n", " \n", " coef_school_child_age_under_16_departure_shift_effects\n", - " 0.110796\n", + " 0.053201\n", " \n", " \n", " coef_school_child_age_under_16_duration_shift_effects\n", - " 0.338212\n", + " 0.312477\n", " \n", " \n", " coef_school_child_under_16_arrive_after_22\n", - " -0.402410\n", + " -1.096083\n", " \n", " \n", " coef_shopping_tour_arrive_after_22\n", - " -2.545226\n", + " -0.583411\n", " \n", " \n", " coef_shopping_tour_depart_before_8\n", - " -0.787100\n", + " -1.172034\n", " \n", " \n", " coef_shopping_tour_departure_shift_effects\n", - " 0.015067\n", + " -0.061028\n", " \n", " \n", " coef_shopping_tour_duration_lt_2_hours\n", - " 0.943420\n", + " 0.405721\n", " \n", " \n", " coef_shopping_tour_duration_shift_effects\n", - " -0.075331\n", + " -0.113223\n", " \n", " \n", " coef_some_previously_scheduled_tour_begins_in_this_arrival_hour\n", - " -0.054385\n", + " -0.260255\n", " \n", " \n", " coef_some_previously_scheduled_tour_ends_in_this_departure_hour\n", - " -0.345727\n", + " -0.317129\n", " \n", " \n", " coef_subsequent_of_2_plus_tours_for_same_purpose_duration_shift_effect\n", - " -0.115107\n", + " -0.281272\n", " \n", " \n", " coef_subsequent_tour_must_start_after_previous_tour_for_this_purpose_ends\n", - " -25.000000\n", + " -999.000000\n", " \n", " \n", " coef_university_student_arrive_after_22\n", - " -0.537299\n", + " 0.609651\n", " \n", " \n", " coef_visit_tour_departure_shift_effects\n", - " 0.169598\n", + " 0.080406\n", " \n", " \n", " coef_visit_tour_duration_shift_effects\n", - " 0.155783\n", + " 0.140532\n", " \n", " \n", - "loglike-9499.39971608494d_loglike\n", + "
logloss3.8088398507438663d_logloss\n", " \n", " \n", " \n", @@ -1832,409 +2079,409 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - "
coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction0.0001143.438973e-05
coef_adjacent_window_exists_after_this_arrival_hour_second_plus_tour_interaction-0.0003853.037850e-05
coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction0.000097-6.894273e-05
coef_adjacent_window_exists_before_this_departure_hour_second_plus_tour_interaction-0.0002052.343581e-05
coef_adult_with_children_in_hh_arrive_19_210.0002946.653629e-05
coef_arrival_constants_am_peak0.0000379.439405e-07
coef_arrival_constants_early0.000111-8.901383e-06
coef_arrival_constants_evening0.0000000.000000e+00
coef_arrival_constants_late0.000194-6.165299e-05
coef_arrival_constants_midday_1-0.001155-3.871814e-05
coef_arrival_constants_midday_2-0.0007143.424832e-05
coef_arrival_constants_pm_peak_1-0.0000882.789318e-05
coef_arrival_constants_pm_peak_2-0.0003175.620495e-05
coef_arrival_constants_pm_peak_3-0.0000917.993874e-05
coef_arrival_constants_pm_peak_40.0007294.315887e-05
coef_departure_constants_am_peak_10.000352-8.495800e-05
coef_departure_constants_am_peak_2-0.000454-1.392003e-05
coef_departure_constants_am_peak_30.0002356.548727e-06
coef_departure_constants_am_peak_4-0.0003863.101496e-05
coef_departure_constants_early-0.000155-4.598593e-05
coef_departure_constants_evening0.0008867.934172e-05
coef_departure_constants_late0.000080-3.695844e-05
coef_departure_constants_midday_1-0.000777-5.887180e-05
coef_departure_constants_midday_20.0000792.120332e-05
coef_departure_constants_pm_peak0.0000000.000000e+00
coef_destination_in_cbd_duration_shift_effects0.002269-5.090224e-04
coef_discretionary_tour_duration_lt_2_hours-0.0004347.164386e-05
coef_duration_constants_0_to_1_hours0.0000000.000000e+00
coef_duration_constants_11_to_13_hours-0.000100-7.457357e-05
coef_duration_constants_14_to_18_hours-0.000201-6.196472e-06
coef_duration_constants_2_to_3_hours0.0007523.359402e-06
coef_duration_constants_4_to_5_hours0.000035-1.152395e-04
coef_duration_constants_6_to_7_hours0.0002578.557322e-05
coef_duration_constants_8_to_10_hours0.0000551.199127e-04
coef_eat_out_tour_departure_shift_effects-0.0008649.487469e-05
coef_escort_tour_arrival_constants_am_peak0.0000000.000000e+00
coef_escort_tour_arrival_constants_early0.0000000.000000e+00
coef_escort_tour_arrival_constants_evening0.000050-2.421029e-06
coef_escort_tour_arrival_constants_late-0.000165-2.218474e-05
coef_escort_tour_arrival_constants_midday_10.0000000.000000e+00
coef_escort_tour_arrival_constants_midday_20.0000000.000000e+00
coef_escort_tour_arrival_constants_pm_peak_10.0000000.000000e+00
coef_escort_tour_arrival_constants_pm_peak_20.0000000.000000e+00
coef_escort_tour_arrival_constants_pm_peak_30.0000000.000000e+00
coef_escort_tour_arrival_constants_pm_peak_40.0000000.000000e+00
coef_escort_tour_departure_constants_am_peak_10.000085-4.267869e-05
coef_escort_tour_departure_constants_am_peak_2-0.0000066.901890e-05
coef_escort_tour_departure_constants_am_peak_30.0001894.201443e-05
coef_escort_tour_departure_constants_am_peak_4-0.0003224.405139e-05
coef_escort_tour_departure_constants_early-0.0001185.739071e-05
coef_escort_tour_departure_constants_evening0.000116-1.563838e-05
coef_escort_tour_departure_constants_late-0.0000661.808622e-04
coef_escort_tour_departure_constants_midday_10.000073-5.212731e-06
coef_escort_tour_departure_constants_midday_20.0000000.000000e+00
coef_escort_tour_departure_constants_pm_peak0.000128-3.144269e-05
coef_escort_tour_duration_constants_0_to_1_hours0.0000000.000000e+00
coef_escort_tour_duration_constants_11_to_13_hours0.0004584.885945e-05
coef_escort_tour_duration_constants_14_to_18_hours-0.000124-6.674129e-06
coef_escort_tour_duration_constants_2_to_3_hours-0.0002188.004432e-05
coef_escort_tour_duration_constants_4_to_5_hours0.0000737.200311e-06
coef_escort_tour_duration_constants_6_to_7_hours0.0000929.728923e-06
coef_escort_tour_duration_constants_8_to_10_hours0.0000133.329902e-06
coef_first_of_2_plus_tours_for_same_purpose_departure_shift_effect0.0083783.750465e-05
coef_free_flow_round_trip_auto_time_shift_effects_duration-0.0392021.926232e-04
coef_maintenance_tour_depart_before_70.000197-7.804297e-06
coef_maintenance_tour_departure_shift_effects-0.0042501.482773e-04
coef_maintenance_tour_duration_shift_effects0.0011253.493923e-04
coef_number_of_escort_tours_departure_shift_effects0.0076461.304873e-05
coef_number_of_individual_non_mandatory_tours_excluding_escort_departure_shift_effects0.015415-1.378737e-05
coef_number_of_joint_tours_departure_shift_effects0.000633-9.589696e-05
coef_number_of_mandatory_tours_departure_shift_effects0.003775-4.122044e-05
coef_ratio_of_individual_non_mandatory_tours_to_be_scheduled_to_number_of_unscheduled_hours0.0000442.048882e-05
coef_school_child_age_16_plus_departure_shift_effects-0.000324-1.242593e-05
coef_school_child_age_16_plus_duration_shift_effects0.000284-1.367621e-05
coef_school_child_age_under_16_departure_shift_effects0.000075-4.089013e-05
coef_school_child_age_under_16_duration_shift_effects0.001635-2.174936e-05
coef_school_child_under_16_arrive_after_22-0.0001867.030245e-07
coef_shopping_tour_arrive_after_22-0.0000441.001740e-06
coef_shopping_tour_depart_before_8-0.0003601.716270e-05
coef_shopping_tour_departure_shift_effects0.0175473.564338e-05
coef_shopping_tour_duration_lt_2_hours-0.000129-4.343344e-05
coef_shopping_tour_duration_shift_effects0.0037181.135557e-04
coef_some_previously_scheduled_tour_begins_in_this_arrival_hour-0.0000754.711918e-06
coef_some_previously_scheduled_tour_ends_in_this_departure_hour-0.000476-5.226511e-05
coef_subsequent_of_2_plus_tours_for_same_purpose_duration_shift_effect0.0005837.117498e-05
coef_subsequent_tour_must_start_after_previous_tour_for_this_purpose_ends0.0000000.000000e+00
coef_university_student_arrive_after_22-0.000256-8.028019e-06
coef_visit_tour_departure_shift_effects-0.000785-8.601128e-05
coef_visit_tour_duration_shift_effects-0.001139-1.064345e-04
nit79nfev236njev79status0message'Optimization terminated successfully'successTrueelapsed_time0:00:18.828322method'slsqp'n_cases2490iteration_number79logloss3.8150199662991726" + "nit121nfev130njev121status0message'Optimization terminated successfully'successTrueelapsed_time0:01:35.575519method'slsqp'n_cases29669iteration_number121loglike-103688.04725680027" ], "text/plain": [ - "┣ x: coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction -0.127954\n", - "┃ coef_adjacent_window_exists_after_this_arrival_hour_second_plus_tour_interaction 0.093954\n", - "┃ coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction 0.253749\n", - "┃ coef_adjacent_window_exists_before_this_departure_hour_second_plus_tour_interaction -0.198343\n", - "┃ coef_adult_with_children_in_hh_arrive_19_21 0.309424\n", - "┃ ... \n", - "┃ coef_subsequent_of_2_plus_tours_for_same_purpose_duration_shift_effect -0.115107\n", - "┃ coef_subsequent_tour_must_start_after_previous_tour_for_this_purpose_ends -25.000000\n", - "┃ coef_university_student_arrive_after_22 -0.537299\n", - "┃ coef_visit_tour_departure_shift_effects 0.169598\n", - "┃ coef_visit_tour_duration_shift_effects 0.155783\n", + "┣ x: coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction 0.126593\n", + "┃ coef_adjacent_window_exists_after_this_arrival_hour_second_plus_tour_interaction -0.610258\n", + "┃ coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction 0.113506\n", + "┃ coef_adjacent_window_exists_before_this_departure_hour_second_plus_tour_interaction 0.386575\n", + "┃ coef_adult_with_children_in_hh_arrive_19_21 0.281164\n", + "┃ ... \n", + "┃ coef_subsequent_of_2_plus_tours_for_same_purpose_duration_shift_effect -0.281272\n", + "┃ coef_subsequent_tour_must_start_after_previous_tour_for_this_purpose_ends -999.000000\n", + "┃ coef_university_student_arrive_after_22 0.609651\n", + "┃ coef_visit_tour_departure_shift_effects 0.080406\n", + "┃ coef_visit_tour_duration_shift_effects 0.140532\n", "┃ Length: 89, dtype: float64\n", - "┣ loglike: -9499.39971608494\n", - "┣ d_loglike: coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction 0.000114\n", - "┃ coef_adjacent_window_exists_after_this_arrival_hour_second_plus_tour_interaction -0.000385\n", - "┃ coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction 0.000097\n", - "┃ coef_adjacent_window_exists_before_this_departure_hour_second_plus_tour_interaction -0.000205\n", - "┃ coef_adult_with_children_in_hh_arrive_19_21 0.000294\n", + "┣ logloss: 3.8088398507438663\n", + "┣ d_logloss: coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction 0.000034\n", + "┃ coef_adjacent_window_exists_after_this_arrival_hour_second_plus_tour_interaction 0.000030\n", + "┃ coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction -0.000069\n", + "┃ coef_adjacent_window_exists_before_this_departure_hour_second_plus_tour_interaction 0.000023\n", + "┃ coef_adult_with_children_in_hh_arrive_19_21 0.000067\n", "┃ ... \n", - "┃ coef_subsequent_of_2_plus_tours_for_same_purpose_duration_shift_effect 0.000583\n", + "┃ coef_subsequent_of_2_plus_tours_for_same_purpose_duration_shift_effect 0.000071\n", "┃ coef_subsequent_tour_must_start_after_previous_tour_for_this_purpose_ends 0.000000\n", - "┃ coef_university_student_arrive_after_22 -0.000256\n", - "┃ coef_visit_tour_departure_shift_effects -0.000785\n", - "┃ coef_visit_tour_duration_shift_effects -0.001139\n", + "┃ coef_university_student_arrive_after_22 -0.000008\n", + "┃ coef_visit_tour_departure_shift_effects -0.000086\n", + "┃ coef_visit_tour_duration_shift_effects -0.000106\n", "┃ Length: 89, dtype: float64\n", - "┣ nit: 79\n", - "┣ nfev: 236\n", - "┣ njev: 79\n", + "┣ nit: 121\n", + "┣ nfev: 130\n", + "┣ njev: 121\n", "┣ status: 0\n", "┣ message: 'Optimization terminated successfully'\n", "┣ success: True\n", - "┣ elapsed_time: datetime.timedelta(seconds=18, microseconds=828322)\n", + "┣ elapsed_time: datetime.timedelta(seconds=95, microseconds=575519)\n", "┣ method: 'slsqp'\n", - "┣ n_cases: 2490\n", - "┣ iteration_number: 79\n", - "┣ logloss: 3.8150199662991726" + "┣ n_cases: 29669\n", + "┣ iteration_number: 121\n", + "┣ loglike: -103688.04725680027" ] }, - "execution_count": 8, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "model.estimate()" + "model.estimate(maxiter=900)" ] }, { @@ -2246,830 +2493,856 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Value Std Err t Stat Signif Null Value Constrained
coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction-0.128 0.141-0.91 0.00
coef_adjacent_window_exists_after_this_arrival_hour_second_plus_tour_interaction 0.0940 0.137 0.69 0.00
coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction 0.254 0.148 1.72 0.00
coef_adjacent_window_exists_before_this_departure_hour_second_plus_tour_interaction-0.198 0.140-1.42 0.00
coef_adult_with_children_in_hh_arrive_19_21 0.309 0.136 2.27* 0.00
coef_arrival_constants_am_peak 0.423 0.303 1.40 0.00
coef_arrival_constants_early 2.91 0.429 6.78*** 0.00
coef_arrival_constants_evening 0.00 NA NA 0.00fixed value
coef_arrival_constants_late-1.19 0.133-8.96*** 0.00
coef_arrival_constants_midday_1 1.48 0.220 6.75*** 0.00
coef_arrival_constants_midday_2 1.57 0.174 9.05*** 0.00
coef_arrival_constants_pm_peak_1 1.41 0.160 8.80*** 0.00
coef_arrival_constants_pm_peak_2 1.60 0.132 12.14*** 0.00
coef_arrival_constants_pm_peak_3 1.11 0.118 9.40*** 0.00
coef_arrival_constants_pm_peak_4 0.719 0.108 6.69*** 0.00
coef_departure_constants_am_peak_1-0.463 0.384-1.21 0.00
coef_departure_constants_am_peak_2 1.26 0.276 4.56*** 0.00
coef_departure_constants_am_peak_3 1.50 0.246 6.10*** 0.00
coef_departure_constants_am_peak_4 1.57 0.223 7.06*** 0.00
coef_departure_constants_early-1.03 0.420-2.45* 0.00
coef_departure_constants_evening-1.91 0.136-14.03*** 0.00
coef_departure_constants_late-5.86 0.728-8.05*** 0.00
coef_departure_constants_midday_1 1.41 0.171 8.23*** 0.00
coef_departure_constants_midday_2 0.673 0.113 5.98*** 0.00
coef_departure_constants_pm_peak 0.00 NA NA 0.00fixed value
coef_destination_in_cbd_duration_shift_effects 0.116 0.0186 6.26*** 0.00
coef_discretionary_tour_duration_lt_2_hours-0.264 0.136-1.93 0.00
coef_duration_constants_0_to_1_hours 0.00 NA NA 0.00fixed value
coef_duration_constants_11_to_13_hours-0.877 0.352-2.49* 0.00
coef_duration_constants_14_to_18_hours-2.82 0.771-3.66*** 0.00
coef_duration_constants_2_to_3_hours 0.435 0.0972 4.48*** 0.00
coef_duration_constants_4_to_5_hours-0.224 0.139-1.60 0.00
coef_duration_constants_6_to_7_hours-0.584 0.192-3.04** 0.00
coef_duration_constants_8_to_10_hours-0.528 0.249-2.12* 0.00
coef_eat_out_tour_departure_shift_effects 0.106 0.0224 4.71*** 0.00
coef_escort_tour_arrival_constants_am_peak 0.00 NA NA 0.00fixed value
coef_escort_tour_arrival_constants_early 0.00 NA NA 0.00fixed value
coef_escort_tour_arrival_constants_evening-0.879 0.304-2.89** 0.00
coef_escort_tour_arrival_constants_late-1.25 0.579-2.17* 0.00
coef_escort_tour_arrival_constants_midday_1 0.00 NA NA 0.00fixed value
coef_escort_tour_arrival_constants_midday_2 0.00 NA NA 0.00fixed value
coef_escort_tour_arrival_constants_pm_peak_1 0.00 NA NA 0.00fixed value
coef_escort_tour_arrival_constants_pm_peak_2 0.00 NA NA 0.00fixed value
coef_escort_tour_arrival_constants_pm_peak_3 0.00 NA NA 0.00fixed value
coef_escort_tour_arrival_constants_pm_peak_4 0.00 NA NA 0.00fixed value
coef_escort_tour_departure_constants_am_peak_1 0.704 0.317 2.22* 0.00
coef_escort_tour_departure_constants_am_peak_2 2.28 0.192 11.84*** 0.00
coef_escort_tour_departure_constants_am_peak_3 2.30 0.187 12.28*** 0.00
coef_escort_tour_departure_constants_am_peak_4 0.493 0.316 1.56 0.00
coef_escort_tour_departure_constants_early-0.494 0.566-0.87 0.00
coef_escort_tour_departure_constants_evening-4.80 0.503-9.55*** 0.00
coef_escort_tour_departure_constants_late-6.86 1.10-6.23*** 0.00
coef_escort_tour_departure_constants_midday_1 0.746 0.165 4.53*** 0.00
coef_escort_tour_departure_constants_midday_2 0.00 NA NA 0.00fixed value
coef_escort_tour_departure_constants_pm_peak-1.82 0.210-8.67*** 0.00
coef_escort_tour_duration_constants_0_to_1_hours 0.00 NA NA 0.00fixed value
coef_escort_tour_duration_constants_11_to_13_hours-6.39 0.808-7.92*** 0.00
coef_escort_tour_duration_constants_14_to_18_hours-9.42 1.63-5.78*** 0.00
coef_escort_tour_duration_constants_2_to_3_hours-2.60 0.212-12.27*** 0.00
coef_escort_tour_duration_constants_4_to_5_hours-3.52 0.319-11.05*** 0.00
coef_escort_tour_duration_constants_6_to_7_hours-3.98 0.379-10.49*** 0.00
coef_escort_tour_duration_constants_8_to_10_hours-5.16 0.492-10.47*** 0.00
coef_first_of_2_plus_tours_for_same_purpose_departure_shift_effect-0.285 0.0225-12.67*** 0.00
coef_free_flow_round_trip_auto_time_shift_effects_duration 0.00499 0.000948 5.27*** 0.00
coef_maintenance_tour_depart_before_7 0.0420 0.359 0.12 0.00
coef_maintenance_tour_departure_shift_effects-0.0366 0.0193-1.90 0.00
coef_maintenance_tour_duration_shift_effects-0.116 0.0298-3.89*** 0.00
coef_number_of_escort_tours_departure_shift_effects 0.115 0.00964 11.95*** 0.00
coef_number_of_individual_non_mandatory_tours_excluding_escort_departure_shift_effects 0.104 0.00667 15.64*** 0.00
coef_number_of_joint_tours_departure_shift_effects 0.122 0.0296 4.12*** 0.00
coef_number_of_mandatory_tours_departure_shift_effects 0.171 0.0125 13.63*** 0.00
coef_ratio_of_individual_non_mandatory_tours_to_be_scheduled_to_number_of_unscheduled_hours 5.64 0.804 7.02*** 0.00
coef_school_child_age_16_plus_departure_shift_effects 0.000283 0.112 0.00 0.00
coef_school_child_age_16_plus_duration_shift_effects 0.306 0.0952 3.22** 0.00
coef_school_child_age_under_16_departure_shift_effects 0.111 0.0367 3.02** 0.00
coef_school_child_age_under_16_duration_shift_effects 0.338 0.0418 8.10*** 0.00
coef_school_child_under_16_arrive_after_22-0.402 0.480-0.84 0.00
coef_shopping_tour_arrive_after_22-2.55 1.01-2.52* 0.00
coef_shopping_tour_depart_before_8-0.787 0.254-3.10** 0.00
coef_shopping_tour_departure_shift_effects 0.0151 0.0182 0.83 0.00
coef_shopping_tour_duration_lt_2_hours 0.943 0.144 6.55*** 0.00
coef_shopping_tour_duration_shift_effects-0.0753 0.0296-2.55* 0.00
coef_some_previously_scheduled_tour_begins_in_this_arrival_hour-0.0544 0.0946-0.58 0.00
coef_some_previously_scheduled_tour_ends_in_this_departure_hour-0.346 0.0763-4.53*** 0.00
coef_subsequent_of_2_plus_tours_for_same_purpose_duration_shift_effect-0.115 0.0570-2.02* 0.00
coef_subsequent_tour_must_start_after_previous_tour_for_this_purpose_ends-999. NA NA 0.00fixed value
coef_university_student_arrive_after_22-0.537 0.853-0.63 0.00
coef_visit_tour_departure_shift_effects 0.170 0.0312 5.44*** 0.00
coef_visit_tour_duration_shift_effects 0.156 0.0369 4.22*** 0.00
" + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ValueStd Errt StatSignifNull ValueConstrained
Parameter      
coef_adjacent_window_exists_after_this_arrival_hour_first_tour_interaction 0.127 0.0994 1.27 0.00
coef_adjacent_window_exists_after_this_arrival_hour_second_plus_tour_interaction-0.610 0.0968-6.30*** 0.00
coef_adjacent_window_exists_before_this_departure_hour_first_tour_interaction 0.114 0.0850 1.34 0.00
coef_adjacent_window_exists_before_this_departure_hour_second_plus_tour_interaction 0.387 0.0868 4.45*** 0.00
coef_adult_with_children_in_hh_arrive_19_21 0.281 0.0376 7.47*** 0.00
coef_arrival_constants_am_peak-1.62 0.104-15.66*** 0.00
coef_arrival_constants_early 0.00617 0.146 0.04 0.00
coef_arrival_constants_evening 0.00 0.00 NA 0.00fixed value
coef_arrival_constants_late-0.817 0.0418-19.58*** 0.00
coef_arrival_constants_midday_1 0.0505 0.0730 0.69 0.00
coef_arrival_constants_midday_2 0.512 0.0562 9.12*** 0.00
coef_arrival_constants_pm_peak_1 0.638 0.0500 12.74*** 0.00
coef_arrival_constants_pm_peak_2 0.624 0.0421 14.82*** 0.00
coef_arrival_constants_pm_peak_3 0.299 0.0377 7.95*** 0.00
coef_arrival_constants_pm_peak_4 0.0860 0.0339 2.53* 0.00
coef_departure_constants_am_peak_1-0.564 0.115-4.91*** 0.00
coef_departure_constants_am_peak_2 0.618 0.0862 7.17*** 0.00
coef_departure_constants_am_peak_3 1.08 0.0750 14.36*** 0.00
coef_departure_constants_am_peak_4 0.968 0.0684 14.16*** 0.00
coef_departure_constants_early-1.39 0.133-10.46*** 0.00
coef_departure_constants_evening-1.69 0.0406-41.61*** 0.00
coef_departure_constants_late-4.31 0.172-25.06*** 0.00
coef_departure_constants_midday_1 0.803 0.0524 15.33*** 0.00
coef_departure_constants_midday_2 0.328 0.0342 9.58*** 0.00
coef_departure_constants_pm_peak 0.00 0.00 NA 0.00fixed value
coef_destination_in_cbd_duration_shift_effects 0.110 0.00846 13.02*** 0.00
coef_discretionary_tour_duration_lt_2_hours-0.713 0.0444-16.04*** 0.00
coef_duration_constants_0_to_1_hours 0.00 0.00 NA 0.00fixed value
coef_duration_constants_11_to_13_hours-1.00 0.115-8.70*** 0.00
coef_duration_constants_14_to_18_hours-1.20 0.192-6.28*** 0.00
coef_duration_constants_2_to_3_hours-0.0649 0.0325-2.00* 0.00
coef_duration_constants_4_to_5_hours-0.718 0.0457-15.71*** 0.00
coef_duration_constants_6_to_7_hours-1.11 0.0630-17.62*** 0.00
coef_duration_constants_8_to_10_hours-0.954 0.0817-11.68*** 0.00
coef_eat_out_tour_departure_shift_effects 0.0651 0.00756 8.61*** 0.00
coef_escort_tour_arrival_constants_am_peak 0.00 0.00 NA 0.00fixed value
coef_escort_tour_arrival_constants_early 0.00 0.00 NA 0.00fixed value
coef_escort_tour_arrival_constants_evening-0.305 0.0678-4.51*** 0.00
coef_escort_tour_arrival_constants_late-0.705 0.132-5.34*** 0.00
coef_escort_tour_arrival_constants_midday_1 0.00 0.00 NA 0.00fixed value
coef_escort_tour_arrival_constants_midday_2 0.00 0.00 NA 0.00fixed value
coef_escort_tour_arrival_constants_pm_peak_1 0.00 0.00 NA 0.00fixed value
coef_escort_tour_arrival_constants_pm_peak_2 0.00 0.00 NA 0.00fixed value
coef_escort_tour_arrival_constants_pm_peak_3 0.00 0.00 NA 0.00fixed value
coef_escort_tour_arrival_constants_pm_peak_4 0.00 0.00 NA 0.00fixed value
coef_escort_tour_departure_constants_am_peak_1-0.875 0.0968-9.04*** 0.00
coef_escort_tour_departure_constants_am_peak_2 1.00 0.0627 15.99*** 0.00
coef_escort_tour_departure_constants_am_peak_3 1.43 0.0560 25.58*** 0.00
coef_escort_tour_departure_constants_am_peak_4-0.0763 0.0774-0.99 0.00
coef_escort_tour_departure_constants_early-1.24 0.114-10.89*** 0.00
coef_escort_tour_departure_constants_evening-3.66 0.115-31.78*** 0.00
coef_escort_tour_departure_constants_late-7.40 0.594-12.45*** 0.00
coef_escort_tour_departure_constants_midday_1 0.186 0.0464 4.00*** 0.00
coef_escort_tour_departure_constants_midday_2 0.00 0.00 NA 0.00fixed value
coef_escort_tour_departure_constants_pm_peak-1.17 0.0525-22.33*** 0.00
coef_escort_tour_duration_constants_0_to_1_hours 0.00 0.00 NA 0.00fixed value
coef_escort_tour_duration_constants_11_to_13_hours-2.82 0.160-17.67*** 0.00
coef_escort_tour_duration_constants_14_to_18_hours-2.49 0.263-9.48*** 0.00
coef_escort_tour_duration_constants_2_to_3_hours-2.03 0.0487-41.65*** 0.00
coef_escort_tour_duration_constants_4_to_5_hours-2.94 0.0862-34.13*** 0.00
coef_escort_tour_duration_constants_6_to_7_hours-3.10 0.108-28.63*** 0.00
coef_escort_tour_duration_constants_8_to_10_hours-3.10 0.116-26.68*** 0.00
coef_first_of_2_plus_tours_for_same_purpose_departure_shift_effect-0.272 0.00757-36.01*** 0.00
coef_free_flow_round_trip_auto_time_shift_effects_duration 0.00433 0.000116 37.30*** 0.00
coef_maintenance_tour_depart_before_7-0.819 0.121-6.78*** 0.00
coef_maintenance_tour_departure_shift_effects-0.140 0.00739-18.98*** 0.00
coef_maintenance_tour_duration_shift_effects-0.0681 0.00931-7.32*** 0.00
coef_number_of_escort_tours_departure_shift_effects 0.0556 0.00378 14.70*** 0.00
coef_number_of_individual_non_mandatory_tours_excluding_escort_departure_shift_effects 0.0542 0.00268 20.25*** 0.00
coef_number_of_joint_tours_departure_shift_effects 0.0293 0.00871 3.36*** 0.00
coef_number_of_mandatory_tours_departure_shift_effects 0.0313 0.00474 6.60*** 0.00
coef_ratio_of_individual_non_mandatory_tours_to_be_scheduled_to_number_of_unscheduled_hours-13.6 0.746-18.26*** 0.00
coef_school_child_age_16_plus_departure_shift_effects 0.0860 0.0191 4.51*** 0.00
coef_school_child_age_16_plus_duration_shift_effects 0.251 0.0205 12.25*** 0.00
coef_school_child_age_under_16_departure_shift_effects 0.0532 0.00949 5.60*** 0.00
coef_school_child_age_under_16_duration_shift_effects 0.312 0.0106 29.41*** 0.00
coef_school_child_under_16_arrive_after_22-1.10 0.170-6.44*** 0.00
coef_shopping_tour_arrive_after_22-0.583 0.148-3.95*** 0.00
coef_shopping_tour_depart_before_8-1.17 0.0899-13.03*** 0.00
coef_shopping_tour_departure_shift_effects-0.0610 0.00644-9.48*** 0.00
coef_shopping_tour_duration_lt_2_hours 0.406 0.0459 8.83*** 0.00
coef_shopping_tour_duration_shift_effects-0.113 0.00985-11.49*** 0.00
coef_some_previously_scheduled_tour_begins_in_this_arrival_hour-0.260 0.0337-7.71*** 0.00
coef_some_previously_scheduled_tour_ends_in_this_departure_hour-0.317 0.0252-12.58*** 0.00
coef_subsequent_of_2_plus_tours_for_same_purpose_duration_shift_effect-0.281 0.0193-14.55*** 0.00
coef_subsequent_tour_must_start_after_previous_tour_for_this_purpose_ends-999. 0.00 NA 0.00fixed value
coef_university_student_arrive_after_22 0.610 0.171 3.57*** 0.00
coef_visit_tour_departure_shift_effects 0.0804 0.00979 8.21*** 0.00
coef_visit_tour_duration_shift_effects 0.141 0.0115 12.20*** 0.00
\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 9, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -3090,7 +3363,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ @@ -3111,20 +3384,9 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "model.to_xlsx(\n", " result_dir/f\"{modelname}_model_estimation.xlsx\", \n", @@ -3143,7 +3405,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -3188,19 +3450,19 @@ " \n", " 2\n", " coef_free_flow_round_trip_auto_time_shift_effe...\n", - " 0.004992\n", + " 0.004326\n", " F\n", " \n", " \n", " 3\n", " coef_shopping_tour_departure_shift_effects\n", - " 0.015067\n", + " -0.061028\n", " F\n", " \n", " \n", " 4\n", " coef_shopping_tour_duration_shift_effects\n", - " -0.075331\n", + " -0.113223\n", " F\n", " \n", " \n", @@ -3212,31 +3474,31 @@ " \n", " 85\n", " coef_escort_tour_duration_constants_4_to_5_hours\n", - " -3.522889\n", + " -2.941739\n", " F\n", " \n", " \n", " 86\n", " coef_escort_tour_duration_constants_6_to_7_hours\n", - " -3.979277\n", + " -3.103903\n", " F\n", " \n", " \n", " 87\n", " coef_escort_tour_duration_constants_8_to_10_hours\n", - " -5.158316\n", + " -3.097454\n", " F\n", " \n", " \n", " 88\n", " coef_escort_tour_duration_constants_11_to_13_h...\n", - " -6.393148\n", + " -2.821199\n", " F\n", " \n", " \n", " 89\n", " coef_escort_tour_duration_constants_14_to_18_h...\n", - " -9.419793\n", + " -2.493843\n", " F\n", " \n", " \n", @@ -3248,20 +3510,20 @@ " coefficient_name value constrain\n", "0 coef_dummy 1.000000 T\n", "1 coef_subsequent_tour_must_start_after_previous... -999.000000 T\n", - "2 coef_free_flow_round_trip_auto_time_shift_effe... 0.004992 F\n", - "3 coef_shopping_tour_departure_shift_effects 0.015067 F\n", - "4 coef_shopping_tour_duration_shift_effects -0.075331 F\n", + "2 coef_free_flow_round_trip_auto_time_shift_effe... 0.004326 F\n", + "3 coef_shopping_tour_departure_shift_effects -0.061028 F\n", + "4 coef_shopping_tour_duration_shift_effects -0.113223 F\n", ".. ... ... ...\n", - "85 coef_escort_tour_duration_constants_4_to_5_hours -3.522889 F\n", - "86 coef_escort_tour_duration_constants_6_to_7_hours -3.979277 F\n", - "87 coef_escort_tour_duration_constants_8_to_10_hours -5.158316 F\n", - "88 coef_escort_tour_duration_constants_11_to_13_h... -6.393148 F\n", - "89 coef_escort_tour_duration_constants_14_to_18_h... -9.419793 F\n", + "85 coef_escort_tour_duration_constants_4_to_5_hours -2.941739 F\n", + "86 coef_escort_tour_duration_constants_6_to_7_hours -3.103903 F\n", + "87 coef_escort_tour_duration_constants_8_to_10_hours -3.097454 F\n", + "88 coef_escort_tour_duration_constants_11_to_13_h... -2.821199 F\n", + "89 coef_escort_tour_duration_constants_14_to_18_h... -2.493843 F\n", "\n", "[90 rows x 3 columns]" ] }, - "execution_count": 12, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -3278,7 +3540,7 @@ "toc_visible": true }, "kernelspec": { - "display_name": "Python 3", + "display_name": "ESTER", "language": "python", "name": "python3" }, @@ -3292,7 +3554,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.10.15" }, "toc": { "base_numbering": 1, diff --git a/activitysim/examples/example_estimation/notebooks/17_tour_mode_choice.ipynb b/activitysim/examples/example_estimation/notebooks/17_tour_mode_choice.ipynb index e502d50ff..535c1bedb 100644 --- a/activitysim/examples/example_estimation/notebooks/17_tour_mode_choice.ipynb +++ b/activitysim/examples/example_estimation/notebooks/17_tour_mode_choice.ipynb @@ -31,30 +31,128 @@ "height": 34 }, "colab_type": "code", + "execution": { + "iopub.execute_input": "2025-06-26T02:18:53.757761Z", + "iopub.status.busy": "2025-06-26T02:18:53.757352Z", + "iopub.status.idle": "2025-06-26T02:18:55.343119Z", + "shell.execute_reply": "2025-06-26T02:18:55.342813Z", + "shell.execute_reply.started": "2025-06-26T02:18:53.757721Z" + }, "id": "s53VwlPwtNnr", "outputId": "d1208b7a-c1f2-4b0b-c439-bf312fe12be0" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "JAX not found. Some functionality will be unavailable.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "OMP: Info #276: omp_set_nested routine deprecated, please use omp_set_max_active_levels instead.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'larch': '6.0.41',\n", + " 'sharrow': '2.13.1.dev2+g065e1fe',\n", + " 'numpy': '1.24.4',\n", + " 'pandas': '2.3.0',\n", + " 'xarray': '2025.4.0',\n", + " 'numba': '0.60.0',\n", + " 'jax': 'not installed'}" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "import os\n", - "import larch # !conda install larch -c conda-forge # for estimation\n", - "import pandas as pd" + "import larch as lx\n", + "import pandas as pd\n", + "\n", + "lx.versions()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We'll work in our `test` directory, where ActivitySim has saved the estimation data bundles." + "For this demo, we will assume that you have already run ActivitySim in estimation\n", + "mode, and saved the required estimation data bundles (EDB's) to disk. See\n", + "the [first notebook](./01_estimation_mode.ipynb) for details. The following module\n", + "will run a script to set everything up if the example data is not already available." ] }, { "cell_type": "code", "execution_count": 2, + "metadata": { + "execution": { + "iopub.execute_input": "2025-06-26T02:18:55.343775Z", + "iopub.status.busy": "2025-06-26T02:18:55.343576Z", + "iopub.status.idle": "2025-06-26T02:18:55.594289Z", + "shell.execute_reply": "2025-06-26T02:18:55.593986Z", + "shell.execute_reply.started": "2025-06-26T02:18:55.343766Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "EDB directory already populated.\n" + ] + }, + { + "data": { + "text/plain": [ + "PosixPath('test-estimation-data/activitysim-prototype-mtc-extended')" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from est_mode_setup import prepare, backup\n", + "\n", + "prepare()" + ] + }, + { + "cell_type": "markdown", "metadata": {}, + "source": [ + "In this demo notebook, we will (later) edit some model files. But for demo purposes, we want to\n", + "make sure we are starting from the \"original\" files, so we'll check that now. For actual \n", + "applications, this step would not be necessary." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "execution": { + "iopub.execute_input": "2025-06-26T02:18:55.594903Z", + "iopub.status.busy": "2025-06-26T02:18:55.594763Z", + "iopub.status.idle": "2025-06-26T02:18:55.597557Z", + "shell.execute_reply": "2025-06-26T02:18:55.597315Z", + "shell.execute_reply.started": "2025-06-26T02:18:55.594892Z" + } + }, "outputs": [], "source": [ - "os.chdir('test')" + "backup(\"output-est-mode/estimation_data_bundle/tour_mode_choice/tour_mode_choice_coefficients.csv\")\n", + "backup(\"output-est-mode/estimation_data_bundle/tour_mode_choice/tour_mode_choice_coefficients_template.csv\")\n", + "backup(\"output-est-mode/estimation_data_bundle/tour_mode_choice/tour_mode_choice_SPEC.csv\")" ] }, { @@ -66,14 +164,38 @@ }, { "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], + "execution_count": 4, + "metadata": { + "execution": { + "iopub.execute_input": "2025-06-26T02:18:55.599005Z", + "iopub.status.busy": "2025-06-26T02:18:55.598789Z", + "iopub.status.idle": "2025-06-26T02:19:10.986768Z", + "shell.execute_reply": "2025-06-26T02:19:10.986372Z", + "shell.execute_reply.started": "2025-06-26T02:18:55.598996Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "loading from output-est-mode/estimation_data_bundle/tour_mode_choice/tour_mode_choice_coefficients.csv\n", + "loading from output-est-mode/estimation_data_bundle/tour_mode_choice/tour_mode_choice_coefficients_template.csv\n", + "loading spec from output-est-mode/estimation_data_bundle/tour_mode_choice/tour_mode_choice_SPEC.csv\n", + "loading from output-est-mode/estimation_data_bundle/tour_mode_choice/tour_mode_choice_values_combined.parquet\n" + ] + } + ], "source": [ "modelname = \"tour_mode_choice\"\n", "\n", "from activitysim.estimation.larch import component_model\n", - "model, data = component_model(modelname, return_data=True)" + "\n", + "model, data = component_model(\n", + " modelname,\n", + " edb_directory=f\"output-est-mode/estimation_data_bundle/{modelname}/\",\n", + " return_data=True,\n", + ")" ] }, { @@ -86,17 +208,48 @@ }, { "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], + "execution_count": 5, + "metadata": { + "execution": { + "iopub.execute_input": "2025-06-26T02:19:10.987338Z", + "iopub.status.busy": "2025-06-26T02:19:10.987239Z", + "iopub.status.idle": "2025-06-26T02:19:12.247678Z", + "shell.execute_reply": "2025-06-26T02:19:12.247318Z", + "shell.execute_reply.started": "2025-06-26T02:19:10.987328Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "loading from output-est-mode/estimation_data_bundle/atwork_subtour_mode_choice/tour_mode_choice_coefficients.csv\n", + "loading from output-est-mode/estimation_data_bundle/atwork_subtour_mode_choice/atwork_subtour_mode_choice_coefficients_template.csv\n", + "loading spec from output-est-mode/estimation_data_bundle/atwork_subtour_mode_choice/atwork_subtour_mode_choice_SPEC.csv\n", + "loading from output-est-mode/estimation_data_bundle/atwork_subtour_mode_choice/atwork_subtour_mode_choice_values_combined.parquet\n" + ] + } + ], "source": [ - "model2, data2 = component_model(\"atwork_subtour_mode_choice\", return_data=True)" + "model2, data2 = component_model(\n", + " \"atwork_subtour_mode_choice\", \n", + " edb_directory=\"output-est-mode/estimation_data_bundle/atwork_subtour_mode_choice\",\n", + " return_data=True,\n", + " )" ] }, { "cell_type": "code", - "execution_count": 5, - "metadata": {}, + "execution_count": 6, + "metadata": { + "execution": { + "iopub.execute_input": "2025-06-26T02:19:12.248184Z", + "iopub.status.busy": "2025-06-26T02:19:12.248080Z", + "iopub.status.idle": "2025-06-26T02:19:14.272297Z", + "shell.execute_reply": "2025-06-26T02:19:14.271908Z", + "shell.execute_reply.started": "2025-06-26T02:19:12.248174Z" + } + }, "outputs": [], "source": [ "model.extend(model2)" @@ -120,8 +273,16 @@ }, { "cell_type": "code", - "execution_count": 6, - "metadata": {}, + "execution_count": 7, + "metadata": { + "execution": { + "iopub.execute_input": "2025-06-26T02:19:14.272784Z", + "iopub.status.busy": "2025-06-26T02:19:14.272698Z", + "iopub.status.idle": "2025-06-26T02:19:14.277447Z", + "shell.execute_reply": "2025-06-26T02:19:14.277183Z", + "shell.execute_reply.started": "2025-06-26T02:19:14.272775Z" + } + }, "outputs": [ { "data": { @@ -185,16 +346,6 @@ " ...\n", " \n", " \n", - " walk_transit_CBD_ASC_atwork\n", - " 0.564\n", - " F\n", - " \n", - " \n", - " drive_transit_CBD_ASC_eatout_escort_othdiscr_othmaint_shopping_social\n", - " 0.525\n", - " F\n", - " \n", - " \n", " drive_transit_CBD_ASC_school_univ\n", " 0.672\n", " F\n", @@ -209,9 +360,19 @@ " 0.564\n", " F\n", " \n", + " \n", + " coef_test_eatout_escort_othdiscr_othmaint_shopping_social_work_atwork\n", + " 0.000\n", + " F\n", + " \n", + " \n", + " coef_test_school_univ\n", + " 0.000\n", + " F\n", + " \n", " \n", "\n", - "

307 rows × 2 columns

\n", + "

309 rows × 2 columns

\n", "" ], "text/plain": [ @@ -223,16 +384,16 @@ "coef_nest_AUTO_DRIVEALONE 0.350 T\n", "coef_nest_AUTO_SHAREDRIDE2 0.350 T\n", "... ... ...\n", - "walk_transit_CBD_ASC_atwork 0.564 F\n", - "drive_transit_CBD_ASC_eatout_escort_othdiscr_ot... 0.525 F\n", "drive_transit_CBD_ASC_school_univ 0.672 F\n", "drive_transit_CBD_ASC_work 1.100 F\n", "drive_transit_CBD_ASC_atwork 0.564 F\n", + "coef_test_eatout_escort_othdiscr_othmaint_shopp... 0.000 F\n", + "coef_test_school_univ 0.000 F\n", "\n", - "[307 rows x 2 columns]" + "[309 rows x 2 columns]" ] }, - "execution_count": 6, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -250,8 +411,16 @@ }, { "cell_type": "code", - "execution_count": 7, - "metadata": {}, + "execution_count": 8, + "metadata": { + "execution": { + "iopub.execute_input": "2025-06-26T02:19:14.277824Z", + "iopub.status.busy": "2025-06-26T02:19:14.277744Z", + "iopub.status.idle": "2025-06-26T02:19:14.284481Z", + "shell.execute_reply": "2025-06-26T02:19:14.284213Z", + "shell.execute_reply.started": "2025-06-26T02:19:14.277816Z" + } + }, "outputs": [ { "data": { @@ -443,30 +612,6 @@ " ...\n", " \n", " \n", - " 310\n", - " util_Drive_to_Transit_dest_CBD\n", - " Drive to Transit dest CBD\n", - " @df.destination_in_cbd\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " ...\n", - " NaN\n", - " NaN\n", - " drive_transit_CBD_ASC\n", - " drive_transit_CBD_ASC\n", - " drive_transit_CBD_ASC\n", - " drive_transit_CBD_ASC\n", - " drive_transit_CBD_ASC\n", - " NaN\n", - " NaN\n", - " NaN\n", - " \n", - " \n", " 311\n", " util_Drive_to_Transit_distance_penalty\n", " Drive to Transit - distance penalty\n", @@ -562,9 +707,33 @@ " NaN\n", " NaN\n", " \n", + " \n", + " 315\n", + " util_test\n", + " Drive alone not available for escort tours\n", + " @1\n", + " coef_test\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " ...\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " \n", " \n", "\n", - "

315 rows × 24 columns

\n", + "

316 rows × 24 columns

\n", "" ], "text/plain": [ @@ -575,11 +744,11 @@ "3 util_DRIVEALONEFREE_Unavailable_for_joint_tours \n", "4 util_DRIVEALONEFREE_Unavailable_if_didnt_drive... \n", ".. ... \n", - "310 util_Drive_to_Transit_dest_CBD \n", "311 util_Drive_to_Transit_distance_penalty \n", "312 util_Walk_not_available_for_long_distances \n", "313 util_Bike_not_available_for_long_distances \n", "314 util_Drive_alone_not_available_for_escort_tours \n", + "315 util_test \n", "\n", " Description \\\n", "0 DRIVEALONEFREE - Unavailable \n", @@ -588,11 +757,11 @@ "3 DRIVEALONEFREE - Unavailable for joint tours \n", "4 DRIVEALONEFREE - Unavailable if didn't drive t... \n", ".. ... \n", - "310 Drive to Transit dest CBD \n", "311 Drive to Transit - distance penalty \n", "312 Walk not available for long distances \n", "313 Bike not available for long distances \n", "314 Drive alone not available for escort tours \n", + "315 Drive alone not available for escort tours \n", "\n", " Expression DRIVEALONEFREE \\\n", "0 sov_available == False -999 \n", @@ -601,11 +770,11 @@ "3 is_joint == True -999 \n", "4 is_atwork_subtour & ~work_tour_is_SOV -999 \n", ".. ... ... \n", - "310 @df.destination_in_cbd NaN \n", "311 @drvtrn_distpen_0_multiplier * (1-od_skims['DI... NaN \n", "312 @od_skims.max('DISTWALK') > 3 NaN \n", "313 @od_skims.max('DISTBIKE') > 8 NaN \n", "314 is_escort -999 \n", + "315 @1 coef_test \n", "\n", " DRIVEALONEPAY SHARED2FREE SHARED2PAY SHARED3FREE SHARED3PAY WALK ... \\\n", "0 NaN NaN NaN NaN NaN NaN ... \n", @@ -614,37 +783,24 @@ "3 NaN NaN NaN NaN NaN NaN ... \n", "4 NaN NaN NaN NaN NaN NaN ... \n", ".. ... ... ... ... ... ... ... \n", - "310 NaN NaN NaN NaN NaN NaN ... \n", "311 NaN NaN NaN NaN NaN NaN ... \n", "312 NaN NaN NaN NaN NaN -999 ... \n", "313 NaN NaN NaN NaN NaN NaN ... \n", "314 -999 NaN NaN NaN NaN NaN ... \n", + "315 NaN NaN NaN NaN NaN NaN ... \n", "\n", - " WALK_HVY WALK_COM DRIVE_LOC DRIVE_LRF \\\n", - "0 NaN NaN NaN NaN \n", - "1 NaN NaN NaN NaN \n", - "2 NaN NaN NaN NaN \n", - "3 NaN NaN NaN NaN \n", - "4 NaN NaN NaN NaN \n", - ".. ... ... ... ... \n", - "310 NaN NaN drive_transit_CBD_ASC drive_transit_CBD_ASC \n", - "311 NaN NaN coef_ivt coef_ivt \n", - "312 NaN NaN NaN NaN \n", - "313 NaN NaN NaN NaN \n", - "314 NaN NaN NaN NaN \n", - "\n", - " DRIVE_EXP DRIVE_HVY DRIVE_COM TAXI \\\n", - "0 NaN NaN NaN NaN \n", - "1 NaN NaN NaN NaN \n", - "2 NaN NaN NaN NaN \n", - "3 NaN NaN NaN NaN \n", - "4 NaN NaN NaN NaN \n", - ".. ... ... ... ... \n", - "310 drive_transit_CBD_ASC drive_transit_CBD_ASC drive_transit_CBD_ASC NaN \n", - "311 coef_ivt coef_ivt coef_ivt NaN \n", - "312 NaN NaN NaN NaN \n", - "313 NaN NaN NaN NaN \n", - "314 NaN NaN NaN NaN \n", + " WALK_HVY WALK_COM DRIVE_LOC DRIVE_LRF DRIVE_EXP DRIVE_HVY DRIVE_COM TAXI \\\n", + "0 NaN NaN NaN NaN NaN NaN NaN NaN \n", + "1 NaN NaN NaN NaN NaN NaN NaN NaN \n", + "2 NaN NaN NaN NaN NaN NaN NaN NaN \n", + "3 NaN NaN NaN NaN NaN NaN NaN NaN \n", + "4 NaN NaN NaN NaN NaN NaN NaN NaN \n", + ".. ... ... ... ... ... ... ... ... \n", + "311 NaN NaN coef_ivt coef_ivt coef_ivt coef_ivt coef_ivt NaN \n", + "312 NaN NaN NaN NaN NaN NaN NaN NaN \n", + "313 NaN NaN NaN NaN NaN NaN NaN NaN \n", + "314 NaN NaN NaN NaN NaN NaN NaN NaN \n", + "315 NaN NaN NaN NaN NaN NaN NaN NaN \n", "\n", " TNC_SINGLE TNC_SHARED \n", "0 NaN NaN \n", @@ -653,16 +809,16 @@ "3 NaN NaN \n", "4 NaN NaN \n", ".. ... ... \n", - "310 NaN NaN \n", "311 NaN NaN \n", "312 NaN NaN \n", "313 NaN NaN \n", "314 NaN NaN \n", + "315 NaN NaN \n", "\n", - "[315 rows x 24 columns]" + "[316 rows x 24 columns]" ] }, - "execution_count": 7, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -680,8 +836,16 @@ }, { "cell_type": "code", - "execution_count": 8, - "metadata": {}, + "execution_count": 9, + "metadata": { + "execution": { + "iopub.execute_input": "2025-06-26T02:19:14.284943Z", + "iopub.status.busy": "2025-06-26T02:19:14.284856Z", + "iopub.status.idle": "2025-06-26T02:19:14.298921Z", + "shell.execute_reply": "2025-06-26T02:19:14.298594Z", + "shell.execute_reply.started": "2025-06-26T02:19:14.284935Z" + } + }, "outputs": [ { "data": { @@ -715,6 +879,7 @@ " util_DRIVEALONEFREE_Terminal_time\n", " util_DRIVEALONEFREE_Operating_cost\n", " ...\n", + " walk_lrf_available\n", " walk_ferry_available\n", " drive_local_available\n", " drive_commuter_available\n", @@ -723,7 +888,6 @@ " drive_lrf_available\n", " drive_ferry_available\n", " destination_in_cbd\n", - " tour_id.1\n", " override_choice_code\n", " \n", " \n", @@ -753,91 +917,92 @@ " \n", " \n", " \n", - " 6812\n", - " WALK\n", - " WALK\n", + " 1870\n", + " SHARED3FREE\n", + " SHARED3FREE\n", " 0.0\n", - " 1.0\n", " 0.0\n", " 0.0\n", " 0.0\n", - " 5.480000\n", - " 15.45016\n", - " 2.156258\n", + " 0.0\n", + " 20.830002\n", + " 21.26572\n", + " 6.293324\n", " ...\n", " False\n", " False\n", + " True\n", + " True\n", " False\n", - " False\n", - " False\n", + " True\n", " False\n", " False\n", " 1\n", - " 6812\n", - " 7\n", + " 5\n", " \n", " \n", - " 8110\n", - " WALK\n", - " WALK\n", + " 20468\n", + " SHARED3FREE\n", + " TNC_SINGLE\n", " 0.0\n", - " 1.0\n", " 0.0\n", " 0.0\n", " 0.0\n", - " 8.860000\n", - " 34.19784\n", - " 17.722496\n", + " 0.0\n", + " 9.440000\n", + " 13.24624\n", + " 14.917349\n", " ...\n", " False\n", " False\n", + " True\n", + " True\n", " False\n", - " False\n", - " False\n", + " True\n", " False\n", " False\n", " 0\n", - " 8110\n", - " 7\n", + " 20\n", " \n", " \n", - " 11013\n", - " DRIVEALONEFREE\n", - " DRIVEALONEFREE\n", + " 27055\n", + " SHARED3FREE\n", + " SHARED3FREE\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", - " 20.689999\n", - " 18.17320\n", - " 15.097005\n", + " 13.160000\n", + " 8.53068\n", + " 25.088453\n", " ...\n", " False\n", + " False\n", " True\n", " True\n", " False\n", " True\n", " False\n", " False\n", - " 1\n", - " 11013\n", - " 1\n", + " 0\n", + " 5\n", " \n", " \n", - " 11016\n", - " DRIVEALONEFREE\n", - " DRIVEALONEFREE\n", + " 38877\n", + " SHARED2FREE\n", + " SHARED3FREE\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", - " 14.710000\n", - " 12.85052\n", - " 10.971117\n", + " 6.730000\n", + " 11.04132\n", + " 11.040045\n", " ...\n", " False\n", + " False\n", " True\n", " True\n", " False\n", @@ -845,32 +1010,31 @@ " False\n", " False\n", " 0\n", - " 11016\n", - " 1\n", + " 5\n", " \n", " \n", - " 15403\n", - " DRIVEALONEFREE\n", - " DRIVEALONEFREE\n", + " 38904\n", + " SHARED2FREE\n", + " SHARED2FREE\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", - " 15.160000\n", - " 10.64808\n", - " 26.092745\n", + " 22.410000\n", + " 17.29320\n", + " 46.920191\n", " ...\n", + " True\n", " False\n", " True\n", " True\n", " False\n", " True\n", - " False\n", + " True\n", " False\n", " 0\n", - " 15403\n", - " 1\n", + " 3\n", " \n", " \n", " ...\n", @@ -897,7 +1061,7 @@ " ...\n", " \n", " \n", - " 309760814\n", + " 310197956\n", " DRIVEALONEFREE\n", " DRIVEALONEFREE\n", " 0.0\n", @@ -905,95 +1069,95 @@ " 0.0\n", " 0.0\n", " 0.0\n", - " 24.510000\n", - " 11.41364\n", - " 27.217999\n", + " 29.900002\n", + " 4.21092\n", + " 69.245528\n", " ...\n", " False\n", - " True\n", - " True\n", " False\n", - " True\n", + " False\n", + " False\n", + " False\n", + " False\n", " False\n", " False\n", " 0\n", - " 309760814\n", " 1\n", " \n", " \n", - " 309760815\n", - " SHARED2FREE\n", - " SHARED2FREE\n", + " 310202376\n", + " DRIVEALONEFREE\n", + " BIKE\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", - " 19.349998\n", - " 16.96372\n", - " 14.591494\n", + " 5.480000\n", + " 3.82392\n", + " 19.277738\n", " ...\n", " False\n", - " True\n", - " True\n", " False\n", - " True\n", " False\n", " False\n", - " 1\n", - " 309760815\n", - " 3\n", + " False\n", + " False\n", + " False\n", + " False\n", + " 0\n", + " 8\n", " \n", " \n", - " 309790009\n", - " BIKE\n", - " BIKE\n", + " 310202384\n", + " DRIVEALONEFREE\n", + " DRIVEALONEFREE\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", - " 21.410000\n", - " 19.44384\n", - " 84.280323\n", + " 5.480000\n", + " 3.82392\n", + " 19.277738\n", " ...\n", " False\n", - " True\n", - " True\n", " False\n", - " True\n", " False\n", " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " 0\n", " 1\n", - " 309790009\n", - " 8\n", " \n", " \n", - " 309796968\n", - " SHARED3FREE\n", - " SHARED3FREE\n", + " 310212634\n", + " DRIVEALONEFREE\n", + " DRIVEALONEFREE\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", - " 17.340000\n", - " 13.66872\n", - " 30.549632\n", + " 12.840000\n", + " 5.32256\n", + " 5.457677\n", " ...\n", " False\n", + " False\n", + " False\n", " True\n", " True\n", " False\n", - " True\n", " False\n", " False\n", " 0\n", - " 309796968\n", - " 5\n", + " 1\n", " \n", " \n", - " 309796969\n", + " 310220296\n", " DRIVEALONEFREE\n", " DRIVEALONEFREE\n", " 0.0\n", @@ -1001,199 +1165,199 @@ " 0.0\n", " 0.0\n", " 0.0\n", - " 8.000000\n", - " 10.00692\n", - " 18.758547\n", + " 13.590000\n", + " 8.05768\n", + " 15.684208\n", " ...\n", " False\n", - " True\n", - " True\n", + " False\n", + " False\n", " False\n", " True\n", " False\n", " False\n", + " False\n", " 0\n", - " 309796969\n", " 1\n", " \n", " \n", "\n", - "

5314 rows × 535 columns

\n", + "

63935 rows × 536 columns

\n", "" ], "text/plain": [ " model_choice override_choice util_DRIVEALONEFREE_Unavailable \\\n", "tour_id \n", - "6812 WALK WALK 0.0 \n", - "8110 WALK WALK 0.0 \n", - "11013 DRIVEALONEFREE DRIVEALONEFREE 0.0 \n", - "11016 DRIVEALONEFREE DRIVEALONEFREE 0.0 \n", - "15403 DRIVEALONEFREE DRIVEALONEFREE 0.0 \n", + "1870 SHARED3FREE SHARED3FREE 0.0 \n", + "20468 SHARED3FREE TNC_SINGLE 0.0 \n", + "27055 SHARED3FREE SHARED3FREE 0.0 \n", + "38877 SHARED2FREE SHARED3FREE 0.0 \n", + "38904 SHARED2FREE SHARED2FREE 0.0 \n", "... ... ... ... \n", - "309760814 DRIVEALONEFREE DRIVEALONEFREE 0.0 \n", - "309760815 SHARED2FREE SHARED2FREE 0.0 \n", - "309790009 BIKE BIKE 0.0 \n", - "309796968 SHARED3FREE SHARED3FREE 0.0 \n", - "309796969 DRIVEALONEFREE DRIVEALONEFREE 0.0 \n", + "310197956 DRIVEALONEFREE DRIVEALONEFREE 0.0 \n", + "310202376 DRIVEALONEFREE BIKE 0.0 \n", + "310202384 DRIVEALONEFREE DRIVEALONEFREE 0.0 \n", + "310212634 DRIVEALONEFREE DRIVEALONEFREE 0.0 \n", + "310220296 DRIVEALONEFREE DRIVEALONEFREE 0.0 \n", "\n", " util_DRIVEALONEFREE_Unavailable_for_zero_auto_households \\\n", "tour_id \n", - "6812 1.0 \n", - "8110 1.0 \n", - "11013 0.0 \n", - "11016 0.0 \n", - "15403 0.0 \n", + "1870 0.0 \n", + "20468 0.0 \n", + "27055 0.0 \n", + "38877 0.0 \n", + "38904 0.0 \n", "... ... \n", - "309760814 0.0 \n", - "309760815 0.0 \n", - "309790009 0.0 \n", - "309796968 0.0 \n", - "309796969 0.0 \n", + "310197956 0.0 \n", + "310202376 0.0 \n", + "310202384 0.0 \n", + "310212634 0.0 \n", + "310220296 0.0 \n", "\n", " util_DRIVEALONEFREE_Unavailable_for_persons_less_than_16 \\\n", "tour_id \n", - "6812 0.0 \n", - "8110 0.0 \n", - "11013 0.0 \n", - "11016 0.0 \n", - "15403 0.0 \n", + "1870 0.0 \n", + "20468 0.0 \n", + "27055 0.0 \n", + "38877 0.0 \n", + "38904 0.0 \n", "... ... \n", - "309760814 0.0 \n", - "309760815 0.0 \n", - "309790009 0.0 \n", - "309796968 0.0 \n", - "309796969 0.0 \n", + "310197956 0.0 \n", + "310202376 0.0 \n", + "310202384 0.0 \n", + "310212634 0.0 \n", + "310220296 0.0 \n", "\n", " util_DRIVEALONEFREE_Unavailable_for_joint_tours \\\n", "tour_id \n", - "6812 0.0 \n", - "8110 0.0 \n", - "11013 0.0 \n", - "11016 0.0 \n", - "15403 0.0 \n", + "1870 0.0 \n", + "20468 0.0 \n", + "27055 0.0 \n", + "38877 0.0 \n", + "38904 0.0 \n", "... ... \n", - "309760814 0.0 \n", - "309760815 0.0 \n", - "309790009 0.0 \n", - "309796968 0.0 \n", - "309796969 0.0 \n", + "310197956 0.0 \n", + "310202376 0.0 \n", + "310202384 0.0 \n", + "310212634 0.0 \n", + "310220296 0.0 \n", "\n", " util_DRIVEALONEFREE_Unavailable_if_didnt_drive_to_work \\\n", "tour_id \n", - "6812 0.0 \n", - "8110 0.0 \n", - "11013 0.0 \n", - "11016 0.0 \n", - "15403 0.0 \n", + "1870 0.0 \n", + "20468 0.0 \n", + "27055 0.0 \n", + "38877 0.0 \n", + "38904 0.0 \n", "... ... \n", - "309760814 0.0 \n", - "309760815 0.0 \n", - "309790009 0.0 \n", - "309796968 0.0 \n", - "309796969 0.0 \n", + "310197956 0.0 \n", + "310202376 0.0 \n", + "310202384 0.0 \n", + "310212634 0.0 \n", + "310220296 0.0 \n", "\n", " util_DRIVEALONEFREE_In_vehicle_time \\\n", "tour_id \n", - "6812 5.480000 \n", - "8110 8.860000 \n", - "11013 20.689999 \n", - "11016 14.710000 \n", - "15403 15.160000 \n", + "1870 20.830002 \n", + "20468 9.440000 \n", + "27055 13.160000 \n", + "38877 6.730000 \n", + "38904 22.410000 \n", "... ... \n", - "309760814 24.510000 \n", - "309760815 19.349998 \n", - "309790009 21.410000 \n", - "309796968 17.340000 \n", - "309796969 8.000000 \n", + "310197956 29.900002 \n", + "310202376 5.480000 \n", + "310202384 5.480000 \n", + "310212634 12.840000 \n", + "310220296 13.590000 \n", "\n", " util_DRIVEALONEFREE_Terminal_time \\\n", "tour_id \n", - "6812 15.45016 \n", - "8110 34.19784 \n", - "11013 18.17320 \n", - "11016 12.85052 \n", - "15403 10.64808 \n", + "1870 21.26572 \n", + "20468 13.24624 \n", + "27055 8.53068 \n", + "38877 11.04132 \n", + "38904 17.29320 \n", "... ... \n", - "309760814 11.41364 \n", - "309760815 16.96372 \n", - "309790009 19.44384 \n", - "309796968 13.66872 \n", - "309796969 10.00692 \n", + "310197956 4.21092 \n", + "310202376 3.82392 \n", + "310202384 3.82392 \n", + "310212634 5.32256 \n", + "310220296 8.05768 \n", "\n", - " util_DRIVEALONEFREE_Operating_cost ... walk_ferry_available \\\n", - "tour_id ... \n", - "6812 2.156258 ... False \n", - "8110 17.722496 ... False \n", - "11013 15.097005 ... False \n", - "11016 10.971117 ... False \n", - "15403 26.092745 ... False \n", - "... ... ... ... \n", - "309760814 27.217999 ... False \n", - "309760815 14.591494 ... False \n", - "309790009 84.280323 ... False \n", - "309796968 30.549632 ... False \n", - "309796969 18.758547 ... False \n", + " util_DRIVEALONEFREE_Operating_cost ... walk_lrf_available \\\n", + "tour_id ... \n", + "1870 6.293324 ... False \n", + "20468 14.917349 ... False \n", + "27055 25.088453 ... False \n", + "38877 11.040045 ... False \n", + "38904 46.920191 ... True \n", + "... ... ... ... \n", + "310197956 69.245528 ... False \n", + "310202376 19.277738 ... False \n", + "310202384 19.277738 ... False \n", + "310212634 5.457677 ... False \n", + "310220296 15.684208 ... False \n", "\n", - " drive_local_available drive_commuter_available \\\n", - "tour_id \n", - "6812 False False \n", - "8110 False False \n", - "11013 True True \n", - "11016 True True \n", - "15403 True True \n", - "... ... ... \n", - "309760814 True True \n", - "309760815 True True \n", - "309790009 True True \n", - "309796968 True True \n", - "309796969 True True \n", + " walk_ferry_available drive_local_available \\\n", + "tour_id \n", + "1870 False True \n", + "20468 False True \n", + "27055 False True \n", + "38877 False True \n", + "38904 False True \n", + "... ... ... \n", + "310197956 False False \n", + "310202376 False False \n", + "310202384 False False \n", + "310212634 False False \n", + "310220296 False False \n", "\n", - " drive_express_available drive_heavyrail_available \\\n", - "tour_id \n", - "6812 False False \n", - "8110 False False \n", - "11013 False True \n", - "11016 False True \n", - "15403 False True \n", - "... ... ... \n", - "309760814 False True \n", - "309760815 False True \n", - "309790009 False True \n", - "309796968 False True \n", - "309796969 False True \n", + " drive_commuter_available drive_express_available \\\n", + "tour_id \n", + "1870 True False \n", + "20468 True False \n", + "27055 True False \n", + "38877 True False \n", + "38904 True False \n", + "... ... ... \n", + "310197956 False False \n", + "310202376 False False \n", + "310202384 False False \n", + "310212634 True True \n", + "310220296 False True \n", "\n", - " drive_lrf_available drive_ferry_available destination_in_cbd \\\n", - "tour_id \n", - "6812 False False 1 \n", - "8110 False False 0 \n", - "11013 False False 1 \n", - "11016 False False 0 \n", - "15403 False False 0 \n", - "... ... ... ... \n", - "309760814 False False 0 \n", - "309760815 False False 1 \n", - "309790009 False False 1 \n", - "309796968 False False 0 \n", - "309796969 False False 0 \n", + " drive_heavyrail_available drive_lrf_available \\\n", + "tour_id \n", + "1870 True False \n", + "20468 True False \n", + "27055 True False \n", + "38877 True False \n", + "38904 True True \n", + "... ... ... \n", + "310197956 False False \n", + "310202376 False False \n", + "310202384 False False \n", + "310212634 False False \n", + "310220296 False False \n", "\n", - " tour_id.1 override_choice_code \n", - "tour_id \n", - "6812 6812 7 \n", - "8110 8110 7 \n", - "11013 11013 1 \n", - "11016 11016 1 \n", - "15403 15403 1 \n", - "... ... ... \n", - "309760814 309760814 1 \n", - "309760815 309760815 3 \n", - "309790009 309790009 8 \n", - "309796968 309796968 5 \n", - "309796969 309796969 1 \n", + " drive_ferry_available destination_in_cbd override_choice_code \n", + "tour_id \n", + "1870 False 1 5 \n", + "20468 False 0 20 \n", + "27055 False 0 5 \n", + "38877 False 0 5 \n", + "38904 False 0 3 \n", + "... ... ... ... \n", + "310197956 False 0 1 \n", + "310202376 False 0 8 \n", + "310202384 False 0 1 \n", + "310212634 False 0 1 \n", + "310220296 False 0 1 \n", "\n", - "[5314 rows x 535 columns]" + "[63935 rows x 536 columns]" ] }, - "execution_count": 8, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -1213,112 +1377,59 @@ }, { "cell_type": "code", - "execution_count": 9, - "metadata": {}, + "execution_count": 10, + "metadata": { + "execution": { + "iopub.execute_input": "2025-06-26T02:19:14.299439Z", + "iopub.status.busy": "2025-06-26T02:19:14.299343Z", + "iopub.status.idle": "2025-06-26T02:19:14.389799Z", + "shell.execute_reply": "2025-06-26T02:19:14.389326Z", + "shell.execute_reply.started": "2025-06-26T02:19:14.299429Z" + } + }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "req_data does not request avail_ca or avail_co but it is set and being provided\n", - "req_data does not request avail_ca or avail_co but it is set and being provided\n", - "req_data does not request avail_ca or avail_co but it is set and being provided\n", - "req_data does not request avail_ca or avail_co but it is set and being provided\n", - "req_data does not request avail_ca or avail_co but it is set and being provided\n", - "req_data does not request avail_ca or avail_co but it is set and being provided\n", - "req_data does not request avail_ca or avail_co but it is set and being provided\n", - "req_data does not request avail_ca or avail_co but it is set and being provided\n", - "req_data does not request avail_ca or avail_co but it is set and being provided\n", - "req_data does not request avail_ca or avail_co but it is set and being provided\n", - "problem: chosen-but-not-available (1 issues)\n", - "problem: low-variance-data-co (1 issues)\n", - "problem: low-variance-data-co (1 issues)\n", - "problem: chosen-but-not-available (2 issues)\n", - "problem: low-variance-data-co (1 issues)\n", - "problem: chosen-but-not-available (2 issues)\n", - "problem: low-variance-data-co (1 issues)\n", - "problem: chosen-but-not-available (2 issues)\n", - "problem: low-variance-data-co (1 issues)\n", - "problem: chosen-but-not-available (2 issues)\n", - "problem: low-variance-data-co (1 issues)\n", - "problem: chosen-but-not-available (1 issues)\n", - "problem: low-variance-data-co (1 issues)\n", - "problem: chosen-but-not-available (2 issues)\n", - "problem: low-variance-data-co (1 issues)\n", - "problem: low-variance-data-co (1 issues)\n" - ] - }, { "data": { "text/plain": [ - "[(,\n", - " ┣ chosen_but_not_available: n example rows\n", - " ┃ 12 2 45, 312\n", - " ┣ low_variance_data_co: n example cols\n", - " ┃ low_variance_co 58 util_BIKE_Unavailable_if_didnt_bike_to_work, u...),\n", - " (,\n", - " ┣ low_variance_data_co: n example cols\n", - " ┃ low_variance_co 87 util_BIKE_Unavailable_if_didnt_bike_to_work, u...),\n", - " (,\n", - " ┣ chosen_but_not_available: n example rows\n", - " ┃ 10 4 66, 184, 222\n", - " ┃ 12 3 205, 394, 560\n", - " ┣ low_variance_data_co: n example cols\n", - " ┃ low_variance_co 56 util_BIKE_Unavailable_if_didnt_bike_to_work, u...),\n", - " (,\n", - " ┣ chosen_but_not_available: n example rows\n", - " ┃ 10 4 25, 73, 98\n", - " ┃ 12 2 129, 320\n", - " ┣ low_variance_data_co: n example cols\n", - " ┃ low_variance_co 57 util_BIKE_Unavailable_if_didnt_bike_to_work, u...),\n", - " (,\n", - " ┣ chosen_but_not_available: n example rows\n", - " ┃ 10 25 3, 108, 145\n", - " ┃ 12 5 10, 23, 135\n", - " ┣ low_variance_data_co: n example cols\n", - " ┃ low_variance_co 88 util_BIKE_Unavailable_if_didnt_bike_to_work, u...),\n", - " (,\n", - " ┣ chosen_but_not_available: n example rows\n", - " ┃ 10 5 118, 300, 303\n", - " ┃ 12 1 252\n", - " ┣ low_variance_data_co: n example cols\n", - " ┃ low_variance_co 54 util_BIKE_Unavailable_if_didnt_bike_to_work, u...),\n", - " (,\n", - " ┣ chosen_but_not_available: n example rows\n", - " ┃ 10 3 71, 163, 170\n", - " ┣ low_variance_data_co: n example cols\n", - " ┃ low_variance_co 65 util_BIKE_Unavailable_if_didnt_bike_to_work, u...),\n", - " (, dictx()),\n", - " (,\n", - " ┣ chosen_but_not_available: n example rows\n", - " ┃ 10 36 21, 23, 95\n", - " ┃ 12 15 46, 243, 449\n", - " ┣ low_variance_data_co: n example cols\n", - " ┃ low_variance_co 108 util_BIKE_Unavailable_if_didnt_bike_to_work, u...),\n", - " (,\n", - " ┣ low_variance_data_co: n example cols\n", - " ┃ low_variance_co 106 util_Commuter_Rail, util_DRIVEALONEFREE_Unavai...)]" + "(,\n", + " [(, dictx()),\n", + " (, dictx()),\n", + " (, dictx()),\n", + " (, dictx()),\n", + " (, dictx()),\n", + " (, dictx()),\n", + " (, dictx()),\n", + " (, dictx()),\n", + " (, dictx()),\n", + " (, dictx())])" ] }, - "execution_count": 9, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "model.load_data()\n", "model.doctor(repair_ch_av=\"-\")" ] }, { "cell_type": "code", - "execution_count": 10, - "metadata": {}, + "execution_count": 11, + "metadata": { + "execution": { + "iopub.execute_input": "2025-06-26T02:19:14.390341Z", + "iopub.status.busy": "2025-06-26T02:19:14.390244Z", + "iopub.status.idle": "2025-06-26T02:20:19.068878Z", + "shell.execute_reply": "2025-06-26T02:20:19.068547Z", + "shell.execute_reply.started": "2025-06-26T02:19:14.390332Z" + } + }, "outputs": [ { "data": { "text/html": [ - "

Iteration 168 [Optimization terminated successfully]

" + "

Iteration 189 [Optimization terminated successfully]

" ], "text/plain": [ "" @@ -1330,7 +1441,7 @@ { "data": { "text/html": [ - "

Best LL = -6324.409943103907

" + "

Best LL = -76508.28923895479

" ], "text/plain": [ "" @@ -1361,13 +1472,22 @@ " \n", " \n", " value\n", + " best\n", " initvalue\n", - " nullvalue\n", " minimum\n", " maximum\n", + " nullvalue\n", " holdfast\n", - " note\n", - " best\n", + " \n", + " \n", + " param_name\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1375,56 +1495,51 @@ " -999\n", " -999.000000\n", " -999.000000\n", + " -999.000000\n", " -999.0\n", " -999.0\n", - " -999.0\n", + " 0.0\n", " 1\n", - " \n", - " -999.000000\n", " \n", " \n", " 1\n", " 1.000000\n", " 1.000000\n", + " 1.000000\n", " 1.0\n", " 1.0\n", - " 1.0\n", + " 0.0\n", " 1\n", - " \n", - " 1.000000\n", " \n", " \n", - " bike_ASC_auto_deficient_eatout\n", - " -95.051842\n", - " -1.569111\n", + " bike_ASC_auto_deficient_atwork\n", + " -1.054274\n", + " -1.054274\n", + " -0.807408\n", + " -inf\n", + " inf\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -95.051842\n", " \n", " \n", - " bike_ASC_auto_sufficient_eatout\n", - " -1.464118\n", - " -1.200347\n", + " bike_ASC_auto_deficient_eatout\n", + " -1.458927\n", + " -1.458927\n", + " -1.569111\n", + " -inf\n", + " inf\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -1.464118\n", " \n", " \n", - " bike_ASC_no_auto_eatout\n", - " 7.201849\n", - " 0.868071\n", + " bike_ASC_auto_deficient_escort\n", + " -3.980018\n", + " -3.980018\n", + " -4.527928\n", + " -inf\n", + " inf\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 7.201849\n", " \n", " \n", " ...\n", @@ -1435,113 +1550,133 @@ " ...\n", " ...\n", " ...\n", - " ...\n", " \n", " \n", - " walk_ASC_no_auto_atwork\n", - " 12.824109\n", - " 6.669213\n", + " walk_transit_ASC_no_auto_work\n", + " 4.604150\n", + " 4.604150\n", + " 5.035417\n", + " -inf\n", + " inf\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 12.824109\n", " \n", " \n", - " walk_transit_ASC_auto_deficient_atwork\n", - " 8.985177\n", - " -2.998829\n", + " walk_transit_CBD_ASC_atwork\n", + " 1.296785\n", + " 1.296785\n", + " 0.564000\n", + " -inf\n", + " inf\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 8.985177\n", " \n", " \n", - " walk_transit_ASC_auto_sufficient_atwork\n", - " 9.127996\n", - " -3.401027\n", + " walk_transit_CBD_ASC_eatout_escort_othdiscr_othmaint_shopping_social\n", + " 1.078110\n", + " 1.078110\n", + " 0.525000\n", + " -inf\n", + " inf\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 9.127996\n", " \n", " \n", - " walk_transit_ASC_no_auto_atwork\n", - " 21.234896\n", - " 2.704188\n", + " walk_transit_CBD_ASC_school_univ\n", + " 0.834010\n", + " 0.834010\n", + " 0.672000\n", + " -inf\n", + " inf\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 21.234896\n", " \n", " \n", - " walk_transit_CBD_ASC_atwork\n", - " 0.351949\n", - " 0.564000\n", + " walk_transit_CBD_ASC_work\n", + " 1.157993\n", + " 1.157993\n", + " 0.804000\n", + " -inf\n", + " inf\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.351949\n", " \n", " \n", "\n", - "

301 rows × 8 columns

\n", + "

303 rows × 7 columns

\n", "" ], "text/plain": [ - " value initvalue nullvalue \\\n", - "-999 -999.000000 -999.000000 -999.0 \n", - "1 1.000000 1.000000 1.0 \n", - "bike_ASC_auto_deficient_eatout -95.051842 -1.569111 0.0 \n", - "bike_ASC_auto_sufficient_eatout -1.464118 -1.200347 0.0 \n", - "bike_ASC_no_auto_eatout 7.201849 0.868071 0.0 \n", - "... ... ... ... \n", - "walk_ASC_no_auto_atwork 12.824109 6.669213 0.0 \n", - "walk_transit_ASC_auto_deficient_atwork 8.985177 -2.998829 0.0 \n", - "walk_transit_ASC_auto_sufficient_atwork 9.127996 -3.401027 0.0 \n", - "walk_transit_ASC_no_auto_atwork 21.234896 2.704188 0.0 \n", - "walk_transit_CBD_ASC_atwork 0.351949 0.564000 0.0 \n", + " value best \\\n", + "param_name \n", + "-999 -999.000000 -999.000000 \n", + "1 1.000000 1.000000 \n", + "bike_ASC_auto_deficient_atwork -1.054274 -1.054274 \n", + "bike_ASC_auto_deficient_eatout -1.458927 -1.458927 \n", + "bike_ASC_auto_deficient_escort -3.980018 -3.980018 \n", + "... ... ... \n", + "walk_transit_ASC_no_auto_work 4.604150 4.604150 \n", + "walk_transit_CBD_ASC_atwork 1.296785 1.296785 \n", + "walk_transit_CBD_ASC_eatout_escort_othdiscr_oth... 1.078110 1.078110 \n", + "walk_transit_CBD_ASC_school_univ 0.834010 0.834010 \n", + "walk_transit_CBD_ASC_work 1.157993 1.157993 \n", "\n", - " minimum maximum holdfast note \\\n", - "-999 -999.0 -999.0 1 \n", - "1 1.0 1.0 1 \n", - "bike_ASC_auto_deficient_eatout NaN NaN 0 \n", - "bike_ASC_auto_sufficient_eatout NaN NaN 0 \n", - "bike_ASC_no_auto_eatout NaN NaN 0 \n", - "... ... ... ... ... \n", - "walk_ASC_no_auto_atwork NaN NaN 0 \n", - "walk_transit_ASC_auto_deficient_atwork NaN NaN 0 \n", - "walk_transit_ASC_auto_sufficient_atwork NaN NaN 0 \n", - "walk_transit_ASC_no_auto_atwork NaN NaN 0 \n", - "walk_transit_CBD_ASC_atwork NaN NaN 0 \n", + " initvalue minimum \\\n", + "param_name \n", + "-999 -999.000000 -999.0 \n", + "1 1.000000 1.0 \n", + "bike_ASC_auto_deficient_atwork -0.807408 -inf \n", + "bike_ASC_auto_deficient_eatout -1.569111 -inf \n", + "bike_ASC_auto_deficient_escort -4.527928 -inf \n", + "... ... ... \n", + "walk_transit_ASC_no_auto_work 5.035417 -inf \n", + "walk_transit_CBD_ASC_atwork 0.564000 -inf \n", + "walk_transit_CBD_ASC_eatout_escort_othdiscr_oth... 0.525000 -inf \n", + "walk_transit_CBD_ASC_school_univ 0.672000 -inf \n", + "walk_transit_CBD_ASC_work 0.804000 -inf \n", "\n", - " best \n", - "-999 -999.000000 \n", - "1 1.000000 \n", - "bike_ASC_auto_deficient_eatout -95.051842 \n", - "bike_ASC_auto_sufficient_eatout -1.464118 \n", - "bike_ASC_no_auto_eatout 7.201849 \n", - "... ... \n", - "walk_ASC_no_auto_atwork 12.824109 \n", - "walk_transit_ASC_auto_deficient_atwork 8.985177 \n", - "walk_transit_ASC_auto_sufficient_atwork 9.127996 \n", - "walk_transit_ASC_no_auto_atwork 21.234896 \n", - "walk_transit_CBD_ASC_atwork 0.351949 \n", + " maximum nullvalue \\\n", + "param_name \n", + "-999 -999.0 0.0 \n", + "1 1.0 0.0 \n", + "bike_ASC_auto_deficient_atwork inf 0.0 \n", + "bike_ASC_auto_deficient_eatout inf 0.0 \n", + "bike_ASC_auto_deficient_escort inf 0.0 \n", + "... ... ... \n", + "walk_transit_ASC_no_auto_work inf 0.0 \n", + "walk_transit_CBD_ASC_atwork inf 0.0 \n", + "walk_transit_CBD_ASC_eatout_escort_othdiscr_oth... inf 0.0 \n", + "walk_transit_CBD_ASC_school_univ inf 0.0 \n", + "walk_transit_CBD_ASC_work inf 0.0 \n", "\n", - "[301 rows x 8 columns]" + " holdfast \n", + "param_name \n", + "-999 1 \n", + "1 1 \n", + "bike_ASC_auto_deficient_atwork 0 \n", + "bike_ASC_auto_deficient_eatout 0 \n", + "bike_ASC_auto_deficient_escort 0 \n", + "... ... \n", + "walk_transit_ASC_no_auto_work 0 \n", + "walk_transit_CBD_ASC_atwork 0 \n", + "walk_transit_CBD_ASC_eatout_escort_othdiscr_oth... 0 \n", + "walk_transit_CBD_ASC_school_univ 0 \n", + "walk_transit_CBD_ASC_work 0 \n", + "\n", + "[303 rows x 7 columns]" ] }, "metadata": {}, "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jpn/Git/aestival/repos/larch/src/larch/model/optimization.py:338: UserWarning: SLSQP may not play nicely with unbounded parameters\n", + "if you get poor results, consider setting global bounds with model.set_cap()\n", + " warnings.warn( # infinite bounds # )\n" + ] } ], "source": [ @@ -1550,25 +1685,135 @@ }, { "cell_type": "code", - "execution_count": 11, - "metadata": {}, + "execution_count": 12, + "metadata": { + "execution": { + "iopub.execute_input": "2025-06-26T02:20:19.069508Z", + "iopub.status.busy": "2025-06-26T02:20:19.069365Z", + "iopub.status.idle": "2025-06-26T02:22:22.469509Z", + "shell.execute_reply": "2025-06-26T02:22:22.469199Z", + "shell.execute_reply.started": "2025-06-26T02:20:19.069498Z" + } + }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "/var/folders/js/bk_dt9015j79_f6bxnc44dsr0000gp/T/ipykernel_92897/3375301916.py:1: PossibleOverspecification: WARNING: Model is possibly over-specified (hessian is nearly singular).\n", - " model.calculate_parameter_covariance()\n", - "/Users/jeffnewman/LocalGit/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.1755327986150339e-46 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/var/folders/js/bk_dt9015j79_f6bxnc44dsr0000gp/T/ipykernel_92897/3375301916.py:1: PossibleOverspecification: WARNING: Model seems to have 58 parameter estimators with negative variance\n", - "- commuter_rail_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork\n", - "- drive_ferry_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork\n", - "- drive_light_rail_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork\n", - "- drive_transit_ASC_no_auto_all\n", - "- and 54 more\n", + "/var/folders/gp/zzfchnm91870k7pvbkmbgwz80000gr/T/ipykernel_45605/3375301916.py:1: PossibleOverspecification: Model is possibly over-specified (hessian is nearly singular).\n", " model.calculate_parameter_covariance()\n" ] + }, + { + "data": { + "text/plain": [ + "(array([0.00000000e+00, 0.00000000e+00, 3.43568882e-01, 3.95622877e-01,\n", + " 4.06484604e-01, 2.03367924e-01, 3.22743381e-01, 9.64080406e-01,\n", + " 2.18326807e-01, 3.24554296e-01, nan, 9.25561766e-02,\n", + " 4.69818109e+02, 1.59418569e-01, 3.37340862e-01, 1.05444367e-01,\n", + " 1.93207745e-01, 9.18689416e-01, 1.38355178e-01, 2.06922312e-01,\n", + " 6.56527431e-03, 8.14434243e-02, 7.65331643e+01, 7.59009053e+01,\n", + " 7.59050227e+01, 7.59000796e+01, 7.58995284e+01, 1.08570448e+02,\n", + " 7.58994612e+01, 7.58998820e+01, 1.48396628e-03, 7.58997989e+01,\n", + " 7.84724197e-03, 1.75813808e-01, 8.99726958e-02, 2.05380801e-01,\n", + " 4.25371868e-02, 7.47682204e-02, 8.42243554e-02, 6.82331737e-02,\n", + " 3.12375884e-02, 5.71491736e-02, 1.78428279e-02, 9.12338677e-02,\n", + " 4.78568573e-04, 1.44741724e-04, 3.15779236e-04, 1.47478876e-04,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + " 0.00000000e+00, 4.94370981e-02, 9.12949980e-01, 1.63536365e+01,\n", + " nan, 2.77531481e+02, 1.63577167e+01, nan,\n", + " 2.77531479e+02, 1.63533682e+01, nan, 2.77531474e+02,\n", + " 3.59540175e-04, 1.63548950e+01, 1.63570704e+01, 1.63563610e+01,\n", + " 1.63560813e+01, nan, 1.63568863e+01, 1.63570619e+01,\n", + " nan, 2.77531528e+02, 1.76087014e-04, 1.63538061e+01,\n", + " 1.63648286e+01, 1.63530022e+01, 1.63539908e+01, nan,\n", + " 1.63575583e+01, 1.63537351e+01, nan, 2.77531508e+02,\n", + " nan, nan, 1.42103205e-01, 2.51161193e-01,\n", + " 6.97695237e-02, 1.63526899e+01, nan, 2.77531475e+02,\n", + " 1.63526001e+01, nan, 2.77531471e+02, 1.33597581e+00,\n", + " 4.64551594e-01, 1.07997221e+00, 1.64232273e+01, 1.63735494e+01,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + " 2.57988724e-01, 1.33447027e-01, 4.70329177e-01, 8.14677991e+00,\n", + " 0.00000000e+00, 4.29099062e+00, 1.70018293e+01, 0.00000000e+00,\n", + " 2.17642075e+00, 7.19755709e+00, 0.00000000e+00, 2.05173739e+00,\n", + " 3.75877587e-01, 2.44612828e-01, 7.26634985e-01, 1.63756367e+01,\n", + " 6.54706742e+02, 1.63625643e+01, 1.63525772e+01, nan,\n", + " 2.77531472e+02, 1.31802045e-01, 1.54856832e-01, 1.60191396e-01,\n", + " 1.30884481e-01, 1.45237147e-01, 9.27906953e-01, 1.27444227e-01,\n", + " 2.14970869e-01, nan, 8.92015357e-02, 7.83754734e-02,\n", + " 1.04828977e-01, 1.28961862e-01, 1.00855258e-01, 1.02878899e-01,\n", + " 9.16347963e-01, 1.00453659e-01, 1.10094340e-01, nan,\n", + " 8.59833552e-02, 7.58992488e+01, 1.36179443e-01, 1.87447089e-01,\n", + " 1.62833349e-01, 1.24488428e-01, 2.23419023e-01, 9.27089911e-01,\n", + " 1.37802147e-01, 2.22797306e-01, 1.82745854e-05, 9.21812970e-02,\n", + " 7.96539978e-02, 1.04999071e-01, 1.28985576e-01, 1.00505047e-01,\n", + " 1.05433010e-01, 9.16256846e-01, 1.01350960e-01, 1.09870705e-01,\n", + " 2.57288423e-05, 8.67595311e-02, 7.59011365e+01, 7.58997610e+01,\n", + " 7.59404020e+01, 7.58994418e+01, 7.58999755e+01, 1.04821014e+02,\n", + " 7.58994443e+01, 7.59033408e+01, 1.79086329e-05, 7.58997578e+01,\n", + " 4.34623540e-01, 4.82712631e-01, 1.17827537e-01, 9.34535479e-01,\n", + " 1.61843418e-05, 2.05410943e-01, 1.50299770e-01, 2.46495322e-01,\n", + " 9.65073938e-02, 9.21898426e-01, nan, 3.03132741e-01,\n", + " 7.59016253e+01, 7.59019418e+01, 7.58994200e+01, 0.00000000e+00,\n", + " 7.59000159e+01, 4.13912102e-01, 8.99832808e-01, 1.09252822e-01,\n", + " 9.32969197e-01, 1.25173469e-05, 2.14027564e-01, 1.65755664e-01,\n", + " 1.99468519e-01, 9.20396101e-02, 9.26728748e-01, nan,\n", + " 4.10887210e-01, 7.59013539e+01, 7.58995848e+01, 7.58994250e+01,\n", + " 0.00000000e+00, nan, 7.58999400e+01, 3.18871323e-01,\n", + " 4.36073743e-01, 1.01858472e-01, 9.43121213e-01, nan,\n", + " 1.15161883e-01, 1.25660723e-01, 1.49149898e-01, 8.32981598e-02,\n", + " 9.19608672e-01, 5.09330673e-06, 1.82003483e-01, 7.59012319e+01,\n", + " 7.58995121e+01, 7.58994032e+01, 0.00000000e+00, nan,\n", + " 7.58997326e+01, 1.23348929e-01, 1.97972972e-01, 2.64828835e-01,\n", + " 1.54433920e-01, 2.07777377e-01, 9.30824872e-01, 1.37078150e-01,\n", + " 2.98569183e-01, 1.92139862e-06, 9.55273557e-02, 5.79521800e-02,\n", + " 1.06001682e-01, 1.17079290e-01, 8.28631063e-02, 9.55004074e-02,\n", + " 9.16882068e-01, 8.10886012e-02, 1.17267376e-01, nan,\n", + " 7.87068490e-02, 7.59013004e+01, 7.58999086e+01, 7.59004734e+01,\n", + " 7.58995435e+01, 7.58998937e+01, 1.08571609e+02, 7.58994666e+01,\n", + " 7.58998191e+01, nan, 7.58997790e+01, 1.63576443e+01,\n", + " nan, 2.77531548e+02, 1.63526485e+01, nan,\n", + " 2.77531477e+02, 1.63547614e+01, 1.63545018e+01, 1.63715432e+01,\n", + " 1.63530434e+01, 1.63615194e+01, nan, 1.63537738e+01,\n", + " 1.63551081e+01, 0.00000000e+00, 2.77531520e+02, 1.63551412e+01,\n", + " 1.63531880e+01, 1.63558584e+01, 1.63527479e+01, 1.63529252e+01,\n", + " nan, 1.63530022e+01, 1.63530749e+01, 0.00000000e+00,\n", + " 2.77531502e+02, 6.69470694e+01, 6.69450046e+01, 6.69964449e+01,\n", + " 6.69446108e+01, 6.69446394e+01, nan, 6.69445391e+01,\n", + " 6.69448938e+01, 0.00000000e+00, 2.84516997e+02, 2.83954667e-01,\n", + " 7.56535600e-02, 1.14214645e-01, 5.38649903e-02]),\n", + " array([[ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [ 0. , 0. , 9.31549406, ..., -0. ,\n", + " -0. , -0. ],\n", + " ...,\n", + " [ 0. , 0. , -0. , ..., 344.54322124,\n", + " -0. , -0. ],\n", + " [ 0. , 0. , -0. , ..., -0. ,\n", + " 111.37471744, -0. ],\n", + " [ 0. , 0. , -0. , ..., -0. ,\n", + " -0. , 1009.7244553 ]]),\n", + " array([[0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", + " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", + " [0.00000000e+00, 0.00000000e+00, 1.18039577e-01, ...,\n", + " 3.75007904e-06, 4.08837633e-07, 7.04483539e-07],\n", + " ...,\n", + " [0.00000000e+00, 0.00000000e+00, 3.75002665e-06, ...,\n", + " 5.72346114e-03, 3.67756592e-07, 7.45127667e-08],\n", + " [0.00000000e+00, 0.00000000e+00, 4.08776137e-07, ...,\n", + " 3.67748087e-07, 1.30449851e-02, 6.09830355e-08],\n", + " [0.00000000e+00, 0.00000000e+00, 7.04483132e-07, ...,\n", + " 7.45129878e-08, 6.10023447e-08, 2.90143718e-03]]))" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ @@ -1584,2951 +1829,11190 @@ }, { "cell_type": "code", - "execution_count": 12, - "metadata": {}, + "execution_count": 13, + "metadata": { + "execution": { + "iopub.execute_input": "2025-06-26T02:22:22.471845Z", + "iopub.status.busy": "2025-06-26T02:22:22.471733Z", + "iopub.status.idle": "2025-06-26T02:22:22.518897Z", + "shell.execute_reply": "2025-06-26T02:22:22.518295Z", + "shell.execute_reply.started": "2025-06-26T02:22:22.471835Z" + } + }, "outputs": [ { "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 ValueStd Errt StatSignifLike RatioNull ValueValueStd Errt StatSignifNull Value
-999-999. 0.00 NA NA-999.00
1 1.00 0.00 NA NA 1.00
bike_ASC_auto_deficient_eatout-95.1 0.00 NA[**] 3.97 0.00
bike_ASC_auto_sufficient_eatout-1.46 0.459-3.19** NA 0.00
bike_ASC_no_auto_eatout 7.20 0.740 9.73*** NA 0.00
coef_age010_trn_multiplier_eatout_escort_othdiscr_othmaint_shopping_social_work 0.720 0.387 1.86 NA 0.00
coef_age1619_da_multiplier_eatout_escort_othdiscr_othmaint_shopping_social_work-0.0191 0.214-0.09 NA 0.00
coef_age16p_sr_multiplier_eatout_escort_othdiscr_othmaint_shopping_social-1.14 0.276-4.13*** NA 0.00
coef_hhsize1_sr_multiplier_eatout_escort_othdiscr_othmaint_school_shopping_social_univ_atwork 0.0210 0.0998 0.21 NA 0.00
coef_hhsize2_sr_multiplier_eatout_escort_othdiscr_othmaint_shopping_social_work_atwork-0.00393 0.0708-0.06 NA 0.00
coef_ivt_eatout_escort_othdiscr_othmaint_shopping_social-0.0169 0.000785-21.58*** NA 0.00
coef_nest_AUTO 0.720 0.00 NA NA 1.00
coef_nest_AUTO_DRIVEALONE 0.350 0.00 NA NA 1.00
coef_nest_AUTO_SHAREDRIDE2 0.350 0.00 NA NA 1.00
coef_nest_AUTO_SHAREDRIDE3 0.350 0.00 NA NA 1.00
coef_nest_NONMOTORIZED 0.720 0.00 NA NA 1.00
coef_nest_RIDEHAIL 0.360 0.00 NA NA 1.00
coef_nest_TRANSIT 0.720 0.00 NA NA 1.00
coef_nest_TRANSIT_DRIVEACCESS 0.500 0.00 NA NA 1.00
coef_nest_TRANSIT_WALKACCESS 0.500 0.00 NA NA 1.00
commuter_rail_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork-38.8 NA NA[***] BIG 0.00
drive_ferry_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork 0.940 NA NA[] 0.00 0.00
drive_light_rail_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork-25.9 NA NA[***] 94.74 0.00
drive_transit_ASC_auto_deficient_eatout 14.7 1.77 8.30*** NA 0.00
drive_transit_ASC_auto_sufficient_eatout 12.1 1.88 6.45*** NA 0.00
drive_transit_ASC_no_auto_all 0.00 NA NA[] 0.00 0.00
drive_transit_CBD_ASC_eatout_escort_othdiscr_othmaint_shopping_social 0.553 0.813 0.68 NA 0.00
express_bus_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork-61.5 NA NA[***] 94.10 0.00
heavy_rail_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork-11.3 1.64-6.91*** NA 0.00
joint_bike_ASC_auto_deficient_all-155. NA NA[***] 49.72 0.00
joint_bike_ASC_auto_sufficient_all-108. NA NA[***] 89.09 0.00
joint_bike_ASC_no_auto_all-47.7 NA NA[] 1.65 0.00
joint_drive_transit_ASC_auto_deficient_all-36.1 NA NA[] 0.00 0.00
joint_drive_transit_ASC_auto_sufficient_all-24.1 NA NA[] 0.00 0.00
joint_drive_transit_ASC_no_auto_all 0.00 0.00 NA NA 0.00
joint_sr2_ASC_auto_deficient_all 0.00 0.00 NA NA 0.00
joint_sr2_ASC_auto_sufficient_all 0.00 0.00 NA NA 0.00
joint_sr2_ASC_no_auto_all 0.00 0.00 NA NA 0.00
joint_sr3p_ASC_auto_deficient_all-5.34 1.92-2.79** NA 0.00
joint_sr3p_ASC_auto_sufficient_all-3.33 0.983-3.39*** NA 0.00
joint_sr3p_ASC_no_auto_all 0.977 0.798 1.22 NA 0.00
joint_taxi_ASC_auto_deficient_all-45.5 NA NA[***] 31.66 0.00
joint_taxi_ASC_auto_sufficient_all-11.7 0.00 NA NA 0.00
joint_taxi_ASC_no_auto_all-12.8 841.-0.02 NA 0.00
joint_tnc_shared_ASC_auto_deficient_all-37.8 NA NA[***] 42.60 0.00
joint_tnc_shared_ASC_auto_sufficient_all-13.2 0.00 NA NA 0.00
joint_tnc_shared_ASC_no_auto_all-24.5 NA NA[] 1.15 0.00
joint_tnc_single_ASC_auto_deficient_all-51.7 NA NA[***] 36.10 0.00
joint_tnc_single_ASC_auto_sufficient_all-14.0 0.00 NA NA 0.00
joint_tnc_single_ASC_no_auto_all-16.7 NA NA[] 0.72 0.00
joint_walk_ASC_auto_deficient_all-1.31 1.43-0.92 NA 0.00
joint_walk_ASC_auto_sufficient_all-3.63 1.11-3.27** NA 0.00
joint_walk_ASC_no_auto_all 0.968 1.21 0.80 NA 0.00
joint_walk_transit_ASC_auto_deficient_all 4.48 2.40 1.87 NA 0.00
joint_walk_transit_ASC_auto_sufficient_all-18.3 NA NA[] 0.00 0.00
joint_walk_transit_ASC_no_auto_all 13.6 1.87 7.24*** NA 0.00
local_bus_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork-12.6 1.64-7.68*** NA 0.00
sr2_ASC_auto_deficient_eatout 0.235 0.415 0.57 NA 0.00
sr2_ASC_auto_sufficient_eatout 0.457 0.318 1.44 NA 0.00
sr2_ASC_no_auto_all 5.30 0.368 14.42*** NA 0.00
sr3p_ASC_auto_deficient_eatout-0.0844 0.448-0.19 NA 0.00
sr3p_ASC_auto_sufficient_eatout 0.502 0.313 1.60 NA 0.00
sr3p_ASC_no_auto_eatout 5.80 0.782 7.42*** NA 0.00
taxi_ASC_auto_deficient_eatout_othdiscr_social-34.3 NA NA[***] 10.47 0.00
taxi_ASC_auto_sufficient_eatout_othdiscr_social-2.38 0.505-4.71*** NA 0.00
taxi_ASC_no_auto_eatout_othdiscr_social-25.8 NA NA[] 0.00 0.00
tnc_shared_ASC_auto_deficient_eatout_othdiscr_social-2.92 1.01-2.89** NA 0.00
tnc_shared_ASC_auto_sufficient_eatout_othdiscr_social-3.47 0.610-5.69*** NA 0.00
tnc_shared_ASC_no_auto_eatout_othdiscr_social 5.50 0.507 10.85*** NA 0.00
tnc_single_ASC_auto_deficient_eatout_othdiscr_social-30.0 NA NA[***] 15.06 0.00
tnc_single_ASC_auto_sufficient_eatout_othdiscr_social-2.09 0.375-5.57*** NA 0.00
tnc_single_ASC_no_auto_eatout_othdiscr_social 6.70 0.465 14.39*** NA 0.00
walk_ASC_auto_deficient_eatout 2.96 0.472 6.27*** NA 0.00
walk_ASC_auto_sufficient_eatout 0.804 0.390 2.06* NA 0.00
walk_ASC_no_auto_eatout 10.2 0.673 15.17*** NA 0.00
walk_ferry_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork 0.940 NA NA[] 0.00 0.00
walk_light_rail_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork-11.6 1.64-7.06*** NA 0.00
walk_transit_ASC_auto_deficient_eatout 12.3 1.69 7.30*** NA 0.00
walk_transit_ASC_auto_sufficient_eatout 10.8 1.67 6.43*** NA 0.00
walk_transit_ASC_no_auto_eatout 20.5 1.50 13.66*** NA 0.00
walk_transit_CBD_ASC_eatout_escort_othdiscr_othmaint_shopping_social 0.691 0.157 4.40*** NA 0.00
bike_ASC_auto_deficient_escort-80.8 NA NA[***] 15.70 0.00
bike_ASC_auto_sufficient_escort-4.23 0.746-5.68*** NA 0.00
bike_ASC_no_auto_escort-82.6 NA NA[] 0.00 0.00
drive_transit_ASC_auto_deficient_escort 12.0 1.93 6.23*** NA 0.00
drive_transit_ASC_auto_sufficient_escort-38.4 NA NA[] 0.00 0.00
sr2_ASC_auto_deficient_escort-0.0289 0.415-0.07 NA 0.00
sr2_ASC_auto_sufficient_escort-0.446 0.436-1.02 NA 0.00
sr3p_ASC_auto_deficient_escort-0.242 0.420-0.58 NA 0.00
sr3p_ASC_auto_sufficient_escort-0.573 0.437-1.31 NA 0.00
sr3p_ASC_no_auto_escort-48.6 NA NA[] 0.00 0.00
taxi_ASC_auto_deficient_escort_othmaint_shopping 0.221 0.304 0.73 NA 0.00
taxi_ASC_auto_sufficient_escort_othmaint_shopping-1.87 0.295-6.35*** NA 0.00
taxi_ASC_no_auto_escort_othmaint_shopping 7.36 0.451 16.30*** NA 0.00
tnc_shared_ASC_auto_deficient_escort_othmaint_shopping-0.244 0.228-1.07 NA 0.00
tnc_shared_ASC_auto_sufficient_escort_othmaint_shopping-2.71 0.286-9.46*** NA 0.00
tnc_shared_ASC_no_auto_escort_othmaint_shopping 6.66 0.440 15.13*** NA 0.00
tnc_single_ASC_auto_deficient_escort_othmaint_shopping 0.896 0.219 4.09*** NA 0.00
tnc_single_ASC_auto_sufficient_escort_othmaint_shopping-1.75 0.263-6.64*** NA 0.00
tnc_single_ASC_no_auto_escort_othmaint_shopping 7.44 0.437 17.05*** NA 0.00
walk_ASC_auto_deficient_escort-103. NA NA[*] 1.98 0.00
walk_ASC_auto_sufficient_escort-2.20 0.773-2.84** NA 0.00
walk_ASC_no_auto_escort 7.37 1.26 5.87*** NA 0.00
walk_transit_ASC_auto_deficient_escort 8.76 1.87 4.70*** NA 0.00
walk_transit_ASC_auto_sufficient_escort 7.57 1.77 4.29*** NA 0.00
walk_transit_ASC_no_auto_escort-44.3 NA NA[] 0.00 0.00
bike_ASC_auto_deficient_othdiscr 0.229 0.469 0.49 NA 0.00
bike_ASC_auto_sufficient_othdiscr-1.92 0.393-4.87*** NA 0.00
bike_ASC_no_auto_othdiscr 5.46 0.640 8.52*** NA 0.00
drive_transit_ASC_auto_deficient_othdiscr-61.4 NA NA[] 0.00 0.00
drive_transit_ASC_auto_sufficient_othdiscr 11.3 1.94 5.85*** NA 0.00
sr2_ASC_auto_deficient_othdiscr 0.739 0.378 1.96 NA 0.00
sr2_ASC_auto_sufficient_othdiscr 0.123 0.299 0.41 NA 0.00
sr3p_ASC_auto_deficient_othdiscr 0.935 0.364 2.57* NA 0.00
sr3p_ASC_auto_sufficient_othdiscr 0.246 0.295 0.83 NA 0.00
sr3p_ASC_no_auto_othdiscr 6.41 0.497 12.89*** NA 0.00
walk_ASC_auto_deficient_othdiscr 1.63 0.545 2.98** NA 0.00
walk_ASC_auto_sufficient_othdiscr 1.09 0.261 4.20*** NA 0.00
walk_ASC_no_auto_othdiscr 8.77 0.545 16.09*** NA 0.00
walk_transit_ASC_auto_deficient_othdiscr 13.3 1.67 7.97*** NA 0.00
walk_transit_ASC_auto_sufficient_othdiscr 11.3 1.65 6.84*** NA 0.00
walk_transit_ASC_no_auto_othdiscr 20.4 1.44 14.14*** NA 0.00
bike_ASC_auto_deficient_othmaint-1.55 0.792-1.96 NA 0.00
bike_ASC_auto_sufficient_othmaint-2.48 0.551-4.51*** NA 0.00
bike_ASC_no_auto_othmaint 7.09 0.520 13.63*** NA 0.00
drive_transit_ASC_auto_deficient_othmaint-65.9 NA NA[] 0.00 0.00
drive_transit_ASC_auto_sufficient_othmaint-32.2 NA NA[] 0.00 0.00
sr2_ASC_auto_deficient_othmaint-0.174 0.421-0.41 NA 0.00
sr2_ASC_auto_sufficient_othmaint 0.222 0.306 0.72 NA 0.00
sr3p_ASC_auto_deficient_othmaint-1.77 0.796-2.22* NA 0.00
sr3p_ASC_auto_sufficient_othmaint-0.251 0.322-0.78 NA 0.00
sr3p_ASC_no_auto_othmaint 4.59 0.844 5.44*** NA 0.00
walk_ASC_auto_deficient_othmaint 1.83 0.694 2.64** NA 0.00
walk_ASC_auto_sufficient_othmaint 0.890 0.354 2.51* NA 0.00
walk_ASC_no_auto_othmaint 6.29 0.883 7.13*** NA 0.00
walk_transit_ASC_auto_deficient_othmaint 9.41 1.92 4.90*** NA 0.00
walk_transit_ASC_auto_sufficient_othmaint 11.0 1.66 6.59*** NA 0.00
walk_transit_ASC_no_auto_othmaint 20.6 1.45 14.26*** NA 0.00
bike_ASC_auto_deficient_school-0.418 1.07-0.39 NA 0.00
bike_ASC_auto_sufficient_school-3.51 0.742-4.72*** NA 0.00
bike_ASC_no_auto_school-28.7 NA NA[] 0.00 0.00
coef_age010_trn_multiplier_school_univ-1.11 0.279-3.98*** NA 0.00
coef_age1619_da_multiplier_school_univ-1.60 0.496-3.22** NA 0.00
coef_age16p_sr_multiplier_school_univ_work_atwork-0.721 0.357-2.02* NA 0.00
coef_hhsize2_sr_multiplier_school_univ-0.534 0.528-1.01 NA 0.00
coef_ivt_school_univ-0.0212 0.00207-10.25*** NA 0.00
commuter_rail_ASC_school_univ-32.4 NA NA[***] 230.28 0.00
drive_ferry_ASC_school_univ 2.02 NA NA[] 0.00 0.00
drive_light_rail_ASC_school_univ-19.1 0.0154-BIG*** NA 0.00
drive_transit_ASC_auto_deficient_school-96.0 NA NA[***] BIG 0.00
drive_transit_ASC_auto_sufficient_school-46.2 153.-0.30 NA 0.00
drive_transit_CBD_ASC_school_univ 62.5 153. 0.41 NA 0.00
express_bus_ASC_school_univ 0.325 NA NA[] 0.00 0.00
heavy_rail_ASC_school_univ-12.4 305.-0.04 NA 0.00
local_bus_ASC_school_univ-13.9 305.-0.05 NA 0.00
sr2_ASC_auto_deficient_school 0.116 0.860 0.14 NA 0.00
sr2_ASC_auto_sufficient_school-1.65 0.362-4.55*** NA 0.00
sr3p_ASC_auto_deficient_school 0.721 0.848 0.85 NA 0.00
sr3p_ASC_auto_sufficient_school-1.19 0.353-3.36*** NA 0.00
sr3p_ASC_no_auto_school-6.02 NA NA[] 0.00 0.00
taxi_ASC_auto_deficient_school 1.59 0.932 1.71 NA 0.00
taxi_ASC_auto_sufficient_school-1.63 0.602-2.71** NA 0.00
taxi_ASC_no_auto_school_univ-7.00 0.00 NA NA 0.00
tnc_shared_ASC_auto_deficient_school 0.968 0.905 1.07 NA 0.00
tnc_shared_ASC_auto_sufficient_school-2.77 0.626-4.43*** NA 0.00
tnc_shared_ASC_no_auto_school-7.00 0.00 NA NA 0.00
tnc_single_ASC_auto_deficient_school-3.36 113.-0.03 NA 0.00
tnc_single_ASC_auto_sufficient_school-2.37 0.650-3.65*** NA 0.00
tnc_single_ASC_no_auto_school-7.00 0.00 NA NA 0.00
walk_ASC_auto_deficient_school 3.23 0.931 3.47*** NA 0.00
walk_ASC_auto_sufficient_school 0.692 0.421 1.64 NA 0.00
walk_ASC_no_auto_school 31.9 NA NA[***] 241.14 0.00
walk_ferry_ASC_school_univ 2.02 NA NA[] 0.00 0.00
walk_light_rail_ASC_school_univ-12.1 305.-0.04 NA 0.00
walk_transit_ASC_auto_deficient_school 17.1 305. 0.06 NA 0.00
walk_transit_ASC_auto_sufficient_school 14.2 305. 0.05 NA 0.00
walk_transit_ASC_no_auto_school 48.7 NA NA[***] BIG 0.00
walk_transit_CBD_ASC_school_univ 0.788 0.260 3.03** NA 0.00
bike_ASC_auto_deficient_shopping-0.982 0.499-1.97* NA 0.00
bike_ASC_auto_sufficient_shopping-4.77 0.991-4.81*** NA 0.00
bike_ASC_no_auto_shopping 6.35 0.481 13.21*** NA 0.00
drive_transit_ASC_auto_deficient_shopping-69.1 NA NA[] 0.00 0.00
drive_transit_ASC_auto_sufficient_shopping-74.4 NA NA[] 0.00 0.00
sr2_ASC_auto_deficient_shopping 0.341 0.336 1.01 NA 0.00
sr2_ASC_auto_sufficient_shopping 0.145 0.293 0.49 NA 0.00
sr3p_ASC_auto_deficient_shopping-0.262 0.376-0.70 NA 0.00
sr3p_ASC_auto_sufficient_shopping-0.296 0.301-0.98 NA 0.00
sr3p_ASC_no_auto_shopping 5.65 0.463 12.20*** NA 0.00
walk_ASC_auto_deficient_shopping 2.80 0.360 7.78*** NA 0.00
walk_ASC_auto_sufficient_shopping 0.473 0.249 1.90 NA 0.00
walk_ASC_no_auto_shopping 8.22 0.493 16.65*** NA 0.00
walk_transit_ASC_auto_deficient_shopping 11.3 1.67 6.73*** NA 0.00
walk_transit_ASC_auto_sufficient_shopping 9.75 1.66 5.86*** NA 0.00
walk_transit_ASC_no_auto_shopping 19.7 1.43 13.75*** NA 0.00
bike_ASC_auto_deficient_social-0.269 1.04-0.26 NA 0.00
bike_ASC_auto_sufficient_social-0.854 0.716-1.19 NA 0.00
bike_ASC_no_auto_social 5.51 0.583 9.46*** NA 0.00
drive_transit_ASC_auto_deficient_social-52.8 NA NA[] 0.00 0.00
drive_transit_ASC_auto_sufficient_social-48.0 NA NA[] 0.00 0.00
sr2_ASC_auto_deficient_social 1.43 0.463 3.08** NA 0.00
sr2_ASC_auto_sufficient_social 0.977 0.351 2.78** NA 0.00
sr3p_ASC_auto_deficient_social 0.676 0.546 1.24 NA 0.00
sr3p_ASC_auto_sufficient_social 0.757 0.362 2.09* NA 0.00
sr3p_ASC_no_auto_social 3.97 0.820 4.84*** NA 0.00
walk_ASC_auto_deficient_social 3.17 0.911 3.48*** NA 0.00
walk_ASC_auto_sufficient_social 2.66 0.491 5.42*** NA 0.00
walk_ASC_no_auto_social 6.44 0.683 9.43*** NA 0.00
walk_transit_ASC_auto_deficient_social 12.9 1.75 7.36*** NA 0.00
walk_transit_ASC_auto_sufficient_social 12.6 1.67 7.54*** NA 0.00
walk_transit_ASC_no_auto_social 19.0 1.46 13.02*** NA 0.00
bike_ASC_auto_deficient_univ-0.669 NA NA[] 0.00 0.00
bike_ASC_auto_sufficient_univ-1.94 NA NA[] 0.00 0.00
bike_ASC_no_auto_univ 4.29 NA NA[] 0.00 0.00
drive_transit_ASC_auto_deficient_univ 1.85 NA NA[] 0.00 0.00
drive_transit_ASC_auto_sufficient_univ 1.36 NA NA[] 0.00 0.00
sr2_ASC_auto_deficient_univ-1.69 NA NA[] 0.00 0.00
sr2_ASC_auto_sufficient_univ-1.86 NA NA[] 0.00 0.00
sr3p_ASC_auto_deficient_univ-1.73 NA NA[] 0.00 0.00
sr3p_ASC_auto_sufficient_univ-1.90 4.83e-14-BIG*** NA 0.00
sr3p_ASC_no_auto_univ-6.06 2.85e-18-BIG*** NA 0.00
taxi_ASC_auto_deficient_univ 4.25 0.00 NA[] 0.00 0.00
taxi_ASC_auto_sufficient_univ-0.313 0.00 NA[] 0.00 0.00
tnc_shared_ASC_auto_deficient_univ 3.25 0.00 NA[] 0.00 0.00
tnc_shared_ASC_auto_sufficient_univ-0.907 0.00 NA[] 0.00 0.00
tnc_shared_ASC_no_auto_univ-5.81 0.00 NA[] 0.00 0.00
tnc_single_ASC_auto_deficient_univ 1.02 0.00 NA[] 0.00 0.00
tnc_single_ASC_auto_sufficient_univ 0.209 0.00 NA[] 0.00 0.00
tnc_single_ASC_no_auto_univ-2.52 0.00 NA[] 0.00 0.00
walk_ASC_auto_deficient_univ 4.51 0.00 NA[] 0.00 0.00
walk_ASC_auto_sufficient_univ 1.06 0.00 NA[] 0.00 0.00
walk_ASC_no_auto_univ 6.41 0.00 NA[] 0.00 0.00
walk_transit_ASC_auto_deficient_univ 3.14 0.00 NA[] 0.00 0.00
walk_transit_ASC_auto_sufficient_univ 0.473 0.00 NA[] 0.00 0.00
walk_transit_ASC_no_auto_univ 8.79 0.00 NA[] 0.00 0.00
bike_ASC_auto_deficient_work 0.109 0.159 0.69 NA 0.00
bike_ASC_auto_sufficient_work-1.71 0.201-8.54*** NA 0.00
bike_ASC_no_auto_work 7.92 0.643 12.31*** NA 0.00
coef_hhsize1_sr_multiplier_work-0.679 0.174-3.90*** NA 0.00
coef_ivt_work-0.0131 0.000672-19.44*** NA 0.00
commuter_rail_ASC_work 12.1 0.561 21.60*** NA 0.00
drive_ferry_ASC_work 0.933 0.00 NA[] 0.00 0.00
drive_light_rail_ASC_work-36.0 NA NA[] 0.00 0.00
drive_transit_ASC_auto_deficient_work-10.8 0.493-21.96*** NA 0.00
drive_transit_ASC_auto_sufficient_work-11.9 0.496-24.03*** NA 0.00
drive_transit_CBD_ASC_work 1.43 0.593 2.41* NA 0.00
express_bus_ASC_work-54.6 NA NA[] 0.00 0.00
heavy_rail_ASC_work 11.0 0.185 59.50*** NA 0.00
local_bus_ASC_work 10.3 0.173 59.60*** NA 0.00
sr2_ASC_auto_deficient_work 0.463 0.367 1.26 NA 0.00
sr2_ASC_auto_sufficient_work-0.391 0.369-1.06 NA 0.00
sr3p_ASC_auto_deficient_work-0.0501 0.372-0.13 NA 0.00
sr3p_ASC_auto_sufficient_work-0.716 0.373-1.92 NA 0.00
sr3p_ASC_no_auto_work 5.29 0.646 8.18*** NA 0.00
taxi_ASC_auto_deficient_work-1.36 0.326-4.16*** NA 0.00
taxi_ASC_auto_sufficient_work-56.0 NA NA[***] 89.02 0.00
taxi_ASC_no_auto_work 9.43 0.651 14.50*** NA 0.00
tnc_shared_ASC_auto_deficient_work-2.43 0.420-5.80*** NA 0.00
tnc_shared_ASC_auto_sufficient_work-63.4 NA NA[***] 180.49 0.00
tnc_shared_ASC_no_auto_work-47.3 NA NA[] 0.00 0.00
tnc_single_ASC_auto_deficient_work-0.788 0.211-3.73*** NA 0.00
tnc_single_ASC_auto_sufficient_work-4.88 1.00-4.86*** NA 0.00
tnc_single_ASC_no_auto_work 10.3 0.630 16.35*** NA 0.00
walk_ASC_auto_deficient_work 2.13 0.200 10.62*** NA 0.00
walk_ASC_auto_sufficient_work 0.176 0.215 0.82 NA 0.00
walk_ASC_no_auto_work 10.4 0.654 15.83*** NA 0.00
walk_ferry_ASC_work 0.933 0.00 NA[] 0.00 0.00
walk_light_rail_ASC_work 11.2 0.178 62.93*** NA 0.00
walk_transit_ASC_auto_deficient_work-9.77 0.182-53.62*** NA 0.00
walk_transit_ASC_auto_sufficient_work-11.3 0.187-60.43*** NA 0.00
walk_transit_ASC_no_auto_work-0.818 0.576-1.42 NA 0.00
walk_transit_CBD_ASC_work 0.977 0.121 8.07*** NA 0.00
bike_ASC_auto_deficient_atwork-1.38 0.914-1.51 NA 0.00
bike_ASC_auto_sufficient_atwork 15.7 726. 0.02 NA 0.00
bike_ASC_no_auto_atwork-28.4 NA NA[] 0.00 0.00
coef_age010_trn_multiplier_atwork 0.000722 0.00 NA[] 0.00 0.00
coef_age1619_da_multiplier_atwork-0.807 1.03-0.79 NA 0.00
coef_ivt_atwork-0.0210 0.00255-8.26*** NA 0.00
drive_transit_ASC_auto_deficient_atwork-999. 0.00 NA[] 0.00 0.00
drive_transit_ASC_auto_sufficient_atwork-999. 0.00 NA[] 0.00 0.00
drive_transit_CBD_ASC_atwork 0.564 0.00 NA[] 0.00 0.00
sr2_ASC_auto_deficient_atwork-1.89 0.573-3.31*** NA 0.00
sr2_ASC_auto_sufficient_atwork-0.652 0.398-1.64 NA 0.00
sr3p_ASC_auto_deficient_atwork-2.38 0.580-4.11*** NA 0.00
sr3p_ASC_auto_sufficient_atwork-0.822 0.401-2.05* NA 0.00
sr3p_ASC_no_auto_atwork 6.24 0.790 7.90*** NA 0.00
taxi_ASC_auto_deficient_atwork-28.5 NA NA[***] 64.57 0.00
taxi_ASC_auto_sufficient_atwork-28.6 NA NA[***] 38.13 0.00
taxi_ASC_no_auto_atwork 10.2 0.970 10.52*** NA 0.00
tnc_shared_ASC_auto_deficient_atwork-3.91 0.639-6.12*** NA 0.00
tnc_shared_ASC_auto_sufficient_atwork-2.69 0.496-5.42*** NA 0.00
tnc_shared_ASC_no_auto_atwork 9.06 0.890 10.18*** NA 0.00
tnc_single_ASC_auto_deficient_atwork-3.11 0.611-5.09*** NA 0.00
tnc_single_ASC_auto_sufficient_atwork-2.63 0.529-4.97*** NA 0.00
tnc_single_ASC_no_auto_atwork 10.5 0.917 11.43*** NA 0.00
walk_ASC_auto_deficient_atwork 1.82 0.671 2.72** NA 0.00
walk_ASC_auto_sufficient_atwork 1.43 0.379 3.77*** NA 0.00
walk_ASC_no_auto_atwork 12.8 1.04 12.31*** NA 0.00
walk_transit_ASC_auto_deficient_atwork 8.99 1.76 5.10*** NA 0.00
walk_transit_ASC_auto_sufficient_atwork 9.13 1.81 5.04*** NA 0.00
walk_transit_ASC_no_auto_atwork 21.2 1.66 12.81*** NA 0.00
walk_transit_CBD_ASC_atwork 0.352 0.549 0.64 NA 0.00
\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model.parameter_summary()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "TojXWivZsx7M" - }, - "source": [ - "# Output Estimation Results" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "from activitysim.estimation.larch import update_coefficients\n", - "result_dir = data.edb_directory/\"estimated\"\n", - "update_coefficients(\n", - " model, data, result_dir,\n", - " output_file=f\"{modelname}_coefficients_revised.csv\",\n", - ");" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Write the model estimation report, including coefficient t-statistic and log likelihood" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jeffnewman/LocalGit/larch/larch/util/excel.py:521: FutureWarning: Use of **kwargs is deprecated, use engine_kwargs instead.\n", - " xl = ExcelWriter(filename, engine='xlsxwriter_larch', model=model, **kwargs)\n" - ] - } - ], - "source": [ - "model.to_xlsx(\n", - " result_dir/f\"{modelname}_model_estimation.xlsx\", \n", - " data_statistics=False,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Next Steps\n", - "\n", - "The final step is to either manually or automatically copy the `*_coefficients_revised.csv` file to the configs folder, rename it to `*_coefficients.csv`, and run ActivitySim in simulation mode." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
coefficient_namevalueconstrainParameter     
0coef_one1.000000T-999-999. 0.00 NA 0.00
1coef_nest_root1.000000T1 1.00 0.00 NA 0.00
2coef_nest_AUTO0.720000Tbike_ASC_auto_deficient_atwork-1.05 0.344-3.07** 0.00
3coef_nest_AUTO_DRIVEALONE0.350000Tbike_ASC_auto_deficient_eatout-1.46 0.396-3.69*** 0.00
4coef_nest_AUTO_SHAREDRIDE20.350000Tbike_ASC_auto_deficient_escort-3.98 0.406-9.79*** 0.00
............bike_ASC_auto_deficient_othdiscr-0.910 0.203-4.47*** 0.00
302walk_transit_CBD_ASC_atwork0.351950Fbike_ASC_auto_deficient_othmaint-2.06 0.323-6.37*** 0.00
303drive_transit_CBD_ASC_eatout_escort_othdiscr_o...0.553404Fbike_ASC_auto_deficient_school-1.20 0.964-1.24 0.00
304drive_transit_CBD_ASC_school_univ62.459413Fbike_ASC_auto_deficient_shopping-1.74 0.218-7.99*** 0.00
305drive_transit_CBD_ASC_work1.432631Fbike_ASC_auto_deficient_social 0.361 0.325 1.11 0.00
bike_ASC_auto_deficient_univ-0.669 NA NA 0.00
bike_ASC_auto_deficient_work-0.279 0.0926-3.01** 0.00
bike_ASC_auto_sufficient_atwork 15.7 470. 0.03 0.00
bike_ASC_auto_sufficient_eatout-1.85 0.159-11.60*** 0.00
bike_ASC_auto_sufficient_escort-5.65 0.337-16.76*** 0.00
bike_ASC_auto_sufficient_othdiscr-1.86 0.105-17.64*** 0.00
bike_ASC_auto_sufficient_othmaint-3.17 0.193-16.40*** 0.00
bike_ASC_auto_sufficient_school-2.21 0.919-2.40* 0.00
bike_ASC_auto_sufficient_shopping-3.14 0.138-22.70*** 0.00
bike_ASC_auto_sufficient_social-2.14 0.207-10.36*** 0.00
bike_ASC_auto_sufficient_univ-1.94 0.00657-295.46*** 0.00
bike_ASC_auto_sufficient_work-1.93 0.0814-23.72*** 0.00
bike_ASC_no_auto_atwork-0.910 76.5-0.01 0.00
bike_ASC_no_auto_eatout 0.428 75.9 0.01 0.00
bike_ASC_no_auto_escort-0.745 75.9-0.01 0.00
bike_ASC_no_auto_othdiscr-0.501 75.9-0.01 0.00
bike_ASC_no_auto_othmaint 1.53 75.9 0.02 0.00
bike_ASC_no_auto_school 13.5 109. 0.12 0.00
bike_ASC_no_auto_shopping 0.951 75.9 0.01 0.00
bike_ASC_no_auto_social 0.374 75.9 0.00 0.00
bike_ASC_no_auto_univ 4.29 0.00148 BIG*** 0.00
bike_ASC_no_auto_work 3.43 75.9 0.05 0.00
coef_age010_trn_multiplier_atwork 0.000722 0.00785 0.09 0.00
coef_age010_trn_multiplier_eatout_escort_othdiscr_othmaint_shopping_social_work 0.490 0.176 2.79** 0.00
coef_age010_trn_multiplier_school_univ-0.851 0.0900-9.46*** 0.00
coef_age1619_da_multiplier_atwork-0.175 0.205-0.85 0.00
coef_age1619_da_multiplier_eatout_escort_othdiscr_othmaint_shopping_social_work 0.0357 0.0425 0.84 0.00
coef_age1619_da_multiplier_school_univ-1.67 0.0748-22.31*** 0.00
coef_age16p_sr_multiplier_eatout_escort_othdiscr_othmaint_shopping_social-1.58 0.0842-18.71*** 0.00
coef_age16p_sr_multiplier_school_univ_work_atwork-0.688 0.0682-10.08*** 0.00
coef_hhsize1_sr_multiplier_eatout_escort_othdiscr_othmaint_school_shopping_social_univ_atwork-0.0721 0.0312-2.31* 0.00
coef_hhsize1_sr_multiplier_work-0.822 0.0571-14.39*** 0.00
coef_hhsize2_sr_multiplier_eatout_escort_othdiscr_othmaint_shopping_social_work_atwork-0.00404 0.0178-0.23 0.00
coef_hhsize2_sr_multiplier_school_univ-0.743 0.0912-8.15*** 0.00
coef_ivt_atwork-0.0112 0.000479-23.41*** 0.00
coef_ivt_eatout_escort_othdiscr_othmaint_shopping_social-0.00691 0.000145-47.76*** 0.00
coef_ivt_school_univ-0.0103 0.000316-32.62*** 0.00
coef_ivt_work-0.00791 0.000147-53.62*** 0.00
coef_nest_AUTO 0.720 0.00 NA 1.00
coef_nest_AUTO_DRIVEALONE 0.350 0.00 NA 1.00
coef_nest_AUTO_SHAREDRIDE2 0.350 0.00 NA 1.00
coef_nest_AUTO_SHAREDRIDE3 0.350 0.00 NA 1.00
coef_nest_NONMOTORIZED 0.720 0.00 NA 1.00
coef_nest_RIDEHAIL 0.360 0.00 NA 1.00
coef_nest_TRANSIT 0.720 0.00 NA 1.00
coef_nest_TRANSIT_DRIVEACCESS 0.500 0.00 NA 1.00
coef_nest_TRANSIT_WALKACCESS 0.500 0.00 NA 1.00
coef_test_eatout_escort_othdiscr_othmaint_shopping_social_work_atwork 0.0770 0.0494 1.56 0.00
coef_test_school_univ 0.518 0.913 0.57 0.00
commuter_rail_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork-0.958 16.4-0.06 0.00
commuter_rail_ASC_school_univ-0.258 NA NA 0.00
commuter_rail_ASC_work 0.196 278. 0.00 0.00
drive_ferry_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork-0.628 16.4-0.04 0.00
drive_ferry_ASC_school_univ 1.43 NA NA 0.00
drive_ferry_ASC_work 0.232 278. 0.00 0.00
drive_light_rail_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork-0.325 16.4-0.02 0.00
drive_light_rail_ASC_school_univ 0.691 NA NA 0.00
drive_light_rail_ASC_work 0.530 278. 0.00 0.00
drive_transit_ASC_auto_deficient_atwork-999. 0.000360-BIG*** 0.00
drive_transit_ASC_auto_deficient_eatout-0.173 16.4-0.01 0.00
drive_transit_ASC_auto_deficient_escort-2.19 16.4-0.13 0.00
drive_transit_ASC_auto_deficient_othdiscr-0.852 16.4-0.05 0.00
drive_transit_ASC_auto_deficient_othmaint-1.36 16.4-0.08 0.00
drive_transit_ASC_auto_deficient_school 1.59 NA NA 0.00
drive_transit_ASC_auto_deficient_shopping-1.58 16.4-0.10 0.00
drive_transit_ASC_auto_deficient_social 0.610 16.4 0.04 0.00
drive_transit_ASC_auto_deficient_univ 1.85 NA NA 0.00
drive_transit_ASC_auto_deficient_work-0.824 278.-0.00 0.00
drive_transit_ASC_auto_sufficient_atwork-999. 0.000176-BIG*** 0.00
drive_transit_ASC_auto_sufficient_eatout-1.65 16.4-0.10 0.00
drive_transit_ASC_auto_sufficient_escort-5.31 16.4-0.32 0.00
drive_transit_ASC_auto_sufficient_othdiscr-1.24 16.4-0.08 0.00
drive_transit_ASC_auto_sufficient_othmaint-2.80 16.4-0.17 0.00
drive_transit_ASC_auto_sufficient_school 0.105 NA NA 0.00
drive_transit_ASC_auto_sufficient_shopping-4.16 16.4-0.25 0.00
drive_transit_ASC_auto_sufficient_social-1.37 16.4-0.08 0.00
drive_transit_ASC_auto_sufficient_univ 1.36 NA NA 0.00
drive_transit_ASC_auto_sufficient_work-1.73 278.-0.01 0.00
drive_transit_ASC_no_auto_all 0.00 NA NA 0.00
drive_transit_CBD_ASC_atwork 0.564 NA NA 0.00
drive_transit_CBD_ASC_eatout_escort_othdiscr_othmaint_shopping_social 1.37 0.142 9.63*** 0.00
drive_transit_CBD_ASC_school_univ 1.23 0.251 4.89*** 0.00
drive_transit_CBD_ASC_work 1.64 0.0698 23.45*** 0.00
express_bus_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork-0.342 16.4-0.02 0.00
express_bus_ASC_school_univ-0.451 NA NA 0.00
express_bus_ASC_work-0.881 278.-0.00 0.00
heavy_rail_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork-0.207 16.4-0.01 0.00
heavy_rail_ASC_school_univ 0.110 NA NA 0.00
heavy_rail_ASC_work 0.513 278. 0.00 0.00
joint_bike_ASC_auto_deficient_all-6.18 1.34-4.62*** 0.00
joint_bike_ASC_auto_sufficient_all-7.10 0.465-15.28*** 0.00
joint_bike_ASC_no_auto_all-2.67 1.08-2.48* 0.00
joint_drive_transit_ASC_auto_deficient_all-6.04 16.4-0.37 0.00
joint_drive_transit_ASC_auto_sufficient_all-7.79 16.4-0.48 0.00
joint_drive_transit_ASC_no_auto_all 0.00 0.00 NA 0.00
joint_sr2_ASC_auto_deficient_all 0.00 0.00 NA 0.00
joint_sr2_ASC_auto_sufficient_all 0.00 0.00 NA 0.00
joint_sr2_ASC_no_auto_all 0.00 0.00 NA 0.00
joint_sr3p_ASC_auto_deficient_all-1.49 0.258-5.77*** 0.00
joint_sr3p_ASC_auto_sufficient_all-2.29 0.133-17.17*** 0.00
joint_sr3p_ASC_no_auto_all 0.699 0.470 1.49 0.00
joint_taxi_ASC_auto_deficient_all-9.82 8.15-1.21 0.00
joint_taxi_ASC_auto_sufficient_all-11.7 0.00 NA 0.00
joint_taxi_ASC_no_auto_all-4.58 4.29-1.07 0.00
joint_tnc_shared_ASC_auto_deficient_all-11.2 17.0-0.66 0.00
joint_tnc_shared_ASC_auto_sufficient_all-13.2 0.00 NA 0.00
joint_tnc_shared_ASC_no_auto_all-4.72 2.18-2.17* 0.00
joint_tnc_single_ASC_auto_deficient_all-9.90 7.20-1.38 0.00
joint_tnc_single_ASC_auto_sufficient_all-14.0 0.00 NA 0.00
joint_tnc_single_ASC_no_auto_all-3.86 2.05-1.88 0.00
joint_walk_ASC_auto_deficient_all-2.22 0.376-5.89*** 0.00
joint_walk_ASC_auto_sufficient_all-4.34 0.245-17.76*** 0.00
joint_walk_ASC_no_auto_all-0.367 0.727-0.51 0.00
joint_walk_transit_ASC_auto_deficient_all-5.30 16.4-0.32 0.00
joint_walk_transit_ASC_auto_sufficient_all-18.3 655.-0.03 0.00
joint_walk_transit_ASC_no_auto_all 0.386 16.4 0.02 0.00
local_bus_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork-1.18 16.4-0.07 0.00
local_bus_ASC_school_univ-0.819 NA NA 0.00
local_bus_ASC_work-0.179 278.-0.00 0.00
sr2_ASC_auto_deficient_atwork-1.49 0.132-11.34*** 0.00
sr2_ASC_auto_deficient_eatout 0.874 0.155 5.64*** 0.00
sr2_ASC_auto_deficient_escort 0.254 0.160 1.58 0.00
sr2_ASC_auto_deficient_othdiscr 1.06 0.131 8.13*** 0.00
sr2_ASC_auto_deficient_othmaint 0.584 0.145 4.02*** 0.00
sr2_ASC_auto_deficient_school 0.518 0.928 0.56 0.00
sr2_ASC_auto_deficient_shopping 0.522 0.127 4.09*** 0.00
sr2_ASC_auto_deficient_social 2.30 0.215 10.70*** 0.00
sr2_ASC_auto_deficient_univ-1.69 NA NA 0.00
sr2_ASC_auto_deficient_work 0.424 0.0892 4.76*** 0.00
sr2_ASC_auto_sufficient_atwork-0.772 0.0784-9.85*** 0.00
sr2_ASC_auto_sufficient_eatout 1.17 0.105 11.19*** 0.00
sr2_ASC_auto_sufficient_escort 0.427 0.129 3.31*** 0.00
sr2_ASC_auto_sufficient_othdiscr 0.830 0.101 8.23*** 0.00
sr2_ASC_auto_sufficient_othmaint 0.642 0.103 6.24*** 0.00
sr2_ASC_auto_sufficient_school-0.720 0.916-0.79 0.00
sr2_ASC_auto_sufficient_shopping 0.518 0.100 5.16*** 0.00
sr2_ASC_auto_sufficient_social 0.867 0.110 7.88*** 0.00
sr2_ASC_auto_sufficient_univ-1.86 NA NA 0.00
sr2_ASC_auto_sufficient_work-0.295 0.0860-3.43*** 0.00
sr2_ASC_no_auto_all 1.22 75.9 0.02 0.00
sr3p_ASC_auto_deficient_atwork-1.81 0.136-13.30*** 0.00
sr3p_ASC_auto_deficient_eatout 0.184 0.187 0.98 0.00
sr3p_ASC_auto_deficient_escort 0.0300 0.163 0.18 0.00
sr3p_ASC_auto_deficient_othdiscr 1.42 0.124 11.40*** 0.00
sr3p_ASC_auto_deficient_othmaint-0.607 0.223-2.71** 0.00
sr3p_ASC_auto_deficient_school 1.10 0.927 1.18 0.00
sr3p_ASC_auto_deficient_shopping 0.180 0.138 1.31 0.00
sr3p_ASC_auto_deficient_social 2.04 0.223 9.16*** 0.00
sr3p_ASC_auto_deficient_univ-1.73 1.83e-05-BIG*** 0.00
sr3p_ASC_auto_deficient_work-0.127 0.0922-1.38 0.00
sr3p_ASC_auto_sufficient_atwork-0.954 0.0797-11.97*** 0.00
sr3p_ASC_auto_sufficient_eatout 1.13 0.105 10.73*** 0.00
sr3p_ASC_auto_sufficient_escort 0.400 0.129 3.10** 0.00
sr3p_ASC_auto_sufficient_othdiscr 0.929 0.101 9.25*** 0.00
sr3p_ASC_auto_sufficient_othmaint 0.257 0.105 2.44* 0.00
sr3p_ASC_auto_sufficient_school-0.151 0.916-0.16 0.00
sr3p_ASC_auto_sufficient_shopping 0.275 0.101 2.72** 0.00
sr3p_ASC_auto_sufficient_social 0.870 0.110 7.91*** 0.00
sr3p_ASC_auto_sufficient_univ-1.90 2.57e-05-BIG*** 0.00
sr3p_ASC_auto_sufficient_work-0.662 0.0868-7.63*** 0.00
sr3p_ASC_no_auto_atwork 1.49 75.9 0.02 0.00
sr3p_ASC_no_auto_eatout 1.62 75.9 0.02 0.00
sr3p_ASC_no_auto_escort-1.87 75.9-0.02 0.00
sr3p_ASC_no_auto_othdiscr 1.43 75.9 0.02 0.00
sr3p_ASC_no_auto_othmaint 0.296 75.9 0.00 0.00
sr3p_ASC_no_auto_school-6.02 105.-0.06 0.00
sr3p_ASC_no_auto_shopping 0.881 75.9 0.01 0.00
sr3p_ASC_no_auto_social-1.17 75.9-0.02 0.00
sr3p_ASC_no_auto_univ-6.06 1.79e-05-BIG*** 0.00
sr3p_ASC_no_auto_work 0.614 75.9 0.01 0.00
taxi_ASC_auto_deficient_atwork-4.59 0.435-10.57*** 0.00
taxi_ASC_auto_deficient_eatout_othdiscr_social-3.26 0.483-6.76*** 0.00
taxi_ASC_auto_deficient_escort_othmaint_shopping-0.930 0.118-7.89*** 0.00
taxi_ASC_auto_deficient_school 0.840 0.935 0.90 0.00
taxi_ASC_auto_deficient_univ 4.25 1.62e-05 BIG*** 0.00
taxi_ASC_auto_deficient_work-2.04 0.205-9.95*** 0.00
taxi_ASC_auto_sufficient_atwork-3.34 0.150-22.22*** 0.00
taxi_ASC_auto_sufficient_eatout_othdiscr_social-3.93 0.246-15.96*** 0.00
taxi_ASC_auto_sufficient_escort_othmaint_shopping-2.78 0.0965-28.85*** 0.00
taxi_ASC_auto_sufficient_school-2.26 0.922-2.45* 0.00
taxi_ASC_auto_sufficient_univ-0.313 NA NA 0.00
taxi_ASC_auto_sufficient_work-4.85 0.303-16.01*** 0.00
taxi_ASC_no_auto_atwork 3.65 75.9 0.05 0.00
taxi_ASC_no_auto_eatout_othdiscr_social-0.571 75.9-0.01 0.00
taxi_ASC_no_auto_escort_othmaint_shopping 1.45 75.9 0.02 0.00
taxi_ASC_no_auto_school_univ-7.00 0.00 NA 0.00
taxi_ASC_no_auto_work 3.94 75.9 0.05 0.00
tnc_shared_ASC_auto_deficient_atwork-5.17 0.414-12.49*** 0.00
tnc_shared_ASC_auto_deficient_eatout_othdiscr_social-4.46 0.900-4.95*** 0.00
tnc_shared_ASC_auto_deficient_escort_othmaint_shopping-1.24 0.109-11.36*** 0.00
tnc_shared_ASC_auto_deficient_school 0.283 0.933 0.30 0.00
tnc_shared_ASC_auto_deficient_univ 3.25 1.25e-05 BIG*** 0.00
tnc_shared_ASC_auto_deficient_work-3.40 0.214-15.89*** 0.00
tnc_shared_ASC_auto_sufficient_atwork-4.08 0.166-24.64*** 0.00
tnc_shared_ASC_auto_sufficient_eatout_othdiscr_social-4.32 0.199-21.67*** 0.00
tnc_shared_ASC_auto_sufficient_escort_othmaint_shopping-3.29 0.0920-35.76*** 0.00
tnc_shared_ASC_auto_sufficient_school-3.62 0.927-3.91*** 0.00
tnc_shared_ASC_auto_sufficient_univ-0.907 NA NA 0.00
tnc_shared_ASC_auto_sufficient_work-6.48 0.411-15.77*** 0.00
tnc_shared_ASC_no_auto_atwork 3.06 75.9 0.04 0.00
tnc_shared_ASC_no_auto_eatout_othdiscr_social-0.0803 75.9-0.00 0.00
tnc_shared_ASC_no_auto_escort_othmaint_shopping 0.685 75.9 0.01 0.00
tnc_shared_ASC_no_auto_school-7.00 0.00 NA 0.00
tnc_shared_ASC_no_auto_univ-5.81 NA NA 0.00
tnc_shared_ASC_no_auto_work 2.23 75.9 0.03 0.00
tnc_single_ASC_auto_deficient_atwork-4.24 0.319-13.29*** 0.00
tnc_single_ASC_auto_deficient_eatout_othdiscr_social-3.27 0.436-7.50*** 0.00
tnc_single_ASC_auto_deficient_escort_othmaint_shopping-0.340 0.102-3.34*** 0.00
tnc_single_ASC_auto_deficient_school-0.0137 0.943-0.01 0.00
tnc_single_ASC_auto_deficient_univ 1.02 NA NA 0.00
tnc_single_ASC_auto_deficient_work-1.30 0.115-11.28*** 0.00
tnc_single_ASC_auto_sufficient_atwork-3.14 0.126-25.00*** 0.00
tnc_single_ASC_auto_sufficient_eatout_othdiscr_social-3.26 0.149-21.84*** 0.00
tnc_single_ASC_auto_sufficient_escort_othmaint_shopping-2.20 0.0833-26.43*** 0.00
tnc_single_ASC_auto_sufficient_school-2.07 0.920-2.25* 0.00
tnc_single_ASC_auto_sufficient_univ 0.209 5.09e-06 BIG*** 0.00
tnc_single_ASC_auto_sufficient_work-4.24 0.182-23.29*** 0.00
tnc_single_ASC_no_auto_atwork 4.26 75.9 0.06 0.00
tnc_single_ASC_no_auto_eatout_othdiscr_social 0.982 75.9 0.01 0.00
tnc_single_ASC_no_auto_escort_othmaint_shopping 1.60 75.9 0.02 0.00
tnc_single_ASC_no_auto_school-7.00 0.00 NA 0.00
tnc_single_ASC_no_auto_univ-2.52 NA NA 0.00
tnc_single_ASC_no_auto_work 5.31 75.9 0.07 0.00
walk_ASC_auto_deficient_atwork 0.227 0.123 1.84 0.00
walk_ASC_auto_deficient_eatout 2.17 0.198 10.96*** 0.00
walk_ASC_auto_deficient_escort-1.98 0.265-7.46*** 0.00
walk_ASC_auto_deficient_othdiscr 1.21 0.154 7.86*** 0.00
walk_ASC_auto_deficient_othmaint 0.145 0.208 0.70 0.00
walk_ASC_auto_deficient_school 2.61 0.931 2.81** 0.00
walk_ASC_auto_deficient_shopping 0.909 0.137 6.63*** 0.00
walk_ASC_auto_deficient_social 2.26 0.299 7.56*** 0.00
walk_ASC_auto_deficient_univ 4.51 1.92e-06 BIG*** 0.00
walk_ASC_auto_deficient_work 1.70 0.0955 17.84*** 0.00
walk_ASC_auto_sufficient_atwork 0.0776 0.0580 1.34 0.00
walk_ASC_auto_sufficient_eatout 0.613 0.106 5.78*** 0.00
walk_ASC_auto_sufficient_escort-1.74 0.117-14.88*** 0.00
walk_ASC_auto_sufficient_othdiscr 0.305 0.0829 3.68*** 0.00
walk_ASC_auto_sufficient_othmaint-0.168 0.0955-1.76 0.00
walk_ASC_auto_sufficient_school 0.374 0.917 0.41 0.00
walk_ASC_auto_sufficient_shopping-0.304 0.0811-3.75*** 0.00
walk_ASC_auto_sufficient_social 0.592 0.117 5.04*** 0.00
walk_ASC_auto_sufficient_univ 1.06 NA NA 0.00
walk_ASC_auto_sufficient_work-0.291 0.0787-3.70*** 0.00
walk_ASC_no_auto_atwork 6.63 75.9 0.09 0.00
walk_ASC_no_auto_eatout 4.41 75.9 0.06 0.00
walk_ASC_no_auto_escort 2.51 75.9 0.03 0.00
walk_ASC_no_auto_othdiscr 2.89 75.9 0.04 0.00
walk_ASC_no_auto_othmaint 0.930 75.9 0.01 0.00
walk_ASC_no_auto_school 17.8 109. 0.16 0.00
walk_ASC_no_auto_shopping 2.17 75.9 0.03 0.00
walk_ASC_no_auto_social 1.74 75.9 0.02 0.00
walk_ASC_no_auto_univ 6.41 NA NA 0.00
walk_ASC_no_auto_work 5.28 75.9 0.07 0.00
walk_ferry_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork-0.239 16.4-0.01 0.00
walk_ferry_ASC_school_univ 0.858 NA NA 0.00
walk_ferry_ASC_work 0.189 278. 0.00 0.00
walk_light_rail_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork-0.136 16.4-0.01 0.00
walk_light_rail_ASC_school_univ 0.724 NA NA 0.00
walk_light_rail_ASC_work 0.786 278. 0.00 0.00
walk_transit_ASC_auto_deficient_atwork-2.63 16.4-0.16 0.00
walk_transit_ASC_auto_deficient_eatout-0.489 16.4-0.03 0.00
walk_transit_ASC_auto_deficient_escort-4.45 16.4-0.27 0.00
walk_transit_ASC_auto_deficient_othdiscr 0.873 16.4 0.05 0.00
walk_transit_ASC_auto_deficient_othmaint-2.97 16.4-0.18 0.00
walk_transit_ASC_auto_deficient_school 2.97 NA NA 0.00
walk_transit_ASC_auto_deficient_shopping-1.07 16.4-0.07 0.00
walk_transit_ASC_auto_deficient_social 1.32 16.4 0.08 0.00
walk_transit_ASC_auto_deficient_univ 3.14 0.00 NA 0.00
walk_transit_ASC_auto_deficient_work 0.159 278. 0.00 0.00
walk_transit_ASC_auto_sufficient_atwork-3.66 16.4-0.22 0.00
walk_transit_ASC_auto_sufficient_eatout-1.32 16.4-0.08 0.00
walk_transit_ASC_auto_sufficient_escort-4.82 16.4-0.29 0.00
walk_transit_ASC_auto_sufficient_othdiscr-0.914 16.4-0.06 0.00
walk_transit_ASC_auto_sufficient_othmaint-1.68 16.4-0.10 0.00
walk_transit_ASC_auto_sufficient_school 0.487 NA NA 0.00
walk_transit_ASC_auto_sufficient_shopping-2.35 16.4-0.14 0.00
walk_transit_ASC_auto_sufficient_social-0.647 16.4-0.04 0.00
walk_transit_ASC_auto_sufficient_univ 0.473 0.00 NA 0.00
walk_transit_ASC_auto_sufficient_work-1.37 278.-0.00 0.00
walk_transit_ASC_no_auto_atwork 3.13 66.9 0.05 0.00
walk_transit_ASC_no_auto_eatout 2.92 66.9 0.04 0.00
walk_transit_ASC_no_auto_escort-2.26 67.0-0.03 0.00
walk_transit_ASC_no_auto_othdiscr 2.80 66.9 0.04 0.00
walk_transit_ASC_no_auto_othmaint 2.59 66.9 0.04 0.00
walk_transit_ASC_no_auto_school 20.4 NA NA 0.00
walk_transit_ASC_no_auto_shopping 2.33 66.9 0.03 0.00
walk_transit_ASC_no_auto_social 2.06 66.9 0.03 0.00
walk_transit_ASC_no_auto_univ 8.79 0.00 NA 0.00
walk_transit_ASC_no_auto_work 4.60 285. 0.02 0.00
walk_transit_CBD_ASC_atwork 1.30 0.284 4.57*** 0.00
walk_transit_CBD_ASC_eatout_escort_othdiscr_othmaint_shopping_social 1.08 0.0757 14.25*** 0.00
walk_transit_CBD_ASC_school_univ 0.834 0.114 7.30*** 0.00
walk_transit_CBD_ASC_work 1.16 0.0539 21.50*** 0.00
\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.parameter_summary()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "TojXWivZsx7M" + }, + "source": [ + "# Output Estimation Results" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "execution": { + "iopub.execute_input": "2025-06-26T02:22:22.519480Z", + "iopub.status.busy": "2025-06-26T02:22:22.519378Z", + "iopub.status.idle": "2025-06-26T02:22:22.604985Z", + "shell.execute_reply": "2025-06-26T02:22:22.604582Z", + "shell.execute_reply.started": "2025-06-26T02:22:22.519470Z" + } + }, + "outputs": [], + "source": [ + "from activitysim.estimation.larch import update_coefficients\n", + "result_dir = data.edb_directory/\"estimated\"\n", + "update_coefficients(\n", + " model, data, result_dir,\n", + " output_file=f\"{modelname}_coefficients_revised.csv\",\n", + ");" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Write the model estimation report, including coefficient t-statistic and log likelihood" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "execution": { + "iopub.execute_input": "2025-06-26T02:22:22.605439Z", + "iopub.status.busy": "2025-06-26T02:22:22.605332Z", + "iopub.status.idle": "2025-06-26T02:22:33.125948Z", + "shell.execute_reply": "2025-06-26T02:22:33.125494Z", + "shell.execute_reply.started": "2025-06-26T02:22:22.605418Z" + } + }, + "outputs": [], + "source": [ + "model.to_xlsx(\n", + " result_dir/f\"{modelname}_model_estimation.xlsx\", \n", + " data_statistics=False,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Next Steps\n", + "\n", + "The final step is to either manually or automatically copy the `*_coefficients_revised.csv` file to the configs folder, rename it to `*_coefficients.csv`, and run ActivitySim in simulation mode." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "execution": { + "iopub.execute_input": "2025-06-26T02:22:33.126652Z", + "iopub.status.busy": "2025-06-26T02:22:33.126545Z", + "iopub.status.idle": "2025-06-26T02:22:33.132608Z", + "shell.execute_reply": "2025-06-26T02:22:33.132330Z", + "shell.execute_reply.started": "2025-06-26T02:22:33.126642Z" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
coefficient_namevalueconstrain
0coef_one1.000000T
1coef_nest_root1.000000T
2coef_nest_AUTO0.720000T
3coef_nest_AUTO_DRIVEALONE0.350000T
4coef_nest_AUTO_SHAREDRIDE20.350000T
............
304drive_transit_CBD_ASC_school_univ1.227148F
305drive_transit_CBD_ASC_work1.636347F
306drive_transit_CBD_ASC_atwork0.564000FF
307coef_test_eatout_escort_othdiscr_othmaint_shop...0.076990F
308coef_test_school_univ0.518279F
\n", + "

309 rows × 3 columns

\n", + "
" + ], + "text/plain": [ + " coefficient_name value constrain\n", + "0 coef_one 1.000000 T\n", + "1 coef_nest_root 1.000000 T\n", + "2 coef_nest_AUTO 0.720000 T\n", + "3 coef_nest_AUTO_DRIVEALONE 0.350000 T\n", + "4 coef_nest_AUTO_SHAREDRIDE2 0.350000 T\n", + ".. ... ... ...\n", + "304 drive_transit_CBD_ASC_school_univ 1.227148 F\n", + "305 drive_transit_CBD_ASC_work 1.636347 F\n", + "306 drive_transit_CBD_ASC_atwork 0.564000 F\n", + "307 coef_test_eatout_escort_othdiscr_othmaint_shop... 0.076990 F\n", + "308 coef_test_school_univ 0.518279 F\n", + "\n", + "[309 rows x 3 columns]" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.read_csv(result_dir/f\"{modelname}_coefficients_revised.csv\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Modify Spec\n", + "\n", + "Here, we will demonstrate the process of re-estimating the model with a modified\n", + "SPEC file. This does *not* require re-running ActivitySim, it just requires\n", + "changing the SPEC file, and possibly the coefficients and/or coefficients template files, and re-running the Larch estimation only.\n", + "\n", + "The `backup` command we ran earlier made a backup copy of the\n", + "original spec file in the EDB directory.\n", + "This was not strictly necessary, but since we're about to modify it and\n", + "we may want undo our changes, it can be handy to keep a copy of the\n", + "original spec file around. Since we already have a backup copy, we'll make some \n", + "changes directly in the SPEC file. As an example here, we're going\n", + "to add a constant term to the model, with a coefficient that is shared in common across \n", + "several (but not all) purposes.\n", + "\n", + "For this demo we are editing \n", + "the model files using Python code to make the changes, but a user does not need\n", + "to change the file using Python; any CSV editor (e.g. Excel) can be used. We will\n", + "edit three files: the spec, the coefficients, and the coefficients template.\n", + "We're not going to edit any of the existing content in any of these files, instead \n", + "we will simply add a few lines to each to add an extra expression to the spec, and\n", + "the coefficients for that expression." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "execution": { + "iopub.execute_input": "2025-06-26T02:22:33.133126Z", + "iopub.status.busy": "2025-06-26T02:22:33.133030Z", + "iopub.status.idle": "2025-06-26T02:22:33.135058Z", + "shell.execute_reply": "2025-06-26T02:22:33.134812Z", + "shell.execute_reply.started": "2025-06-26T02:22:33.133117Z" + } + }, + "outputs": [], + "source": [ + "with open(data.edb_directory / \"tour_mode_choice_SPEC.csv\", mode=\"a\") as f:\n", + " f.write(\"util_test,Additional DA constant,1,coef_test,,,,,,,,,,,,,,,,,,,,\\n\")" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "execution": { + "iopub.execute_input": "2025-06-26T02:22:33.135393Z", + "iopub.status.busy": "2025-06-26T02:22:33.135303Z", + "iopub.status.idle": "2025-06-26T02:22:33.137578Z", + "shell.execute_reply": "2025-06-26T02:22:33.137342Z", + "shell.execute_reply.started": "2025-06-26T02:22:33.135372Z" + } + }, + "outputs": [], + "source": [ + "with open(data.edb_directory / \"tour_mode_choice_coefficients_template.csv\", mode=\"a\") as f:\n", + " f.write(\"coef_test,\"\n", + " \"coef_test_eatout_escort_othdiscr_othmaint_shopping_social_work_atwork,\"\n", + " \"coef_test_eatout_escort_othdiscr_othmaint_shopping_social_work_atwork,\"\n", + " \"coef_test_eatout_escort_othdiscr_othmaint_shopping_social_work_atwork,\"\n", + " \"coef_test_eatout_escort_othdiscr_othmaint_shopping_social_work_atwork,\"\n", + " \"coef_test_school_univ,\"\n", + " \"coef_test_eatout_escort_othdiscr_othmaint_shopping_social_work_atwork,\"\n", + " \"coef_test_eatout_escort_othdiscr_othmaint_shopping_social_work_atwork,\"\n", + " \"coef_test_school_univ,\"\n", + " \"coef_test_eatout_escort_othdiscr_othmaint_shopping_social_work_atwork,\"\n", + " \"coef_test_eatout_escort_othdiscr_othmaint_shopping_social_work_atwork\\n\")" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "execution": { + "iopub.execute_input": "2025-06-26T02:22:33.138092Z", + "iopub.status.busy": "2025-06-26T02:22:33.137967Z", + "iopub.status.idle": "2025-06-26T02:22:33.139786Z", + "shell.execute_reply": "2025-06-26T02:22:33.139542Z", + "shell.execute_reply.started": "2025-06-26T02:22:33.138083Z" + } + }, + "outputs": [], + "source": [ + "with open(data.edb_directory / \"tour_mode_choice_coefficients.csv\", mode=\"a\") as f:\n", + " f.write(\"coef_test_eatout_escort_othdiscr_othmaint_shopping_social_work_atwork,0,F\\n\"\n", + " \"coef_test_school_univ,0,F\\n\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now to re-estimate the model, we just re-run the same steps as the original estimation above." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "execution": { + "iopub.execute_input": "2025-06-26T02:23:19.234087Z", + "iopub.status.busy": "2025-06-26T02:23:19.233080Z", + "iopub.status.idle": "2025-06-26T02:23:34.736566Z", + "shell.execute_reply": "2025-06-26T02:23:34.736111Z", + "shell.execute_reply.started": "2025-06-26T02:23:19.234014Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "loading from output-est-mode/estimation_data_bundle/tour_mode_choice/tour_mode_choice_coefficients.csv\n", + "loading from output-est-mode/estimation_data_bundle/tour_mode_choice/tour_mode_choice_coefficients_template.csv\n", + "loading spec from output-est-mode/estimation_data_bundle/tour_mode_choice/tour_mode_choice_SPEC.csv\n", + "loading from output-est-mode/estimation_data_bundle/tour_mode_choice/tour_mode_choice_values_combined.parquet\n" + ] + } + ], + "source": [ + "remodel, redata = component_model(modelname, edb_directory=str(data.edb_directory), return_data=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "execution": { + "iopub.execute_input": "2025-06-26T02:23:37.086759Z", + "iopub.status.busy": "2025-06-26T02:23:37.086146Z", + "iopub.status.idle": "2025-06-26T02:23:39.392179Z", + "shell.execute_reply": "2025-06-26T02:23:39.391840Z", + "shell.execute_reply.started": "2025-06-26T02:23:37.086721Z" + } + }, + "outputs": [], + "source": [ + "remodel.extend(model2)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "execution": { + "iopub.execute_input": "2025-06-26T02:23:40.195214Z", + "iopub.status.busy": "2025-06-26T02:23:40.194549Z", + "iopub.status.idle": "2025-06-26T02:27:37.904716Z", + "shell.execute_reply": "2025-06-26T02:27:37.904362Z", + "shell.execute_reply.started": "2025-06-26T02:23:40.195175Z" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "

Iteration 200 [Iteration limit reached]

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "

Best LL = -76502.09343717809

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
valuebestinitvalueminimummaximumnullvalueholdfast
param_name
-999-999.000000-999.000000-999.000000-999.0-999.00.01
11.0000001.0000001.0000001.01.00.01
bike_ASC_auto_deficient_atwork-1.059385-1.059385-0.807408-infinf0.00
bike_ASC_auto_deficient_eatout-1.201250-1.201250-1.569111-infinf0.00
bike_ASC_auto_deficient_escort-3.880330-3.880330-4.527928-infinf0.00
........................
walk_transit_ASC_no_auto_work4.6310234.6310235.035417-infinf0.00
walk_transit_CBD_ASC_atwork1.1842251.1842250.564000-infinf0.00
walk_transit_CBD_ASC_eatout_escort_othdiscr_othmaint_shopping_social1.0889681.0889680.525000-infinf0.00
walk_transit_CBD_ASC_school_univ0.8264840.8264840.672000-infinf0.00
walk_transit_CBD_ASC_work1.1465131.1465130.804000-infinf0.00
\n", + "

312 rows × 7 columns

\n", + "
" + ], + "text/plain": [ + " value best \\\n", + "param_name \n", + "-999 -999.000000 -999.000000 \n", + "1 1.000000 1.000000 \n", + "bike_ASC_auto_deficient_atwork -1.059385 -1.059385 \n", + "bike_ASC_auto_deficient_eatout -1.201250 -1.201250 \n", + "bike_ASC_auto_deficient_escort -3.880330 -3.880330 \n", + "... ... ... \n", + "walk_transit_ASC_no_auto_work 4.631023 4.631023 \n", + "walk_transit_CBD_ASC_atwork 1.184225 1.184225 \n", + "walk_transit_CBD_ASC_eatout_escort_othdiscr_oth... 1.088968 1.088968 \n", + "walk_transit_CBD_ASC_school_univ 0.826484 0.826484 \n", + "walk_transit_CBD_ASC_work 1.146513 1.146513 \n", + "\n", + " initvalue minimum \\\n", + "param_name \n", + "-999 -999.000000 -999.0 \n", + "1 1.000000 1.0 \n", + "bike_ASC_auto_deficient_atwork -0.807408 -inf \n", + "bike_ASC_auto_deficient_eatout -1.569111 -inf \n", + "bike_ASC_auto_deficient_escort -4.527928 -inf \n", + "... ... ... \n", + "walk_transit_ASC_no_auto_work 5.035417 -inf \n", + "walk_transit_CBD_ASC_atwork 0.564000 -inf \n", + "walk_transit_CBD_ASC_eatout_escort_othdiscr_oth... 0.525000 -inf \n", + "walk_transit_CBD_ASC_school_univ 0.672000 -inf \n", + "walk_transit_CBD_ASC_work 0.804000 -inf \n", + "\n", + " maximum nullvalue \\\n", + "param_name \n", + "-999 -999.0 0.0 \n", + "1 1.0 0.0 \n", + "bike_ASC_auto_deficient_atwork inf 0.0 \n", + "bike_ASC_auto_deficient_eatout inf 0.0 \n", + "bike_ASC_auto_deficient_escort inf 0.0 \n", + "... ... ... \n", + "walk_transit_ASC_no_auto_work inf 0.0 \n", + "walk_transit_CBD_ASC_atwork inf 0.0 \n", + "walk_transit_CBD_ASC_eatout_escort_othdiscr_oth... inf 0.0 \n", + "walk_transit_CBD_ASC_school_univ inf 0.0 \n", + "walk_transit_CBD_ASC_work inf 0.0 \n", + "\n", + " holdfast \n", + "param_name \n", + "-999 1 \n", + "1 1 \n", + "bike_ASC_auto_deficient_atwork 0 \n", + "bike_ASC_auto_deficient_eatout 0 \n", + "bike_ASC_auto_deficient_escort 0 \n", + "... ... \n", + "walk_transit_ASC_no_auto_work 0 \n", + "walk_transit_CBD_ASC_atwork 0 \n", + "walk_transit_CBD_ASC_eatout_escort_othdiscr_oth... 0 \n", + "walk_transit_CBD_ASC_school_univ 0 \n", + "walk_transit_CBD_ASC_work 0 \n", + "\n", + "[312 rows x 7 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jpn/Git/aestival/repos/larch/src/larch/model/optimization.py:338: UserWarning: slsqp may not play nicely with unbounded parameters\n", + "if you get poor results, consider setting global bounds with model.set_cap()\n", + " warnings.warn( # infinite bounds # )\n", + "/Users/jpn/Git/aestival/repos/larch/src/larch/model/model_group.py:366: PossibleOverspecification: Model is possibly over-specified (hessian is nearly singular).\n", + " self.calculate_parameter_covariance()\n" + ] + }, + { + "data": { + "text/html": [ + "
keyvalue
x\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0
-999-999.000000
11.000000
bike_ASC_auto_deficient_atwork-1.059385
bike_ASC_auto_deficient_eatout-1.201250
bike_ASC_auto_deficient_escort-3.880330
bike_ASC_auto_deficient_othdiscr-0.528102
bike_ASC_auto_deficient_othmaint-1.629975
bike_ASC_auto_deficient_school-1.182724
bike_ASC_auto_deficient_shopping-1.304686
bike_ASC_auto_deficient_social0.592094
bike_ASC_auto_deficient_univ-0.669235
bike_ASC_auto_deficient_work-0.360143
bike_ASC_auto_sufficient_atwork15.720172
bike_ASC_auto_sufficient_eatout-1.297285
bike_ASC_auto_sufficient_escort-5.264113
bike_ASC_auto_sufficient_othdiscr-1.491319
bike_ASC_auto_sufficient_othmaint-2.511651
bike_ASC_auto_sufficient_school-2.201436
bike_ASC_auto_sufficient_shopping-2.777945
bike_ASC_auto_sufficient_social-1.828315
bike_ASC_auto_sufficient_univ-1.939783
bike_ASC_auto_sufficient_work-2.058472
bike_ASC_no_auto_atwork-0.911319
bike_ASC_no_auto_eatout0.509502
bike_ASC_no_auto_escort-0.730310
bike_ASC_no_auto_othdiscr-0.404361
bike_ASC_no_auto_othmaint1.614051
bike_ASC_no_auto_school13.403780
bike_ASC_no_auto_shopping1.048175
bike_ASC_no_auto_social0.485746
bike_ASC_no_auto_univ4.294516
bike_ASC_no_auto_work3.427768
coef_age010_trn_multiplier_atwork0.000722
coef_age010_trn_multiplier_eatout_escort_othdiscr_othmaint_shopping_social_work0.363546
coef_age010_trn_multiplier_school_univ-0.874785
coef_age1619_da_multiplier_atwork-0.192883
coef_age1619_da_multiplier_eatout_escort_othdiscr_othmaint_shopping_social_work0.000513
coef_age1619_da_multiplier_school_univ-1.677960
coef_age16p_sr_multiplier_eatout_escort_othdiscr_othmaint_shopping_social-1.451060
coef_age16p_sr_multiplier_school_univ_work_atwork-0.648072
coef_hhsize1_sr_multiplier_eatout_escort_othdiscr_othmaint_school_shopping_social_univ_atwork-0.071030
coef_hhsize1_sr_multiplier_work-0.836007
coef_hhsize2_sr_multiplier_eatout_escort_othdiscr_othmaint_shopping_social_work_atwork0.002091
coef_hhsize2_sr_multiplier_school_univ-0.747693
coef_ivt_atwork-0.011188
coef_ivt_eatout_escort_othdiscr_othmaint_shopping_social-0.006884
coef_ivt_school_univ-0.010386
coef_ivt_work-0.007950
coef_nest_AUTO0.720000
coef_nest_AUTO_DRIVEALONE0.350000
coef_nest_AUTO_SHAREDRIDE20.350000
coef_nest_AUTO_SHAREDRIDE30.350000
coef_nest_NONMOTORIZED0.720000
coef_nest_RIDEHAIL0.360000
coef_nest_TRANSIT0.720000
coef_nest_TRANSIT_DRIVEACCESS0.500000
coef_nest_TRANSIT_WALKACCESS0.500000
coef_test_eatout_escort_othdiscr_othmaint_shopping_social_work_atwork0.076990
coef_test_school_univ0.518279
coefficient_name\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\nName: eatout, dtype: object0.339513
coefficient_name\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\nName: escort, dtype: object0.000000
coefficient_name\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\nName: othdiscr, dtype: object0.230600
coefficient_name\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\nName: othmaint, dtype: object0.332934
coefficient_name\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\nName: shopping, dtype: object0.244712
coefficient_name\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\nName: social, dtype: object0.196574
coefficient_name\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\nName: work, dtype: object-0.030571
coefficient_name\\ncoef_test coef_test_school_univ\\ncoef_test coef_test_school_univ\\nName: school, dtype: object0.278054
coefficient_name\\ncoef_test coef_test_school_univ\\ncoef_test coef_test_school_univ\\nName: univ, dtype: object0.000000
commuter_rail_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork-0.744041
commuter_rail_ASC_school_univ-0.247252
commuter_rail_ASC_work0.157688
drive_ferry_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork-0.393253
drive_ferry_ASC_school_univ1.448664
drive_ferry_ASC_work0.193999
drive_light_rail_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork-0.091901
drive_light_rail_ASC_school_univ0.706784
drive_light_rail_ASC_work0.506525
drive_transit_ASC_auto_deficient_atwork-998.819580
drive_transit_ASC_auto_deficient_eatout0.104696
drive_transit_ASC_auto_deficient_escort-2.135178
drive_transit_ASC_auto_deficient_othdiscr-0.725510
drive_transit_ASC_auto_deficient_othmaint-1.174854
drive_transit_ASC_auto_deficient_school1.572565
drive_transit_ASC_auto_deficient_shopping-1.430278
drive_transit_ASC_auto_deficient_social0.594346
drive_transit_ASC_auto_deficient_univ1.850118
drive_transit_ASC_auto_deficient_work-0.911001
drive_transit_ASC_auto_sufficient_atwork-999.214661
drive_transit_ASC_auto_sufficient_eatout-1.297555
drive_transit_ASC_auto_sufficient_escort-5.253544
drive_transit_ASC_auto_sufficient_othdiscr-1.114939
drive_transit_ASC_auto_sufficient_othmaint-2.442900
drive_transit_ASC_auto_sufficient_school0.154528
drive_transit_ASC_auto_sufficient_shopping-3.967262
drive_transit_ASC_auto_sufficient_social-1.343284
drive_transit_ASC_auto_sufficient_univ1.358775
drive_transit_ASC_auto_sufficient_work-1.831235
drive_transit_ASC_no_auto_all0.000000
drive_transit_CBD_ASC_atwork0.564000
drive_transit_CBD_ASC_eatout_escort_othdiscr_othmaint_shopping_social1.413499
drive_transit_CBD_ASC_school_univ1.203794
drive_transit_CBD_ASC_work1.616319
express_bus_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork-0.088784
express_bus_ASC_school_univ-0.449853
express_bus_ASC_work-0.920137
heavy_rail_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork0.040071
heavy_rail_ASC_school_univ0.126501
heavy_rail_ASC_work0.496146
joint_bike_ASC_auto_deficient_all-6.159645
joint_bike_ASC_auto_sufficient_all-6.948677
joint_bike_ASC_no_auto_all-2.667145
joint_drive_transit_ASC_auto_deficient_all-6.040459
joint_drive_transit_ASC_auto_sufficient_all-7.802616
joint_drive_transit_ASC_no_auto_all0.000000
joint_sr2_ASC_auto_deficient_all0.000000
joint_sr2_ASC_auto_sufficient_all0.000000
joint_sr2_ASC_no_auto_all0.000000
joint_sr3p_ASC_auto_deficient_all-1.508271
joint_sr3p_ASC_auto_sufficient_all-2.268077
joint_sr3p_ASC_no_auto_all0.680128
joint_taxi_ASC_auto_deficient_all-9.817099
joint_taxi_ASC_auto_sufficient_all-11.709900
joint_taxi_ASC_no_auto_all-4.583211
joint_tnc_shared_ASC_auto_deficient_all-11.157463
joint_tnc_shared_ASC_auto_sufficient_all-13.205000
joint_tnc_shared_ASC_no_auto_all-4.699899
joint_tnc_single_ASC_auto_deficient_all-9.898289
joint_tnc_single_ASC_auto_sufficient_all-14.015900
joint_tnc_single_ASC_no_auto_all-3.890298
joint_walk_ASC_auto_deficient_all-2.049580
joint_walk_ASC_auto_sufficient_all-4.151795
joint_walk_ASC_no_auto_all-0.294038
joint_walk_transit_ASC_auto_deficient_all-5.295731
joint_walk_transit_ASC_auto_sufficient_all-18.264534
joint_walk_transit_ASC_no_auto_all0.350958
local_bus_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork-0.943275
local_bus_ASC_school_univ-0.811253
local_bus_ASC_work-0.210576
sr2_ASC_auto_deficient_atwork-1.571425
sr2_ASC_auto_deficient_eatout1.323994
sr2_ASC_auto_deficient_escort0.560298
sr2_ASC_auto_deficient_othdiscr1.316437
sr2_ASC_auto_deficient_othmaint1.027389
sr2_ASC_auto_deficient_school0.521971
sr2_ASC_auto_deficient_shopping0.800981
sr2_ASC_auto_deficient_social2.418469
sr2_ASC_auto_deficient_univ-1.692235
sr2_ASC_auto_deficient_work0.248251
sr2_ASC_auto_sufficient_atwork-0.810446
sr2_ASC_auto_sufficient_eatout1.632701
sr2_ASC_auto_sufficient_escort0.754348
sr2_ASC_auto_sufficient_othdiscr1.091357
sr2_ASC_auto_sufficient_othmaint1.094521
sr2_ASC_auto_sufficient_school-0.720077
sr2_ASC_auto_sufficient_shopping0.805726
sr2_ASC_auto_sufficient_social1.065900
sr2_ASC_auto_sufficient_univ-1.859427
sr2_ASC_auto_sufficient_work-0.477609
sr2_ASC_no_auto_all1.173523
sr3p_ASC_auto_deficient_atwork-1.881594
sr3p_ASC_auto_deficient_eatout0.638190
sr3p_ASC_auto_deficient_escort0.335767
sr3p_ASC_auto_deficient_othdiscr1.672007
sr3p_ASC_auto_deficient_othmaint-0.202298
sr3p_ASC_auto_deficient_school1.094613
sr3p_ASC_auto_deficient_shopping0.457352
sr3p_ASC_auto_deficient_social2.155012
sr3p_ASC_auto_deficient_univ-1.727742
sr3p_ASC_auto_deficient_work-0.289309
sr3p_ASC_auto_sufficient_atwork-1.003854
sr3p_ASC_auto_sufficient_eatout1.576426
sr3p_ASC_auto_sufficient_escort0.729492
sr3p_ASC_auto_sufficient_othdiscr1.182849
sr3p_ASC_auto_sufficient_othmaint0.726042
sr3p_ASC_auto_sufficient_school-0.151086
sr3p_ASC_auto_sufficient_shopping0.560767
sr3p_ASC_auto_sufficient_social1.073137
sr3p_ASC_auto_sufficient_univ-1.904710
sr3p_ASC_auto_sufficient_work-0.848535
sr3p_ASC_no_auto_atwork1.665939
sr3p_ASC_no_auto_eatout1.528129
sr3p_ASC_no_auto_escort-1.866823
sr3p_ASC_no_auto_othdiscr1.403607
sr3p_ASC_no_auto_othmaint0.194971
sr3p_ASC_no_auto_school-6.024155
sr3p_ASC_no_auto_shopping0.846912
sr3p_ASC_no_auto_social-1.209366
sr3p_ASC_no_auto_univ-6.056001
sr3p_ASC_no_auto_work0.522935
taxi_ASC_auto_deficient_atwork-4.750529
taxi_ASC_auto_deficient_eatout_othdiscr_social-3.164652
taxi_ASC_auto_deficient_escort_othmaint_shopping-0.502553
taxi_ASC_auto_deficient_school0.899118
taxi_ASC_auto_deficient_univ4.249200
taxi_ASC_auto_deficient_work-2.299959
taxi_ASC_auto_sufficient_atwork-3.311568
taxi_ASC_auto_sufficient_eatout_othdiscr_social-3.474973
taxi_ASC_auto_sufficient_escort_othmaint_shopping-2.325136
taxi_ASC_auto_sufficient_school-2.230947
taxi_ASC_auto_sufficient_univ-0.313100
taxi_ASC_auto_sufficient_work-5.138446
taxi_ASC_no_auto_atwork3.627714
taxi_ASC_no_auto_eatout_othdiscr_social-0.460021
taxi_ASC_no_auto_escort_othmaint_shopping1.536364
taxi_ASC_no_auto_school_univ-7.000000
taxi_ASC_no_auto_work3.889335
tnc_shared_ASC_auto_deficient_atwork-5.208859
tnc_shared_ASC_auto_deficient_eatout_othdiscr_social-4.431790
tnc_shared_ASC_auto_deficient_escort_othmaint_shopping-0.796074
tnc_shared_ASC_auto_deficient_school0.312003
tnc_shared_ASC_auto_deficient_univ3.250000
tnc_shared_ASC_auto_deficient_work-3.733595
tnc_shared_ASC_auto_sufficient_atwork-4.094668
tnc_shared_ASC_auto_sufficient_eatout_othdiscr_social-3.879623
tnc_shared_ASC_auto_sufficient_escort_othmaint_shopping-2.832616
tnc_shared_ASC_auto_sufficient_school-3.620468
tnc_shared_ASC_auto_sufficient_univ-0.906800
tnc_shared_ASC_auto_sufficient_work-6.741197
tnc_shared_ASC_no_auto_atwork3.035906
tnc_shared_ASC_no_auto_eatout_othdiscr_social-0.000529
tnc_shared_ASC_no_auto_escort_othmaint_shopping0.776143
tnc_shared_ASC_no_auto_school-7.000000
tnc_shared_ASC_no_auto_univ-5.811600
tnc_shared_ASC_no_auto_work2.211617
tnc_single_ASC_auto_deficient_atwork-4.359982
tnc_single_ASC_auto_deficient_eatout_othdiscr_social-3.121747
tnc_single_ASC_auto_deficient_escort_othmaint_shopping0.092823
tnc_single_ASC_auto_deficient_school0.059727
tnc_single_ASC_auto_deficient_univ1.022100
tnc_single_ASC_auto_deficient_work-1.472138
tnc_single_ASC_auto_sufficient_atwork-3.135939
tnc_single_ASC_auto_sufficient_eatout_othdiscr_social-2.826943
tnc_single_ASC_auto_sufficient_escort_othmaint_shopping-1.756842
tnc_single_ASC_auto_sufficient_school-2.018347
tnc_single_ASC_auto_sufficient_univ0.208800
tnc_single_ASC_auto_sufficient_work-4.328498
tnc_single_ASC_no_auto_atwork4.240527
tnc_single_ASC_no_auto_eatout_othdiscr_social1.063350
tnc_single_ASC_no_auto_escort_othmaint_shopping1.698535
tnc_single_ASC_no_auto_school-7.000000
tnc_single_ASC_no_auto_univ-2.519000
tnc_single_ASC_no_auto_work5.312088
walk_ASC_auto_deficient_atwork0.174536
walk_ASC_auto_deficient_eatout2.703990
walk_ASC_auto_deficient_escort-1.602460
walk_ASC_auto_deficient_othdiscr1.568287
walk_ASC_auto_deficient_othmaint0.642511
walk_ASC_auto_deficient_school2.647520
walk_ASC_auto_deficient_shopping1.312088
walk_ASC_auto_deficient_social2.482888
walk_ASC_auto_deficient_univ4.505910
walk_ASC_auto_deficient_work1.589921
walk_ASC_auto_sufficient_atwork0.078581
walk_ASC_auto_sufficient_eatout1.185624
walk_ASC_auto_sufficient_escort-1.315039
walk_ASC_auto_sufficient_othdiscr0.660807
walk_ASC_auto_sufficient_othmaint0.439213
walk_ASC_auto_sufficient_school0.382641
walk_ASC_auto_sufficient_shopping0.081775
walk_ASC_auto_sufficient_social0.911126
walk_ASC_auto_sufficient_univ1.060766
walk_ASC_auto_sufficient_work-0.417450
walk_ASC_no_auto_atwork6.611279
walk_ASC_no_auto_eatout4.520665
walk_ASC_no_auto_escort2.558862
walk_ASC_no_auto_othdiscr2.961389
walk_ASC_no_auto_othmaint1.056949
walk_ASC_no_auto_school17.800582
walk_ASC_no_auto_shopping2.263652
walk_ASC_no_auto_social1.844138
walk_ASC_no_auto_univ6.408967
walk_ASC_no_auto_work5.277625
walk_ferry_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork-0.034691
walk_ferry_ASC_school_univ0.903288
walk_ferry_ASC_work0.075113
walk_light_rail_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork0.115212
walk_light_rail_ASC_school_univ0.720550
walk_light_rail_ASC_work0.730077
walk_transit_ASC_auto_deficient_atwork-2.844239
walk_transit_ASC_auto_deficient_eatout-0.205432
walk_transit_ASC_auto_deficient_escort-4.464762
walk_transit_ASC_auto_deficient_othdiscr0.997111
walk_transit_ASC_auto_deficient_othmaint-2.906453
walk_transit_ASC_auto_deficient_school3.003413
walk_transit_ASC_auto_deficient_shopping-0.898698
walk_transit_ASC_auto_deficient_social1.324930
walk_transit_ASC_auto_deficient_univ3.136256
walk_transit_ASC_auto_deficient_work0.066276
walk_transit_ASC_auto_sufficient_atwork-3.764087
walk_transit_ASC_auto_sufficient_eatout-0.985317
walk_transit_ASC_auto_sufficient_escort-4.683494
walk_transit_ASC_auto_sufficient_othdiscr-0.771461
walk_transit_ASC_auto_sufficient_othmaint-1.309230
walk_transit_ASC_auto_sufficient_school0.522457
walk_transit_ASC_auto_sufficient_shopping-2.202302
walk_transit_ASC_auto_sufficient_social-0.595214
walk_transit_ASC_auto_sufficient_univ0.473116
walk_transit_ASC_auto_sufficient_work-1.474310
walk_transit_ASC_no_auto_atwork2.978048
walk_transit_ASC_no_auto_eatout2.764558
walk_transit_ASC_no_auto_escort-2.263431
walk_transit_ASC_no_auto_othdiscr2.638916
walk_transit_ASC_no_auto_othmaint2.431884
walk_transit_ASC_no_auto_school20.462674
walk_transit_ASC_no_auto_shopping2.182496
walk_transit_ASC_no_auto_social1.900415
walk_transit_ASC_no_auto_univ8.786037
walk_transit_ASC_no_auto_work4.631023
walk_transit_CBD_ASC_atwork1.184225
walk_transit_CBD_ASC_eatout_escort_othdiscr_othmaint_shopping_social1.088968
walk_transit_CBD_ASC_school_univ0.826484
walk_transit_CBD_ASC_work1.146513
logloss1.0933400042471608
d_logloss\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0
-9990.000000e+00
10.000000e+00
bike_ASC_auto_deficient_atwork1.774086e-05
bike_ASC_auto_deficient_eatout5.086225e-06
bike_ASC_auto_deficient_escort1.041342e-05
bike_ASC_auto_deficient_othdiscr-5.778635e-07
bike_ASC_auto_deficient_othmaint-6.765009e-06
bike_ASC_auto_deficient_school2.953352e-05
bike_ASC_auto_deficient_shopping-9.789016e-07
bike_ASC_auto_deficient_social-1.500595e-05
bike_ASC_auto_deficient_univ0.000000e+00
bike_ASC_auto_deficient_work-2.177390e-05
bike_ASC_auto_sufficient_atwork7.360022e-11
bike_ASC_auto_sufficient_eatout5.699513e-06
bike_ASC_auto_sufficient_escort-1.189039e-05
bike_ASC_auto_sufficient_othdiscr-3.053639e-06
bike_ASC_auto_sufficient_othmaint6.207501e-06
bike_ASC_auto_sufficient_school-3.955640e-05
bike_ASC_auto_sufficient_shopping2.371630e-06
bike_ASC_auto_sufficient_social8.079152e-06
bike_ASC_auto_sufficient_univ0.000000e+00
bike_ASC_auto_sufficient_work-7.377310e-05
bike_ASC_no_auto_atwork-1.079009e-07
bike_ASC_no_auto_eatout-1.351470e-05
bike_ASC_no_auto_escort-6.632985e-07
bike_ASC_no_auto_othdiscr-7.848992e-06
bike_ASC_no_auto_othmaint-1.700614e-05
bike_ASC_no_auto_school5.416195e-05
bike_ASC_no_auto_shopping-1.106327e-05
bike_ASC_no_auto_social-1.724981e-05
bike_ASC_no_auto_univ0.000000e+00
bike_ASC_no_auto_work-4.669114e-05
coef_age010_trn_multiplier_atwork0.000000e+00
coef_age010_trn_multiplier_eatout_escort_othdiscr_othmaint_shopping_social_work-4.351067e-05
coef_age010_trn_multiplier_school_univ-6.148052e-06
coef_age1619_da_multiplier_atwork2.370563e-06
coef_age1619_da_multiplier_eatout_escort_othdiscr_othmaint_shopping_social_work7.865522e-05
coef_age1619_da_multiplier_school_univ5.794259e-05
coef_age16p_sr_multiplier_eatout_escort_othdiscr_othmaint_shopping_social6.559047e-06
coef_age16p_sr_multiplier_school_univ_work_atwork2.000044e-04
coef_hhsize1_sr_multiplier_eatout_escort_othdiscr_othmaint_school_shopping_social_univ_atwork7.346641e-05
coef_hhsize1_sr_multiplier_work-3.556634e-05
coef_hhsize2_sr_multiplier_eatout_escort_othdiscr_othmaint_shopping_social_work_atwork-1.320963e-04
coef_hhsize2_sr_multiplier_school_univ-2.237656e-06
coef_ivt_atwork5.354940e-05
coef_ivt_eatout_escort_othdiscr_othmaint_shopping_social1.361858e-03
coef_ivt_school_univ5.392887e-04
coef_ivt_work1.007546e-03
coef_nest_AUTO1.718013e-03
coef_nest_AUTO_DRIVEALONE3.960085e-04
coef_nest_AUTO_SHAREDRIDE2-4.321150e-05
coef_nest_AUTO_SHAREDRIDE3-4.203121e-17
coef_nest_NONMOTORIZED2.445183e-04
coef_nest_RIDEHAIL3.970494e-02
coef_nest_TRANSIT-6.735168e-03
coef_nest_TRANSIT_DRIVEACCESS-5.412309e-03
coef_nest_TRANSIT_WALKACCESS-4.990662e-03
coef_test_eatout_escort_othdiscr_othmaint_shopping_social_work_atwork0.000000e+00
coef_test_school_univ0.000000e+00
coefficient_name\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\nName: eatout, dtype: object2.972870e-05
coefficient_name\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\nName: escort, dtype: object0.000000e+00
coefficient_name\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\nName: othdiscr, dtype: object-3.077223e-05
coefficient_name\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\nName: othmaint, dtype: object2.351673e-05
coefficient_name\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\nName: shopping, dtype: object-9.832621e-06
coefficient_name\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\nName: social, dtype: object-2.774498e-05
coefficient_name\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\nName: work, dtype: object5.099878e-05
coefficient_name\\ncoef_test coef_test_school_univ\\ncoef_test coef_test_school_univ\\nName: school, dtype: object2.043797e-04
coefficient_name\\ncoef_test coef_test_school_univ\\ncoef_test coef_test_school_univ\\nName: univ, dtype: object0.000000e+00
commuter_rail_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork-1.076357e-05
commuter_rail_ASC_school_univ4.538199e-05
commuter_rail_ASC_work2.680006e-05
drive_ferry_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork-1.539882e-05
drive_ferry_ASC_school_univ-1.492963e-05
drive_ferry_ASC_work5.248967e-05
drive_light_rail_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork-3.564786e-05
drive_light_rail_ASC_school_univ-5.604245e-06
drive_light_rail_ASC_work3.779577e-05
drive_transit_ASC_auto_deficient_atwork0.000000e+00
drive_transit_ASC_auto_deficient_eatout4.925097e-06
drive_transit_ASC_auto_deficient_escort-1.075357e-05
drive_transit_ASC_auto_deficient_othdiscr-9.490300e-06
drive_transit_ASC_auto_deficient_othmaint1.225259e-06
drive_transit_ASC_auto_deficient_school6.513910e-05
drive_transit_ASC_auto_deficient_shopping-1.342895e-05
drive_transit_ASC_auto_deficient_social-7.970583e-07
drive_transit_ASC_auto_deficient_univ0.000000e+00
drive_transit_ASC_auto_deficient_work-2.589444e-05
drive_transit_ASC_auto_sufficient_atwork0.000000e+00
drive_transit_ASC_auto_sufficient_eatout-1.080784e-05
drive_transit_ASC_auto_sufficient_escort-2.626942e-05
drive_transit_ASC_auto_sufficient_othdiscr-7.774693e-06
drive_transit_ASC_auto_sufficient_othmaint-1.165773e-05
drive_transit_ASC_auto_sufficient_school2.119160e-05
drive_transit_ASC_auto_sufficient_shopping-1.340120e-07
drive_transit_ASC_auto_sufficient_social-8.214597e-06
drive_transit_ASC_auto_sufficient_univ0.000000e+00
drive_transit_ASC_auto_sufficient_work-4.622149e-05
drive_transit_ASC_no_auto_all0.000000e+00
drive_transit_CBD_ASC_atwork0.000000e+00
drive_transit_CBD_ASC_eatout_escort_othdiscr_othmaint_shopping_social-4.684988e-06
drive_transit_CBD_ASC_school_univ-3.805396e-05
drive_transit_CBD_ASC_work-6.488983e-05
express_bus_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork-1.885124e-05
express_bus_ASC_school_univ5.641507e-06
express_bus_ASC_work-9.987402e-07
heavy_rail_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork-1.544009e-05
heavy_rail_ASC_school_univ-4.234502e-05
heavy_rail_ASC_work-2.393953e-04
joint_bike_ASC_auto_deficient_all-6.478420e-06
joint_bike_ASC_auto_sufficient_all-4.580153e-05
joint_bike_ASC_no_auto_all7.966080e-06
joint_drive_transit_ASC_auto_deficient_all-6.199588e-06
joint_drive_transit_ASC_auto_sufficient_all4.372034e-06
joint_drive_transit_ASC_no_auto_all0.000000e+00
joint_sr2_ASC_auto_deficient_all0.000000e+00
joint_sr2_ASC_auto_sufficient_all0.000000e+00
joint_sr2_ASC_no_auto_all0.000000e+00
joint_sr3p_ASC_auto_deficient_all-1.008236e-05
joint_sr3p_ASC_auto_sufficient_all2.534002e-05
joint_sr3p_ASC_no_auto_all5.235127e-06
joint_taxi_ASC_auto_deficient_all-1.164850e-07
joint_taxi_ASC_auto_sufficient_all0.000000e+00
joint_taxi_ASC_no_auto_all-3.151328e-07
joint_tnc_shared_ASC_auto_deficient_all-2.107226e-08
joint_tnc_shared_ASC_auto_sufficient_all0.000000e+00
joint_tnc_shared_ASC_no_auto_all-1.881990e-05
joint_tnc_single_ASC_auto_deficient_all-1.783185e-07
joint_tnc_single_ASC_auto_sufficient_all0.000000e+00
joint_tnc_single_ASC_no_auto_all3.023204e-05
joint_walk_ASC_auto_deficient_all-3.050589e-05
joint_walk_ASC_auto_sufficient_all-1.286366e-05
joint_walk_ASC_no_auto_all-1.617279e-05
joint_walk_transit_ASC_auto_deficient_all-6.415354e-06
joint_walk_transit_ASC_auto_sufficient_all-2.728968e-11
joint_walk_transit_ASC_no_auto_all-5.541879e-06
local_bus_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork1.259957e-04
local_bus_ASC_school_univ-5.596945e-05
local_bus_ASC_work1.016212e-04
sr2_ASC_auto_deficient_atwork2.242653e-05
sr2_ASC_auto_deficient_eatout9.816584e-07
sr2_ASC_auto_deficient_escort5.813310e-06
sr2_ASC_auto_deficient_othdiscr-1.246664e-05
sr2_ASC_auto_deficient_othmaint-1.373838e-05
sr2_ASC_auto_deficient_school2.466906e-05
sr2_ASC_auto_deficient_shopping1.962366e-05
sr2_ASC_auto_deficient_social-1.133811e-05
sr2_ASC_auto_deficient_univ0.000000e+00
sr2_ASC_auto_deficient_work3.366868e-05
sr2_ASC_auto_sufficient_atwork-3.856744e-05
sr2_ASC_auto_sufficient_eatout-6.401070e-06
sr2_ASC_auto_sufficient_escort3.483448e-05
sr2_ASC_auto_sufficient_othdiscr-1.727323e-04
sr2_ASC_auto_sufficient_othmaint8.908591e-05
sr2_ASC_auto_sufficient_school-7.725139e-05
sr2_ASC_auto_sufficient_shopping-5.510640e-05
sr2_ASC_auto_sufficient_social3.858880e-05
sr2_ASC_auto_sufficient_univ0.000000e+00
sr2_ASC_auto_sufficient_work1.019533e-04
sr2_ASC_no_auto_all1.418570e-05
sr3p_ASC_auto_deficient_atwork-4.858277e-05
sr3p_ASC_auto_deficient_eatout-6.183223e-06
sr3p_ASC_auto_deficient_escort-2.721905e-05
sr3p_ASC_auto_deficient_othdiscr6.869172e-06
sr3p_ASC_auto_deficient_othmaint-1.584337e-05
sr3p_ASC_auto_deficient_school-6.263611e-05
sr3p_ASC_auto_deficient_shopping1.021365e-05
sr3p_ASC_auto_deficient_social-2.315194e-05
sr3p_ASC_auto_deficient_univ0.000000e+00
sr3p_ASC_auto_deficient_work-3.019121e-05
sr3p_ASC_auto_sufficient_atwork1.375365e-04
sr3p_ASC_auto_sufficient_eatout4.993787e-05
sr3p_ASC_auto_sufficient_escort-6.984512e-05
sr3p_ASC_auto_sufficient_othdiscr1.181772e-04
sr3p_ASC_auto_sufficient_othmaint-4.887767e-06
sr3p_ASC_auto_sufficient_school-6.574727e-05
sr3p_ASC_auto_sufficient_shopping2.914554e-05
sr3p_ASC_auto_sufficient_social-1.779069e-05
sr3p_ASC_auto_sufficient_univ0.000000e+00
sr3p_ASC_auto_sufficient_work1.751686e-04
sr3p_ASC_no_auto_atwork1.470191e-05
sr3p_ASC_no_auto_eatout-6.560895e-06
sr3p_ASC_no_auto_escort-1.740187e-06
sr3p_ASC_no_auto_othdiscr2.448092e-05
sr3p_ASC_no_auto_othmaint3.640557e-05
sr3p_ASC_no_auto_school-2.101477e-09
sr3p_ASC_no_auto_shopping-2.347155e-05
sr3p_ASC_no_auto_social2.268209e-05
sr3p_ASC_no_auto_univ0.000000e+00
sr3p_ASC_no_auto_work-3.225057e-06
taxi_ASC_auto_deficient_atwork-3.207089e-06
taxi_ASC_auto_deficient_eatout_othdiscr_social-1.003595e-05
taxi_ASC_auto_deficient_escort_othmaint_shopping-4.396800e-05
taxi_ASC_auto_deficient_school-6.716802e-05
taxi_ASC_auto_deficient_univ0.000000e+00
taxi_ASC_auto_deficient_work6.370923e-05
taxi_ASC_auto_sufficient_atwork-2.581602e-05
taxi_ASC_auto_sufficient_eatout_othdiscr_social-1.609204e-05
taxi_ASC_auto_sufficient_escort_othmaint_shopping-4.463775e-05
taxi_ASC_auto_sufficient_school7.337408e-05
taxi_ASC_auto_sufficient_univ0.000000e+00
taxi_ASC_auto_sufficient_work-1.088371e-05
taxi_ASC_no_auto_atwork-5.568698e-06
taxi_ASC_no_auto_eatout_othdiscr_social-1.507503e-05
taxi_ASC_no_auto_escort_othmaint_shopping-1.285605e-05
taxi_ASC_no_auto_school_univ0.000000e+00
taxi_ASC_no_auto_work-2.252879e-05
tnc_shared_ASC_auto_deficient_atwork-2.735320e-06
tnc_shared_ASC_auto_deficient_eatout_othdiscr_social-5.208046e-06
tnc_shared_ASC_auto_deficient_escort_othmaint_shopping3.069321e-05
tnc_shared_ASC_auto_deficient_school-2.482342e-06
tnc_shared_ASC_auto_deficient_univ0.000000e+00
tnc_shared_ASC_auto_deficient_work4.927749e-05
tnc_shared_ASC_auto_sufficient_atwork2.170406e-05
tnc_shared_ASC_auto_sufficient_eatout_othdiscr_social4.251537e-07
tnc_shared_ASC_auto_sufficient_escort_othmaint_shopping-8.095789e-05
tnc_shared_ASC_auto_sufficient_school4.297536e-05
tnc_shared_ASC_auto_sufficient_univ0.000000e+00
tnc_shared_ASC_auto_sufficient_work-1.468224e-05
tnc_shared_ASC_no_auto_atwork-3.685009e-06
tnc_shared_ASC_no_auto_eatout_othdiscr_social7.877989e-06
tnc_shared_ASC_no_auto_escort_othmaint_shopping-2.133709e-05
tnc_shared_ASC_no_auto_school0.000000e+00
tnc_shared_ASC_no_auto_univ0.000000e+00
tnc_shared_ASC_no_auto_work-3.255816e-05
tnc_single_ASC_auto_deficient_atwork8.668008e-06
tnc_single_ASC_auto_deficient_eatout_othdiscr_social-7.786070e-06
tnc_single_ASC_auto_deficient_escort_othmaint_shopping2.560665e-05
tnc_single_ASC_auto_deficient_school2.126512e-05
tnc_single_ASC_auto_deficient_univ0.000000e+00
tnc_single_ASC_auto_deficient_work-3.968958e-05
tnc_single_ASC_auto_sufficient_atwork6.757099e-06
tnc_single_ASC_auto_sufficient_eatout_othdiscr_social-7.005215e-06
tnc_single_ASC_auto_sufficient_escort_othmaint_shopping6.235628e-05
tnc_single_ASC_auto_sufficient_school-6.476659e-05
tnc_single_ASC_auto_sufficient_univ0.000000e+00
tnc_single_ASC_auto_sufficient_work-2.552890e-05
tnc_single_ASC_no_auto_atwork-3.116310e-06
tnc_single_ASC_no_auto_eatout_othdiscr_social-8.246176e-06
tnc_single_ASC_no_auto_escort_othmaint_shopping1.600543e-05
tnc_single_ASC_no_auto_school0.000000e+00
tnc_single_ASC_no_auto_univ0.000000e+00
tnc_single_ASC_no_auto_work-2.843130e-05
walk_ASC_auto_deficient_atwork-4.614744e-05
walk_ASC_auto_deficient_eatout1.754353e-06
walk_ASC_auto_deficient_escort9.315694e-06
walk_ASC_auto_deficient_othdiscr1.115815e-06
walk_ASC_auto_deficient_othmaint-2.926066e-06
walk_ASC_auto_deficient_school-6.438027e-05
walk_ASC_auto_deficient_shopping9.836758e-07
walk_ASC_auto_deficient_social-6.444093e-07
walk_ASC_auto_deficient_univ0.000000e+00
walk_ASC_auto_deficient_work-4.753886e-05
walk_ASC_auto_sufficient_atwork5.344464e-05
walk_ASC_auto_sufficient_eatout-7.157604e-06
walk_ASC_auto_sufficient_escort3.096175e-05
walk_ASC_auto_sufficient_othdiscr7.158119e-06
walk_ASC_auto_sufficient_othmaint-7.000889e-05
walk_ASC_auto_sufficient_school8.938165e-05
walk_ASC_auto_sufficient_shopping1.825274e-05
walk_ASC_auto_sufficient_social-1.225805e-05
walk_ASC_auto_sufficient_univ0.000000e+00
walk_ASC_auto_sufficient_work-5.362338e-05
walk_ASC_no_auto_atwork1.404674e-05
walk_ASC_no_auto_eatout1.222394e-05
walk_ASC_no_auto_escort-3.679342e-06
walk_ASC_no_auto_othdiscr-4.099975e-06
walk_ASC_no_auto_othmaint8.791900e-06
walk_ASC_no_auto_school1.354323e-05
walk_ASC_no_auto_shopping1.201681e-05
walk_ASC_no_auto_social-7.276813e-07
walk_ASC_no_auto_univ0.000000e+00
walk_ASC_no_auto_work2.237011e-05
walk_ferry_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork-2.979812e-05
walk_ferry_ASC_school_univ-2.651148e-05
walk_ferry_ASC_work3.074540e-06
walk_light_rail_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork-4.863743e-05
walk_light_rail_ASC_school_univ3.875367e-05
walk_light_rail_ASC_work6.563515e-05
walk_transit_ASC_auto_deficient_atwork-3.277936e-05
walk_transit_ASC_auto_deficient_eatout1.319960e-05
walk_transit_ASC_auto_deficient_escort2.472692e-05
walk_transit_ASC_auto_deficient_othdiscr8.774993e-06
walk_transit_ASC_auto_deficient_othmaint6.188356e-06
walk_transit_ASC_auto_deficient_school4.712400e-05
walk_transit_ASC_auto_deficient_shopping-9.940299e-07
walk_transit_ASC_auto_deficient_social-4.814316e-06
walk_transit_ASC_auto_deficient_univ0.000000e+00
walk_transit_ASC_auto_deficient_work-1.266674e-05
walk_transit_ASC_auto_sufficient_atwork-2.830740e-05
walk_transit_ASC_auto_sufficient_eatout6.402883e-06
walk_transit_ASC_auto_sufficient_escort3.886440e-06
walk_transit_ASC_auto_sufficient_othdiscr-9.484552e-06
walk_transit_ASC_auto_sufficient_othmaint-1.943675e-05
walk_transit_ASC_auto_sufficient_school-1.070428e-04
walk_transit_ASC_auto_sufficient_shopping7.724987e-06
walk_transit_ASC_auto_sufficient_social1.237450e-05
walk_transit_ASC_auto_sufficient_univ0.000000e+00
walk_transit_ASC_auto_sufficient_work8.320692e-05
walk_transit_ASC_no_auto_atwork-3.976681e-06
walk_transit_ASC_no_auto_eatout9.223749e-06
walk_transit_ASC_no_auto_escort-2.374518e-06
walk_transit_ASC_no_auto_othdiscr-1.002251e-06
walk_transit_ASC_no_auto_othmaint1.686596e-05
walk_transit_ASC_no_auto_school-8.199455e-05
walk_transit_ASC_no_auto_shopping4.845760e-05
walk_transit_ASC_no_auto_social3.765028e-06
walk_transit_ASC_no_auto_univ0.000000e+00
walk_transit_ASC_no_auto_work4.859807e-05
walk_transit_CBD_ASC_atwork-9.672408e-05
walk_transit_CBD_ASC_eatout_escort_othdiscr_othmaint_shopping_social1.949310e-05
walk_transit_CBD_ASC_school_univ1.998101e-05
walk_transit_CBD_ASC_work3.791676e-05
nit200
nfev211
njev200
status9
message'Iteration limit reached'
successFalse
elapsed_time0:01:46.414845
method'slsqp'
n_cases69971
iteration_number200
loglike-76502.09343717809
" + ], + "text/plain": [ + "┣ x: -999 -999.000000\n", + "┃ 1 1.000000\n", + "┃ bike_ASC_auto_deficient_atwork -1.059385\n", + "┃ bike_ASC_auto_deficient_eatout -1.201250\n", + "┃ bike_ASC_auto_deficient_escort -3.880330\n", + "┃ ... \n", + "┃ walk_transit_ASC_no_auto_work 4.631023\n", + "┃ walk_transit_CBD_ASC_atwork 1.184225\n", + "┃ walk_transit_CBD_ASC_eatout_escort_othdiscr_othmaint_shopping_social 1.088968\n", + "┃ walk_transit_CBD_ASC_school_univ 0.826484\n", + "┃ walk_transit_CBD_ASC_work 1.146513\n", + "┃ Length: 312, dtype: float64\n", + "┣ logloss: 1.0933400042471608\n", + "┣ d_logloss: -999 0.000000\n", + "┃ 1 0.000000\n", + "┃ bike_ASC_auto_deficient_atwork 0.000018\n", + "┃ bike_ASC_auto_deficient_eatout 0.000005\n", + "┃ bike_ASC_auto_deficient_escort 0.000010\n", + "┃ ... \n", + "┃ walk_transit_ASC_no_auto_work 0.000049\n", + "┃ walk_transit_CBD_ASC_atwork -0.000097\n", + "┃ walk_transit_CBD_ASC_eatout_escort_othdiscr_othmaint_shopping_social 0.000019\n", + "┃ walk_transit_CBD_ASC_school_univ 0.000020\n", + "┃ walk_transit_CBD_ASC_work 0.000038\n", + "┃ Length: 312, dtype: float64\n", + "┣ nit: 200\n", + "┣ nfev: 211\n", + "┣ njev: 200\n", + "┣ status: 9\n", + "┣ message: 'Iteration limit reached'\n", + "┣ success: False\n", + "┣ elapsed_time: datetime.timedelta(seconds=106, microseconds=414845)\n", + "┣ method: 'slsqp'\n", + "┣ n_cases: 69971\n", + "┣ iteration_number: 200\n", + "┣ loglike: -76502.09343717809" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "remodel.estimate(maxiter=200)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can easily review the parameter estimates from the original and\n", + "revised models side by side to see what changed." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "execution": { + "iopub.execute_input": "2025-06-26T02:27:37.905478Z", + "iopub.status.busy": "2025-06-26T02:27:37.905380Z", + "iopub.status.idle": "2025-06-26T02:27:37.943038Z", + "shell.execute_reply": "2025-06-26T02:27:37.942668Z", + "shell.execute_reply.started": "2025-06-26T02:27:37.905469Z" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
modelremodel
ValueStd Errt StatSignifNull ValueValueStd Errt StatSignifNull Value
Parameter
-999-999.0.00NA0.0-999.0.00NA0.0
11.000.00NA0.01.000.00NA0.0
bike_ASC_auto_deficient_atwork-1.050.344-3.07**0.0-1.060.340-3.11**0.0
bike_ASC_auto_deficient_eatout-1.460.396-3.69***0.0-1.200.594-2.02*0.0
bike_ASC_auto_deficient_escort-3.980.406-9.79***0.0-3.880.559-6.94***0.0
bike_ASC_auto_deficient_othdiscr-0.9100.203-4.47***0.0-0.5280.418-1.260.0
bike_ASC_auto_deficient_othmaint-2.060.323-6.37***0.0-1.630.448-3.64***0.0
bike_ASC_auto_deficient_school-1.200.964-1.240.0-1.180.997-1.190.0
bike_ASC_auto_deficient_shopping-1.740.218-7.99***0.0-1.300.363-3.59***0.0
bike_ASC_auto_deficient_social0.3610.3251.110.00.5920.5321.110.0
bike_ASC_auto_deficient_univ-0.669NANA0.0-0.6690.00146-458.48***0.0
bike_ASC_auto_deficient_work-0.2790.0926-3.01**0.0-0.3600.0922-3.90***0.0
bike_ASC_auto_sufficient_atwork15.7470.0.030.015.7463.0.030.0
bike_ASC_auto_sufficient_eatout-1.850.159-11.60***0.0-1.300.409-3.17**0.0
bike_ASC_auto_sufficient_escort-5.650.337-16.76***0.0-5.260.453-11.62***0.0
bike_ASC_auto_sufficient_othdiscr-1.860.105-17.64***0.0-1.490.382-3.91***0.0
bike_ASC_auto_sufficient_othmaint-3.170.193-16.40***0.0-2.510.349-7.20***0.0
bike_ASC_auto_sufficient_school-2.210.919-2.40*0.0-2.200.953-2.31*0.0
bike_ASC_auto_sufficient_shopping-3.140.138-22.70***0.0-2.780.326-8.52***0.0
bike_ASC_auto_sufficient_social-2.140.207-10.36***0.0-1.830.471-3.88***0.0
bike_ASC_auto_sufficient_univ-1.940.00657-295.46***0.0-1.940.00650-298.24***0.0
bike_ASC_auto_sufficient_work-1.930.0814-23.72***0.0-2.060.0822-25.06***0.0
bike_ASC_no_auto_atwork-0.91076.5-0.010.0-0.91187.8-0.010.0
bike_ASC_no_auto_eatout0.42875.90.010.00.51087.20.010.0
bike_ASC_no_auto_escort-0.74575.9-0.010.0-0.73087.2-0.010.0
bike_ASC_no_auto_othdiscr-0.50175.9-0.010.0-0.40487.2-0.000.0
bike_ASC_no_auto_othmaint1.5375.90.020.01.6187.20.020.0
bike_ASC_no_auto_school13.5109.0.120.013.4116.0.120.0
bike_ASC_no_auto_shopping0.95175.90.010.01.0587.20.010.0
bike_ASC_no_auto_social0.37475.90.000.00.48687.20.010.0
bike_ASC_no_auto_univ4.290.00148BIG***0.04.290.00688624.05***0.0
bike_ASC_no_auto_work3.4375.90.050.03.4387.20.040.0
coef_age010_trn_multiplier_atwork0.0007220.007850.090.00.000722NANA0.0
coef_age010_trn_multiplier_eatout_escort_othdiscr_othmaint_shopping_social_work0.4900.1762.79**0.00.3640.1752.08*0.0
coef_age010_trn_multiplier_school_univ-0.8510.0900-9.46***0.0-0.8750.0898-9.74***0.0
coef_age1619_da_multiplier_atwork-0.1750.205-0.850.0-0.1930.205-0.940.0
coef_age1619_da_multiplier_eatout_escort_othdiscr_othmaint_shopping_social_work0.03570.04250.840.00.0005130.04240.010.0
coef_age1619_da_multiplier_school_univ-1.670.0748-22.31***0.0-1.680.0748-22.42***0.0
coef_age16p_sr_multiplier_eatout_escort_othdiscr_othmaint_shopping_social-1.580.0842-18.71***0.0-1.450.0814-17.82***0.0
coef_age16p_sr_multiplier_school_univ_work_atwork-0.6880.0682-10.08***0.0-0.6480.0683-9.49***0.0
coef_hhsize1_sr_multiplier_eatout_escort_othdiscr_othmaint_school_shopping_social_univ_atwork-0.07210.0312-2.31*0.0-0.07100.0312-2.27*0.0
coef_hhsize1_sr_multiplier_work-0.8220.0571-14.39***0.0-0.8360.0577-14.48***0.0
coef_hhsize2_sr_multiplier_eatout_escort_othdiscr_othmaint_shopping_social_work_atwork-0.004040.0178-0.230.00.002090.01780.120.0
coef_hhsize2_sr_multiplier_school_univ-0.7430.0912-8.15***0.0-0.7480.0912-8.20***0.0
coef_ivt_atwork-0.01120.000479-23.41***0.0-0.01120.000478-23.41***0.0
coef_ivt_eatout_escort_othdiscr_othmaint_shopping_social-0.006910.000145-47.76***0.0-0.006880.000144-47.65***0.0
coef_ivt_school_univ-0.01030.000316-32.62***0.0-0.01040.000318-32.71***0.0
coef_ivt_work-0.007910.000147-53.62***0.0-0.007950.000148-53.70***0.0
coef_nest_AUTO0.7200.00NA1.00.7200.00NA1.0
coef_nest_AUTO_DRIVEALONE0.3500.00NA1.00.3500.00NA1.0
coef_nest_AUTO_SHAREDRIDE20.3500.00NA1.00.3500.00NA1.0
coef_nest_AUTO_SHAREDRIDE30.3500.00NA1.00.3500.00NA1.0
coef_nest_NONMOTORIZED0.7200.00NA1.00.7200.00NA1.0
coef_nest_RIDEHAIL0.3600.00NA1.00.3600.00NA1.0
coef_nest_TRANSIT0.7200.00NA1.00.7200.00NA1.0
coef_nest_TRANSIT_DRIVEACCESS0.5000.00NA1.00.5000.00NA1.0
coef_nest_TRANSIT_WALKACCESS0.5000.00NA1.00.5000.00NA1.0
coef_test_eatout_escort_othdiscr_othmaint_shopping_social_work_atwork0.07700.04941.560.00.0770NANA0.0
coef_test_school_univ0.5180.9130.570.00.518NANA0.0
commuter_rail_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork-0.95816.4-0.060.0-0.74420.6-0.040.0
commuter_rail_ASC_school_univ-0.258NANA0.0-0.247NANA0.0
commuter_rail_ASC_work0.196278.0.000.00.158NANA0.0
drive_ferry_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork-0.62816.4-0.040.0-0.39320.6-0.020.0
drive_ferry_ASC_school_univ1.43NANA0.01.45NANA0.0
drive_ferry_ASC_work0.232278.0.000.00.194NANA0.0
drive_light_rail_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork-0.32516.4-0.020.0-0.091920.6-0.000.0
drive_light_rail_ASC_school_univ0.691NANA0.00.707NANA0.0
drive_light_rail_ASC_work0.530278.0.000.00.507NANA0.0
drive_transit_ASC_auto_deficient_atwork-999.0.000360-BIG***0.0-999.0.000231-BIG***0.0
drive_transit_ASC_auto_deficient_eatout-0.17316.4-0.010.00.10520.60.010.0
drive_transit_ASC_auto_deficient_escort-2.1916.4-0.130.0-2.1420.6-0.100.0
drive_transit_ASC_auto_deficient_othdiscr-0.85216.4-0.050.0-0.72620.6-0.040.0
drive_transit_ASC_auto_deficient_othmaint-1.3616.4-0.080.0-1.1720.6-0.060.0
drive_transit_ASC_auto_deficient_school1.59NANA0.01.57NANA0.0
drive_transit_ASC_auto_deficient_shopping-1.5816.4-0.100.0-1.4320.6-0.070.0
drive_transit_ASC_auto_deficient_social0.61016.40.040.00.59420.60.030.0
drive_transit_ASC_auto_deficient_univ1.85NANA0.01.85NANA0.0
drive_transit_ASC_auto_deficient_work-0.824278.-0.000.0-0.911NANA0.0
drive_transit_ASC_auto_sufficient_atwork-999.0.000176-BIG***0.0-999.NANA0.0
drive_transit_ASC_auto_sufficient_eatout-1.6516.4-0.100.0-1.3020.6-0.060.0
drive_transit_ASC_auto_sufficient_escort-5.3116.4-0.320.0-5.2520.6-0.260.0
drive_transit_ASC_auto_sufficient_othdiscr-1.2416.4-0.080.0-1.1120.6-0.050.0
drive_transit_ASC_auto_sufficient_othmaint-2.8016.4-0.170.0-2.4420.6-0.120.0
drive_transit_ASC_auto_sufficient_school0.105NANA0.00.155NANA0.0
drive_transit_ASC_auto_sufficient_shopping-4.1616.4-0.250.0-3.9720.6-0.190.0
drive_transit_ASC_auto_sufficient_social-1.3716.4-0.080.0-1.3420.6-0.070.0
drive_transit_ASC_auto_sufficient_univ1.36NANA0.01.360.000291BIG***0.0
drive_transit_ASC_auto_sufficient_work-1.73278.-0.010.0-1.83NANA0.0
drive_transit_ASC_no_auto_all0.00NANA0.00.000.0002930.000.0
drive_transit_CBD_ASC_atwork0.564NANA0.00.564NANA0.0
drive_transit_CBD_ASC_eatout_escort_othdiscr_othmaint_shopping_social1.370.1429.63***0.01.410.1429.95***0.0
drive_transit_CBD_ASC_school_univ1.230.2514.89***0.01.200.2534.76***0.0
drive_transit_CBD_ASC_work1.640.069823.45***0.01.620.069723.19***0.0
express_bus_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork-0.34216.4-0.020.0-0.088820.6-0.000.0
express_bus_ASC_school_univ-0.451NANA0.0-0.450NANA0.0
express_bus_ASC_work-0.881278.-0.000.0-0.920NANA0.0
heavy_rail_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork-0.20716.4-0.010.00.040120.60.000.0
heavy_rail_ASC_school_univ0.110NANA0.00.127NANA0.0
heavy_rail_ASC_work0.513278.0.000.00.496NANA0.0
joint_bike_ASC_auto_deficient_all-6.181.34-4.62***0.0-6.161.42-4.35***0.0
joint_bike_ASC_auto_sufficient_all-7.100.465-15.28***0.0-6.950.465-14.96***0.0
joint_bike_ASC_no_auto_all-2.671.08-2.48*0.0-2.671.14-2.35*0.0
joint_drive_transit_ASC_auto_deficient_all-6.0416.4-0.370.0-6.0420.6-0.290.0
joint_drive_transit_ASC_auto_sufficient_all-7.7916.4-0.480.0-7.8020.6-0.380.0
joint_drive_transit_ASC_no_auto_all0.000.00NA0.00.000.00NA0.0
joint_sr2_ASC_auto_deficient_all0.000.00NA0.00.000.00NA0.0
joint_sr2_ASC_auto_sufficient_all0.000.00NA0.00.000.00NA0.0
joint_sr2_ASC_no_auto_all0.000.00NA0.00.000.00NA0.0
joint_sr3p_ASC_auto_deficient_all-1.490.258-5.77***0.0-1.510.260-5.80***0.0
joint_sr3p_ASC_auto_sufficient_all-2.290.133-17.17***0.0-2.270.131-17.25***0.0
joint_sr3p_ASC_no_auto_all0.6990.4701.490.00.6800.4711.440.0
joint_taxi_ASC_auto_deficient_all-9.828.15-1.210.0-9.828.64-1.140.0
joint_taxi_ASC_auto_sufficient_all-11.70.00NA0.0-11.70.00NA0.0
joint_taxi_ASC_no_auto_all-4.584.29-1.070.0-4.584.45-1.030.0
joint_tnc_shared_ASC_auto_deficient_all-11.217.0-0.660.0-11.218.0-0.620.0
joint_tnc_shared_ASC_auto_sufficient_all-13.20.00NA0.0-13.20.00NA0.0
joint_tnc_shared_ASC_no_auto_all-4.722.18-2.17*0.0-4.702.31-2.03*0.0
joint_tnc_single_ASC_auto_deficient_all-9.907.20-1.380.0-9.907.63-1.300.0
joint_tnc_single_ASC_auto_sufficient_all-14.00.00NA0.0-14.00.00NA0.0
joint_tnc_single_ASC_no_auto_all-3.862.05-1.880.0-3.892.20-1.770.0
joint_walk_ASC_auto_deficient_all-2.220.376-5.89***0.0-2.050.372-5.51***0.0
joint_walk_ASC_auto_sufficient_all-4.340.245-17.76***0.0-4.150.240-17.32***0.0
joint_walk_ASC_no_auto_all-0.3670.727-0.510.0-0.2940.735-0.400.0
joint_walk_transit_ASC_auto_deficient_all-5.3016.4-0.320.0-5.3020.6-0.260.0
joint_walk_transit_ASC_auto_sufficient_all-18.3655.-0.030.0-18.3620.-0.030.0
joint_walk_transit_ASC_no_auto_all0.38616.40.020.00.35120.60.020.0
local_bus_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork-1.1816.4-0.070.0-0.94320.6-0.050.0
local_bus_ASC_school_univ-0.819NANA0.0-0.811NANA0.0
local_bus_ASC_work-0.179278.-0.000.0-0.211NANA0.0
sr2_ASC_auto_deficient_atwork-1.490.132-11.34***0.0-1.570.133-11.82***0.0
sr2_ASC_auto_deficient_eatout0.8740.1555.64***0.01.320.4073.25**0.0
sr2_ASC_auto_deficient_escort0.2540.1601.580.00.5600.3311.690.0
sr2_ASC_auto_deficient_othdiscr1.060.1318.13***0.01.320.3893.39***0.0
sr2_ASC_auto_deficient_othmaint0.5840.1454.02***0.01.030.3273.14**0.0
sr2_ASC_auto_deficient_school0.5180.9280.560.00.5220.9610.540.0
sr2_ASC_auto_deficient_shopping0.5220.1274.09***0.00.8010.3192.51*0.0
sr2_ASC_auto_deficient_social2.300.21510.70***0.02.420.4735.12***0.0
sr2_ASC_auto_deficient_univ-1.69NANA0.0-1.690.000112-BIG***0.0
sr2_ASC_auto_deficient_work0.4240.08924.76***0.00.2480.09002.76**0.0
sr2_ASC_auto_sufficient_atwork-0.7720.0784-9.85***0.0-0.8100.0784-10.34***0.0
sr2_ASC_auto_sufficient_eatout1.170.10511.19***0.01.630.3904.18***0.0
sr2_ASC_auto_sufficient_escort0.4270.1293.31***0.00.7540.3172.38*0.0
sr2_ASC_auto_sufficient_othdiscr0.8300.1018.23***0.01.090.3802.87**0.0
sr2_ASC_auto_sufficient_othmaint0.6420.1036.24***0.01.090.3123.51***0.0
sr2_ASC_auto_sufficient_school-0.7200.916-0.790.0-0.7200.950-0.760.0
sr2_ASC_auto_sufficient_shopping0.5180.1005.16***0.00.8060.3102.60**0.0
sr2_ASC_auto_sufficient_social0.8670.1107.88***0.01.070.4382.43*0.0
sr2_ASC_auto_sufficient_univ-1.86NANA0.0-1.866.12e-05-BIG***0.0
sr2_ASC_auto_sufficient_work-0.2950.0860-3.43***0.0-0.4780.0868-5.50***0.0
sr2_ASC_no_auto_all1.2275.90.020.01.1787.20.010.0
sr3p_ASC_auto_deficient_atwork-1.810.136-13.30***0.0-1.880.137-13.71***0.0
sr3p_ASC_auto_deficient_eatout0.1840.1870.980.00.6380.4201.520.0
sr3p_ASC_auto_deficient_escort0.03000.1630.180.00.3360.3321.010.0
sr3p_ASC_auto_deficient_othdiscr1.420.12411.40***0.01.670.3874.32***0.0
sr3p_ASC_auto_deficient_othmaint-0.6070.223-2.71**0.0-0.2020.371-0.550.0
sr3p_ASC_auto_deficient_school1.100.9271.180.01.090.9611.140.0
sr3p_ASC_auto_deficient_shopping0.1800.1381.310.00.4570.3241.410.0
sr3p_ASC_auto_deficient_social2.040.2239.16***0.02.160.4764.52***0.0
sr3p_ASC_auto_deficient_univ-1.731.83e-05-BIG***0.0-1.73NANA0.0
sr3p_ASC_auto_deficient_work-0.1270.0922-1.380.0-0.2890.0929-3.11**0.0
sr3p_ASC_auto_sufficient_atwork-0.9540.0797-11.97***0.0-1.000.0798-12.59***0.0
sr3p_ASC_auto_sufficient_eatout1.130.10510.73***0.01.580.3904.04***0.0
sr3p_ASC_auto_sufficient_escort0.4000.1293.10**0.00.7290.3172.30*0.0
sr3p_ASC_auto_sufficient_othdiscr0.9290.1019.25***0.01.180.3803.12**0.0
sr3p_ASC_auto_sufficient_othmaint0.2570.1052.44*0.00.7260.3132.32*0.0
sr3p_ASC_auto_sufficient_school-0.1510.916-0.160.0-0.1510.950-0.160.0
sr3p_ASC_auto_sufficient_shopping0.2750.1012.72**0.00.5610.3101.810.0
sr3p_ASC_auto_sufficient_social0.8700.1107.91***0.01.070.4382.45*0.0
sr3p_ASC_auto_sufficient_univ-1.902.57e-05-BIG***0.0-1.901.95e-05-BIG***0.0
sr3p_ASC_auto_sufficient_work-0.6620.0868-7.63***0.0-0.8490.0876-9.68***0.0
sr3p_ASC_no_auto_atwork1.4975.90.020.01.6787.20.020.0
sr3p_ASC_no_auto_eatout1.6275.90.020.01.5387.20.020.0
sr3p_ASC_no_auto_escort-1.8775.9-0.020.0-1.8787.3-0.020.0
sr3p_ASC_no_auto_othdiscr1.4375.90.020.01.4087.20.020.0
sr3p_ASC_no_auto_othmaint0.29675.90.000.00.19587.20.000.0
sr3p_ASC_no_auto_school-6.02105.-0.060.0-6.02112.-0.050.0
sr3p_ASC_no_auto_shopping0.88175.90.010.00.84787.20.010.0
sr3p_ASC_no_auto_social-1.1775.9-0.020.0-1.2187.2-0.010.0
sr3p_ASC_no_auto_univ-6.061.79e-05-BIG***0.0-6.065.30e-05-BIG***0.0
sr3p_ASC_no_auto_work0.61475.90.010.00.52387.20.010.0
taxi_ASC_auto_deficient_atwork-4.590.435-10.57***0.0-4.750.459-10.34***0.0
taxi_ASC_auto_deficient_eatout_othdiscr_social-3.260.483-6.76***0.0-3.160.647-4.89***0.0
taxi_ASC_auto_deficient_escort_othmaint_shopping-0.9300.118-7.89***0.0-0.5030.313-1.600.0
taxi_ASC_auto_deficient_school0.8400.9350.900.00.8990.9680.930.0
taxi_ASC_auto_deficient_univ4.251.62e-05BIG***0.04.254.12e-06BIG***0.0
taxi_ASC_auto_deficient_work-2.040.205-9.95***0.0-2.300.226-10.19***0.0
taxi_ASC_auto_sufficient_atwork-3.340.150-22.22***0.0-3.310.148-22.34***0.0
taxi_ASC_auto_sufficient_eatout_othdiscr_social-3.930.246-15.96***0.0-3.470.416-8.35***0.0
taxi_ASC_auto_sufficient_escort_othmaint_shopping-2.780.0965-28.85***0.0-2.330.306-7.60***0.0
taxi_ASC_auto_sufficient_school-2.260.922-2.45*0.0-2.230.956-2.33*0.0
taxi_ASC_auto_sufficient_univ-0.313NANA0.0-0.313NANA0.0
taxi_ASC_auto_sufficient_work-4.850.303-16.01***0.0-5.140.361-14.22***0.0
taxi_ASC_no_auto_atwork3.6575.90.050.03.6387.20.040.0
taxi_ASC_no_auto_eatout_othdiscr_social-0.57175.9-0.010.0-0.46087.2-0.010.0
taxi_ASC_no_auto_escort_othmaint_shopping1.4575.90.020.01.5487.20.020.0
taxi_ASC_no_auto_school_univ-7.000.00NA0.0-7.000.00NA0.0
taxi_ASC_no_auto_work3.9475.90.050.03.8987.20.040.0
tnc_shared_ASC_auto_deficient_atwork-5.170.414-12.49***0.0-5.210.410-12.71***0.0
tnc_shared_ASC_auto_deficient_eatout_othdiscr_social-4.460.900-4.95***0.0-4.431.17-3.78***0.0
tnc_shared_ASC_auto_deficient_escort_othmaint_shopping-1.240.109-11.36***0.0-0.7960.310-2.57*0.0
tnc_shared_ASC_auto_deficient_school0.2830.9330.300.00.3120.9660.320.0
tnc_shared_ASC_auto_deficient_univ3.251.25e-05BIG***0.03.25NANA0.0
tnc_shared_ASC_auto_deficient_work-3.400.214-15.89***0.0-3.730.231-16.16***0.0
tnc_shared_ASC_auto_sufficient_atwork-4.080.166-24.64***0.0-4.090.167-24.51***0.0
tnc_shared_ASC_auto_sufficient_eatout_othdiscr_social-4.320.199-21.67***0.0-3.880.393-9.86***0.0
tnc_shared_ASC_auto_sufficient_escort_othmaint_shopping-3.290.0920-35.76***0.0-2.830.305-9.30***0.0
tnc_shared_ASC_auto_sufficient_school-3.620.927-3.91***0.0-3.620.961-3.77***0.0
tnc_shared_ASC_auto_sufficient_univ-0.907NANA0.0-0.907NANA0.0
tnc_shared_ASC_auto_sufficient_work-6.480.411-15.77***0.0-6.740.419-16.11***0.0
tnc_shared_ASC_no_auto_atwork3.0675.90.040.03.0487.20.030.0
tnc_shared_ASC_no_auto_eatout_othdiscr_social-0.080375.9-0.000.0-0.00052987.2-0.000.0
tnc_shared_ASC_no_auto_escort_othmaint_shopping0.68575.90.010.00.77687.20.010.0
tnc_shared_ASC_no_auto_school-7.000.00NA0.0-7.000.00NA0.0
tnc_shared_ASC_no_auto_univ-5.81NANA0.0-5.81NANA0.0
tnc_shared_ASC_no_auto_work2.2375.90.030.02.2187.20.030.0
tnc_single_ASC_auto_deficient_atwork-4.240.319-13.29***0.0-4.360.331-13.19***0.0
tnc_single_ASC_auto_deficient_eatout_othdiscr_social-3.270.436-7.50***0.0-3.120.599-5.21***0.0
tnc_single_ASC_auto_deficient_escort_othmaint_shopping-0.3400.102-3.34***0.00.09280.3080.300.0
tnc_single_ASC_auto_deficient_school-0.01370.943-0.010.00.05970.9750.060.0
tnc_single_ASC_auto_deficient_univ1.02NANA0.01.022.45e-06BIG***0.0
tnc_single_ASC_auto_deficient_work-1.300.115-11.28***0.0-1.470.118-12.49***0.0
tnc_single_ASC_auto_sufficient_atwork-3.140.126-25.00***0.0-3.140.125-25.04***0.0
tnc_single_ASC_auto_sufficient_eatout_othdiscr_social-3.260.149-21.84***0.0-2.830.371-7.62***0.0
tnc_single_ASC_auto_sufficient_escort_othmaint_shopping-2.200.0833-26.43***0.0-1.760.302-5.81***0.0
tnc_single_ASC_auto_sufficient_school-2.070.920-2.25*0.0-2.020.953-2.12*0.0
tnc_single_ASC_auto_sufficient_univ0.2095.09e-06BIG***0.00.2092.79e-06BIG***0.0
tnc_single_ASC_auto_sufficient_work-4.240.182-23.29***0.0-4.330.179-24.13***0.0
tnc_single_ASC_no_auto_atwork4.2675.90.060.04.2487.20.050.0
tnc_single_ASC_no_auto_eatout_othdiscr_social0.98275.90.010.01.0687.20.010.0
tnc_single_ASC_no_auto_escort_othmaint_shopping1.6075.90.020.01.7087.20.020.0
tnc_single_ASC_no_auto_school-7.000.00NA0.0-7.000.00NA0.0
tnc_single_ASC_no_auto_univ-2.52NANA0.0-2.525.36e-06-BIG***0.0
tnc_single_ASC_no_auto_work5.3175.90.070.05.3187.20.060.0
walk_ASC_auto_deficient_atwork0.2270.1231.840.00.1750.1241.410.0
walk_ASC_auto_deficient_eatout2.170.19810.96***0.02.700.4256.37***0.0
walk_ASC_auto_deficient_escort-1.980.265-7.46***0.0-1.600.396-4.04***0.0
walk_ASC_auto_deficient_othdiscr1.210.1547.86***0.01.570.3983.94***0.0
walk_ASC_auto_deficient_othmaint0.1450.2080.700.00.6430.3601.790.0
walk_ASC_auto_deficient_school2.610.9312.81**0.02.650.9642.75**0.0
walk_ASC_auto_deficient_shopping0.9090.1376.63***0.01.310.3234.06***0.0
walk_ASC_auto_deficient_social2.260.2997.56***0.02.480.5164.82***0.0
walk_ASC_auto_deficient_univ4.511.92e-06BIG***0.04.51NANA0.0
walk_ASC_auto_deficient_work1.700.095517.84***0.01.590.096216.52***0.0
walk_ASC_auto_sufficient_atwork0.07760.05801.340.00.07860.05791.360.0
walk_ASC_auto_sufficient_eatout0.6130.1065.78***0.01.190.3913.04**0.0
walk_ASC_auto_sufficient_escort-1.740.117-14.88***0.0-1.320.313-4.20***0.0
walk_ASC_auto_sufficient_othdiscr0.3050.08293.68***0.00.6610.3761.760.0
walk_ASC_auto_sufficient_othmaint-0.1680.0955-1.760.00.4390.3101.420.0
walk_ASC_auto_sufficient_school0.3740.9170.410.00.3830.9510.400.0
walk_ASC_auto_sufficient_shopping-0.3040.0811-3.75***0.00.08180.3050.270.0
walk_ASC_auto_sufficient_social0.5920.1175.04***0.00.9110.4392.08*0.0
walk_ASC_auto_sufficient_univ1.06NANA0.01.061.94e-07BIG***0.0
walk_ASC_auto_sufficient_work-0.2910.0787-3.70***0.0-0.4170.0795-5.25***0.0
walk_ASC_no_auto_atwork6.6375.90.090.06.6187.20.080.0
walk_ASC_no_auto_eatout4.4175.90.060.04.5287.20.050.0
walk_ASC_no_auto_escort2.5175.90.030.02.5687.20.030.0
walk_ASC_no_auto_othdiscr2.8975.90.040.02.9687.20.030.0
walk_ASC_no_auto_othmaint0.93075.90.010.01.0687.20.010.0
walk_ASC_no_auto_school17.8109.0.160.017.8116.0.150.0
walk_ASC_no_auto_shopping2.1775.90.030.02.2687.20.030.0
walk_ASC_no_auto_social1.7475.90.020.01.8487.20.020.0
walk_ASC_no_auto_univ6.41NANA0.06.413.50e-09BIG***0.0
walk_ASC_no_auto_work5.2875.90.070.05.2887.20.060.0
walk_ferry_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork-0.23916.4-0.010.0-0.034720.6-0.000.0
walk_ferry_ASC_school_univ0.858NANA0.00.903NANA0.0
walk_ferry_ASC_work0.189278.0.000.00.0751NANA0.0
walk_light_rail_ASC_eatout_escort_othdiscr_othmaint_shopping_social_atwork-0.13616.4-0.010.00.11520.60.010.0
walk_light_rail_ASC_school_univ0.724NANA0.00.721NANA0.0
walk_light_rail_ASC_work0.786278.0.000.00.730NANA0.0
walk_transit_ASC_auto_deficient_atwork-2.6316.4-0.160.0-2.8420.6-0.140.0
walk_transit_ASC_auto_deficient_eatout-0.48916.4-0.030.0-0.20520.6-0.010.0
walk_transit_ASC_auto_deficient_escort-4.4516.4-0.270.0-4.4620.6-0.220.0
walk_transit_ASC_auto_deficient_othdiscr0.87316.40.050.00.99720.60.050.0
walk_transit_ASC_auto_deficient_othmaint-2.9716.4-0.180.0-2.9120.6-0.140.0
walk_transit_ASC_auto_deficient_school2.97NANA0.03.00NANA0.0
walk_transit_ASC_auto_deficient_shopping-1.0716.4-0.070.0-0.89920.6-0.040.0
walk_transit_ASC_auto_deficient_social1.3216.40.080.01.3220.60.060.0
walk_transit_ASC_auto_deficient_univ3.140.00NA0.03.140.00NA0.0
walk_transit_ASC_auto_deficient_work0.159278.0.000.00.0663NANA0.0
walk_transit_ASC_auto_sufficient_atwork-3.6616.4-0.220.0-3.7620.6-0.180.0
walk_transit_ASC_auto_sufficient_eatout-1.3216.4-0.080.0-0.98520.6-0.050.0
walk_transit_ASC_auto_sufficient_escort-4.8216.4-0.290.0-4.6820.6-0.230.0
walk_transit_ASC_auto_sufficient_othdiscr-0.91416.4-0.060.0-0.77120.6-0.040.0
walk_transit_ASC_auto_sufficient_othmaint-1.6816.4-0.100.0-1.3120.6-0.060.0
walk_transit_ASC_auto_sufficient_school0.487NANA0.00.522NANA0.0
walk_transit_ASC_auto_sufficient_shopping-2.3516.4-0.140.0-2.2020.6-0.110.0
walk_transit_ASC_auto_sufficient_social-0.64716.4-0.040.0-0.59520.6-0.030.0
walk_transit_ASC_auto_sufficient_univ0.4730.00NA0.00.4730.00NA0.0
walk_transit_ASC_auto_sufficient_work-1.37278.-0.000.0-1.47NANA0.0
walk_transit_ASC_no_auto_atwork3.1366.90.050.02.9873.60.040.0
walk_transit_ASC_no_auto_eatout2.9266.90.040.02.7673.60.040.0
walk_transit_ASC_no_auto_escort-2.2667.0-0.030.0-2.2673.7-0.030.0
walk_transit_ASC_no_auto_othdiscr2.8066.90.040.02.6473.60.040.0
walk_transit_ASC_no_auto_othmaint2.5966.90.040.02.4373.60.030.0
walk_transit_ASC_no_auto_school20.4NANA0.020.5NANA0.0
walk_transit_ASC_no_auto_shopping2.3366.90.030.02.1873.60.030.0
walk_transit_ASC_no_auto_social2.0666.90.030.01.9073.60.030.0
walk_transit_ASC_no_auto_univ8.790.00NA0.08.790.00NA0.0
walk_transit_ASC_no_auto_work4.60285.0.020.04.63NANA0.0
walk_transit_CBD_ASC_atwork1.300.2844.57***0.01.180.2774.28***0.0
walk_transit_CBD_ASC_eatout_escort_othdiscr_othmaint_shopping_social1.080.075714.25***0.01.090.075614.41***0.0
walk_transit_CBD_ASC_school_univ0.8340.1147.30***0.00.8260.1147.24***0.0
walk_transit_CBD_ASC_work1.160.053921.50***0.01.150.053921.27***0.0
coefficient_name\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\nName: eatout, dtype: object0.3400.1901.780.0
coefficient_name\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\nName: escort, dtype: object0.00NANA0.0
coefficient_name\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\nName: othdiscr, dtype: object0.2310.1851.240.0
coefficient_name\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\nName: othmaint, dtype: object0.3330.1502.22*0.0
coefficient_name\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\nName: shopping, dtype: object0.2450.1491.640.0
coefficient_name\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\nName: social, dtype: object0.1970.2140.920.0
coefficient_name\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\ncoef_test coef_test_eatout_escort_othdiscr_othmaint_shop...\\nName: work, dtype: object-0.03060.0255-1.200.0
coefficient_name\\ncoef_test coef_test_school_univ\\ncoef_test coef_test_school_univ\\nName: school, dtype: object0.2780.4740.590.0
coefficient_name\\ncoef_test coef_test_school_univ\\ncoef_test coef_test_school_univ\\nName: univ, dtype: object0.00NANA0.0
\n", - "

307 rows × 3 columns

\n", "
" ], "text/plain": [ - " coefficient_name value constrain\n", - "0 coef_one 1.000000 T\n", - "1 coef_nest_root 1.000000 T\n", - "2 coef_nest_AUTO 0.720000 T\n", - "3 coef_nest_AUTO_DRIVEALONE 0.350000 T\n", - "4 coef_nest_AUTO_SHAREDRIDE2 0.350000 T\n", - ".. ... ... ...\n", - "302 walk_transit_CBD_ASC_atwork 0.351950 F\n", - "303 drive_transit_CBD_ASC_eatout_escort_othdiscr_o... 0.553404 F\n", - "304 drive_transit_CBD_ASC_school_univ 62.459413 F\n", - "305 drive_transit_CBD_ASC_work 1.432631 F\n", - "306 drive_transit_CBD_ASC_atwork 0.564000 F\n", + " model \\\n", + " Value Std Err \n", + "Parameter \n", + "-999 -999.  0.00 \n", + "1  1.00  0.00 \n", + "bike_ASC_auto_deficient_atwork -1.05  0.344 \n", + "bike_ASC_auto_deficient_eatout -1.46  0.396 \n", + "bike_ASC_auto_deficient_escort -3.98  0.406 \n", + "bike_ASC_auto_deficient_othdiscr -0.910  0.203 \n", + "bike_ASC_auto_deficient_othmaint -2.06  0.323 \n", + "bike_ASC_auto_deficient_school -1.20  0.964 \n", + "bike_ASC_auto_deficient_shopping -1.74  0.218 \n", + "bike_ASC_auto_deficient_social  0.361  0.325 \n", + "bike_ASC_auto_deficient_univ -0.669  NA \n", + "bike_ASC_auto_deficient_work -0.279  0.0926 \n", + "bike_ASC_auto_sufficient_atwork  15.7  470. \n", + "bike_ASC_auto_sufficient_eatout -1.85  0.159 \n", + "bike_ASC_auto_sufficient_escort -5.65  0.337 \n", + "bike_ASC_auto_sufficient_othdiscr -1.86  0.105 \n", + "bike_ASC_auto_sufficient_othmaint -3.17  0.193 \n", + "bike_ASC_auto_sufficient_school -2.21  0.919 \n", + "bike_ASC_auto_sufficient_shopping -3.14  0.138 \n", + "bike_ASC_auto_sufficient_social -2.14  0.207 \n", + "bike_ASC_auto_sufficient_univ -1.94  0.00657 \n", + "bike_ASC_auto_sufficient_work -1.93  0.0814 \n", + "bike_ASC_no_auto_atwork -0.910  76.5 \n", + "bike_ASC_no_auto_eatout  0.428  75.9 \n", + "bike_ASC_no_auto_escort -0.745  75.9 \n", + "bike_ASC_no_auto_othdiscr -0.501  75.9 \n", + "bike_ASC_no_auto_othmaint  1.53  75.9 \n", + "bike_ASC_no_auto_school  13.5  109. \n", + "bike_ASC_no_auto_shopping  0.951  75.9 \n", + "bike_ASC_no_auto_social  0.374  75.9 \n", + "bike_ASC_no_auto_univ  4.29  0.00148 \n", + "bike_ASC_no_auto_work  3.43  75.9 \n", + "coef_age010_trn_multiplier_atwork  0.000722  0.00785 \n", + "coef_age010_trn_multiplier_eatout_escort_othdis...  0.490  0.176 \n", + "coef_age010_trn_multiplier_school_univ -0.851  0.0900 \n", + "coef_age1619_da_multiplier_atwork -0.175  0.205 \n", + "coef_age1619_da_multiplier_eatout_escort_othdis...  0.0357  0.0425 \n", + "coef_age1619_da_multiplier_school_univ -1.67  0.0748 \n", + "coef_age16p_sr_multiplier_eatout_escort_othdisc... -1.58  0.0842 \n", + "coef_age16p_sr_multiplier_school_univ_work_atwork -0.688  0.0682 \n", + "coef_hhsize1_sr_multiplier_eatout_escort_othdis... -0.0721  0.0312 \n", + "coef_hhsize1_sr_multiplier_work -0.822  0.0571 \n", + "coef_hhsize2_sr_multiplier_eatout_escort_othdis... -0.00404  0.0178 \n", + "coef_hhsize2_sr_multiplier_school_univ -0.743  0.0912 \n", + "coef_ivt_atwork -0.0112  0.000479 \n", + "coef_ivt_eatout_escort_othdiscr_othmaint_shoppi... -0.00691  0.000145 \n", + "coef_ivt_school_univ -0.0103  0.000316 \n", + "coef_ivt_work -0.00791  0.000147 \n", + "coef_nest_AUTO  0.720  0.00 \n", + "coef_nest_AUTO_DRIVEALONE  0.350  0.00 \n", + "coef_nest_AUTO_SHAREDRIDE2  0.350  0.00 \n", + "coef_nest_AUTO_SHAREDRIDE3  0.350  0.00 \n", + "coef_nest_NONMOTORIZED  0.720  0.00 \n", + "coef_nest_RIDEHAIL  0.360  0.00 \n", + "coef_nest_TRANSIT  0.720  0.00 \n", + "coef_nest_TRANSIT_DRIVEACCESS  0.500  0.00 \n", + "coef_nest_TRANSIT_WALKACCESS  0.500  0.00 \n", + "coef_test_eatout_escort_othdiscr_othmaint_shopp...  0.0770  0.0494 \n", + "coef_test_school_univ  0.518  0.913 \n", + "commuter_rail_ASC_eatout_escort_othdiscr_othmai... -0.958  16.4 \n", + "commuter_rail_ASC_school_univ -0.258  NA \n", + "commuter_rail_ASC_work  0.196  278. \n", + "drive_ferry_ASC_eatout_escort_othdiscr_othmaint... -0.628  16.4 \n", + "drive_ferry_ASC_school_univ  1.43  NA \n", + "drive_ferry_ASC_work  0.232  278. \n", + "drive_light_rail_ASC_eatout_escort_othdiscr_oth... -0.325  16.4 \n", + "drive_light_rail_ASC_school_univ  0.691  NA \n", + "drive_light_rail_ASC_work  0.530  278. \n", + "drive_transit_ASC_auto_deficient_atwork -999.  0.000360 \n", + "drive_transit_ASC_auto_deficient_eatout -0.173  16.4 \n", + "drive_transit_ASC_auto_deficient_escort -2.19  16.4 \n", + "drive_transit_ASC_auto_deficient_othdiscr -0.852  16.4 \n", + "drive_transit_ASC_auto_deficient_othmaint -1.36  16.4 \n", + "drive_transit_ASC_auto_deficient_school  1.59  NA \n", + "drive_transit_ASC_auto_deficient_shopping -1.58  16.4 \n", + "drive_transit_ASC_auto_deficient_social  0.610  16.4 \n", + "drive_transit_ASC_auto_deficient_univ  1.85  NA \n", + "drive_transit_ASC_auto_deficient_work -0.824  278. \n", + "drive_transit_ASC_auto_sufficient_atwork -999.  0.000176 \n", + "drive_transit_ASC_auto_sufficient_eatout -1.65  16.4 \n", + "drive_transit_ASC_auto_sufficient_escort -5.31  16.4 \n", + "drive_transit_ASC_auto_sufficient_othdiscr -1.24  16.4 \n", + "drive_transit_ASC_auto_sufficient_othmaint -2.80  16.4 \n", + "drive_transit_ASC_auto_sufficient_school  0.105  NA \n", + "drive_transit_ASC_auto_sufficient_shopping -4.16  16.4 \n", + "drive_transit_ASC_auto_sufficient_social -1.37  16.4 \n", + "drive_transit_ASC_auto_sufficient_univ  1.36  NA \n", + "drive_transit_ASC_auto_sufficient_work -1.73  278. \n", + "drive_transit_ASC_no_auto_all  0.00  NA \n", + "drive_transit_CBD_ASC_atwork  0.564  NA \n", + "drive_transit_CBD_ASC_eatout_escort_othdiscr_ot...  1.37  0.142 \n", + "drive_transit_CBD_ASC_school_univ  1.23  0.251 \n", + "drive_transit_CBD_ASC_work  1.64  0.0698 \n", + "express_bus_ASC_eatout_escort_othdiscr_othmaint... -0.342  16.4 \n", + "express_bus_ASC_school_univ -0.451  NA \n", + "express_bus_ASC_work -0.881  278. \n", + "heavy_rail_ASC_eatout_escort_othdiscr_othmaint_... -0.207  16.4 \n", + "heavy_rail_ASC_school_univ  0.110  NA \n", + "heavy_rail_ASC_work  0.513  278. \n", + "joint_bike_ASC_auto_deficient_all -6.18  1.34 \n", + "joint_bike_ASC_auto_sufficient_all -7.10  0.465 \n", + "joint_bike_ASC_no_auto_all -2.67  1.08 \n", + "joint_drive_transit_ASC_auto_deficient_all -6.04  16.4 \n", + "joint_drive_transit_ASC_auto_sufficient_all -7.79  16.4 \n", + "joint_drive_transit_ASC_no_auto_all  0.00  0.00 \n", + "joint_sr2_ASC_auto_deficient_all  0.00  0.00 \n", + "joint_sr2_ASC_auto_sufficient_all  0.00  0.00 \n", + "joint_sr2_ASC_no_auto_all  0.00  0.00 \n", + "joint_sr3p_ASC_auto_deficient_all -1.49  0.258 \n", + "joint_sr3p_ASC_auto_sufficient_all -2.29  0.133 \n", + "joint_sr3p_ASC_no_auto_all  0.699  0.470 \n", + "joint_taxi_ASC_auto_deficient_all -9.82  8.15 \n", + "joint_taxi_ASC_auto_sufficient_all -11.7  0.00 \n", + "joint_taxi_ASC_no_auto_all -4.58  4.29 \n", + "joint_tnc_shared_ASC_auto_deficient_all -11.2  17.0 \n", + "joint_tnc_shared_ASC_auto_sufficient_all -13.2  0.00 \n", + "joint_tnc_shared_ASC_no_auto_all -4.72  2.18 \n", + "joint_tnc_single_ASC_auto_deficient_all -9.90  7.20 \n", + "joint_tnc_single_ASC_auto_sufficient_all -14.0  0.00 \n", + "joint_tnc_single_ASC_no_auto_all -3.86  2.05 \n", + "joint_walk_ASC_auto_deficient_all -2.22  0.376 \n", + "joint_walk_ASC_auto_sufficient_all -4.34  0.245 \n", + "joint_walk_ASC_no_auto_all -0.367  0.727 \n", + "joint_walk_transit_ASC_auto_deficient_all -5.30  16.4 \n", + "joint_walk_transit_ASC_auto_sufficient_all -18.3  655. \n", + "joint_walk_transit_ASC_no_auto_all  0.386  16.4 \n", + "local_bus_ASC_eatout_escort_othdiscr_othmaint_s... -1.18  16.4 \n", + "local_bus_ASC_school_univ -0.819  NA \n", + "local_bus_ASC_work -0.179  278. \n", + "sr2_ASC_auto_deficient_atwork -1.49  0.132 \n", + "sr2_ASC_auto_deficient_eatout  0.874  0.155 \n", + "sr2_ASC_auto_deficient_escort  0.254  0.160 \n", + "sr2_ASC_auto_deficient_othdiscr  1.06  0.131 \n", + "sr2_ASC_auto_deficient_othmaint  0.584  0.145 \n", + "sr2_ASC_auto_deficient_school  0.518  0.928 \n", + "sr2_ASC_auto_deficient_shopping  0.522  0.127 \n", + "sr2_ASC_auto_deficient_social  2.30  0.215 \n", + "sr2_ASC_auto_deficient_univ -1.69  NA \n", + "sr2_ASC_auto_deficient_work  0.424  0.0892 \n", + "sr2_ASC_auto_sufficient_atwork -0.772  0.0784 \n", + "sr2_ASC_auto_sufficient_eatout  1.17  0.105 \n", + "sr2_ASC_auto_sufficient_escort  0.427  0.129 \n", + "sr2_ASC_auto_sufficient_othdiscr  0.830  0.101 \n", + "sr2_ASC_auto_sufficient_othmaint  0.642  0.103 \n", + "sr2_ASC_auto_sufficient_school -0.720  0.916 \n", + "sr2_ASC_auto_sufficient_shopping  0.518  0.100 \n", + "sr2_ASC_auto_sufficient_social  0.867  0.110 \n", + "sr2_ASC_auto_sufficient_univ -1.86  NA \n", + "sr2_ASC_auto_sufficient_work -0.295  0.0860 \n", + "sr2_ASC_no_auto_all  1.22  75.9 \n", + "sr3p_ASC_auto_deficient_atwork -1.81  0.136 \n", + "sr3p_ASC_auto_deficient_eatout  0.184  0.187 \n", + "sr3p_ASC_auto_deficient_escort  0.0300  0.163 \n", + "sr3p_ASC_auto_deficient_othdiscr  1.42  0.124 \n", + "sr3p_ASC_auto_deficient_othmaint -0.607  0.223 \n", + "sr3p_ASC_auto_deficient_school  1.10  0.927 \n", + "sr3p_ASC_auto_deficient_shopping  0.180  0.138 \n", + "sr3p_ASC_auto_deficient_social  2.04  0.223 \n", + "sr3p_ASC_auto_deficient_univ -1.73  1.83e-05 \n", + "sr3p_ASC_auto_deficient_work -0.127  0.0922 \n", + "sr3p_ASC_auto_sufficient_atwork -0.954  0.0797 \n", + "sr3p_ASC_auto_sufficient_eatout  1.13  0.105 \n", + "sr3p_ASC_auto_sufficient_escort  0.400  0.129 \n", + "sr3p_ASC_auto_sufficient_othdiscr  0.929  0.101 \n", + "sr3p_ASC_auto_sufficient_othmaint  0.257  0.105 \n", + "sr3p_ASC_auto_sufficient_school -0.151  0.916 \n", + "sr3p_ASC_auto_sufficient_shopping  0.275  0.101 \n", + "sr3p_ASC_auto_sufficient_social  0.870  0.110 \n", + "sr3p_ASC_auto_sufficient_univ -1.90  2.57e-05 \n", + "sr3p_ASC_auto_sufficient_work -0.662  0.0868 \n", + "sr3p_ASC_no_auto_atwork  1.49  75.9 \n", + "sr3p_ASC_no_auto_eatout  1.62  75.9 \n", + "sr3p_ASC_no_auto_escort -1.87  75.9 \n", + "sr3p_ASC_no_auto_othdiscr  1.43  75.9 \n", + "sr3p_ASC_no_auto_othmaint  0.296  75.9 \n", + "sr3p_ASC_no_auto_school -6.02  105. \n", + "sr3p_ASC_no_auto_shopping  0.881  75.9 \n", + "sr3p_ASC_no_auto_social -1.17  75.9 \n", + "sr3p_ASC_no_auto_univ -6.06  1.79e-05 \n", + "sr3p_ASC_no_auto_work  0.614  75.9 \n", + "taxi_ASC_auto_deficient_atwork -4.59  0.435 \n", + "taxi_ASC_auto_deficient_eatout_othdiscr_social -3.26  0.483 \n", + "taxi_ASC_auto_deficient_escort_othmaint_shopping -0.930  0.118 \n", + "taxi_ASC_auto_deficient_school  0.840  0.935 \n", + "taxi_ASC_auto_deficient_univ  4.25  1.62e-05 \n", + "taxi_ASC_auto_deficient_work -2.04  0.205 \n", + "taxi_ASC_auto_sufficient_atwork -3.34  0.150 \n", + "taxi_ASC_auto_sufficient_eatout_othdiscr_social -3.93  0.246 \n", + "taxi_ASC_auto_sufficient_escort_othmaint_shopping -2.78  0.0965 \n", + "taxi_ASC_auto_sufficient_school -2.26  0.922 \n", + "taxi_ASC_auto_sufficient_univ -0.313  NA \n", + "taxi_ASC_auto_sufficient_work -4.85  0.303 \n", + "taxi_ASC_no_auto_atwork  3.65  75.9 \n", + "taxi_ASC_no_auto_eatout_othdiscr_social -0.571  75.9 \n", + "taxi_ASC_no_auto_escort_othmaint_shopping  1.45  75.9 \n", + "taxi_ASC_no_auto_school_univ -7.00  0.00 \n", + "taxi_ASC_no_auto_work  3.94  75.9 \n", + "tnc_shared_ASC_auto_deficient_atwork -5.17  0.414 \n", + "tnc_shared_ASC_auto_deficient_eatout_othdiscr_s... -4.46  0.900 \n", + "tnc_shared_ASC_auto_deficient_escort_othmaint_s... -1.24  0.109 \n", + "tnc_shared_ASC_auto_deficient_school  0.283  0.933 \n", + "tnc_shared_ASC_auto_deficient_univ  3.25  1.25e-05 \n", + "tnc_shared_ASC_auto_deficient_work -3.40  0.214 \n", + "tnc_shared_ASC_auto_sufficient_atwork -4.08  0.166 \n", + "tnc_shared_ASC_auto_sufficient_eatout_othdiscr_... -4.32  0.199 \n", + "tnc_shared_ASC_auto_sufficient_escort_othmaint_... -3.29  0.0920 \n", + "tnc_shared_ASC_auto_sufficient_school -3.62  0.927 \n", + "tnc_shared_ASC_auto_sufficient_univ -0.907  NA \n", + "tnc_shared_ASC_auto_sufficient_work -6.48  0.411 \n", + "tnc_shared_ASC_no_auto_atwork  3.06  75.9 \n", + "tnc_shared_ASC_no_auto_eatout_othdiscr_social -0.0803  75.9 \n", + "tnc_shared_ASC_no_auto_escort_othmaint_shopping  0.685  75.9 \n", + "tnc_shared_ASC_no_auto_school -7.00  0.00 \n", + "tnc_shared_ASC_no_auto_univ -5.81  NA \n", + "tnc_shared_ASC_no_auto_work  2.23  75.9 \n", + "tnc_single_ASC_auto_deficient_atwork -4.24  0.319 \n", + "tnc_single_ASC_auto_deficient_eatout_othdiscr_s... -3.27  0.436 \n", + "tnc_single_ASC_auto_deficient_escort_othmaint_s... -0.340  0.102 \n", + "tnc_single_ASC_auto_deficient_school -0.0137  0.943 \n", + "tnc_single_ASC_auto_deficient_univ  1.02  NA \n", + "tnc_single_ASC_auto_deficient_work -1.30  0.115 \n", + "tnc_single_ASC_auto_sufficient_atwork -3.14  0.126 \n", + "tnc_single_ASC_auto_sufficient_eatout_othdiscr_... -3.26  0.149 \n", + "tnc_single_ASC_auto_sufficient_escort_othmaint_... -2.20  0.0833 \n", + "tnc_single_ASC_auto_sufficient_school -2.07  0.920 \n", + "tnc_single_ASC_auto_sufficient_univ  0.209  5.09e-06 \n", + "tnc_single_ASC_auto_sufficient_work -4.24  0.182 \n", + "tnc_single_ASC_no_auto_atwork  4.26  75.9 \n", + "tnc_single_ASC_no_auto_eatout_othdiscr_social  0.982  75.9 \n", + "tnc_single_ASC_no_auto_escort_othmaint_shopping  1.60  75.9 \n", + "tnc_single_ASC_no_auto_school -7.00  0.00 \n", + "tnc_single_ASC_no_auto_univ -2.52  NA \n", + "tnc_single_ASC_no_auto_work  5.31  75.9 \n", + "walk_ASC_auto_deficient_atwork  0.227  0.123 \n", + "walk_ASC_auto_deficient_eatout  2.17  0.198 \n", + "walk_ASC_auto_deficient_escort -1.98  0.265 \n", + "walk_ASC_auto_deficient_othdiscr  1.21  0.154 \n", + "walk_ASC_auto_deficient_othmaint  0.145  0.208 \n", + "walk_ASC_auto_deficient_school  2.61  0.931 \n", + "walk_ASC_auto_deficient_shopping  0.909  0.137 \n", + "walk_ASC_auto_deficient_social  2.26  0.299 \n", + "walk_ASC_auto_deficient_univ  4.51  1.92e-06 \n", + "walk_ASC_auto_deficient_work  1.70  0.0955 \n", + "walk_ASC_auto_sufficient_atwork  0.0776  0.0580 \n", + "walk_ASC_auto_sufficient_eatout  0.613  0.106 \n", + "walk_ASC_auto_sufficient_escort -1.74  0.117 \n", + "walk_ASC_auto_sufficient_othdiscr  0.305  0.0829 \n", + "walk_ASC_auto_sufficient_othmaint -0.168  0.0955 \n", + "walk_ASC_auto_sufficient_school  0.374  0.917 \n", + "walk_ASC_auto_sufficient_shopping -0.304  0.0811 \n", + "walk_ASC_auto_sufficient_social  0.592  0.117 \n", + "walk_ASC_auto_sufficient_univ  1.06  NA \n", + "walk_ASC_auto_sufficient_work -0.291  0.0787 \n", + "walk_ASC_no_auto_atwork  6.63  75.9 \n", + "walk_ASC_no_auto_eatout  4.41  75.9 \n", + "walk_ASC_no_auto_escort  2.51  75.9 \n", + "walk_ASC_no_auto_othdiscr  2.89  75.9 \n", + "walk_ASC_no_auto_othmaint  0.930  75.9 \n", + "walk_ASC_no_auto_school  17.8  109. \n", + "walk_ASC_no_auto_shopping  2.17  75.9 \n", + "walk_ASC_no_auto_social  1.74  75.9 \n", + "walk_ASC_no_auto_univ  6.41  NA \n", + "walk_ASC_no_auto_work  5.28  75.9 \n", + "walk_ferry_ASC_eatout_escort_othdiscr_othmaint_... -0.239  16.4 \n", + "walk_ferry_ASC_school_univ  0.858  NA \n", + "walk_ferry_ASC_work  0.189  278. \n", + "walk_light_rail_ASC_eatout_escort_othdiscr_othm... -0.136  16.4 \n", + "walk_light_rail_ASC_school_univ  0.724  NA \n", + "walk_light_rail_ASC_work  0.786  278. \n", + "walk_transit_ASC_auto_deficient_atwork -2.63  16.4 \n", + "walk_transit_ASC_auto_deficient_eatout -0.489  16.4 \n", + "walk_transit_ASC_auto_deficient_escort -4.45  16.4 \n", + "walk_transit_ASC_auto_deficient_othdiscr  0.873  16.4 \n", + "walk_transit_ASC_auto_deficient_othmaint -2.97  16.4 \n", + "walk_transit_ASC_auto_deficient_school  2.97  NA \n", + "walk_transit_ASC_auto_deficient_shopping -1.07  16.4 \n", + "walk_transit_ASC_auto_deficient_social  1.32  16.4 \n", + "walk_transit_ASC_auto_deficient_univ  3.14  0.00 \n", + "walk_transit_ASC_auto_deficient_work  0.159  278. \n", + "walk_transit_ASC_auto_sufficient_atwork -3.66  16.4 \n", + "walk_transit_ASC_auto_sufficient_eatout -1.32  16.4 \n", + "walk_transit_ASC_auto_sufficient_escort -4.82  16.4 \n", + "walk_transit_ASC_auto_sufficient_othdiscr -0.914  16.4 \n", + "walk_transit_ASC_auto_sufficient_othmaint -1.68  16.4 \n", + "walk_transit_ASC_auto_sufficient_school  0.487  NA \n", + "walk_transit_ASC_auto_sufficient_shopping -2.35  16.4 \n", + "walk_transit_ASC_auto_sufficient_social -0.647  16.4 \n", + "walk_transit_ASC_auto_sufficient_univ  0.473  0.00 \n", + "walk_transit_ASC_auto_sufficient_work -1.37  278. \n", + "walk_transit_ASC_no_auto_atwork  3.13  66.9 \n", + "walk_transit_ASC_no_auto_eatout  2.92  66.9 \n", + "walk_transit_ASC_no_auto_escort -2.26  67.0 \n", + "walk_transit_ASC_no_auto_othdiscr  2.80  66.9 \n", + "walk_transit_ASC_no_auto_othmaint  2.59  66.9 \n", + "walk_transit_ASC_no_auto_school  20.4  NA \n", + "walk_transit_ASC_no_auto_shopping  2.33  66.9 \n", + "walk_transit_ASC_no_auto_social  2.06  66.9 \n", + "walk_transit_ASC_no_auto_univ  8.79  0.00 \n", + "walk_transit_ASC_no_auto_work  4.60  285. \n", + "walk_transit_CBD_ASC_atwork  1.30  0.284 \n", + "walk_transit_CBD_ASC_eatout_escort_othdiscr_oth...  1.08  0.0757 \n", + "walk_transit_CBD_ASC_school_univ  0.834  0.114 \n", + "walk_transit_CBD_ASC_work  1.16  0.0539 \n", + "coefficient_name\\ncoef_test coef_test_eatout... \n", + "coefficient_name\\ncoef_test coef_test_eatout... \n", + "coefficient_name\\ncoef_test coef_test_eatout... \n", + "coefficient_name\\ncoef_test coef_test_eatout... \n", + "coefficient_name\\ncoef_test coef_test_eatout... \n", + "coefficient_name\\ncoef_test coef_test_eatout... \n", + "coefficient_name\\ncoef_test coef_test_eatout... \n", + "coefficient_name\\ncoef_test coef_test_school... \n", + "coefficient_name\\ncoef_test coef_test_school... \n", + "\n", + " \\\n", + " t Stat Signif Null Value \n", + "Parameter \n", + "-999  NA 0.0 \n", + "1  NA 0.0 \n", + "bike_ASC_auto_deficient_atwork -3.07 ** 0.0 \n", + "bike_ASC_auto_deficient_eatout -3.69 *** 0.0 \n", + "bike_ASC_auto_deficient_escort -9.79 *** 0.0 \n", + "bike_ASC_auto_deficient_othdiscr -4.47 *** 0.0 \n", + "bike_ASC_auto_deficient_othmaint -6.37 *** 0.0 \n", + "bike_ASC_auto_deficient_school -1.24 0.0 \n", + "bike_ASC_auto_deficient_shopping -7.99 *** 0.0 \n", + "bike_ASC_auto_deficient_social  1.11 0.0 \n", + "bike_ASC_auto_deficient_univ  NA 0.0 \n", + "bike_ASC_auto_deficient_work -3.01 ** 0.0 \n", + "bike_ASC_auto_sufficient_atwork  0.03 0.0 \n", + "bike_ASC_auto_sufficient_eatout -11.60 *** 0.0 \n", + "bike_ASC_auto_sufficient_escort -16.76 *** 0.0 \n", + "bike_ASC_auto_sufficient_othdiscr -17.64 *** 0.0 \n", + "bike_ASC_auto_sufficient_othmaint -16.40 *** 0.0 \n", + "bike_ASC_auto_sufficient_school -2.40 * 0.0 \n", + "bike_ASC_auto_sufficient_shopping -22.70 *** 0.0 \n", + "bike_ASC_auto_sufficient_social -10.36 *** 0.0 \n", + "bike_ASC_auto_sufficient_univ -295.46 *** 0.0 \n", + "bike_ASC_auto_sufficient_work -23.72 *** 0.0 \n", + "bike_ASC_no_auto_atwork -0.01 0.0 \n", + "bike_ASC_no_auto_eatout  0.01 0.0 \n", + "bike_ASC_no_auto_escort -0.01 0.0 \n", + "bike_ASC_no_auto_othdiscr -0.01 0.0 \n", + "bike_ASC_no_auto_othmaint  0.02 0.0 \n", + "bike_ASC_no_auto_school  0.12 0.0 \n", + "bike_ASC_no_auto_shopping  0.01 0.0 \n", + "bike_ASC_no_auto_social  0.00 0.0 \n", + "bike_ASC_no_auto_univ  BIG *** 0.0 \n", + "bike_ASC_no_auto_work  0.05 0.0 \n", + "coef_age010_trn_multiplier_atwork  0.09 0.0 \n", + "coef_age010_trn_multiplier_eatout_escort_othdis...  2.79 ** 0.0 \n", + "coef_age010_trn_multiplier_school_univ -9.46 *** 0.0 \n", + "coef_age1619_da_multiplier_atwork -0.85 0.0 \n", + "coef_age1619_da_multiplier_eatout_escort_othdis...  0.84 0.0 \n", + "coef_age1619_da_multiplier_school_univ -22.31 *** 0.0 \n", + "coef_age16p_sr_multiplier_eatout_escort_othdisc... -18.71 *** 0.0 \n", + "coef_age16p_sr_multiplier_school_univ_work_atwork -10.08 *** 0.0 \n", + "coef_hhsize1_sr_multiplier_eatout_escort_othdis... -2.31 * 0.0 \n", + "coef_hhsize1_sr_multiplier_work -14.39 *** 0.0 \n", + "coef_hhsize2_sr_multiplier_eatout_escort_othdis... -0.23 0.0 \n", + "coef_hhsize2_sr_multiplier_school_univ -8.15 *** 0.0 \n", + "coef_ivt_atwork -23.41 *** 0.0 \n", + "coef_ivt_eatout_escort_othdiscr_othmaint_shoppi... -47.76 *** 0.0 \n", + "coef_ivt_school_univ -32.62 *** 0.0 \n", + "coef_ivt_work -53.62 *** 0.0 \n", + "coef_nest_AUTO  NA 1.0 \n", + "coef_nest_AUTO_DRIVEALONE  NA 1.0 \n", + "coef_nest_AUTO_SHAREDRIDE2  NA 1.0 \n", + "coef_nest_AUTO_SHAREDRIDE3  NA 1.0 \n", + "coef_nest_NONMOTORIZED  NA 1.0 \n", + "coef_nest_RIDEHAIL  NA 1.0 \n", + "coef_nest_TRANSIT  NA 1.0 \n", + "coef_nest_TRANSIT_DRIVEACCESS  NA 1.0 \n", + "coef_nest_TRANSIT_WALKACCESS  NA 1.0 \n", + "coef_test_eatout_escort_othdiscr_othmaint_shopp...  1.56 0.0 \n", + "coef_test_school_univ  0.57 0.0 \n", + "commuter_rail_ASC_eatout_escort_othdiscr_othmai... -0.06 0.0 \n", + "commuter_rail_ASC_school_univ  NA 0.0 \n", + "commuter_rail_ASC_work  0.00 0.0 \n", + "drive_ferry_ASC_eatout_escort_othdiscr_othmaint... -0.04 0.0 \n", + "drive_ferry_ASC_school_univ  NA 0.0 \n", + "drive_ferry_ASC_work  0.00 0.0 \n", + "drive_light_rail_ASC_eatout_escort_othdiscr_oth... -0.02 0.0 \n", + "drive_light_rail_ASC_school_univ  NA 0.0 \n", + "drive_light_rail_ASC_work  0.00 0.0 \n", + "drive_transit_ASC_auto_deficient_atwork -BIG *** 0.0 \n", + "drive_transit_ASC_auto_deficient_eatout -0.01 0.0 \n", + "drive_transit_ASC_auto_deficient_escort -0.13 0.0 \n", + "drive_transit_ASC_auto_deficient_othdiscr -0.05 0.0 \n", + "drive_transit_ASC_auto_deficient_othmaint -0.08 0.0 \n", + "drive_transit_ASC_auto_deficient_school  NA 0.0 \n", + "drive_transit_ASC_auto_deficient_shopping -0.10 0.0 \n", + "drive_transit_ASC_auto_deficient_social  0.04 0.0 \n", + "drive_transit_ASC_auto_deficient_univ  NA 0.0 \n", + "drive_transit_ASC_auto_deficient_work -0.00 0.0 \n", + "drive_transit_ASC_auto_sufficient_atwork -BIG *** 0.0 \n", + "drive_transit_ASC_auto_sufficient_eatout -0.10 0.0 \n", + "drive_transit_ASC_auto_sufficient_escort -0.32 0.0 \n", + "drive_transit_ASC_auto_sufficient_othdiscr -0.08 0.0 \n", + "drive_transit_ASC_auto_sufficient_othmaint -0.17 0.0 \n", + "drive_transit_ASC_auto_sufficient_school  NA 0.0 \n", + "drive_transit_ASC_auto_sufficient_shopping -0.25 0.0 \n", + "drive_transit_ASC_auto_sufficient_social -0.08 0.0 \n", + "drive_transit_ASC_auto_sufficient_univ  NA 0.0 \n", + "drive_transit_ASC_auto_sufficient_work -0.01 0.0 \n", + "drive_transit_ASC_no_auto_all  NA 0.0 \n", + "drive_transit_CBD_ASC_atwork  NA 0.0 \n", + "drive_transit_CBD_ASC_eatout_escort_othdiscr_ot...  9.63 *** 0.0 \n", + "drive_transit_CBD_ASC_school_univ  4.89 *** 0.0 \n", + "drive_transit_CBD_ASC_work  23.45 *** 0.0 \n", + "express_bus_ASC_eatout_escort_othdiscr_othmaint... -0.02 0.0 \n", + "express_bus_ASC_school_univ  NA 0.0 \n", + "express_bus_ASC_work -0.00 0.0 \n", + "heavy_rail_ASC_eatout_escort_othdiscr_othmaint_... -0.01 0.0 \n", + "heavy_rail_ASC_school_univ  NA 0.0 \n", + "heavy_rail_ASC_work  0.00 0.0 \n", + "joint_bike_ASC_auto_deficient_all -4.62 *** 0.0 \n", + "joint_bike_ASC_auto_sufficient_all -15.28 *** 0.0 \n", + "joint_bike_ASC_no_auto_all -2.48 * 0.0 \n", + "joint_drive_transit_ASC_auto_deficient_all -0.37 0.0 \n", + "joint_drive_transit_ASC_auto_sufficient_all -0.48 0.0 \n", + "joint_drive_transit_ASC_no_auto_all  NA 0.0 \n", + "joint_sr2_ASC_auto_deficient_all  NA 0.0 \n", + "joint_sr2_ASC_auto_sufficient_all  NA 0.0 \n", + "joint_sr2_ASC_no_auto_all  NA 0.0 \n", + "joint_sr3p_ASC_auto_deficient_all -5.77 *** 0.0 \n", + "joint_sr3p_ASC_auto_sufficient_all -17.17 *** 0.0 \n", + "joint_sr3p_ASC_no_auto_all  1.49 0.0 \n", + "joint_taxi_ASC_auto_deficient_all -1.21 0.0 \n", + "joint_taxi_ASC_auto_sufficient_all  NA 0.0 \n", + "joint_taxi_ASC_no_auto_all -1.07 0.0 \n", + "joint_tnc_shared_ASC_auto_deficient_all -0.66 0.0 \n", + "joint_tnc_shared_ASC_auto_sufficient_all  NA 0.0 \n", + "joint_tnc_shared_ASC_no_auto_all -2.17 * 0.0 \n", + "joint_tnc_single_ASC_auto_deficient_all -1.38 0.0 \n", + "joint_tnc_single_ASC_auto_sufficient_all  NA 0.0 \n", + "joint_tnc_single_ASC_no_auto_all -1.88 0.0 \n", + "joint_walk_ASC_auto_deficient_all -5.89 *** 0.0 \n", + "joint_walk_ASC_auto_sufficient_all -17.76 *** 0.0 \n", + "joint_walk_ASC_no_auto_all -0.51 0.0 \n", + "joint_walk_transit_ASC_auto_deficient_all -0.32 0.0 \n", + "joint_walk_transit_ASC_auto_sufficient_all -0.03 0.0 \n", + "joint_walk_transit_ASC_no_auto_all  0.02 0.0 \n", + "local_bus_ASC_eatout_escort_othdiscr_othmaint_s... -0.07 0.0 \n", + "local_bus_ASC_school_univ  NA 0.0 \n", + "local_bus_ASC_work -0.00 0.0 \n", + "sr2_ASC_auto_deficient_atwork -11.34 *** 0.0 \n", + "sr2_ASC_auto_deficient_eatout  5.64 *** 0.0 \n", + "sr2_ASC_auto_deficient_escort  1.58 0.0 \n", + "sr2_ASC_auto_deficient_othdiscr  8.13 *** 0.0 \n", + "sr2_ASC_auto_deficient_othmaint  4.02 *** 0.0 \n", + "sr2_ASC_auto_deficient_school  0.56 0.0 \n", + "sr2_ASC_auto_deficient_shopping  4.09 *** 0.0 \n", + "sr2_ASC_auto_deficient_social  10.70 *** 0.0 \n", + "sr2_ASC_auto_deficient_univ  NA 0.0 \n", + "sr2_ASC_auto_deficient_work  4.76 *** 0.0 \n", + "sr2_ASC_auto_sufficient_atwork -9.85 *** 0.0 \n", + "sr2_ASC_auto_sufficient_eatout  11.19 *** 0.0 \n", + "sr2_ASC_auto_sufficient_escort  3.31 *** 0.0 \n", + "sr2_ASC_auto_sufficient_othdiscr  8.23 *** 0.0 \n", + "sr2_ASC_auto_sufficient_othmaint  6.24 *** 0.0 \n", + "sr2_ASC_auto_sufficient_school -0.79 0.0 \n", + "sr2_ASC_auto_sufficient_shopping  5.16 *** 0.0 \n", + "sr2_ASC_auto_sufficient_social  7.88 *** 0.0 \n", + "sr2_ASC_auto_sufficient_univ  NA 0.0 \n", + "sr2_ASC_auto_sufficient_work -3.43 *** 0.0 \n", + "sr2_ASC_no_auto_all  0.02 0.0 \n", + "sr3p_ASC_auto_deficient_atwork -13.30 *** 0.0 \n", + "sr3p_ASC_auto_deficient_eatout  0.98 0.0 \n", + "sr3p_ASC_auto_deficient_escort  0.18 0.0 \n", + "sr3p_ASC_auto_deficient_othdiscr  11.40 *** 0.0 \n", + "sr3p_ASC_auto_deficient_othmaint -2.71 ** 0.0 \n", + "sr3p_ASC_auto_deficient_school  1.18 0.0 \n", + "sr3p_ASC_auto_deficient_shopping  1.31 0.0 \n", + "sr3p_ASC_auto_deficient_social  9.16 *** 0.0 \n", + "sr3p_ASC_auto_deficient_univ -BIG *** 0.0 \n", + "sr3p_ASC_auto_deficient_work -1.38 0.0 \n", + "sr3p_ASC_auto_sufficient_atwork -11.97 *** 0.0 \n", + "sr3p_ASC_auto_sufficient_eatout  10.73 *** 0.0 \n", + "sr3p_ASC_auto_sufficient_escort  3.10 ** 0.0 \n", + "sr3p_ASC_auto_sufficient_othdiscr  9.25 *** 0.0 \n", + "sr3p_ASC_auto_sufficient_othmaint  2.44 * 0.0 \n", + "sr3p_ASC_auto_sufficient_school -0.16 0.0 \n", + "sr3p_ASC_auto_sufficient_shopping  2.72 ** 0.0 \n", + "sr3p_ASC_auto_sufficient_social  7.91 *** 0.0 \n", + "sr3p_ASC_auto_sufficient_univ -BIG *** 0.0 \n", + "sr3p_ASC_auto_sufficient_work -7.63 *** 0.0 \n", + "sr3p_ASC_no_auto_atwork  0.02 0.0 \n", + "sr3p_ASC_no_auto_eatout  0.02 0.0 \n", + "sr3p_ASC_no_auto_escort -0.02 0.0 \n", + "sr3p_ASC_no_auto_othdiscr  0.02 0.0 \n", + "sr3p_ASC_no_auto_othmaint  0.00 0.0 \n", + "sr3p_ASC_no_auto_school -0.06 0.0 \n", + "sr3p_ASC_no_auto_shopping  0.01 0.0 \n", + "sr3p_ASC_no_auto_social -0.02 0.0 \n", + "sr3p_ASC_no_auto_univ -BIG *** 0.0 \n", + "sr3p_ASC_no_auto_work  0.01 0.0 \n", + "taxi_ASC_auto_deficient_atwork -10.57 *** 0.0 \n", + "taxi_ASC_auto_deficient_eatout_othdiscr_social -6.76 *** 0.0 \n", + "taxi_ASC_auto_deficient_escort_othmaint_shopping -7.89 *** 0.0 \n", + "taxi_ASC_auto_deficient_school  0.90 0.0 \n", + "taxi_ASC_auto_deficient_univ  BIG *** 0.0 \n", + "taxi_ASC_auto_deficient_work -9.95 *** 0.0 \n", + "taxi_ASC_auto_sufficient_atwork -22.22 *** 0.0 \n", + "taxi_ASC_auto_sufficient_eatout_othdiscr_social -15.96 *** 0.0 \n", + "taxi_ASC_auto_sufficient_escort_othmaint_shopping -28.85 *** 0.0 \n", + "taxi_ASC_auto_sufficient_school -2.45 * 0.0 \n", + "taxi_ASC_auto_sufficient_univ  NA 0.0 \n", + "taxi_ASC_auto_sufficient_work -16.01 *** 0.0 \n", + "taxi_ASC_no_auto_atwork  0.05 0.0 \n", + "taxi_ASC_no_auto_eatout_othdiscr_social -0.01 0.0 \n", + "taxi_ASC_no_auto_escort_othmaint_shopping  0.02 0.0 \n", + "taxi_ASC_no_auto_school_univ  NA 0.0 \n", + "taxi_ASC_no_auto_work  0.05 0.0 \n", + "tnc_shared_ASC_auto_deficient_atwork -12.49 *** 0.0 \n", + "tnc_shared_ASC_auto_deficient_eatout_othdiscr_s... -4.95 *** 0.0 \n", + "tnc_shared_ASC_auto_deficient_escort_othmaint_s... -11.36 *** 0.0 \n", + "tnc_shared_ASC_auto_deficient_school  0.30 0.0 \n", + "tnc_shared_ASC_auto_deficient_univ  BIG *** 0.0 \n", + "tnc_shared_ASC_auto_deficient_work -15.89 *** 0.0 \n", + "tnc_shared_ASC_auto_sufficient_atwork -24.64 *** 0.0 \n", + "tnc_shared_ASC_auto_sufficient_eatout_othdiscr_... -21.67 *** 0.0 \n", + "tnc_shared_ASC_auto_sufficient_escort_othmaint_... -35.76 *** 0.0 \n", + "tnc_shared_ASC_auto_sufficient_school -3.91 *** 0.0 \n", + "tnc_shared_ASC_auto_sufficient_univ  NA 0.0 \n", + "tnc_shared_ASC_auto_sufficient_work -15.77 *** 0.0 \n", + "tnc_shared_ASC_no_auto_atwork  0.04 0.0 \n", + "tnc_shared_ASC_no_auto_eatout_othdiscr_social -0.00 0.0 \n", + "tnc_shared_ASC_no_auto_escort_othmaint_shopping  0.01 0.0 \n", + "tnc_shared_ASC_no_auto_school  NA 0.0 \n", + "tnc_shared_ASC_no_auto_univ  NA 0.0 \n", + "tnc_shared_ASC_no_auto_work  0.03 0.0 \n", + "tnc_single_ASC_auto_deficient_atwork -13.29 *** 0.0 \n", + "tnc_single_ASC_auto_deficient_eatout_othdiscr_s... -7.50 *** 0.0 \n", + "tnc_single_ASC_auto_deficient_escort_othmaint_s... -3.34 *** 0.0 \n", + "tnc_single_ASC_auto_deficient_school -0.01 0.0 \n", + "tnc_single_ASC_auto_deficient_univ  NA 0.0 \n", + "tnc_single_ASC_auto_deficient_work -11.28 *** 0.0 \n", + "tnc_single_ASC_auto_sufficient_atwork -25.00 *** 0.0 \n", + "tnc_single_ASC_auto_sufficient_eatout_othdiscr_... -21.84 *** 0.0 \n", + "tnc_single_ASC_auto_sufficient_escort_othmaint_... -26.43 *** 0.0 \n", + "tnc_single_ASC_auto_sufficient_school -2.25 * 0.0 \n", + "tnc_single_ASC_auto_sufficient_univ  BIG *** 0.0 \n", + "tnc_single_ASC_auto_sufficient_work -23.29 *** 0.0 \n", + "tnc_single_ASC_no_auto_atwork  0.06 0.0 \n", + "tnc_single_ASC_no_auto_eatout_othdiscr_social  0.01 0.0 \n", + "tnc_single_ASC_no_auto_escort_othmaint_shopping  0.02 0.0 \n", + "tnc_single_ASC_no_auto_school  NA 0.0 \n", + "tnc_single_ASC_no_auto_univ  NA 0.0 \n", + "tnc_single_ASC_no_auto_work  0.07 0.0 \n", + "walk_ASC_auto_deficient_atwork  1.84 0.0 \n", + "walk_ASC_auto_deficient_eatout  10.96 *** 0.0 \n", + "walk_ASC_auto_deficient_escort -7.46 *** 0.0 \n", + "walk_ASC_auto_deficient_othdiscr  7.86 *** 0.0 \n", + "walk_ASC_auto_deficient_othmaint  0.70 0.0 \n", + "walk_ASC_auto_deficient_school  2.81 ** 0.0 \n", + "walk_ASC_auto_deficient_shopping  6.63 *** 0.0 \n", + "walk_ASC_auto_deficient_social  7.56 *** 0.0 \n", + "walk_ASC_auto_deficient_univ  BIG *** 0.0 \n", + "walk_ASC_auto_deficient_work  17.84 *** 0.0 \n", + "walk_ASC_auto_sufficient_atwork  1.34 0.0 \n", + "walk_ASC_auto_sufficient_eatout  5.78 *** 0.0 \n", + "walk_ASC_auto_sufficient_escort -14.88 *** 0.0 \n", + "walk_ASC_auto_sufficient_othdiscr  3.68 *** 0.0 \n", + "walk_ASC_auto_sufficient_othmaint -1.76 0.0 \n", + "walk_ASC_auto_sufficient_school  0.41 0.0 \n", + "walk_ASC_auto_sufficient_shopping -3.75 *** 0.0 \n", + "walk_ASC_auto_sufficient_social  5.04 *** 0.0 \n", + "walk_ASC_auto_sufficient_univ  NA 0.0 \n", + "walk_ASC_auto_sufficient_work -3.70 *** 0.0 \n", + "walk_ASC_no_auto_atwork  0.09 0.0 \n", + "walk_ASC_no_auto_eatout  0.06 0.0 \n", + "walk_ASC_no_auto_escort  0.03 0.0 \n", + "walk_ASC_no_auto_othdiscr  0.04 0.0 \n", + "walk_ASC_no_auto_othmaint  0.01 0.0 \n", + "walk_ASC_no_auto_school  0.16 0.0 \n", + "walk_ASC_no_auto_shopping  0.03 0.0 \n", + "walk_ASC_no_auto_social  0.02 0.0 \n", + "walk_ASC_no_auto_univ  NA 0.0 \n", + "walk_ASC_no_auto_work  0.07 0.0 \n", + "walk_ferry_ASC_eatout_escort_othdiscr_othmaint_... -0.01 0.0 \n", + "walk_ferry_ASC_school_univ  NA 0.0 \n", + "walk_ferry_ASC_work  0.00 0.0 \n", + "walk_light_rail_ASC_eatout_escort_othdiscr_othm... -0.01 0.0 \n", + "walk_light_rail_ASC_school_univ  NA 0.0 \n", + "walk_light_rail_ASC_work  0.00 0.0 \n", + "walk_transit_ASC_auto_deficient_atwork -0.16 0.0 \n", + "walk_transit_ASC_auto_deficient_eatout -0.03 0.0 \n", + "walk_transit_ASC_auto_deficient_escort -0.27 0.0 \n", + "walk_transit_ASC_auto_deficient_othdiscr  0.05 0.0 \n", + "walk_transit_ASC_auto_deficient_othmaint -0.18 0.0 \n", + "walk_transit_ASC_auto_deficient_school  NA 0.0 \n", + "walk_transit_ASC_auto_deficient_shopping -0.07 0.0 \n", + "walk_transit_ASC_auto_deficient_social  0.08 0.0 \n", + "walk_transit_ASC_auto_deficient_univ  NA 0.0 \n", + "walk_transit_ASC_auto_deficient_work  0.00 0.0 \n", + "walk_transit_ASC_auto_sufficient_atwork -0.22 0.0 \n", + "walk_transit_ASC_auto_sufficient_eatout -0.08 0.0 \n", + "walk_transit_ASC_auto_sufficient_escort -0.29 0.0 \n", + "walk_transit_ASC_auto_sufficient_othdiscr -0.06 0.0 \n", + "walk_transit_ASC_auto_sufficient_othmaint -0.10 0.0 \n", + "walk_transit_ASC_auto_sufficient_school  NA 0.0 \n", + "walk_transit_ASC_auto_sufficient_shopping -0.14 0.0 \n", + "walk_transit_ASC_auto_sufficient_social -0.04 0.0 \n", + "walk_transit_ASC_auto_sufficient_univ  NA 0.0 \n", + "walk_transit_ASC_auto_sufficient_work -0.00 0.0 \n", + "walk_transit_ASC_no_auto_atwork  0.05 0.0 \n", + "walk_transit_ASC_no_auto_eatout  0.04 0.0 \n", + "walk_transit_ASC_no_auto_escort -0.03 0.0 \n", + "walk_transit_ASC_no_auto_othdiscr  0.04 0.0 \n", + "walk_transit_ASC_no_auto_othmaint  0.04 0.0 \n", + "walk_transit_ASC_no_auto_school  NA 0.0 \n", + "walk_transit_ASC_no_auto_shopping  0.03 0.0 \n", + "walk_transit_ASC_no_auto_social  0.03 0.0 \n", + "walk_transit_ASC_no_auto_univ  NA 0.0 \n", + "walk_transit_ASC_no_auto_work  0.02 0.0 \n", + "walk_transit_CBD_ASC_atwork  4.57 *** 0.0 \n", + "walk_transit_CBD_ASC_eatout_escort_othdiscr_oth...  14.25 *** 0.0 \n", + "walk_transit_CBD_ASC_school_univ  7.30 *** 0.0 \n", + "walk_transit_CBD_ASC_work  21.50 *** 0.0 \n", + "coefficient_name\\ncoef_test coef_test_eatout... \n", + "coefficient_name\\ncoef_test coef_test_eatout... \n", + "coefficient_name\\ncoef_test coef_test_eatout... \n", + "coefficient_name\\ncoef_test coef_test_eatout... \n", + "coefficient_name\\ncoef_test coef_test_eatout... \n", + "coefficient_name\\ncoef_test coef_test_eatout... \n", + "coefficient_name\\ncoef_test coef_test_eatout... \n", + "coefficient_name\\ncoef_test coef_test_school... \n", + "coefficient_name\\ncoef_test coef_test_school... \n", + "\n", + " remodel \\\n", + " Value Std Err \n", + "Parameter \n", + "-999 -999.  0.00 \n", + "1  1.00  0.00 \n", + "bike_ASC_auto_deficient_atwork -1.06  0.340 \n", + "bike_ASC_auto_deficient_eatout -1.20  0.594 \n", + "bike_ASC_auto_deficient_escort -3.88  0.559 \n", + "bike_ASC_auto_deficient_othdiscr -0.528  0.418 \n", + "bike_ASC_auto_deficient_othmaint -1.63  0.448 \n", + "bike_ASC_auto_deficient_school -1.18  0.997 \n", + "bike_ASC_auto_deficient_shopping -1.30  0.363 \n", + "bike_ASC_auto_deficient_social  0.592  0.532 \n", + "bike_ASC_auto_deficient_univ -0.669  0.00146 \n", + "bike_ASC_auto_deficient_work -0.360  0.0922 \n", + "bike_ASC_auto_sufficient_atwork  15.7  463. \n", + "bike_ASC_auto_sufficient_eatout -1.30  0.409 \n", + "bike_ASC_auto_sufficient_escort -5.26  0.453 \n", + "bike_ASC_auto_sufficient_othdiscr -1.49  0.382 \n", + "bike_ASC_auto_sufficient_othmaint -2.51  0.349 \n", + "bike_ASC_auto_sufficient_school -2.20  0.953 \n", + "bike_ASC_auto_sufficient_shopping -2.78  0.326 \n", + "bike_ASC_auto_sufficient_social -1.83  0.471 \n", + "bike_ASC_auto_sufficient_univ -1.94  0.00650 \n", + "bike_ASC_auto_sufficient_work -2.06  0.0822 \n", + "bike_ASC_no_auto_atwork -0.911  87.8 \n", + "bike_ASC_no_auto_eatout  0.510  87.2 \n", + "bike_ASC_no_auto_escort -0.730  87.2 \n", + "bike_ASC_no_auto_othdiscr -0.404  87.2 \n", + "bike_ASC_no_auto_othmaint  1.61  87.2 \n", + "bike_ASC_no_auto_school  13.4  116. \n", + "bike_ASC_no_auto_shopping  1.05  87.2 \n", + "bike_ASC_no_auto_social  0.486  87.2 \n", + "bike_ASC_no_auto_univ  4.29  0.00688 \n", + "bike_ASC_no_auto_work  3.43  87.2 \n", + "coef_age010_trn_multiplier_atwork  0.000722  NA \n", + "coef_age010_trn_multiplier_eatout_escort_othdis...  0.364  0.175 \n", + "coef_age010_trn_multiplier_school_univ -0.875  0.0898 \n", + "coef_age1619_da_multiplier_atwork -0.193  0.205 \n", + "coef_age1619_da_multiplier_eatout_escort_othdis...  0.000513  0.0424 \n", + "coef_age1619_da_multiplier_school_univ -1.68  0.0748 \n", + "coef_age16p_sr_multiplier_eatout_escort_othdisc... -1.45  0.0814 \n", + "coef_age16p_sr_multiplier_school_univ_work_atwork -0.648  0.0683 \n", + "coef_hhsize1_sr_multiplier_eatout_escort_othdis... -0.0710  0.0312 \n", + "coef_hhsize1_sr_multiplier_work -0.836  0.0577 \n", + "coef_hhsize2_sr_multiplier_eatout_escort_othdis...  0.00209  0.0178 \n", + "coef_hhsize2_sr_multiplier_school_univ -0.748  0.0912 \n", + "coef_ivt_atwork -0.0112  0.000478 \n", + "coef_ivt_eatout_escort_othdiscr_othmaint_shoppi... -0.00688  0.000144 \n", + "coef_ivt_school_univ -0.0104  0.000318 \n", + "coef_ivt_work -0.00795  0.000148 \n", + "coef_nest_AUTO  0.720  0.00 \n", + "coef_nest_AUTO_DRIVEALONE  0.350  0.00 \n", + "coef_nest_AUTO_SHAREDRIDE2  0.350  0.00 \n", + "coef_nest_AUTO_SHAREDRIDE3  0.350  0.00 \n", + "coef_nest_NONMOTORIZED  0.720  0.00 \n", + "coef_nest_RIDEHAIL  0.360  0.00 \n", + "coef_nest_TRANSIT  0.720  0.00 \n", + "coef_nest_TRANSIT_DRIVEACCESS  0.500  0.00 \n", + "coef_nest_TRANSIT_WALKACCESS  0.500  0.00 \n", + "coef_test_eatout_escort_othdiscr_othmaint_shopp...  0.0770  NA \n", + "coef_test_school_univ  0.518  NA \n", + "commuter_rail_ASC_eatout_escort_othdiscr_othmai... -0.744  20.6 \n", + "commuter_rail_ASC_school_univ -0.247  NA \n", + "commuter_rail_ASC_work  0.158  NA \n", + "drive_ferry_ASC_eatout_escort_othdiscr_othmaint... -0.393  20.6 \n", + "drive_ferry_ASC_school_univ  1.45  NA \n", + "drive_ferry_ASC_work  0.194  NA \n", + "drive_light_rail_ASC_eatout_escort_othdiscr_oth... -0.0919  20.6 \n", + "drive_light_rail_ASC_school_univ  0.707  NA \n", + "drive_light_rail_ASC_work  0.507  NA \n", + "drive_transit_ASC_auto_deficient_atwork -999.  0.000231 \n", + "drive_transit_ASC_auto_deficient_eatout  0.105  20.6 \n", + "drive_transit_ASC_auto_deficient_escort -2.14  20.6 \n", + "drive_transit_ASC_auto_deficient_othdiscr -0.726  20.6 \n", + "drive_transit_ASC_auto_deficient_othmaint -1.17  20.6 \n", + "drive_transit_ASC_auto_deficient_school  1.57  NA \n", + "drive_transit_ASC_auto_deficient_shopping -1.43  20.6 \n", + "drive_transit_ASC_auto_deficient_social  0.594  20.6 \n", + "drive_transit_ASC_auto_deficient_univ  1.85  NA \n", + "drive_transit_ASC_auto_deficient_work -0.911  NA \n", + "drive_transit_ASC_auto_sufficient_atwork -999.  NA \n", + "drive_transit_ASC_auto_sufficient_eatout -1.30  20.6 \n", + "drive_transit_ASC_auto_sufficient_escort -5.25  20.6 \n", + "drive_transit_ASC_auto_sufficient_othdiscr -1.11  20.6 \n", + "drive_transit_ASC_auto_sufficient_othmaint -2.44  20.6 \n", + "drive_transit_ASC_auto_sufficient_school  0.155  NA \n", + "drive_transit_ASC_auto_sufficient_shopping -3.97  20.6 \n", + "drive_transit_ASC_auto_sufficient_social -1.34  20.6 \n", + "drive_transit_ASC_auto_sufficient_univ  1.36  0.000291 \n", + "drive_transit_ASC_auto_sufficient_work -1.83  NA \n", + "drive_transit_ASC_no_auto_all  0.00  0.000293 \n", + "drive_transit_CBD_ASC_atwork  0.564  NA \n", + "drive_transit_CBD_ASC_eatout_escort_othdiscr_ot...  1.41  0.142 \n", + "drive_transit_CBD_ASC_school_univ  1.20  0.253 \n", + "drive_transit_CBD_ASC_work  1.62  0.0697 \n", + "express_bus_ASC_eatout_escort_othdiscr_othmaint... -0.0888  20.6 \n", + "express_bus_ASC_school_univ -0.450  NA \n", + "express_bus_ASC_work -0.920  NA \n", + "heavy_rail_ASC_eatout_escort_othdiscr_othmaint_...  0.0401  20.6 \n", + "heavy_rail_ASC_school_univ  0.127  NA \n", + "heavy_rail_ASC_work  0.496  NA \n", + "joint_bike_ASC_auto_deficient_all -6.16  1.42 \n", + "joint_bike_ASC_auto_sufficient_all -6.95  0.465 \n", + "joint_bike_ASC_no_auto_all -2.67  1.14 \n", + "joint_drive_transit_ASC_auto_deficient_all -6.04  20.6 \n", + "joint_drive_transit_ASC_auto_sufficient_all -7.80  20.6 \n", + "joint_drive_transit_ASC_no_auto_all  0.00  0.00 \n", + "joint_sr2_ASC_auto_deficient_all  0.00  0.00 \n", + "joint_sr2_ASC_auto_sufficient_all  0.00  0.00 \n", + "joint_sr2_ASC_no_auto_all  0.00  0.00 \n", + "joint_sr3p_ASC_auto_deficient_all -1.51  0.260 \n", + "joint_sr3p_ASC_auto_sufficient_all -2.27  0.131 \n", + "joint_sr3p_ASC_no_auto_all  0.680  0.471 \n", + "joint_taxi_ASC_auto_deficient_all -9.82  8.64 \n", + "joint_taxi_ASC_auto_sufficient_all -11.7  0.00 \n", + "joint_taxi_ASC_no_auto_all -4.58  4.45 \n", + "joint_tnc_shared_ASC_auto_deficient_all -11.2  18.0 \n", + "joint_tnc_shared_ASC_auto_sufficient_all -13.2  0.00 \n", + "joint_tnc_shared_ASC_no_auto_all -4.70  2.31 \n", + "joint_tnc_single_ASC_auto_deficient_all -9.90  7.63 \n", + "joint_tnc_single_ASC_auto_sufficient_all -14.0  0.00 \n", + "joint_tnc_single_ASC_no_auto_all -3.89  2.20 \n", + "joint_walk_ASC_auto_deficient_all -2.05  0.372 \n", + "joint_walk_ASC_auto_sufficient_all -4.15  0.240 \n", + "joint_walk_ASC_no_auto_all -0.294  0.735 \n", + "joint_walk_transit_ASC_auto_deficient_all -5.30  20.6 \n", + "joint_walk_transit_ASC_auto_sufficient_all -18.3  620. \n", + "joint_walk_transit_ASC_no_auto_all  0.351  20.6 \n", + "local_bus_ASC_eatout_escort_othdiscr_othmaint_s... -0.943  20.6 \n", + "local_bus_ASC_school_univ -0.811  NA \n", + "local_bus_ASC_work -0.211  NA \n", + "sr2_ASC_auto_deficient_atwork -1.57  0.133 \n", + "sr2_ASC_auto_deficient_eatout  1.32  0.407 \n", + "sr2_ASC_auto_deficient_escort  0.560  0.331 \n", + "sr2_ASC_auto_deficient_othdiscr  1.32  0.389 \n", + "sr2_ASC_auto_deficient_othmaint  1.03  0.327 \n", + "sr2_ASC_auto_deficient_school  0.522  0.961 \n", + "sr2_ASC_auto_deficient_shopping  0.801  0.319 \n", + "sr2_ASC_auto_deficient_social  2.42  0.473 \n", + "sr2_ASC_auto_deficient_univ -1.69  0.000112 \n", + "sr2_ASC_auto_deficient_work  0.248  0.0900 \n", + "sr2_ASC_auto_sufficient_atwork -0.810  0.0784 \n", + "sr2_ASC_auto_sufficient_eatout  1.63  0.390 \n", + "sr2_ASC_auto_sufficient_escort  0.754  0.317 \n", + "sr2_ASC_auto_sufficient_othdiscr  1.09  0.380 \n", + "sr2_ASC_auto_sufficient_othmaint  1.09  0.312 \n", + "sr2_ASC_auto_sufficient_school -0.720  0.950 \n", + "sr2_ASC_auto_sufficient_shopping  0.806  0.310 \n", + "sr2_ASC_auto_sufficient_social  1.07  0.438 \n", + "sr2_ASC_auto_sufficient_univ -1.86  6.12e-05 \n", + "sr2_ASC_auto_sufficient_work -0.478  0.0868 \n", + "sr2_ASC_no_auto_all  1.17  87.2 \n", + "sr3p_ASC_auto_deficient_atwork -1.88  0.137 \n", + "sr3p_ASC_auto_deficient_eatout  0.638  0.420 \n", + "sr3p_ASC_auto_deficient_escort  0.336  0.332 \n", + "sr3p_ASC_auto_deficient_othdiscr  1.67  0.387 \n", + "sr3p_ASC_auto_deficient_othmaint -0.202  0.371 \n", + "sr3p_ASC_auto_deficient_school  1.09  0.961 \n", + "sr3p_ASC_auto_deficient_shopping  0.457  0.324 \n", + "sr3p_ASC_auto_deficient_social  2.16  0.476 \n", + "sr3p_ASC_auto_deficient_univ -1.73  NA \n", + "sr3p_ASC_auto_deficient_work -0.289  0.0929 \n", + "sr3p_ASC_auto_sufficient_atwork -1.00  0.0798 \n", + "sr3p_ASC_auto_sufficient_eatout  1.58  0.390 \n", + "sr3p_ASC_auto_sufficient_escort  0.729  0.317 \n", + "sr3p_ASC_auto_sufficient_othdiscr  1.18  0.380 \n", + "sr3p_ASC_auto_sufficient_othmaint  0.726  0.313 \n", + "sr3p_ASC_auto_sufficient_school -0.151  0.950 \n", + "sr3p_ASC_auto_sufficient_shopping  0.561  0.310 \n", + "sr3p_ASC_auto_sufficient_social  1.07  0.438 \n", + "sr3p_ASC_auto_sufficient_univ -1.90  1.95e-05 \n", + "sr3p_ASC_auto_sufficient_work -0.849  0.0876 \n", + "sr3p_ASC_no_auto_atwork  1.67  87.2 \n", + "sr3p_ASC_no_auto_eatout  1.53  87.2 \n", + "sr3p_ASC_no_auto_escort -1.87  87.3 \n", + "sr3p_ASC_no_auto_othdiscr  1.40  87.2 \n", + "sr3p_ASC_no_auto_othmaint  0.195  87.2 \n", + "sr3p_ASC_no_auto_school -6.02  112. \n", + "sr3p_ASC_no_auto_shopping  0.847  87.2 \n", + "sr3p_ASC_no_auto_social -1.21  87.2 \n", + "sr3p_ASC_no_auto_univ -6.06  5.30e-05 \n", + "sr3p_ASC_no_auto_work  0.523  87.2 \n", + "taxi_ASC_auto_deficient_atwork -4.75  0.459 \n", + "taxi_ASC_auto_deficient_eatout_othdiscr_social -3.16  0.647 \n", + "taxi_ASC_auto_deficient_escort_othmaint_shopping -0.503  0.313 \n", + "taxi_ASC_auto_deficient_school  0.899  0.968 \n", + "taxi_ASC_auto_deficient_univ  4.25  4.12e-06 \n", + "taxi_ASC_auto_deficient_work -2.30  0.226 \n", + "taxi_ASC_auto_sufficient_atwork -3.31  0.148 \n", + "taxi_ASC_auto_sufficient_eatout_othdiscr_social -3.47  0.416 \n", + "taxi_ASC_auto_sufficient_escort_othmaint_shopping -2.33  0.306 \n", + "taxi_ASC_auto_sufficient_school -2.23  0.956 \n", + "taxi_ASC_auto_sufficient_univ -0.313  NA \n", + "taxi_ASC_auto_sufficient_work -5.14  0.361 \n", + "taxi_ASC_no_auto_atwork  3.63  87.2 \n", + "taxi_ASC_no_auto_eatout_othdiscr_social -0.460  87.2 \n", + "taxi_ASC_no_auto_escort_othmaint_shopping  1.54  87.2 \n", + "taxi_ASC_no_auto_school_univ -7.00  0.00 \n", + "taxi_ASC_no_auto_work  3.89  87.2 \n", + "tnc_shared_ASC_auto_deficient_atwork -5.21  0.410 \n", + "tnc_shared_ASC_auto_deficient_eatout_othdiscr_s... -4.43  1.17 \n", + "tnc_shared_ASC_auto_deficient_escort_othmaint_s... -0.796  0.310 \n", + "tnc_shared_ASC_auto_deficient_school  0.312  0.966 \n", + "tnc_shared_ASC_auto_deficient_univ  3.25  NA \n", + "tnc_shared_ASC_auto_deficient_work -3.73  0.231 \n", + "tnc_shared_ASC_auto_sufficient_atwork -4.09  0.167 \n", + "tnc_shared_ASC_auto_sufficient_eatout_othdiscr_... -3.88  0.393 \n", + "tnc_shared_ASC_auto_sufficient_escort_othmaint_... -2.83  0.305 \n", + "tnc_shared_ASC_auto_sufficient_school -3.62  0.961 \n", + "tnc_shared_ASC_auto_sufficient_univ -0.907  NA \n", + "tnc_shared_ASC_auto_sufficient_work -6.74  0.419 \n", + "tnc_shared_ASC_no_auto_atwork  3.04  87.2 \n", + "tnc_shared_ASC_no_auto_eatout_othdiscr_social -0.000529  87.2 \n", + "tnc_shared_ASC_no_auto_escort_othmaint_shopping  0.776  87.2 \n", + "tnc_shared_ASC_no_auto_school -7.00  0.00 \n", + "tnc_shared_ASC_no_auto_univ -5.81  NA \n", + "tnc_shared_ASC_no_auto_work  2.21  87.2 \n", + "tnc_single_ASC_auto_deficient_atwork -4.36  0.331 \n", + "tnc_single_ASC_auto_deficient_eatout_othdiscr_s... -3.12  0.599 \n", + "tnc_single_ASC_auto_deficient_escort_othmaint_s...  0.0928  0.308 \n", + "tnc_single_ASC_auto_deficient_school  0.0597  0.975 \n", + "tnc_single_ASC_auto_deficient_univ  1.02  2.45e-06 \n", + "tnc_single_ASC_auto_deficient_work -1.47  0.118 \n", + "tnc_single_ASC_auto_sufficient_atwork -3.14  0.125 \n", + "tnc_single_ASC_auto_sufficient_eatout_othdiscr_... -2.83  0.371 \n", + "tnc_single_ASC_auto_sufficient_escort_othmaint_... -1.76  0.302 \n", + "tnc_single_ASC_auto_sufficient_school -2.02  0.953 \n", + "tnc_single_ASC_auto_sufficient_univ  0.209  2.79e-06 \n", + "tnc_single_ASC_auto_sufficient_work -4.33  0.179 \n", + "tnc_single_ASC_no_auto_atwork  4.24  87.2 \n", + "tnc_single_ASC_no_auto_eatout_othdiscr_social  1.06  87.2 \n", + "tnc_single_ASC_no_auto_escort_othmaint_shopping  1.70  87.2 \n", + "tnc_single_ASC_no_auto_school -7.00  0.00 \n", + "tnc_single_ASC_no_auto_univ -2.52  5.36e-06 \n", + "tnc_single_ASC_no_auto_work  5.31  87.2 \n", + "walk_ASC_auto_deficient_atwork  0.175  0.124 \n", + "walk_ASC_auto_deficient_eatout  2.70  0.425 \n", + "walk_ASC_auto_deficient_escort -1.60  0.396 \n", + "walk_ASC_auto_deficient_othdiscr  1.57  0.398 \n", + "walk_ASC_auto_deficient_othmaint  0.643  0.360 \n", + "walk_ASC_auto_deficient_school  2.65  0.964 \n", + "walk_ASC_auto_deficient_shopping  1.31  0.323 \n", + "walk_ASC_auto_deficient_social  2.48  0.516 \n", + "walk_ASC_auto_deficient_univ  4.51  NA \n", + "walk_ASC_auto_deficient_work  1.59  0.0962 \n", + "walk_ASC_auto_sufficient_atwork  0.0786  0.0579 \n", + "walk_ASC_auto_sufficient_eatout  1.19  0.391 \n", + "walk_ASC_auto_sufficient_escort -1.32  0.313 \n", + "walk_ASC_auto_sufficient_othdiscr  0.661  0.376 \n", + "walk_ASC_auto_sufficient_othmaint  0.439  0.310 \n", + "walk_ASC_auto_sufficient_school  0.383  0.951 \n", + "walk_ASC_auto_sufficient_shopping  0.0818  0.305 \n", + "walk_ASC_auto_sufficient_social  0.911  0.439 \n", + "walk_ASC_auto_sufficient_univ  1.06  1.94e-07 \n", + "walk_ASC_auto_sufficient_work -0.417  0.0795 \n", + "walk_ASC_no_auto_atwork  6.61  87.2 \n", + "walk_ASC_no_auto_eatout  4.52  87.2 \n", + "walk_ASC_no_auto_escort  2.56  87.2 \n", + "walk_ASC_no_auto_othdiscr  2.96  87.2 \n", + "walk_ASC_no_auto_othmaint  1.06  87.2 \n", + "walk_ASC_no_auto_school  17.8  116. \n", + "walk_ASC_no_auto_shopping  2.26  87.2 \n", + "walk_ASC_no_auto_social  1.84  87.2 \n", + "walk_ASC_no_auto_univ  6.41  3.50e-09 \n", + "walk_ASC_no_auto_work  5.28  87.2 \n", + "walk_ferry_ASC_eatout_escort_othdiscr_othmaint_... -0.0347  20.6 \n", + "walk_ferry_ASC_school_univ  0.903  NA \n", + "walk_ferry_ASC_work  0.0751  NA \n", + "walk_light_rail_ASC_eatout_escort_othdiscr_othm...  0.115  20.6 \n", + "walk_light_rail_ASC_school_univ  0.721  NA \n", + "walk_light_rail_ASC_work  0.730  NA \n", + "walk_transit_ASC_auto_deficient_atwork -2.84  20.6 \n", + "walk_transit_ASC_auto_deficient_eatout -0.205  20.6 \n", + "walk_transit_ASC_auto_deficient_escort -4.46  20.6 \n", + "walk_transit_ASC_auto_deficient_othdiscr  0.997  20.6 \n", + "walk_transit_ASC_auto_deficient_othmaint -2.91  20.6 \n", + "walk_transit_ASC_auto_deficient_school  3.00  NA \n", + "walk_transit_ASC_auto_deficient_shopping -0.899  20.6 \n", + "walk_transit_ASC_auto_deficient_social  1.32  20.6 \n", + "walk_transit_ASC_auto_deficient_univ  3.14  0.00 \n", + "walk_transit_ASC_auto_deficient_work  0.0663  NA \n", + "walk_transit_ASC_auto_sufficient_atwork -3.76  20.6 \n", + "walk_transit_ASC_auto_sufficient_eatout -0.985  20.6 \n", + "walk_transit_ASC_auto_sufficient_escort -4.68  20.6 \n", + "walk_transit_ASC_auto_sufficient_othdiscr -0.771  20.6 \n", + "walk_transit_ASC_auto_sufficient_othmaint -1.31  20.6 \n", + "walk_transit_ASC_auto_sufficient_school  0.522  NA \n", + "walk_transit_ASC_auto_sufficient_shopping -2.20  20.6 \n", + "walk_transit_ASC_auto_sufficient_social -0.595  20.6 \n", + "walk_transit_ASC_auto_sufficient_univ  0.473  0.00 \n", + "walk_transit_ASC_auto_sufficient_work -1.47  NA \n", + "walk_transit_ASC_no_auto_atwork  2.98  73.6 \n", + "walk_transit_ASC_no_auto_eatout  2.76  73.6 \n", + "walk_transit_ASC_no_auto_escort -2.26  73.7 \n", + "walk_transit_ASC_no_auto_othdiscr  2.64  73.6 \n", + "walk_transit_ASC_no_auto_othmaint  2.43  73.6 \n", + "walk_transit_ASC_no_auto_school  20.5  NA \n", + "walk_transit_ASC_no_auto_shopping  2.18  73.6 \n", + "walk_transit_ASC_no_auto_social  1.90  73.6 \n", + "walk_transit_ASC_no_auto_univ  8.79  0.00 \n", + "walk_transit_ASC_no_auto_work  4.63  NA \n", + "walk_transit_CBD_ASC_atwork  1.18  0.277 \n", + "walk_transit_CBD_ASC_eatout_escort_othdiscr_oth...  1.09  0.0756 \n", + "walk_transit_CBD_ASC_school_univ  0.826  0.114 \n", + "walk_transit_CBD_ASC_work  1.15  0.0539 \n", + "coefficient_name\\ncoef_test coef_test_eatout...  0.340  0.190 \n", + "coefficient_name\\ncoef_test coef_test_eatout...  0.00  NA \n", + "coefficient_name\\ncoef_test coef_test_eatout...  0.231  0.185 \n", + "coefficient_name\\ncoef_test coef_test_eatout...  0.333  0.150 \n", + "coefficient_name\\ncoef_test coef_test_eatout...  0.245  0.149 \n", + "coefficient_name\\ncoef_test coef_test_eatout...  0.197  0.214 \n", + "coefficient_name\\ncoef_test coef_test_eatout... -0.0306  0.0255 \n", + "coefficient_name\\ncoef_test coef_test_school...  0.278  0.474 \n", + "coefficient_name\\ncoef_test coef_test_school...  0.00  NA \n", "\n", - "[307 rows x 3 columns]" + " \n", + " t Stat Signif Null Value \n", + "Parameter \n", + "-999  NA 0.0 \n", + "1  NA 0.0 \n", + "bike_ASC_auto_deficient_atwork -3.11 ** 0.0 \n", + "bike_ASC_auto_deficient_eatout -2.02 * 0.0 \n", + "bike_ASC_auto_deficient_escort -6.94 *** 0.0 \n", + "bike_ASC_auto_deficient_othdiscr -1.26 0.0 \n", + "bike_ASC_auto_deficient_othmaint -3.64 *** 0.0 \n", + "bike_ASC_auto_deficient_school -1.19 0.0 \n", + "bike_ASC_auto_deficient_shopping -3.59 *** 0.0 \n", + "bike_ASC_auto_deficient_social  1.11 0.0 \n", + "bike_ASC_auto_deficient_univ -458.48 *** 0.0 \n", + "bike_ASC_auto_deficient_work -3.90 *** 0.0 \n", + "bike_ASC_auto_sufficient_atwork  0.03 0.0 \n", + "bike_ASC_auto_sufficient_eatout -3.17 ** 0.0 \n", + "bike_ASC_auto_sufficient_escort -11.62 *** 0.0 \n", + "bike_ASC_auto_sufficient_othdiscr -3.91 *** 0.0 \n", + "bike_ASC_auto_sufficient_othmaint -7.20 *** 0.0 \n", + "bike_ASC_auto_sufficient_school -2.31 * 0.0 \n", + "bike_ASC_auto_sufficient_shopping -8.52 *** 0.0 \n", + "bike_ASC_auto_sufficient_social -3.88 *** 0.0 \n", + "bike_ASC_auto_sufficient_univ -298.24 *** 0.0 \n", + "bike_ASC_auto_sufficient_work -25.06 *** 0.0 \n", + "bike_ASC_no_auto_atwork -0.01 0.0 \n", + "bike_ASC_no_auto_eatout  0.01 0.0 \n", + "bike_ASC_no_auto_escort -0.01 0.0 \n", + "bike_ASC_no_auto_othdiscr -0.00 0.0 \n", + "bike_ASC_no_auto_othmaint  0.02 0.0 \n", + "bike_ASC_no_auto_school  0.12 0.0 \n", + "bike_ASC_no_auto_shopping  0.01 0.0 \n", + "bike_ASC_no_auto_social  0.01 0.0 \n", + "bike_ASC_no_auto_univ  624.05 *** 0.0 \n", + "bike_ASC_no_auto_work  0.04 0.0 \n", + "coef_age010_trn_multiplier_atwork  NA 0.0 \n", + "coef_age010_trn_multiplier_eatout_escort_othdis...  2.08 * 0.0 \n", + "coef_age010_trn_multiplier_school_univ -9.74 *** 0.0 \n", + "coef_age1619_da_multiplier_atwork -0.94 0.0 \n", + "coef_age1619_da_multiplier_eatout_escort_othdis...  0.01 0.0 \n", + "coef_age1619_da_multiplier_school_univ -22.42 *** 0.0 \n", + "coef_age16p_sr_multiplier_eatout_escort_othdisc... -17.82 *** 0.0 \n", + "coef_age16p_sr_multiplier_school_univ_work_atwork -9.49 *** 0.0 \n", + "coef_hhsize1_sr_multiplier_eatout_escort_othdis... -2.27 * 0.0 \n", + "coef_hhsize1_sr_multiplier_work -14.48 *** 0.0 \n", + "coef_hhsize2_sr_multiplier_eatout_escort_othdis...  0.12 0.0 \n", + "coef_hhsize2_sr_multiplier_school_univ -8.20 *** 0.0 \n", + "coef_ivt_atwork -23.41 *** 0.0 \n", + "coef_ivt_eatout_escort_othdiscr_othmaint_shoppi... -47.65 *** 0.0 \n", + "coef_ivt_school_univ -32.71 *** 0.0 \n", + "coef_ivt_work -53.70 *** 0.0 \n", + "coef_nest_AUTO  NA 1.0 \n", + "coef_nest_AUTO_DRIVEALONE  NA 1.0 \n", + "coef_nest_AUTO_SHAREDRIDE2  NA 1.0 \n", + "coef_nest_AUTO_SHAREDRIDE3  NA 1.0 \n", + "coef_nest_NONMOTORIZED  NA 1.0 \n", + "coef_nest_RIDEHAIL  NA 1.0 \n", + "coef_nest_TRANSIT  NA 1.0 \n", + "coef_nest_TRANSIT_DRIVEACCESS  NA 1.0 \n", + "coef_nest_TRANSIT_WALKACCESS  NA 1.0 \n", + "coef_test_eatout_escort_othdiscr_othmaint_shopp...  NA 0.0 \n", + "coef_test_school_univ  NA 0.0 \n", + "commuter_rail_ASC_eatout_escort_othdiscr_othmai... -0.04 0.0 \n", + "commuter_rail_ASC_school_univ  NA 0.0 \n", + "commuter_rail_ASC_work  NA 0.0 \n", + "drive_ferry_ASC_eatout_escort_othdiscr_othmaint... -0.02 0.0 \n", + "drive_ferry_ASC_school_univ  NA 0.0 \n", + "drive_ferry_ASC_work  NA 0.0 \n", + "drive_light_rail_ASC_eatout_escort_othdiscr_oth... -0.00 0.0 \n", + "drive_light_rail_ASC_school_univ  NA 0.0 \n", + "drive_light_rail_ASC_work  NA 0.0 \n", + "drive_transit_ASC_auto_deficient_atwork -BIG *** 0.0 \n", + "drive_transit_ASC_auto_deficient_eatout  0.01 0.0 \n", + "drive_transit_ASC_auto_deficient_escort -0.10 0.0 \n", + "drive_transit_ASC_auto_deficient_othdiscr -0.04 0.0 \n", + "drive_transit_ASC_auto_deficient_othmaint -0.06 0.0 \n", + "drive_transit_ASC_auto_deficient_school  NA 0.0 \n", + "drive_transit_ASC_auto_deficient_shopping -0.07 0.0 \n", + "drive_transit_ASC_auto_deficient_social  0.03 0.0 \n", + "drive_transit_ASC_auto_deficient_univ  NA 0.0 \n", + "drive_transit_ASC_auto_deficient_work  NA 0.0 \n", + "drive_transit_ASC_auto_sufficient_atwork  NA 0.0 \n", + "drive_transit_ASC_auto_sufficient_eatout -0.06 0.0 \n", + "drive_transit_ASC_auto_sufficient_escort -0.26 0.0 \n", + "drive_transit_ASC_auto_sufficient_othdiscr -0.05 0.0 \n", + "drive_transit_ASC_auto_sufficient_othmaint -0.12 0.0 \n", + "drive_transit_ASC_auto_sufficient_school  NA 0.0 \n", + "drive_transit_ASC_auto_sufficient_shopping -0.19 0.0 \n", + "drive_transit_ASC_auto_sufficient_social -0.07 0.0 \n", + "drive_transit_ASC_auto_sufficient_univ  BIG *** 0.0 \n", + "drive_transit_ASC_auto_sufficient_work  NA 0.0 \n", + "drive_transit_ASC_no_auto_all  0.00 0.0 \n", + "drive_transit_CBD_ASC_atwork  NA 0.0 \n", + "drive_transit_CBD_ASC_eatout_escort_othdiscr_ot...  9.95 *** 0.0 \n", + "drive_transit_CBD_ASC_school_univ  4.76 *** 0.0 \n", + "drive_transit_CBD_ASC_work  23.19 *** 0.0 \n", + "express_bus_ASC_eatout_escort_othdiscr_othmaint... -0.00 0.0 \n", + "express_bus_ASC_school_univ  NA 0.0 \n", + "express_bus_ASC_work  NA 0.0 \n", + "heavy_rail_ASC_eatout_escort_othdiscr_othmaint_...  0.00 0.0 \n", + "heavy_rail_ASC_school_univ  NA 0.0 \n", + "heavy_rail_ASC_work  NA 0.0 \n", + "joint_bike_ASC_auto_deficient_all -4.35 *** 0.0 \n", + "joint_bike_ASC_auto_sufficient_all -14.96 *** 0.0 \n", + "joint_bike_ASC_no_auto_all -2.35 * 0.0 \n", + "joint_drive_transit_ASC_auto_deficient_all -0.29 0.0 \n", + "joint_drive_transit_ASC_auto_sufficient_all -0.38 0.0 \n", + "joint_drive_transit_ASC_no_auto_all  NA 0.0 \n", + "joint_sr2_ASC_auto_deficient_all  NA 0.0 \n", + "joint_sr2_ASC_auto_sufficient_all  NA 0.0 \n", + "joint_sr2_ASC_no_auto_all  NA 0.0 \n", + "joint_sr3p_ASC_auto_deficient_all -5.80 *** 0.0 \n", + "joint_sr3p_ASC_auto_sufficient_all -17.25 *** 0.0 \n", + "joint_sr3p_ASC_no_auto_all  1.44 0.0 \n", + "joint_taxi_ASC_auto_deficient_all -1.14 0.0 \n", + "joint_taxi_ASC_auto_sufficient_all  NA 0.0 \n", + "joint_taxi_ASC_no_auto_all -1.03 0.0 \n", + "joint_tnc_shared_ASC_auto_deficient_all -0.62 0.0 \n", + "joint_tnc_shared_ASC_auto_sufficient_all  NA 0.0 \n", + "joint_tnc_shared_ASC_no_auto_all -2.03 * 0.0 \n", + "joint_tnc_single_ASC_auto_deficient_all -1.30 0.0 \n", + "joint_tnc_single_ASC_auto_sufficient_all  NA 0.0 \n", + "joint_tnc_single_ASC_no_auto_all -1.77 0.0 \n", + "joint_walk_ASC_auto_deficient_all -5.51 *** 0.0 \n", + "joint_walk_ASC_auto_sufficient_all -17.32 *** 0.0 \n", + "joint_walk_ASC_no_auto_all -0.40 0.0 \n", + "joint_walk_transit_ASC_auto_deficient_all -0.26 0.0 \n", + "joint_walk_transit_ASC_auto_sufficient_all -0.03 0.0 \n", + "joint_walk_transit_ASC_no_auto_all  0.02 0.0 \n", + "local_bus_ASC_eatout_escort_othdiscr_othmaint_s... -0.05 0.0 \n", + "local_bus_ASC_school_univ  NA 0.0 \n", + "local_bus_ASC_work  NA 0.0 \n", + "sr2_ASC_auto_deficient_atwork -11.82 *** 0.0 \n", + "sr2_ASC_auto_deficient_eatout  3.25 ** 0.0 \n", + "sr2_ASC_auto_deficient_escort  1.69 0.0 \n", + "sr2_ASC_auto_deficient_othdiscr  3.39 *** 0.0 \n", + "sr2_ASC_auto_deficient_othmaint  3.14 ** 0.0 \n", + "sr2_ASC_auto_deficient_school  0.54 0.0 \n", + "sr2_ASC_auto_deficient_shopping  2.51 * 0.0 \n", + "sr2_ASC_auto_deficient_social  5.12 *** 0.0 \n", + "sr2_ASC_auto_deficient_univ -BIG *** 0.0 \n", + "sr2_ASC_auto_deficient_work  2.76 ** 0.0 \n", + "sr2_ASC_auto_sufficient_atwork -10.34 *** 0.0 \n", + "sr2_ASC_auto_sufficient_eatout  4.18 *** 0.0 \n", + "sr2_ASC_auto_sufficient_escort  2.38 * 0.0 \n", + "sr2_ASC_auto_sufficient_othdiscr  2.87 ** 0.0 \n", + "sr2_ASC_auto_sufficient_othmaint  3.51 *** 0.0 \n", + "sr2_ASC_auto_sufficient_school -0.76 0.0 \n", + "sr2_ASC_auto_sufficient_shopping  2.60 ** 0.0 \n", + "sr2_ASC_auto_sufficient_social  2.43 * 0.0 \n", + "sr2_ASC_auto_sufficient_univ -BIG *** 0.0 \n", + "sr2_ASC_auto_sufficient_work -5.50 *** 0.0 \n", + "sr2_ASC_no_auto_all  0.01 0.0 \n", + "sr3p_ASC_auto_deficient_atwork -13.71 *** 0.0 \n", + "sr3p_ASC_auto_deficient_eatout  1.52 0.0 \n", + "sr3p_ASC_auto_deficient_escort  1.01 0.0 \n", + "sr3p_ASC_auto_deficient_othdiscr  4.32 *** 0.0 \n", + "sr3p_ASC_auto_deficient_othmaint -0.55 0.0 \n", + "sr3p_ASC_auto_deficient_school  1.14 0.0 \n", + "sr3p_ASC_auto_deficient_shopping  1.41 0.0 \n", + "sr3p_ASC_auto_deficient_social  4.52 *** 0.0 \n", + "sr3p_ASC_auto_deficient_univ  NA 0.0 \n", + "sr3p_ASC_auto_deficient_work -3.11 ** 0.0 \n", + "sr3p_ASC_auto_sufficient_atwork -12.59 *** 0.0 \n", + "sr3p_ASC_auto_sufficient_eatout  4.04 *** 0.0 \n", + "sr3p_ASC_auto_sufficient_escort  2.30 * 0.0 \n", + "sr3p_ASC_auto_sufficient_othdiscr  3.12 ** 0.0 \n", + "sr3p_ASC_auto_sufficient_othmaint  2.32 * 0.0 \n", + "sr3p_ASC_auto_sufficient_school -0.16 0.0 \n", + "sr3p_ASC_auto_sufficient_shopping  1.81 0.0 \n", + "sr3p_ASC_auto_sufficient_social  2.45 * 0.0 \n", + "sr3p_ASC_auto_sufficient_univ -BIG *** 0.0 \n", + "sr3p_ASC_auto_sufficient_work -9.68 *** 0.0 \n", + "sr3p_ASC_no_auto_atwork  0.02 0.0 \n", + "sr3p_ASC_no_auto_eatout  0.02 0.0 \n", + "sr3p_ASC_no_auto_escort -0.02 0.0 \n", + "sr3p_ASC_no_auto_othdiscr  0.02 0.0 \n", + "sr3p_ASC_no_auto_othmaint  0.00 0.0 \n", + "sr3p_ASC_no_auto_school -0.05 0.0 \n", + "sr3p_ASC_no_auto_shopping  0.01 0.0 \n", + "sr3p_ASC_no_auto_social -0.01 0.0 \n", + "sr3p_ASC_no_auto_univ -BIG *** 0.0 \n", + "sr3p_ASC_no_auto_work  0.01 0.0 \n", + "taxi_ASC_auto_deficient_atwork -10.34 *** 0.0 \n", + "taxi_ASC_auto_deficient_eatout_othdiscr_social -4.89 *** 0.0 \n", + "taxi_ASC_auto_deficient_escort_othmaint_shopping -1.60 0.0 \n", + "taxi_ASC_auto_deficient_school  0.93 0.0 \n", + "taxi_ASC_auto_deficient_univ  BIG *** 0.0 \n", + "taxi_ASC_auto_deficient_work -10.19 *** 0.0 \n", + "taxi_ASC_auto_sufficient_atwork -22.34 *** 0.0 \n", + "taxi_ASC_auto_sufficient_eatout_othdiscr_social -8.35 *** 0.0 \n", + "taxi_ASC_auto_sufficient_escort_othmaint_shopping -7.60 *** 0.0 \n", + "taxi_ASC_auto_sufficient_school -2.33 * 0.0 \n", + "taxi_ASC_auto_sufficient_univ  NA 0.0 \n", + "taxi_ASC_auto_sufficient_work -14.22 *** 0.0 \n", + "taxi_ASC_no_auto_atwork  0.04 0.0 \n", + "taxi_ASC_no_auto_eatout_othdiscr_social -0.01 0.0 \n", + "taxi_ASC_no_auto_escort_othmaint_shopping  0.02 0.0 \n", + "taxi_ASC_no_auto_school_univ  NA 0.0 \n", + "taxi_ASC_no_auto_work  0.04 0.0 \n", + "tnc_shared_ASC_auto_deficient_atwork -12.71 *** 0.0 \n", + "tnc_shared_ASC_auto_deficient_eatout_othdiscr_s... -3.78 *** 0.0 \n", + "tnc_shared_ASC_auto_deficient_escort_othmaint_s... -2.57 * 0.0 \n", + "tnc_shared_ASC_auto_deficient_school  0.32 0.0 \n", + "tnc_shared_ASC_auto_deficient_univ  NA 0.0 \n", + "tnc_shared_ASC_auto_deficient_work -16.16 *** 0.0 \n", + "tnc_shared_ASC_auto_sufficient_atwork -24.51 *** 0.0 \n", + "tnc_shared_ASC_auto_sufficient_eatout_othdiscr_... -9.86 *** 0.0 \n", + "tnc_shared_ASC_auto_sufficient_escort_othmaint_... -9.30 *** 0.0 \n", + "tnc_shared_ASC_auto_sufficient_school -3.77 *** 0.0 \n", + "tnc_shared_ASC_auto_sufficient_univ  NA 0.0 \n", + "tnc_shared_ASC_auto_sufficient_work -16.11 *** 0.0 \n", + "tnc_shared_ASC_no_auto_atwork  0.03 0.0 \n", + "tnc_shared_ASC_no_auto_eatout_othdiscr_social -0.00 0.0 \n", + "tnc_shared_ASC_no_auto_escort_othmaint_shopping  0.01 0.0 \n", + "tnc_shared_ASC_no_auto_school  NA 0.0 \n", + "tnc_shared_ASC_no_auto_univ  NA 0.0 \n", + "tnc_shared_ASC_no_auto_work  0.03 0.0 \n", + "tnc_single_ASC_auto_deficient_atwork -13.19 *** 0.0 \n", + "tnc_single_ASC_auto_deficient_eatout_othdiscr_s... -5.21 *** 0.0 \n", + "tnc_single_ASC_auto_deficient_escort_othmaint_s...  0.30 0.0 \n", + "tnc_single_ASC_auto_deficient_school  0.06 0.0 \n", + "tnc_single_ASC_auto_deficient_univ  BIG *** 0.0 \n", + "tnc_single_ASC_auto_deficient_work -12.49 *** 0.0 \n", + "tnc_single_ASC_auto_sufficient_atwork -25.04 *** 0.0 \n", + "tnc_single_ASC_auto_sufficient_eatout_othdiscr_... -7.62 *** 0.0 \n", + "tnc_single_ASC_auto_sufficient_escort_othmaint_... -5.81 *** 0.0 \n", + "tnc_single_ASC_auto_sufficient_school -2.12 * 0.0 \n", + "tnc_single_ASC_auto_sufficient_univ  BIG *** 0.0 \n", + "tnc_single_ASC_auto_sufficient_work -24.13 *** 0.0 \n", + "tnc_single_ASC_no_auto_atwork  0.05 0.0 \n", + "tnc_single_ASC_no_auto_eatout_othdiscr_social  0.01 0.0 \n", + "tnc_single_ASC_no_auto_escort_othmaint_shopping  0.02 0.0 \n", + "tnc_single_ASC_no_auto_school  NA 0.0 \n", + "tnc_single_ASC_no_auto_univ -BIG *** 0.0 \n", + "tnc_single_ASC_no_auto_work  0.06 0.0 \n", + "walk_ASC_auto_deficient_atwork  1.41 0.0 \n", + "walk_ASC_auto_deficient_eatout  6.37 *** 0.0 \n", + "walk_ASC_auto_deficient_escort -4.04 *** 0.0 \n", + "walk_ASC_auto_deficient_othdiscr  3.94 *** 0.0 \n", + "walk_ASC_auto_deficient_othmaint  1.79 0.0 \n", + "walk_ASC_auto_deficient_school  2.75 ** 0.0 \n", + "walk_ASC_auto_deficient_shopping  4.06 *** 0.0 \n", + "walk_ASC_auto_deficient_social  4.82 *** 0.0 \n", + "walk_ASC_auto_deficient_univ  NA 0.0 \n", + "walk_ASC_auto_deficient_work  16.52 *** 0.0 \n", + "walk_ASC_auto_sufficient_atwork  1.36 0.0 \n", + "walk_ASC_auto_sufficient_eatout  3.04 ** 0.0 \n", + "walk_ASC_auto_sufficient_escort -4.20 *** 0.0 \n", + "walk_ASC_auto_sufficient_othdiscr  1.76 0.0 \n", + "walk_ASC_auto_sufficient_othmaint  1.42 0.0 \n", + "walk_ASC_auto_sufficient_school  0.40 0.0 \n", + "walk_ASC_auto_sufficient_shopping  0.27 0.0 \n", + "walk_ASC_auto_sufficient_social  2.08 * 0.0 \n", + "walk_ASC_auto_sufficient_univ  BIG *** 0.0 \n", + "walk_ASC_auto_sufficient_work -5.25 *** 0.0 \n", + "walk_ASC_no_auto_atwork  0.08 0.0 \n", + "walk_ASC_no_auto_eatout  0.05 0.0 \n", + "walk_ASC_no_auto_escort  0.03 0.0 \n", + "walk_ASC_no_auto_othdiscr  0.03 0.0 \n", + "walk_ASC_no_auto_othmaint  0.01 0.0 \n", + "walk_ASC_no_auto_school  0.15 0.0 \n", + "walk_ASC_no_auto_shopping  0.03 0.0 \n", + "walk_ASC_no_auto_social  0.02 0.0 \n", + "walk_ASC_no_auto_univ  BIG *** 0.0 \n", + "walk_ASC_no_auto_work  0.06 0.0 \n", + "walk_ferry_ASC_eatout_escort_othdiscr_othmaint_... -0.00 0.0 \n", + "walk_ferry_ASC_school_univ  NA 0.0 \n", + "walk_ferry_ASC_work  NA 0.0 \n", + "walk_light_rail_ASC_eatout_escort_othdiscr_othm...  0.01 0.0 \n", + "walk_light_rail_ASC_school_univ  NA 0.0 \n", + "walk_light_rail_ASC_work  NA 0.0 \n", + "walk_transit_ASC_auto_deficient_atwork -0.14 0.0 \n", + "walk_transit_ASC_auto_deficient_eatout -0.01 0.0 \n", + "walk_transit_ASC_auto_deficient_escort -0.22 0.0 \n", + "walk_transit_ASC_auto_deficient_othdiscr  0.05 0.0 \n", + "walk_transit_ASC_auto_deficient_othmaint -0.14 0.0 \n", + "walk_transit_ASC_auto_deficient_school  NA 0.0 \n", + "walk_transit_ASC_auto_deficient_shopping -0.04 0.0 \n", + "walk_transit_ASC_auto_deficient_social  0.06 0.0 \n", + "walk_transit_ASC_auto_deficient_univ  NA 0.0 \n", + "walk_transit_ASC_auto_deficient_work  NA 0.0 \n", + "walk_transit_ASC_auto_sufficient_atwork -0.18 0.0 \n", + "walk_transit_ASC_auto_sufficient_eatout -0.05 0.0 \n", + "walk_transit_ASC_auto_sufficient_escort -0.23 0.0 \n", + "walk_transit_ASC_auto_sufficient_othdiscr -0.04 0.0 \n", + "walk_transit_ASC_auto_sufficient_othmaint -0.06 0.0 \n", + "walk_transit_ASC_auto_sufficient_school  NA 0.0 \n", + "walk_transit_ASC_auto_sufficient_shopping -0.11 0.0 \n", + "walk_transit_ASC_auto_sufficient_social -0.03 0.0 \n", + "walk_transit_ASC_auto_sufficient_univ  NA 0.0 \n", + "walk_transit_ASC_auto_sufficient_work  NA 0.0 \n", + "walk_transit_ASC_no_auto_atwork  0.04 0.0 \n", + "walk_transit_ASC_no_auto_eatout  0.04 0.0 \n", + "walk_transit_ASC_no_auto_escort -0.03 0.0 \n", + "walk_transit_ASC_no_auto_othdiscr  0.04 0.0 \n", + "walk_transit_ASC_no_auto_othmaint  0.03 0.0 \n", + "walk_transit_ASC_no_auto_school  NA 0.0 \n", + "walk_transit_ASC_no_auto_shopping  0.03 0.0 \n", + "walk_transit_ASC_no_auto_social  0.03 0.0 \n", + "walk_transit_ASC_no_auto_univ  NA 0.0 \n", + "walk_transit_ASC_no_auto_work  NA 0.0 \n", + "walk_transit_CBD_ASC_atwork  4.28 *** 0.0 \n", + "walk_transit_CBD_ASC_eatout_escort_othdiscr_oth...  14.41 *** 0.0 \n", + "walk_transit_CBD_ASC_school_univ  7.24 *** 0.0 \n", + "walk_transit_CBD_ASC_work  21.27 *** 0.0 \n", + "coefficient_name\\ncoef_test coef_test_eatout...  1.78 0.0 \n", + "coefficient_name\\ncoef_test coef_test_eatout...  NA 0.0 \n", + "coefficient_name\\ncoef_test coef_test_eatout...  1.24 0.0 \n", + "coefficient_name\\ncoef_test coef_test_eatout...  2.22 * 0.0 \n", + "coefficient_name\\ncoef_test coef_test_eatout...  1.64 0.0 \n", + "coefficient_name\\ncoef_test coef_test_eatout...  0.92 0.0 \n", + "coefficient_name\\ncoef_test coef_test_eatout... -1.20 0.0 \n", + "coefficient_name\\ncoef_test coef_test_school...  0.59 0.0 \n", + "coefficient_name\\ncoef_test coef_test_school...  NA 0.0 " ] }, - "execution_count": 15, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ - "pd.read_csv(result_dir/f\"{modelname}_coefficients_revised.csv\")" + "with pd.option_context('display.max_rows', 999):\n", + " display(pd.concat({\n", + " \"model\": model.parameter_summary().data,\n", + " \"remodel\": remodel.parameter_summary().data,\n", + " }, axis=1).fillna(\"\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "execution": { + "iopub.execute_input": "2025-06-26T02:27:37.943631Z", + "iopub.status.busy": "2025-06-26T02:27:37.943503Z", + "iopub.status.idle": "2025-06-26T02:27:38.022217Z", + "shell.execute_reply": "2025-06-26T02:27:38.021934Z", + "shell.execute_reply.started": "2025-06-26T02:27:37.943621Z" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
modelremodel
Number of CasesAggregate69971.00000069971.000000
Log Likelihood at ConvergenceAggregate-76508.289239-76502.093437
Per Case-1.093429-1.093340
Log Likelihood at Null ParametersAggregate-142469.530288-142469.530288
Per Case-2.036123-2.036123
Rho Squared w.r.t. Null ParametersAggregate0.4629850.463028
\n", + "
" + ], + "text/plain": [ + " model remodel\n", + "Number of Cases Aggregate 69971.000000 69971.000000\n", + "Log Likelihood at Convergence Aggregate -76508.289239 -76502.093437\n", + " Per Case -1.093429 -1.093340\n", + "Log Likelihood at Null Parameters Aggregate -142469.530288 -142469.530288\n", + " Per Case -2.036123 -2.036123\n", + "Rho Squared w.r.t. Null Parameters Aggregate 0.462985 0.463028" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "with pd.option_context('display.max_rows', 999):\n", + " display(pd.concat({\n", + " \"model\": model.estimation_statistics_raw(),\n", + " \"remodel\": remodel.estimation_statistics_raw(),\n", + " }, axis=1).fillna(\"\"))" ] } ], @@ -4539,7 +13023,7 @@ "toc_visible": true }, "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "ESTER", "language": "python", "name": "python3" }, @@ -4553,7 +13037,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.6" + "version": "3.10.15" }, "toc": { "base_numbering": 1, diff --git a/activitysim/examples/example_estimation/notebooks/18_atwork_subtour_freq.ipynb b/activitysim/examples/example_estimation/notebooks/18_atwork_subtour_freq.ipynb index 4bd5cd1f3..9d92886e0 100644 --- a/activitysim/examples/example_estimation/notebooks/18_atwork_subtour_freq.ipynb +++ b/activitysim/examples/example_estimation/notebooks/18_atwork_subtour_freq.ipynb @@ -34,27 +34,74 @@ "id": "s53VwlPwtNnr", "outputId": "d1208b7a-c1f2-4b0b-c439-bf312fe12be0" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "JAX not found. Some functionality will be unavailable.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'larch': '6.0.32',\n", + " 'sharrow': '2.13.0',\n", + " 'numpy': '1.26.4',\n", + " 'pandas': '1.5.3',\n", + " 'xarray': '2024.3.0',\n", + " 'numba': '0.60.0'}" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "import os\n", - "import larch # !conda install larch -c conda-forge # for estimation\n", - "import pandas as pd" + "import larch as lx\n", + "import pandas as pd\n", + "\n", + "lx.versions()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We'll work in our `test` directory, where ActivitySim has saved the estimation data bundles." + "For this demo, we will assume that you have already run ActivitySim in estimation\n", + "mode, and saved the required estimation data bundles (EDB's) to disk. See\n", + "the [first notebook](./01_estimation_mode.ipynb) for details. The following module\n", + "will run a script to set everything up if the example data is not already available." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "EDB directory already populated.\n" + ] + }, + { + "data": { + "text/plain": [ + "PosixPath('test-estimation-data/activitysim-prototype-mtc-extended')" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "os.chdir('test')" + "from est_mode_setup import prepare\n", + "\n", + "prepare()" ] }, { @@ -68,12 +115,27 @@ "cell_type": "code", "execution_count": 3, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "loading from output-est-mode/estimation_data_bundle/atwork_subtour_frequency/atwork_subtour_frequency_coefficients.csv\n", + "loading spec from output-est-mode/estimation_data_bundle/atwork_subtour_frequency/atwork_subtour_frequency_SPEC.csv\n", + "loading from output-est-mode/estimation_data_bundle/atwork_subtour_frequency/atwork_subtour_frequency_values_combined.parquet\n" + ] + } + ], "source": [ "modelname = \"atwork_subtour_frequency\"\n", "\n", "from activitysim.estimation.larch import component_model\n", - "model, data = component_model(modelname, return_data=True)" + "\n", + "model, data = component_model(\n", + " modelname,\n", + " edb_directory=f\"output-est-mode/estimation_data_bundle/{modelname}/\",\n", + " return_data=True,\n", + ")" ] }, { @@ -752,11 +814,11 @@ " util_individual_discretionary_tours_made_by_full_time_worker\n", " util_individual_discretionary_tours_made_by_part_time_worker\n", " ...\n", - " TERMINAL\n", - " household_density\n", - " employment_density\n", - " density_index\n", - " is_cbd\n", + " trPkTotal\n", + " trOpRetail\n", + " trOpTotal\n", + " nmRetail\n", + " nmTotal\n", " num_maint_shop_escort\n", " num_joint_discr\n", " num_joint_maint_shop_eat\n", @@ -790,31 +852,31 @@ " \n", " \n", " \n", - " 2998943\n", - " maint\n", - " maint\n", + " 2966594\n", + " no_subtours\n", + " eat\n", " 1.0\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", - " 1.0\n", + " 0.0\n", " 0.0\n", " 0.0\n", " ...\n", - " 2.48345\n", - " 26.073171\n", - " 8.048780\n", - " 6.150212\n", - " False\n", + " 9.119016\n", + " 6.446184\n", + " 9.035333\n", + " 5.256966\n", + " 6.831275\n", " 0\n", " 0\n", " 0\n", " False\n", - " 3\n", + " 1\n", " \n", " \n", - " 3060361\n", + " 3046667\n", " eat\n", " eat\n", " 1.0\n", @@ -826,45 +888,45 @@ " 0.0\n", " 0.0\n", " ...\n", - " 2.09035\n", - " 20.666667\n", - " 4.107527\n", - " 3.426505\n", - " False\n", + " 7.771767\n", + " 5.298242\n", + " 7.602426\n", + " 6.443514\n", + " 7.965548\n", " 0\n", " 0\n", " 0\n", - " True\n", + " False\n", " 1\n", " \n", " \n", - " 4422914\n", - " eat\n", + " 3048143\n", + " no_subtours\n", " eat\n", " 1.0\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", - " 1.0\n", + " 0.0\n", " 0.0\n", " 0.0\n", " ...\n", - " 5.35435\n", - " 139.333333\n", - " 418.518519\n", - " 104.532377\n", - " False\n", + " 7.771767\n", + " 5.298242\n", + " 7.602426\n", + " 6.443514\n", + " 7.965548\n", " 0\n", " 0\n", " 0\n", - " False\n", + " True\n", " 1\n", " \n", " \n", - " 4440298\n", - " maint\n", - " maint\n", + " 3177498\n", + " no_subtours\n", + " eat\n", " 1.0\n", " 0.0\n", " 0.0\n", @@ -874,39 +936,39 @@ " 0.0\n", " 0.0\n", " ...\n", - " 5.22542\n", - " 97.634722\n", - " 550.205552\n", - " 82.920387\n", - " False\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", " 0\n", " 0\n", " 0\n", - " False\n", - " 3\n", + " True\n", + " 1\n", " \n", " \n", - " 4496796\n", - " maint\n", + " 3191848\n", + " eat\n", " maint\n", " 1.0\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", - " 1.0\n", + " 0.0\n", " 0.0\n", " 0.0\n", " ...\n", - " 4.73802\n", - " 117.769796\n", - " 246.205869\n", - " 79.663609\n", - " False\n", + " 3.278544\n", + " 1.239060\n", + " 3.280429\n", + " 4.284159\n", + " 6.249753\n", " 0\n", " 0\n", " 0\n", - " False\n", + " True\n", " 3\n", " \n", " \n", @@ -934,258 +996,258 @@ " ...\n", " \n", " \n", - " 302923742\n", - " maint\n", - " maint\n", + " 308156039\n", + " no_subtours\n", + " eat\n", " 1.0\n", " 0.0\n", " 0.0\n", " 0.0\n", - " 1.0\n", + " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", " ...\n", - " 2.37546\n", - " 19.153846\n", - " 5.907692\n", - " 4.515087\n", - " False\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 3.086628\n", + " 5.647842\n", " 0\n", " 0\n", " 0\n", - " True\n", - " 3\n", + " False\n", + " 1\n", " \n", " \n", - " 302942602\n", - " eat\n", - " eat\n", + " 308227666\n", + " no_subtours\n", + " maint\n", + " 0.0\n", " 1.0\n", " 0.0\n", " 0.0\n", " 0.0\n", - " 1.0\n", " 0.0\n", " 0.0\n", " 0.0\n", " ...\n", - " 2.81406\n", - " 16.068376\n", - " 21.136752\n", - " 9.128669\n", - " False\n", + " 7.890189\n", + " 4.493279\n", + " 7.643024\n", + " 5.529241\n", + " 8.876000\n", " 0\n", " 0\n", " 0\n", " True\n", - " 1\n", + " 3\n", " \n", " \n", - " 302942643\n", - " maint\n", - " maint\n", + " 308260138\n", + " no_subtours\n", + " eat\n", " 1.0\n", " 0.0\n", " 0.0\n", " 0.0\n", - " 1.0\n", + " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", " ...\n", - " 2.81406\n", - " 16.068376\n", - " 21.136752\n", - " 9.128669\n", - " False\n", + " 7.614481\n", + " 3.838266\n", + " 7.011926\n", + " 5.169891\n", + " 8.595128\n", " 0\n", " 0\n", " 0\n", " False\n", - " 3\n", + " 1\n", " \n", " \n", - " 305120481\n", - " maint\n", - " maint\n", + " 309080753\n", + " no_subtours\n", + " eat\n", " 1.0\n", " 0.0\n", " 0.0\n", " 0.0\n", - " 1.0\n", " 0.0\n", + " 1.0\n", " 0.0\n", " 0.0\n", " ...\n", - " 8.54946\n", - " 55.606634\n", - " 142.984438\n", - " 40.036459\n", - " False\n", + " 9.892019\n", + " 6.979741\n", + " 9.773601\n", + " 6.557982\n", + " 8.518901\n", " 0\n", " 0\n", " 0\n", " False\n", - " 3\n", + " 1\n", " \n", " \n", - " 308000690\n", - " maint\n", + " 309112036\n", " maint\n", - " 0.0\n", + " eat\n", " 1.0\n", " 0.0\n", " 0.0\n", " 0.0\n", - " 1.0\n", + " 0.0\n", + " 0.0\n", " 0.0\n", " 0.0\n", " ...\n", - " 4.64648\n", - " 196.395950\n", - " 178.779465\n", - " 93.587057\n", - " False\n", + " 0.222696\n", + " 0.016077\n", + " 0.153189\n", + " 0.000000\n", + " 0.000000\n", " 0\n", " 0\n", " 0\n", - " False\n", - " 3\n", + " True\n", + " 1\n", " \n", " \n", "\n", - "

460 rows × 182 columns

\n", + "

5947 rows × 182 columns

\n", "
" ], "text/plain": [ " model_choice override_choice util_dummy_for_full_time_worker \\\n", "tour_id \n", - "2998943 maint maint 1.0 \n", - "3060361 eat eat 1.0 \n", - "4422914 eat eat 1.0 \n", - "4440298 maint maint 1.0 \n", - "4496796 maint maint 1.0 \n", + "2966594 no_subtours eat 1.0 \n", + "3046667 eat eat 1.0 \n", + "3048143 no_subtours eat 1.0 \n", + "3177498 no_subtours eat 1.0 \n", + "3191848 eat maint 1.0 \n", "... ... ... ... \n", - "302923742 maint maint 1.0 \n", - "302942602 eat eat 1.0 \n", - "302942643 maint maint 1.0 \n", - "305120481 maint maint 1.0 \n", - "308000690 maint maint 0.0 \n", + "308156039 no_subtours eat 1.0 \n", + "308227666 no_subtours maint 0.0 \n", + "308260138 no_subtours eat 1.0 \n", + "309080753 no_subtours eat 1.0 \n", + "309112036 maint eat 1.0 \n", "\n", " util_dummy_for_non_full_time_worker util_dummy_for_non_workers \\\n", "tour_id \n", - "2998943 0.0 0.0 \n", - "3060361 0.0 0.0 \n", - "4422914 0.0 0.0 \n", - "4440298 0.0 0.0 \n", - "4496796 0.0 0.0 \n", + "2966594 0.0 0.0 \n", + "3046667 0.0 0.0 \n", + "3048143 0.0 0.0 \n", + "3177498 0.0 0.0 \n", + "3191848 0.0 0.0 \n", "... ... ... \n", - "302923742 0.0 0.0 \n", - "302942602 0.0 0.0 \n", - "302942643 0.0 0.0 \n", - "305120481 0.0 0.0 \n", - "308000690 1.0 0.0 \n", + "308156039 0.0 0.0 \n", + "308227666 1.0 0.0 \n", + "308260138 0.0 0.0 \n", + "309080753 0.0 0.0 \n", + "309112036 0.0 0.0 \n", "\n", " util_medium_hh_income_dummy util_high_hh_income_dummy \\\n", "tour_id \n", - "2998943 0.0 0.0 \n", - "3060361 0.0 0.0 \n", - "4422914 0.0 0.0 \n", - "4440298 0.0 0.0 \n", - "4496796 0.0 0.0 \n", + "2966594 0.0 0.0 \n", + "3046667 0.0 0.0 \n", + "3048143 0.0 0.0 \n", + "3177498 0.0 0.0 \n", + "3191848 0.0 0.0 \n", "... ... ... \n", - "302923742 0.0 1.0 \n", - "302942602 0.0 1.0 \n", - "302942643 0.0 1.0 \n", - "305120481 0.0 1.0 \n", - "308000690 0.0 0.0 \n", + "308156039 0.0 0.0 \n", + "308227666 0.0 0.0 \n", + "308260138 0.0 0.0 \n", + "309080753 0.0 0.0 \n", + "309112036 0.0 0.0 \n", "\n", " util_zero_cars_owned_by_hh_dummy \\\n", "tour_id \n", - "2998943 1.0 \n", - "3060361 0.0 \n", - "4422914 1.0 \n", - "4440298 0.0 \n", - "4496796 1.0 \n", + "2966594 0.0 \n", + "3046667 0.0 \n", + "3048143 0.0 \n", + "3177498 0.0 \n", + "3191848 0.0 \n", "... ... \n", - "302923742 0.0 \n", - "302942602 0.0 \n", - "302942643 0.0 \n", - "305120481 0.0 \n", - "308000690 1.0 \n", + "308156039 0.0 \n", + "308227666 0.0 \n", + "308260138 0.0 \n", + "309080753 1.0 \n", + "309112036 0.0 \n", "\n", " util_individual_discretionary_tours_made_by_full_time_worker \\\n", "tour_id \n", - "2998943 0.0 \n", - "3060361 0.0 \n", - "4422914 0.0 \n", - "4440298 0.0 \n", - "4496796 0.0 \n", + "2966594 0.0 \n", + "3046667 0.0 \n", + "3048143 0.0 \n", + "3177498 0.0 \n", + "3191848 0.0 \n", "... ... \n", - "302923742 0.0 \n", - "302942602 0.0 \n", - "302942643 0.0 \n", - "305120481 0.0 \n", - "308000690 0.0 \n", + "308156039 0.0 \n", + "308227666 0.0 \n", + "308260138 0.0 \n", + "309080753 0.0 \n", + "309112036 0.0 \n", "\n", " util_individual_discretionary_tours_made_by_part_time_worker ... \\\n", "tour_id ... \n", - "2998943 0.0 ... \n", - "3060361 0.0 ... \n", - "4422914 0.0 ... \n", - "4440298 0.0 ... \n", - "4496796 0.0 ... \n", + "2966594 0.0 ... \n", + "3046667 0.0 ... \n", + "3048143 0.0 ... \n", + "3177498 0.0 ... \n", + "3191848 0.0 ... \n", "... ... ... \n", - "302923742 0.0 ... \n", - "302942602 0.0 ... \n", - "302942643 0.0 ... \n", - "305120481 0.0 ... \n", - "308000690 0.0 ... \n", + "308156039 0.0 ... \n", + "308227666 0.0 ... \n", + "308260138 0.0 ... \n", + "309080753 0.0 ... \n", + "309112036 0.0 ... \n", "\n", - " TERMINAL household_density employment_density density_index \\\n", - "tour_id \n", - "2998943 2.48345 26.073171 8.048780 6.150212 \n", - "3060361 2.09035 20.666667 4.107527 3.426505 \n", - "4422914 5.35435 139.333333 418.518519 104.532377 \n", - "4440298 5.22542 97.634722 550.205552 82.920387 \n", - "4496796 4.73802 117.769796 246.205869 79.663609 \n", - "... ... ... ... ... \n", - "302923742 2.37546 19.153846 5.907692 4.515087 \n", - "302942602 2.81406 16.068376 21.136752 9.128669 \n", - "302942643 2.81406 16.068376 21.136752 9.128669 \n", - "305120481 8.54946 55.606634 142.984438 40.036459 \n", - "308000690 4.64648 196.395950 178.779465 93.587057 \n", + " trPkTotal trOpRetail trOpTotal nmRetail nmTotal \\\n", + "tour_id \n", + "2966594 9.119016 6.446184 9.035333 5.256966 6.831275 \n", + "3046667 7.771767 5.298242 7.602426 6.443514 7.965548 \n", + "3048143 7.771767 5.298242 7.602426 6.443514 7.965548 \n", + "3177498 0.000000 0.000000 0.000000 0.000000 0.000000 \n", + "3191848 3.278544 1.239060 3.280429 4.284159 6.249753 \n", + "... ... ... ... ... ... \n", + "308156039 0.000000 0.000000 0.000000 3.086628 5.647842 \n", + "308227666 7.890189 4.493279 7.643024 5.529241 8.876000 \n", + "308260138 7.614481 3.838266 7.011926 5.169891 8.595128 \n", + "309080753 9.892019 6.979741 9.773601 6.557982 8.518901 \n", + "309112036 0.222696 0.016077 0.153189 0.000000 0.000000 \n", "\n", - " is_cbd num_maint_shop_escort num_joint_discr \\\n", - "tour_id \n", - "2998943 False 0 0 \n", - "3060361 False 0 0 \n", - "4422914 False 0 0 \n", - "4440298 False 0 0 \n", - "4496796 False 0 0 \n", - "... ... ... ... \n", - "302923742 False 0 0 \n", - "302942602 False 0 0 \n", - "302942643 False 0 0 \n", - "305120481 False 0 0 \n", - "308000690 False 0 0 \n", + " num_maint_shop_escort num_joint_discr num_joint_maint_shop_eat \\\n", + "tour_id \n", + "2966594 0 0 0 \n", + "3046667 0 0 0 \n", + "3048143 0 0 0 \n", + "3177498 0 0 0 \n", + "3191848 0 0 0 \n", + "... ... ... ... \n", + "308156039 0 0 0 \n", + "308227666 0 0 0 \n", + "308260138 0 0 0 \n", + "309080753 0 0 0 \n", + "309112036 0 0 0 \n", "\n", - " num_joint_maint_shop_eat work_tour_is_SOV override_choice_code \n", - "tour_id \n", - "2998943 0 False 3 \n", - "3060361 0 True 1 \n", - "4422914 0 False 1 \n", - "4440298 0 False 3 \n", - "4496796 0 False 3 \n", - "... ... ... ... \n", - "302923742 0 True 3 \n", - "302942602 0 True 1 \n", - "302942643 0 False 3 \n", - "305120481 0 False 3 \n", - "308000690 0 False 3 \n", + " work_tour_is_SOV override_choice_code \n", + "tour_id \n", + "2966594 False 1 \n", + "3046667 False 1 \n", + "3048143 True 1 \n", + "3177498 True 1 \n", + "3191848 True 3 \n", + "... ... ... \n", + "308156039 False 1 \n", + "308227666 True 3 \n", + "308260138 False 1 \n", + "309080753 False 1 \n", + "309112036 True 1 \n", "\n", - "[460 rows x 182 columns]" + "[5947 rows x 182 columns]" ] }, "execution_count": 6, @@ -1211,17 +1273,10 @@ "execution_count": 7, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "req_data does not request avail_ca or avail_co but it is set and being provided\n" - ] - }, { "data": { "text/html": [ - "

Iteration 075 [Optimization terminated successfully]

" + "

Iteration 100 [Optimization terminated successfully]

" ], "text/plain": [ "" @@ -1233,7 +1288,7 @@ { "data": { "text/html": [ - "

Best LL = -311.0816324383027

" + "

Best LL = -4832.223778692503

" ], "text/plain": [ "" @@ -1264,70 +1319,74 @@ " \n", " \n", " value\n", + " best\n", " initvalue\n", - " nullvalue\n", " minimum\n", " maximum\n", + " nullvalue\n", " holdfast\n", - " note\n", - " best\n", + " \n", + " \n", + " param_name\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " coefficient_at_work_sub_tour_asc_business1\n", - " 1.421407\n", + " -0.350395\n", + " -0.350395\n", " -0.5372\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 1.421407\n", " \n", " \n", " coefficient_at_work_sub_tour_asc_business2\n", - " -0.130778\n", + " -2.211281\n", + " -2.211281\n", " -2.1337\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.130778\n", " \n", " \n", " coefficient_at_work_sub_tour_asc_eat\n", - " 5.809056\n", + " 0.440311\n", + " 0.440311\n", " 0.8576\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 5.809056\n", " \n", " \n", " coefficient_at_work_sub_tour_asc_eat_business\n", - " -23.415363\n", + " -0.860366\n", + " -0.860366\n", " -0.9721\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -23.415363\n", " \n", " \n", " coefficient_at_work_sub_tour_asc_maint\n", - " 12.910479\n", + " -0.423469\n", + " -0.423469\n", " -0.6198\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 12.910479\n", " \n", " \n", " ...\n", @@ -1338,122 +1397,120 @@ " ...\n", " ...\n", " ...\n", - " ...\n", " \n", " \n", " coefficient_zero_cars_owned_by_hh_dummy_business1\n", - " -0.526876\n", + " -0.633755\n", + " -0.633755\n", " -0.3391\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.526876\n", " \n", " \n", " coefficient_zero_cars_owned_by_hh_dummy_business2\n", " 0.000000\n", + " 0.000000\n", " 0.0000\n", " 0.0\n", - " NaN\n", - " NaN\n", + " 0.0\n", + " 0.0\n", " 1\n", - " \n", - " 0.000000\n", " \n", " \n", " coefficient_zero_cars_owned_by_hh_dummy_eat\n", " 0.000000\n", + " 0.000000\n", " 0.0000\n", " 0.0\n", - " NaN\n", - " NaN\n", + " 0.0\n", + " 0.0\n", " 1\n", - " \n", - " 0.000000\n", " \n", " \n", " coefficient_zero_cars_owned_by_hh_dummy_eat_business\n", - " -19.116288\n", + " -0.847707\n", + " -0.847707\n", " -0.3391\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -19.116288\n", " \n", " \n", " coefficient_zero_cars_owned_by_hh_dummy_maint\n", - " 0.559350\n", + " -0.020836\n", + " -0.020836\n", " 0.1762\n", + " -50.0\n", + " 50.0\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.559350\n", " \n", " \n", "\n", - "

110 rows × 8 columns

\n", + "

110 rows × 7 columns

\n", "" ], "text/plain": [ - " value initvalue \\\n", - "coefficient_at_work_sub_tour_asc_business1 1.421407 -0.5372 \n", - "coefficient_at_work_sub_tour_asc_business2 -0.130778 -2.1337 \n", - "coefficient_at_work_sub_tour_asc_eat 5.809056 0.8576 \n", - "coefficient_at_work_sub_tour_asc_eat_business -23.415363 -0.9721 \n", - "coefficient_at_work_sub_tour_asc_maint 12.910479 -0.6198 \n", - "... ... ... \n", - "coefficient_zero_cars_owned_by_hh_dummy_business1 -0.526876 -0.3391 \n", - "coefficient_zero_cars_owned_by_hh_dummy_business2 0.000000 0.0000 \n", - "coefficient_zero_cars_owned_by_hh_dummy_eat 0.000000 0.0000 \n", - "coefficient_zero_cars_owned_by_hh_dummy_eat_bus... -19.116288 -0.3391 \n", - "coefficient_zero_cars_owned_by_hh_dummy_maint 0.559350 0.1762 \n", + " value best \\\n", + "param_name \n", + "coefficient_at_work_sub_tour_asc_business1 -0.350395 -0.350395 \n", + "coefficient_at_work_sub_tour_asc_business2 -2.211281 -2.211281 \n", + "coefficient_at_work_sub_tour_asc_eat 0.440311 0.440311 \n", + "coefficient_at_work_sub_tour_asc_eat_business -0.860366 -0.860366 \n", + "coefficient_at_work_sub_tour_asc_maint -0.423469 -0.423469 \n", + "... ... ... \n", + "coefficient_zero_cars_owned_by_hh_dummy_business1 -0.633755 -0.633755 \n", + "coefficient_zero_cars_owned_by_hh_dummy_business2 0.000000 0.000000 \n", + "coefficient_zero_cars_owned_by_hh_dummy_eat 0.000000 0.000000 \n", + "coefficient_zero_cars_owned_by_hh_dummy_eat_bus... -0.847707 -0.847707 \n", + "coefficient_zero_cars_owned_by_hh_dummy_maint -0.020836 -0.020836 \n", "\n", - " nullvalue minimum \\\n", - "coefficient_at_work_sub_tour_asc_business1 0.0 NaN \n", - "coefficient_at_work_sub_tour_asc_business2 0.0 NaN \n", - "coefficient_at_work_sub_tour_asc_eat 0.0 NaN \n", - "coefficient_at_work_sub_tour_asc_eat_business 0.0 NaN \n", - "coefficient_at_work_sub_tour_asc_maint 0.0 NaN \n", + " initvalue minimum \\\n", + "param_name \n", + "coefficient_at_work_sub_tour_asc_business1 -0.5372 -50.0 \n", + "coefficient_at_work_sub_tour_asc_business2 -2.1337 -50.0 \n", + "coefficient_at_work_sub_tour_asc_eat 0.8576 -50.0 \n", + "coefficient_at_work_sub_tour_asc_eat_business -0.9721 -50.0 \n", + "coefficient_at_work_sub_tour_asc_maint -0.6198 -50.0 \n", "... ... ... \n", - "coefficient_zero_cars_owned_by_hh_dummy_business1 0.0 NaN \n", - "coefficient_zero_cars_owned_by_hh_dummy_business2 0.0 NaN \n", - "coefficient_zero_cars_owned_by_hh_dummy_eat 0.0 NaN \n", - "coefficient_zero_cars_owned_by_hh_dummy_eat_bus... 0.0 NaN \n", - "coefficient_zero_cars_owned_by_hh_dummy_maint 0.0 NaN \n", + "coefficient_zero_cars_owned_by_hh_dummy_business1 -0.3391 -50.0 \n", + "coefficient_zero_cars_owned_by_hh_dummy_business2 0.0000 0.0 \n", + "coefficient_zero_cars_owned_by_hh_dummy_eat 0.0000 0.0 \n", + "coefficient_zero_cars_owned_by_hh_dummy_eat_bus... -0.3391 -50.0 \n", + "coefficient_zero_cars_owned_by_hh_dummy_maint 0.1762 -50.0 \n", "\n", - " maximum holdfast note \\\n", - "coefficient_at_work_sub_tour_asc_business1 NaN 0 \n", - "coefficient_at_work_sub_tour_asc_business2 NaN 0 \n", - "coefficient_at_work_sub_tour_asc_eat NaN 0 \n", - "coefficient_at_work_sub_tour_asc_eat_business NaN 0 \n", - "coefficient_at_work_sub_tour_asc_maint NaN 0 \n", - "... ... ... ... \n", - "coefficient_zero_cars_owned_by_hh_dummy_business1 NaN 0 \n", - "coefficient_zero_cars_owned_by_hh_dummy_business2 NaN 1 \n", - "coefficient_zero_cars_owned_by_hh_dummy_eat NaN 1 \n", - "coefficient_zero_cars_owned_by_hh_dummy_eat_bus... NaN 0 \n", - "coefficient_zero_cars_owned_by_hh_dummy_maint NaN 0 \n", + " maximum nullvalue \\\n", + "param_name \n", + "coefficient_at_work_sub_tour_asc_business1 50.0 0.0 \n", + "coefficient_at_work_sub_tour_asc_business2 50.0 0.0 \n", + "coefficient_at_work_sub_tour_asc_eat 50.0 0.0 \n", + "coefficient_at_work_sub_tour_asc_eat_business 50.0 0.0 \n", + "coefficient_at_work_sub_tour_asc_maint 50.0 0.0 \n", + "... ... ... \n", + "coefficient_zero_cars_owned_by_hh_dummy_business1 50.0 0.0 \n", + "coefficient_zero_cars_owned_by_hh_dummy_business2 0.0 0.0 \n", + "coefficient_zero_cars_owned_by_hh_dummy_eat 0.0 0.0 \n", + "coefficient_zero_cars_owned_by_hh_dummy_eat_bus... 50.0 0.0 \n", + "coefficient_zero_cars_owned_by_hh_dummy_maint 50.0 0.0 \n", "\n", - " best \n", - "coefficient_at_work_sub_tour_asc_business1 1.421407 \n", - "coefficient_at_work_sub_tour_asc_business2 -0.130778 \n", - "coefficient_at_work_sub_tour_asc_eat 5.809056 \n", - "coefficient_at_work_sub_tour_asc_eat_business -23.415363 \n", - "coefficient_at_work_sub_tour_asc_maint 12.910479 \n", - "... ... \n", - "coefficient_zero_cars_owned_by_hh_dummy_business1 -0.526876 \n", - "coefficient_zero_cars_owned_by_hh_dummy_business2 0.000000 \n", - "coefficient_zero_cars_owned_by_hh_dummy_eat 0.000000 \n", - "coefficient_zero_cars_owned_by_hh_dummy_eat_bus... -19.116288 \n", - "coefficient_zero_cars_owned_by_hh_dummy_maint 0.559350 \n", + " holdfast \n", + "param_name \n", + "coefficient_at_work_sub_tour_asc_business1 0 \n", + "coefficient_at_work_sub_tour_asc_business2 0 \n", + "coefficient_at_work_sub_tour_asc_eat 0 \n", + "coefficient_at_work_sub_tour_asc_eat_business 0 \n", + "coefficient_at_work_sub_tour_asc_maint 0 \n", + "... ... \n", + "coefficient_zero_cars_owned_by_hh_dummy_business1 0 \n", + "coefficient_zero_cars_owned_by_hh_dummy_business2 1 \n", + "coefficient_zero_cars_owned_by_hh_dummy_eat 1 \n", + "coefficient_zero_cars_owned_by_hh_dummy_eat_bus... 0 \n", + "coefficient_zero_cars_owned_by_hh_dummy_maint 0 \n", "\n", - "[110 rows x 8 columns]" + "[110 rows x 7 columns]" ] }, "metadata": {}, @@ -1463,12 +1520,8 @@ "name": "stderr", "output_type": "stream", "text": [ - ":1: PossibleOverspecification: WARNING: Model is possibly over-specified (hessian is nearly singular).\n", - " model.estimate(method='SLSQP')\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 5.5647113087279e-33 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - ":1: RuntimeWarning: invalid value encountered in sqrt\n", - " model.estimate(method='SLSQP')\n" + "/Users/jpn/Git/est-mode/larch/src/larch/model/jaxmodel.py:1156: PossibleOverspecification: Model is possibly over-specified (hessian is nearly singular).\n", + " self.calculate_parameter_covariance()\n" ] }, { @@ -1484,446 +1537,446 @@ " \n", " \n", " coefficient_at_work_sub_tour_asc_business1\n", - " 1.421407e+00\n", + " -0.350395\n", " \n", " \n", " coefficient_at_work_sub_tour_asc_business2\n", - " -1.307783e-01\n", + " -2.211281\n", " \n", " \n", " coefficient_at_work_sub_tour_asc_eat\n", - " 5.809056e+00\n", + " 0.440311\n", " \n", " \n", " coefficient_at_work_sub_tour_asc_eat_business\n", - " -2.341536e+01\n", + " -0.860366\n", " \n", " \n", " coefficient_at_work_sub_tour_asc_maint\n", - " 1.291048e+01\n", + " -0.423469\n", " \n", " \n", " coefficient_auto_accessibility_to_retail_for_work_taz_business1\n", - " -2.350832e-01\n", + " 0.078156\n", " \n", " \n", " coefficient_auto_accessibility_to_retail_for_work_taz_business2\n", - " 2.951134e+00\n", + " 0.295708\n", " \n", " \n", " coefficient_auto_accessibility_to_retail_for_work_taz_eat\n", - " -7.610481e-01\n", + " 0.137215\n", " \n", " \n", " coefficient_auto_accessibility_to_retail_for_work_taz_eat_business\n", - " 1.515548e+00\n", + " -0.262951\n", " \n", " \n", " coefficient_auto_accessibility_to_retail_for_work_taz_maint\n", - " -3.200651e+00\n", + " 0.021772\n", " \n", " \n", " coefficient_dummy_for_drive_alone_mode_for_work_tour_business1\n", - " 3.943802e+00\n", + " 0.949692\n", " \n", " \n", " coefficient_dummy_for_drive_alone_mode_for_work_tour_business2\n", - " -7.285121e+00\n", + " 1.745346\n", " \n", " \n", " coefficient_dummy_for_drive_alone_mode_for_work_tour_eat\n", - " 3.216240e+00\n", + " 0.488173\n", " \n", " \n", " coefficient_dummy_for_drive_alone_mode_for_work_tour_eat_business\n", - " 2.333483e+00\n", + " 1.784643\n", " \n", " \n", " coefficient_dummy_for_drive_alone_mode_for_work_tour_maint\n", - " 3.865797e+00\n", + " 1.106347\n", " \n", " \n", " coefficient_dummy_for_full_time_worker_business1\n", - " -1.136529e+01\n", + " -7.402415\n", " \n", " \n", " coefficient_dummy_for_full_time_worker_business2\n", - " -1.383392e+01\n", + " -13.824988\n", " \n", " \n", " coefficient_dummy_for_full_time_worker_eat\n", - " -9.545916e+00\n", + " -7.551797\n", " \n", " \n", " coefficient_dummy_for_full_time_worker_eat_business\n", - " -1.119217e+01\n", + " -14.974823\n", " \n", " \n", " coefficient_dummy_for_full_time_worker_maint\n", - " -5.880704e+00\n", + " -8.063977\n", " \n", " \n", " coefficient_dummy_for_non_full_time_worker_business1\n", - " -2.370101e+00\n", + " -8.104781\n", " \n", " \n", " coefficient_dummy_for_non_full_time_worker_business2\n", - " -1.272316e+01\n", + " -14.812593\n", " \n", " \n", " coefficient_dummy_for_non_full_time_worker_eat\n", - " -1.386629e+00\n", + " -8.749492\n", " \n", " \n", " coefficient_dummy_for_non_full_time_worker_eat_business\n", - " -4.083109e+01\n", + " -14.493442\n", " \n", " \n", " coefficient_dummy_for_non_full_time_worker_maint\n", - " 3.103983e+00\n", + " -8.046692\n", " \n", " \n", " coefficient_dummy_for_non_workers_business1\n", - " -5.000000e+00\n", + " -5.000000\n", " \n", " \n", " coefficient_dummy_for_non_workers_business2\n", - " -5.000000e+00\n", + " -5.000000\n", " \n", " \n", " coefficient_dummy_for_non_workers_eat\n", - " -3.678488e-14\n", + " 0.000000\n", " \n", " \n", " coefficient_dummy_for_non_workers_eat_business\n", - " -5.000000e+00\n", + " -5.000000\n", " \n", " \n", " coefficient_dummy_for_non_workers_maint\n", - " -5.000000e+00\n", + " -5.000000\n", " \n", " \n", " coefficient_dummy_for_worker_or_student_with_non_mandatory_tour_business1\n", - " 5.542765e-14\n", + " 0.000000\n", " \n", " \n", " coefficient_dummy_for_worker_or_student_with_non_mandatory_tour_business2\n", - " -6.800386e-14\n", + " 0.000000\n", " \n", " \n", " coefficient_dummy_for_worker_or_student_with_non_mandatory_tour_eat\n", - " -7.803277e-15\n", + " 0.000000\n", " \n", " \n", " coefficient_dummy_for_worker_or_student_with_non_mandatory_tour_eat_business\n", - " 9.964378e-15\n", + " 0.000000\n", " \n", " \n", " coefficient_dummy_for_worker_or_student_with_non_mandatory_tour_maint\n", - " -4.465435e-01\n", + " -0.857652\n", " \n", " \n", " coefficient_high_hh_income_dummy_business1\n", - " -5.699484e+00\n", + " 1.051824\n", " \n", " \n", " coefficient_high_hh_income_dummy_business2\n", - " 1.817758e+01\n", + " 1.775205\n", " \n", " \n", " coefficient_high_hh_income_dummy_eat\n", - " -5.360138e+00\n", + " 0.987000\n", " \n", " \n", " coefficient_high_hh_income_dummy_eat_business\n", - " 5.949348e+00\n", + " 2.165299\n", " \n", " \n", " coefficient_high_hh_income_dummy_maint\n", - " -6.899602e+00\n", + " 0.188372\n", " \n", " \n", " coefficient_individual_discretionary_tours_made_by_full_time_worker_business1\n", - " -1.423867e+00\n", + " 0.746021\n", " \n", " \n", " coefficient_individual_discretionary_tours_made_by_full_time_worker_business2\n", - " 1.949725e+01\n", + " 0.764494\n", " \n", " \n", " coefficient_individual_discretionary_tours_made_by_full_time_worker_eat\n", - " -1.457980e+00\n", + " 0.315100\n", " \n", " \n", " coefficient_individual_discretionary_tours_made_by_full_time_worker_eat_business\n", - " -1.111294e+01\n", + " 1.303968\n", " \n", " \n", " coefficient_individual_discretionary_tours_made_by_full_time_worker_maint\n", - " -1.711559e+00\n", + " 0.661317\n", " \n", " \n", " coefficient_individual_discretionary_tours_made_by_part_time_worker_business1\n", - " 1.701675e+00\n", + " 0.057399\n", " \n", " \n", " coefficient_individual_discretionary_tours_made_by_part_time_worker_business2\n", - " 1.531338e+00\n", + " 2.149968\n", " \n", " \n", " coefficient_individual_discretionary_tours_made_by_part_time_worker_eat\n", - " 9.815649e-01\n", + " 0.034146\n", " \n", " \n", " coefficient_individual_discretionary_tours_made_by_part_time_worker_eat_business\n", - " 2.152744e-01\n", + " 1.416263\n", " \n", " \n", " coefficient_individual_discretionary_tours_made_by_part_time_worker_maint\n", - " 2.494477e-01\n", + " 1.021525\n", " \n", " \n", " coefficient_individual_eating_out_tours_made_by_person_business1\n", - " 4.249081e-01\n", + " 0.263548\n", " \n", " \n", " coefficient_individual_eating_out_tours_made_by_person_business2\n", - " 1.688422e+01\n", + " 1.149846\n", " \n", " \n", " coefficient_individual_eating_out_tours_made_by_person_eat\n", - " -2.110385e-01\n", + " 0.231645\n", " \n", " \n", " coefficient_individual_eating_out_tours_made_by_person_eat_business\n", - " -1.375749e+01\n", + " 1.418076\n", " \n", " \n", " coefficient_individual_eating_out_tours_made_by_person_maint\n", - " 8.477993e-01\n", + " 1.125285\n", " \n", " \n", " coefficient_log_of_the_work_tour_duration_business1\n", - " 1.079743e+01\n", + " 1.007122\n", " \n", " \n", " coefficient_log_of_the_work_tour_duration_business2\n", - " -4.104113e+01\n", + " 1.771287\n", " \n", " \n", " coefficient_log_of_the_work_tour_duration_eat\n", - " 9.912072e+00\n", + " 1.458489\n", " \n", " \n", " coefficient_log_of_the_work_tour_duration_eat_business\n", - " 1.921602e+01\n", + " 3.447598\n", " \n", " \n", " coefficient_log_of_the_work_tour_duration_maint\n", - " 1.044261e+01\n", + " 1.642504\n", " \n", " \n", " coefficient_main_shop_escort_tours_allocated_to_full_time_worker_business1\n", - " 5.245200e+00\n", + " -0.181697\n", " \n", " \n", " coefficient_main_shop_escort_tours_allocated_to_full_time_worker_business2\n", - " -5.957409e+00\n", + " -0.328201\n", " \n", " \n", " coefficient_main_shop_escort_tours_allocated_to_full_time_worker_eat\n", - " 5.734339e+00\n", + " -0.013286\n", " \n", " \n", " coefficient_main_shop_escort_tours_allocated_to_full_time_worker_eat_business\n", - " -1.136555e+01\n", + " -0.788124\n", " \n", " \n", " coefficient_main_shop_escort_tours_allocated_to_full_time_worker_maint\n", - " 5.726820e+00\n", + " 0.694707\n", " \n", " \n", " coefficient_main_shop_escort_tours_allocated_to_part_time_worker_business1\n", - " -1.437920e+01\n", + " -0.005852\n", " \n", " \n", " coefficient_main_shop_escort_tours_allocated_to_part_time_worker_business2\n", - " 1.824373e-01\n", + " -0.444998\n", " \n", " \n", " coefficient_main_shop_escort_tours_allocated_to_part_time_worker_eat\n", - " 6.645087e+00\n", + " -0.120943\n", " \n", " \n", " coefficient_main_shop_escort_tours_allocated_to_part_time_worker_eat_business\n", - " -4.922608e-01\n", + " -1.170010\n", " \n", " \n", " coefficient_main_shop_escort_tours_allocated_to_part_time_worker_maint\n", - " 6.390638e+00\n", + " 0.088504\n", " \n", " \n", " coefficient_medium_hh_income_dummy_business1\n", - " -3.286293e+00\n", + " 0.374955\n", " \n", " \n", " coefficient_medium_hh_income_dummy_business2\n", - " 2.006070e+00\n", + " 1.384595\n", " \n", " \n", " coefficient_medium_hh_income_dummy_eat\n", - " -2.530097e+00\n", + " 0.467235\n", " \n", " \n", " coefficient_medium_hh_income_dummy_eat_business\n", - " 1.050098e+01\n", + " 1.373736\n", " \n", " \n", " coefficient_medium_hh_income_dummy_maint\n", - " -3.095965e+00\n", + " -0.005820\n", " \n", " \n", " coefficient_participation_in_joint_discretionary_tours_business1\n", - " 8.878328e-01\n", + " 0.075698\n", " \n", " \n", " coefficient_participation_in_joint_discretionary_tours_business2\n", - " -4.199835e-01\n", + " -0.191769\n", " \n", " \n", " coefficient_participation_in_joint_discretionary_tours_eat\n", - " -2.448175e-01\n", + " 0.454516\n", " \n", " \n", " coefficient_participation_in_joint_discretionary_tours_eat_business\n", - " -2.723876e+00\n", + " -0.681551\n", " \n", " \n", " coefficient_participation_in_joint_discretionary_tours_maint\n", - " 2.745844e+00\n", + " 0.588105\n", " \n", " \n", " coefficient_participation_in_joint_shop_main_eat_tours_business1\n", - " 3.561155e+00\n", + " 0.151268\n", " \n", " \n", " coefficient_participation_in_joint_shop_main_eat_tours_business2\n", - " -2.800502e-01\n", + " 0.232018\n", " \n", " \n", " coefficient_participation_in_joint_shop_main_eat_tours_eat\n", - " 1.988637e+00\n", + " -0.054088\n", " \n", " \n", " coefficient_participation_in_joint_shop_main_eat_tours_eat_business\n", - " -6.545173e+00\n", + " 0.928998\n", " \n", " \n", " coefficient_participation_in_joint_shop_main_eat_tours_maint\n", - " 2.179332e+00\n", + " -0.354297\n", " \n", " \n", " coefficient_two_work_tours_by_person_business1\n", - " 3.694023e+00\n", + " 0.343052\n", " \n", " \n", " coefficient_two_work_tours_by_person_business2\n", - " -4.104683e+00\n", + " 0.672564\n", " \n", " \n", " coefficient_two_work_tours_by_person_eat\n", - " 1.927236e+00\n", + " -0.903976\n", " \n", " \n", " coefficient_two_work_tours_by_person_eat_business\n", - " -5.424974e+00\n", + " -1.029881\n", " \n", " \n", " coefficient_two_work_tours_by_person_maint\n", - " 3.205997e+00\n", + " 0.215840\n", " \n", " \n", " coefficient_walk_accessibility_to_retail_for_work_taz_business1\n", - " 0.000000e+00\n", + " 0.000000\n", " \n", " \n", " coefficient_walk_accessibility_to_retail_for_work_taz_business2\n", - " 0.000000e+00\n", + " 0.000000\n", " \n", " \n", " coefficient_walk_accessibility_to_retail_for_work_taz_eat\n", - " 5.329379e-02\n", + " 0.054262\n", " \n", " \n", " coefficient_walk_accessibility_to_retail_for_work_taz_eat_business\n", - " -4.690165e-01\n", + " 0.248444\n", " \n", " \n", " coefficient_walk_accessibility_to_retail_for_work_taz_maint\n", - " 3.930491e-01\n", + " 0.051297\n", " \n", " \n", " coefficient_workplace_suburban_area_dummy_business1\n", - " -1.102000e-01\n", + " -0.077046\n", " \n", " \n", " coefficient_workplace_suburban_area_dummy_business2\n", - " -2.204000e-01\n", + " -0.214908\n", " \n", " \n", " coefficient_workplace_suburban_area_dummy_eat\n", - " -2.916000e-01\n", + " -0.497064\n", " \n", " \n", " coefficient_workplace_suburban_area_dummy_eat_business\n", - " -4.018000e-01\n", + " -0.496303\n", " \n", " \n", " coefficient_workplace_suburban_area_dummy_maint\n", - " 0.000000e+00\n", + " 0.000000\n", " \n", " \n", " coefficient_workplace_urban_area_dummy_business1\n", - " 1.735107e+00\n", + " -0.069849\n", " \n", " \n", " coefficient_workplace_urban_area_dummy_business2\n", - " 1.555922e+00\n", + " -0.530073\n", " \n", " \n", " coefficient_workplace_urban_area_dummy_eat\n", - " 4.533256e+00\n", + " -0.630025\n", " \n", " \n", " coefficient_workplace_urban_area_dummy_eat_business\n", - " -2.308496e+01\n", + " -0.435462\n", " \n", " \n", " coefficient_workplace_urban_area_dummy_maint\n", - " 1.338238e+01\n", + " -0.212890\n", " \n", " \n", " coefficient_zero_cars_owned_by_hh_dummy_business1\n", - " -5.268759e-01\n", + " -0.633755\n", " \n", " \n", " coefficient_zero_cars_owned_by_hh_dummy_business2\n", - " 0.000000e+00\n", + " 0.000000\n", " \n", " \n", " coefficient_zero_cars_owned_by_hh_dummy_eat\n", - " 0.000000e+00\n", + " 0.000000\n", " \n", " \n", " coefficient_zero_cars_owned_by_hh_dummy_eat_business\n", - " -1.911629e+01\n", + " -0.847707\n", " \n", " \n", " coefficient_zero_cars_owned_by_hh_dummy_maint\n", - " 5.593497e-01\n", + " -0.020836\n", " \n", " \n", - "loglike-311.0816324383027d_loglike\n", + "
logloss0.8125481383373976d_logloss\n", " \n", " \n", " \n", @@ -1933,103 +1986,103 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2069,227 +2122,227 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2301,31 +2354,31 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2333,27 +2386,27 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2365,52 +2418,52 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - "
coefficient_at_work_sub_tour_asc_business1-1.481164e-04-2.181632e-05
coefficient_at_work_sub_tour_asc_business2-2.230083e-05-7.974611e-06
coefficient_at_work_sub_tour_asc_eat1.390294e-046.885959e-05
coefficient_at_work_sub_tour_asc_eat_business1.539374e-04-5.704460e-06
coefficient_at_work_sub_tour_asc_maint-1.225496e-04-3.336420e-05
coefficient_auto_accessibility_to_retail_for_work_taz_business1-1.603725e-031.678059e-05
coefficient_auto_accessibility_to_retail_for_work_taz_business2-2.219798e-04-7.241747e-05
coefficient_auto_accessibility_to_retail_for_work_taz_eat1.752293e-03-6.082835e-05
coefficient_auto_accessibility_to_retail_for_work_taz_eat_business1.320801e-038.064174e-05
coefficient_auto_accessibility_to_retail_for_work_taz_maint-1.247389e-033.582349e-05
coefficient_dummy_for_drive_alone_mode_for_work_tour_business1-9.593191e-05-4.107213e-05
coefficient_dummy_for_drive_alone_mode_for_work_tour_business2-1.354692e-055.986918e-05
coefficient_dummy_for_drive_alone_mode_for_work_tour_eat-2.279001e-047.033209e-05
coefficient_dummy_for_drive_alone_mode_for_work_tour_eat_business4.011519e-04-9.447444e-06
coefficient_dummy_for_drive_alone_mode_for_work_tour_maint-6.377298e-05-7.968169e-05
coefficient_dummy_for_full_time_worker_business1-1.605243e-042.817589e-05
coefficient_dummy_for_full_time_worker_business2-2.230083e-053.226183e-05
coefficient_dummy_for_full_time_worker_eat7.303158e-051.003712e-04
coefficient_dummy_for_full_time_worker_eat_business1.539374e-041.549190e-05
coefficient_dummy_for_full_time_worker_maint-4.414386e-05-1.763008e-04
coefficient_dummy_for_non_full_time_worker_business11.240794e-05-4.999221e-05
coefficient_dummy_for_non_full_time_worker_business2-7.261864e-17-4.023644e-05
coefficient_dummy_for_non_full_time_worker_eat6.599780e-05-3.151158e-05
coefficient_dummy_for_non_full_time_worker_eat_business-1.086362e-18-2.119636e-05
coefficient_dummy_for_non_full_time_worker_maint-7.840574e-051.429366e-04
coefficient_dummy_for_non_workers_business1
coefficient_dummy_for_worker_or_student_with_non_mandatory_tour_maint-9.311590e-05-1.714819e-04
coefficient_high_hh_income_dummy_business1-1.000616e-04-1.191730e-05
coefficient_high_hh_income_dummy_business2-8.753913e-06-7.059313e-05
coefficient_high_hh_income_dummy_eat-2.221195e-06-5.126677e-05
coefficient_high_hh_income_dummy_eat_business2.213370e-048.255506e-05
coefficient_high_hh_income_dummy_maint-1.103003e-045.122214e-05
coefficient_individual_discretionary_tours_made_by_full_time_worker_business1-7.053640e-05-1.226983e-05
coefficient_individual_discretionary_tours_made_by_full_time_worker_business2-2.791062e-057.360525e-05
coefficient_individual_discretionary_tours_made_by_full_time_worker_eat1.818022e-04-3.188124e-05
coefficient_individual_discretionary_tours_made_by_full_time_worker_eat_business-2.707632e-066.305075e-07
coefficient_individual_discretionary_tours_made_by_full_time_worker_maint-8.064758e-05-3.008468e-05
coefficient_individual_discretionary_tours_made_by_part_time_worker_business1-9.603037e-06-2.903966e-05
coefficient_individual_discretionary_tours_made_by_part_time_worker_business2-1.629515e-19-1.376988e-05
coefficient_individual_discretionary_tours_made_by_part_time_worker_eat-3.348668e-072.058728e-05
coefficient_individual_discretionary_tours_made_by_part_time_worker_eat_business-1.124861e-22-3.015319e-05
coefficient_individual_discretionary_tours_made_by_part_time_worker_maint9.937904e-065.237545e-05
coefficient_individual_eating_out_tours_made_by_person_business1-7.862028e-05-1.667468e-04
coefficient_individual_eating_out_tours_made_by_person_business2-8.753608e-06-3.264570e-05
coefficient_individual_eating_out_tours_made_by_person_eat3.564089e-052.212368e-05
coefficient_individual_eating_out_tours_made_by_person_eat_business-1.309491e-079.515601e-06
coefficient_individual_eating_out_tours_made_by_person_maint5.186395e-051.677532e-04
coefficient_log_of_the_work_tour_duration_business1-3.971369e-041.043468e-04
coefficient_log_of_the_work_tour_duration_business2-2.991023e-058.913429e-06
coefficient_log_of_the_work_tour_duration_eat3.149096e-041.295254e-05
coefficient_log_of_the_work_tour_duration_eat_business3.910540e-04-1.066273e-04
coefficient_log_of_the_work_tour_duration_maint-2.789165e-04-1.958540e-05
coefficient_main_shop_escort_tours_allocated_to_full_time_worker_business18.932382e-064.643980e-05
coefficient_main_shop_escort_tours_allocated_to_full_time_worker_business2-1.299699e-05-2.188999e-05
coefficient_main_shop_escort_tours_allocated_to_full_time_worker_eat-8.667554e-051.650779e-04
coefficient_main_shop_escort_tours_allocated_to_full_time_worker_eat_business-1.119625e-084.743178e-05
coefficient_main_shop_escort_tours_allocated_to_full_time_worker_maint9.075134e-05-2.370595e-04
coefficient_main_shop_escort_tours_allocated_to_part_time_worker_business1-4.914227e-102.357735e-05
coefficient_main_shop_escort_tours_allocated_to_part_time_worker_business2-2.173636e-16-1.188907e-05
coefficient_main_shop_escort_tours_allocated_to_part_time_worker_eat-2.658044e-067.570065e-05
coefficient_main_shop_escort_tours_allocated_to_part_time_worker_eat_business-7.964540e-24-3.983432e-05
coefficient_main_shop_escort_tours_allocated_to_part_time_worker_maint2.658536e-06-4.755461e-05
coefficient_medium_hh_income_dummy_business1-5.984683e-053.482667e-05
coefficient_medium_hh_income_dummy_business2-8.619829e-275.769942e-05
coefficient_medium_hh_income_dummy_eat1.446985e-04-5.137537e-06
coefficient_medium_hh_income_dummy_eat_business-6.509501e-05-5.711674e-05
coefficient_medium_hh_income_dummy_maint-1.975668e-05-3.027181e-05
coefficient_participation_in_joint_discretionary_tours_business11.633148e-05-5.693164e-05
coefficient_participation_in_joint_discretionary_tours_business2-3.971146e-267.289406e-05
coefficient_participation_in_joint_discretionary_tours_eat8.138286e-051.061065e-04
coefficient_participation_in_joint_discretionary_tours_eat_business-5.416119e-05-9.568225e-05
coefficient_participation_in_joint_discretionary_tours_maint-4.355316e-05-2.638670e-05
coefficient_participation_in_joint_shop_main_eat_tours_business1-1.005486e-044.632880e-05
coefficient_participation_in_joint_shop_main_eat_tours_business2-1.490847e-157.216085e-07
coefficient_participation_in_joint_shop_main_eat_tours_eat1.024581e-04-6.996621e-05
coefficient_participation_in_joint_shop_main_eat_tours_eat_business-8.904994e-071.708229e-06
coefficient_participation_in_joint_shop_main_eat_tours_maint-1.018973e-062.120756e-05
coefficient_two_work_tours_by_person_business17.076435e-059.533131e-05
coefficient_two_work_tours_by_person_business2-3.049929e-10-7.711784e-06
coefficient_two_work_tours_by_person_eat1.336457e-05-5.696558e-06
coefficient_two_work_tours_by_person_eat_business-1.430779e-06-5.510631e-05
coefficient_two_work_tours_by_person_maint-8.269783e-05-2.681666e-05
coefficient_walk_accessibility_to_retail_for_work_taz_business1
coefficient_walk_accessibility_to_retail_for_work_taz_eat2.395850e-038.877549e-05
coefficient_walk_accessibility_to_retail_for_work_taz_eat_business-5.362286e-045.191476e-05
coefficient_walk_accessibility_to_retail_for_work_taz_maint-6.315696e-04-3.267917e-05
coefficient_workplace_suburban_area_dummy_business10.000000e+00-2.911572e-05
coefficient_workplace_suburban_area_dummy_business20.000000e+00-3.969147e-06
coefficient_workplace_suburban_area_dummy_eat0.000000e+002.978185e-05
coefficient_workplace_suburban_area_dummy_eat_business0.000000e+00-8.309287e-06
coefficient_workplace_suburban_area_dummy_maint
coefficient_workplace_urban_area_dummy_business1-1.481164e-047.299400e-06
coefficient_workplace_urban_area_dummy_business2-2.230083e-05-4.005464e-06
coefficient_workplace_urban_area_dummy_eat1.390294e-043.907774e-05
coefficient_workplace_urban_area_dummy_eat_business1.539374e-042.604827e-06
coefficient_workplace_urban_area_dummy_maint-1.225496e-04-4.497650e-05
coefficient_zero_cars_owned_by_hh_dummy_business1-2.241883e-04-1.324894e-05
coefficient_zero_cars_owned_by_hh_dummy_business2
coefficient_zero_cars_owned_by_hh_dummy_eat_business-4.538836e-09-8.057484e-05
coefficient_zero_cars_owned_by_hh_dummy_maint-3.467043e-05-2.405112e-05
nit75nfev115njev75status0message'Optimization terminated successfully'successTrueelapsed_time0:00:01.501390method'SLSQP'n_cases460iteration_number75logloss0.6762644183441363" + "nit100nfev104njev100status0message'Optimization terminated successfully'successTrueelapsed_time0:00:00.874759method'SLSQP'n_cases5947iteration_number100loglike-4832.223778692503" ], "text/plain": [ - "┣ x: coefficient_at_work_sub_tour_asc_business1 1.421407\n", - "┃ coefficient_at_work_sub_tour_asc_business2 -0.130778\n", - "┃ coefficient_at_work_sub_tour_asc_eat 5.809056\n", - "┃ coefficient_at_work_sub_tour_asc_eat_business -23.415363\n", - "┃ coefficient_at_work_sub_tour_asc_maint 12.910479\n", - "┃ ... \n", - "┃ coefficient_zero_cars_owned_by_hh_dummy_business1 -0.526876\n", - "┃ coefficient_zero_cars_owned_by_hh_dummy_business2 0.000000\n", - "┃ coefficient_zero_cars_owned_by_hh_dummy_eat 0.000000\n", - "┃ coefficient_zero_cars_owned_by_hh_dummy_eat_business -19.116288\n", - "┃ coefficient_zero_cars_owned_by_hh_dummy_maint 0.559350\n", + "┣ x: coefficient_at_work_sub_tour_asc_business1 -0.350395\n", + "┃ coefficient_at_work_sub_tour_asc_business2 -2.211281\n", + "┃ coefficient_at_work_sub_tour_asc_eat 0.440311\n", + "┃ coefficient_at_work_sub_tour_asc_eat_business -0.860366\n", + "┃ coefficient_at_work_sub_tour_asc_maint -0.423469\n", + "┃ ... \n", + "┃ coefficient_zero_cars_owned_by_hh_dummy_business1 -0.633755\n", + "┃ coefficient_zero_cars_owned_by_hh_dummy_business2 0.000000\n", + "┃ coefficient_zero_cars_owned_by_hh_dummy_eat 0.000000\n", + "┃ coefficient_zero_cars_owned_by_hh_dummy_eat_business -0.847707\n", + "┃ coefficient_zero_cars_owned_by_hh_dummy_maint -0.020836\n", "┃ Length: 110, dtype: float64\n", - "┣ loglike: -311.0816324383027\n", - "┣ d_loglike: coefficient_at_work_sub_tour_asc_business1 -1.481164e-04\n", - "┃ coefficient_at_work_sub_tour_asc_business2 -2.230083e-05\n", - "┃ coefficient_at_work_sub_tour_asc_eat 1.390294e-04\n", - "┃ coefficient_at_work_sub_tour_asc_eat_business 1.539374e-04\n", - "┃ coefficient_at_work_sub_tour_asc_maint -1.225496e-04\n", - "┃ ... \n", - "┃ coefficient_zero_cars_owned_by_hh_dummy_business1 -2.241883e-04\n", - "┃ coefficient_zero_cars_owned_by_hh_dummy_business2 0.000000e+00\n", - "┃ coefficient_zero_cars_owned_by_hh_dummy_eat 0.000000e+00\n", - "┃ coefficient_zero_cars_owned_by_hh_dummy_eat_business -4.538836e-09\n", - "┃ coefficient_zero_cars_owned_by_hh_dummy_maint -3.467043e-05\n", + "┣ logloss: 0.8125481383373976\n", + "┣ d_logloss: coefficient_at_work_sub_tour_asc_business1 -0.000022\n", + "┃ coefficient_at_work_sub_tour_asc_business2 -0.000008\n", + "┃ coefficient_at_work_sub_tour_asc_eat 0.000069\n", + "┃ coefficient_at_work_sub_tour_asc_eat_business -0.000006\n", + "┃ coefficient_at_work_sub_tour_asc_maint -0.000033\n", + "┃ ... \n", + "┃ coefficient_zero_cars_owned_by_hh_dummy_business1 -0.000013\n", + "┃ coefficient_zero_cars_owned_by_hh_dummy_business2 0.000000\n", + "┃ coefficient_zero_cars_owned_by_hh_dummy_eat 0.000000\n", + "┃ coefficient_zero_cars_owned_by_hh_dummy_eat_business -0.000081\n", + "┃ coefficient_zero_cars_owned_by_hh_dummy_maint -0.000024\n", "┃ Length: 110, dtype: float64\n", - "┣ nit: 75\n", - "┣ nfev: 115\n", - "┣ njev: 75\n", + "┣ nit: 100\n", + "┣ nfev: 104\n", + "┣ njev: 100\n", "┣ status: 0\n", "┣ message: 'Optimization terminated successfully'\n", "┣ success: True\n", - "┣ elapsed_time: datetime.timedelta(seconds=1, microseconds=501390)\n", + "┣ elapsed_time: datetime.timedelta(microseconds=874759)\n", "┣ method: 'SLSQP'\n", - "┣ n_cases: 460\n", - "┣ iteration_number: 75\n", - "┣ logloss: 0.6762644183441363" + "┣ n_cases: 5947\n", + "┣ iteration_number: 100\n", + "┣ loglike: -4832.223778692503" ] }, "execution_count": 7, @@ -2419,7 +2472,7 @@ } ], "source": [ - "model.estimate(method='SLSQP')" + "model.estimate(method='SLSQP', maxiter=900)" ] }, { @@ -2437,1120 +2490,1036 @@ { "data": { "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Value Std Err t Stat Signif Like Ratio Null Value Constrained
coefficient_at_work_sub_tour_asc_business1 1.42 NA NA[***] 29.59 0.00
coefficient_at_work_sub_tour_asc_business2-0.131 1.51e+04-0.00 NA 0.00
coefficient_at_work_sub_tour_asc_eat 5.81 484. 0.01 NA 0.00
coefficient_at_work_sub_tour_asc_eat_business-23.4 NA NA[***] BIG 0.00
coefficient_at_work_sub_tour_asc_maint 12.9 523. 0.02 NA 0.00
coefficient_auto_accessibility_to_retail_for_work_taz_business1-0.235 NA NA[***] 181.30 0.00
coefficient_auto_accessibility_to_retail_for_work_taz_business2 2.95 2.55e+03 0.00 NA 0.00
coefficient_auto_accessibility_to_retail_for_work_taz_eat-0.761 NA NA[***] 714.04 0.00
coefficient_auto_accessibility_to_retail_for_work_taz_eat_business 1.52 NA NA[***] 41.92 0.00
coefficient_auto_accessibility_to_retail_for_work_taz_maint-3.20 NA NA[***] BIG 0.00
coefficient_dummy_for_drive_alone_mode_for_work_tour_business1 3.94 NA NA[***] 77.39 0.00
coefficient_dummy_for_drive_alone_mode_for_work_tour_business2-7.29 NA NA[] 0.02 0.00
coefficient_dummy_for_drive_alone_mode_for_work_tour_eat 3.22 NA NA[***] 201.21 0.00
coefficient_dummy_for_drive_alone_mode_for_work_tour_eat_business 2.33 NA NA[] 1.40 0.00
coefficient_dummy_for_drive_alone_mode_for_work_tour_maint 3.87 NA NA[***] 79.47 0.00
coefficient_dummy_for_full_time_worker_business1-11.4 NA NA[***] BIG 0.00
coefficient_dummy_for_full_time_worker_business2-13.8 NA NA[**] 5.21 0.00
coefficient_dummy_for_full_time_worker_eat-9.55 NA NA[***] 827.25 0.00
coefficient_dummy_for_full_time_worker_eat_business-11.2 NA NA[***] BIG 0.00
coefficient_dummy_for_full_time_worker_maint-5.88 260.-0.02 NA 0.00
coefficient_dummy_for_non_full_time_worker_business1-2.37 1.09e+03-0.00 NA 0.00
coefficient_dummy_for_non_full_time_worker_business2-12.7 NA NA[] 0.00 0.00
coefficient_dummy_for_non_full_time_worker_eat-1.39 1.96e+03-0.00 NA 0.00
coefficient_dummy_for_non_full_time_worker_eat_business-40.8 NA NA[] 1.24 0.00
coefficient_dummy_for_non_full_time_worker_maint 3.10 2.40e+03 0.00 NA 0.00
coefficient_dummy_for_non_workers_business1-5.00 NA NA NA 0.00fixed value
coefficient_dummy_for_non_workers_business2-5.00 NA NA NA 0.00fixed value
coefficient_dummy_for_non_workers_eat 0.00 NA NA NA 0.00fixed value
coefficient_dummy_for_non_workers_eat_business-5.00 NA NA NA 0.00fixed value
coefficient_dummy_for_non_workers_maint-5.00 NA NA NA 0.00fixed value
coefficient_dummy_for_worker_or_student_with_non_mandatory_tour_business1 0.00 NA NA NA 0.00fixed value
coefficient_dummy_for_worker_or_student_with_non_mandatory_tour_business2 0.00 NA NA NA 0.00fixed value
coefficient_dummy_for_worker_or_student_with_non_mandatory_tour_eat 0.00 NA NA NA 0.00fixed value
coefficient_dummy_for_worker_or_student_with_non_mandatory_tour_eat_business 0.00 NA NA NA 0.00fixed value
coefficient_dummy_for_worker_or_student_with_non_mandatory_tour_maint-0.447 0.821-0.54 NA 0.00
coefficient_high_hh_income_dummy_business1-5.70 NA NA[***] 900.87 0.00
coefficient_high_hh_income_dummy_business2 18.2 NA NA[***] 5.91 0.00
coefficient_high_hh_income_dummy_eat-5.36 NA NA[***] 296.55 0.00
coefficient_high_hh_income_dummy_eat_business 5.95 430. 0.01 NA 0.00
coefficient_high_hh_income_dummy_maint-6.90 NA NA[***] BIG 0.00
coefficient_individual_discretionary_tours_made_by_full_time_worker_business1-1.42 540.-0.00 NA 0.00
coefficient_individual_discretionary_tours_made_by_full_time_worker_business2 19.5 4.34e+03 0.00 NA 0.00
coefficient_individual_discretionary_tours_made_by_full_time_worker_eat-1.46 540.-0.00 NA 0.00
coefficient_individual_discretionary_tours_made_by_full_time_worker_eat_business-11.1 806.-0.01 NA 0.00
coefficient_individual_discretionary_tours_made_by_full_time_worker_maint-1.71 540.-0.00 NA 0.00
coefficient_individual_discretionary_tours_made_by_part_time_worker_business1 1.70 NA NA[] 0.74 0.00
coefficient_individual_discretionary_tours_made_by_part_time_worker_business2 1.53 0.000562 BIG*** NA 0.00
coefficient_individual_discretionary_tours_made_by_part_time_worker_eat 0.982 NA NA[] 0.40 0.00
coefficient_individual_discretionary_tours_made_by_part_time_worker_eat_business 0.215 0.000123 BIG*** NA 0.00
coefficient_individual_discretionary_tours_made_by_part_time_worker_maint 0.249 NA NA[] 0.02 0.00
coefficient_individual_eating_out_tours_made_by_person_business1 0.425 NA NA[] 0.26 0.00
coefficient_individual_eating_out_tours_made_by_person_business2 16.9 NA NA[**] 4.62 0.00
coefficient_individual_eating_out_tours_made_by_person_eat-0.211 NA NA[] 0.12 0.00
coefficient_individual_eating_out_tours_made_by_person_eat_business-13.8 2.41e+03-0.01 NA 0.00
coefficient_individual_eating_out_tours_made_by_person_maint 0.848 NA NA[] 1.11 0.00
coefficient_log_of_the_work_tour_duration_business1 10.8 NA NA[***] BIG 0.00
coefficient_log_of_the_work_tour_duration_business2-41.0 4.06e+03-0.01 NA 0.00
coefficient_log_of_the_work_tour_duration_eat 9.91 NA NA[***] BIG 0.00
coefficient_log_of_the_work_tour_duration_eat_business 19.2 NA NA[***] 151.19 0.00
coefficient_log_of_the_work_tour_duration_maint 10.4 NA NA[***] BIG 0.00
coefficient_main_shop_escort_tours_allocated_to_full_time_worker_business1 5.25 NA NA[***] 17.02 0.00
coefficient_main_shop_escort_tours_allocated_to_full_time_worker_business2-5.96 1.41e+04-0.00 NA 0.00
coefficient_main_shop_escort_tours_allocated_to_full_time_worker_eat 5.73 NA NA[***] 170.02 0.00
coefficient_main_shop_escort_tours_allocated_to_full_time_worker_eat_business-11.4 7.01e+03-0.00 NA 0.00
coefficient_main_shop_escort_tours_allocated_to_full_time_worker_maint 5.73 NA NA[***] 19.07 0.00
coefficient_main_shop_escort_tours_allocated_to_part_time_worker_business1-14.4 NA NA[] 0.00 0.00
coefficient_main_shop_escort_tours_allocated_to_part_time_worker_business2 0.182 NA NA[] 0.00 0.00
coefficient_main_shop_escort_tours_allocated_to_part_time_worker_eat 6.65 5.15e+03 0.00 NA 0.00
coefficient_main_shop_escort_tours_allocated_to_part_time_worker_eat_business-0.492 NA NA[] 0.00 0.00
coefficient_main_shop_escort_tours_allocated_to_part_time_worker_maint 6.39 5.15e+03 0.00 NA 0.00
coefficient_medium_hh_income_dummy_business1-3.29 1.13e+03-0.00 NA 0.00
coefficient_medium_hh_income_dummy_business2 2.01 NA NA[] 0.00 0.00
coefficient_medium_hh_income_dummy_eat-2.53 1.13e+03-0.00 NA 0.00
coefficient_medium_hh_income_dummy_eat_business 10.5 1.27e+03 0.01 NA 0.00
coefficient_medium_hh_income_dummy_maint-3.10 1.13e+03-0.00 NA 0.00
coefficient_participation_in_joint_discretionary_tours_business1 0.888 NA NA[] 0.23 0.00
coefficient_participation_in_joint_discretionary_tours_business2-0.420 NA NA[] 0.00 0.00
coefficient_participation_in_joint_discretionary_tours_eat-0.245 NA NA[] 0.02 0.00
coefficient_participation_in_joint_discretionary_tours_eat_business-2.72 NA NA[] 0.00 0.00
coefficient_participation_in_joint_discretionary_tours_maint 2.75 NA NA[*] 2.92 0.00
coefficient_participation_in_joint_shop_main_eat_tours_business1 3.56 1.13e+03 0.00 NA 0.00
coefficient_participation_in_joint_shop_main_eat_tours_business2-0.280 NA NA[] 0.00 0.00
coefficient_participation_in_joint_shop_main_eat_tours_eat 1.99 1.13e+03 0.00 NA 0.00
coefficient_participation_in_joint_shop_main_eat_tours_eat_business-6.55 1.38e+03-0.00 NA 0.00
coefficient_participation_in_joint_shop_main_eat_tours_maint 2.18 1.13e+03 0.00 NA 0.00
coefficient_two_work_tours_by_person_business1 3.69 NA NA[**] 5.16 0.00
coefficient_two_work_tours_by_person_business2-4.10 2.72e+03-0.00 NA 0.00
coefficient_two_work_tours_by_person_eat 1.93 NA NA[**] 4.09 0.00
coefficient_two_work_tours_by_person_eat_business-5.42 NA NA[] 0.00 0.00
coefficient_two_work_tours_by_person_maint 3.21 NA NA[**] 4.07 0.00
coefficient_walk_accessibility_to_retail_for_work_taz_business1 0.00 NA NA NA 0.00fixed value
coefficient_walk_accessibility_to_retail_for_work_taz_business2 0.00 NA NA NA 0.00fixed value
coefficient_walk_accessibility_to_retail_for_work_taz_eat 0.0533 0.234 0.23 NA 0.00
coefficient_walk_accessibility_to_retail_for_work_taz_eat_business-0.469 0.669-0.70 NA 0.00
coefficient_walk_accessibility_to_retail_for_work_taz_maint 0.393 0.308 1.28 NA 0.00
coefficient_workplace_suburban_area_dummy_business1-0.110 0.00 NA[] 0.00 0.00
coefficient_workplace_suburban_area_dummy_business2-0.220 0.00 NA[] 0.00 0.00
coefficient_workplace_suburban_area_dummy_eat-0.292 0.00 NA[] 0.00 0.00
coefficient_workplace_suburban_area_dummy_eat_business-0.402 0.00 NA[] 0.00 0.00
coefficient_workplace_suburban_area_dummy_maint 0.00 NA NA NA 0.00fixed value
coefficient_workplace_urban_area_dummy_business1 1.74 NA NA[***] 41.10 0.00
coefficient_workplace_urban_area_dummy_business2 1.56 NA NA[]-0.00 0.00
coefficient_workplace_urban_area_dummy_eat 4.53 NA NA[***] 890.88 0.00
coefficient_workplace_urban_area_dummy_eat_business-23.1 NA NA[***] BIG 0.00
coefficient_workplace_urban_area_dummy_maint 13.4 579. 0.02 NA 0.00
coefficient_zero_cars_owned_by_hh_dummy_business1-0.527 0.582-0.90 NA 0.00
coefficient_zero_cars_owned_by_hh_dummy_business2 0.00 NA NA NA 0.00fixed value
coefficient_zero_cars_owned_by_hh_dummy_eat 0.00 NA NA NA 0.00fixed value
coefficient_zero_cars_owned_by_hh_dummy_eat_business-19.1 1.36e+04-0.00 NA 0.00
coefficient_zero_cars_owned_by_hh_dummy_maint 0.559 0.426 1.31 NA 0.00
" + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ValueStd Errt StatSignifNull ValueConstrained
Parameter      
coefficient_at_work_sub_tour_asc_business1-0.350 1.10e+03-0.00 0.00
coefficient_at_work_sub_tour_asc_business2-2.21 2.21e+03-0.00 0.00
coefficient_at_work_sub_tour_asc_eat 0.440 NA NA 0.00
coefficient_at_work_sub_tour_asc_eat_business-0.860 495.-0.00 0.00
coefficient_at_work_sub_tour_asc_maint-0.423 NA NA 0.00
coefficient_auto_accessibility_to_retail_for_work_taz_business1 0.0782 NA NA 0.00
coefficient_auto_accessibility_to_retail_for_work_taz_business2 0.296 NA NA 0.00
coefficient_auto_accessibility_to_retail_for_work_taz_eat 0.137 NA NA 0.00
coefficient_auto_accessibility_to_retail_for_work_taz_eat_business-0.263 NA NA 0.00
coefficient_auto_accessibility_to_retail_for_work_taz_maint 0.0218 NA NA 0.00
coefficient_dummy_for_drive_alone_mode_for_work_tour_business1 0.950 NA NA 0.00
coefficient_dummy_for_drive_alone_mode_for_work_tour_business2 1.75 NA NA 0.00
coefficient_dummy_for_drive_alone_mode_for_work_tour_eat 0.488 NA NA 0.00
coefficient_dummy_for_drive_alone_mode_for_work_tour_eat_business 1.78 NA NA 0.00
coefficient_dummy_for_drive_alone_mode_for_work_tour_maint 1.11 NA NA 0.00
coefficient_dummy_for_full_time_worker_business1-7.40 552.-0.01 0.00
coefficient_dummy_for_full_time_worker_business2-13.8 1.67e+03-0.01 0.00
coefficient_dummy_for_full_time_worker_eat-7.55 1.25e+03-0.01 0.00
coefficient_dummy_for_full_time_worker_eat_business-15.0 2.70e+03-0.01 0.00
coefficient_dummy_for_full_time_worker_maint-8.06 1.60e+03-0.01 0.00
coefficient_dummy_for_non_full_time_worker_business1-8.10 687.-0.01 0.00
coefficient_dummy_for_non_full_time_worker_business2-14.8 1.52e+03-0.01 0.00
coefficient_dummy_for_non_full_time_worker_eat-8.75 1.58e+03-0.01 0.00
coefficient_dummy_for_non_full_time_worker_eat_business-14.5 2.34e+03-0.01 0.00
coefficient_dummy_for_non_full_time_worker_maint-8.05 2.29e+03-0.00 0.00
coefficient_dummy_for_non_workers_business1-5.00 0.00 NA 0.00fixed value
coefficient_dummy_for_non_workers_business2-5.00 0.00 NA 0.00fixed value
coefficient_dummy_for_non_workers_eat 0.00 0.00 NA 0.00fixed value
coefficient_dummy_for_non_workers_eat_business-5.00 0.00 NA 0.00fixed value
coefficient_dummy_for_non_workers_maint-5.00 0.00 NA 0.00fixed value
coefficient_dummy_for_worker_or_student_with_non_mandatory_tour_business1 0.00 0.00 NA 0.00fixed value
coefficient_dummy_for_worker_or_student_with_non_mandatory_tour_business2 0.00 0.00 NA 0.00fixed value
coefficient_dummy_for_worker_or_student_with_non_mandatory_tour_eat 0.00 0.00 NA 0.00fixed value
coefficient_dummy_for_worker_or_student_with_non_mandatory_tour_eat_business 0.00 0.00 NA 0.00fixed value
coefficient_dummy_for_worker_or_student_with_non_mandatory_tour_maint-0.858 0.324-2.64** 0.00
coefficient_high_hh_income_dummy_business1 1.05 733. 0.00 0.00
coefficient_high_hh_income_dummy_business2 1.78 733. 0.00 0.00
coefficient_high_hh_income_dummy_eat 0.987 733. 0.00 0.00
coefficient_high_hh_income_dummy_eat_business 2.17 733. 0.00 0.00
coefficient_high_hh_income_dummy_maint 0.188 733. 0.00 0.00
coefficient_individual_discretionary_tours_made_by_full_time_worker_business1 0.746 NA NA 0.00
coefficient_individual_discretionary_tours_made_by_full_time_worker_business2 0.764 NA NA 0.00
coefficient_individual_discretionary_tours_made_by_full_time_worker_eat 0.315 NA NA 0.00
coefficient_individual_discretionary_tours_made_by_full_time_worker_eat_business 1.30 NA NA 0.00
coefficient_individual_discretionary_tours_made_by_full_time_worker_maint 0.661 NA NA 0.00
coefficient_individual_discretionary_tours_made_by_part_time_worker_business1 0.0574 NA NA 0.00
coefficient_individual_discretionary_tours_made_by_part_time_worker_business2 2.15 NA NA 0.00
coefficient_individual_discretionary_tours_made_by_part_time_worker_eat 0.0341 NA NA 0.00
coefficient_individual_discretionary_tours_made_by_part_time_worker_eat_business 1.42 NA NA 0.00
coefficient_individual_discretionary_tours_made_by_part_time_worker_maint 1.02 NA NA 0.00
coefficient_individual_eating_out_tours_made_by_person_business1 0.264 NA NA 0.00
coefficient_individual_eating_out_tours_made_by_person_business2 1.15 NA NA 0.00
coefficient_individual_eating_out_tours_made_by_person_eat 0.232 NA NA 0.00
coefficient_individual_eating_out_tours_made_by_person_eat_business 1.42 NA NA 0.00
coefficient_individual_eating_out_tours_made_by_person_maint 1.13 NA NA 0.00
coefficient_log_of_the_work_tour_duration_business1 1.01 288. 0.00 0.00
coefficient_log_of_the_work_tour_duration_business2 1.77 288. 0.01 0.00
coefficient_log_of_the_work_tour_duration_eat 1.46 288. 0.01 0.00
coefficient_log_of_the_work_tour_duration_eat_business 3.45 288. 0.01 0.00
coefficient_log_of_the_work_tour_duration_maint 1.64 288. 0.01 0.00
coefficient_main_shop_escort_tours_allocated_to_full_time_worker_business1-0.182 NA NA 0.00
coefficient_main_shop_escort_tours_allocated_to_full_time_worker_business2-0.328 NA NA 0.00
coefficient_main_shop_escort_tours_allocated_to_full_time_worker_eat-0.0133 NA NA 0.00
coefficient_main_shop_escort_tours_allocated_to_full_time_worker_eat_business-0.788 NA NA 0.00
coefficient_main_shop_escort_tours_allocated_to_full_time_worker_maint 0.695 NA NA 0.00
coefficient_main_shop_escort_tours_allocated_to_part_time_worker_business1-0.00585 1.19e+03-0.00 0.00
coefficient_main_shop_escort_tours_allocated_to_part_time_worker_business2-0.445 1.19e+03-0.00 0.00
coefficient_main_shop_escort_tours_allocated_to_part_time_worker_eat-0.121 1.19e+03-0.00 0.00
coefficient_main_shop_escort_tours_allocated_to_part_time_worker_eat_business-1.17 1.19e+03-0.00 0.00
coefficient_main_shop_escort_tours_allocated_to_part_time_worker_maint 0.0885 1.19e+03 0.00 0.00
coefficient_medium_hh_income_dummy_business1 0.375 772. 0.00 0.00
coefficient_medium_hh_income_dummy_business2 1.38 772. 0.00 0.00
coefficient_medium_hh_income_dummy_eat 0.467 772. 0.00 0.00
coefficient_medium_hh_income_dummy_eat_business 1.37 772. 0.00 0.00
coefficient_medium_hh_income_dummy_maint-0.00582 772.-0.00 0.00
coefficient_participation_in_joint_discretionary_tours_business1 0.0757 3.02e+03 0.00 0.00
coefficient_participation_in_joint_discretionary_tours_business2-0.192 3.02e+03-0.00 0.00
coefficient_participation_in_joint_discretionary_tours_eat 0.455 3.02e+03 0.00 0.00
coefficient_participation_in_joint_discretionary_tours_eat_business-0.682 3.02e+03-0.00 0.00
coefficient_participation_in_joint_discretionary_tours_maint 0.588 3.02e+03 0.00 0.00
coefficient_participation_in_joint_shop_main_eat_tours_business1 0.151 1.04e+03 0.00 0.00
coefficient_participation_in_joint_shop_main_eat_tours_business2 0.232 1.04e+03 0.00 0.00
coefficient_participation_in_joint_shop_main_eat_tours_eat-0.0541 1.04e+03-0.00 0.00
coefficient_participation_in_joint_shop_main_eat_tours_eat_business 0.929 1.04e+03 0.00 0.00
coefficient_participation_in_joint_shop_main_eat_tours_maint-0.354 1.04e+03-0.00 0.00
coefficient_two_work_tours_by_person_business1 0.343 NA NA 0.00
coefficient_two_work_tours_by_person_business2 0.673 NA NA 0.00
coefficient_two_work_tours_by_person_eat-0.904 NA NA 0.00
coefficient_two_work_tours_by_person_eat_business-1.03 NA NA 0.00
coefficient_two_work_tours_by_person_maint 0.216 NA NA 0.00
coefficient_walk_accessibility_to_retail_for_work_taz_business1 0.00 0.00 NA 0.00fixed value
coefficient_walk_accessibility_to_retail_for_work_taz_business2 0.00 0.00 NA 0.00fixed value
coefficient_walk_accessibility_to_retail_for_work_taz_eat 0.0543 0.0307 1.77 0.00
coefficient_walk_accessibility_to_retail_for_work_taz_eat_business 0.248 0.125 1.98* 0.00
coefficient_walk_accessibility_to_retail_for_work_taz_maint 0.0513 0.0415 1.24 0.00
coefficient_workplace_suburban_area_dummy_business1-0.0770 695.-0.00 0.00
coefficient_workplace_suburban_area_dummy_business2-0.215 1.23e+03-0.00 0.00
coefficient_workplace_suburban_area_dummy_eat-0.497 235.-0.00 0.00
coefficient_workplace_suburban_area_dummy_eat_business-0.496 5.05e+03-0.00 0.00
coefficient_workplace_suburban_area_dummy_maint 0.00 0.00 NA 0.00fixed value
coefficient_workplace_urban_area_dummy_business1-0.0698 NA NA 0.00
coefficient_workplace_urban_area_dummy_business2-0.530 1.18e+03-0.00 0.00
coefficient_workplace_urban_area_dummy_eat-0.630 NA NA 0.00
coefficient_workplace_urban_area_dummy_eat_business-0.435 5.37e+03-0.00 0.00
coefficient_workplace_urban_area_dummy_maint-0.213 305.-0.00 0.00
coefficient_zero_cars_owned_by_hh_dummy_business1-0.634 0.312-2.03* 0.00
coefficient_zero_cars_owned_by_hh_dummy_business2 0.00 0.00 NA 0.00fixed value
coefficient_zero_cars_owned_by_hh_dummy_eat 0.00 0.00 NA 0.00fixed value
coefficient_zero_cars_owned_by_hh_dummy_eat_business-0.848 1.51-0.56 0.00
coefficient_zero_cars_owned_by_hh_dummy_maint-0.0208 0.253-0.08 0.00
\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 8, @@ -3597,18 +3566,7 @@ "cell_type": "code", "execution_count": 10, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "model.to_xlsx(\n", " result_dir/f\"{modelname}_model_estimation.xlsx\", \n", @@ -3660,31 +3618,31 @@ " \n", " 0\n", " coefficient_dummy_for_full_time_worker_business1\n", - " -11.365293\n", + " -7.402415\n", " F\n", " \n", " \n", " 1\n", " coefficient_dummy_for_full_time_worker_business2\n", - " -13.833915\n", + " -13.824988\n", " F\n", " \n", " \n", " 2\n", " coefficient_dummy_for_full_time_worker_eat\n", - " -9.545916\n", + " -7.551797\n", " F\n", " \n", " \n", " 3\n", " coefficient_dummy_for_full_time_worker_eat_bus...\n", - " -11.192172\n", + " -14.974823\n", " F\n", " \n", " \n", " 4\n", " coefficient_dummy_for_full_time_worker_maint\n", - " -5.880704\n", + " -8.063977\n", " F\n", " \n", " \n", @@ -3696,25 +3654,25 @@ " \n", " 127\n", " coefficient_at_work_sub_tour_asc_business2\n", - " -0.130778\n", + " -2.211281\n", " F\n", " \n", " \n", " 128\n", " coefficient_at_work_sub_tour_asc_eat\n", - " 5.809056\n", + " 0.440311\n", " F\n", " \n", " \n", " 129\n", " coefficient_at_work_sub_tour_asc_eat_business\n", - " -23.415363\n", + " -0.860366\n", " F\n", " \n", " \n", " 130\n", " coefficient_at_work_sub_tour_asc_maint\n", - " 12.910479\n", + " -0.423469\n", " F\n", " \n", " \n", @@ -3730,16 +3688,16 @@ ], "text/plain": [ " coefficient_name value constrain\n", - "0 coefficient_dummy_for_full_time_worker_business1 -11.365293 F\n", - "1 coefficient_dummy_for_full_time_worker_business2 -13.833915 F\n", - "2 coefficient_dummy_for_full_time_worker_eat -9.545916 F\n", - "3 coefficient_dummy_for_full_time_worker_eat_bus... -11.192172 F\n", - "4 coefficient_dummy_for_full_time_worker_maint -5.880704 F\n", + "0 coefficient_dummy_for_full_time_worker_business1 -7.402415 F\n", + "1 coefficient_dummy_for_full_time_worker_business2 -13.824988 F\n", + "2 coefficient_dummy_for_full_time_worker_eat -7.551797 F\n", + "3 coefficient_dummy_for_full_time_worker_eat_bus... -14.974823 F\n", + "4 coefficient_dummy_for_full_time_worker_maint -8.063977 F\n", ".. ... ... ...\n", - "127 coefficient_at_work_sub_tour_asc_business2 -0.130778 F\n", - "128 coefficient_at_work_sub_tour_asc_eat 5.809056 F\n", - "129 coefficient_at_work_sub_tour_asc_eat_business -23.415363 F\n", - "130 coefficient_at_work_sub_tour_asc_maint 12.910479 F\n", + "127 coefficient_at_work_sub_tour_asc_business2 -2.211281 F\n", + "128 coefficient_at_work_sub_tour_asc_eat 0.440311 F\n", + "129 coefficient_at_work_sub_tour_asc_eat_business -0.860366 F\n", + "130 coefficient_at_work_sub_tour_asc_maint -0.423469 F\n", "131 coefficient_at_work_sub_tour_asc_no_subtours 0.000000 T\n", "\n", "[132 rows x 3 columns]" @@ -3762,7 +3720,7 @@ "toc_visible": true }, "kernelspec": { - "display_name": "Python 3", + "display_name": "ESTER", "language": "python", "name": "python3" }, @@ -3776,7 +3734,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.10.15" }, "toc": { "base_numbering": 1, diff --git a/activitysim/examples/example_estimation/notebooks/19_atwork_subtour_dest.ipynb b/activitysim/examples/example_estimation/notebooks/19_atwork_subtour_dest.ipynb index a340efca7..5219560f6 100644 --- a/activitysim/examples/example_estimation/notebooks/19_atwork_subtour_dest.ipynb +++ b/activitysim/examples/example_estimation/notebooks/19_atwork_subtour_dest.ipynb @@ -26,30 +26,74 @@ "cell_type": "code", "execution_count": 1, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "JAX not found. Some functionality will be unavailable.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'larch': '6.0.32',\n", + " 'sharrow': '2.13.0',\n", + " 'numpy': '1.26.4',\n", + " 'pandas': '1.5.3',\n", + " 'xarray': '2024.3.0',\n", + " 'numba': '0.60.0'}" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "import larch # !conda install larch #for estimation\n", + "import larch as lx\n", "import pandas as pd\n", - "import numpy as np\n", - "import yaml \n", - "import larch.util.excel\n", - "import os" + "\n", + "lx.versions()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We'll work in our `test` directory, where ActivitySim has saved the estimation data bundles." + "For this demo, we will assume that you have already run ActivitySim in estimation\n", + "mode, and saved the required estimation data bundles (EDB's) to disk. See\n", + "the [first notebook](./01_estimation_mode.ipynb) for details. The following module\n", + "will run a script to set everything up if the example data is not already available." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "EDB directory already populated.\n" + ] + }, + { + "data": { + "text/plain": [ + "PosixPath('test-estimation-data/activitysim-prototype-mtc-extended')" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "os.chdir('test')" + "from est_mode_setup import prepare\n", + "\n", + "prepare()" ] }, { @@ -72,10 +116,27 @@ "cell_type": "code", "execution_count": 4, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "loading from output-est-mode/estimation_data_bundle/atwork_subtour_destination/atwork_subtour_destination_coefficients.csv\n", + "loading from output-est-mode/estimation_data_bundle/atwork_subtour_destination/atwork_subtour_destination_SPEC.csv\n", + "loading from output-est-mode/estimation_data_bundle/atwork_subtour_destination/atwork_subtour_destination_alternatives_combined.parquet\n", + "loading from output-est-mode/estimation_data_bundle/atwork_subtour_destination/atwork_subtour_destination_choosers_combined.parquet\n", + "loading from output-est-mode/estimation_data_bundle/atwork_subtour_destination/atwork_subtour_destination_landuse.csv\n", + "loading from output-est-mode/estimation_data_bundle/atwork_subtour_destination/atwork_subtour_destination_size_terms.csv\n" + ] + } + ], "source": [ "from activitysim.estimation.larch import component_model\n", - "model, data = component_model(modelname, return_data=True)" + "model, data = component_model(\n", + " modelname,\n", + " edb_directory=f\"output-est-mode/estimation_data_bundle/{modelname}/\",\n", + " return_data=True,\n", + ")" ] }, { @@ -236,148 +297,88 @@ " \n", " \n", " tour_id\n", - " variable\n", - " 1\n", - " 2\n", - " 3\n", - " 4\n", - " 5\n", - " 6\n", - " 7\n", - " 8\n", - " ...\n", - " 181\n", - " 182\n", - " 183\n", - " 184\n", - " 185\n", - " 186\n", - " 187\n", - " 188\n", - " 189\n", - " 190\n", + " alt_dest\n", + " util_distance_piecewise_linear_from_0_to_1_miles\n", + " util_distance_piecewise_linear_from_1_to_2_miles\n", + " util_distance_piecewise_linear_from_2_to_5_miles\n", + " util_distance_piecewise_linear_from_5_to_15_miles\n", + " util_distance_piecewise_linear_for_15_plus_miles\n", + " util_size_variable_atwork\n", + " util_no_attractions_atwork_size_variable_is_0\n", + " util_mode_choice_logsum\n", + " util_sample_of_alternatives_correction_factor\n", " \n", " \n", " \n", " \n", " 0\n", - " 2998927\n", - " util_distance_piecewise_linear_for_15_plus_miles\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " ...\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", + " 2966559\n", + " 4\n", + " 0.99\n", + " 0.00\n", + " 0.00\n", " 0.0\n", " 0.0\n", + " 7.026095\n", + " False\n", + " 14.641064\n", + " 3.669233\n", " \n", " \n", " 1\n", - " 2998927\n", - " util_distance_piecewise_linear_from_0_to_1_miles\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " ...\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", + " 2966559\n", + " 9\n", + " 1.00\n", + " 0.98\n", + " 0.00\n", + " 0.0\n", + " 0.0\n", + " 7.841204\n", + " False\n", + " 13.896585\n", + " 4.331944\n", " \n", " \n", " 2\n", - " 2998927\n", - " util_distance_piecewise_linear_from_1_to_2_miles\n", - " 1.0\n", - " 0.9299999475479126\n", - " 0.7599999904632568\n", - " 0.7699999809265137\n", - " 0.4700000286102295\n", - " 0.2799999713897705\n", - " 0.12000000476837158\n", - " 0.25999999046325684\n", - " ...\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", - " 1.0\n", + " 2966559\n", + " 11\n", + " 1.00\n", + " 0.35\n", + " 0.00\n", + " 0.0\n", + " 0.0\n", + " 7.778631\n", + " False\n", + " 14.171065\n", + " 3.202032\n", " \n", " \n", " 3\n", - " 2998927\n", - " util_distance_piecewise_linear_from_2_to_5_miles\n", - " 0.029999971389770508\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", + " 2966559\n", + " 12\n", + " 0.89\n", + " 0.00\n", + " 0.00\n", " 0.0\n", " 0.0\n", - " ...\n", - " 3.0\n", - " 3.0\n", - " 3.0\n", - " 3.0\n", - " 2.9600000381469727\n", - " 3.0\n", - " 3.0\n", - " 3.0\n", - " 3.0\n", - " 3.0\n", + " 7.385584\n", + " False\n", + " 14.520744\n", + " 4.616777\n", " \n", " \n", " 4\n", - " 2998927\n", - " util_distance_piecewise_linear_from_5_to_15_miles\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", + " 2966559\n", + " 14\n", + " 0.87\n", + " 0.00\n", + " 0.00\n", " 0.0\n", - " ...\n", - " 0.8899998664855957\n", - " 1.8000001907348633\n", - " 1.3299999237060547\n", - " 0.48999977111816406\n", " 0.0\n", - " 1.0799999237060547\n", - " 0.9899997711181641\n", - " 1.070000171661377\n", - " 1.929999828338623\n", - " 2.130000114440918\n", + " 6.755056\n", + " False\n", + " 14.588424\n", + " 4.538306\n", " \n", " \n", " ...\n", @@ -392,235 +393,188 @@ " ...\n", " ...\n", " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", " \n", " \n", - " 4171\n", - " 308000674\n", - " util_distance_piecewise_linear_from_5_to_15_miles\n", - " 1.4200000762939453\n", - " 1.3600001335144043\n", - " 1.2899999618530273\n", - " 1.1700000762939453\n", - " 0.9699997901916504\n", - " 0.9699997901916504\n", - " 0.809999942779541\n", - " 0.6100001335144043\n", - " ...\n", - " 0.75\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", + " 125546\n", + " 309112001\n", + " 1375\n", + " 1.00\n", + " 1.00\n", + " 1.38\n", " 0.0\n", " 0.0\n", + " 5.398090\n", + " False\n", + " 12.614690\n", + " 4.169279\n", + " \n", + " \n", + " 125547\n", + " 309112001\n", + " 1376\n", + " 1.00\n", + " 1.00\n", + " 0.95\n", " 0.0\n", " 0.0\n", + " 5.786087\n", + " False\n", + " 12.938050\n", + " 3.557811\n", + " \n", + " \n", + " 125548\n", + " 309112001\n", + " 1378\n", + " 1.00\n", + " 1.00\n", + " 0.76\n", " 0.0\n", " 0.0\n", + " 5.680807\n", + " False\n", + " 13.080930\n", + " 3.564348\n", " \n", " \n", - " 4172\n", - " 308000674\n", - " util_mode_choice_logsum\n", - " 1.743683315365601\n", - " 1.8090398438241646\n", - " 1.9187317689932244\n", - " 1.845763258455972\n", - " 1.9118565509402088\n", - " 2.070472775294134\n", - " 2.0749647025662954\n", - " 2.0765252832944836\n", - " ...\n", - " 1.4896400525368332\n", - " 1.9120295717956781\n", - " 1.9541420210552534\n", - " 1.9566568956436885\n", - " 2.1147517922008467\n", - " 2.110613932849587\n", - " 2.36614159716225\n", - " 2.675175002962727\n", - " 2.45867106695333\n", - " 2.161156410360593\n", - " \n", - " \n", - " 4173\n", - " 308000674\n", - " util_no_attractions_atwork_size_variable_is_0\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " ...\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", + " 125549\n", + " 309112001\n", + " 1380\n", + " 1.00\n", + " 1.00\n", + " 0.67\n", + " 0.0\n", + " 0.0\n", + " 6.972544\n", " False\n", + " 13.148609\n", + " 3.835276\n", " \n", " \n", - " 4174\n", - " 308000674\n", - " util_sample_of_alternatives_correction_factor\n", - " 5.621843324877587\n", - " 4.892390701697378\n", - " 6.41959006998515\n", - " 5.121864578661301\n", - " 4.0943304970661645\n", - " 5.6640922965207166\n", - " 4.849601771676099\n", - " 5.493466028204648\n", - " ...\n", - " 7.195735435552638\n", - " 6.66177523532048\n", - " 5.775893570617849\n", - " 5.627447629966182\n", - " 5.316640911769303\n", - " 5.484197717810032\n", - " 5.248188568415137\n", - " 3.3386531188982147\n", - " 7.377276636224848\n", - " 5.8249441461146\n", - " \n", - " \n", - " 4175\n", - " 308000674\n", - " util_size_variable_atwork\n", - " 6.577240859271166\n", - " 7.294423493874009\n", - " 5.752909090156044\n", - " 7.026094604325162\n", - " 8.012728626482545\n", - " 6.442966827027993\n", - " 7.224737382332969\n", - " 6.539973163879868\n", - " ...\n", - " 4.866333729879064\n", - " 5.1845549872093715\n", - " 5.945708525269778\n", - " 6.047381635266343\n", - " 6.06715626447492\n", - " 5.987948372605412\n", - " 5.730242629913322\n", - " 7.343549119396827\n", - " 3.6375335267623483\n", - " 5.304200029706192\n", + " 125550\n", + " 309112001\n", + " 1381\n", + " 1.00\n", + " 0.02\n", + " 0.00\n", + " 0.0\n", + " 0.0\n", + " 6.198092\n", + " False\n", + " 14.389409\n", + " 3.261637\n", " \n", " \n", "\n", - "

4176 rows × 192 columns

\n", + "

125551 rows × 11 columns

\n", "" ], "text/plain": [ - " tour_id variable \\\n", - "0 2998927 util_distance_piecewise_linear_for_15_plus_miles \n", - "1 2998927 util_distance_piecewise_linear_from_0_to_1_miles \n", - "2 2998927 util_distance_piecewise_linear_from_1_to_2_miles \n", - "3 2998927 util_distance_piecewise_linear_from_2_to_5_miles \n", - "4 2998927 util_distance_piecewise_linear_from_5_to_15_miles \n", - "... ... ... \n", - "4171 308000674 util_distance_piecewise_linear_from_5_to_15_miles \n", - "4172 308000674 util_mode_choice_logsum \n", - "4173 308000674 util_no_attractions_atwork_size_variable_is_0 \n", - "4174 308000674 util_sample_of_alternatives_correction_factor \n", - "4175 308000674 util_size_variable_atwork \n", + " tour_id alt_dest util_distance_piecewise_linear_from_0_to_1_miles \\\n", + "0 2966559 4 0.99 \n", + "1 2966559 9 1.00 \n", + "2 2966559 11 1.00 \n", + "3 2966559 12 0.89 \n", + "4 2966559 14 0.87 \n", + "... ... ... ... \n", + "125546 309112001 1375 1.00 \n", + "125547 309112001 1376 1.00 \n", + "125548 309112001 1378 1.00 \n", + "125549 309112001 1380 1.00 \n", + "125550 309112001 1381 1.00 \n", "\n", - " 1 2 3 \\\n", - "0 0.0 0.0 0.0 \n", - "1 1.0 1.0 1.0 \n", - "2 1.0 0.9299999475479126 0.7599999904632568 \n", - "3 0.029999971389770508 0.0 0.0 \n", - "4 0.0 0.0 0.0 \n", - "... ... ... ... \n", - "4171 1.4200000762939453 1.3600001335144043 1.2899999618530273 \n", - "4172 1.743683315365601 1.8090398438241646 1.9187317689932244 \n", - "4173 False False False \n", - "4174 5.621843324877587 4.892390701697378 6.41959006998515 \n", - "4175 6.577240859271166 7.294423493874009 5.752909090156044 \n", + " util_distance_piecewise_linear_from_1_to_2_miles \\\n", + "0 0.00 \n", + "1 0.98 \n", + "2 0.35 \n", + "3 0.00 \n", + "4 0.00 \n", + "... ... \n", + "125546 1.00 \n", + "125547 1.00 \n", + "125548 1.00 \n", + "125549 1.00 \n", + "125550 0.02 \n", "\n", - " 4 5 6 \\\n", - "0 0.0 0.0 0.0 \n", - "1 1.0 1.0 1.0 \n", - "2 0.7699999809265137 0.4700000286102295 0.2799999713897705 \n", - "3 0.0 0.0 0.0 \n", - "4 0.0 0.0 0.0 \n", - "... ... ... ... \n", - "4171 1.1700000762939453 0.9699997901916504 0.9699997901916504 \n", - "4172 1.845763258455972 1.9118565509402088 2.070472775294134 \n", - "4173 False False False \n", - "4174 5.121864578661301 4.0943304970661645 5.6640922965207166 \n", - "4175 7.026094604325162 8.012728626482545 6.442966827027993 \n", + " util_distance_piecewise_linear_from_2_to_5_miles \\\n", + "0 0.00 \n", + "1 0.00 \n", + "2 0.00 \n", + "3 0.00 \n", + "4 0.00 \n", + "... ... \n", + "125546 1.38 \n", + "125547 0.95 \n", + "125548 0.76 \n", + "125549 0.67 \n", + "125550 0.00 \n", "\n", - " 7 8 ... 181 \\\n", - "0 0.0 0.0 ... 0.0 \n", - "1 1.0 1.0 ... 1.0 \n", - "2 0.12000000476837158 0.25999999046325684 ... 1.0 \n", - "3 0.0 0.0 ... 3.0 \n", - "4 0.0 0.0 ... 0.8899998664855957 \n", - "... ... ... ... ... \n", - "4171 0.809999942779541 0.6100001335144043 ... 0.75 \n", - "4172 2.0749647025662954 2.0765252832944836 ... 1.4896400525368332 \n", - "4173 False False ... False \n", - "4174 4.849601771676099 5.493466028204648 ... 7.195735435552638 \n", - "4175 7.224737382332969 6.539973163879868 ... 4.866333729879064 \n", + " util_distance_piecewise_linear_from_5_to_15_miles \\\n", + "0 0.0 \n", + "1 0.0 \n", + "2 0.0 \n", + "3 0.0 \n", + "4 0.0 \n", + "... ... \n", + "125546 0.0 \n", + "125547 0.0 \n", + "125548 0.0 \n", + "125549 0.0 \n", + "125550 0.0 \n", "\n", - " 182 183 184 \\\n", - "0 0.0 0.0 0.0 \n", - "1 1.0 1.0 1.0 \n", - "2 1.0 1.0 1.0 \n", - "3 3.0 3.0 3.0 \n", - "4 1.8000001907348633 1.3299999237060547 0.48999977111816406 \n", - "... ... ... ... \n", - "4171 0.0 0.0 0.0 \n", - "4172 1.9120295717956781 1.9541420210552534 1.9566568956436885 \n", - "4173 False False False \n", - "4174 6.66177523532048 5.775893570617849 5.627447629966182 \n", - "4175 5.1845549872093715 5.945708525269778 6.047381635266343 \n", + " util_distance_piecewise_linear_for_15_plus_miles \\\n", + "0 0.0 \n", + "1 0.0 \n", + "2 0.0 \n", + "3 0.0 \n", + "4 0.0 \n", + "... ... \n", + "125546 0.0 \n", + "125547 0.0 \n", + "125548 0.0 \n", + "125549 0.0 \n", + "125550 0.0 \n", "\n", - " 185 186 187 \\\n", - "0 0.0 0.0 0.0 \n", - "1 1.0 1.0 1.0 \n", - "2 1.0 1.0 1.0 \n", - "3 2.9600000381469727 3.0 3.0 \n", - "4 0.0 1.0799999237060547 0.9899997711181641 \n", - "... ... ... ... \n", - "4171 0.0 0.0 0.0 \n", - "4172 2.1147517922008467 2.110613932849587 2.36614159716225 \n", - "4173 False False False \n", - "4174 5.316640911769303 5.484197717810032 5.248188568415137 \n", - "4175 6.06715626447492 5.987948372605412 5.730242629913322 \n", + " util_size_variable_atwork \\\n", + "0 7.026095 \n", + "1 7.841204 \n", + "2 7.778631 \n", + "3 7.385584 \n", + "4 6.755056 \n", + "... ... \n", + "125546 5.398090 \n", + "125547 5.786087 \n", + "125548 5.680807 \n", + "125549 6.972544 \n", + "125550 6.198092 \n", "\n", - " 188 189 190 \n", - "0 0.0 0.0 0.0 \n", - "1 1.0 1.0 1.0 \n", - "2 1.0 1.0 1.0 \n", - "3 3.0 3.0 3.0 \n", - "4 1.070000171661377 1.929999828338623 2.130000114440918 \n", - "... ... ... ... \n", - "4171 0.0 0.0 0.0 \n", - "4172 2.675175002962727 2.45867106695333 2.161156410360593 \n", - "4173 False False False \n", - "4174 3.3386531188982147 7.377276636224848 5.8249441461146 \n", - "4175 7.343549119396827 3.6375335267623483 5.304200029706192 \n", + " util_no_attractions_atwork_size_variable_is_0 \\\n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "... ... \n", + "125546 False \n", + "125547 False \n", + "125548 False \n", + "125549 False \n", + "125550 False \n", "\n", - "[4176 rows x 192 columns]" + " util_mode_choice_logsum util_sample_of_alternatives_correction_factor \n", + "0 14.641064 3.669233 \n", + "1 13.896585 4.331944 \n", + "2 14.171065 3.202032 \n", + "3 14.520744 4.616777 \n", + "4 14.588424 4.538306 \n", + "... ... ... \n", + "125546 12.614690 4.169279 \n", + "125547 12.938050 3.557811 \n", + "125548 13.080930 3.564348 \n", + "125549 13.148609 3.835276 \n", + "125550 14.389409 3.261637 \n", + "\n", + "[125551 rows x 11 columns]" ] }, "execution_count": 6, @@ -676,47 +630,47 @@ " \n", " \n", " 0\n", - " 2998927\n", - " 114\n", - " 115.0\n", - " 73144\n", - " 77\n", + " 2966559\n", + " 17\n", + " 109\n", + " 72355\n", + " 17\n", " 1\n", " \n", " \n", " 1\n", - " 3060326\n", - " 83\n", - " 83.0\n", - " 74642\n", - " 165\n", + " 3046632\n", + " 1\n", + " 13\n", + " 74308\n", + " 14\n", " 1\n", " \n", " \n", " 2\n", - " 4422879\n", - " 164\n", - " 164.0\n", - " 107875\n", - " 161\n", + " 3048108\n", + " 11\n", + " 5\n", + " 74344\n", + " 106\n", " 1\n", " \n", " \n", " 3\n", - " 4440282\n", - " 75\n", - " 76.0\n", - " 108299\n", - " 112\n", + " 3177463\n", + " 355\n", + " 355\n", + " 77499\n", + " 355\n", " 1\n", " \n", " \n", " 4\n", - " 4496780\n", - " 34\n", - " 27.0\n", - " 109677\n", - " 181\n", + " 3191832\n", + " 309\n", + " 308\n", + " 77849\n", + " 309\n", " 1\n", " \n", " \n", @@ -729,83 +683,83 @@ " ...\n", " \n", " \n", - " 459\n", - " 302923726\n", - " 71\n", - " 71.0\n", - " 7388383\n", - " 36\n", - " 4\n", + " 6031\n", + " 308156004\n", + " 323\n", + " 323\n", + " 7516000\n", + " 323\n", + " 1\n", " \n", " \n", - " 460\n", - " 302942567\n", - " 87\n", - " 87.0\n", - " 7388843\n", - " 42\n", - " 4\n", + " 6032\n", + " 308227650\n", + " 583\n", + " 582\n", + " 7517747\n", + " 573\n", + " 1\n", " \n", " \n", - " 461\n", - " 302942627\n", - " 67\n", - " 67.0\n", - " 7388844\n", - " 17\n", - " 4\n", + " 6033\n", + " 308260103\n", + " 539\n", + " 606\n", + " 7518539\n", + " 407\n", + " 1\n", " \n", " \n", - " 462\n", - " 305120465\n", - " 130\n", - " 130.0\n", - " 7441962\n", - " 127\n", - " 4\n", + " 6034\n", + " 309080718\n", + " 21\n", + " 70\n", + " 7538554\n", + " 7\n", + " 1\n", " \n", " \n", - " 463\n", - " 308000674\n", - " 17\n", - " 16.0\n", - " 7512211\n", - " 162\n", + " 6035\n", + " 309112001\n", + " 1380\n", + " 1381\n", + " 7539317\n", + " 1381\n", " 1\n", " \n", " \n", "\n", - "

464 rows × 6 columns

\n", + "

6036 rows × 6 columns

\n", "" ], "text/plain": [ - " tour_id model_choice override_choice person_id workplace_zone_id \\\n", - "0 2998927 114 115.0 73144 77 \n", - "1 3060326 83 83.0 74642 165 \n", - "2 4422879 164 164.0 107875 161 \n", - "3 4440282 75 76.0 108299 112 \n", - "4 4496780 34 27.0 109677 181 \n", - ".. ... ... ... ... ... \n", - "459 302923726 71 71.0 7388383 36 \n", - "460 302942567 87 87.0 7388843 42 \n", - "461 302942627 67 67.0 7388844 17 \n", - "462 305120465 130 130.0 7441962 127 \n", - "463 308000674 17 16.0 7512211 162 \n", + " tour_id model_choice override_choice person_id workplace_zone_id \\\n", + "0 2966559 17 109 72355 17 \n", + "1 3046632 1 13 74308 14 \n", + "2 3048108 11 5 74344 106 \n", + "3 3177463 355 355 77499 355 \n", + "4 3191832 309 308 77849 309 \n", + "... ... ... ... ... ... \n", + "6031 308156004 323 323 7516000 323 \n", + "6032 308227650 583 582 7517747 573 \n", + "6033 308260103 539 606 7518539 407 \n", + "6034 309080718 21 70 7538554 7 \n", + "6035 309112001 1380 1381 7539317 1381 \n", "\n", - " income_segment \n", - "0 1 \n", - "1 1 \n", - "2 1 \n", - "3 1 \n", - "4 1 \n", - ".. ... \n", - "459 4 \n", - "460 4 \n", - "461 4 \n", - "462 4 \n", - "463 1 \n", + " income_segment \n", + "0 1 \n", + "1 1 \n", + "2 1 \n", + "3 1 \n", + "4 1 \n", + "... ... \n", + "6031 1 \n", + "6032 1 \n", + "6033 1 \n", + "6034 1 \n", + "6035 1 \n", "\n", - "[464 rows x 6 columns]" + "[6036 rows x 6 columns]" ] }, "execution_count": 7, @@ -912,9 +866,9 @@ " 7\n", " ...\n", " 0\n", + " 0.0\n", " 0.00000\n", - " 0.00000\n", - " 0.00000\n", + " 0.0\n", " 3\n", " 5.89564\n", " 2.875000\n", @@ -936,9 +890,9 @@ " 19\n", " ...\n", " 0\n", + " 0.0\n", " 0.00000\n", - " 0.00000\n", - " 0.00000\n", + " 0.0\n", " 1\n", " 5.84871\n", " 5.195214\n", @@ -960,9 +914,9 @@ " 38\n", " ...\n", " 0\n", + " 0.0\n", " 0.00000\n", - " 0.00000\n", - " 0.00000\n", + " 0.0\n", " 1\n", " 5.53231\n", " 80.470405\n", @@ -984,9 +938,9 @@ " 20\n", " ...\n", " 0\n", + " 0.0\n", " 0.00000\n", - " 0.00000\n", - " 0.00000\n", + " 0.0\n", " 2\n", " 5.64330\n", " 7.947368\n", @@ -1008,9 +962,9 @@ " 86\n", " ...\n", " 0\n", - " 0.00000\n", + " 0.0\n", " 72.14684\n", - " 0.00000\n", + " 0.0\n", " 1\n", " 5.52555\n", " 38.187500\n", @@ -1043,188 +997,188 @@ " ...\n", " \n", " \n", - " 186\n", - " 4\n", - " 4\n", - " 1\n", - " 2779\n", - " 8062\n", - " 376.0\n", - " 172.0\n", - " 15.00000\n", - " 1760\n", - " 1178\n", + " 1450\n", + " 34\n", + " 34\n", + " 9\n", + " 2724\n", + " 6493\n", + " 1320.0\n", + " 630.0\n", + " 69.00000\n", + " 1046\n", + " 1013\n", " ...\n", - " 3\n", - " 0.00000\n", - " 0.00000\n", + " 4\n", + " 0.0\n", " 0.00000\n", + " 0.0\n", " 1\n", - " 2.04173\n", - " 14.860963\n", - " 9.411765\n", - " 5.762347\n", + " 1.12116\n", + " 3.896996\n", + " 1.496423\n", + " 1.081235\n", " False\n", " \n", " \n", - " 187\n", - " 4\n", - " 4\n", - " 1\n", - " 1492\n", - " 4139\n", - " 214.0\n", - " 116.0\n", - " 10.00000\n", - " 808\n", - " 603\n", + " 1451\n", + " 34\n", + " 34\n", + " 9\n", + " 2016\n", + " 4835\n", + " 664.0\n", + " 379.0\n", + " 43.00000\n", + " 757\n", + " 757\n", " ...\n", - " 3\n", - " 0.00000\n", - " 0.00000\n", + " 4\n", + " 0.0\n", " 0.00000\n", - " 2\n", - " 1.73676\n", - " 11.841270\n", - " 6.412698\n", - " 4.159890\n", + " 0.0\n", + " 1\n", + " 1.17116\n", + " 4.777251\n", + " 1.793839\n", + " 1.304140\n", " False\n", " \n", " \n", - " 188\n", - " 4\n", - " 4\n", - " 1\n", - " 753\n", - " 4072\n", - " 232.0\n", - " 11.0\n", - " 178.00000\n", - " 4502\n", - " 1117\n", + " 1452\n", + " 34\n", + " 34\n", + " 9\n", + " 2178\n", + " 5055\n", + " 1068.0\n", + " 602.0\n", + " 35.00000\n", + " 2110\n", + " 789\n", " ...\n", - " 2\n", - " 3961.04761\n", - " 17397.79102\n", - " 11152.93652\n", + " 4\n", + " 0.0\n", + " 0.00000\n", + " 0.0\n", " 1\n", - " 2.28992\n", - " 3.984127\n", - " 23.820106\n", - " 3.413233\n", + " 1.17587\n", + " 3.419152\n", + " 3.312402\n", + " 1.682465\n", " False\n", " \n", " \n", - " 189\n", - " 4\n", - " 4\n", - " 1\n", - " 3546\n", - " 8476\n", - " 201.0\n", - " 72.0\n", - " 6.00000\n", - " 226\n", - " 1057\n", + " 1453\n", + " 34\n", + " 34\n", + " 9\n", + " 298\n", + " 779\n", + " 14195.0\n", + " 429.0\n", + " 4.00000\n", + " 922\n", + " 88\n", " ...\n", - " 2\n", - " 0.00000\n", - " 0.00000\n", + " 5\n", + " 0.0\n", " 0.00000\n", + " 0.0\n", " 1\n", - " 2.88773\n", - " 45.461538\n", - " 2.897436\n", - " 2.723836\n", + " 1.01972\n", + " 0.688222\n", + " 2.129330\n", + " 0.520115\n", " False\n", " \n", " \n", - " 190\n", - " 4\n", - " 4\n", - " 1\n", - " 968\n", - " 1647\n", - " 1381.0\n", - " 14.0\n", - " 28.00000\n", - " 1010\n", - " 114\n", + " 1454\n", + " 34\n", + " 34\n", + " 9\n", + " 1068\n", + " 2337\n", + " 10469.0\n", + " 1114.0\n", + " 27.00000\n", + " 607\n", + " 418\n", " ...\n", - " 3\n", - " 0.00000\n", - " 0.00000\n", + " 5\n", + " 0.0\n", " 0.00000\n", + " 0.0\n", " 1\n", - " 2.60309\n", - " 23.047619\n", - " 24.047619\n", - " 11.768501\n", + " 0.95542\n", + " 0.936021\n", + " 0.531989\n", + " 0.339203\n", " False\n", " \n", " \n", "\n", - "

190 rows × 28 columns

\n", + "

1454 rows × 28 columns

\n", "" ], "text/plain": [ - " DISTRICT SD county_id TOTHH TOTPOP TOTACRE RESACRE CIACRE \\\n", - "zone_id \n", - "1 1 1 1 46 82 20.3 1.0 15.00000 \n", - "2 1 1 1 134 240 31.1 1.0 24.79297 \n", - "3 1 1 1 267 476 14.7 1.0 2.31799 \n", - "4 1 1 1 151 253 19.3 1.0 18.00000 \n", - "5 1 1 1 611 1069 52.7 1.0 15.00000 \n", - "... ... .. ... ... ... ... ... ... \n", - "186 4 4 1 2779 8062 376.0 172.0 15.00000 \n", - "187 4 4 1 1492 4139 214.0 116.0 10.00000 \n", - "188 4 4 1 753 4072 232.0 11.0 178.00000 \n", - "189 4 4 1 3546 8476 201.0 72.0 6.00000 \n", - "190 4 4 1 968 1647 1381.0 14.0 28.00000 \n", + " DISTRICT SD county_id TOTHH TOTPOP TOTACRE RESACRE CIACRE \\\n", + "zone_id \n", + "1 1 1 1 46 82 20.3 1.0 15.00000 \n", + "2 1 1 1 134 240 31.1 1.0 24.79297 \n", + "3 1 1 1 267 476 14.7 1.0 2.31799 \n", + "4 1 1 1 151 253 19.3 1.0 18.00000 \n", + "5 1 1 1 611 1069 52.7 1.0 15.00000 \n", + "... ... .. ... ... ... ... ... ... \n", + "1450 34 34 9 2724 6493 1320.0 630.0 69.00000 \n", + "1451 34 34 9 2016 4835 664.0 379.0 43.00000 \n", + "1452 34 34 9 2178 5055 1068.0 602.0 35.00000 \n", + "1453 34 34 9 298 779 14195.0 429.0 4.00000 \n", + "1454 34 34 9 1068 2337 10469.0 1114.0 27.00000 \n", "\n", - " TOTEMP AGE0519 ... area_type HSENROLL COLLFTE \\\n", - "zone_id ... \n", - "1 27318 7 ... 0 0.00000 0.00000 \n", - "2 42078 19 ... 0 0.00000 0.00000 \n", - "3 2445 38 ... 0 0.00000 0.00000 \n", - "4 22434 20 ... 0 0.00000 0.00000 \n", - "5 15662 86 ... 0 0.00000 72.14684 \n", - "... ... ... ... ... ... ... \n", - "186 1760 1178 ... 3 0.00000 0.00000 \n", - "187 808 603 ... 3 0.00000 0.00000 \n", - "188 4502 1117 ... 2 3961.04761 17397.79102 \n", - "189 226 1057 ... 2 0.00000 0.00000 \n", - "190 1010 114 ... 3 0.00000 0.00000 \n", + " TOTEMP AGE0519 ... area_type HSENROLL COLLFTE COLLPTE \\\n", + "zone_id ... \n", + "1 27318 7 ... 0 0.0 0.00000 0.0 \n", + "2 42078 19 ... 0 0.0 0.00000 0.0 \n", + "3 2445 38 ... 0 0.0 0.00000 0.0 \n", + "4 22434 20 ... 0 0.0 0.00000 0.0 \n", + "5 15662 86 ... 0 0.0 72.14684 0.0 \n", + "... ... ... ... ... ... ... ... \n", + "1450 1046 1013 ... 4 0.0 0.00000 0.0 \n", + "1451 757 757 ... 4 0.0 0.00000 0.0 \n", + "1452 2110 789 ... 4 0.0 0.00000 0.0 \n", + "1453 922 88 ... 5 0.0 0.00000 0.0 \n", + "1454 607 418 ... 5 0.0 0.00000 0.0 \n", "\n", - " COLLPTE TOPOLOGY TERMINAL household_density \\\n", - "zone_id \n", - "1 0.00000 3 5.89564 2.875000 \n", - "2 0.00000 1 5.84871 5.195214 \n", - "3 0.00000 1 5.53231 80.470405 \n", - "4 0.00000 2 5.64330 7.947368 \n", - "5 0.00000 1 5.52555 38.187500 \n", - "... ... ... ... ... \n", - "186 0.00000 1 2.04173 14.860963 \n", - "187 0.00000 2 1.73676 11.841270 \n", - "188 11152.93652 1 2.28992 3.984127 \n", - "189 0.00000 1 2.88773 45.461538 \n", - "190 0.00000 1 2.60309 23.047619 \n", + " TOPOLOGY TERMINAL household_density employment_density \\\n", + "zone_id \n", + "1 3 5.89564 2.875000 1707.375000 \n", + "2 1 5.84871 5.195214 1631.374751 \n", + "3 1 5.53231 80.470405 736.891913 \n", + "4 2 5.64330 7.947368 1180.736842 \n", + "5 1 5.52555 38.187500 978.875000 \n", + "... ... ... ... ... \n", + "1450 1 1.12116 3.896996 1.496423 \n", + "1451 1 1.17116 4.777251 1.793839 \n", + "1452 1 1.17587 3.419152 3.312402 \n", + "1453 1 1.01972 0.688222 2.129330 \n", + "1454 1 0.95542 0.936021 0.531989 \n", "\n", - " employment_density density_index is_cbd \n", - "zone_id \n", - "1 1707.375000 2.870167 False \n", - "2 1631.374751 5.178722 False \n", - "3 736.891913 72.547987 False \n", - "4 1180.736842 7.894233 False \n", - "5 978.875000 36.753679 False \n", - "... ... ... ... \n", - "186 9.411765 5.762347 False \n", - "187 6.412698 4.159890 False \n", - "188 23.820106 3.413233 False \n", - "189 2.897436 2.723836 False \n", - "190 24.047619 11.768501 False \n", + " density_index is_cbd \n", + "zone_id \n", + "1 2.870167 False \n", + "2 5.178722 False \n", + "3 72.547987 False \n", + "4 7.894233 False \n", + "5 36.753679 False \n", + "... ... ... \n", + "1450 1.081235 False \n", + "1451 1.304140 False \n", + "1452 1.682465 False \n", + "1453 0.520115 False \n", + "1454 0.339203 False \n", "\n", - "[190 rows x 28 columns]" + "[1454 rows x 28 columns]" ] }, "execution_count": 8, @@ -1472,14 +1426,210 @@ "name": "stderr", "output_type": "stream", "text": [ - "req_data does not request avail_ca or avail_co but it is set and being provided\n", - "converting data_ca to \n" + "problem: nan_utility has (31 issues)\n" ] }, + { + "data": { + "text/plain": [ + "(,\n", + " ┣ nan_utility: n\n", + " ┃ dummy_zone_id \n", + " ┃ 1 0\n", + " ┃ 2 0\n", + " ┃ 3 1\n", + " ┃ 4 5\n", + " ┃ 5 8\n", + " ┃ 6 9\n", + " ┃ 7 16\n", + " ┃ 8 43\n", + " ┃ 9 85\n", + " ┃ 10 138\n", + " ┃ 11 213\n", + " ┃ 12 306\n", + " ┃ 13 442\n", + " ┃ 14 615\n", + " ┃ 15 797\n", + " ┃ 16 1002\n", + " ┃ 17 1252\n", + " ┃ 18 1514\n", + " ┃ 19 1770\n", + " ┃ 20 2079\n", + " ┃ 21 2469\n", + " ┃ 22 2891\n", + " ┃ 23 3383\n", + " ┃ 24 3930\n", + " ┃ 25 4447\n", + " ┃ 26 4974\n", + " ┃ 27 5449\n", + " ┃ 28 5766\n", + " ┃ 29 5925\n", + " ┃ 30 6004\n", + " ┃ 31 6032)" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.doctor(repair_nan_utility=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
LabelDescriptionExpressionatwork
0util_distance_piecewise_linear_from_0_to_1_milesDistance, piecewise linear from 0 to 1 miles@skims['DIST'].clip(0,1)coef_distance_piecewise_linear_from_0_to_1_miles
1util_distance_piecewise_linear_from_1_to_2_milesDistance, piecewise linear from 1 to 2 miles@(skims['DIST']-1).clip(0,1)coef_distance_piecewise_linear_from_1_to_2_miles
2util_distance_piecewise_linear_from_2_to_5_milesDistance, piecewise linear from 2 to 5 miles@(skims['DIST']-2).clip(0,3)coef_distance_piecewise_linear_from_2_to_5_miles
3util_distance_piecewise_linear_from_5_to_15_milesDistance, piecewise linear from 5 to 15 miles@(skims['DIST']-5).clip(0,10)coef_distance_piecewise_linear_from_5_to_15_miles
4util_distance_piecewise_linear_for_15_plus_milesDistance, piecewise linear for 15+ miles@(skims['DIST']-15.0).clip(0)coef_distance_piecewise_linear_for_15_plus_miles
5util_no_attractions_atwork_size_variable_is_0No attractions, atwork size_term variable is 0size_term==0coef_no_attractions_atwork_size_variable_is_0
6util_mode_choice_logsumMode choice logsummode_choice_logsumcoef_mode_choice_logsum
7util_sample_of_alternatives_correction_factorSample of alternatives correction factor@np.minimum(np.log(df.pick_count/df.prob), 60)coef_sample_of_alternatives_correction_factor
\n", + "
" + ], + "text/plain": [ + " Label \\\n", + "0 util_distance_piecewise_linear_from_0_to_1_miles \n", + "1 util_distance_piecewise_linear_from_1_to_2_miles \n", + "2 util_distance_piecewise_linear_from_2_to_5_miles \n", + "3 util_distance_piecewise_linear_from_5_to_15_miles \n", + "4 util_distance_piecewise_linear_for_15_plus_miles \n", + "5 util_no_attractions_atwork_size_variable_is_0 \n", + "6 util_mode_choice_logsum \n", + "7 util_sample_of_alternatives_correction_factor \n", + "\n", + " Description \\\n", + "0 Distance, piecewise linear from 0 to 1 miles \n", + "1 Distance, piecewise linear from 1 to 2 miles \n", + "2 Distance, piecewise linear from 2 to 5 miles \n", + "3 Distance, piecewise linear from 5 to 15 miles \n", + "4 Distance, piecewise linear for 15+ miles \n", + "5 No attractions, atwork size_term variable is 0 \n", + "6 Mode choice logsum \n", + "7 Sample of alternatives correction factor \n", + "\n", + " Expression \\\n", + "0 @skims['DIST'].clip(0,1) \n", + "1 @(skims['DIST']-1).clip(0,1) \n", + "2 @(skims['DIST']-2).clip(0,3) \n", + "3 @(skims['DIST']-5).clip(0,10) \n", + "4 @(skims['DIST']-15.0).clip(0) \n", + "5 size_term==0 \n", + "6 mode_choice_logsum \n", + "7 @np.minimum(np.log(df.pick_count/df.prob), 60) \n", + "\n", + " atwork \n", + "0 coef_distance_piecewise_linear_from_0_to_1_miles \n", + "1 coef_distance_piecewise_linear_from_1_to_2_miles \n", + "2 coef_distance_piecewise_linear_from_2_to_5_miles \n", + "3 coef_distance_piecewise_linear_from_5_to_15_miles \n", + "4 coef_distance_piecewise_linear_for_15_plus_miles \n", + "5 coef_no_attractions_atwork_size_variable_is_0 \n", + "6 coef_mode_choice_logsum \n", + "7 coef_sample_of_alternatives_correction_factor " + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data.spec" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ { "data": { "text/html": [ - "

Iteration 008 [Optimization terminated successfully.]

" + "

Iteration 006 [Optimization terminated successfully]

" ], "text/plain": [ "" @@ -1491,7 +1641,7 @@ { "data": { "text/html": [ - "

Best LL = -2329.8700459477177

" + "

Best LL = -12720.40641937967

" ], "text/plain": [ "" @@ -1522,213 +1672,190 @@ " \n", " \n", " value\n", + " best\n", " initvalue\n", - " nullvalue\n", " minimum\n", " maximum\n", + " nullvalue\n", " holdfast\n", - " note\n", - " best\n", + " \n", + " \n", + " param_name\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " atwork_HEREMPN\n", - " -1.707324\n", + " -1.371795\n", + " -1.371795\n", " -1.354796\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -1.707324\n", " \n", " \n", " atwork_RETEMPN\n", " -0.298406\n", " -0.298406\n", + " -0.298406\n", + " -0.298406\n", + " -0.298406\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 1\n", - " \n", - " -0.298406\n", " \n", " \n", " coef_distance_piecewise_linear_for_15_plus_miles\n", + " -0.326384\n", + " -0.326384\n", " -0.204500\n", - " -0.204500\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.204500\n", " \n", " \n", " coef_distance_piecewise_linear_from_0_to_1_miles\n", - " -1.364154\n", + " -0.840401\n", + " -0.840401\n", " -0.792600\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -1.364154\n", " \n", " \n", " coef_distance_piecewise_linear_from_1_to_2_miles\n", - " -0.739532\n", + " -0.905173\n", + " -0.905173\n", " -0.792600\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.739532\n", " \n", " \n", " coef_distance_piecewise_linear_from_2_to_5_miles\n", - " -0.504526\n", + " -0.577554\n", + " -0.577554\n", " -0.519700\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.504526\n", " \n", " \n", " coef_distance_piecewise_linear_from_5_to_15_miles\n", - " -0.073403\n", + " -0.193532\n", + " -0.193532\n", " -0.204500\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.073403\n", " \n", " \n", " coef_mode_choice_logsum\n", - " 0.503271\n", + " 0.403737\n", + " 0.403737\n", " 0.513600\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.503271\n", " \n", " \n", " coef_no_attractions_atwork_size_variable_is_0\n", " -999.000000\n", " -999.000000\n", + " -999.000000\n", + " -999.000000\n", + " -999.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 1\n", - " \n", - " -999.000000\n", " \n", " \n", " coef_sample_of_alternatives_correction_factor\n", " 1.000000\n", " 1.000000\n", + " 1.000000\n", + " 1.000000\n", + " 1.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 1\n", - " \n", - " 1.000000\n", " \n", " \n", "\n", "" ], "text/plain": [ - " value initvalue \\\n", - "atwork_HEREMPN -1.707324 -1.354796 \n", + " value best \\\n", + "param_name \n", + "atwork_HEREMPN -1.371795 -1.371795 \n", "atwork_RETEMPN -0.298406 -0.298406 \n", - "coef_distance_piecewise_linear_for_15_plus_miles -0.204500 -0.204500 \n", - "coef_distance_piecewise_linear_from_0_to_1_miles -1.364154 -0.792600 \n", - "coef_distance_piecewise_linear_from_1_to_2_miles -0.739532 -0.792600 \n", - "coef_distance_piecewise_linear_from_2_to_5_miles -0.504526 -0.519700 \n", - "coef_distance_piecewise_linear_from_5_to_15_miles -0.073403 -0.204500 \n", - "coef_mode_choice_logsum 0.503271 0.513600 \n", + "coef_distance_piecewise_linear_for_15_plus_miles -0.326384 -0.326384 \n", + "coef_distance_piecewise_linear_from_0_to_1_miles -0.840401 -0.840401 \n", + "coef_distance_piecewise_linear_from_1_to_2_miles -0.905173 -0.905173 \n", + "coef_distance_piecewise_linear_from_2_to_5_miles -0.577554 -0.577554 \n", + "coef_distance_piecewise_linear_from_5_to_15_miles -0.193532 -0.193532 \n", + "coef_mode_choice_logsum 0.403737 0.403737 \n", "coef_no_attractions_atwork_size_variable_is_0 -999.000000 -999.000000 \n", "coef_sample_of_alternatives_correction_factor 1.000000 1.000000 \n", "\n", - " nullvalue minimum \\\n", - "atwork_HEREMPN 0.0 -6.0 \n", - "atwork_RETEMPN 0.0 -6.0 \n", - "coef_distance_piecewise_linear_for_15_plus_miles 0.0 NaN \n", - "coef_distance_piecewise_linear_from_0_to_1_miles 0.0 NaN \n", - "coef_distance_piecewise_linear_from_1_to_2_miles 0.0 NaN \n", - "coef_distance_piecewise_linear_from_2_to_5_miles 0.0 NaN \n", - "coef_distance_piecewise_linear_from_5_to_15_miles 0.0 NaN \n", - "coef_mode_choice_logsum 0.0 NaN \n", - "coef_no_attractions_atwork_size_variable_is_0 0.0 NaN \n", - "coef_sample_of_alternatives_correction_factor 0.0 NaN \n", + " initvalue minimum \\\n", + "param_name \n", + "atwork_HEREMPN -1.354796 -6.000000 \n", + "atwork_RETEMPN -0.298406 -0.298406 \n", + "coef_distance_piecewise_linear_for_15_plus_miles -0.204500 -25.000000 \n", + "coef_distance_piecewise_linear_from_0_to_1_miles -0.792600 -25.000000 \n", + "coef_distance_piecewise_linear_from_1_to_2_miles -0.792600 -25.000000 \n", + "coef_distance_piecewise_linear_from_2_to_5_miles -0.519700 -25.000000 \n", + "coef_distance_piecewise_linear_from_5_to_15_miles -0.204500 -25.000000 \n", + "coef_mode_choice_logsum 0.513600 -25.000000 \n", + "coef_no_attractions_atwork_size_variable_is_0 -999.000000 -999.000000 \n", + "coef_sample_of_alternatives_correction_factor 1.000000 1.000000 \n", "\n", - " maximum holdfast note \\\n", - "atwork_HEREMPN 6.0 0 \n", - "atwork_RETEMPN 6.0 1 \n", - "coef_distance_piecewise_linear_for_15_plus_miles NaN 0 \n", - "coef_distance_piecewise_linear_from_0_to_1_miles NaN 0 \n", - "coef_distance_piecewise_linear_from_1_to_2_miles NaN 0 \n", - "coef_distance_piecewise_linear_from_2_to_5_miles NaN 0 \n", - "coef_distance_piecewise_linear_from_5_to_15_miles NaN 0 \n", - "coef_mode_choice_logsum NaN 0 \n", - "coef_no_attractions_atwork_size_variable_is_0 NaN 1 \n", - "coef_sample_of_alternatives_correction_factor NaN 1 \n", + " maximum nullvalue \\\n", + "param_name \n", + "atwork_HEREMPN 6.000000 0.0 \n", + "atwork_RETEMPN -0.298406 0.0 \n", + "coef_distance_piecewise_linear_for_15_plus_miles 25.000000 0.0 \n", + "coef_distance_piecewise_linear_from_0_to_1_miles 25.000000 0.0 \n", + "coef_distance_piecewise_linear_from_1_to_2_miles 25.000000 0.0 \n", + "coef_distance_piecewise_linear_from_2_to_5_miles 25.000000 0.0 \n", + "coef_distance_piecewise_linear_from_5_to_15_miles 25.000000 0.0 \n", + "coef_mode_choice_logsum 25.000000 0.0 \n", + "coef_no_attractions_atwork_size_variable_is_0 -999.000000 0.0 \n", + "coef_sample_of_alternatives_correction_factor 1.000000 0.0 \n", "\n", - " best \n", - "atwork_HEREMPN -1.707324 \n", - "atwork_RETEMPN -0.298406 \n", - "coef_distance_piecewise_linear_for_15_plus_miles -0.204500 \n", - "coef_distance_piecewise_linear_from_0_to_1_miles -1.364154 \n", - "coef_distance_piecewise_linear_from_1_to_2_miles -0.739532 \n", - "coef_distance_piecewise_linear_from_2_to_5_miles -0.504526 \n", - "coef_distance_piecewise_linear_from_5_to_15_miles -0.073403 \n", - "coef_mode_choice_logsum 0.503271 \n", - "coef_no_attractions_atwork_size_variable_is_0 -999.000000 \n", - "coef_sample_of_alternatives_correction_factor 1.000000 " + " holdfast \n", + "param_name \n", + "atwork_HEREMPN 0 \n", + "atwork_RETEMPN 1 \n", + "coef_distance_piecewise_linear_for_15_plus_miles 0 \n", + "coef_distance_piecewise_linear_from_0_to_1_miles 0 \n", + "coef_distance_piecewise_linear_from_1_to_2_miles 0 \n", + "coef_distance_piecewise_linear_from_2_to_5_miles 0 \n", + "coef_distance_piecewise_linear_from_5_to_15_miles 0 \n", + "coef_mode_choice_logsum 0 \n", + "coef_no_attractions_atwork_size_variable_is_0 1 \n", + "coef_sample_of_alternatives_correction_factor 1 " ] }, "metadata": {}, "output_type": "display_data" }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 5.1460637824515034e-14 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.192541283407413e-14 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.498478984793179e-14 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.0731153205050762e-13 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.333452476333678e-13 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.7862187878568713e-14 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 5.750088707308852e-14 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.0701560851092294e-14 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.0186281177938627e-13 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 1.0837304994953431e-13 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n" - ] - }, { "data": { "text/html": [ - "
keyvalue
loglike-2329.8700459477177
x\n", + "
keyvalue
loglike-12720.40641937967
x\n", " \n", " \n", " \n", @@ -1738,7 +1865,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1746,27 +1873,27 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1777,38 +1904,37 @@ " \n", " \n", " \n", - "
atwork_HEREMPN-1.707324-1.371795
atwork_RETEMPN
coef_distance_piecewise_linear_for_15_plus_miles-0.204500-0.326384
coef_distance_piecewise_linear_from_0_to_1_miles-1.364154-0.840401
coef_distance_piecewise_linear_from_1_to_2_miles-0.739532-0.905173
coef_distance_piecewise_linear_from_2_to_5_miles-0.504526-0.577554
coef_distance_piecewise_linear_from_5_to_15_miles-0.073403-0.193532
coef_mode_choice_logsum0.5032710.403737
coef_no_attractions_atwork_size_variable_is_01.000000
tolerance8.076677745948512e-06
stepsarray([1., 1., 1., 1., 1., 1., 1., 1.])
message'Optimization terminated successfully.'
elapsed_time0:00:00.121814
method'BHHH'
n_cases464
iteration_number8
logloss5.021271650749392
" + "
tolerance8.315604351559683e-06stepsarray([1., 1., 1., 1., 1., 1.])message'Optimization terminated successfully'elapsed_time0:00:00.285360method'bhhh'n_cases6036iteration_number6
" ], "text/plain": [ - "┣ loglike: -2329.8700459477177\n", - "┣ x: atwork_HEREMPN -1.707324\n", + "┣ loglike: -12720.40641937967\n", + "┣ x: atwork_HEREMPN -1.371795\n", "┃ atwork_RETEMPN -0.298406\n", - "┃ coef_distance_piecewise_linear_for_15_plus_miles -0.204500\n", - "┃ coef_distance_piecewise_linear_from_0_to_1_miles -1.364154\n", - "┃ coef_distance_piecewise_linear_from_1_to_2_miles -0.739532\n", - "┃ coef_distance_piecewise_linear_from_2_to_5_miles -0.504526\n", - "┃ coef_distance_piecewise_linear_from_5_to_15_miles -0.073403\n", - "┃ coef_mode_choice_logsum 0.503271\n", + "┃ coef_distance_piecewise_linear_for_15_plus_miles -0.326384\n", + "┃ coef_distance_piecewise_linear_from_0_to_1_miles -0.840401\n", + "┃ coef_distance_piecewise_linear_from_1_to_2_miles -0.905173\n", + "┃ coef_distance_piecewise_linear_from_2_to_5_miles -0.577554\n", + "┃ coef_distance_piecewise_linear_from_5_to_15_miles -0.193532\n", + "┃ coef_mode_choice_logsum 0.403737\n", "┃ coef_no_attractions_atwork_size_variable_is_0 -999.000000\n", "┃ coef_sample_of_alternatives_correction_factor 1.000000\n", "┃ dtype: float64\n", - "┣ tolerance: 8.076677745948512e-06\n", - "┣ steps: array([1., 1., 1., 1., 1., 1., 1., 1.])\n", - "┣ message: 'Optimization terminated successfully.'\n", - "┣ elapsed_time: datetime.timedelta(microseconds=121814)\n", - "┣ method: 'BHHH'\n", - "┣ n_cases: 464\n", - "┣ iteration_number: 8\n", - "┣ logloss: 5.021271650749392" + "┣ tolerance: 8.315604351559683e-06\n", + "┣ steps: array([1., 1., 1., 1., 1., 1.])\n", + "┣ message: 'Optimization terminated successfully'\n", + "┣ elapsed_time: datetime.timedelta(microseconds=285360)\n", + "┣ method: 'bhhh'\n", + "┣ n_cases: 6036\n", + "┣ iteration_number: 6" ] }, - "execution_count": 11, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "model.estimate(method='BHHH', options={'maxiter':1000})" + "model.estimate(method='bhhh', options={'maxiter':1000})" ] }, { @@ -1820,119 +1946,145 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Value Std Err t Stat Signif Null Value Constrained
atwork_HEREMPN-1.71 0.203-8.39*** 0.00
atwork_RETEMPN-0.298 NA NA 0.00fixed value
coef_distance_piecewise_linear_for_15_plus_miles-0.205 1.79e-14-BIG*** 0.00
coef_distance_piecewise_linear_from_0_to_1_miles-1.36 0.402-3.39*** 0.00
coef_distance_piecewise_linear_from_1_to_2_miles-0.740 0.222-3.33*** 0.00
coef_distance_piecewise_linear_from_2_to_5_miles-0.505 0.0702-7.19*** 0.00
coef_distance_piecewise_linear_from_5_to_15_miles-0.0734 0.0897-0.82 0.00
coef_mode_choice_logsum 0.503 0.0702 7.17*** 0.00
coef_no_attractions_atwork_size_variable_is_0-999. NA NA 0.00fixed value
coef_sample_of_alternatives_correction_factor 1.00 NA NA 0.00fixed value
" + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ValueStd Errt StatSignifNull ValueConstrained
Parameter      
atwork_HEREMPN-1.37 0.0710-19.32*** 0.00
atwork_RETEMPN-0.298 0.00 NA 0.00fixed value
coef_distance_piecewise_linear_for_15_plus_miles-0.326 0.0607-5.38*** 0.00
coef_distance_piecewise_linear_from_0_to_1_miles-0.840 0.0954-8.81*** 0.00
coef_distance_piecewise_linear_from_1_to_2_miles-0.905 0.0554-16.34*** 0.00
coef_distance_piecewise_linear_from_2_to_5_miles-0.578 0.0278-20.77*** 0.00
coef_distance_piecewise_linear_from_5_to_15_miles-0.194 0.0173-11.20*** 0.00
coef_mode_choice_logsum 0.404 0.0244 16.54*** 0.00
coef_no_attractions_atwork_size_variable_is_0-999. 0.00 NA 0.00fixed value
coef_sample_of_alternatives_correction_factor 1.00 0.00 NA 0.00fixed value
\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 12, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -1953,7 +2105,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ @@ -1970,7 +2122,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ @@ -1989,7 +2141,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -2242,9 +2394,9 @@ " atwork\n", " atwork\n", " 0.000000\n", - " 0.803595\n", + " 0.745241\n", " 0.000000\n", - " 0.196405\n", + " 0.254759\n", " 0.000000\n", " 0.000000\n", " 0.000000\n", @@ -2400,7 +2552,7 @@ "10 othmaint non_mandatory 0.000000 0.482000 0.000000 0.518000 \n", "11 social non_mandatory 0.000000 0.522000 0.000000 0.478000 \n", "12 othdiscr non_mandatory 0.252252 0.212212 0.000000 0.272272 \n", - "13 atwork atwork 0.000000 0.803595 0.000000 0.196405 \n", + "13 atwork atwork 0.000000 0.745241 0.000000 0.254759 \n", "14 work trip 0.000000 0.166667 0.166667 0.166667 \n", "15 escort trip 0.001000 0.225000 0.000000 0.144000 \n", "16 shopping trip 0.001000 0.999000 0.000000 0.000000 \n", @@ -2435,7 +2587,7 @@ "21 0.000000 0.000000 0.000000 0.000 0.000000 0.591409 0.407592 " ] }, - "execution_count": 15, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -2456,7 +2608,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 18, "metadata": {}, "outputs": [], "source": [ @@ -2480,7 +2632,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -2513,31 +2665,31 @@ " \n", " 0\n", " coef_distance_piecewise_linear_from_0_to_1_miles\n", - " -1.364154\n", + " -0.840401\n", " F\n", " \n", " \n", " 1\n", " coef_distance_piecewise_linear_from_1_to_2_miles\n", - " -0.739532\n", + " -0.905173\n", " F\n", " \n", " \n", " 2\n", " coef_distance_piecewise_linear_from_2_to_5_miles\n", - " -0.504526\n", + " -0.577554\n", " F\n", " \n", " \n", " 3\n", " coef_distance_piecewise_linear_from_5_to_15_miles\n", - " -0.073403\n", + " -0.193532\n", " F\n", " \n", " \n", " 4\n", " coef_distance_piecewise_linear_for_15_plus_miles\n", - " -0.204500\n", + " -0.326384\n", " F\n", " \n", " \n", @@ -2555,7 +2707,7 @@ " \n", " 7\n", " coef_mode_choice_logsum\n", - " 0.503271\n", + " 0.403737\n", " F\n", " \n", " \n", @@ -2570,18 +2722,18 @@ ], "text/plain": [ " coefficient_name value constrain\n", - "0 coef_distance_piecewise_linear_from_0_to_1_miles -1.364154 F\n", - "1 coef_distance_piecewise_linear_from_1_to_2_miles -0.739532 F\n", - "2 coef_distance_piecewise_linear_from_2_to_5_miles -0.504526 F\n", - "3 coef_distance_piecewise_linear_from_5_to_15_miles -0.073403 F\n", - "4 coef_distance_piecewise_linear_for_15_plus_miles -0.204500 F\n", + "0 coef_distance_piecewise_linear_from_0_to_1_miles -0.840401 F\n", + "1 coef_distance_piecewise_linear_from_1_to_2_miles -0.905173 F\n", + "2 coef_distance_piecewise_linear_from_2_to_5_miles -0.577554 F\n", + "3 coef_distance_piecewise_linear_from_5_to_15_miles -0.193532 F\n", + "4 coef_distance_piecewise_linear_for_15_plus_miles -0.326384 F\n", "5 coef_size_variable_atwork 1.000000 T\n", "6 coef_no_attractions_atwork_size_variable_is_0 -999.000000 T\n", - "7 coef_mode_choice_logsum 0.503271 F\n", + "7 coef_mode_choice_logsum 0.403737 F\n", "8 coef_sample_of_alternatives_correction_factor 1.000000 T" ] }, - "execution_count": 17, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -2592,7 +2744,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -2860,9 +3012,9 @@ " atwork\n", " atwork\n", " 0.000000\n", - " 0.803595\n", + " 0.745241\n", " 0.000000\n", - " 0.196405\n", + " 0.254759\n", " 0.000000\n", " 0.000000\n", " 0.000000\n", @@ -3026,7 +3178,7 @@ "10 10 othmaint non_mandatory 0.000000 0.482000 0.000000 \n", "11 11 social non_mandatory 0.000000 0.522000 0.000000 \n", "12 12 othdiscr non_mandatory 0.252252 0.212212 0.000000 \n", - "13 13 atwork atwork 0.000000 0.803595 0.000000 \n", + "13 13 atwork atwork 0.000000 0.745241 0.000000 \n", "14 14 work trip 0.000000 0.166667 0.166667 \n", "15 15 escort trip 0.001000 0.225000 0.000000 \n", "16 16 shopping trip 0.001000 0.999000 0.000000 \n", @@ -3050,7 +3202,7 @@ "10 0.518000 0.000000 0.000000 0.000000 0.000 0.000000 0.000000 \n", "11 0.478000 0.000000 0.000000 0.000000 0.000 0.000000 0.000000 \n", "12 0.272272 0.165165 0.000000 0.000000 0.000 0.098098 0.000000 \n", - "13 0.196405 0.000000 0.000000 0.000000 0.000 0.000000 0.000000 \n", + "13 0.254759 0.000000 0.000000 0.000000 0.000 0.000000 0.000000 \n", "14 0.166667 0.166667 0.166667 0.166667 0.000 0.000000 0.000000 \n", "15 0.144000 0.000000 0.000000 0.000000 0.464 0.166000 0.000000 \n", "16 0.000000 0.000000 0.000000 0.000000 0.000 0.000000 0.000000 \n", @@ -3085,7 +3237,7 @@ "21 0.407592 " ] }, - "execution_count": 18, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -3102,7 +3254,7 @@ "toc_visible": true }, "kernelspec": { - "display_name": "Python 3", + "display_name": "ESTER", "language": "python", "name": "python3" }, @@ -3116,7 +3268,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.10.15" }, "toc": { "base_numbering": 1, diff --git a/activitysim/examples/example_estimation/notebooks/20_atwork_subtour_scheduling.ipynb b/activitysim/examples/example_estimation/notebooks/20_atwork_subtour_scheduling.ipynb index ae20d3694..1de74014a 100644 --- a/activitysim/examples/example_estimation/notebooks/20_atwork_subtour_scheduling.ipynb +++ b/activitysim/examples/example_estimation/notebooks/20_atwork_subtour_scheduling.ipynb @@ -34,27 +34,74 @@ "id": "s53VwlPwtNnr", "outputId": "d1208b7a-c1f2-4b0b-c439-bf312fe12be0" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "JAX not found. Some functionality will be unavailable.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'larch': '6.0.32',\n", + " 'sharrow': '2.13.0',\n", + " 'numpy': '1.26.4',\n", + " 'pandas': '1.5.3',\n", + " 'xarray': '2024.3.0',\n", + " 'numba': '0.60.0'}" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "import os\n", - "import larch # !conda install larch -c conda-forge # for estimation\n", - "import pandas as pd" + "import larch as lx\n", + "import pandas as pd\n", + "\n", + "lx.versions()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We'll work in our `test` directory, where ActivitySim has saved the estimation data bundles." + "For this demo, we will assume that you have already run ActivitySim in estimation\n", + "mode, and saved the required estimation data bundles (EDB's) to disk. See\n", + "the [first notebook](./01_estimation_mode.ipynb) for details. The following module\n", + "will run a script to set everything up if the example data is not already available." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "EDB directory already populated.\n" + ] + }, + { + "data": { + "text/plain": [ + "PosixPath('test-estimation-data/activitysim-prototype-mtc-extended')" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "os.chdir('test')" + "from est_mode_setup import prepare\n", + "\n", + "prepare()" ] }, { @@ -70,11 +117,13 @@ "metadata": {}, "outputs": [ { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/activitysim/activitysim/estimation/larch/__init__.py:18: DtypeWarning: Columns (15,16,17,18,19,20,33,34,35,36,37,38,50,51,52,53,54,55,66,67,68,69,70,71,81,82,83,84,85,86,95,96,97,98,99,100,108,109,110,111,112,113,120,121,122,123,124,125,131,132,133,134,135,136,141,142,143,144,145,146,150,151,152,153,154,155,158,159,160,161,162,163,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191) have mixed types.Specify dtype option on import or set low_memory=False.\n", - " return m(*args, **kwargs)\n" + "loading from output-est-mode/estimation_data_bundle/atwork_subtour_scheduling/tour_scheduling_atwork_coefficients.csv\n", + "loading from output-est-mode/estimation_data_bundle/atwork_subtour_scheduling/atwork_subtour_scheduling_SPEC.csv\n", + "loading from output-est-mode/estimation_data_bundle/atwork_subtour_scheduling/atwork_subtour_scheduling_alternatives_combined.parquet\n", + "loading from output-est-mode/estimation_data_bundle/atwork_subtour_scheduling/atwork_subtour_scheduling_choosers_combined.parquet\n" ] } ], @@ -82,7 +131,12 @@ "modelname = \"atwork_subtour_scheduling\"\n", "\n", "from activitysim.estimation.larch import component_model\n", - "model, data = component_model(modelname, return_data=True)" + "\n", + "model, data = component_model(\n", + " modelname,\n", + " edb_directory=f\"output-est-mode/estimation_data_bundle/{modelname}/\",\n", + " return_data=True,\n", + ")" ] }, { @@ -1095,14 +1149,14 @@ " tour_count\n", " tour_category\n", " ...\n", - " COLLFTE\n", - " COLLPTE\n", - " TOPOLOGY\n", - " TERMINAL\n", - " household_density\n", - " employment_density\n", - " density_index\n", - " is_cbd\n", + " auOpRetail\n", + " auOpTotal\n", + " trPkRetail\n", + " trPkTotal\n", + " trOpRetail\n", + " trOpTotal\n", + " nmRetail\n", + " nmTotal\n", " start_previous\n", " end_previous\n", " \n", @@ -1110,34 +1164,34 @@ " \n", " \n", " 0\n", - " 2998927\n", - " 114\n", - " 114\n", - " 73144\n", - " maint\n", + " 2966559\n", + " 86\n", + " 113\n", + " 72355\n", + " eat\n", " 1\n", " 1\n", " 1\n", " 1\n", " atwork\n", " ...\n", - " 0.00000\n", - " 0.00000\n", - " 1\n", - " 2.48345\n", - " 26.073171\n", - " 8.048780\n", - " 6.150212\n", - " False\n", + " 9.915345\n", + " 12.430580\n", + " 6.550726\n", + " 9.119016\n", + " 6.446184\n", + " 9.035333\n", + " 5.256966\n", + " 6.831275\n", " 5\n", " 5\n", " \n", " \n", " 1\n", - " 3060326\n", - " 85\n", - " 85\n", - " 74642\n", + " 3046632\n", + " 145\n", + " 90\n", + " 74308\n", " eat\n", " 1\n", " 1\n", @@ -1145,23 +1199,23 @@ " 1\n", " atwork\n", " ...\n", - " 0.00000\n", - " 0.00000\n", - " 1\n", - " 2.09035\n", - " 20.666667\n", - " 4.107527\n", - " 3.426505\n", - " False\n", + " 10.259606\n", + " 12.727344\n", + " 5.452325\n", + " 7.771767\n", + " 5.298242\n", + " 7.602426\n", + " 6.443514\n", + " 7.965548\n", " 5\n", " 5\n", " \n", " \n", " 2\n", - " 4422879\n", - " 124\n", + " 3048108\n", + " 85\n", " 124\n", - " 107875\n", + " 74344\n", " eat\n", " 1\n", " 1\n", @@ -1169,47 +1223,47 @@ " 1\n", " atwork\n", " ...\n", - " 0.00000\n", - " 0.00000\n", - " 1\n", - " 5.35435\n", - " 139.333333\n", - " 418.518519\n", - " 104.532377\n", - " False\n", + " 10.259606\n", + " 12.727344\n", + " 5.452325\n", + " 7.771767\n", + " 5.298242\n", + " 7.602426\n", + " 6.443514\n", + " 7.965548\n", " 5\n", " 5\n", " \n", " \n", " 3\n", - " 4440282\n", - " 154\n", - " 154\n", - " 108299\n", - " maint\n", + " 3177463\n", + " 99\n", + " 55\n", + " 77499\n", + " eat\n", " 1\n", " 1\n", " 1\n", " 1\n", " atwork\n", " ...\n", - " 2035.58118\n", - " 20.60887\n", - " 2\n", - " 5.22542\n", - " 97.634722\n", - " 550.205552\n", - " 82.920387\n", - " False\n", + " 7.714071\n", + " 10.313852\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", " 5\n", " 5\n", " \n", " \n", " 4\n", - " 4496780\n", - " 89\n", - " 89\n", - " 109677\n", + " 3191832\n", + " 99\n", + " 145\n", + " 77849\n", " maint\n", " 1\n", " 1\n", @@ -1217,14 +1271,14 @@ " 1\n", " atwork\n", " ...\n", - " 690.54974\n", - " 0.00000\n", - " 3\n", - " 4.73802\n", - " 117.769796\n", - " 246.205869\n", - " 79.663609\n", - " False\n", + " 9.763398\n", + " 12.307147\n", + " 1.228620\n", + " 3.278544\n", + " 1.239060\n", + " 3.280429\n", + " 4.284159\n", + " 6.249753\n", " 5\n", " 5\n", " \n", @@ -1253,184 +1307,184 @@ " ...\n", " \n", " \n", - " 459\n", - " 302923726\n", - " 145\n", - " 145\n", - " 7388383\n", - " maint\n", + " 6031\n", + " 308156004\n", + " 99\n", + " 124\n", + " 7516000\n", + " eat\n", " 1\n", " 1\n", " 1\n", " 1\n", " atwork\n", " ...\n", - " 0.00000\n", - " 0.00000\n", - " 1\n", - " 2.37546\n", - " 19.153846\n", - " 5.907692\n", - " 4.515087\n", - " False\n", + " 9.566058\n", + " 12.139587\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 3.086628\n", + " 5.647842\n", " 5\n", " 5\n", " \n", " \n", - " 460\n", - " 302942567\n", - " 85\n", - " 85\n", - " 7388843\n", - " eat\n", + " 6032\n", + " 308227650\n", + " 155\n", + " 88\n", + " 7517747\n", + " maint\n", " 1\n", " 1\n", " 1\n", " 1\n", " atwork\n", " ...\n", - " 0.00000\n", - " 0.00000\n", - " 1\n", - " 2.81406\n", - " 16.068376\n", - " 21.136752\n", - " 9.128669\n", - " False\n", + " 10.260330\n", + " 12.748307\n", + " 4.719610\n", + " 7.890189\n", + " 4.493279\n", + " 7.643024\n", + " 5.529241\n", + " 8.876000\n", " 5\n", " 5\n", " \n", " \n", - " 461\n", - " 302942627\n", - " 135\n", - " 135\n", - " 7388844\n", - " maint\n", + " 6033\n", + " 308260103\n", + " 102\n", + " 113\n", + " 7518539\n", + " eat\n", " 1\n", " 1\n", " 1\n", " 1\n", " atwork\n", " ...\n", - " 0.00000\n", - " 0.00000\n", - " 1\n", - " 2.81406\n", - " 16.068376\n", - " 21.136752\n", - " 9.128669\n", - " False\n", + " 10.294354\n", + " 12.880095\n", + " 4.408064\n", + " 7.614481\n", + " 3.838266\n", + " 7.011926\n", + " 5.169891\n", + " 8.595128\n", " 5\n", " 5\n", " \n", " \n", - " 462\n", - " 305120465\n", - " 112\n", - " 112\n", - " 7441962\n", - " maint\n", + " 6034\n", + " 309080718\n", + " 55\n", + " 113\n", + " 7538554\n", + " eat\n", " 1\n", " 1\n", " 1\n", " 1\n", " atwork\n", " ...\n", - " 0.00000\n", - " 0.00000\n", - " 1\n", - " 8.54946\n", - " 55.606634\n", - " 142.984438\n", - " 40.036459\n", - " False\n", + " 10.345456\n", + " 12.953264\n", + " 7.103743\n", + " 9.892019\n", + " 6.979741\n", + " 9.773601\n", + " 6.557982\n", + " 8.518901\n", " 5\n", " 5\n", " \n", " \n", - " 463\n", - " 308000674\n", - " 124\n", - " 124\n", - " 7512211\n", - " maint\n", + " 6035\n", + " 309112001\n", + " 125\n", + " 113\n", + " 7539317\n", + " eat\n", " 1\n", " 1\n", " 1\n", " 1\n", " atwork\n", " ...\n", - " 0.00000\n", - " 0.00000\n", - " 2\n", - " 4.64648\n", - " 196.395950\n", - " 178.779465\n", - " 93.587057\n", - " False\n", + " 6.494711\n", + " 8.713819\n", + " 0.019735\n", + " 0.222696\n", + " 0.016077\n", + " 0.153189\n", + " 0.000000\n", + " 0.000000\n", " 5\n", " 5\n", " \n", " \n", "\n", - "

464 rows × 162 columns

\n", + "

6036 rows × 162 columns

\n", "" ], "text/plain": [ - " tour_id model_choice override_choice person_id tour_type \\\n", - "0 2998927 114 114 73144 maint \n", - "1 3060326 85 85 74642 eat \n", - "2 4422879 124 124 107875 eat \n", - "3 4440282 154 154 108299 maint \n", - "4 4496780 89 89 109677 maint \n", - ".. ... ... ... ... ... \n", - "459 302923726 145 145 7388383 maint \n", - "460 302942567 85 85 7388843 eat \n", - "461 302942627 135 135 7388844 maint \n", - "462 305120465 112 112 7441962 maint \n", - "463 308000674 124 124 7512211 maint \n", + " tour_id model_choice override_choice person_id tour_type \\\n", + "0 2966559 86 113 72355 eat \n", + "1 3046632 145 90 74308 eat \n", + "2 3048108 85 124 74344 eat \n", + "3 3177463 99 55 77499 eat \n", + "4 3191832 99 145 77849 maint \n", + "... ... ... ... ... ... \n", + "6031 308156004 99 124 7516000 eat \n", + "6032 308227650 155 88 7517747 maint \n", + "6033 308260103 102 113 7518539 eat \n", + "6034 309080718 55 113 7538554 eat \n", + "6035 309112001 125 113 7539317 eat \n", "\n", - " tour_type_count tour_type_num tour_num tour_count tour_category ... \\\n", - "0 1 1 1 1 atwork ... \n", - "1 1 1 1 1 atwork ... \n", - "2 1 1 1 1 atwork ... \n", - "3 1 1 1 1 atwork ... \n", - "4 1 1 1 1 atwork ... \n", - ".. ... ... ... ... ... ... \n", - "459 1 1 1 1 atwork ... \n", - "460 1 1 1 1 atwork ... \n", - "461 1 1 1 1 atwork ... \n", - "462 1 1 1 1 atwork ... \n", - "463 1 1 1 1 atwork ... \n", + " tour_type_count tour_type_num tour_num tour_count tour_category ... \\\n", + "0 1 1 1 1 atwork ... \n", + "1 1 1 1 1 atwork ... \n", + "2 1 1 1 1 atwork ... \n", + "3 1 1 1 1 atwork ... \n", + "4 1 1 1 1 atwork ... \n", + "... ... ... ... ... ... ... \n", + "6031 1 1 1 1 atwork ... \n", + "6032 1 1 1 1 atwork ... \n", + "6033 1 1 1 1 atwork ... \n", + "6034 1 1 1 1 atwork ... \n", + "6035 1 1 1 1 atwork ... \n", "\n", - " COLLFTE COLLPTE TOPOLOGY TERMINAL household_density \\\n", - "0 0.00000 0.00000 1 2.48345 26.073171 \n", - "1 0.00000 0.00000 1 2.09035 20.666667 \n", - "2 0.00000 0.00000 1 5.35435 139.333333 \n", - "3 2035.58118 20.60887 2 5.22542 97.634722 \n", - "4 690.54974 0.00000 3 4.73802 117.769796 \n", - ".. ... ... ... ... ... \n", - "459 0.00000 0.00000 1 2.37546 19.153846 \n", - "460 0.00000 0.00000 1 2.81406 16.068376 \n", - "461 0.00000 0.00000 1 2.81406 16.068376 \n", - "462 0.00000 0.00000 1 8.54946 55.606634 \n", - "463 0.00000 0.00000 2 4.64648 196.395950 \n", + " auOpRetail auOpTotal trPkRetail trPkTotal trOpRetail trOpTotal \\\n", + "0 9.915345 12.430580 6.550726 9.119016 6.446184 9.035333 \n", + "1 10.259606 12.727344 5.452325 7.771767 5.298242 7.602426 \n", + "2 10.259606 12.727344 5.452325 7.771767 5.298242 7.602426 \n", + "3 7.714071 10.313852 0.000000 0.000000 0.000000 0.000000 \n", + "4 9.763398 12.307147 1.228620 3.278544 1.239060 3.280429 \n", + "... ... ... ... ... ... ... \n", + "6031 9.566058 12.139587 0.000000 0.000000 0.000000 0.000000 \n", + "6032 10.260330 12.748307 4.719610 7.890189 4.493279 7.643024 \n", + "6033 10.294354 12.880095 4.408064 7.614481 3.838266 7.011926 \n", + "6034 10.345456 12.953264 7.103743 9.892019 6.979741 9.773601 \n", + "6035 6.494711 8.713819 0.019735 0.222696 0.016077 0.153189 \n", "\n", - " employment_density density_index is_cbd start_previous end_previous \n", - "0 8.048780 6.150212 False 5 5 \n", - "1 4.107527 3.426505 False 5 5 \n", - "2 418.518519 104.532377 False 5 5 \n", - "3 550.205552 82.920387 False 5 5 \n", - "4 246.205869 79.663609 False 5 5 \n", - ".. ... ... ... ... ... \n", - "459 5.907692 4.515087 False 5 5 \n", - "460 21.136752 9.128669 False 5 5 \n", - "461 21.136752 9.128669 False 5 5 \n", - "462 142.984438 40.036459 False 5 5 \n", - "463 178.779465 93.587057 False 5 5 \n", + " nmRetail nmTotal start_previous end_previous \n", + "0 5.256966 6.831275 5 5 \n", + "1 6.443514 7.965548 5 5 \n", + "2 6.443514 7.965548 5 5 \n", + "3 0.000000 0.000000 5 5 \n", + "4 4.284159 6.249753 5 5 \n", + "... ... ... ... ... \n", + "6031 3.086628 5.647842 5 5 \n", + "6032 5.529241 8.876000 5 5 \n", + "6033 5.169891 8.595128 5 5 \n", + "6034 6.557982 8.518901 5 5 \n", + "6035 0.000000 0.000000 5 5 \n", "\n", - "[464 rows x 162 columns]" + "[6036 rows x 162 columns]" ] }, "execution_count": 6, @@ -1476,148 +1530,148 @@ " \n", " \n", " tour_id\n", - " variable\n", - " 0\n", - " 1\n", - " 2\n", - " 3\n", - " 4\n", - " 5\n", - " 6\n", - " 7\n", + " start\n", + " end\n", + " duration\n", + " tdd\n", + " mode_choice_logsum\n", + " util_early_start_at_5\n", + " util_am_peak_start_at_6\n", + " util_am_peak_start_at_7\n", + " util_am_peak_start_at_8\n", " ...\n", - " 180\n", - " 181\n", - " 182\n", - " 183\n", - " 184\n", - " 185\n", - " 186\n", - " 187\n", - " 188\n", - " 189\n", + " util_duration_shift_for_number_of_mandatory_tours\n", + " util_start_shift_for_number_of_joint_tours\n", + " util_duration_shift_for_number_of_joint_tours\n", + " util_start_shift_for_number_of_individual_nonmandatory_tours\n", + " util_duration_shift_for_number_of_individual_nonmandatory_tours\n", + " util_dummy_for_business_related_purpose_and_duration_from_0_to_1\n", + " util_dummy_for_eating_out_purpose_and_duration_of_1_hour\n", + " util_dummy_for_eating_out_purpose_and_departure_at_11\n", + " util_dummy_for_eating_out_purpose_and_departure_at_12\n", + " util_dummy_for_eating_out_purpose_and_departure_at_13\n", " \n", " \n", " \n", " \n", " 0\n", - " 2998927\n", - " duration\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", + " 2966559\n", + " 10\n", + " 10\n", " 0\n", + " 85\n", " 0\n", + " False\n", + " False\n", + " False\n", + " False\n", " ...\n", " 0\n", " 0\n", " 0\n", " 0\n", " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", " 1\n", - " 2998927\n", - " end\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", + " 2966559\n", + " 10\n", + " 11\n", + " 1\n", + " 86\n", " 0\n", + " False\n", + " False\n", + " False\n", + " False\n", " ...\n", + " 1\n", " 0\n", " 0\n", " 0\n", " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", " 2\n", - " 2998927\n", - " mode_choice_logsum\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", + " 2966559\n", + " 10\n", + " 12\n", + " 2\n", + " 87\n", " 0\n", + " False\n", + " False\n", + " False\n", + " False\n", " ...\n", + " 2\n", " 0\n", " 0\n", " 0\n", " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", " 3\n", - " 2998927\n", - " start\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", + " 2966559\n", + " 10\n", + " 13\n", + " 3\n", + " 88\n", " 0\n", + " False\n", + " False\n", + " False\n", + " False\n", " ...\n", + " 3\n", " 0\n", " 0\n", " 0\n", " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", " 4\n", - " 2998927\n", - " util_am_peak_end\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", + " 2966559\n", + " 10\n", + " 14\n", + " 4\n", + " 89\n", " 0\n", + " False\n", + " False\n", + " False\n", + " False\n", " ...\n", + " 4\n", " 0\n", " 0\n", " 0\n", " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", " ...\n", @@ -1644,197 +1698,301 @@ " ...\n", " \n", " \n", - " 24587\n", - " 308000674\n", - " util_start_shift_for_number_of_individual_nonm...\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", + " 457514\n", + " 309112001\n", + " 21\n", + " 22\n", + " 1\n", + " 185\n", " 0\n", + " False\n", + " False\n", + " False\n", + " False\n", " ...\n", + " 1\n", " 0\n", " 0\n", " 0\n", " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", - " 24588\n", - " 308000674\n", - " util_start_shift_for_number_of_joint_tours\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " ...\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", + " 457515\n", + " 309112001\n", + " 21\n", + " 23\n", + " 2\n", + " 186\n", " 0\n", + " False\n", + " False\n", + " False\n", + " False\n", + " ...\n", + " 2\n", " 0\n", " 0\n", " 0\n", " 0\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", - " 24589\n", - " 308000674\n", - " util_start_shift_for_number_of_mandatory_tours\n", - " 5\n", - " 5\n", - " 5\n", - " 5\n", - " 5\n", - " 5\n", - " 5\n", - " 5\n", - " ...\n", - " 0\n", - " 0\n", - " 0\n", + " 457516\n", + " 309112001\n", + " 22\n", + " 22\n", " 0\n", + " 187\n", " 0\n", + " False\n", + " False\n", + " False\n", + " False\n", + " ...\n", " 0\n", " 0\n", " 0\n", " 0\n", " 0\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", - " 24590\n", - " 308000674\n", - " util_start_shift_for_outbound_auto_travel_time...\n", - " 60.10000228881836\n", - " 60.10000228881836\n", - " 60.10000228881836\n", - " 60.10000228881836\n", - " 60.10000228881836\n", - " 60.10000228881836\n", - " 60.10000228881836\n", - " 60.10000228881836\n", - " ...\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", + " 457517\n", + " 309112001\n", + " 22\n", + " 23\n", + " 1\n", + " 188\n", " 0\n", + " False\n", + " False\n", + " False\n", + " False\n", + " ...\n", + " 1\n", " 0\n", " 0\n", " 0\n", " 0\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", - " 24591\n", - " 308000674\n", - " util_start_shift_for_subsequent_sub_tour_of_sa...\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", + " 457518\n", + " 309112001\n", + " 23\n", + " 23\n", " 0\n", + " 189\n", " 0\n", + " False\n", + " False\n", + " False\n", + " False\n", " ...\n", " 0\n", " 0\n", " 0\n", " 0\n", " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", "\n", - "

24592 rows × 192 columns

\n", + "

457519 rows × 55 columns

\n", "" ], "text/plain": [ - " tour_id variable \\\n", - "0 2998927 duration \n", - "1 2998927 end \n", - "2 2998927 mode_choice_logsum \n", - "3 2998927 start \n", - "4 2998927 util_am_peak_end \n", - "... ... ... \n", - "24587 308000674 util_start_shift_for_number_of_individual_nonm... \n", - "24588 308000674 util_start_shift_for_number_of_joint_tours \n", - "24589 308000674 util_start_shift_for_number_of_mandatory_tours \n", - "24590 308000674 util_start_shift_for_outbound_auto_travel_time... \n", - "24591 308000674 util_start_shift_for_subsequent_sub_tour_of_sa... \n", + " tour_id start end duration tdd mode_choice_logsum \\\n", + "0 2966559 10 10 0 85 0 \n", + "1 2966559 10 11 1 86 0 \n", + "2 2966559 10 12 2 87 0 \n", + "3 2966559 10 13 3 88 0 \n", + "4 2966559 10 14 4 89 0 \n", + "... ... ... ... ... ... ... \n", + "457514 309112001 21 22 1 185 0 \n", + "457515 309112001 21 23 2 186 0 \n", + "457516 309112001 22 22 0 187 0 \n", + "457517 309112001 22 23 1 188 0 \n", + "457518 309112001 23 23 0 189 0 \n", + "\n", + " util_early_start_at_5 util_am_peak_start_at_6 \\\n", + "0 False False \n", + "1 False False \n", + "2 False False \n", + "3 False False \n", + "4 False False \n", + "... ... ... \n", + "457514 False False \n", + "457515 False False \n", + "457516 False False \n", + "457517 False False \n", + "457518 False False \n", + "\n", + " util_am_peak_start_at_7 util_am_peak_start_at_8 ... \\\n", + "0 False False ... \n", + "1 False False ... \n", + "2 False False ... \n", + "3 False False ... \n", + "4 False False ... \n", + "... ... ... ... \n", + "457514 False False ... \n", + "457515 False False ... \n", + "457516 False False ... \n", + "457517 False False ... \n", + "457518 False False ... \n", + "\n", + " util_duration_shift_for_number_of_mandatory_tours \\\n", + "0 0 \n", + "1 1 \n", + "2 2 \n", + "3 3 \n", + "4 4 \n", + "... ... \n", + "457514 1 \n", + "457515 2 \n", + "457516 0 \n", + "457517 1 \n", + "457518 0 \n", + "\n", + " util_start_shift_for_number_of_joint_tours \\\n", + "0 0 \n", + "1 0 \n", + "2 0 \n", + "3 0 \n", + "4 0 \n", + "... ... \n", + "457514 0 \n", + "457515 0 \n", + "457516 0 \n", + "457517 0 \n", + "457518 0 \n", + "\n", + " util_duration_shift_for_number_of_joint_tours \\\n", + "0 0 \n", + "1 0 \n", + "2 0 \n", + "3 0 \n", + "4 0 \n", + "... ... \n", + "457514 0 \n", + "457515 0 \n", + "457516 0 \n", + "457517 0 \n", + "457518 0 \n", "\n", - " 0 1 2 \\\n", - "0 0 0 0 \n", - "1 0 0 0 \n", - "2 0 0 0 \n", - "3 0 0 0 \n", - "4 0 0 0 \n", - "... ... ... ... \n", - "24587 0 0 0 \n", - "24588 0 0 0 \n", - "24589 5 5 5 \n", - "24590 60.10000228881836 60.10000228881836 60.10000228881836 \n", - "24591 0 0 0 \n", + " util_start_shift_for_number_of_individual_nonmandatory_tours \\\n", + "0 0 \n", + "1 0 \n", + "2 0 \n", + "3 0 \n", + "4 0 \n", + "... ... \n", + "457514 0 \n", + "457515 0 \n", + "457516 0 \n", + "457517 0 \n", + "457518 0 \n", "\n", - " 3 4 5 \\\n", - "0 0 0 0 \n", - "1 0 0 0 \n", - "2 0 0 0 \n", - "3 0 0 0 \n", - "4 0 0 0 \n", - "... ... ... ... \n", - "24587 0 0 0 \n", - "24588 0 0 0 \n", - "24589 5 5 5 \n", - "24590 60.10000228881836 60.10000228881836 60.10000228881836 \n", - "24591 0 0 0 \n", + " util_duration_shift_for_number_of_individual_nonmandatory_tours \\\n", + "0 0 \n", + "1 0 \n", + "2 0 \n", + "3 0 \n", + "4 0 \n", + "... ... \n", + "457514 0 \n", + "457515 0 \n", + "457516 0 \n", + "457517 0 \n", + "457518 0 \n", "\n", - " 6 7 ... 180 181 182 183 184 185 186 \\\n", - "0 0 0 ... 0 0 0 0 0 0 0 \n", - "1 0 0 ... 0 0 0 0 0 0 0 \n", - "2 0 0 ... 0 0 0 0 0 0 0 \n", - "3 0 0 ... 0 0 0 0 0 0 0 \n", - "4 0 0 ... 0 0 0 0 0 0 0 \n", - "... ... ... ... .. .. .. .. .. .. .. \n", - "24587 0 0 ... 0 0 0 0 0 0 0 \n", - "24588 0 0 ... 0 0 0 0 0 0 0 \n", - "24589 5 5 ... 0 0 0 0 0 0 0 \n", - "24590 60.10000228881836 60.10000228881836 ... 0 0 0 0 0 0 0 \n", - "24591 0 0 ... 0 0 0 0 0 0 0 \n", + " util_dummy_for_business_related_purpose_and_duration_from_0_to_1 \\\n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "... ... \n", + "457514 False \n", + "457515 False \n", + "457516 False \n", + "457517 False \n", + "457518 False \n", "\n", - " 187 188 189 \n", - "0 0 0 0 \n", - "1 0 0 0 \n", - "2 0 0 0 \n", - "3 0 0 0 \n", - "4 0 0 0 \n", - "... .. .. .. \n", - "24587 0 0 0 \n", - "24588 0 0 0 \n", - "24589 0 0 0 \n", - "24590 0 0 0 \n", - "24591 0 0 0 \n", + " util_dummy_for_eating_out_purpose_and_duration_of_1_hour \\\n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "... ... \n", + "457514 False \n", + "457515 False \n", + "457516 False \n", + "457517 False \n", + "457518 False \n", "\n", - "[24592 rows x 192 columns]" + " util_dummy_for_eating_out_purpose_and_departure_at_11 \\\n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "... ... \n", + "457514 False \n", + "457515 False \n", + "457516 False \n", + "457517 False \n", + "457518 False \n", + "\n", + " util_dummy_for_eating_out_purpose_and_departure_at_12 \\\n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "... ... \n", + "457514 False \n", + "457515 False \n", + "457516 False \n", + "457517 False \n", + "457518 False \n", + "\n", + " util_dummy_for_eating_out_purpose_and_departure_at_13 \n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "... ... \n", + "457514 False \n", + "457515 False \n", + "457516 False \n", + "457517 False \n", + "457518 False \n", + "\n", + "[457519 rows x 55 columns]" ] }, "execution_count": 7, @@ -1864,9 +2022,44 @@ "name": "stderr", "output_type": "stream", "text": [ - "req_data does not request avail_ca or avail_co but it is set and being provided\n" + "problem: nan_utility has (190 issues)\n", + "problem: chosen_but_not_available has (12 issues)\n" ] }, + { + "data": { + "text/plain": [ + "(,\n", + " ┣ chosen_but_not_available: altid n example rows\n", + " ┃ 0 88 1 5445\n", + " ┃ 1 100 2 1344, 5240\n", + " ┃ 2 102 1 4696\n", + " ┃ 3 103 1 3099\n", + " ┃ 4 107 1 2364\n", + " ┃ 5 113 2 3454, 4647\n", + " ┃ 6 114 4 1537, 2506, 2800\n", + " ┃ 7 115 1 1791\n", + " ┃ 8 116 1 4089\n", + " ┃ 9 120 1 2595\n", + " ┃ 10 125 3 797, 1766, 2716\n", + " ┃ 11 138 1 2003)" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.doctor(repair_nan_utility=True)\n", + "model.doctor(repair_ch_av=\"-\")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ { "data": { "text/html": [ @@ -1882,7 +2075,7 @@ { "data": { "text/html": [ - "

Best LL = -1401.9305368056416

" + "

Best LL = -17373.947698365682

" ], "text/plain": [ "" @@ -1913,778 +2106,732 @@ " \n", " \n", " value\n", + " best\n", " initvalue\n", - " nullvalue\n", " minimum\n", " maximum\n", + " nullvalue\n", " holdfast\n", - " note\n", - " best\n", + " \n", + " \n", + " param_name\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " coef_am_peak_end\n", - " -1.373169\n", + " -2.543876\n", + " -2.543876\n", " -2.928312\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -1.373169\n", " \n", " \n", " coef_am_peak_start_at_6\n", - " -20.592814\n", + " -5.790935\n", + " -5.790935\n", " -6.156718\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -20.592814\n", " \n", " \n", " coef_am_peak_start_at_7\n", - " -2.826984\n", + " -4.238642\n", + " -4.238642\n", " -4.061708\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -2.826984\n", " \n", " \n", " coef_am_peak_start_at_8\n", - " -1.196528\n", + " -2.371798\n", + " -2.371798\n", " -2.330535\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -1.196528\n", " \n", " \n", " coef_am_peak_start_at_9\n", - " -1.619897\n", + " -2.106247\n", + " -2.106247\n", " -1.881593\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -1.619897\n", " \n", " \n", " coef_dummy_for_business_related_purpose_and_duration_from_0_to_1\n", - " -0.663129\n", + " -1.656086\n", + " -1.656086\n", " -1.543000\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.663129\n", " \n", " \n", " coef_dummy_for_eating_out_purpose_and_departure_at_11\n", - " 1.151827\n", + " 1.371453\n", + " 1.371453\n", " 1.511000\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 1.151827\n", " \n", " \n", " coef_dummy_for_eating_out_purpose_and_departure_at_12\n", - " 2.625436\n", + " 2.454861\n", + " 2.454861\n", " 2.721000\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 2.625436\n", " \n", " \n", " coef_dummy_for_eating_out_purpose_and_departure_at_13\n", - " 2.360981\n", + " 1.832150\n", + " 1.832150\n", " 2.122000\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 2.360981\n", " \n", " \n", " coef_dummy_for_eating_out_purpose_and_duration_of_1_hour\n", - " 0.310405\n", + " 0.534786\n", + " 0.534786\n", " 0.399900\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.310405\n", " \n", " \n", " coef_duration_of_0_hours\n", - " 9.959985\n", + " -1.056506\n", + " -1.056506\n", " -0.906682\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 9.959985\n", " \n", " \n", " coef_duration_of_11_to_13_hours\n", - " -0.374055\n", + " 0.292100\n", + " 0.292100\n", " 0.300000\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.374055\n", " \n", " \n", " coef_duration_of_14_to_18_hours\n", " 0.000000\n", " 0.000000\n", + " 0.000000\n", + " 0.0\n", + " 0.0\n", " 0.0\n", - " -25.0\n", - " 25.0\n", " 1\n", - " \n", - " 0.000000\n", " \n", " \n", " coef_duration_of_1_hour\n", " 0.000000\n", " 0.000000\n", + " 0.000000\n", + " 0.0\n", + " 0.0\n", " 0.0\n", - " -25.0\n", - " 25.0\n", " 1\n", - " \n", - " 0.000000\n", " \n", " \n", " coef_duration_of_2_to_3_hours\n", - " 9.181283\n", + " -1.478463\n", + " -1.478463\n", " -1.362176\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 9.181283\n", " \n", " \n", " coef_duration_of_4_to_5_hours\n", - " -0.483141\n", + " -1.032651\n", + " -1.032651\n", " -0.819618\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.483141\n", " \n", " \n", " coef_duration_of_6_to_7_hours\n", - " 10.535613\n", + " 1.074781\n", + " 1.074781\n", " 1.088111\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 10.535613\n", " \n", " \n", " coef_duration_of_8_to_10_hours\n", - " 10.402183\n", - " 1.734039\n", - " 0.0\n", + " 1.476278\n", + " 1.476278\n", + " 1.734038\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 10.402183\n", " \n", " \n", " coef_duration_shift_for_business_related_\n", - " 0.600044\n", + " 0.237322\n", + " 0.237322\n", " 0.264600\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.600044\n", " \n", " \n", " coef_duration_shift_for_first_sub_tour_of_same_work_tour\n", - " 0.319885\n", + " -0.199899\n", + " -0.199899\n", " -0.399200\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.319885\n", " \n", " \n", " coef_duration_shift_for_inbound_auto_travel_time_off_peak\n", - " -0.118575\n", + " 0.022979\n", + " 0.022979\n", " 0.009810\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.118575\n", " \n", " \n", " coef_duration_shift_for_number_of_individual_nonmandatory_tours\n", - " 0.009894\n", + " -0.075913\n", + " -0.075913\n", " -0.042200\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.009894\n", " \n", " \n", " coef_duration_shift_for_number_of_joint_tours\n", - " -0.577681\n", + " -0.234618\n", + " -0.234618\n", " -0.249700\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.577681\n", " \n", " \n", " coef_duration_shift_for_number_of_mandatory_tours\n", - " -1.058788\n", + " -0.909117\n", + " -0.909117\n", " -0.770200\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -1.058788\n", " \n", " \n", " coef_duration_shift_for_outbound_auto_travel_time_off_peak\n", - " 0.145324\n", + " -0.002863\n", + " -0.002863\n", " 0.009810\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.145324\n", " \n", " \n", " coef_duration_shift_for_subsequent_sub_tour_of_same_work_tour\n", - " -10.333603\n", + " -0.371148\n", + " -0.371148\n", " -0.184400\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -10.333603\n", " \n", " \n", " coef_early_end_at_5_6\n", - " -25.000000\n", + " -2.693000\n", + " -2.693000\n", " -2.928312\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -25.000000\n", " \n", " \n", " coef_early_start_at_5\n", - " -2.204068\n", - " -7.765548\n", - " 0.0\n", + " -7.645209\n", + " -7.645209\n", + " -7.765549\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -2.204068\n", " \n", " \n", " coef_evening_end_at_19_20_21\n", - " -4.521037\n", + " -2.460690\n", + " -2.460690\n", " -2.319982\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -4.521037\n", " \n", " \n", " coef_evening_start_at_19_20_21\n", - " -0.325741\n", + " -0.786571\n", + " -0.786571\n", " -1.015090\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.325741\n", " \n", " \n", " coef_late_end_at_22_23\n", - " -11.516565\n", + " -2.391664\n", + " -2.391664\n", " -2.319982\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -11.516565\n", " \n", " \n", " coef_late_start_at_22_23\n", - " -5.142925\n", + " -0.890587\n", + " -0.890587\n", " -0.737570\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -5.142925\n", " \n", " \n", " coef_midday_end_at_10_11_12\n", - " -1.305196\n", + " -2.145575\n", + " -2.145575\n", " -2.297264\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -1.305196\n", " \n", " \n", " coef_midday_end_at_13_14\n", " 0.000000\n", " 0.000000\n", + " 0.000000\n", + " 0.0\n", + " 0.0\n", " 0.0\n", - " -25.0\n", - " 25.0\n", " 1\n", - " \n", - " 0.000000\n", " \n", " \n", " coef_midday_start_at_10_11_12\n", " 0.000000\n", " 0.000000\n", + " 0.000000\n", + " 0.0\n", + " 0.0\n", " 0.0\n", - " -25.0\n", - " 25.0\n", " 1\n", - " \n", - " 0.000000\n", " \n", " \n", " coef_midday_start_at_13_14_15\n", - " -1.051562\n", + " -0.665045\n", + " -0.665045\n", " -0.775022\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -1.051562\n", " \n", " \n", " coef_pm_peak_end_at_15\n", - " -1.432981\n", + " -0.586475\n", + " -0.586475\n", " -0.578344\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -1.432981\n", " \n", " \n", " coef_pm_peak_end_at_16\n", - " -2.055109\n", + " -1.337297\n", + " -1.337297\n", " -1.094087\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -2.055109\n", " \n", " \n", " coef_pm_peak_end_at_17\n", - " -2.404252\n", + " -1.432487\n", + " -1.432487\n", " -1.165847\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -2.404252\n", " \n", " \n", " coef_pm_peak_end_at_18\n", - " -3.500372\n", + " -1.702240\n", + " -1.702240\n", " -1.496131\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -3.500372\n", " \n", " \n", " coef_pm_peak_start_at_16_17_18\n", - " -0.798588\n", + " -0.000431\n", + " -0.000431\n", " -0.227528\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.798588\n", " \n", " \n", " coef_start_shift_for_business_related_\n", - " -0.083357\n", + " -0.071618\n", + " -0.071618\n", " -0.111300\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.083357\n", " \n", " \n", " coef_start_shift_for_first_sub_tour_of_same_work_tour\n", - " -0.168324\n", + " -0.458549\n", + " -0.458549\n", " -0.543300\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.168324\n", " \n", " \n", " coef_start_shift_for_inbound_auto_travel_time_off_peak\n", - " -0.099019\n", + " -0.011025\n", + " -0.011025\n", " 0.000650\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.099019\n", " \n", " \n", " coef_start_shift_for_number_of_individual_nonmandatory_tours\n", - " 0.026777\n", + " -0.019137\n", + " -0.019137\n", " -0.012800\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.026777\n", " \n", " \n", " coef_start_shift_for_number_of_joint_tours\n", - " -0.019722\n", + " 0.025502\n", + " 0.025502\n", " -0.020600\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.019722\n", " \n", " \n", " coef_start_shift_for_number_of_mandatory_tours\n", - " 0.059018\n", + " -0.067479\n", + " -0.067479\n", " -0.019300\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.059018\n", " \n", " \n", " coef_start_shift_for_outbound_auto_travel_time_off_peak\n", - " 0.100349\n", + " 0.010616\n", + " 0.010616\n", " 0.000650\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " 0.100349\n", " \n", " \n", " coef_start_shift_for_subsequent_sub_tour_of_same_work_tour\n", - " -0.360206\n", + " -0.117673\n", + " -0.117673\n", " -0.184400\n", - " 0.0\n", " -25.0\n", " 25.0\n", + " 0.0\n", " 0\n", - " \n", - " -0.360206\n", " \n", " \n", "\n", "" ], "text/plain": [ - " value initvalue \\\n", - "coef_am_peak_end -1.373169 -2.928312 \n", - "coef_am_peak_start_at_6 -20.592814 -6.156718 \n", - "coef_am_peak_start_at_7 -2.826984 -4.061708 \n", - "coef_am_peak_start_at_8 -1.196528 -2.330535 \n", - "coef_am_peak_start_at_9 -1.619897 -1.881593 \n", - "coef_dummy_for_business_related_purpose_and_dur... -0.663129 -1.543000 \n", - "coef_dummy_for_eating_out_purpose_and_departure... 1.151827 1.511000 \n", - "coef_dummy_for_eating_out_purpose_and_departure... 2.625436 2.721000 \n", - "coef_dummy_for_eating_out_purpose_and_departure... 2.360981 2.122000 \n", - "coef_dummy_for_eating_out_purpose_and_duration_... 0.310405 0.399900 \n", - "coef_duration_of_0_hours 9.959985 -0.906682 \n", - "coef_duration_of_11_to_13_hours -0.374055 0.300000 \n", - "coef_duration_of_14_to_18_hours 0.000000 0.000000 \n", - "coef_duration_of_1_hour 0.000000 0.000000 \n", - "coef_duration_of_2_to_3_hours 9.181283 -1.362176 \n", - "coef_duration_of_4_to_5_hours -0.483141 -0.819618 \n", - "coef_duration_of_6_to_7_hours 10.535613 1.088111 \n", - "coef_duration_of_8_to_10_hours 10.402183 1.734039 \n", - "coef_duration_shift_for_business_related_ 0.600044 0.264600 \n", - "coef_duration_shift_for_first_sub_tour_of_same_... 0.319885 -0.399200 \n", - "coef_duration_shift_for_inbound_auto_travel_tim... -0.118575 0.009810 \n", - "coef_duration_shift_for_number_of_individual_no... 0.009894 -0.042200 \n", - "coef_duration_shift_for_number_of_joint_tours -0.577681 -0.249700 \n", - "coef_duration_shift_for_number_of_mandatory_tours -1.058788 -0.770200 \n", - "coef_duration_shift_for_outbound_auto_travel_ti... 0.145324 0.009810 \n", - "coef_duration_shift_for_subsequent_sub_tour_of_... -10.333603 -0.184400 \n", - "coef_early_end_at_5_6 -25.000000 -2.928312 \n", - "coef_early_start_at_5 -2.204068 -7.765548 \n", - "coef_evening_end_at_19_20_21 -4.521037 -2.319982 \n", - "coef_evening_start_at_19_20_21 -0.325741 -1.015090 \n", - "coef_late_end_at_22_23 -11.516565 -2.319982 \n", - "coef_late_start_at_22_23 -5.142925 -0.737570 \n", - "coef_midday_end_at_10_11_12 -1.305196 -2.297264 \n", - "coef_midday_end_at_13_14 0.000000 0.000000 \n", - "coef_midday_start_at_10_11_12 0.000000 0.000000 \n", - "coef_midday_start_at_13_14_15 -1.051562 -0.775022 \n", - "coef_pm_peak_end_at_15 -1.432981 -0.578344 \n", - "coef_pm_peak_end_at_16 -2.055109 -1.094087 \n", - "coef_pm_peak_end_at_17 -2.404252 -1.165847 \n", - "coef_pm_peak_end_at_18 -3.500372 -1.496131 \n", - "coef_pm_peak_start_at_16_17_18 -0.798588 -0.227528 \n", - "coef_start_shift_for_business_related_ -0.083357 -0.111300 \n", - "coef_start_shift_for_first_sub_tour_of_same_wor... -0.168324 -0.543300 \n", - "coef_start_shift_for_inbound_auto_travel_time_o... -0.099019 0.000650 \n", - "coef_start_shift_for_number_of_individual_nonma... 0.026777 -0.012800 \n", - "coef_start_shift_for_number_of_joint_tours -0.019722 -0.020600 \n", - "coef_start_shift_for_number_of_mandatory_tours 0.059018 -0.019300 \n", - "coef_start_shift_for_outbound_auto_travel_time_... 0.100349 0.000650 \n", - "coef_start_shift_for_subsequent_sub_tour_of_sam... -0.360206 -0.184400 \n", + " value best \\\n", + "param_name \n", + "coef_am_peak_end -2.543876 -2.543876 \n", + "coef_am_peak_start_at_6 -5.790935 -5.790935 \n", + "coef_am_peak_start_at_7 -4.238642 -4.238642 \n", + "coef_am_peak_start_at_8 -2.371798 -2.371798 \n", + "coef_am_peak_start_at_9 -2.106247 -2.106247 \n", + "coef_dummy_for_business_related_purpose_and_dur... -1.656086 -1.656086 \n", + "coef_dummy_for_eating_out_purpose_and_departure... 1.371453 1.371453 \n", + "coef_dummy_for_eating_out_purpose_and_departure... 2.454861 2.454861 \n", + "coef_dummy_for_eating_out_purpose_and_departure... 1.832150 1.832150 \n", + "coef_dummy_for_eating_out_purpose_and_duration_... 0.534786 0.534786 \n", + "coef_duration_of_0_hours -1.056506 -1.056506 \n", + "coef_duration_of_11_to_13_hours 0.292100 0.292100 \n", + "coef_duration_of_14_to_18_hours 0.000000 0.000000 \n", + "coef_duration_of_1_hour 0.000000 0.000000 \n", + "coef_duration_of_2_to_3_hours -1.478463 -1.478463 \n", + "coef_duration_of_4_to_5_hours -1.032651 -1.032651 \n", + "coef_duration_of_6_to_7_hours 1.074781 1.074781 \n", + "coef_duration_of_8_to_10_hours 1.476278 1.476278 \n", + "coef_duration_shift_for_business_related_ 0.237322 0.237322 \n", + "coef_duration_shift_for_first_sub_tour_of_same_... -0.199899 -0.199899 \n", + "coef_duration_shift_for_inbound_auto_travel_tim... 0.022979 0.022979 \n", + "coef_duration_shift_for_number_of_individual_no... -0.075913 -0.075913 \n", + "coef_duration_shift_for_number_of_joint_tours -0.234618 -0.234618 \n", + "coef_duration_shift_for_number_of_mandatory_tours -0.909117 -0.909117 \n", + "coef_duration_shift_for_outbound_auto_travel_ti... -0.002863 -0.002863 \n", + "coef_duration_shift_for_subsequent_sub_tour_of_... -0.371148 -0.371148 \n", + "coef_early_end_at_5_6 -2.693000 -2.693000 \n", + "coef_early_start_at_5 -7.645209 -7.645209 \n", + "coef_evening_end_at_19_20_21 -2.460690 -2.460690 \n", + "coef_evening_start_at_19_20_21 -0.786571 -0.786571 \n", + "coef_late_end_at_22_23 -2.391664 -2.391664 \n", + "coef_late_start_at_22_23 -0.890587 -0.890587 \n", + "coef_midday_end_at_10_11_12 -2.145575 -2.145575 \n", + "coef_midday_end_at_13_14 0.000000 0.000000 \n", + "coef_midday_start_at_10_11_12 0.000000 0.000000 \n", + "coef_midday_start_at_13_14_15 -0.665045 -0.665045 \n", + "coef_pm_peak_end_at_15 -0.586475 -0.586475 \n", + "coef_pm_peak_end_at_16 -1.337297 -1.337297 \n", + "coef_pm_peak_end_at_17 -1.432487 -1.432487 \n", + "coef_pm_peak_end_at_18 -1.702240 -1.702240 \n", + "coef_pm_peak_start_at_16_17_18 -0.000431 -0.000431 \n", + "coef_start_shift_for_business_related_ -0.071618 -0.071618 \n", + "coef_start_shift_for_first_sub_tour_of_same_wor... -0.458549 -0.458549 \n", + "coef_start_shift_for_inbound_auto_travel_time_o... -0.011025 -0.011025 \n", + "coef_start_shift_for_number_of_individual_nonma... -0.019137 -0.019137 \n", + "coef_start_shift_for_number_of_joint_tours 0.025502 0.025502 \n", + "coef_start_shift_for_number_of_mandatory_tours -0.067479 -0.067479 \n", + "coef_start_shift_for_outbound_auto_travel_time_... 0.010616 0.010616 \n", + "coef_start_shift_for_subsequent_sub_tour_of_sam... -0.117673 -0.117673 \n", "\n", - " nullvalue minimum \\\n", - "coef_am_peak_end 0.0 -25.0 \n", - "coef_am_peak_start_at_6 0.0 -25.0 \n", - "coef_am_peak_start_at_7 0.0 -25.0 \n", - "coef_am_peak_start_at_8 0.0 -25.0 \n", - "coef_am_peak_start_at_9 0.0 -25.0 \n", - "coef_dummy_for_business_related_purpose_and_dur... 0.0 -25.0 \n", - "coef_dummy_for_eating_out_purpose_and_departure... 0.0 -25.0 \n", - "coef_dummy_for_eating_out_purpose_and_departure... 0.0 -25.0 \n", - "coef_dummy_for_eating_out_purpose_and_departure... 0.0 -25.0 \n", - "coef_dummy_for_eating_out_purpose_and_duration_... 0.0 -25.0 \n", - "coef_duration_of_0_hours 0.0 -25.0 \n", - "coef_duration_of_11_to_13_hours 0.0 -25.0 \n", - "coef_duration_of_14_to_18_hours 0.0 -25.0 \n", - "coef_duration_of_1_hour 0.0 -25.0 \n", - "coef_duration_of_2_to_3_hours 0.0 -25.0 \n", - "coef_duration_of_4_to_5_hours 0.0 -25.0 \n", - "coef_duration_of_6_to_7_hours 0.0 -25.0 \n", - "coef_duration_of_8_to_10_hours 0.0 -25.0 \n", - "coef_duration_shift_for_business_related_ 0.0 -25.0 \n", - "coef_duration_shift_for_first_sub_tour_of_same_... 0.0 -25.0 \n", - "coef_duration_shift_for_inbound_auto_travel_tim... 0.0 -25.0 \n", - "coef_duration_shift_for_number_of_individual_no... 0.0 -25.0 \n", - "coef_duration_shift_for_number_of_joint_tours 0.0 -25.0 \n", - "coef_duration_shift_for_number_of_mandatory_tours 0.0 -25.0 \n", - "coef_duration_shift_for_outbound_auto_travel_ti... 0.0 -25.0 \n", - "coef_duration_shift_for_subsequent_sub_tour_of_... 0.0 -25.0 \n", - "coef_early_end_at_5_6 0.0 -25.0 \n", - "coef_early_start_at_5 0.0 -25.0 \n", - "coef_evening_end_at_19_20_21 0.0 -25.0 \n", - "coef_evening_start_at_19_20_21 0.0 -25.0 \n", - "coef_late_end_at_22_23 0.0 -25.0 \n", - "coef_late_start_at_22_23 0.0 -25.0 \n", - "coef_midday_end_at_10_11_12 0.0 -25.0 \n", - "coef_midday_end_at_13_14 0.0 -25.0 \n", - "coef_midday_start_at_10_11_12 0.0 -25.0 \n", - "coef_midday_start_at_13_14_15 0.0 -25.0 \n", - "coef_pm_peak_end_at_15 0.0 -25.0 \n", - "coef_pm_peak_end_at_16 0.0 -25.0 \n", - "coef_pm_peak_end_at_17 0.0 -25.0 \n", - "coef_pm_peak_end_at_18 0.0 -25.0 \n", - "coef_pm_peak_start_at_16_17_18 0.0 -25.0 \n", - "coef_start_shift_for_business_related_ 0.0 -25.0 \n", - "coef_start_shift_for_first_sub_tour_of_same_wor... 0.0 -25.0 \n", - "coef_start_shift_for_inbound_auto_travel_time_o... 0.0 -25.0 \n", - "coef_start_shift_for_number_of_individual_nonma... 0.0 -25.0 \n", - "coef_start_shift_for_number_of_joint_tours 0.0 -25.0 \n", - "coef_start_shift_for_number_of_mandatory_tours 0.0 -25.0 \n", - "coef_start_shift_for_outbound_auto_travel_time_... 0.0 -25.0 \n", - "coef_start_shift_for_subsequent_sub_tour_of_sam... 0.0 -25.0 \n", + " initvalue minimum \\\n", + "param_name \n", + "coef_am_peak_end -2.928312 -25.0 \n", + "coef_am_peak_start_at_6 -6.156718 -25.0 \n", + "coef_am_peak_start_at_7 -4.061708 -25.0 \n", + "coef_am_peak_start_at_8 -2.330535 -25.0 \n", + "coef_am_peak_start_at_9 -1.881593 -25.0 \n", + "coef_dummy_for_business_related_purpose_and_dur... -1.543000 -25.0 \n", + "coef_dummy_for_eating_out_purpose_and_departure... 1.511000 -25.0 \n", + "coef_dummy_for_eating_out_purpose_and_departure... 2.721000 -25.0 \n", + "coef_dummy_for_eating_out_purpose_and_departure... 2.122000 -25.0 \n", + "coef_dummy_for_eating_out_purpose_and_duration_... 0.399900 -25.0 \n", + "coef_duration_of_0_hours -0.906682 -25.0 \n", + "coef_duration_of_11_to_13_hours 0.300000 -25.0 \n", + "coef_duration_of_14_to_18_hours 0.000000 0.0 \n", + "coef_duration_of_1_hour 0.000000 0.0 \n", + "coef_duration_of_2_to_3_hours -1.362176 -25.0 \n", + "coef_duration_of_4_to_5_hours -0.819618 -25.0 \n", + "coef_duration_of_6_to_7_hours 1.088111 -25.0 \n", + "coef_duration_of_8_to_10_hours 1.734038 -25.0 \n", + "coef_duration_shift_for_business_related_ 0.264600 -25.0 \n", + "coef_duration_shift_for_first_sub_tour_of_same_... -0.399200 -25.0 \n", + "coef_duration_shift_for_inbound_auto_travel_tim... 0.009810 -25.0 \n", + "coef_duration_shift_for_number_of_individual_no... -0.042200 -25.0 \n", + "coef_duration_shift_for_number_of_joint_tours -0.249700 -25.0 \n", + "coef_duration_shift_for_number_of_mandatory_tours -0.770200 -25.0 \n", + "coef_duration_shift_for_outbound_auto_travel_ti... 0.009810 -25.0 \n", + "coef_duration_shift_for_subsequent_sub_tour_of_... -0.184400 -25.0 \n", + "coef_early_end_at_5_6 -2.928312 -25.0 \n", + "coef_early_start_at_5 -7.765549 -25.0 \n", + "coef_evening_end_at_19_20_21 -2.319982 -25.0 \n", + "coef_evening_start_at_19_20_21 -1.015090 -25.0 \n", + "coef_late_end_at_22_23 -2.319982 -25.0 \n", + "coef_late_start_at_22_23 -0.737570 -25.0 \n", + "coef_midday_end_at_10_11_12 -2.297264 -25.0 \n", + "coef_midday_end_at_13_14 0.000000 0.0 \n", + "coef_midday_start_at_10_11_12 0.000000 0.0 \n", + "coef_midday_start_at_13_14_15 -0.775022 -25.0 \n", + "coef_pm_peak_end_at_15 -0.578344 -25.0 \n", + "coef_pm_peak_end_at_16 -1.094087 -25.0 \n", + "coef_pm_peak_end_at_17 -1.165847 -25.0 \n", + "coef_pm_peak_end_at_18 -1.496131 -25.0 \n", + "coef_pm_peak_start_at_16_17_18 -0.227528 -25.0 \n", + "coef_start_shift_for_business_related_ -0.111300 -25.0 \n", + "coef_start_shift_for_first_sub_tour_of_same_wor... -0.543300 -25.0 \n", + "coef_start_shift_for_inbound_auto_travel_time_o... 0.000650 -25.0 \n", + "coef_start_shift_for_number_of_individual_nonma... -0.012800 -25.0 \n", + "coef_start_shift_for_number_of_joint_tours -0.020600 -25.0 \n", + "coef_start_shift_for_number_of_mandatory_tours -0.019300 -25.0 \n", + "coef_start_shift_for_outbound_auto_travel_time_... 0.000650 -25.0 \n", + "coef_start_shift_for_subsequent_sub_tour_of_sam... -0.184400 -25.0 \n", "\n", - " maximum holdfast note \\\n", - "coef_am_peak_end 25.0 0 \n", - "coef_am_peak_start_at_6 25.0 0 \n", - "coef_am_peak_start_at_7 25.0 0 \n", - "coef_am_peak_start_at_8 25.0 0 \n", - "coef_am_peak_start_at_9 25.0 0 \n", - "coef_dummy_for_business_related_purpose_and_dur... 25.0 0 \n", - "coef_dummy_for_eating_out_purpose_and_departure... 25.0 0 \n", - "coef_dummy_for_eating_out_purpose_and_departure... 25.0 0 \n", - "coef_dummy_for_eating_out_purpose_and_departure... 25.0 0 \n", - "coef_dummy_for_eating_out_purpose_and_duration_... 25.0 0 \n", - "coef_duration_of_0_hours 25.0 0 \n", - "coef_duration_of_11_to_13_hours 25.0 0 \n", - "coef_duration_of_14_to_18_hours 25.0 1 \n", - "coef_duration_of_1_hour 25.0 1 \n", - "coef_duration_of_2_to_3_hours 25.0 0 \n", - "coef_duration_of_4_to_5_hours 25.0 0 \n", - "coef_duration_of_6_to_7_hours 25.0 0 \n", - "coef_duration_of_8_to_10_hours 25.0 0 \n", - "coef_duration_shift_for_business_related_ 25.0 0 \n", - "coef_duration_shift_for_first_sub_tour_of_same_... 25.0 0 \n", - "coef_duration_shift_for_inbound_auto_travel_tim... 25.0 0 \n", - "coef_duration_shift_for_number_of_individual_no... 25.0 0 \n", - "coef_duration_shift_for_number_of_joint_tours 25.0 0 \n", - "coef_duration_shift_for_number_of_mandatory_tours 25.0 0 \n", - "coef_duration_shift_for_outbound_auto_travel_ti... 25.0 0 \n", - "coef_duration_shift_for_subsequent_sub_tour_of_... 25.0 0 \n", - "coef_early_end_at_5_6 25.0 0 \n", - "coef_early_start_at_5 25.0 0 \n", - "coef_evening_end_at_19_20_21 25.0 0 \n", - "coef_evening_start_at_19_20_21 25.0 0 \n", - "coef_late_end_at_22_23 25.0 0 \n", - "coef_late_start_at_22_23 25.0 0 \n", - "coef_midday_end_at_10_11_12 25.0 0 \n", - "coef_midday_end_at_13_14 25.0 1 \n", - "coef_midday_start_at_10_11_12 25.0 1 \n", - "coef_midday_start_at_13_14_15 25.0 0 \n", - "coef_pm_peak_end_at_15 25.0 0 \n", - "coef_pm_peak_end_at_16 25.0 0 \n", - "coef_pm_peak_end_at_17 25.0 0 \n", - "coef_pm_peak_end_at_18 25.0 0 \n", - "coef_pm_peak_start_at_16_17_18 25.0 0 \n", - "coef_start_shift_for_business_related_ 25.0 0 \n", - "coef_start_shift_for_first_sub_tour_of_same_wor... 25.0 0 \n", - "coef_start_shift_for_inbound_auto_travel_time_o... 25.0 0 \n", - "coef_start_shift_for_number_of_individual_nonma... 25.0 0 \n", - "coef_start_shift_for_number_of_joint_tours 25.0 0 \n", - "coef_start_shift_for_number_of_mandatory_tours 25.0 0 \n", - "coef_start_shift_for_outbound_auto_travel_time_... 25.0 0 \n", - "coef_start_shift_for_subsequent_sub_tour_of_sam... 25.0 0 \n", + " maximum nullvalue \\\n", + "param_name \n", + "coef_am_peak_end 25.0 0.0 \n", + "coef_am_peak_start_at_6 25.0 0.0 \n", + "coef_am_peak_start_at_7 25.0 0.0 \n", + "coef_am_peak_start_at_8 25.0 0.0 \n", + "coef_am_peak_start_at_9 25.0 0.0 \n", + "coef_dummy_for_business_related_purpose_and_dur... 25.0 0.0 \n", + "coef_dummy_for_eating_out_purpose_and_departure... 25.0 0.0 \n", + "coef_dummy_for_eating_out_purpose_and_departure... 25.0 0.0 \n", + "coef_dummy_for_eating_out_purpose_and_departure... 25.0 0.0 \n", + "coef_dummy_for_eating_out_purpose_and_duration_... 25.0 0.0 \n", + "coef_duration_of_0_hours 25.0 0.0 \n", + "coef_duration_of_11_to_13_hours 25.0 0.0 \n", + "coef_duration_of_14_to_18_hours 0.0 0.0 \n", + "coef_duration_of_1_hour 0.0 0.0 \n", + "coef_duration_of_2_to_3_hours 25.0 0.0 \n", + "coef_duration_of_4_to_5_hours 25.0 0.0 \n", + "coef_duration_of_6_to_7_hours 25.0 0.0 \n", + "coef_duration_of_8_to_10_hours 25.0 0.0 \n", + "coef_duration_shift_for_business_related_ 25.0 0.0 \n", + "coef_duration_shift_for_first_sub_tour_of_same_... 25.0 0.0 \n", + "coef_duration_shift_for_inbound_auto_travel_tim... 25.0 0.0 \n", + "coef_duration_shift_for_number_of_individual_no... 25.0 0.0 \n", + "coef_duration_shift_for_number_of_joint_tours 25.0 0.0 \n", + "coef_duration_shift_for_number_of_mandatory_tours 25.0 0.0 \n", + "coef_duration_shift_for_outbound_auto_travel_ti... 25.0 0.0 \n", + "coef_duration_shift_for_subsequent_sub_tour_of_... 25.0 0.0 \n", + "coef_early_end_at_5_6 25.0 0.0 \n", + "coef_early_start_at_5 25.0 0.0 \n", + "coef_evening_end_at_19_20_21 25.0 0.0 \n", + "coef_evening_start_at_19_20_21 25.0 0.0 \n", + "coef_late_end_at_22_23 25.0 0.0 \n", + "coef_late_start_at_22_23 25.0 0.0 \n", + "coef_midday_end_at_10_11_12 25.0 0.0 \n", + "coef_midday_end_at_13_14 0.0 0.0 \n", + "coef_midday_start_at_10_11_12 0.0 0.0 \n", + "coef_midday_start_at_13_14_15 25.0 0.0 \n", + "coef_pm_peak_end_at_15 25.0 0.0 \n", + "coef_pm_peak_end_at_16 25.0 0.0 \n", + "coef_pm_peak_end_at_17 25.0 0.0 \n", + "coef_pm_peak_end_at_18 25.0 0.0 \n", + "coef_pm_peak_start_at_16_17_18 25.0 0.0 \n", + "coef_start_shift_for_business_related_ 25.0 0.0 \n", + "coef_start_shift_for_first_sub_tour_of_same_wor... 25.0 0.0 \n", + "coef_start_shift_for_inbound_auto_travel_time_o... 25.0 0.0 \n", + "coef_start_shift_for_number_of_individual_nonma... 25.0 0.0 \n", + "coef_start_shift_for_number_of_joint_tours 25.0 0.0 \n", + "coef_start_shift_for_number_of_mandatory_tours 25.0 0.0 \n", + "coef_start_shift_for_outbound_auto_travel_time_... 25.0 0.0 \n", + "coef_start_shift_for_subsequent_sub_tour_of_sam... 25.0 0.0 \n", "\n", - " best \n", - "coef_am_peak_end -1.373169 \n", - "coef_am_peak_start_at_6 -20.592814 \n", - "coef_am_peak_start_at_7 -2.826984 \n", - "coef_am_peak_start_at_8 -1.196528 \n", - "coef_am_peak_start_at_9 -1.619897 \n", - "coef_dummy_for_business_related_purpose_and_dur... -0.663129 \n", - "coef_dummy_for_eating_out_purpose_and_departure... 1.151827 \n", - "coef_dummy_for_eating_out_purpose_and_departure... 2.625436 \n", - "coef_dummy_for_eating_out_purpose_and_departure... 2.360981 \n", - "coef_dummy_for_eating_out_purpose_and_duration_... 0.310405 \n", - "coef_duration_of_0_hours 9.959985 \n", - "coef_duration_of_11_to_13_hours -0.374055 \n", - "coef_duration_of_14_to_18_hours 0.000000 \n", - "coef_duration_of_1_hour 0.000000 \n", - "coef_duration_of_2_to_3_hours 9.181283 \n", - "coef_duration_of_4_to_5_hours -0.483141 \n", - "coef_duration_of_6_to_7_hours 10.535613 \n", - "coef_duration_of_8_to_10_hours 10.402183 \n", - "coef_duration_shift_for_business_related_ 0.600044 \n", - "coef_duration_shift_for_first_sub_tour_of_same_... 0.319885 \n", - "coef_duration_shift_for_inbound_auto_travel_tim... -0.118575 \n", - "coef_duration_shift_for_number_of_individual_no... 0.009894 \n", - "coef_duration_shift_for_number_of_joint_tours -0.577681 \n", - "coef_duration_shift_for_number_of_mandatory_tours -1.058788 \n", - "coef_duration_shift_for_outbound_auto_travel_ti... 0.145324 \n", - "coef_duration_shift_for_subsequent_sub_tour_of_... -10.333603 \n", - "coef_early_end_at_5_6 -25.000000 \n", - "coef_early_start_at_5 -2.204068 \n", - "coef_evening_end_at_19_20_21 -4.521037 \n", - "coef_evening_start_at_19_20_21 -0.325741 \n", - "coef_late_end_at_22_23 -11.516565 \n", - "coef_late_start_at_22_23 -5.142925 \n", - "coef_midday_end_at_10_11_12 -1.305196 \n", - "coef_midday_end_at_13_14 0.000000 \n", - "coef_midday_start_at_10_11_12 0.000000 \n", - "coef_midday_start_at_13_14_15 -1.051562 \n", - "coef_pm_peak_end_at_15 -1.432981 \n", - "coef_pm_peak_end_at_16 -2.055109 \n", - "coef_pm_peak_end_at_17 -2.404252 \n", - "coef_pm_peak_end_at_18 -3.500372 \n", - "coef_pm_peak_start_at_16_17_18 -0.798588 \n", - "coef_start_shift_for_business_related_ -0.083357 \n", - "coef_start_shift_for_first_sub_tour_of_same_wor... -0.168324 \n", - "coef_start_shift_for_inbound_auto_travel_time_o... -0.099019 \n", - "coef_start_shift_for_number_of_individual_nonma... 0.026777 \n", - "coef_start_shift_for_number_of_joint_tours -0.019722 \n", - "coef_start_shift_for_number_of_mandatory_tours 0.059018 \n", - "coef_start_shift_for_outbound_auto_travel_time_... 0.100349 \n", - "coef_start_shift_for_subsequent_sub_tour_of_sam... -0.360206 " + " holdfast \n", + "param_name \n", + "coef_am_peak_end 0 \n", + "coef_am_peak_start_at_6 0 \n", + "coef_am_peak_start_at_7 0 \n", + "coef_am_peak_start_at_8 0 \n", + "coef_am_peak_start_at_9 0 \n", + "coef_dummy_for_business_related_purpose_and_dur... 0 \n", + "coef_dummy_for_eating_out_purpose_and_departure... 0 \n", + "coef_dummy_for_eating_out_purpose_and_departure... 0 \n", + "coef_dummy_for_eating_out_purpose_and_departure... 0 \n", + "coef_dummy_for_eating_out_purpose_and_duration_... 0 \n", + "coef_duration_of_0_hours 0 \n", + "coef_duration_of_11_to_13_hours 0 \n", + "coef_duration_of_14_to_18_hours 1 \n", + "coef_duration_of_1_hour 1 \n", + "coef_duration_of_2_to_3_hours 0 \n", + "coef_duration_of_4_to_5_hours 0 \n", + "coef_duration_of_6_to_7_hours 0 \n", + "coef_duration_of_8_to_10_hours 0 \n", + "coef_duration_shift_for_business_related_ 0 \n", + "coef_duration_shift_for_first_sub_tour_of_same_... 0 \n", + "coef_duration_shift_for_inbound_auto_travel_tim... 0 \n", + "coef_duration_shift_for_number_of_individual_no... 0 \n", + "coef_duration_shift_for_number_of_joint_tours 0 \n", + "coef_duration_shift_for_number_of_mandatory_tours 0 \n", + "coef_duration_shift_for_outbound_auto_travel_ti... 0 \n", + "coef_duration_shift_for_subsequent_sub_tour_of_... 0 \n", + "coef_early_end_at_5_6 0 \n", + "coef_early_start_at_5 0 \n", + "coef_evening_end_at_19_20_21 0 \n", + "coef_evening_start_at_19_20_21 0 \n", + "coef_late_end_at_22_23 0 \n", + "coef_late_start_at_22_23 0 \n", + "coef_midday_end_at_10_11_12 0 \n", + "coef_midday_end_at_13_14 1 \n", + "coef_midday_start_at_10_11_12 1 \n", + "coef_midday_start_at_13_14_15 0 \n", + "coef_pm_peak_end_at_15 0 \n", + "coef_pm_peak_end_at_16 0 \n", + "coef_pm_peak_end_at_17 0 \n", + "coef_pm_peak_end_at_18 0 \n", + "coef_pm_peak_start_at_16_17_18 0 \n", + "coef_start_shift_for_business_related_ 0 \n", + "coef_start_shift_for_first_sub_tour_of_same_wor... 0 \n", + "coef_start_shift_for_inbound_auto_travel_time_o... 0 \n", + "coef_start_shift_for_number_of_individual_nonma... 0 \n", + "coef_start_shift_for_number_of_joint_tours 0 \n", + "coef_start_shift_for_number_of_mandatory_tours 0 \n", + "coef_start_shift_for_outbound_auto_travel_time_... 0 \n", + "coef_start_shift_for_subsequent_sub_tour_of_sam... 0 " ] }, "metadata": {}, "output_type": "display_data" }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - ":1: PossibleOverspecification: WARNING: Model is possibly over-specified (hessian is nearly singular).\n", - " model.estimate()\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 4.444524225101147e-11 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n" - ] - }, { "data": { "text/html": [ @@ -2698,51 +2845,51 @@ " \n", " \n", " coef_am_peak_end\n", - " -1.373169\n", + " -2.543876\n", " \n", " \n", " coef_am_peak_start_at_6\n", - " -20.592814\n", + " -5.790935\n", " \n", " \n", " coef_am_peak_start_at_7\n", - " -2.826984\n", + " -4.238642\n", " \n", " \n", " coef_am_peak_start_at_8\n", - " -1.196528\n", + " -2.371798\n", " \n", " \n", " coef_am_peak_start_at_9\n", - " -1.619897\n", + " -2.106247\n", " \n", " \n", " coef_dummy_for_business_related_purpose_and_duration_from_0_to_1\n", - " -0.663129\n", + " -1.656086\n", " \n", " \n", " coef_dummy_for_eating_out_purpose_and_departure_at_11\n", - " 1.151827\n", + " 1.371453\n", " \n", " \n", " coef_dummy_for_eating_out_purpose_and_departure_at_12\n", - " 2.625436\n", + " 2.454861\n", " \n", " \n", " coef_dummy_for_eating_out_purpose_and_departure_at_13\n", - " 2.360981\n", + " 1.832150\n", " \n", " \n", " coef_dummy_for_eating_out_purpose_and_duration_of_1_hour\n", - " 0.310405\n", + " 0.534786\n", " \n", " \n", " coef_duration_of_0_hours\n", - " 9.959985\n", + " -1.056506\n", " \n", " \n", " coef_duration_of_11_to_13_hours\n", - " -0.374055\n", + " 0.292100\n", " \n", " \n", " coef_duration_of_14_to_18_hours\n", @@ -2754,79 +2901,79 @@ " \n", " \n", " coef_duration_of_2_to_3_hours\n", - " 9.181283\n", + " -1.478463\n", " \n", " \n", " coef_duration_of_4_to_5_hours\n", - " -0.483141\n", + " -1.032651\n", " \n", " \n", " coef_duration_of_6_to_7_hours\n", - " 10.535613\n", + " 1.074781\n", " \n", " \n", " coef_duration_of_8_to_10_hours\n", - " 10.402183\n", + " 1.476278\n", " \n", " \n", " coef_duration_shift_for_business_related_\n", - " 0.600044\n", + " 0.237322\n", " \n", " \n", " coef_duration_shift_for_first_sub_tour_of_same_work_tour\n", - " 0.319885\n", + " -0.199899\n", " \n", " \n", " coef_duration_shift_for_inbound_auto_travel_time_off_peak\n", - " -0.118575\n", + " 0.022979\n", " \n", " \n", " coef_duration_shift_for_number_of_individual_nonmandatory_tours\n", - " 0.009894\n", + " -0.075913\n", " \n", " \n", " coef_duration_shift_for_number_of_joint_tours\n", - " -0.577681\n", + " -0.234618\n", " \n", " \n", " coef_duration_shift_for_number_of_mandatory_tours\n", - " -1.058788\n", + " -0.909117\n", " \n", " \n", " coef_duration_shift_for_outbound_auto_travel_time_off_peak\n", - " 0.145324\n", + " -0.002863\n", " \n", " \n", " coef_duration_shift_for_subsequent_sub_tour_of_same_work_tour\n", - " -10.333603\n", + " -0.371148\n", " \n", " \n", " coef_early_end_at_5_6\n", - " -25.000000\n", + " -2.693000\n", " \n", " \n", " coef_early_start_at_5\n", - " -2.204068\n", + " -7.645209\n", " \n", " \n", " coef_evening_end_at_19_20_21\n", - " -4.521037\n", + " -2.460690\n", " \n", " \n", " coef_evening_start_at_19_20_21\n", - " -0.325741\n", + " -0.786571\n", " \n", " \n", " coef_late_end_at_22_23\n", - " -11.516565\n", + " -2.391664\n", " \n", " \n", " coef_late_start_at_22_23\n", - " -5.142925\n", + " -0.890587\n", " \n", " \n", " coef_midday_end_at_10_11_12\n", - " -1.305196\n", + " -2.145575\n", " \n", " \n", " coef_midday_end_at_13_14\n", @@ -2838,62 +2985,62 @@ " \n", " \n", " coef_midday_start_at_13_14_15\n", - " -1.051562\n", + " -0.665045\n", " \n", " \n", " coef_pm_peak_end_at_15\n", - " -1.432981\n", + " -0.586475\n", " \n", " \n", " coef_pm_peak_end_at_16\n", - " -2.055109\n", + " -1.337297\n", " \n", " \n", " coef_pm_peak_end_at_17\n", - " -2.404252\n", + " -1.432487\n", " \n", " \n", " coef_pm_peak_end_at_18\n", - " -3.500372\n", + " -1.702240\n", " \n", " \n", " coef_pm_peak_start_at_16_17_18\n", - " -0.798588\n", + " -0.000431\n", " \n", " \n", " coef_start_shift_for_business_related_\n", - " -0.083357\n", + " -0.071618\n", " \n", " \n", " coef_start_shift_for_first_sub_tour_of_same_work_tour\n", - " -0.168324\n", + " -0.458549\n", " \n", " \n", " coef_start_shift_for_inbound_auto_travel_time_off_peak\n", - " -0.099019\n", + " -0.011025\n", " \n", " \n", " coef_start_shift_for_number_of_individual_nonmandatory_tours\n", - " 0.026777\n", + " -0.019137\n", " \n", " \n", " coef_start_shift_for_number_of_joint_tours\n", - " -0.019722\n", + " 0.025502\n", " \n", " \n", " coef_start_shift_for_number_of_mandatory_tours\n", - " 0.059018\n", + " -0.067479\n", " \n", " \n", " coef_start_shift_for_outbound_auto_travel_time_off_peak\n", - " 0.100349\n", + " 0.010616\n", " \n", " \n", " coef_start_shift_for_subsequent_sub_tour_of_same_work_tour\n", - " -0.360206\n", + " -0.117673\n", " \n", " \n", - "loglike-1401.9305368056416d_loglike\n", + "
logloss2.887476765558531d_logloss\n", " \n", " \n", " \n", @@ -2903,51 +3050,51 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2959,79 +3106,79 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3043,185 +3190,185 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - "
coef_am_peak_end1.755671e-04-4.854218e-05
coef_am_peak_start_at_6-3.041241e-081.910552e-05
coef_am_peak_start_at_7-8.670115e-059.916948e-07
coef_am_peak_start_at_85.028242e-054.037261e-05
coef_am_peak_start_at_95.798423e-041.440668e-04
coef_dummy_for_business_related_purpose_and_duration_from_0_to_11.601202e-04-1.280892e-04
coef_dummy_for_eating_out_purpose_and_departure_at_11-3.475790e-051.803296e-04
coef_dummy_for_eating_out_purpose_and_departure_at_12-5.671365e-05-1.483346e-04
coef_dummy_for_eating_out_purpose_and_departure_at_13-2.578419e-051.713493e-04
coef_dummy_for_eating_out_purpose_and_duration_of_1_hour1.872976e-04-2.135625e-04
coef_duration_of_0_hours-1.158083e-038.415289e-05
coef_duration_of_11_to_13_hours-1.673798e-06-6.167370e-06
coef_duration_of_14_to_18_hours
coef_duration_of_2_to_3_hours9.972871e-04-1.347427e-04
coef_duration_of_4_to_5_hours1.179130e-041.170007e-05
coef_duration_of_6_to_7_hours-3.119839e-04-7.452797e-05
coef_duration_of_8_to_10_hours1.749841e-06-4.591330e-06
coef_duration_shift_for_business_related_-1.422810e-031.631608e-04
coef_duration_shift_for_first_sub_tour_of_same_work_tour-6.454765e-046.894456e-05
coef_duration_shift_for_inbound_auto_travel_time_off_peak8.510358e-03-1.645782e-04
coef_duration_shift_for_number_of_individual_nonmandatory_tours-1.352429e-03-1.965446e-04
coef_duration_shift_for_number_of_joint_tours1.961158e-042.409234e-04
coef_duration_shift_for_number_of_mandatory_tours-6.872100e-04-9.571494e-05
coef_duration_shift_for_outbound_auto_travel_time_off_peak7.485785e-035.935593e-05
coef_duration_shift_for_subsequent_sub_tour_of_same_work_tour-5.553217e-06-5.141939e-05
coef_early_end_at_5_6-4.444583e-111.627725e-05
coef_early_start_at_55.404961e-057.249674e-05
coef_evening_end_at_19_20_21-3.938375e-04-1.112621e-04
coef_evening_start_at_19_20_21-1.613864e-041.220311e-04
coef_late_end_at_22_23-3.810622e-04-5.597541e-05
coef_late_start_at_22_23-1.853500e-06-9.478339e-05
coef_midday_end_at_10_11_126.960928e-04-2.023533e-05
coef_midday_end_at_13_14
coef_midday_start_at_13_14_158.833428e-058.980809e-05
coef_pm_peak_end_at_15-2.278624e-04-2.232845e-04
coef_pm_peak_end_at_16-3.377131e-05-4.780466e-05
coef_pm_peak_end_at_17-4.096157e-043.154057e-04
coef_pm_peak_end_at_18-4.205497e-04-1.485193e-04
coef_pm_peak_start_at_16_17_18-8.339350e-04-3.850429e-05
coef_start_shift_for_business_related_1.194878e-04-2.801495e-06
coef_start_shift_for_first_sub_tour_of_same_work_tour-1.481936e-021.192141e-04
coef_start_shift_for_inbound_auto_travel_time_off_peak-1.201511e-017.248793e-05
coef_start_shift_for_number_of_individual_nonmandatory_tours-1.882400e-03-4.273167e-05
coef_start_shift_for_number_of_joint_tours-1.517039e-034.702349e-05
coef_start_shift_for_number_of_mandatory_tours-1.475028e-02-4.354135e-05
coef_start_shift_for_outbound_auto_travel_time_off_peak-1.163942e-01-4.170920e-05
coef_start_shift_for_subsequent_sub_tour_of_same_work_tour2.856907e-051.286129e-04
nit68nfev132njev68status0message'Optimization terminated successfully'successTrueelapsed_time0:00:01.774115method'slsqp'n_cases464iteration_number68logloss3.021402018977676" + "nit68nfev75njev68status0message'Optimization terminated successfully'successTrueelapsed_time0:00:05.198235method'slsqp'n_cases6036iteration_number68loglike-17373.947698365682" ], "text/plain": [ - "┣ x: coef_am_peak_end -1.373169\n", - "┃ coef_am_peak_start_at_6 -20.592814\n", - "┃ coef_am_peak_start_at_7 -2.826984\n", - "┃ coef_am_peak_start_at_8 -1.196528\n", - "┃ coef_am_peak_start_at_9 -1.619897\n", - "┃ coef_dummy_for_business_related_purpose_and_duration_from_0_to_1 -0.663129\n", - "┃ coef_dummy_for_eating_out_purpose_and_departure_at_11 1.151827\n", - "┃ coef_dummy_for_eating_out_purpose_and_departure_at_12 2.625436\n", - "┃ coef_dummy_for_eating_out_purpose_and_departure_at_13 2.360981\n", - "┃ coef_dummy_for_eating_out_purpose_and_duration_of_1_hour 0.310405\n", - "┃ coef_duration_of_0_hours 9.959985\n", - "┃ coef_duration_of_11_to_13_hours -0.374055\n", - "┃ coef_duration_of_14_to_18_hours 0.000000\n", - "┃ coef_duration_of_1_hour 0.000000\n", - "┃ coef_duration_of_2_to_3_hours 9.181283\n", - "┃ coef_duration_of_4_to_5_hours -0.483141\n", - "┃ coef_duration_of_6_to_7_hours 10.535613\n", - "┃ coef_duration_of_8_to_10_hours 10.402183\n", - "┃ coef_duration_shift_for_business_related_ 0.600044\n", - "┃ coef_duration_shift_for_first_sub_tour_of_same_work_tour 0.319885\n", - "┃ coef_duration_shift_for_inbound_auto_travel_time_off_peak -0.118575\n", - "┃ coef_duration_shift_for_number_of_individual_nonmandatory_tours 0.009894\n", - "┃ coef_duration_shift_for_number_of_joint_tours -0.577681\n", - "┃ coef_duration_shift_for_number_of_mandatory_tours -1.058788\n", - "┃ coef_duration_shift_for_outbound_auto_travel_time_off_peak 0.145324\n", - "┃ coef_duration_shift_for_subsequent_sub_tour_of_same_work_tour -10.333603\n", - "┃ coef_early_end_at_5_6 -25.000000\n", - "┃ coef_early_start_at_5 -2.204068\n", - "┃ coef_evening_end_at_19_20_21 -4.521037\n", - "┃ coef_evening_start_at_19_20_21 -0.325741\n", - "┃ coef_late_end_at_22_23 -11.516565\n", - "┃ coef_late_start_at_22_23 -5.142925\n", - "┃ coef_midday_end_at_10_11_12 -1.305196\n", - "┃ coef_midday_end_at_13_14 0.000000\n", - "┃ coef_midday_start_at_10_11_12 0.000000\n", - "┃ coef_midday_start_at_13_14_15 -1.051562\n", - "┃ coef_pm_peak_end_at_15 -1.432981\n", - "┃ coef_pm_peak_end_at_16 -2.055109\n", - "┃ coef_pm_peak_end_at_17 -2.404252\n", - "┃ coef_pm_peak_end_at_18 -3.500372\n", - "┃ coef_pm_peak_start_at_16_17_18 -0.798588\n", - "┃ coef_start_shift_for_business_related_ -0.083357\n", - "┃ coef_start_shift_for_first_sub_tour_of_same_work_tour -0.168324\n", - "┃ coef_start_shift_for_inbound_auto_travel_time_off_peak -0.099019\n", - "┃ coef_start_shift_for_number_of_individual_nonmandatory_tours 0.026777\n", - "┃ coef_start_shift_for_number_of_joint_tours -0.019722\n", - "┃ coef_start_shift_for_number_of_mandatory_tours 0.059018\n", - "┃ coef_start_shift_for_outbound_auto_travel_time_off_peak 0.100349\n", - "┃ coef_start_shift_for_subsequent_sub_tour_of_same_work_tour -0.360206\n", + "┣ x: coef_am_peak_end -2.543876\n", + "┃ coef_am_peak_start_at_6 -5.790935\n", + "┃ coef_am_peak_start_at_7 -4.238642\n", + "┃ coef_am_peak_start_at_8 -2.371798\n", + "┃ coef_am_peak_start_at_9 -2.106247\n", + "┃ coef_dummy_for_business_related_purpose_and_duration_from_0_to_1 -1.656086\n", + "┃ coef_dummy_for_eating_out_purpose_and_departure_at_11 1.371453\n", + "┃ coef_dummy_for_eating_out_purpose_and_departure_at_12 2.454861\n", + "┃ coef_dummy_for_eating_out_purpose_and_departure_at_13 1.832150\n", + "┃ coef_dummy_for_eating_out_purpose_and_duration_of_1_hour 0.534786\n", + "┃ coef_duration_of_0_hours -1.056506\n", + "┃ coef_duration_of_11_to_13_hours 0.292100\n", + "┃ coef_duration_of_14_to_18_hours 0.000000\n", + "┃ coef_duration_of_1_hour 0.000000\n", + "┃ coef_duration_of_2_to_3_hours -1.478463\n", + "┃ coef_duration_of_4_to_5_hours -1.032651\n", + "┃ coef_duration_of_6_to_7_hours 1.074781\n", + "┃ coef_duration_of_8_to_10_hours 1.476278\n", + "┃ coef_duration_shift_for_business_related_ 0.237322\n", + "┃ coef_duration_shift_for_first_sub_tour_of_same_work_tour -0.199899\n", + "┃ coef_duration_shift_for_inbound_auto_travel_time_off_peak 0.022979\n", + "┃ coef_duration_shift_for_number_of_individual_nonmandatory_tours -0.075913\n", + "┃ coef_duration_shift_for_number_of_joint_tours -0.234618\n", + "┃ coef_duration_shift_for_number_of_mandatory_tours -0.909117\n", + "┃ coef_duration_shift_for_outbound_auto_travel_time_off_peak -0.002863\n", + "┃ coef_duration_shift_for_subsequent_sub_tour_of_same_work_tour -0.371148\n", + "┃ coef_early_end_at_5_6 -2.693000\n", + "┃ coef_early_start_at_5 -7.645209\n", + "┃ coef_evening_end_at_19_20_21 -2.460690\n", + "┃ coef_evening_start_at_19_20_21 -0.786571\n", + "┃ coef_late_end_at_22_23 -2.391664\n", + "┃ coef_late_start_at_22_23 -0.890587\n", + "┃ coef_midday_end_at_10_11_12 -2.145575\n", + "┃ coef_midday_end_at_13_14 0.000000\n", + "┃ coef_midday_start_at_10_11_12 0.000000\n", + "┃ coef_midday_start_at_13_14_15 -0.665045\n", + "┃ coef_pm_peak_end_at_15 -0.586475\n", + "┃ coef_pm_peak_end_at_16 -1.337297\n", + "┃ coef_pm_peak_end_at_17 -1.432487\n", + "┃ coef_pm_peak_end_at_18 -1.702240\n", + "┃ coef_pm_peak_start_at_16_17_18 -0.000431\n", + "┃ coef_start_shift_for_business_related_ -0.071618\n", + "┃ coef_start_shift_for_first_sub_tour_of_same_work_tour -0.458549\n", + "┃ coef_start_shift_for_inbound_auto_travel_time_off_peak -0.011025\n", + "┃ coef_start_shift_for_number_of_individual_nonmandatory_tours -0.019137\n", + "┃ coef_start_shift_for_number_of_joint_tours 0.025502\n", + "┃ coef_start_shift_for_number_of_mandatory_tours -0.067479\n", + "┃ coef_start_shift_for_outbound_auto_travel_time_off_peak 0.010616\n", + "┃ coef_start_shift_for_subsequent_sub_tour_of_same_work_tour -0.117673\n", "┃ dtype: float64\n", - "┣ loglike: -1401.9305368056416\n", - "┣ d_loglike: coef_am_peak_end 1.755671e-04\n", - "┃ coef_am_peak_start_at_6 -3.041241e-08\n", - "┃ coef_am_peak_start_at_7 -8.670115e-05\n", - "┃ coef_am_peak_start_at_8 5.028242e-05\n", - "┃ coef_am_peak_start_at_9 5.798423e-04\n", - "┃ coef_dummy_for_business_related_purpose_and_duration_from_0_to_1 1.601202e-04\n", - "┃ coef_dummy_for_eating_out_purpose_and_departure_at_11 -3.475790e-05\n", - "┃ coef_dummy_for_eating_out_purpose_and_departure_at_12 -5.671365e-05\n", - "┃ coef_dummy_for_eating_out_purpose_and_departure_at_13 -2.578419e-05\n", - "┃ coef_dummy_for_eating_out_purpose_and_duration_of_1_hour 1.872976e-04\n", - "┃ coef_duration_of_0_hours -1.158083e-03\n", - "┃ coef_duration_of_11_to_13_hours -1.673798e-06\n", + "┣ logloss: 2.887476765558531\n", + "┣ d_logloss: coef_am_peak_end -4.854218e-05\n", + "┃ coef_am_peak_start_at_6 1.910552e-05\n", + "┃ coef_am_peak_start_at_7 9.916948e-07\n", + "┃ coef_am_peak_start_at_8 4.037261e-05\n", + "┃ coef_am_peak_start_at_9 1.440668e-04\n", + "┃ coef_dummy_for_business_related_purpose_and_duration_from_0_to_1 -1.280892e-04\n", + "┃ coef_dummy_for_eating_out_purpose_and_departure_at_11 1.803296e-04\n", + "┃ coef_dummy_for_eating_out_purpose_and_departure_at_12 -1.483346e-04\n", + "┃ coef_dummy_for_eating_out_purpose_and_departure_at_13 1.713493e-04\n", + "┃ coef_dummy_for_eating_out_purpose_and_duration_of_1_hour -2.135625e-04\n", + "┃ coef_duration_of_0_hours 8.415289e-05\n", + "┃ coef_duration_of_11_to_13_hours -6.167370e-06\n", "┃ coef_duration_of_14_to_18_hours 0.000000e+00\n", "┃ coef_duration_of_1_hour 0.000000e+00\n", - "┃ coef_duration_of_2_to_3_hours 9.972871e-04\n", - "┃ coef_duration_of_4_to_5_hours 1.179130e-04\n", - "┃ coef_duration_of_6_to_7_hours -3.119839e-04\n", - "┃ coef_duration_of_8_to_10_hours 1.749841e-06\n", - "┃ coef_duration_shift_for_business_related_ -1.422810e-03\n", - "┃ coef_duration_shift_for_first_sub_tour_of_same_work_tour -6.454765e-04\n", - "┃ coef_duration_shift_for_inbound_auto_travel_time_off_peak 8.510358e-03\n", - "┃ coef_duration_shift_for_number_of_individual_nonmandatory_tours -1.352429e-03\n", - "┃ coef_duration_shift_for_number_of_joint_tours 1.961158e-04\n", - "┃ coef_duration_shift_for_number_of_mandatory_tours -6.872100e-04\n", - "┃ coef_duration_shift_for_outbound_auto_travel_time_off_peak 7.485785e-03\n", - "┃ coef_duration_shift_for_subsequent_sub_tour_of_same_work_tour -5.553217e-06\n", - "┃ coef_early_end_at_5_6 -4.444583e-11\n", - "┃ coef_early_start_at_5 5.404961e-05\n", - "┃ coef_evening_end_at_19_20_21 -3.938375e-04\n", - "┃ coef_evening_start_at_19_20_21 -1.613864e-04\n", - "┃ coef_late_end_at_22_23 -3.810622e-04\n", - "┃ coef_late_start_at_22_23 -1.853500e-06\n", - "┃ coef_midday_end_at_10_11_12 6.960928e-04\n", + "┃ coef_duration_of_2_to_3_hours -1.347427e-04\n", + "┃ coef_duration_of_4_to_5_hours 1.170007e-05\n", + "┃ coef_duration_of_6_to_7_hours -7.452797e-05\n", + "┃ coef_duration_of_8_to_10_hours -4.591330e-06\n", + "┃ coef_duration_shift_for_business_related_ 1.631608e-04\n", + "┃ coef_duration_shift_for_first_sub_tour_of_same_work_tour 6.894456e-05\n", + "┃ coef_duration_shift_for_inbound_auto_travel_time_off_peak -1.645782e-04\n", + "┃ coef_duration_shift_for_number_of_individual_nonmandatory_tours -1.965446e-04\n", + "┃ coef_duration_shift_for_number_of_joint_tours 2.409234e-04\n", + "┃ coef_duration_shift_for_number_of_mandatory_tours -9.571494e-05\n", + "┃ coef_duration_shift_for_outbound_auto_travel_time_off_peak 5.935593e-05\n", + "┃ coef_duration_shift_for_subsequent_sub_tour_of_same_work_tour -5.141939e-05\n", + "┃ coef_early_end_at_5_6 1.627725e-05\n", + "┃ coef_early_start_at_5 7.249674e-05\n", + "┃ coef_evening_end_at_19_20_21 -1.112621e-04\n", + "┃ coef_evening_start_at_19_20_21 1.220311e-04\n", + "┃ coef_late_end_at_22_23 -5.597541e-05\n", + "┃ coef_late_start_at_22_23 -9.478339e-05\n", + "┃ coef_midday_end_at_10_11_12 -2.023533e-05\n", "┃ coef_midday_end_at_13_14 0.000000e+00\n", "┃ coef_midday_start_at_10_11_12 0.000000e+00\n", - "┃ coef_midday_start_at_13_14_15 8.833428e-05\n", - "┃ coef_pm_peak_end_at_15 -2.278624e-04\n", - "┃ coef_pm_peak_end_at_16 -3.377131e-05\n", - "┃ coef_pm_peak_end_at_17 -4.096157e-04\n", - "┃ coef_pm_peak_end_at_18 -4.205497e-04\n", - "┃ coef_pm_peak_start_at_16_17_18 -8.339350e-04\n", - "┃ coef_start_shift_for_business_related_ 1.194878e-04\n", - "┃ coef_start_shift_for_first_sub_tour_of_same_work_tour -1.481936e-02\n", - "┃ coef_start_shift_for_inbound_auto_travel_time_off_peak -1.201511e-01\n", - "┃ coef_start_shift_for_number_of_individual_nonmandatory_tours -1.882400e-03\n", - "┃ coef_start_shift_for_number_of_joint_tours -1.517039e-03\n", - "┃ coef_start_shift_for_number_of_mandatory_tours -1.475028e-02\n", - "┃ coef_start_shift_for_outbound_auto_travel_time_off_peak -1.163942e-01\n", - "┃ coef_start_shift_for_subsequent_sub_tour_of_same_work_tour 2.856907e-05\n", + "┃ coef_midday_start_at_13_14_15 8.980809e-05\n", + "┃ coef_pm_peak_end_at_15 -2.232845e-04\n", + "┃ coef_pm_peak_end_at_16 -4.780466e-05\n", + "┃ coef_pm_peak_end_at_17 3.154057e-04\n", + "┃ coef_pm_peak_end_at_18 -1.485193e-04\n", + "┃ coef_pm_peak_start_at_16_17_18 -3.850429e-05\n", + "┃ coef_start_shift_for_business_related_ -2.801495e-06\n", + "┃ coef_start_shift_for_first_sub_tour_of_same_work_tour 1.192141e-04\n", + "┃ coef_start_shift_for_inbound_auto_travel_time_off_peak 7.248793e-05\n", + "┃ coef_start_shift_for_number_of_individual_nonmandatory_tours -4.273167e-05\n", + "┃ coef_start_shift_for_number_of_joint_tours 4.702349e-05\n", + "┃ coef_start_shift_for_number_of_mandatory_tours -4.354135e-05\n", + "┃ coef_start_shift_for_outbound_auto_travel_time_off_peak -4.170920e-05\n", + "┃ coef_start_shift_for_subsequent_sub_tour_of_same_work_tour 1.286129e-04\n", "┃ dtype: float64\n", "┣ nit: 68\n", - "┣ nfev: 132\n", + "┣ nfev: 75\n", "┣ njev: 68\n", "┣ status: 0\n", "┣ message: 'Optimization terminated successfully'\n", "┣ success: True\n", - "┣ elapsed_time: datetime.timedelta(seconds=1, microseconds=774115)\n", + "┣ elapsed_time: datetime.timedelta(seconds=5, microseconds=198235)\n", "┣ method: 'slsqp'\n", - "┣ n_cases: 464\n", + "┣ n_cases: 6036\n", "┣ iteration_number: 68\n", - "┣ logloss: 3.021402018977676" + "┣ loglike: -17373.947698365682" ] }, - "execution_count": 8, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "model.estimate()" + "model.estimate(maxiter=900)" ] }, { @@ -3233,519 +3380,496 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Value Std Err t Stat Signif Like Ratio Null Value Constrained
coef_am_peak_end-1.37 0.551-2.49* NA 0.00
coef_am_peak_start_at_6-20.6 7.33-2.81** NA 0.00
coef_am_peak_start_at_7-2.83 0.615-4.59*** NA 0.00
coef_am_peak_start_at_8-1.20 0.405-2.96** NA 0.00
coef_am_peak_start_at_9-1.62 0.372-4.35*** NA 0.00
coef_dummy_for_business_related_purpose_and_duration_from_0_to_1-0.663 0.597-1.11 NA 0.00
coef_dummy_for_eating_out_purpose_and_departure_at_11 1.15 0.559 2.06* NA 0.00
coef_dummy_for_eating_out_purpose_and_departure_at_12 2.63 0.598 4.39*** NA 0.00
coef_dummy_for_eating_out_purpose_and_departure_at_13 2.36 0.785 3.01** NA 0.00
coef_dummy_for_eating_out_purpose_and_duration_of_1_hour 0.310 0.516 0.60 NA 0.00
coef_duration_of_0_hours 9.96 1.24 8.06*** NA 0.00
coef_duration_of_11_to_13_hours-0.374 773.-0.00 NA 0.00
coef_duration_of_14_to_18_hours 0.00 NA NA NA 0.00fixed value
coef_duration_of_1_hour 0.00 NA NA NA 0.00fixed value
coef_duration_of_2_to_3_hours 9.18 1.26 7.27*** NA 0.00
coef_duration_of_4_to_5_hours-0.483 0.399-1.21 NA 0.00
coef_duration_of_6_to_7_hours 10.5 1.48 7.11*** NA 0.00
coef_duration_of_8_to_10_hours 10.4 1.83 5.70*** NA 0.00
coef_duration_shift_for_business_related_ 0.600 0.143 4.20*** NA 0.00
coef_duration_shift_for_first_sub_tour_of_same_work_tour 0.320 0.665 0.48 NA 0.00
coef_duration_shift_for_inbound_auto_travel_time_off_peak-0.119 0.0948-1.25 NA 0.00
coef_duration_shift_for_number_of_individual_nonmandatory_tours 0.00989 0.0574 0.17 NA 0.00
coef_duration_shift_for_number_of_joint_tours-0.578 0.294-1.96* NA 0.00
coef_duration_shift_for_number_of_mandatory_tours-1.06 0.652-1.62 NA 0.00
coef_duration_shift_for_outbound_auto_travel_time_off_peak 0.145 0.0956 1.52 NA 0.00
coef_duration_shift_for_subsequent_sub_tour_of_same_work_tour-10.3 424.-0.02 NA 0.00
coef_early_end_at_5_6-25.0 NA NA[*] 3.06 0.00coef_early_end_at_5_6 ≥ -25.0
coef_early_start_at_5-2.20 1.30-1.70 NA 0.00
coef_evening_end_at_19_20_21-4.52 1.26-3.59*** NA 0.00
coef_evening_start_at_19_20_21-0.326 1.53-0.21 NA 0.00
coef_late_end_at_22_23-11.5 51.4-0.22 NA 0.00
coef_late_start_at_22_23-5.14 736.-0.01 NA 0.00
coef_midday_end_at_10_11_12-1.31 0.238-5.49*** NA 0.00
coef_midday_end_at_13_14 0.00 NA NA NA 0.00fixed value
coef_midday_start_at_10_11_12 0.00 NA NA NA 0.00fixed value
coef_midday_start_at_13_14_15-1.05 0.239-4.41*** NA 0.00
coef_pm_peak_end_at_15-1.43 0.260-5.50*** NA 0.00
coef_pm_peak_end_at_16-2.06 0.451-4.56*** NA 0.00
coef_pm_peak_end_at_17-2.40 0.556-4.33*** NA 0.00
coef_pm_peak_end_at_18-3.50 0.738-4.74*** NA 0.00
coef_pm_peak_start_at_16_17_18-0.799 0.642-1.24 NA 0.00
coef_start_shift_for_business_related_-0.0834 0.144-0.58 NA 0.00
coef_start_shift_for_first_sub_tour_of_same_work_tour-0.168 0.135-1.25 NA 0.00
coef_start_shift_for_inbound_auto_travel_time_off_peak-0.0990 0.0641-1.54 NA 0.00
coef_start_shift_for_number_of_individual_nonmandatory_tours 0.0268 0.0292 0.92 NA 0.00
coef_start_shift_for_number_of_joint_tours-0.0197 0.122-0.16 NA 0.00
coef_start_shift_for_number_of_mandatory_tours 0.0590 0.0887 0.67 NA 0.00
coef_start_shift_for_outbound_auto_travel_time_off_peak 0.100 0.0650 1.54 NA 0.00
coef_start_shift_for_subsequent_sub_tour_of_same_work_tour-0.360 0.423-0.85 NA 0.00
" + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ValueStd Errt StatSignifNull ValueConstrained
Parameter      
coef_am_peak_end-2.54 0.162-15.68*** 0.00
coef_am_peak_start_at_6-5.79 0.649-8.93*** 0.00
coef_am_peak_start_at_7-4.24 0.200-21.18*** 0.00
coef_am_peak_start_at_8-2.37 0.127-18.63*** 0.00
coef_am_peak_start_at_9-2.11 0.111-19.05*** 0.00
coef_dummy_for_business_related_purpose_and_duration_from_0_to_1-1.66 0.153-10.81*** 0.00
coef_dummy_for_eating_out_purpose_and_departure_at_11 1.37 0.130 10.56*** 0.00
coef_dummy_for_eating_out_purpose_and_departure_at_12 2.45 0.153 16.00*** 0.00
coef_dummy_for_eating_out_purpose_and_departure_at_13 1.83 0.204 8.98*** 0.00
coef_dummy_for_eating_out_purpose_and_duration_of_1_hour 0.535 0.128 4.17*** 0.00
coef_duration_of_0_hours-1.06 0.214-4.94*** 0.00
coef_duration_of_11_to_13_hours 0.292 5.22 0.06 0.00
coef_duration_of_14_to_18_hours 0.00 0.00 NA 0.00fixed value
coef_duration_of_1_hour 0.00 0.00 NA 0.00fixed value
coef_duration_of_2_to_3_hours-1.48 0.199-7.43*** 0.00
coef_duration_of_4_to_5_hours-1.03 0.160-6.46*** 0.00
coef_duration_of_6_to_7_hours 1.07 0.241 4.46*** 0.00
coef_duration_of_8_to_10_hours 1.48 0.409 3.61*** 0.00
coef_duration_shift_for_business_related_ 0.237 0.0416 5.71*** 0.00
coef_duration_shift_for_first_sub_tour_of_same_work_tour-0.200 0.159-1.26 0.00
coef_duration_shift_for_inbound_auto_travel_time_off_peak 0.0230 0.0131 1.76 0.00
coef_duration_shift_for_number_of_individual_nonmandatory_tours-0.0759 0.0200-3.79*** 0.00
coef_duration_shift_for_number_of_joint_tours-0.235 0.0632-3.71*** 0.00
coef_duration_shift_for_number_of_mandatory_tours-0.909 0.154-5.90*** 0.00
coef_duration_shift_for_outbound_auto_travel_time_off_peak-0.00286 0.0130-0.22 0.00
coef_duration_shift_for_subsequent_sub_tour_of_same_work_tour-0.371 0.303-1.22 0.00
coef_early_end_at_5_6-2.69 0.834-3.23** 0.00
coef_early_start_at_5-7.65 1.48-5.16*** 0.00
coef_evening_end_at_19_20_21-2.46 0.364-6.75*** 0.00
coef_evening_start_at_19_20_21-0.787 0.597-1.32 0.00
coef_late_end_at_22_23-2.39 1.21-1.98* 0.00
coef_late_start_at_22_23-0.891 1.85-0.48 0.00
coef_midday_end_at_10_11_12-2.15 0.0685-31.31*** 0.00
coef_midday_end_at_13_14 0.00 0.00 NA 0.00fixed value
coef_midday_start_at_10_11_12 0.00 0.00 NA 0.00fixed value
coef_midday_start_at_13_14_15-0.665 0.0663-10.04*** 0.00
coef_pm_peak_end_at_15-0.586 0.0676-8.68*** 0.00
coef_pm_peak_end_at_16-1.34 0.134-10.01*** 0.00
coef_pm_peak_end_at_17-1.43 0.165-8.68*** 0.00
coef_pm_peak_end_at_18-1.70 0.211-8.07*** 0.00
coef_pm_peak_start_at_16_17_18-0.000431 0.181-0.00 0.00
coef_start_shift_for_business_related_-0.0716 0.0540-1.33 0.00
coef_start_shift_for_first_sub_tour_of_same_work_tour-0.459 0.0714-6.42*** 0.00
coef_start_shift_for_inbound_auto_travel_time_off_peak-0.0110 0.0130-0.85 0.00
coef_start_shift_for_number_of_individual_nonmandatory_tours-0.0191 0.0140-1.37 0.00
coef_start_shift_for_number_of_joint_tours 0.0255 0.0364 0.70 0.00
coef_start_shift_for_number_of_mandatory_tours-0.0675 0.0648-1.04 0.00
coef_start_shift_for_outbound_auto_travel_time_off_peak 0.0106 0.0127 0.83 0.00
coef_start_shift_for_subsequent_sub_tour_of_same_work_tour-0.118 0.167-0.71 0.00
\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 9, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -3766,7 +3890,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ @@ -3787,20 +3911,9 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "model.to_xlsx(\n", " result_dir/f\"{modelname}_model_estimation.xlsx\", \n", @@ -3819,7 +3932,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -3852,31 +3965,31 @@ " \n", " 0\n", " coef_early_start_at_5\n", - " -2.204068\n", + " -7.645209\n", " F\n", " \n", " \n", " 1\n", " coef_am_peak_start_at_6\n", - " -20.592814\n", + " -5.790935\n", " F\n", " \n", " \n", " 2\n", " coef_am_peak_start_at_7\n", - " -2.826984\n", + " -4.238642\n", " F\n", " \n", " \n", " 3\n", " coef_am_peak_start_at_8\n", - " -1.196528\n", + " -2.371798\n", " F\n", " \n", " \n", " 4\n", " coef_am_peak_start_at_9\n", - " -1.619897\n", + " -2.106247\n", " F\n", " \n", " \n", @@ -3888,43 +4001,43 @@ " \n", " 6\n", " coef_midday_start_at_13_14_15\n", - " -1.051562\n", + " -0.665045\n", " F\n", " \n", " \n", " 7\n", " coef_pm_peak_start_at_16_17_18\n", - " -0.798588\n", + " -0.000431\n", " F\n", " \n", " \n", " 8\n", " coef_evening_start_at_19_20_21\n", - " -0.325741\n", + " -0.786571\n", " F\n", " \n", " \n", " 9\n", " coef_late_start_at_22_23\n", - " -5.142925\n", + " -0.890587\n", " F\n", " \n", " \n", " 10\n", " coef_early_end_at_5_6\n", - " -25.000000\n", + " -2.693000\n", " F\n", " \n", " \n", " 11\n", " coef_am_peak_end\n", - " -1.373169\n", + " -2.543876\n", " F\n", " \n", " \n", " 12\n", " coef_midday_end_at_10_11_12\n", - " -1.305196\n", + " -2.145575\n", " F\n", " \n", " \n", @@ -3936,43 +4049,43 @@ " \n", " 14\n", " coef_pm_peak_end_at_15\n", - " -1.432981\n", + " -0.586475\n", " F\n", " \n", " \n", " 15\n", " coef_pm_peak_end_at_16\n", - " -2.055109\n", + " -1.337297\n", " F\n", " \n", " \n", " 16\n", " coef_pm_peak_end_at_17\n", - " -2.404252\n", + " -1.432487\n", " F\n", " \n", " \n", " 17\n", " coef_pm_peak_end_at_18\n", - " -3.500372\n", + " -1.702240\n", " F\n", " \n", " \n", " 18\n", " coef_evening_end_at_19_20_21\n", - " -4.521037\n", + " -2.460690\n", " F\n", " \n", " \n", " 19\n", " coef_late_end_at_22_23\n", - " -11.516565\n", + " -2.391664\n", " F\n", " \n", " \n", " 20\n", " coef_duration_of_0_hours\n", - " 9.959985\n", + " -1.056506\n", " F\n", " \n", " \n", @@ -3984,31 +4097,31 @@ " \n", " 22\n", " coef_duration_of_2_to_3_hours\n", - " 9.181283\n", + " -1.478463\n", " F\n", " \n", " \n", " 23\n", " coef_duration_of_4_to_5_hours\n", - " -0.483141\n", + " -1.032651\n", " F\n", " \n", " \n", " 24\n", " coef_duration_of_6_to_7_hours\n", - " 10.535613\n", + " 1.074781\n", " F\n", " \n", " \n", " 25\n", " coef_duration_of_8_to_10_hours\n", - " 10.402183\n", + " 1.476278\n", " F\n", " \n", " \n", " 26\n", " coef_duration_of_11_to_13_hours\n", - " -0.374055\n", + " 0.292100\n", " F\n", " \n", " \n", @@ -4020,127 +4133,127 @@ " \n", " 28\n", " coef_start_shift_for_outbound_auto_travel_time...\n", - " 0.100349\n", + " 0.010616\n", " F\n", " \n", " \n", " 29\n", " coef_start_shift_for_inbound_auto_travel_time_...\n", - " -0.099019\n", + " -0.011025\n", " F\n", " \n", " \n", " 30\n", " coef_duration_shift_for_outbound_auto_travel_t...\n", - " 0.145324\n", + " -0.002863\n", " F\n", " \n", " \n", " 31\n", " coef_duration_shift_for_inbound_auto_travel_ti...\n", - " -0.118575\n", + " 0.022979\n", " F\n", " \n", " \n", " 32\n", " coef_start_shift_for_business_related_\n", - " -0.083357\n", + " -0.071618\n", " F\n", " \n", " \n", " 33\n", " coef_duration_shift_for_business_related_\n", - " 0.600044\n", + " 0.237322\n", " F\n", " \n", " \n", " 34\n", " coef_start_shift_for_first_sub_tour_of_same_wo...\n", - " -0.168324\n", + " -0.458549\n", " F\n", " \n", " \n", " 35\n", " coef_duration_shift_for_first_sub_tour_of_same...\n", - " 0.319885\n", + " -0.199899\n", " F\n", " \n", " \n", " 36\n", " coef_start_shift_for_subsequent_sub_tour_of_sa...\n", - " -0.360206\n", + " -0.117673\n", " F\n", " \n", " \n", " 37\n", " coef_duration_shift_for_subsequent_sub_tour_of...\n", - " -10.333603\n", + " -0.371148\n", " F\n", " \n", " \n", " 38\n", " coef_start_shift_for_number_of_mandatory_tours\n", - " 0.059018\n", + " -0.067479\n", " F\n", " \n", " \n", " 39\n", " coef_duration_shift_for_number_of_mandatory_tours\n", - " -1.058788\n", + " -0.909117\n", " F\n", " \n", " \n", " 40\n", " coef_start_shift_for_number_of_joint_tours\n", - " -0.019722\n", + " 0.025502\n", " F\n", " \n", " \n", " 41\n", " coef_duration_shift_for_number_of_joint_tours\n", - " -0.577681\n", + " -0.234618\n", " F\n", " \n", " \n", " 42\n", " coef_start_shift_for_number_of_individual_nonm...\n", - " 0.026777\n", + " -0.019137\n", " F\n", " \n", " \n", " 43\n", " coef_duration_shift_for_number_of_individual_n...\n", - " 0.009894\n", + " -0.075913\n", " F\n", " \n", " \n", " 44\n", " coef_dummy_for_business_related_purpose_and_du...\n", - " -0.663129\n", + " -1.656086\n", " F\n", " \n", " \n", " 45\n", " coef_dummy_for_eating_out_purpose_and_duration...\n", - " 0.310405\n", + " 0.534786\n", " F\n", " \n", " \n", " 46\n", " coef_dummy_for_eating_out_purpose_and_departur...\n", - " 1.151827\n", + " 1.371453\n", " F\n", " \n", " \n", " 47\n", " coef_dummy_for_eating_out_purpose_and_departur...\n", - " 2.625436\n", + " 2.454861\n", " F\n", " \n", " \n", " 48\n", " coef_dummy_for_eating_out_purpose_and_departur...\n", - " 2.360981\n", + " 1.832150\n", " F\n", " \n", " \n", @@ -4148,59 +4261,59 @@ "" ], "text/plain": [ - " coefficient_name value constrain\n", - "0 coef_early_start_at_5 -2.204068 F\n", - "1 coef_am_peak_start_at_6 -20.592814 F\n", - "2 coef_am_peak_start_at_7 -2.826984 F\n", - "3 coef_am_peak_start_at_8 -1.196528 F\n", - "4 coef_am_peak_start_at_9 -1.619897 F\n", - "5 coef_midday_start_at_10_11_12 0.000000 T\n", - "6 coef_midday_start_at_13_14_15 -1.051562 F\n", - "7 coef_pm_peak_start_at_16_17_18 -0.798588 F\n", - "8 coef_evening_start_at_19_20_21 -0.325741 F\n", - "9 coef_late_start_at_22_23 -5.142925 F\n", - "10 coef_early_end_at_5_6 -25.000000 F\n", - "11 coef_am_peak_end -1.373169 F\n", - "12 coef_midday_end_at_10_11_12 -1.305196 F\n", - "13 coef_midday_end_at_13_14 0.000000 T\n", - "14 coef_pm_peak_end_at_15 -1.432981 F\n", - "15 coef_pm_peak_end_at_16 -2.055109 F\n", - "16 coef_pm_peak_end_at_17 -2.404252 F\n", - "17 coef_pm_peak_end_at_18 -3.500372 F\n", - "18 coef_evening_end_at_19_20_21 -4.521037 F\n", - "19 coef_late_end_at_22_23 -11.516565 F\n", - "20 coef_duration_of_0_hours 9.959985 F\n", - "21 coef_duration_of_1_hour 0.000000 T\n", - "22 coef_duration_of_2_to_3_hours 9.181283 F\n", - "23 coef_duration_of_4_to_5_hours -0.483141 F\n", - "24 coef_duration_of_6_to_7_hours 10.535613 F\n", - "25 coef_duration_of_8_to_10_hours 10.402183 F\n", - "26 coef_duration_of_11_to_13_hours -0.374055 F\n", - "27 coef_duration_of_14_to_18_hours 0.000000 T\n", - "28 coef_start_shift_for_outbound_auto_travel_time... 0.100349 F\n", - "29 coef_start_shift_for_inbound_auto_travel_time_... -0.099019 F\n", - "30 coef_duration_shift_for_outbound_auto_travel_t... 0.145324 F\n", - "31 coef_duration_shift_for_inbound_auto_travel_ti... -0.118575 F\n", - "32 coef_start_shift_for_business_related_ -0.083357 F\n", - "33 coef_duration_shift_for_business_related_ 0.600044 F\n", - "34 coef_start_shift_for_first_sub_tour_of_same_wo... -0.168324 F\n", - "35 coef_duration_shift_for_first_sub_tour_of_same... 0.319885 F\n", - "36 coef_start_shift_for_subsequent_sub_tour_of_sa... -0.360206 F\n", - "37 coef_duration_shift_for_subsequent_sub_tour_of... -10.333603 F\n", - "38 coef_start_shift_for_number_of_mandatory_tours 0.059018 F\n", - "39 coef_duration_shift_for_number_of_mandatory_tours -1.058788 F\n", - "40 coef_start_shift_for_number_of_joint_tours -0.019722 F\n", - "41 coef_duration_shift_for_number_of_joint_tours -0.577681 F\n", - "42 coef_start_shift_for_number_of_individual_nonm... 0.026777 F\n", - "43 coef_duration_shift_for_number_of_individual_n... 0.009894 F\n", - "44 coef_dummy_for_business_related_purpose_and_du... -0.663129 F\n", - "45 coef_dummy_for_eating_out_purpose_and_duration... 0.310405 F\n", - "46 coef_dummy_for_eating_out_purpose_and_departur... 1.151827 F\n", - "47 coef_dummy_for_eating_out_purpose_and_departur... 2.625436 F\n", - "48 coef_dummy_for_eating_out_purpose_and_departur... 2.360981 F" + " coefficient_name value constrain\n", + "0 coef_early_start_at_5 -7.645209 F\n", + "1 coef_am_peak_start_at_6 -5.790935 F\n", + "2 coef_am_peak_start_at_7 -4.238642 F\n", + "3 coef_am_peak_start_at_8 -2.371798 F\n", + "4 coef_am_peak_start_at_9 -2.106247 F\n", + "5 coef_midday_start_at_10_11_12 0.000000 T\n", + "6 coef_midday_start_at_13_14_15 -0.665045 F\n", + "7 coef_pm_peak_start_at_16_17_18 -0.000431 F\n", + "8 coef_evening_start_at_19_20_21 -0.786571 F\n", + "9 coef_late_start_at_22_23 -0.890587 F\n", + "10 coef_early_end_at_5_6 -2.693000 F\n", + "11 coef_am_peak_end -2.543876 F\n", + "12 coef_midday_end_at_10_11_12 -2.145575 F\n", + "13 coef_midday_end_at_13_14 0.000000 T\n", + "14 coef_pm_peak_end_at_15 -0.586475 F\n", + "15 coef_pm_peak_end_at_16 -1.337297 F\n", + "16 coef_pm_peak_end_at_17 -1.432487 F\n", + "17 coef_pm_peak_end_at_18 -1.702240 F\n", + "18 coef_evening_end_at_19_20_21 -2.460690 F\n", + "19 coef_late_end_at_22_23 -2.391664 F\n", + "20 coef_duration_of_0_hours -1.056506 F\n", + "21 coef_duration_of_1_hour 0.000000 T\n", + "22 coef_duration_of_2_to_3_hours -1.478463 F\n", + "23 coef_duration_of_4_to_5_hours -1.032651 F\n", + "24 coef_duration_of_6_to_7_hours 1.074781 F\n", + "25 coef_duration_of_8_to_10_hours 1.476278 F\n", + "26 coef_duration_of_11_to_13_hours 0.292100 F\n", + "27 coef_duration_of_14_to_18_hours 0.000000 T\n", + "28 coef_start_shift_for_outbound_auto_travel_time... 0.010616 F\n", + "29 coef_start_shift_for_inbound_auto_travel_time_... -0.011025 F\n", + "30 coef_duration_shift_for_outbound_auto_travel_t... -0.002863 F\n", + "31 coef_duration_shift_for_inbound_auto_travel_ti... 0.022979 F\n", + "32 coef_start_shift_for_business_related_ -0.071618 F\n", + "33 coef_duration_shift_for_business_related_ 0.237322 F\n", + "34 coef_start_shift_for_first_sub_tour_of_same_wo... -0.458549 F\n", + "35 coef_duration_shift_for_first_sub_tour_of_same... -0.199899 F\n", + "36 coef_start_shift_for_subsequent_sub_tour_of_sa... -0.117673 F\n", + "37 coef_duration_shift_for_subsequent_sub_tour_of... -0.371148 F\n", + "38 coef_start_shift_for_number_of_mandatory_tours -0.067479 F\n", + "39 coef_duration_shift_for_number_of_mandatory_tours -0.909117 F\n", + "40 coef_start_shift_for_number_of_joint_tours 0.025502 F\n", + "41 coef_duration_shift_for_number_of_joint_tours -0.234618 F\n", + "42 coef_start_shift_for_number_of_individual_nonm... -0.019137 F\n", + "43 coef_duration_shift_for_number_of_individual_n... -0.075913 F\n", + "44 coef_dummy_for_business_related_purpose_and_du... -1.656086 F\n", + "45 coef_dummy_for_eating_out_purpose_and_duration... 0.534786 F\n", + "46 coef_dummy_for_eating_out_purpose_and_departur... 1.371453 F\n", + "47 coef_dummy_for_eating_out_purpose_and_departur... 2.454861 F\n", + "48 coef_dummy_for_eating_out_purpose_and_departur... 1.832150 F" ] }, - "execution_count": 12, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -4217,7 +4330,7 @@ "toc_visible": true }, "kernelspec": { - "display_name": "Python 3", + "display_name": "ESTER", "language": "python", "name": "python3" }, @@ -4231,7 +4344,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.10.15" }, "toc": { "base_numbering": 1, diff --git a/activitysim/examples/example_estimation/notebooks/21_stop_frequency.ipynb b/activitysim/examples/example_estimation/notebooks/21_stop_frequency.ipynb index 3de8e6427..ee1914bfd 100644 --- a/activitysim/examples/example_estimation/notebooks/21_stop_frequency.ipynb +++ b/activitysim/examples/example_estimation/notebooks/21_stop_frequency.ipynb @@ -34,27 +34,74 @@ "id": "s53VwlPwtNnr", "outputId": "d1208b7a-c1f2-4b0b-c439-bf312fe12be0" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "JAX not found. Some functionality will be unavailable.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'larch': '6.0.32',\n", + " 'sharrow': '2.13.0',\n", + " 'numpy': '1.26.4',\n", + " 'pandas': '1.5.3',\n", + " 'xarray': '2024.3.0',\n", + " 'numba': '0.60.0'}" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "import os\n", - "import larch # !conda install larch -c conda-forge # for estimation\n", - "import pandas as pd" + "import larch as lx\n", + "import pandas as pd\n", + "\n", + "lx.versions()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We'll work in our `test` directory, where ActivitySim has saved the estimation data bundles." + "For this demo, we will assume that you have already run ActivitySim in estimation\n", + "mode, and saved the required estimation data bundles (EDB's) to disk. See\n", + "the [first notebook](./01_estimation_mode.ipynb) for details. The following module\n", + "will run a script to set everything up if the example data is not already available." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "EDB directory already populated.\n" + ] + }, + { + "data": { + "text/plain": [ + "PosixPath('test-estimation-data/activitysim-prototype-mtc-extended')" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "os.chdir('test')" + "from est_mode_setup import prepare\n", + "\n", + "prepare()" ] }, { @@ -73,8 +120,8 @@ "name": "stderr", "output_type": "stream", "text": [ - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/activitysim/activitysim/estimation/larch/general.py:321: UserWarning: coefficient dataframe missing 'constrain' column, setting all to 'F'\n", - " warnings.warn(\"coefficient dataframe missing 'constrain' column, setting all to 'F'\")\n" + "/Users/jpn/Git/est-mode/activitysim/activitysim/estimation/larch/general.py:359: UserWarning: coefficient dataframe missing 'constrain' column, setting all to 'F'\n", + " warnings.warn(\n" ] } ], @@ -82,7 +129,12 @@ "modelname = \"stop_frequency\"\n", "\n", "from activitysim.estimation.larch import component_model\n", - "model, data = component_model(modelname, return_data=True)" + "\n", + "model, data = component_model(\n", + " modelname,\n", + " edb_directory=f\"output-est-mode/estimation_data_bundle/{modelname}/\",\n", + " return_data=True,\n", + ")" ] }, { @@ -1195,10 +1247,10 @@ " coef_alternative_specific_constant_for_outboun...\n", " coef_alternative_specific_constant_for_outboun...\n", " coef_alternative_specific_constant_for_outboun...\n", - " -3.934\n", - " -3.934\n", - " -3.934\n", - " -3.934\n", + " coef_alternative_specific_constant_for_outboun...\n", + " coef_alternative_specific_constant_for_outboun...\n", + " coef_alternative_specific_constant_for_outboun...\n", + " coef_alternative_specific_constant_for_outboun...\n", " \n", " \n", " 40\n", @@ -1208,19 +1260,19 @@ " NaN\n", " coef_alternative_specific_constant_for_return_...\n", " coef_alternative_specific_constant_for_return_...\n", - " -2.139\n", + " coef_alternative_specific_constant_for_return_...\n", " NaN\n", " coef_alternative_specific_constant_for_return_...\n", " coef_alternative_specific_constant_for_return_...\n", - " -2.139\n", + " coef_alternative_specific_constant_for_return_...\n", " NaN\n", " coef_alternative_specific_constant_for_return_...\n", " coef_alternative_specific_constant_for_return_...\n", - " -2.139\n", + " coef_alternative_specific_constant_for_return_...\n", " NaN\n", " coef_alternative_specific_constant_for_return_...\n", " coef_alternative_specific_constant_for_return_...\n", - " -2.139\n", + " coef_alternative_specific_constant_for_return_...\n", " \n", " \n", " 41\n", @@ -1537,7 +1589,7 @@ "37 coef_dummy_for_distance_in_miles \n", "38 coef_no_stops_if_tour_mode_is_drivetransit \n", "39 NaN \n", - "40 -2.139 \n", + "40 coef_alternative_specific_constant_for_return_... \n", "41 coef_alternative_specific_constant_for_the_tot... \n", "42 coef_number_of_subtours_in_the_tour \n", "\n", @@ -1717,7 +1769,7 @@ "37 coef_dummy_for_distance_in_miles \n", "38 coef_no_stops_if_tour_mode_is_drivetransit \n", "39 coef_alternative_specific_constant_for_outboun... \n", - "40 -2.139 \n", + "40 coef_alternative_specific_constant_for_return_... \n", "41 coef_alternative_specific_constant_for_the_tot... \n", "42 coef_number_of_subtours_in_the_tour \n", "\n", @@ -1897,7 +1949,7 @@ "37 coef_dummy_for_distance_in_miles \n", "38 coef_no_stops_if_tour_mode_is_drivetransit \n", "39 coef_alternative_specific_constant_for_outboun... \n", - "40 -2.139 \n", + "40 coef_alternative_specific_constant_for_return_... \n", "41 coef_alternative_specific_constant_for_the_tot... \n", "42 coef_number_of_subtours_in_the_tour \n", "\n", @@ -1941,7 +1993,7 @@ "36 coef_dummy_for_distance_less_than_20_miles \n", "37 coef_dummy_for_distance_in_miles \n", "38 coef_no_stops_if_tour_mode_is_drivetransit \n", - "39 -3.934 \n", + "39 coef_alternative_specific_constant_for_outboun... \n", "40 NaN \n", "41 coef_alternative_specific_constant_for_the_tot... \n", "42 coef_number_of_subtours_in_the_tour \n", @@ -1986,7 +2038,7 @@ "36 coef_dummy_for_distance_less_than_20_miles \n", "37 coef_dummy_for_distance_in_miles \n", "38 coef_no_stops_if_tour_mode_is_drivetransit \n", - "39 -3.934 \n", + "39 coef_alternative_specific_constant_for_outboun... \n", "40 coef_alternative_specific_constant_for_return_... \n", "41 coef_alternative_specific_constant_for_the_tot... \n", "42 coef_number_of_subtours_in_the_tour \n", @@ -2031,7 +2083,7 @@ "36 coef_dummy_for_distance_less_than_20_miles \n", "37 coef_dummy_for_distance_in_miles \n", "38 coef_no_stops_if_tour_mode_is_drivetransit \n", - "39 -3.934 \n", + "39 coef_alternative_specific_constant_for_outboun... \n", "40 coef_alternative_specific_constant_for_return_... \n", "41 coef_alternative_specific_constant_for_the_tot... \n", "42 coef_number_of_subtours_in_the_tour \n", @@ -2076,8 +2128,8 @@ "36 coef_dummy_for_distance_less_than_20_miles \n", "37 coef_dummy_for_distance_in_miles \n", "38 coef_no_stops_if_tour_mode_is_drivetransit \n", - "39 -3.934 \n", - "40 -2.139 \n", + "39 coef_alternative_specific_constant_for_outboun... \n", + "40 coef_alternative_specific_constant_for_return_... \n", "41 coef_alternative_specific_constant_for_the_tot... \n", "42 coef_number_of_subtours_in_the_tour " ] @@ -2175,9 +2227,9 @@ " \n", " \n", " \n", - " 2961920\n", - " 0out_0in\n", - " 0out_0in\n", + " 2966594\n", + " 0out_1in\n", + " 0out_1in\n", " 0.0\n", " 0.0\n", " 0.0\n", @@ -2191,17 +2243,17 @@ " False\n", " 0\n", " 0\n", + " 1\n", " 0\n", " 0\n", - " 0\n", - " 6.859067\n", - " 7.751024\n", - " 0\n", + " 6.446184\n", + " 6.869385\n", + " 1\n", " \n", " \n", - " 2970120\n", - " 2out_1in\n", - " 2out_1in\n", + " 2967783\n", + " 0out_0in\n", + " 0out_0in\n", " 0.0\n", " 0.0\n", " 0.0\n", @@ -2218,12 +2270,12 @@ " 0\n", " 0\n", " 0\n", - " 0.000000\n", - " 0.000000\n", - " 1\n", + " 6.384615\n", + " 7.341247\n", + " 0\n", " \n", " \n", - " 2998943\n", + " 2968726\n", " 0out_0in\n", " 0out_0in\n", " 0.0\n", @@ -2236,19 +2288,19 @@ " 0.0\n", " ...\n", " False\n", - " False\n", + " True\n", " 0\n", " 0\n", - " 1\n", " 0\n", " 0\n", - " 6.024261\n", - " 7.519040\n", - " 2\n", + " 0\n", + " 5.447277\n", + " 6.565208\n", + " 1\n", " \n", " \n", - " 3013252\n", - " 0out_0in\n", + " 2970858\n", + " 1out_1in\n", " 0out_0in\n", " 0.0\n", " 0.0\n", @@ -2266,12 +2318,12 @@ " 0\n", " 0\n", " 0\n", - " 5.672122\n", - " 6.595380\n", + " 6.787018\n", + " 7.692237\n", " 1\n", " \n", " \n", - " 3015794\n", + " 2973728\n", " 0out_0in\n", " 0out_0in\n", " 0.0\n", @@ -2290,8 +2342,8 @@ " 0\n", " 0\n", " 0\n", - " 6.252582\n", - " 5.865708\n", + " 6.611336\n", + " 5.693881\n", " 3\n", " \n", " \n", @@ -2319,38 +2371,38 @@ " ...\n", " \n", " \n", - " 308070309\n", - " 0out_0in\n", + " 309081532\n", + " 2out_0in\n", " 0out_0in\n", " 0.0\n", " 0.0\n", " 0.0\n", " 1.0\n", - " 0.0\n", + " 1.0\n", " 0.0\n", " 0.0\n", " 0.0\n", " ...\n", " False\n", - " True\n", - " 0\n", + " False\n", " 0\n", " 0\n", " 0\n", " 0\n", - " 8.181251\n", - " 8.326834\n", " 0\n", + " 4.619027\n", + " 6.475182\n", + " 3\n", " \n", " \n", - " 308073875\n", - " 1out_0in\n", - " 1out_0in\n", + " 309090634\n", + " 0out_1in\n", + " 0out_0in\n", " 0.0\n", " 0.0\n", " 0.0\n", " 1.0\n", - " 1.0\n", + " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", @@ -2362,14 +2414,14 @@ " 0\n", " 0\n", " 0\n", - " 0.000000\n", - " 0.000000\n", - " 2\n", + " 4.800090\n", + " 6.198316\n", + " 1\n", " \n", " \n", - " 308090603\n", - " 0out_0in\n", + " 309101950\n", " 0out_0in\n", + " 1out_1in\n", " 0.0\n", " 0.0\n", " 0.0\n", @@ -2386,22 +2438,22 @@ " 0\n", " 0\n", " 0\n", - " 7.629996\n", - " 7.282405\n", + " 0.000000\n", + " 0.000000\n", " 1\n", " \n", " \n", - " 308105896\n", + " 309107362\n", " 0out_0in\n", " 0out_0in\n", " 0.0\n", " 0.0\n", " 0.0\n", " 1.0\n", - " 0.0\n", " 1.0\n", " 0.0\n", " 0.0\n", + " 0.0\n", " ...\n", " False\n", " False\n", @@ -2410,181 +2462,181 @@ " 0\n", " 0\n", " 0\n", - " 7.149388\n", - " 6.679189\n", - " 2\n", + " 0.000000\n", + " 0.000000\n", + " 4\n", " \n", " \n", - " 308122624\n", + " 309112036\n", " 0out_0in\n", " 0out_0in\n", " 0.0\n", " 0.0\n", " 0.0\n", " 1.0\n", - " 0.0\n", " 1.0\n", " 0.0\n", " 0.0\n", + " 0.0\n", " ...\n", " False\n", " False\n", " 0\n", " 0\n", + " 1\n", " 0\n", " 0\n", - " 0\n", - " 5.117139\n", - " 7.355598\n", - " 0\n", + " 0.000000\n", + " 0.000000\n", + " 4\n", " \n", " \n", "\n", - "

2124 rows × 220 columns

\n", + "

22637 rows × 220 columns

\n", "" ], "text/plain": [ " model_choice override_choice util_middle_to_low_income_hh \\\n", "tour_id \n", - "2961920 0out_0in 0out_0in 0.0 \n", - "2970120 2out_1in 2out_1in 0.0 \n", - "2998943 0out_0in 0out_0in 0.0 \n", - "3013252 0out_0in 0out_0in 0.0 \n", - "3015794 0out_0in 0out_0in 0.0 \n", + "2966594 0out_1in 0out_1in 0.0 \n", + "2967783 0out_0in 0out_0in 0.0 \n", + "2968726 0out_0in 0out_0in 0.0 \n", + "2970858 1out_1in 0out_0in 0.0 \n", + "2973728 0out_0in 0out_0in 0.0 \n", "... ... ... ... \n", - "308070309 0out_0in 0out_0in 0.0 \n", - "308073875 1out_0in 1out_0in 0.0 \n", - "308090603 0out_0in 0out_0in 0.0 \n", - "308105896 0out_0in 0out_0in 0.0 \n", - "308122624 0out_0in 0out_0in 0.0 \n", + "309081532 2out_0in 0out_0in 0.0 \n", + "309090634 0out_1in 0out_0in 0.0 \n", + "309101950 0out_0in 1out_1in 0.0 \n", + "309107362 0out_0in 0out_0in 0.0 \n", + "309112036 0out_0in 0out_0in 0.0 \n", "\n", " util_mid_to_high_income_hh util_high_income_hh \\\n", "tour_id \n", - "2961920 0.0 0.0 \n", - "2970120 0.0 0.0 \n", - "2998943 0.0 0.0 \n", - "3013252 0.0 0.0 \n", - "3015794 0.0 0.0 \n", + "2966594 0.0 0.0 \n", + "2967783 0.0 0.0 \n", + "2968726 0.0 0.0 \n", + "2970858 0.0 0.0 \n", + "2973728 0.0 0.0 \n", "... ... ... \n", - "308070309 0.0 0.0 \n", - "308073875 0.0 0.0 \n", - "308090603 0.0 0.0 \n", - "308105896 0.0 0.0 \n", - "308122624 0.0 0.0 \n", + "309081532 0.0 0.0 \n", + "309090634 0.0 0.0 \n", + "309101950 0.0 0.0 \n", + "309107362 0.0 0.0 \n", + "309112036 0.0 0.0 \n", "\n", " util_number_of_hh_persons util_number_of_full_time_workers_in_hh \\\n", "tour_id \n", - "2961920 1.0 1.0 \n", - "2970120 1.0 1.0 \n", - "2998943 1.0 1.0 \n", - "3013252 1.0 1.0 \n", - "3015794 1.0 0.0 \n", + "2966594 1.0 1.0 \n", + "2967783 1.0 1.0 \n", + "2968726 1.0 1.0 \n", + "2970858 1.0 1.0 \n", + "2973728 1.0 0.0 \n", "... ... ... \n", - "308070309 1.0 0.0 \n", - "308073875 1.0 1.0 \n", - "308090603 1.0 1.0 \n", - "308105896 1.0 0.0 \n", - "308122624 1.0 0.0 \n", + "309081532 1.0 1.0 \n", + "309090634 1.0 0.0 \n", + "309101950 1.0 1.0 \n", + "309107362 1.0 1.0 \n", + "309112036 1.0 1.0 \n", "\n", " util_number_of_students_in_hh \\\n", "tour_id \n", - "2961920 0.0 \n", - "2970120 0.0 \n", - "2998943 0.0 \n", - "3013252 0.0 \n", - "3015794 0.0 \n", + "2966594 0.0 \n", + "2967783 0.0 \n", + "2968726 0.0 \n", + "2970858 0.0 \n", + "2973728 0.0 \n", "... ... \n", - "308070309 0.0 \n", - "308073875 0.0 \n", - "308090603 0.0 \n", - "308105896 1.0 \n", - "308122624 1.0 \n", + "309081532 0.0 \n", + "309090634 0.0 \n", + "309101950 0.0 \n", + "309107362 0.0 \n", + "309112036 0.0 \n", "\n", " util_num_kids_between_0_and_4_including_years_old \\\n", "tour_id \n", - "2961920 0.0 \n", - "2970120 0.0 \n", - "2998943 0.0 \n", - "3013252 0.0 \n", - "3015794 0.0 \n", + "2966594 0.0 \n", + "2967783 0.0 \n", + "2968726 0.0 \n", + "2970858 0.0 \n", + "2973728 0.0 \n", "... ... \n", - "308070309 0.0 \n", - "308073875 0.0 \n", - "308090603 0.0 \n", - "308105896 0.0 \n", - "308122624 0.0 \n", + "309081532 0.0 \n", + "309090634 0.0 \n", + "309101950 0.0 \n", + "309107362 0.0 \n", + "309112036 0.0 \n", "\n", " util_presence_of_kids_between_0_and_4_including_years_old ... \\\n", "tour_id ... \n", - "2961920 0.0 ... \n", - "2970120 0.0 ... \n", - "2998943 0.0 ... \n", - "3013252 0.0 ... \n", - "3015794 0.0 ... \n", + "2966594 0.0 ... \n", + "2967783 0.0 ... \n", + "2968726 0.0 ... \n", + "2970858 0.0 ... \n", + "2973728 0.0 ... \n", "... ... ... \n", - "308070309 0.0 ... \n", - "308073875 0.0 ... \n", - "308090603 0.0 ... \n", - "308105896 0.0 ... \n", - "308122624 0.0 ... \n", + "309081532 0.0 ... \n", + "309090634 0.0 ... \n", + "309101950 0.0 ... \n", + "309107362 0.0 ... \n", + "309112036 0.0 ... \n", "\n", " tour_mode_is_drive_transit tour_mode_is_non_motorized \\\n", "tour_id \n", - "2961920 False False \n", - "2970120 False False \n", - "2998943 False False \n", - "3013252 False False \n", - "3015794 False False \n", + "2966594 False False \n", + "2967783 False False \n", + "2968726 False True \n", + "2970858 False False \n", + "2973728 False False \n", "... ... ... \n", - "308070309 False True \n", - "308073875 False False \n", - "308090603 False False \n", - "308105896 False False \n", - "308122624 False False \n", + "309081532 False False \n", + "309090634 False False \n", + "309101950 False False \n", + "309107362 False False \n", + "309112036 False False \n", "\n", " num_school_tours num_univ_tours num_atwork_subtours \\\n", "tour_id \n", - "2961920 0 0 0 \n", - "2970120 0 0 0 \n", - "2998943 0 0 1 \n", - "3013252 0 0 0 \n", - "3015794 0 0 0 \n", + "2966594 0 0 1 \n", + "2967783 0 0 0 \n", + "2968726 0 0 0 \n", + "2970858 0 0 0 \n", + "2973728 0 0 0 \n", "... ... ... ... \n", - "308070309 0 0 0 \n", - "308073875 0 0 0 \n", - "308090603 0 0 0 \n", - "308105896 0 0 0 \n", - "308122624 0 0 0 \n", + "309081532 0 0 0 \n", + "309090634 0 0 0 \n", + "309101950 0 0 0 \n", + "309107362 0 0 0 \n", + "309112036 0 0 1 \n", "\n", " num_hh_shop_tours num_hh_maint_tours hhacc pracc \\\n", "tour_id \n", - "2961920 0 0 6.859067 7.751024 \n", - "2970120 0 0 0.000000 0.000000 \n", - "2998943 0 0 6.024261 7.519040 \n", - "3013252 0 0 5.672122 6.595380 \n", - "3015794 0 0 6.252582 5.865708 \n", + "2966594 0 0 6.446184 6.869385 \n", + "2967783 0 0 6.384615 7.341247 \n", + "2968726 0 0 5.447277 6.565208 \n", + "2970858 0 0 6.787018 7.692237 \n", + "2973728 0 0 6.611336 5.693881 \n", "... ... ... ... ... \n", - "308070309 0 0 8.181251 8.326834 \n", - "308073875 0 0 0.000000 0.000000 \n", - "308090603 0 0 7.629996 7.282405 \n", - "308105896 0 0 7.149388 6.679189 \n", - "308122624 0 0 5.117139 7.355598 \n", + "309081532 0 0 4.619027 6.475182 \n", + "309090634 0 0 4.800090 6.198316 \n", + "309101950 0 0 0.000000 0.000000 \n", + "309107362 0 0 0.000000 0.000000 \n", + "309112036 0 0 0.000000 0.000000 \n", "\n", " destination_area_type \n", "tour_id \n", - "2961920 0 \n", - "2970120 1 \n", - "2998943 2 \n", - "3013252 1 \n", - "3015794 3 \n", + "2966594 1 \n", + "2967783 0 \n", + "2968726 1 \n", + "2970858 1 \n", + "2973728 3 \n", "... ... \n", - "308070309 0 \n", - "308073875 2 \n", - "308090603 1 \n", - "308105896 2 \n", - "308122624 0 \n", + "309081532 3 \n", + "309090634 1 \n", + "309101950 1 \n", + "309107362 4 \n", + "309112036 4 \n", "\n", - "[2124 rows x 220 columns]" + "[22637 rows x 220 columns]" ] }, "execution_count": 7, @@ -2610,26 +2662,10 @@ "execution_count": 8, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "req_data does not request avail_ca or avail_co but it is set and being provided\n", - "req_data does not request avail_ca or avail_co but it is set and being provided\n", - "req_data does not request avail_ca or avail_co but it is set and being provided\n", - "req_data does not request avail_ca or avail_co but it is set and being provided\n", - "req_data does not request avail_ca or avail_co but it is set and being provided\n", - "req_data does not request avail_ca or avail_co but it is set and being provided\n", - "req_data does not request avail_ca or avail_co but it is set and being provided\n", - "req_data does not request avail_ca or avail_co but it is set and being provided\n", - "req_data does not request avail_ca or avail_co but it is set and being provided\n", - "req_data does not request avail_ca or avail_co but it is set and being provided\n" - ] - }, { "data": { "text/html": [ - "

Iteration 130 [Optimization terminated successfully]

" + "

Iteration 081 [Optimization terminated successfully]

" ], "text/plain": [ "" @@ -2641,7 +2677,7 @@ { "data": { "text/html": [ - "

Best LL = -6094.555918549999

" + "

Best LL = -78188.35046478933

" ], "text/plain": [ "" @@ -2672,70 +2708,74 @@ " \n", " \n", " value\n", + " best\n", " initvalue\n", - " nullvalue\n", " minimum\n", " maximum\n", + " nullvalue\n", " holdfast\n", - " note\n", - " best\n", + " \n", + " \n", + " param_name\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " -2.139\n", - " -2.139000\n", - " -2.139\n", - " -2.139\n", - " -2.139\n", - " -2.139\n", - " 1\n", - " \n", - " -2.139000\n", + " coef_alternative_specific_constant_for_outbound_stops_1out_0in\n", + " -0.817659\n", + " -0.817659\n", + " -0.833\n", + " -inf\n", + " inf\n", + " 0.0\n", + " 0\n", " \n", " \n", - " -3.934\n", - " -3.934000\n", - " -3.934\n", - " -3.934\n", - " -3.934\n", - " -3.934\n", - " 1\n", - " \n", - " -3.934000\n", + " coef_alternative_specific_constant_for_outbound_stops_1out_0in_atwork\n", + " -3.857785\n", + " -3.857785\n", + " -3.896\n", + " -inf\n", + " inf\n", + " 0.0\n", + " 0\n", " \n", " \n", - " coef_alternative_specific_constant_for_outbound_stops_1out_0in\n", - " -0.741225\n", - " -0.833\n", - " 0.000\n", - " NaN\n", - " NaN\n", + " coef_alternative_specific_constant_for_outbound_stops_1out_0in_eatout\n", + " -2.243908\n", + " -2.243908\n", + " -2.190\n", + " -inf\n", + " inf\n", + " 0.0\n", " 0\n", - " \n", - " -0.741225\n", " \n", " \n", - " coef_alternative_specific_constant_for_outbound_stops_2out_0in\n", - " -2.594489\n", - " -2.613\n", - " 0.000\n", - " NaN\n", - " NaN\n", + " coef_alternative_specific_constant_for_outbound_stops_1out_0in_escort\n", + " -2.254734\n", + " -2.254734\n", + " -2.173\n", + " -inf\n", + " inf\n", + " 0.0\n", " 0\n", - " \n", - " -2.594489\n", " \n", " \n", - " coef_alternative_specific_constant_for_return_stops_0out_1in\n", - " -0.447476\n", - " -0.445\n", - " 0.000\n", - " NaN\n", - " NaN\n", + " coef_alternative_specific_constant_for_outbound_stops_1out_0in_othdiscr\n", + " -1.509245\n", + " -1.509245\n", + " -1.581\n", + " -inf\n", + " inf\n", + " 0.0\n", " 0\n", - " \n", - " -0.447476\n", " \n", " \n", " ...\n", @@ -2746,122 +2786,120 @@ " ...\n", " ...\n", " ...\n", - " ...\n", " \n", " \n", " coef_primary_destination_accessibility_log_of_it_\n", - " 0.170704\n", + " 0.191205\n", + " 0.191205\n", " 0.180\n", - " 0.000\n", - " NaN\n", - " NaN\n", + " -inf\n", + " inf\n", + " 0.0\n", " 0\n", - " \n", - " 0.170704\n", " \n", " \n", " coef_subtour_departure_less_than_or_equal_to_11am\n", - " 0.266339\n", + " 0.352247\n", + " 0.352247\n", " 0.310\n", - " 0.000\n", - " NaN\n", - " NaN\n", + " -inf\n", + " inf\n", + " 0.0\n", " 0\n", - " \n", - " 0.266339\n", " \n", " \n", " coef_subtour_distance_in_miles_from_tour_destination_to_subtour_primary_destination_one_way_\n", - " -0.152384\n", + " 0.023141\n", + " 0.023141\n", " 0.020\n", - " 0.000\n", - " NaN\n", - " NaN\n", + " -inf\n", + " inf\n", + " 0.0\n", " 0\n", - " \n", - " -0.152384\n", " \n", " \n", " coef_subtour_duration_in_hours_integer_\n", - " 0.681811\n", + " 0.555413\n", + " 0.555413\n", " 0.560\n", - " 0.000\n", - " NaN\n", - " NaN\n", + " -inf\n", + " inf\n", + " 0.0\n", " 0\n", - " \n", - " 0.681811\n", " \n", " \n", " coef_subtour_return_time_greater_or_equal_to_2pm\n", - " 1.549569\n", + " 0.206446\n", + " 0.206446\n", " 0.340\n", - " 0.000\n", - " NaN\n", - " NaN\n", + " -inf\n", + " inf\n", + " 0.0\n", " 0\n", - " \n", - " 1.549569\n", " \n", " \n", "\n", - "

188 rows × 8 columns

\n", + "

188 rows × 7 columns

\n", "" ], "text/plain": [ - " value initvalue \\\n", - "-2.139 -2.139000 -2.139 \n", - "-3.934 -3.934000 -3.934 \n", - "coef_alternative_specific_constant_for_outbound... -0.741225 -0.833 \n", - "coef_alternative_specific_constant_for_outbound... -2.594489 -2.613 \n", - "coef_alternative_specific_constant_for_return_s... -0.447476 -0.445 \n", - "... ... ... \n", - "coef_primary_destination_accessibility_log_of_it_ 0.170704 0.180 \n", - "coef_subtour_departure_less_than_or_equal_to_11am 0.266339 0.310 \n", - "coef_subtour_distance_in_miles_from_tour_destin... -0.152384 0.020 \n", - "coef_subtour_duration_in_hours_integer_ 0.681811 0.560 \n", - "coef_subtour_return_time_greater_or_equal_to_2pm 1.549569 0.340 \n", + " value best \\\n", + "param_name \n", + "coef_alternative_specific_constant_for_outbound... -0.817659 -0.817659 \n", + "coef_alternative_specific_constant_for_outbound... -3.857785 -3.857785 \n", + "coef_alternative_specific_constant_for_outbound... -2.243908 -2.243908 \n", + "coef_alternative_specific_constant_for_outbound... -2.254734 -2.254734 \n", + "coef_alternative_specific_constant_for_outbound... -1.509245 -1.509245 \n", + "... ... ... \n", + "coef_primary_destination_accessibility_log_of_it_ 0.191205 0.191205 \n", + "coef_subtour_departure_less_than_or_equal_to_11am 0.352247 0.352247 \n", + "coef_subtour_distance_in_miles_from_tour_destin... 0.023141 0.023141 \n", + "coef_subtour_duration_in_hours_integer_ 0.555413 0.555413 \n", + "coef_subtour_return_time_greater_or_equal_to_2pm 0.206446 0.206446 \n", "\n", - " nullvalue minimum \\\n", - "-2.139 -2.139 -2.139 \n", - "-3.934 -3.934 -3.934 \n", - "coef_alternative_specific_constant_for_outbound... 0.000 NaN \n", - "coef_alternative_specific_constant_for_outbound... 0.000 NaN \n", - "coef_alternative_specific_constant_for_return_s... 0.000 NaN \n", + " initvalue minimum \\\n", + "param_name \n", + "coef_alternative_specific_constant_for_outbound... -0.833 -inf \n", + "coef_alternative_specific_constant_for_outbound... -3.896 -inf \n", + "coef_alternative_specific_constant_for_outbound... -2.190 -inf \n", + "coef_alternative_specific_constant_for_outbound... -2.173 -inf \n", + "coef_alternative_specific_constant_for_outbound... -1.581 -inf \n", "... ... ... \n", - "coef_primary_destination_accessibility_log_of_it_ 0.000 NaN \n", - "coef_subtour_departure_less_than_or_equal_to_11am 0.000 NaN \n", - "coef_subtour_distance_in_miles_from_tour_destin... 0.000 NaN \n", - "coef_subtour_duration_in_hours_integer_ 0.000 NaN \n", - "coef_subtour_return_time_greater_or_equal_to_2pm 0.000 NaN \n", + "coef_primary_destination_accessibility_log_of_it_ 0.180 -inf \n", + "coef_subtour_departure_less_than_or_equal_to_11am 0.310 -inf \n", + "coef_subtour_distance_in_miles_from_tour_destin... 0.020 -inf \n", + "coef_subtour_duration_in_hours_integer_ 0.560 -inf \n", + "coef_subtour_return_time_greater_or_equal_to_2pm 0.340 -inf \n", "\n", - " maximum holdfast note \\\n", - "-2.139 -2.139 1 \n", - "-3.934 -3.934 1 \n", - "coef_alternative_specific_constant_for_outbound... NaN 0 \n", - "coef_alternative_specific_constant_for_outbound... NaN 0 \n", - "coef_alternative_specific_constant_for_return_s... NaN 0 \n", - "... ... ... ... \n", - "coef_primary_destination_accessibility_log_of_it_ NaN 0 \n", - "coef_subtour_departure_less_than_or_equal_to_11am NaN 0 \n", - "coef_subtour_distance_in_miles_from_tour_destin... NaN 0 \n", - "coef_subtour_duration_in_hours_integer_ NaN 0 \n", - "coef_subtour_return_time_greater_or_equal_to_2pm NaN 0 \n", + " maximum nullvalue \\\n", + "param_name \n", + "coef_alternative_specific_constant_for_outbound... inf 0.0 \n", + "coef_alternative_specific_constant_for_outbound... inf 0.0 \n", + "coef_alternative_specific_constant_for_outbound... inf 0.0 \n", + "coef_alternative_specific_constant_for_outbound... inf 0.0 \n", + "coef_alternative_specific_constant_for_outbound... inf 0.0 \n", + "... ... ... \n", + "coef_primary_destination_accessibility_log_of_it_ inf 0.0 \n", + "coef_subtour_departure_less_than_or_equal_to_11am inf 0.0 \n", + "coef_subtour_distance_in_miles_from_tour_destin... inf 0.0 \n", + "coef_subtour_duration_in_hours_integer_ inf 0.0 \n", + "coef_subtour_return_time_greater_or_equal_to_2pm inf 0.0 \n", "\n", - " best \n", - "-2.139 -2.139000 \n", - "-3.934 -3.934000 \n", - "coef_alternative_specific_constant_for_outbound... -0.741225 \n", - "coef_alternative_specific_constant_for_outbound... -2.594489 \n", - "coef_alternative_specific_constant_for_return_s... -0.447476 \n", + " holdfast \n", + "param_name \n", + "coef_alternative_specific_constant_for_outbound... 0 \n", + "coef_alternative_specific_constant_for_outbound... 0 \n", + "coef_alternative_specific_constant_for_outbound... 0 \n", + "coef_alternative_specific_constant_for_outbound... 0 \n", + "coef_alternative_specific_constant_for_outbound... 0 \n", "... ... \n", - "coef_primary_destination_accessibility_log_of_it_ 0.170704 \n", - "coef_subtour_departure_less_than_or_equal_to_11am 0.266339 \n", - "coef_subtour_distance_in_miles_from_tour_destin... -0.152384 \n", - "coef_subtour_duration_in_hours_integer_ 0.681811 \n", - "coef_subtour_return_time_greater_or_equal_to_2pm 1.549569 \n", + "coef_primary_destination_accessibility_log_of_it_ 0 \n", + "coef_subtour_departure_less_than_or_equal_to_11am 0 \n", + "coef_subtour_distance_in_miles_from_tour_destin... 0 \n", + "coef_subtour_duration_in_hours_integer_ 0 \n", + "coef_subtour_return_time_greater_or_equal_to_2pm 0 \n", "\n", - "[188 rows x 8 columns]" + "[188 rows x 7 columns]" ] }, "metadata": {}, @@ -2871,10 +2909,9 @@ "name": "stderr", "output_type": "stream", "text": [ - ":1: PossibleOverspecification: WARNING: Model is possibly over-specified (hessian is nearly singular).\n", - " model.estimate(method='SLSQP', options={\"maxiter\": 1000})\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 3.0254868525048906e-31 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n" + "/Users/jpn/Git/est-mode/larch/src/larch/model/optimization.py:338: UserWarning: SLSQP may not play nicely with unbounded parameters\n", + "if you get poor results, consider setting global bounds with model.set_cap()\n", + " warnings.warn( # infinite bounds # )\n" ] }, { @@ -2889,3290 +2926,3126 @@ " \n", " \n", " \n", - " -2.139\n", - " -2.139000\n", + " coef_alternative_specific_constant_for_outbound_stops_1out_0in\n", + " -0.817659\n", " \n", " \n", - " -3.934\n", - " -3.934000\n", + " coef_alternative_specific_constant_for_outbound_stops_1out_0in_atwork\n", + " -3.857785\n", " \n", " \n", - " coef_alternative_specific_constant_for_outbound_stops_1out_0in\n", - " -0.741225\n", + " coef_alternative_specific_constant_for_outbound_stops_1out_0in_eatout\n", + " -2.243908\n", " \n", " \n", - " coef_alternative_specific_constant_for_outbound_stops_2out_0in\n", - " -2.594489\n", + " coef_alternative_specific_constant_for_outbound_stops_1out_0in_escort\n", + " -2.254734\n", " \n", " \n", - " coef_alternative_specific_constant_for_return_stops_0out_1in\n", - " -0.447476\n", + " coef_alternative_specific_constant_for_outbound_stops_1out_0in_othdiscr\n", + " -1.509245\n", " \n", " \n", - " coef_alternative_specific_constant_for_return_stops_0out_2in\n", - " -1.657817\n", + " coef_alternative_specific_constant_for_outbound_stops_1out_0in_othmaint\n", + " -1.850181\n", " \n", " \n", - " coef_alternative_specific_constant_for_the_total_number_of_stops_0out_2in\n", - " 0.039441\n", + " coef_alternative_specific_constant_for_outbound_stops_1out_0in_school\n", + " -2.103501\n", " \n", " \n", - " coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in\n", - " 0.754748\n", + " coef_alternative_specific_constant_for_outbound_stops_1out_0in_shopping\n", + " -1.374719\n", " \n", " \n", - " coef_am_peak_departure_between_6am_and_7_am_including_interacted_with_outbound_tours\n", - " -1.998832\n", + " coef_alternative_specific_constant_for_outbound_stops_1out_0in_social\n", + " -1.100007\n", " \n", " \n", - " coef_dummy_for_all_stops_made_by_transit\n", - " -0.672704\n", + " coef_alternative_specific_constant_for_outbound_stops_1out_0in_univ\n", + " -2.583745\n", " \n", " \n", - " coef_dummy_for_distance_in_miles\n", - " 0.043974\n", + " coef_alternative_specific_constant_for_outbound_stops_2out_0in\n", + " -2.553493\n", " \n", " \n", - " coef_dummy_for_distance_less_than_20_miles\n", - " -0.588175\n", + " coef_alternative_specific_constant_for_outbound_stops_2out_0in_atwork\n", + " -5.670203\n", " \n", " \n", - " coef_dummy_for_female\n", - " 0.282632\n", + " coef_alternative_specific_constant_for_outbound_stops_2out_0in_eatout\n", + " -4.501523\n", " \n", " \n", - " coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_11_hours\n", - " 0.713048\n", + " coef_alternative_specific_constant_for_outbound_stops_2out_0in_escort\n", + " -4.225203\n", " \n", " \n", - " coef_dummy_for_walking_to_all_stops\n", - " -1.491072\n", + " coef_alternative_specific_constant_for_outbound_stops_2out_0in_othdiscr\n", + " -3.357879\n", " \n", " \n", - " coef_evening_arrival_19_00_interacted_with_return_tours\n", - " 0.606441\n", + " coef_alternative_specific_constant_for_outbound_stops_2out_0in_othmaint\n", + " -3.532505\n", " \n", " \n", - " coef_high_income_hh\n", - " 0.240000\n", + " coef_alternative_specific_constant_for_outbound_stops_2out_0in_school\n", + " -3.932072\n", " \n", " \n", - " coef_mid_to_high_income_hh\n", - " 0.230000\n", + " coef_alternative_specific_constant_for_outbound_stops_2out_0in_shopping\n", + " -3.001964\n", " \n", " \n", - " coef_middle_to_low_income_hh\n", - " 0.170000\n", + " coef_alternative_specific_constant_for_outbound_stops_2out_0in_social\n", + " -2.787392\n", " \n", " \n", - " coef_no_stops_if_tour_mode_is_drivetransit\n", - " -999.000000\n", + " coef_alternative_specific_constant_for_outbound_stops_2out_0in_univ\n", + " -3.625877\n", " \n", " \n", - " coef_num_kids_between_5_and_15_including_years_old\n", - " 0.089718\n", + " coef_alternative_specific_constant_for_outbound_stops_3out_0in\n", + " -3.914672\n", " \n", " \n", - " coef_number_of_adults_16_years_old_\n", - " 0.074203\n", + " coef_alternative_specific_constant_for_outbound_stops_3out_0in_atwork\n", + " -7.451244\n", " \n", " \n", - " coef_number_of_cars_number_of_workers\n", - " -0.065713\n", + " coef_alternative_specific_constant_for_outbound_stops_3out_0in_eatout\n", + " -5.213504\n", " \n", " \n", - " coef_number_of_escort_tours_tours_undertaken_by_the_person\n", - " 0.097792\n", + " coef_alternative_specific_constant_for_outbound_stops_3out_0in_escort\n", + " -4.713943\n", " \n", " \n", - " coef_number_of_hh_persons\n", - " -0.328159\n", + " coef_alternative_specific_constant_for_outbound_stops_3out_0in_othdiscr\n", + " -4.262005\n", " \n", " \n", - " coef_number_of_school_tours_tours_undertaken_by_the_person\n", - " 0.130473\n", + " coef_alternative_specific_constant_for_outbound_stops_3out_0in_othmaint\n", + " -5.370287\n", " \n", " \n", - " coef_number_of_shop_tours_undertaken_by_the_houshold\n", - " -0.328294\n", + " coef_alternative_specific_constant_for_outbound_stops_3out_0in_school\n", + " -5.865306\n", " \n", " \n", - " coef_number_of_students_in_hh\n", - " 0.315297\n", + " coef_alternative_specific_constant_for_outbound_stops_3out_0in_shopping\n", + " -4.443339\n", " \n", " \n", - " coef_number_of_subtours_in_the_tour\n", - " 0.337091\n", + " coef_alternative_specific_constant_for_outbound_stops_3out_0in_social\n", + " -4.476231\n", " \n", " \n", - " coef_number_of_university_tours_tours_undertaken_by_the_person\n", - " -0.480000\n", + " coef_alternative_specific_constant_for_outbound_stops_3out_0in_univ\n", + " -5.123628\n", " \n", " \n", - " coef_number_of_work_tours_undertaken_by_the_person\n", - " -0.174762\n", + " coef_alternative_specific_constant_for_outbound_stops_on_joint_tours_1out_0in\n", + " -1.861054\n", " \n", " \n", - " coef_presence_of_kids_between_0_and_4_including_years_old\n", - " 0.557476\n", + " coef_alternative_specific_constant_for_outbound_stops_on_joint_tours_2out_0in\n", + " -4.027317\n", " \n", " \n", - " coef_presence_of_kids_between_5_and_15_including_years_old\n", - " 0.117544\n", + " coef_alternative_specific_constant_for_outbound_stops_on_joint_tours_3out_0in\n", + " -5.079709\n", " \n", " \n", - " -2.672\n", - " -2.672000\n", + " coef_alternative_specific_constant_for_return_stops_0out_1in\n", + " -0.422070\n", " \n", " \n", - " coef_alternative_specific_constant_for_outbound_stops_1out_0in_school\n", - " -1.768772\n", + " coef_alternative_specific_constant_for_return_stops_0out_1in_atwork\n", + " -3.667812\n", " \n", " \n", - " coef_alternative_specific_constant_for_outbound_stops_2out_0in_school\n", - " -4.305875\n", + " coef_alternative_specific_constant_for_return_stops_0out_1in_eatout\n", + " -1.667177\n", " \n", " \n", - " coef_alternative_specific_constant_for_outbound_stops_3out_0in_school\n", - " -6.209404\n", + " coef_alternative_specific_constant_for_return_stops_0out_1in_escort\n", + " -0.883632\n", " \n", " \n", - " coef_alternative_specific_constant_for_return_stops_0out_1in_school\n", - " -1.229114\n", + " coef_alternative_specific_constant_for_return_stops_0out_1in_othdiscr\n", + " -0.944455\n", " \n", " \n", - " coef_alternative_specific_constant_for_return_stops_0out_3in_school\n", - " -3.185728\n", + " coef_alternative_specific_constant_for_return_stops_0out_1in_othmaint\n", + " -0.606891\n", " \n", " \n", - " coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in\n", - " 1.573277\n", + " coef_alternative_specific_constant_for_return_stops_0out_1in_school\n", + " -1.203184\n", " \n", " \n", - " coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_school\n", - " 2.178796\n", + " coef_alternative_specific_constant_for_return_stops_0out_1in_shopping\n", + " -1.155398\n", " \n", " \n", - " coef_arrival_later_than_17_00_\n", - " 1.373657\n", + " coef_alternative_specific_constant_for_return_stops_0out_1in_social\n", + " -1.262568\n", " \n", " \n", - " coef_dummy_for_distance_in_miles_school\n", - " 0.092023\n", + " coef_alternative_specific_constant_for_return_stops_0out_1in_univ\n", + " -1.892703\n", " \n", " \n", - " coef_dummy_for_female_school\n", - " 0.687687\n", + " coef_alternative_specific_constant_for_return_stops_0out_2in\n", + " -1.737740\n", " \n", " \n", - " coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours_\n", - " 1.904120\n", + " coef_alternative_specific_constant_for_return_stops_0out_2in_atwork\n", + " -5.352597\n", " \n", " \n", - " coef_dummy_for_walking_to_all_stops_school\n", - " -1.525112\n", + " coef_alternative_specific_constant_for_return_stops_0out_2in_eatout\n", + " -3.384664\n", " \n", " \n", - " coef_number_of_cars_number_of_workers_school\n", - " 0.282408\n", + " coef_alternative_specific_constant_for_return_stops_0out_2in_escort\n", + " -2.356788\n", " \n", " \n", - " coef_number_of_escort_tours_tours_undertaken_by_the_person_school\n", - " 2.320226\n", + " coef_alternative_specific_constant_for_return_stops_0out_2in_othdiscr\n", + " -2.247941\n", " \n", " \n", - " coef_number_of_hh_persons_school\n", - " -0.602730\n", + " coef_alternative_specific_constant_for_return_stops_0out_2in_othmaint\n", + " -1.549591\n", " \n", " \n", - " coef_presence_of_kids_between_5_and_15_including_years_old_school\n", - " 0.021083\n", + " coef_alternative_specific_constant_for_return_stops_0out_2in_school\n", + " -2.618009\n", " \n", " \n", - " coef_alternative_specific_constant_for_outbound_stops_1out_0in_univ\n", - " -2.211722\n", + " coef_alternative_specific_constant_for_return_stops_0out_2in_shopping\n", + " -2.252362\n", " \n", " \n", - " coef_alternative_specific_constant_for_outbound_stops_2out_0in_univ\n", - " -4.042853\n", + " coef_alternative_specific_constant_for_return_stops_0out_2in_social\n", + " -2.751879\n", " \n", " \n", - " coef_alternative_specific_constant_for_outbound_stops_3out_0in_univ\n", - " -4.641257\n", + " coef_alternative_specific_constant_for_return_stops_0out_2in_univ\n", + " -3.564173\n", " \n", " \n", - " coef_alternative_specific_constant_for_return_stops_0out_1in_univ\n", - " -1.574239\n", + " coef_alternative_specific_constant_for_return_stops_0out_3in\n", + " -2.056255\n", " \n", " \n", - " coef_alternative_specific_constant_for_return_stops_0out_2in_univ\n", - " -3.434788\n", + " coef_alternative_specific_constant_for_return_stops_0out_3in_atwork\n", + " -6.484627\n", " \n", " \n", - " coef_alternative_specific_constant_for_return_stops_0out_3in_univ\n", - " -3.860338\n", + " coef_alternative_specific_constant_for_return_stops_0out_3in_eatout\n", + " -4.733147\n", " \n", " \n", - " coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_univ\n", - " 2.019764\n", + " coef_alternative_specific_constant_for_return_stops_0out_3in_othdiscr\n", + " -2.820768\n", " \n", " \n", - " coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_univ\n", - " 2.117237\n", + " coef_alternative_specific_constant_for_return_stops_0out_3in_othmaint\n", + " -2.348697\n", " \n", " \n", - " coef_arrival_later_than_17_00__univ\n", - " 0.397767\n", + " coef_alternative_specific_constant_for_return_stops_0out_3in_school\n", + " -3.360598\n", " \n", " \n", - " coef_dummy_for_female_univ\n", - " 0.527348\n", + " coef_alternative_specific_constant_for_return_stops_0out_3in_shopping\n", + " -3.086157\n", " \n", " \n", - " coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__univ\n", - " 1.086324\n", + " coef_alternative_specific_constant_for_return_stops_0out_3in_social\n", + " -3.617917\n", " \n", " \n", - " coef_hh_accesibility_for_inbound_tours_interaction\n", - " 0.243672\n", + " coef_alternative_specific_constant_for_return_stops_0out_3in_univ\n", + " -3.549561\n", " \n", " \n", - " coef_number_of_escort_tours_tours_undertaken_by_the_person_univ\n", - " 1.858956\n", + " coef_alternative_specific_constant_for_return_stops_on_joint_tours_0out_1in\n", + " -1.349229\n", " \n", " \n", - " coef_number_of_hh_persons_univ\n", - " -0.326432\n", + " coef_alternative_specific_constant_for_return_stops_on_joint_tours_0out_2in\n", + " -3.006175\n", " \n", " \n", - " coef_number_of_vehicles\n", - " 0.265859\n", + " coef_alternative_specific_constant_for_return_stops_on_joint_tours_0out_3in\n", + " -3.092591\n", " \n", " \n", - " coef_presence_of_kids_between_5_and_15_including_years_old_univ\n", - " -0.061482\n", + " coef_alternative_specific_constant_for_the_total_number_of_stops_0out_2in\n", + " -0.033904\n", " \n", " \n", - " -1.783\n", - " -1.783000\n", + " coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in\n", + " 0.619994\n", " \n", " \n", - " -2.874\n", - " -2.874000\n", + " coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_atwork\n", + " 2.196478\n", " \n", " \n", - " -3.379\n", - " -3.379000\n", + " coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_eatout\n", + " 0.956558\n", " \n", " \n", - " 1.497\n", - " 1.497000\n", + " coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_othdiscr\n", + " 0.779563\n", " \n", " \n", - " coef_alternative_specific_constant_for_outbound_stops_1out_0in_social\n", - " -1.292414\n", + " coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_othmaint\n", + " 0.525190\n", " \n", " \n", - " coef_alternative_specific_constant_for_outbound_stops_3out_0in_social\n", - " -42.649173\n", + " coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_shopping\n", + " 0.518875\n", " \n", " \n", - " coef_alternative_specific_constant_for_outbound_stops_on_joint_tours_2out_0in\n", - " -4.158467\n", + " coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_social\n", + " 0.620383\n", " \n", " \n", - " coef_alternative_specific_constant_for_outbound_stops_on_joint_tours_3out_0in\n", - " -28.920114\n", + " coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_univ\n", + " 1.218010\n", " \n", " \n", - " coef_alternative_specific_constant_for_return_stops_0out_1in_social\n", - " 0.474303\n", + " coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in\n", + " 0.555526\n", " \n", " \n", - " coef_alternative_specific_constant_for_return_stops_0out_2in_social\n", - " -2.400345\n", + " coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_eatout\n", + " 1.979106\n", " \n", " \n", - " coef_alternative_specific_constant_for_return_stops_0out_3in_social\n", - " -3.106704\n", + " coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_escort\n", + " -1.796251\n", " \n", " \n", - " coef_alternative_specific_constant_for_return_stops_on_joint_tours_0out_1in\n", - " -1.489538\n", + " coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_othdiscr\n", + " 1.148950\n", " \n", " \n", - " coef_alternative_specific_constant_for_return_stops_on_joint_tours_0out_2in\n", - " -3.529456\n", + " coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_othmaint\n", + " 0.489201\n", " \n", " \n", - " coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_social\n", - " 2.605627\n", + " coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_school\n", + " 1.203689\n", + " \n", + " \n", + " coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_shopping\n", + " 0.411626\n", " \n", " \n", " coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_social\n", - " -9.808088\n", + " 0.866347\n", " \n", " \n", - " coef_alternative_specific_constant_for_the_total_number_of_stops_on_joint_tours_0out_2in\n", - " -0.168353\n", + " coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_univ\n", + " 1.958267\n", " \n", " \n", - " coef_alternative_specific_constant_for_the_total_number_of_stops_on_joint_tours_1out_3in\n", - " -26.078121\n", + " coef_alternative_specific_constant_for_the_total_number_of_stops_on_joint_tours_0out_2in\n", + " -0.057283\n", " \n", " \n", - " coef_arrival_later_than_17_00__social\n", - " -0.470057\n", + " coef_alternative_specific_constant_for_the_total_number_of_stops_on_joint_tours_1out_3in\n", + " 0.608179\n", " \n", " \n", - " coef_at_least_one_kid_and_one_adult_participate_in_the_tour\n", - " 2.116069\n", + " coef_alternative_specific_constant_for_the_total_number_of_stops_on_joint_tours_2out_3in\n", + " 1.429603\n", " \n", " \n", - " coef_dummy_for_a_return_visiting_tour\n", - " -1.746712\n", + " coef_am_peak_departure_between_6am_and_7_am_including_interacted_with_outbound_tours\n", + " -1.913742\n", " \n", " \n", - " coef_dummy_for_a_visiting_tour_with_both_outbound_and_return_leg\n", - " 0.344025\n", + " coef_arrival_later_than_17_00_\n", + " 1.839504\n", " \n", " \n", - " coef_dummy_for_an_outbound_visiting_tour\n", - " -0.742278\n", + " coef_arrival_later_than_17_00__othdiscr\n", + " -0.637546\n", " \n", " \n", - " coef_dummy_for_distance_in_miles_social\n", - " -0.078778\n", + " coef_arrival_later_than_17_00__social\n", + " -0.708359\n", " \n", " \n", - " coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_3_hours_\n", - " 1.141918\n", + " coef_arrival_later_than_17_00__univ\n", + " 0.352924\n", " \n", " \n", - " coef_dummy_for_walking_to_all_stops_social\n", - " -2.087075\n", + " coef_at_least_one_kid_and_one_adult_participate_in_the_tour\n", + " 0.598380\n", " \n", " \n", - " coef_number_of_persons_participating_in_the_tour_outgoing_stops_interaction\n", - " -0.027490\n", + " coef_dummy_for_a_return_visiting_tour\n", + " -0.542418\n", " \n", " \n", - " coef_number_of_shop_tours_undertaken_by_the_person\n", - " -0.177893\n", + " coef_dummy_for_a_visiting_tour_with_both_outbound_and_return_leg\n", + " 0.637918\n", " \n", " \n", - " coef_number_of_vehicles_social\n", - " -0.154123\n", + " coef_dummy_for_all_stops_made_by_transit\n", + " -0.698140\n", " \n", " \n", - " coef_number_of_work_tours_undertaken_by_the_person_social\n", - " -0.010226\n", + " coef_dummy_for_an_outbound_visiting_tour\n", + " -0.547383\n", " \n", " \n", - " -3.024\n", - " -3.024000\n", + " coef_dummy_for_distance_in_miles\n", + " 0.008199\n", " \n", " \n", - " coef_alternative_specific_constant_for_outbound_stops_1out_0in_shopping\n", - " -1.491871\n", + " coef_dummy_for_distance_in_miles_othdiscr\n", + " -0.016398\n", " \n", " \n", - " coef_alternative_specific_constant_for_outbound_stops_2out_0in_shopping\n", - " -3.340709\n", + " coef_dummy_for_distance_in_miles_othmaint\n", + " 0.024622\n", " \n", " \n", - " coef_alternative_specific_constant_for_outbound_stops_3out_0in_shopping\n", - " -4.537979\n", + " coef_dummy_for_distance_in_miles_school\n", + " 0.048727\n", " \n", " \n", - " coef_alternative_specific_constant_for_return_stops_0out_1in_shopping\n", - " -1.234250\n", + " coef_dummy_for_distance_in_miles_shopping\n", + " 0.042050\n", " \n", " \n", - " coef_alternative_specific_constant_for_return_stops_0out_2in_shopping\n", - " -2.580404\n", + " coef_dummy_for_distance_in_miles_social\n", + " -0.011161\n", " \n", " \n", - " coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_shopping\n", - " 0.585255\n", + " coef_dummy_for_distance_less_than_10_miles_\n", + " 0.311571\n", " \n", " \n", - " coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_shopping\n", - " -0.015580\n", + " coef_dummy_for_distance_less_than_20_miles\n", + " -0.209813\n", " \n", " \n", - " coef_dummy_for_distance_in_miles_shopping\n", - " 0.021405\n", + " coef_dummy_for_distance_less_than_20_miles_\n", + " -0.403250\n", " \n", " \n", " coef_dummy_for_distance_less_than_5_miles\n", - " 0.152609\n", + " 0.391002\n", " \n", " \n", - " coef_dummy_for_female_shopping\n", - " 0.339336\n", + " coef_dummy_for_distance_less_than_5_miles_escort\n", + " 0.287884\n", " \n", " \n", - " coef_dummy_for_only_adults_participate_in_the_tour\n", - " 1.542207\n", + " coef_dummy_for_female\n", + " 0.231116\n", " \n", " \n", - " coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__shopping\n", - " 3.102092\n", + " coef_dummy_for_female_othmaint\n", + " 0.298798\n", " \n", " \n", - " coef_dummy_for_walking_to_all_stops_shopping\n", - " -1.883904\n", + " coef_dummy_for_female_school\n", + " 0.518603\n", " \n", " \n", - " coef_num_kids_between_5_and_15_including_years_old_shopping\n", - " -0.047846\n", + " coef_dummy_for_female_shopping\n", + " 0.199726\n", " \n", " \n", - " coef_number_of_hh_persons_shopping\n", - " -0.086986\n", + " coef_dummy_for_female_univ\n", + " 0.539334\n", " \n", " \n", - " coef_number_of_maintenace_tours_tours_undertaken_by_the_person\n", - " -0.325799\n", + " coef_dummy_for_only_adults_participate_in_the_tour\n", + " 0.241206\n", " \n", " \n", - " coef_number_of_shop_tours_undertaken_by_the_houshold_shopping\n", - " 0.147901\n", + " coef_dummy_for_subtour_origin_tour_destination_at_exurban_or_rual_areatypes_6_or_7_\n", + " 0.270000\n", " \n", " \n", - " coef_number_of_university_tours_tours_undertaken_by_the_person_shopping\n", - " -0.670900\n", + " coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_11_hours\n", + " 0.629566\n", " \n", " \n", - " coef_number_of_work_tours_undertaken_by_the_person_shopping\n", - " -0.437195\n", + " coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_3_hours_\n", + " 1.296845\n", " \n", " \n", - " coef_alternative_specific_constant_for_outbound_stops_1out_0in_eatout\n", - " -1.879526\n", + " coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours_\n", + " 0.935859\n", " \n", " \n", - " coef_alternative_specific_constant_for_outbound_stops_2out_0in_eatout\n", - " -32.613372\n", + " coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__escort\n", + " 0.468894\n", " \n", " \n", - " coef_alternative_specific_constant_for_outbound_stops_3out_0in_eatout\n", - " -3.738703\n", + " coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__othdiscr\n", + " 0.843539\n", " \n", " \n", - " coef_alternative_specific_constant_for_return_stops_0out_1in_eatout\n", - " -1.687121\n", + " coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__othmaint\n", + " 0.103716\n", " \n", " \n", - " coef_alternative_specific_constant_for_return_stops_0out_2in_eatout\n", - " -3.033355\n", + " coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__shopping\n", + " 1.035541\n", " \n", " \n", - " coef_alternative_specific_constant_for_return_stops_0out_3in_eatout\n", - " -4.837278\n", + " coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__univ\n", + " 0.771998\n", " \n", " \n", - " coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_eatout\n", - " -31.986519\n", + " coef_dummy_for_walking_to_all_stops\n", + " -1.590379\n", " \n", " \n", - " coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_eatout\n", - " -30.916248\n", + " coef_dummy_for_walking_to_all_stops_escort\n", + " -2.041910\n", " \n", " \n", - " coef_alternative_specific_constant_for_outbound_stops_1out_0in_escort\n", - " -2.225477\n", + " coef_dummy_for_walking_to_all_stops_othdiscr\n", + " -2.338073\n", " \n", " \n", - " coef_alternative_specific_constant_for_outbound_stops_2out_0in_escort\n", - " -4.857476\n", + " coef_dummy_for_walking_to_all_stops_othmaint\n", + " -1.321421\n", " \n", " \n", - " coef_alternative_specific_constant_for_outbound_stops_3out_0in_escort\n", - " -4.792453\n", + " coef_dummy_for_walking_to_all_stops_school\n", + " -2.074837\n", " \n", " \n", - " coef_alternative_specific_constant_for_return_stops_0out_1in_escort\n", - " -1.279087\n", + " coef_dummy_for_walking_to_all_stops_shopping\n", + " -1.462311\n", " \n", " \n", - " coef_alternative_specific_constant_for_return_stops_0out_2in_escort\n", - " -2.459341\n", + " coef_dummy_for_walking_to_all_stops_social\n", + " -1.649814\n", " \n", " \n", - " coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_escort\n", - " -12.346112\n", + " coef_evening_arrival_19_00_interacted_with_return_tours\n", + " 0.297829\n", " \n", " \n", - " coef_dummy_for_distance_less_than_5_miles_escort\n", - " 0.269808\n", + " coef_hh_accesibility_for_inbound_tours_interaction\n", + " 0.258426\n", " \n", " \n", - " coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__escort\n", - " 1.398712\n", + " coef_high_income_hh\n", + " 0.240000\n", " \n", " \n", - " coef_dummy_for_walking_to_all_stops_escort\n", - " -0.340611\n", + " coef_mid_to_high_income_hh\n", + " 0.230000\n", " \n", " \n", - " coef_number_of_escort_tours_tours_undertaken_by_the_person_escort\n", - " -0.260209\n", + " coef_middle_to_low_income_hh\n", + " 0.170000\n", " \n", " \n", - " coef_number_of_hh_persons_escort\n", - " -0.178510\n", + " coef_middle_to_low_income_hh_\n", + " 0.170000\n", " \n", " \n", - " coef_number_of_students_in_hh_escort\n", - " 0.160886\n", + " coef_middle_to_low_income_hh__atwork\n", + " 0.369298\n", " \n", " \n", - " coef_number_of_work_tours_undertaken_by_the_person_escort\n", - " -0.157913\n", + " coef_no_stops_if_tour_mode_is_drivetransit\n", + " -999.000000\n", " \n", " \n", - " -2.462\n", - " -2.462000\n", + " coef_num_kids_between_5_and_15_including_years_old\n", + " 0.083356\n", " \n", " \n", - " coef_alternative_specific_constant_for_outbound_stops_1out_0in_othmaint\n", - " -2.122249\n", + " coef_num_kids_between_5_and_15_including_years_old_shopping\n", + " 0.033141\n", " \n", " \n", - " coef_alternative_specific_constant_for_outbound_stops_2out_0in_othmaint\n", - " -3.470020\n", + " coef_number_of_adults_16_years_old_\n", + " 0.006177\n", " \n", " \n", - " coef_alternative_specific_constant_for_outbound_stops_3out_0in_othmaint\n", - " -4.230867\n", + " coef_number_of_cars_number_of_workers\n", + " 0.195317\n", " \n", " \n", - " coef_alternative_specific_constant_for_return_stops_0out_1in_othmaint\n", - " -0.833758\n", + " coef_number_of_cars_number_of_workers_school\n", + " 0.630311\n", " \n", " \n", - " coef_alternative_specific_constant_for_return_stops_0out_2in_othmaint\n", - " -1.186628\n", + " coef_number_of_eating_tours_tours_undertaken_by_the_person\n", + " -0.424859\n", " \n", " \n", - " coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_othmaint\n", - " 0.315206\n", + " coef_number_of_escort_tours_tours_undertaken_by_the_person\n", + " 0.285502\n", " \n", " \n", - " coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_othmaint\n", - " -31.005508\n", + " coef_number_of_escort_tours_tours_undertaken_by_the_person_escort\n", + " -0.077934\n", " \n", " \n", - " coef_dummy_for_distance_in_miles_othmaint\n", - " 0.102023\n", + " coef_number_of_escort_tours_tours_undertaken_by_the_person_school\n", + " 1.290196\n", " \n", " \n", - " coef_dummy_for_distance_less_than_20_miles_\n", - " -0.621770\n", + " coef_number_of_escort_tours_tours_undertaken_by_the_person_univ\n", + " 0.984566\n", " \n", " \n", - " coef_dummy_for_female_othmaint\n", - " 0.281419\n", + " coef_number_of_hh_persons\n", + " -0.291501\n", " \n", " \n", - " coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__othmaint\n", - " 0.168631\n", + " coef_number_of_hh_persons_escort\n", + " -0.289093\n", " \n", " \n", - " coef_dummy_for_walking_to_all_stops_othmaint\n", - " -2.298979\n", + " coef_number_of_hh_persons_school\n", + " -0.521641\n", " \n", " \n", - " coef_middle_to_low_income_hh_\n", - " 0.170000\n", + " coef_number_of_hh_persons_shopping\n", + " -0.164111\n", " \n", " \n", - " coef_number_of_maintenace_tours_undertaken_by_the_houshold\n", - " -0.264644\n", + " coef_number_of_hh_persons_univ\n", + " -0.296528\n", " \n", " \n", - " coef_number_of_persons_participating_in_the_tour_return_stops_interaction\n", - " 0.626322\n", + " coef_number_of_maintenace_tours_tours_undertaken_by_the_person\n", + " -0.281780\n", " \n", " \n", - " coef_number_of_shool_tours_tours_undertaken_by_the_person\n", - " -29.423035\n", + " coef_number_of_maintenace_tours_tours_undertaken_by_the_person_othdiscr\n", + " -0.273666\n", " \n", " \n", - " coef_number_of_shop_tours_undertaken_by_the_person_othmaint\n", - " -0.200312\n", + " coef_number_of_maintenace_tours_undertaken_by_the_houshold\n", + " 0.280144\n", " \n", " \n", - " coef_number_of_university_tours_tours_undertaken_by_the_person_othmaint\n", - " -0.625200\n", + " coef_number_of_persons_participating_in_the_tour_outgoing_stops_interaction\n", + " -0.531150\n", " \n", " \n", - " coef_number_of_work_tours_undertaken_by_the_person_othmaint\n", - " -0.357607\n", + " coef_number_of_persons_participating_in_the_tour_return_stops_interaction\n", + " 0.488298\n", " \n", " \n", - " -0.921\n", - " -0.921000\n", + " coef_number_of_school_tours_tours_undertaken_by_the_person\n", + " -1.539830\n", " \n", " \n", - " 0.939\n", - " 0.939000\n", + " coef_number_of_shool_tours_tours_undertaken_by_the_person\n", + " -1.560529\n", " \n", " \n", - " coef_alternative_specific_constant_for_outbound_stops_1out_0in_othdiscr\n", - " -1.388654\n", + " coef_number_of_shool_tours_tours_undertaken_by_the_person_othdiscr\n", + " -0.844016\n", " \n", " \n", - " coef_alternative_specific_constant_for_outbound_stops_2out_0in_othdiscr\n", - " -2.956642\n", + " coef_number_of_shop_tours_undertaken_by_the_houshold\n", + " 0.194165\n", " \n", " \n", - " coef_alternative_specific_constant_for_outbound_stops_3out_0in_othdiscr\n", - " -4.394706\n", + " coef_number_of_shop_tours_undertaken_by_the_houshold_shopping\n", + " -0.142075\n", " \n", " \n", - " coef_alternative_specific_constant_for_return_stops_0out_2in_othdiscr\n", - " -2.518386\n", + " coef_number_of_shop_tours_undertaken_by_the_person\n", + " -0.303706\n", " \n", " \n", - " coef_alternative_specific_constant_for_return_stops_0out_3in_othdiscr\n", - " -3.024368\n", + " coef_number_of_shop_tours_undertaken_by_the_person_othdiscr\n", + " -0.641366\n", " \n", " \n", - " coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_othdiscr\n", - " 1.088281\n", + " coef_number_of_shop_tours_undertaken_by_the_person_othmaint\n", + " -0.175208\n", " \n", " \n", - " coef_arrival_later_than_17_00__othdiscr\n", - " -0.366870\n", + " coef_number_of_students_in_hh\n", + " 0.206028\n", " \n", " \n", - " coef_dummy_for_distance_in_miles_othdiscr\n", - " 0.049345\n", + " coef_number_of_students_in_hh_escort\n", + " 0.216672\n", " \n", " \n", - " coef_dummy_for_distance_less_than_10_miles_\n", - " -0.134693\n", + " coef_number_of_subtours_in_the_tour\n", + " 0.184545\n", " \n", " \n", - " coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__othdiscr\n", - " 0.254085\n", + " coef_number_of_university_tours_tours_undertaken_by_the_person\n", + " -0.480000\n", " \n", " \n", - " coef_dummy_for_walking_to_all_stops_othdiscr\n", - " -2.063119\n", + " coef_number_of_university_tours_tours_undertaken_by_the_person_othmaint\n", + " -0.625200\n", " \n", " \n", - " coef_number_of_maintenace_tours_tours_undertaken_by_the_person_othdiscr\n", - " -0.620680\n", + " coef_number_of_university_tours_tours_undertaken_by_the_person_shopping\n", + " -0.670900\n", " \n", " \n", - " coef_number_of_shool_tours_tours_undertaken_by_the_person_othdiscr\n", - " -0.594832\n", + " coef_number_of_vehicles\n", + " 0.190381\n", " \n", " \n", - " coef_number_of_shop_tours_undertaken_by_the_person_othdiscr\n", - " -0.606953\n", + " coef_number_of_vehicles_social\n", + " -0.158415\n", " \n", " \n", - " coef_number_of_work_tours_undertaken_by_the_person_othdiscr\n", - " -0.475039\n", + " coef_number_of_work_tours_undertaken_by_the_person\n", + " -0.182288\n", " \n", " \n", - " -3.671\n", - " -3.671000\n", + " coef_number_of_work_tours_undertaken_by_the_person_escort\n", + " -0.222404\n", " \n", " \n", - " -3.896\n", - " -3.896000\n", + " coef_number_of_work_tours_undertaken_by_the_person_othdiscr\n", + " -0.546619\n", " \n", " \n", - " -7.3610000000000015\n", - " -7.361000\n", + " coef_number_of_work_tours_undertaken_by_the_person_othmaint\n", + " -0.425997\n", " \n", " \n", - " coef_alternative_specific_constant_for_outbound_stops_2out_0in_atwork\n", - " -5.610476\n", + " coef_number_of_work_tours_undertaken_by_the_person_shopping\n", + " -0.598738\n", " \n", " \n", - " coef_alternative_specific_constant_for_return_stops_0out_2in_atwork\n", - " -6.029237\n", + " coef_number_of_work_tours_undertaken_by_the_person_social\n", + " -0.198089\n", " \n", " \n", - " coef_alternative_specific_constant_for_return_stops_0out_3in_atwork\n", - " -8.017201\n", + " coef_presence_of_kids_between_0_and_4_including_years_old\n", + " 0.738257\n", " \n", " \n", - " coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_atwork\n", - " 2.560150\n", + " coef_presence_of_kids_between_5_and_15_including_years_old\n", + " 0.174006\n", " \n", " \n", - " coef_dummy_for_subtour_origin_tour_destination_at_exurban_or_rual_areatypes_6_or_7_\n", - " 0.270000\n", + " coef_presence_of_kids_between_5_and_15_including_years_old_school\n", + " 0.258141\n", " \n", " \n", - " coef_middle_to_low_income_hh__atwork\n", - " 0.938847\n", + " coef_presence_of_kids_between_5_and_15_including_years_old_univ\n", + " 0.754853\n", " \n", " \n", - " coef_number_of_eating_tours_tours_undertaken_by_the_person\n", - " -0.250258\n", + " coef_primary_destination_accessibility_log_of_it_\n", + " 0.191205\n", + " \n", + " \n", + " coef_subtour_departure_less_than_or_equal_to_11am\n", + " 0.352247\n", + " \n", + " \n", + " coef_subtour_distance_in_miles_from_tour_destination_to_subtour_primary_destination_one_way_\n", + " 0.023141\n", + " \n", + " \n", + " coef_subtour_duration_in_hours_integer_\n", + " 0.555413\n", + " \n", + " \n", + " coef_subtour_return_time_greater_or_equal_to_2pm\n", + " 0.206446\n", + " \n", + " \n", + "logloss1.1174393743806623d_logloss\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", + "
0
coef_alternative_specific_constant_for_outbound_stops_1out_0in1.318164e-07
coef_alternative_specific_constant_for_outbound_stops_1out_0in_atwork-3.450424e-05
coef_alternative_specific_constant_for_outbound_stops_1out_0in_eatout-2.357602e-05
coef_alternative_specific_constant_for_outbound_stops_1out_0in_escort7.327103e-06
coef_alternative_specific_constant_for_outbound_stops_1out_0in_othdiscr5.830160e-05
coef_alternative_specific_constant_for_outbound_stops_1out_0in_othmaint-1.687364e-05
coef_alternative_specific_constant_for_outbound_stops_1out_0in_school-1.669586e-05
coef_alternative_specific_constant_for_outbound_stops_1out_0in_shopping-1.179775e-08
coef_alternative_specific_constant_for_outbound_stops_1out_0in_social1.831328e-05
coef_alternative_specific_constant_for_outbound_stops_1out_0in_univ1.659316e-05
coef_alternative_specific_constant_for_outbound_stops_2out_0in3.044727e-05
coef_alternative_specific_constant_for_outbound_stops_2out_0in_atwork1.175946e-08
coef_alternative_specific_constant_for_outbound_stops_2out_0in_eatout1.022786e-05
coef_alternative_specific_constant_for_outbound_stops_2out_0in_escort1.105196e-05
coef_alternative_specific_constant_for_outbound_stops_2out_0in_othdiscr3.555996e-05
coef_alternative_specific_constant_for_outbound_stops_2out_0in_othmaint-1.893055e-05
coef_alternative_specific_constant_for_outbound_stops_2out_0in_school3.445422e-05
coef_alternative_specific_constant_for_outbound_stops_2out_0in_shopping3.263881e-05
coef_alternative_specific_constant_for_outbound_stops_2out_0in_social-2.496547e-05
coef_alternative_specific_constant_for_outbound_stops_2out_0in_univ1.438293e-05
coef_alternative_specific_constant_for_outbound_stops_3out_0in-1.071751e-05
coef_alternative_specific_constant_for_outbound_stops_3out_0in_atwork-1.888854e-05
coef_alternative_specific_constant_for_outbound_stops_3out_0in_eatout1.167128e-05
coef_alternative_specific_constant_for_outbound_stops_3out_0in_escort1.356432e-05
coef_alternative_specific_constant_for_outbound_stops_3out_0in_othdiscr-3.000084e-05
coef_alternative_specific_constant_for_outbound_stops_3out_0in_othmaint1.163413e-05
coef_alternative_specific_constant_for_outbound_stops_3out_0in_school-2.151305e-06
coef_alternative_specific_constant_for_outbound_stops_3out_0in_shopping-1.610268e-05
coef_alternative_specific_constant_for_outbound_stops_3out_0in_social1.204101e-05
coef_alternative_specific_constant_for_outbound_stops_3out_0in_univ-2.399461e-05
coef_alternative_specific_constant_for_outbound_stops_on_joint_tours_1out_0in1.866585e-05
coef_alternative_specific_constant_for_outbound_stops_on_joint_tours_2out_0in9.984701e-06
coef_alternative_specific_constant_for_outbound_stops_on_joint_tours_3out_0in-2.645255e-05
coef_alternative_specific_constant_for_return_stops_0out_1in-4.708365e-05
coef_alternative_specific_constant_for_return_stops_0out_1in_atwork5.651507e-06
coef_alternative_specific_constant_for_return_stops_0out_1in_eatout1.418406e-06
coef_alternative_specific_constant_for_return_stops_0out_1in_escort-1.108521e-04
coef_alternative_specific_constant_for_return_stops_0out_1in_othdiscr3.754350e-05
coef_alternative_specific_constant_for_return_stops_0out_1in_othmaint-5.058401e-05
coef_alternative_specific_constant_for_return_stops_0out_1in_school-1.317771e-05
coef_alternative_specific_constant_for_return_stops_0out_1in_shopping-1.353818e-05
coef_alternative_specific_constant_for_return_stops_0out_1in_social9.274282e-06
coef_alternative_specific_constant_for_return_stops_0out_1in_univ1.265812e-05
coef_alternative_specific_constant_for_return_stops_0out_2in-1.013444e-04
coef_alternative_specific_constant_for_return_stops_0out_2in_atwork-5.726811e-06
coef_alternative_specific_constant_for_return_stops_0out_2in_eatout2.119117e-06
coef_alternative_specific_constant_for_return_stops_0out_2in_escort7.074619e-05
coef_alternative_specific_constant_for_return_stops_0out_2in_othdiscr6.714927e-06
coef_alternative_specific_constant_for_return_stops_0out_2in_othmaint6.821290e-06
coef_alternative_specific_constant_for_return_stops_0out_2in_school2.925330e-05
coef_alternative_specific_constant_for_return_stops_0out_2in_shopping-4.080487e-05
coef_alternative_specific_constant_for_return_stops_0out_2in_social-4.285482e-05
coef_alternative_specific_constant_for_return_stops_0out_2in_univ3.661192e-05
coef_alternative_specific_constant_for_return_stops_0out_3in1.133758e-04
coef_alternative_specific_constant_for_return_stops_0out_3in_atwork9.086276e-06
coef_alternative_specific_constant_for_return_stops_0out_3in_eatout4.586623e-06
coef_alternative_specific_constant_for_return_stops_0out_3in_othdiscr2.426809e-05
coef_alternative_specific_constant_for_return_stops_0out_3in_othmaint-2.486703e-05
coef_alternative_specific_constant_for_return_stops_0out_3in_school-2.227797e-05
coef_alternative_specific_constant_for_return_stops_0out_3in_shopping2.495105e-05
coef_alternative_specific_constant_for_return_stops_0out_3in_social-6.029497e-05
coef_alternative_specific_constant_for_return_stops_0out_3in_univ1.155529e-05
coef_alternative_specific_constant_for_return_stops_on_joint_tours_0out_1in-3.870571e-06
coef_alternative_specific_constant_for_return_stops_on_joint_tours_0out_2in7.661858e-06
coef_alternative_specific_constant_for_return_stops_on_joint_tours_0out_3in-4.833521e-06
coef_alternative_specific_constant_for_the_total_number_of_stops_0out_2in6.276561e-05
coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in-3.395874e-06
coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_atwork3.600197e-05
coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_eatout4.455986e-07
coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_othdiscr-2.367744e-05
coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_othmaint-1.442248e-05
coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_shopping-8.406942e-05
coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_social1.283479e-05
coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_univ-1.771563e-05
coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in1.798862e-05
coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_eatout-2.174096e-05
coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_escort4.005556e-06
coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_othdiscr-8.102586e-06
coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_othmaint-7.835219e-06
coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_school1.969169e-05
coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_shopping-1.891110e-05
coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_social-1.234210e-05
coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_univ1.908165e-05
coef_alternative_specific_constant_for_the_total_number_of_stops_on_joint_tours_0out_2in-1.399555e-07
coef_alternative_specific_constant_for_the_total_number_of_stops_on_joint_tours_1out_3in1.065266e-05
coef_alternative_specific_constant_for_the_total_number_of_stops_on_joint_tours_2out_3in-2.973298e-05
coef_am_peak_departure_between_6am_and_7_am_including_interacted_with_outbound_tours4.011337e-05
coef_arrival_later_than_17_00_9.509009e-06
coef_arrival_later_than_17_00__othdiscr5.323204e-05
coef_arrival_later_than_17_00__social-3.236359e-05
coef_arrival_later_than_17_00__univ6.463924e-06
coef_at_least_one_kid_and_one_adult_participate_in_the_tour5.107909e-05
coef_dummy_for_a_return_visiting_tour3.250338e-05
coef_dummy_for_a_visiting_tour_with_both_outbound_and_return_leg-2.201652e-05
coef_dummy_for_all_stops_made_by_transit2.881609e-05
coef_dummy_for_an_outbound_visiting_tour6.196096e-06
coef_dummy_for_distance_in_miles9.385043e-06
coef_dummy_for_distance_in_miles_othdiscr-7.834462e-06
coef_dummy_for_distance_in_miles_othmaint4.302748e-05
coef_dummy_for_distance_in_miles_school2.634834e-05
coef_dummy_for_distance_in_miles_shopping-3.883054e-06
coef_dummy_for_distance_in_miles_social-2.876791e-06
coef_dummy_for_distance_less_than_10_miles_8.995802e-05
coef_dummy_for_distance_less_than_20_miles-2.204602e-05
coef_dummy_for_distance_less_than_20_miles_-1.281965e-04
coef_dummy_for_distance_less_than_5_miles-1.119062e-05
coef_dummy_for_distance_less_than_5_miles_escort-1.207377e-05
coef_dummy_for_female-8.480269e-06
coef_dummy_for_female_othmaint-4.926674e-05
coef_dummy_for_female_school1.424463e-05
coef_dummy_for_female_shopping-4.273230e-05
coef_dummy_for_female_univ3.630606e-05
coef_dummy_for_only_adults_participate_in_the_tour1.089846e-05
coef_dummy_for_subtour_origin_tour_destination_at_exurban_or_rual_areatypes_6_or_7_0.000000e+00
coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_11_hours-4.743285e-05
coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_3_hours_-9.652111e-05
coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours_1.664266e-05
coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__escort-5.502657e-06
coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__othdiscr-3.421032e-06
coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__othmaint-2.300422e-05
coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__shopping3.276266e-06
coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__univ-1.959322e-05
coef_dummy_for_walking_to_all_stops6.006629e-06
coef_dummy_for_walking_to_all_stops_escort-3.338229e-05
coef_dummy_for_walking_to_all_stops_othdiscr3.003054e-06
coef_dummy_for_walking_to_all_stops_othmaint5.544972e-06
coef_dummy_for_walking_to_all_stops_school5.590612e-05
coef_dummy_for_walking_to_all_stops_shopping-6.986420e-06
coef_dummy_for_walking_to_all_stops_social-1.812323e-05
coef_evening_arrival_19_00_interacted_with_return_tours-1.075717e-04
coef_hh_accesibility_for_inbound_tours_interaction1.545214e-04
coef_high_income_hh0.000000e+00
coef_mid_to_high_income_hh0.000000e+00
coef_middle_to_low_income_hh0.000000e+00
coef_middle_to_low_income_hh_0.000000e+00
coef_middle_to_low_income_hh__atwork1.591693e-05
coef_no_stops_if_tour_mode_is_drivetransit0.000000e+00
coef_num_kids_between_5_and_15_including_years_old1.811798e-04
coef_num_kids_between_5_and_15_including_years_old_shopping-2.177398e-05
coef_number_of_adults_16_years_old_1.607333e-04
coef_number_of_cars_number_of_workers-5.548331e-05
coef_number_of_cars_number_of_workers_school-4.595882e-05
coef_number_of_eating_tours_tours_undertaken_by_the_person-1.221656e-05
coef_number_of_escort_tours_tours_undertaken_by_the_person3.915582e-05
coef_number_of_escort_tours_tours_undertaken_by_the_person_escort-4.632281e-05
coef_number_of_escort_tours_tours_undertaken_by_the_person_school-1.496317e-06
coef_number_of_escort_tours_tours_undertaken_by_the_person_univ5.820883e-06
coef_number_of_hh_persons-9.384152e-05
coef_number_of_hh_persons_escort4.408343e-05
coef_number_of_hh_persons_school-4.397796e-05
coef_number_of_hh_persons_shopping3.401635e-05
coef_number_of_hh_persons_univ-6.991701e-05
coef_number_of_maintenace_tours_tours_undertaken_by_the_person-1.812134e-05
coef_number_of_maintenace_tours_tours_undertaken_by_the_person_othdiscr-2.534184e-05
coef_number_of_maintenace_tours_undertaken_by_the_houshold2.050003e-06
coef_number_of_persons_participating_in_the_tour_outgoing_stops_interaction6.755108e-06
coef_number_of_persons_participating_in_the_tour_return_stops_interaction-5.553747e-05
coef_number_of_school_tours_tours_undertaken_by_the_person3.616606e-06
coef_number_of_shool_tours_tours_undertaken_by_the_person-4.217392e-05
coef_number_of_shool_tours_tours_undertaken_by_the_person_othdiscr7.289526e-06
coef_number_of_shop_tours_undertaken_by_the_houshold5.577565e-05
coef_number_of_shop_tours_undertaken_by_the_houshold_shopping1.055865e-05
coef_number_of_shop_tours_undertaken_by_the_person2.191567e-05
coef_number_of_shop_tours_undertaken_by_the_person_othdiscr1.735752e-05
coef_number_of_shop_tours_undertaken_by_the_person_othmaint-1.989246e-05
coef_number_of_students_in_hh-3.900317e-05
coef_number_of_students_in_hh_escort-8.924947e-05
coef_number_of_subtours_in_the_tour-1.634519e-05
coef_number_of_university_tours_tours_undertaken_by_the_person0.000000e+00
coef_number_of_university_tours_tours_undertaken_by_the_person_othmaint0.000000e+00
coef_number_of_university_tours_tours_undertaken_by_the_person_shopping0.000000e+00
coef_number_of_vehicles-6.107892e-05
coef_number_of_vehicles_social4.943979e-05
coef_number_of_work_tours_undertaken_by_the_person-4.194501e-05
coef_number_of_work_tours_undertaken_by_the_person_escort-9.605595e-07
coef_number_of_work_tours_undertaken_by_the_person_othdiscr3.079891e-05
coef_number_of_work_tours_undertaken_by_the_person_othmaint-2.034031e-05
coef_number_of_work_tours_undertaken_by_the_person_shopping-2.318647e-05
coef_number_of_work_tours_undertaken_by_the_person_social-4.019493e-05
coef_presence_of_kids_between_0_and_4_including_years_old-9.532148e-05
coef_presence_of_kids_between_5_and_15_including_years_old1.004783e-04
coef_presence_of_kids_between_5_and_15_including_years_old_school-1.763120e-05
coef_presence_of_kids_between_5_and_15_including_years_old_univ-4.857618e-06
coef_primary_destination_accessibility_log_of_it_0.170704-4.708946e-06
coef_subtour_departure_less_than_or_equal_to_11am0.266339-3.435878e-05
coef_subtour_distance_in_miles_from_tour_destination_to_subtour_primary_destination_one_way_-0.1523849.929553e-05
coef_subtour_duration_in_hours_integer_-1.478819e-04
coef_subtour_return_time_greater_or_equal_to_2pm-2.289188e-05
nit81nfev82njev81status0message'Optimization terminated successfully'successTrueelapsed_time0:00:17.187577method'SLSQP'n_cases69971iteration_number81loglike-78188.35046478933" + ], + "text/plain": [ + "┣ x: coef_alternative_specific_constant_for_outbound_stops_1out_0in -0.817659\n", + "┃ coef_alternative_specific_constant_for_outbound_stops_1out_0in_atwork -3.857785\n", + "┃ coef_alternative_specific_constant_for_outbound_stops_1out_0in_eatout -2.243908\n", + "┃ coef_alternative_specific_constant_for_outbound_stops_1out_0in_escort -2.254734\n", + "┃ coef_alternative_specific_constant_for_outbound_stops_1out_0in_othdiscr -1.509245\n", + "┃ ... \n", + "┃ coef_primary_destination_accessibility_log_of_it_ 0.191205\n", + "┃ coef_subtour_departure_less_than_or_equal_to_11am 0.352247\n", + "┃ coef_subtour_distance_in_miles_from_tour_destination_to_subtour_primary_destination_one_way_ 0.023141\n", + "┃ coef_subtour_duration_in_hours_integer_ 0.555413\n", + "┃ coef_subtour_return_time_greater_or_equal_to_2pm 0.206446\n", + "┃ Length: 188, dtype: float64\n", + "┣ logloss: 1.1174393743806623\n", + "┣ d_logloss: coef_alternative_specific_constant_for_outbound_stops_1out_0in 1.318164e-07\n", + "┃ coef_alternative_specific_constant_for_outbound_stops_1out_0in_atwork -3.450424e-05\n", + "┃ coef_alternative_specific_constant_for_outbound_stops_1out_0in_eatout -2.357602e-05\n", + "┃ coef_alternative_specific_constant_for_outbound_stops_1out_0in_escort 7.327103e-06\n", + "┃ coef_alternative_specific_constant_for_outbound_stops_1out_0in_othdiscr 5.830160e-05\n", + "┃ ... \n", + "┃ coef_primary_destination_accessibility_log_of_it_ -4.708946e-06\n", + "┃ coef_subtour_departure_less_than_or_equal_to_11am -3.435878e-05\n", + "┃ coef_subtour_distance_in_miles_from_tour_destination_to_subtour_primary_destination_one_way_ 9.929553e-05\n", + "┃ coef_subtour_duration_in_hours_integer_ -1.478819e-04\n", + "┃ coef_subtour_return_time_greater_or_equal_to_2pm -2.289188e-05\n", + "┃ Length: 188, dtype: float64\n", + "┣ nit: 81\n", + "┣ nfev: 82\n", + "┣ njev: 81\n", + "┣ status: 0\n", + "┣ message: 'Optimization terminated successfully'\n", + "┣ success: True\n", + "┣ elapsed_time: datetime.timedelta(seconds=17, microseconds=187577)\n", + "┣ method: 'SLSQP'\n", + "┣ n_cases: 69971\n", + "┣ iteration_number: 81\n", + "┣ loglike: -78188.35046478933" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.estimate(method='SLSQP', options={\"maxiter\": 1000})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Estimated coefficients" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - "
coef_subtour_duration_in_hours_integer_0.681811 ValueStd Errt StatSignifNull Value
coef_subtour_return_time_greater_or_equal_to_2pm1.549569
loglike-6094.555918549999d_loglike\n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - "
0Parameter     
-2.1390.000000e+00coef_alternative_specific_constant_for_outbound_stops_1out_0in-0.818 0.0344-23.78*** 0.00
-3.9340.000000e+00coef_alternative_specific_constant_for_outbound_stops_1out_0in_atwork-3.86 0.249-15.49*** 0.00
coef_alternative_specific_constant_for_outbound_stops_1out_0in-7.969702e-05coef_alternative_specific_constant_for_outbound_stops_1out_0in_eatout-2.24 0.102-22.05*** 0.00
coef_alternative_specific_constant_for_outbound_stops_2out_0in-7.162521e-04coef_alternative_specific_constant_for_outbound_stops_1out_0in_escort-2.25 0.0741-30.45*** 0.00
coef_alternative_specific_constant_for_return_stops_0out_1in-6.335846e-05coef_alternative_specific_constant_for_outbound_stops_1out_0in_othdiscr-1.51 0.0658-22.93*** 0.00
coef_alternative_specific_constant_for_return_stops_0out_2in9.540429e-05coef_alternative_specific_constant_for_outbound_stops_1out_0in_othmaint-1.85 0.0875-21.14*** 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_0out_2in-5.140413e-04coef_alternative_specific_constant_for_outbound_stops_1out_0in_school-2.10 0.0714-29.46*** 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in-8.954661e-05coef_alternative_specific_constant_for_outbound_stops_1out_0in_shopping-1.37 0.0511-26.89*** 0.00
coef_am_peak_departure_between_6am_and_7_am_including_interacted_with_outbound_tours-2.097418e-04coef_alternative_specific_constant_for_outbound_stops_1out_0in_social-1.10 0.565-1.95 0.00
coef_dummy_for_all_stops_made_by_transit5.963845e-05coef_alternative_specific_constant_for_outbound_stops_1out_0in_univ-2.58 0.148-17.51*** 0.00
coef_dummy_for_distance_in_miles-2.339326e-03coef_alternative_specific_constant_for_outbound_stops_2out_0in-2.55 0.0622-41.08*** 0.00
coef_dummy_for_distance_less_than_20_miles-4.727787e-04coef_alternative_specific_constant_for_outbound_stops_2out_0in_atwork-5.67 0.275-20.66*** 0.00
coef_dummy_for_female2.329415e-05coef_alternative_specific_constant_for_outbound_stops_2out_0in_eatout-4.50 0.236-19.10*** 0.00
coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_11_hours-2.446071e-04coef_alternative_specific_constant_for_outbound_stops_2out_0in_escort-4.23 0.158-26.72*** 0.00
coef_dummy_for_walking_to_all_stops-2.009061e-04coef_alternative_specific_constant_for_outbound_stops_2out_0in_othdiscr-3.36 0.116-28.93*** 0.00
coef_evening_arrival_19_00_interacted_with_return_tours-2.608074e-04coef_alternative_specific_constant_for_outbound_stops_2out_0in_othmaint-3.53 0.157-22.55*** 0.00
coef_high_income_hh0.000000e+00coef_alternative_specific_constant_for_outbound_stops_2out_0in_school-3.93 0.122-32.36*** 0.00
coef_mid_to_high_income_hh0.000000e+00coef_alternative_specific_constant_for_outbound_stops_2out_0in_shopping-3.00 0.0869-34.53*** 0.00
coef_middle_to_low_income_hh0.000000e+00coef_alternative_specific_constant_for_outbound_stops_2out_0in_social-2.79 0.582-4.79*** 0.00
coef_no_stops_if_tour_mode_is_drivetransit0.000000e+00coef_alternative_specific_constant_for_outbound_stops_2out_0in_univ-3.63 0.193-18.79*** 0.00
coef_num_kids_between_5_and_15_including_years_old1.941456e-04coef_alternative_specific_constant_for_outbound_stops_3out_0in-3.91 0.0934-41.93*** 0.00
coef_number_of_adults_16_years_old_2.205314e-04coef_alternative_specific_constant_for_outbound_stops_3out_0in_atwork-7.45 0.358-20.80*** 0.00
coef_number_of_cars_number_of_workers5.994133e-04coef_alternative_specific_constant_for_outbound_stops_3out_0in_eatout-5.21 0.325-16.02*** 0.00
coef_number_of_escort_tours_tours_undertaken_by_the_person-5.224365e-05coef_alternative_specific_constant_for_outbound_stops_3out_0in_escort-4.71 0.202-23.35*** 0.00
coef_number_of_hh_persons1.586957e-03coef_alternative_specific_constant_for_outbound_stops_3out_0in_othdiscr-4.26 0.163-26.11*** 0.00
coef_number_of_school_tours_tours_undertaken_by_the_person-3.034153e-05coef_alternative_specific_constant_for_outbound_stops_3out_0in_othmaint-5.37 0.326-16.47*** 0.00
coef_number_of_shop_tours_undertaken_by_the_houshold1.116601e-04coef_alternative_specific_constant_for_outbound_stops_3out_0in_school-5.87 0.244-24.09*** 0.00
coef_number_of_students_in_hh1.126486e-04coef_alternative_specific_constant_for_outbound_stops_3out_0in_shopping-4.44 0.143-30.98*** 0.00
coef_number_of_subtours_in_the_tour-4.322246e-04coef_alternative_specific_constant_for_outbound_stops_3out_0in_social-4.48 0.653-6.86*** 0.00
coef_number_of_university_tours_tours_undertaken_by_the_person0.000000e+00coef_alternative_specific_constant_for_outbound_stops_3out_0in_univ-5.12 0.304-16.88*** 0.00
coef_number_of_work_tours_undertaken_by_the_person-3.832504e-04coef_alternative_specific_constant_for_outbound_stops_on_joint_tours_1out_0in-1.86 0.132-14.07*** 0.00
coef_presence_of_kids_between_0_and_4_including_years_old-2.811261e-04coef_alternative_specific_constant_for_outbound_stops_on_joint_tours_2out_0in-4.03 0.366-11.00*** 0.00
coef_presence_of_kids_between_5_and_15_including_years_old1.838518e-04coef_alternative_specific_constant_for_outbound_stops_on_joint_tours_3out_0in-5.08 0.509-9.97*** 0.00
-2.6720.000000e+00coef_alternative_specific_constant_for_return_stops_0out_1in-0.422 0.0376-11.23*** 0.00
coef_alternative_specific_constant_for_outbound_stops_1out_0in_school3.622369e-04coef_alternative_specific_constant_for_return_stops_0out_1in_atwork-3.67 0.250-14.69*** 0.00
coef_alternative_specific_constant_for_outbound_stops_2out_0in_school-1.073515e-04coef_alternative_specific_constant_for_return_stops_0out_1in_eatout-1.67 0.0960-17.36*** 0.00
coef_alternative_specific_constant_for_outbound_stops_3out_0in_school5.591613e-07coef_alternative_specific_constant_for_return_stops_0out_1in_escort-0.884 0.0729-12.12*** 0.00
coef_alternative_specific_constant_for_return_stops_0out_1in_school-4.218724e-04coef_alternative_specific_constant_for_return_stops_0out_1in_othdiscr-0.944 0.0691-13.68*** 0.00
coef_alternative_specific_constant_for_return_stops_0out_3in_school-1.172540e-04coef_alternative_specific_constant_for_return_stops_0out_1in_othmaint-0.607 0.0995-6.10*** 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in6.638463e-05coef_alternative_specific_constant_for_return_stops_0out_1in_school-1.20 0.0752-16.01*** 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_school-4.148872e-05coef_alternative_specific_constant_for_return_stops_0out_1in_shopping-1.16 0.0523-22.10*** 0.00
coef_arrival_later_than_17_00_3.242621e-05coef_alternative_specific_constant_for_return_stops_0out_1in_social-1.26 0.260-4.86*** 0.00
coef_dummy_for_distance_in_miles_school1.257368e-04coef_alternative_specific_constant_for_return_stops_0out_1in_univ-1.89 0.143-13.28*** 0.00
coef_dummy_for_female_school1.151809e-04coef_alternative_specific_constant_for_return_stops_0out_2in-1.74 0.0605-28.73*** 0.00
coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours_1.609739e-04coef_alternative_specific_constant_for_return_stops_0out_2in_atwork-5.35 0.270-19.83*** 0.00
coef_dummy_for_walking_to_all_stops_school-2.948826e-05coef_alternative_specific_constant_for_return_stops_0out_2in_eatout-3.38 0.161-21.08*** 0.00
coef_number_of_cars_number_of_workers_school-1.267875e-04coef_alternative_specific_constant_for_return_stops_0out_2in_escort-2.36 0.104-22.69*** 0.00
coef_number_of_escort_tours_tours_undertaken_by_the_person_school-1.086302e-04coef_alternative_specific_constant_for_return_stops_0out_2in_othdiscr-2.25 0.0973-23.10*** 0.00
coef_number_of_hh_persons_school-8.934922e-05coef_alternative_specific_constant_for_return_stops_0out_2in_othmaint-1.55 0.121-12.84*** 0.00
coef_presence_of_kids_between_5_and_15_including_years_old_school2.925349e-04coef_alternative_specific_constant_for_return_stops_0out_2in_school-2.62 0.101-25.83*** 0.00
coef_alternative_specific_constant_for_outbound_stops_1out_0in_univ2.297287e-04coef_alternative_specific_constant_for_return_stops_0out_2in_shopping-2.25 0.0774-29.09*** 0.00
coef_alternative_specific_constant_for_outbound_stops_2out_0in_univ-7.201840e-04coef_alternative_specific_constant_for_return_stops_0out_2in_social-2.75 0.290-9.48*** 0.00
coef_alternative_specific_constant_for_outbound_stops_3out_0in_univ3.180905e-04coef_alternative_specific_constant_for_return_stops_0out_2in_univ-3.56 0.199-17.95*** 0.00
coef_alternative_specific_constant_for_return_stops_0out_1in_univ-6.094370e-04coef_alternative_specific_constant_for_return_stops_0out_3in-2.06 0.0653-31.50*** 0.00
coef_alternative_specific_constant_for_return_stops_0out_2in_univ2.159121e-04coef_alternative_specific_constant_for_return_stops_0out_3in_atwork-6.48 0.304-21.31*** 0.00
coef_alternative_specific_constant_for_return_stops_0out_3in_univ-2.067752e-04coef_alternative_specific_constant_for_return_stops_0out_3in_eatout-4.73 0.275-17.24*** 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_univ-1.224656e-04coef_alternative_specific_constant_for_return_stops_0out_3in_othdiscr-2.82 0.121-23.37*** 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_univ1.115042e-04coef_alternative_specific_constant_for_return_stops_0out_3in_othmaint-2.35 0.149-15.81*** 0.00
coef_arrival_later_than_17_00__univ3.883451e-05coef_alternative_specific_constant_for_return_stops_0out_3in_school-3.36 0.124-27.19*** 0.00
coef_dummy_for_female_univ-2.006300e-04coef_alternative_specific_constant_for_return_stops_0out_3in_shopping-3.09 0.0889-34.71*** 0.00
coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__univ1.801912e-05coef_alternative_specific_constant_for_return_stops_0out_3in_social-3.62 0.345-10.49*** 0.00
coef_hh_accesibility_for_inbound_tours_interaction1.451782e-04coef_alternative_specific_constant_for_return_stops_0out_3in_univ-3.55 0.207-17.16*** 0.00
coef_number_of_escort_tours_tours_undertaken_by_the_person_univ4.571784e-05coef_alternative_specific_constant_for_return_stops_on_joint_tours_0out_1in-1.35 0.109-12.40*** 0.00
coef_number_of_hh_persons_univ-9.257971e-05coef_alternative_specific_constant_for_return_stops_on_joint_tours_0out_2in-3.01 0.298-10.08*** 0.00
coef_number_of_vehicles-3.492440e-05coef_alternative_specific_constant_for_return_stops_on_joint_tours_0out_3in-3.09 0.319-9.71*** 0.00
coef_presence_of_kids_between_5_and_15_including_years_old_univ-1.005346e-04coef_alternative_specific_constant_for_the_total_number_of_stops_0out_2in-0.0339 0.0356-0.95 0.00
-1.7830.000000e+00coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in 0.620 0.180 3.44*** 0.00
-2.8740.000000e+00coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_atwork 2.20 0.379 5.79*** 0.00
-3.3790.000000e+00coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_eatout 0.957 0.397 2.41* 0.00
1.4970.000000e+00coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_othdiscr 0.780 0.146 5.35*** 0.00
coef_alternative_specific_constant_for_outbound_stops_1out_0in_social-1.680088e-04coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_othmaint 0.525 0.198 2.65** 0.00
coef_alternative_specific_constant_for_outbound_stops_3out_0in_social-1.534541e-16coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_shopping 0.519 0.123 4.22*** 0.00
coef_alternative_specific_constant_for_outbound_stops_on_joint_tours_2out_0in-1.142652e-04coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_social 0.620 0.318 1.95 0.00
coef_alternative_specific_constant_for_outbound_stops_on_joint_tours_3out_0in-2.817966e-11coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_univ 1.22 0.294 4.14*** 0.00
coef_alternative_specific_constant_for_return_stops_0out_1in_social2.375526e-04coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in 0.556 0.128 4.35*** 0.00
coef_alternative_specific_constant_for_return_stops_0out_2in_social-2.745402e-08coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_eatout 1.98 0.616 3.21** 0.00
coef_alternative_specific_constant_for_return_stops_0out_3in_social-8.463137e-05coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_escort-1.80 1.19-1.51 0.00
coef_alternative_specific_constant_for_return_stops_on_joint_tours_0out_1in6.231017e-04coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_othdiscr 1.15 0.241 4.76*** 0.00
coef_alternative_specific_constant_for_return_stops_on_joint_tours_0out_2in8.245417e-05coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_othmaint 0.489 0.418 1.17 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_social-1.206021e-04coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_school 1.20 0.317 3.80*** 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_social-1.513475e-06coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_shopping 0.412 0.245 1.68 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_on_joint_tours_0out_2in-2.522694e-04coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_social 0.866 0.592 1.46 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_on_joint_tours_1out_3in-3.539804e-12coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_univ 1.96 0.383 5.12*** 0.00
coef_arrival_later_than_17_00__social4.029635e-04coef_alternative_specific_constant_for_the_total_number_of_stops_on_joint_tours_0out_2in-0.0573 0.238-0.24 0.00
coef_at_least_one_kid_and_one_adult_participate_in_the_tour3.720282e-04coef_alternative_specific_constant_for_the_total_number_of_stops_on_joint_tours_1out_3in 0.608 0.463 1.31 0.00
coef_dummy_for_a_return_visiting_tour3.077125e-04coef_alternative_specific_constant_for_the_total_number_of_stops_on_joint_tours_2out_3in 1.43 0.759 1.88 0.00
coef_dummy_for_a_visiting_tour_with_both_outbound_and_return_leg1.591081e-04coef_am_peak_departure_between_6am_and_7_am_including_interacted_with_outbound_tours-1.91 0.0370-51.75*** 0.00
coef_dummy_for_an_outbound_visiting_tour9.181048e-05coef_arrival_later_than_17_00_ 1.84 0.0758 24.27*** 0.00
coef_dummy_for_distance_in_miles_social6.278670e-04coef_arrival_later_than_17_00__othdiscr-0.638 0.0589-10.83*** 0.00
coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_3_hours_5.519594e-04coef_arrival_later_than_17_00__social-0.708 0.0742-9.55*** 0.00
coef_dummy_for_walking_to_all_stops_social4.496402e-04coef_arrival_later_than_17_00__univ 0.353 0.112 3.14** 0.00
coef_number_of_persons_participating_in_the_tour_outgoing_stops_interaction5.942079e-07coef_at_least_one_kid_and_one_adult_participate_in_the_tour 0.598 0.257 2.33* 0.00
coef_number_of_shop_tours_undertaken_by_the_person1.577034e-04coef_dummy_for_a_return_visiting_tour-0.542 0.250-2.17* 0.00
coef_number_of_vehicles_social1.013531e-03coef_dummy_for_a_visiting_tour_with_both_outbound_and_return_leg 0.638 0.173 3.69*** 0.00
coef_number_of_work_tours_undertaken_by_the_person_social7.685343e-04coef_dummy_for_all_stops_made_by_transit-0.698 0.0392-17.80*** 0.00
-3.0240.000000e+00coef_dummy_for_an_outbound_visiting_tour-0.547 0.560-0.98 0.00
coef_alternative_specific_constant_for_outbound_stops_1out_0in_shopping2.666344e-05coef_dummy_for_distance_in_miles 0.00820 0.00214 3.83*** 0.00
coef_alternative_specific_constant_for_outbound_stops_2out_0in_shopping6.780320e-05coef_dummy_for_distance_in_miles_othdiscr-0.0164 0.00521-3.15** 0.00
coef_alternative_specific_constant_for_outbound_stops_3out_0in_shopping-7.271615e-04coef_dummy_for_distance_in_miles_othmaint 0.0246 0.00536 4.59*** 0.00
coef_alternative_specific_constant_for_return_stops_0out_1in_shopping-9.635243e-06coef_dummy_for_distance_in_miles_school 0.0487 0.00546 8.92*** 0.00
coef_alternative_specific_constant_for_return_stops_0out_2in_shopping5.507170e-05coef_dummy_for_distance_in_miles_shopping 0.0421 0.00629 6.68*** 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_shopping-5.236271e-05coef_dummy_for_distance_in_miles_social-0.0112 0.00621-1.80 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_shopping-7.154384e-05coef_dummy_for_distance_less_than_10_miles_ 0.312 0.0676 4.61*** 0.00
coef_dummy_for_distance_in_miles_shopping2.523396e-04coef_dummy_for_distance_less_than_20_miles-0.210 0.0571-3.67*** 0.00
coef_dummy_for_distance_less_than_5_miles-2.476980e-05coef_dummy_for_distance_less_than_20_miles_-0.403 0.109-3.71*** 0.00
coef_dummy_for_female_shopping4.740709e-04coef_dummy_for_distance_less_than_5_miles 0.391 0.0569 6.87*** 0.00
coef_dummy_for_only_adults_participate_in_the_tour4.017317e-04coef_dummy_for_distance_less_than_5_miles_escort 0.288 0.0736 3.91*** 0.00
coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__shopping-4.228203e-05coef_dummy_for_female 0.231 0.0317 7.29*** 0.00
coef_dummy_for_walking_to_all_stops_shopping-3.690879e-04coef_dummy_for_female_othmaint 0.299 0.0693 4.31*** 0.00
coef_num_kids_between_5_and_15_including_years_old_shopping-1.102340e-04coef_dummy_for_female_school 0.519 0.0577 9.00*** 0.00
coef_number_of_hh_persons_shopping2.463465e-04coef_dummy_for_female_shopping 0.200 0.0467 4.28*** 0.00
coef_number_of_maintenace_tours_tours_undertaken_by_the_person7.302562e-05coef_dummy_for_female_univ 0.539 0.111 4.84*** 0.00
coef_number_of_shop_tours_undertaken_by_the_houshold_shopping-2.407855e-05coef_dummy_for_only_adults_participate_in_the_tour 0.241 0.194 1.25 0.00
coef_number_of_university_tours_tours_undertaken_by_the_person_shopping0.000000e+00coef_dummy_for_subtour_origin_tour_destination_at_exurban_or_rual_areatypes_6_or_7_ 0.270 NA NA 0.00
coef_number_of_work_tours_undertaken_by_the_person_shopping8.243323e-05coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_11_hours 0.630 0.0404 15.57*** 0.00
coef_alternative_specific_constant_for_outbound_stops_1out_0in_eatout-3.755981e-04coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_3_hours_ 1.30 0.0744 17.43*** 0.00
coef_alternative_specific_constant_for_outbound_stops_2out_0in_eatout-1.868019e-12coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours_ 0.936 0.0765 12.24*** 0.00
coef_alternative_specific_constant_for_outbound_stops_3out_0in_eatout4.022851e-04coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__escort 0.469 0.163 2.88** 0.00
coef_alternative_specific_constant_for_return_stops_0out_1in_eatout-1.344298e-04coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__othdiscr 0.844 0.118 7.13*** 0.00
coef_alternative_specific_constant_for_return_stops_0out_2in_eatout-1.392861e-04coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__othmaint 0.104 0.161 0.65 0.00
coef_alternative_specific_constant_for_return_stops_0out_3in_eatout1.106246e-04coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__shopping 1.04 0.156 6.66*** 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_eatout-1.796611e-14coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__univ 0.772 0.320 2.41* 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_eatout-1.259540e-14coef_dummy_for_walking_to_all_stops-1.59 0.0898-17.72*** 0.00
coef_alternative_specific_constant_for_outbound_stops_1out_0in_escort-4.940134e-04coef_dummy_for_walking_to_all_stops_escort-2.04 0.265-7.71*** 0.00
coef_alternative_specific_constant_for_outbound_stops_2out_0in_escort1.495955e-04coef_dummy_for_walking_to_all_stops_othdiscr-2.34 0.153-15.29*** 0.00
coef_alternative_specific_constant_for_outbound_stops_3out_0in_escort-3.241983e-04coef_dummy_for_walking_to_all_stops_othmaint-1.32 0.170-7.79*** 0.00
coef_alternative_specific_constant_for_return_stops_0out_1in_escort9.510081e-04coef_dummy_for_walking_to_all_stops_school-2.07 0.112-18.53*** 0.00
coef_alternative_specific_constant_for_return_stops_0out_2in_escort-2.900724e-04coef_dummy_for_walking_to_all_stops_shopping-1.46 0.109-13.36*** 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_escort-1.512127e-06coef_dummy_for_walking_to_all_stops_social-1.65 0.150-10.97*** 0.00
coef_dummy_for_distance_less_than_5_miles_escort2.673121e-05coef_evening_arrival_19_00_interacted_with_return_tours 0.298 0.0385 7.73*** 0.00
coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__escort-3.600725e-05coef_hh_accesibility_for_inbound_tours_interaction 0.258 0.0256 10.09*** 0.00
coef_dummy_for_walking_to_all_stops_escort1.191655e-04coef_high_income_hh 0.240 NA NA 0.00
coef_number_of_escort_tours_tours_undertaken_by_the_person_escort-7.410121e-05coef_mid_to_high_income_hh 0.230 NA NA 0.00
coef_number_of_hh_persons_escort-3.140191e-04coef_middle_to_low_income_hh 0.170 2.03e-14 BIG*** 0.00
coef_number_of_students_in_hh_escort1.269734e-04coef_middle_to_low_income_hh_ 0.170 1.42e-14 BIG*** 0.00
coef_number_of_work_tours_undertaken_by_the_person_escort-2.773780e-05coef_middle_to_low_income_hh__atwork 0.369 0.262 1.41 0.00
-2.4620.000000e+00coef_no_stops_if_tour_mode_is_drivetransit-999. NA NA 0.00
coef_alternative_specific_constant_for_outbound_stops_1out_0in_othmaint1.221742e-04coef_num_kids_between_5_and_15_including_years_old 0.0834 0.0434 1.92 0.00
coef_alternative_specific_constant_for_outbound_stops_2out_0in_othmaint3.550288e-05coef_num_kids_between_5_and_15_including_years_old_shopping 0.0331 0.0347 0.95 0.00
coef_alternative_specific_constant_for_outbound_stops_3out_0in_othmaint-3.087708e-04coef_number_of_adults_16_years_old_ 0.00618 0.0229 0.27 0.00
coef_alternative_specific_constant_for_return_stops_0out_1in_othmaint4.516106e-04coef_number_of_cars_number_of_workers 0.195 0.0414 4.72*** 0.00
coef_alternative_specific_constant_for_return_stops_0out_2in_othmaint3.975618e-04coef_number_of_cars_number_of_workers_school 0.630 0.0881 7.16*** 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_othmaint-6.769433e-05coef_number_of_eating_tours_tours_undertaken_by_the_person-0.425 0.178-2.39* 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_othmaint-4.805955e-14coef_number_of_escort_tours_tours_undertaken_by_the_person 0.286 0.0527 5.42*** 0.00
coef_dummy_for_distance_in_miles_othmaint-1.679261e-04coef_number_of_escort_tours_tours_undertaken_by_the_person_escort-0.0779 0.0376-2.07* 0.00
coef_dummy_for_distance_less_than_20_miles_3.465085e-05coef_number_of_escort_tours_tours_undertaken_by_the_person_school 1.29 0.133 9.72*** 0.00
coef_dummy_for_female_othmaint1.685909e-04coef_number_of_escort_tours_tours_undertaken_by_the_person_univ 0.985 0.191 5.15*** 0.00
coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__othmaint-1.142635e-04coef_number_of_hh_persons-0.292 0.0225-12.98*** 0.00
coef_dummy_for_walking_to_all_stops_othmaint-3.369012e-04coef_number_of_hh_persons_escort-0.289 0.0247-11.72*** 0.00
coef_middle_to_low_income_hh_0.000000e+00coef_number_of_hh_persons_school-0.522 0.0197-26.42*** 0.00
coef_number_of_maintenace_tours_undertaken_by_the_houshold1.869470e-04coef_number_of_hh_persons_shopping-0.164 0.0143-11.47*** 0.00
coef_number_of_persons_participating_in_the_tour_return_stops_interaction1.532520e-05coef_number_of_hh_persons_univ-0.297 0.0417-7.12*** 0.00
coef_number_of_shool_tours_tours_undertaken_by_the_person-9.850134e-13coef_number_of_maintenace_tours_tours_undertaken_by_the_person-0.282 0.0682-4.13*** 0.00
coef_number_of_shop_tours_undertaken_by_the_person_othmaint1.727916e-04coef_number_of_maintenace_tours_tours_undertaken_by_the_person_othdiscr-0.274 0.0896-3.05** 0.00
coef_number_of_university_tours_tours_undertaken_by_the_person_othmaint0.000000e+00coef_number_of_maintenace_tours_undertaken_by_the_houshold 0.280 0.157 1.78 0.00
coef_number_of_work_tours_undertaken_by_the_person_othmaint-1.965224e-04coef_number_of_persons_participating_in_the_tour_outgoing_stops_interaction-0.531 0.165-3.22** 0.00
-0.9210.000000e+00coef_number_of_persons_participating_in_the_tour_return_stops_interaction 0.488 0.0633 7.72*** 0.00
0.9390.000000e+00coef_number_of_school_tours_tours_undertaken_by_the_person-1.54 0.467-3.30*** 0.00
coef_alternative_specific_constant_for_outbound_stops_1out_0in_othdiscr-3.506169e-04coef_number_of_shool_tours_tours_undertaken_by_the_person-1.56 0.258-6.05*** 0.00
coef_alternative_specific_constant_for_outbound_stops_2out_0in_othdiscr1.907176e-04coef_number_of_shool_tours_tours_undertaken_by_the_person_othdiscr-0.844 0.100-8.43*** 0.00
coef_alternative_specific_constant_for_outbound_stops_3out_0in_othdiscr3.189979e-04coef_number_of_shop_tours_undertaken_by_the_houshold 0.194 0.245 0.79 0.00
coef_alternative_specific_constant_for_return_stops_0out_2in_othdiscr2.028679e-04coef_number_of_shop_tours_undertaken_by_the_houshold_shopping-0.142 0.117-1.21 0.00
coef_alternative_specific_constant_for_return_stops_0out_3in_othdiscr1.562541e-05coef_number_of_shop_tours_undertaken_by_the_person-0.304 0.0956-3.18** 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_othdiscr2.583440e-04coef_number_of_shop_tours_undertaken_by_the_person_othdiscr-0.641 0.0747-8.59*** 0.00
coef_arrival_later_than_17_00__othdiscr1.080590e-04coef_number_of_shop_tours_undertaken_by_the_person_othmaint-0.175 0.0767-2.28* 0.00
coef_dummy_for_distance_in_miles_othdiscr9.492548e-04coef_number_of_students_in_hh 0.206 0.0209 9.85*** 0.00
coef_dummy_for_distance_less_than_10_miles_1.588828e-04coef_number_of_students_in_hh_escort 0.217 0.0357 6.07*** 0.00
coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__othdiscr1.826016e-04coef_number_of_subtours_in_the_tour 0.185 0.0354 5.21*** 0.00
coef_dummy_for_walking_to_all_stops_othdiscr1.223109e-04coef_number_of_university_tours_tours_undertaken_by_the_person-0.480 NA NA 0.00
coef_number_of_maintenace_tours_tours_undertaken_by_the_person_othdiscr-7.663028e-04coef_number_of_university_tours_tours_undertaken_by_the_person_othmaint-0.625 4.04e-15-BIG*** 0.00
coef_number_of_shool_tours_tours_undertaken_by_the_person_othdiscr4.152763e-04coef_number_of_university_tours_tours_undertaken_by_the_person_shopping-0.671 7.34e-15-BIG*** 0.00
coef_number_of_shop_tours_undertaken_by_the_person_othdiscr3.120237e-04coef_number_of_vehicles 0.190 0.0605 3.14** 0.00
coef_number_of_work_tours_undertaken_by_the_person_othdiscr3.092441e-04coef_number_of_vehicles_social-0.158 0.0333-4.76*** 0.00
-3.6710.000000e+00coef_number_of_work_tours_undertaken_by_the_person-0.182 0.0552-3.30*** 0.00
-3.8960.000000e+00coef_number_of_work_tours_undertaken_by_the_person_escort-0.222 0.0707-3.15** 0.00
-7.36100000000000150.000000e+00coef_number_of_work_tours_undertaken_by_the_person_othdiscr-0.547 0.0742-7.36*** 0.00
coef_alternative_specific_constant_for_outbound_stops_2out_0in_atwork-3.052719e-04coef_number_of_work_tours_undertaken_by_the_person_othmaint-0.426 0.0859-4.96*** 0.00
coef_alternative_specific_constant_for_return_stops_0out_2in_atwork-1.668958e-04coef_number_of_work_tours_undertaken_by_the_person_shopping-0.599 0.0588-10.19*** 0.00
coef_alternative_specific_constant_for_return_stops_0out_3in_atwork2.048973e-04coef_number_of_work_tours_undertaken_by_the_person_social-0.198 0.0971-2.04* 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_atwork1.185991e-04coef_presence_of_kids_between_0_and_4_including_years_old 0.738 0.0493 14.98*** 0.00
coef_dummy_for_subtour_origin_tour_destination_at_exurban_or_rual_areatypes_6_or_7_0.000000e+00coef_presence_of_kids_between_5_and_15_including_years_old 0.174 0.0692 2.52* 0.00
coef_middle_to_low_income_hh__atwork-1.187817e-03coef_presence_of_kids_between_5_and_15_including_years_old_school 0.258 0.0737 3.50*** 0.00
coef_number_of_eating_tours_tours_undertaken_by_the_person4.166759e-04coef_presence_of_kids_between_5_and_15_including_years_old_univ 0.755 0.165 4.58*** 0.00
coef_primary_destination_accessibility_log_of_it_-3.977574e-03coef_primary_destination_accessibility_log_of_it_ 0.191 0.0120 15.92*** 0.00
coef_subtour_departure_less_than_or_equal_to_11am-7.903092e-04coef_subtour_departure_less_than_or_equal_to_11am 0.352 0.0707 4.98*** 0.00
coef_subtour_distance_in_miles_from_tour_destination_to_subtour_primary_destination_one_way_-4.153043e-03coef_subtour_distance_in_miles_from_tour_destination_to_subtour_primary_destination_one_way_ 0.0231 0.0171 1.35 0.00
coef_subtour_duration_in_hours_integer_-2.149064e-03coef_subtour_duration_in_hours_integer_ 0.555 0.0253 21.94*** 0.00
coef_subtour_return_time_greater_or_equal_to_2pm1.538038e-04coef_subtour_return_time_greater_or_equal_to_2pm 0.206 0.209 0.99 0.00
nit130nfev327njev130status0message'Optimization terminated successfully'successTrueelapsed_time0:01:25.611724method'SLSQP'n_cases5778iteration_number130logloss1.0547864171945307" - ], - "text/plain": [ - "┣ x: -2.139 -2.139000\n", - "┃ -3.934 -3.934000\n", - "┃ coef_alternative_specific_constant_for_outbound_stops_1out_0in -0.741225\n", - "┃ coef_alternative_specific_constant_for_outbound_stops_2out_0in -2.594489\n", - "┃ coef_alternative_specific_constant_for_return_stops_0out_1in -0.447476\n", - "┃ ... \n", - "┃ coef_primary_destination_accessibility_log_of_it_ 0.170704\n", - "┃ coef_subtour_departure_less_than_or_equal_to_11am 0.266339\n", - "┃ coef_subtour_distance_in_miles_from_tour_destination_to_subtour_primary_destination_one_way_ -0.152384\n", - "┃ coef_subtour_duration_in_hours_integer_ 0.681811\n", - "┃ coef_subtour_return_time_greater_or_equal_to_2pm 1.549569\n", - "┃ Length: 188, dtype: float64\n", - "┣ loglike: -6094.555918549999\n", - "┣ d_loglike: -2.139 0.000000\n", - "┃ -3.934 0.000000\n", - "┃ coef_alternative_specific_constant_for_outbound_stops_1out_0in -0.000080\n", - "┃ coef_alternative_specific_constant_for_outbound_stops_2out_0in -0.000716\n", - "┃ coef_alternative_specific_constant_for_return_stops_0out_1in -0.000063\n", - "┃ ... \n", - "┃ coef_primary_destination_accessibility_log_of_it_ -0.003978\n", - "┃ coef_subtour_departure_less_than_or_equal_to_11am -0.000790\n", - "┃ coef_subtour_distance_in_miles_from_tour_destination_to_subtour_primary_destination_one_way_ -0.004153\n", - "┃ coef_subtour_duration_in_hours_integer_ -0.002149\n", - "┃ coef_subtour_return_time_greater_or_equal_to_2pm 0.000154\n", - "┃ Length: 188, dtype: float64\n", - "┣ nit: 130\n", - "┣ nfev: 327\n", - "┣ njev: 130\n", - "┣ status: 0\n", - "┣ message: 'Optimization terminated successfully'\n", - "┣ success: True\n", - "┣ elapsed_time: datetime.timedelta(seconds=85, microseconds=611724)\n", - "┣ method: 'SLSQP'\n", - "┣ n_cases: 5778\n", - "┣ iteration_number: 130\n", - "┣ logloss: 1.0547864171945307" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model.estimate(method='SLSQP', options={\"maxiter\": 1000})" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Estimated coefficients" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Value Std Err t Stat Signif Like Ratio Null Value
-2.139-2.14 0.00 NA NA-2.14
-3.934-3.93 0.00 NA NA-3.93
coef_alternative_specific_constant_for_outbound_stops_1out_0in-0.741 0.0909-8.16*** NA 0.00
coef_alternative_specific_constant_for_outbound_stops_2out_0in-2.59 0.167-15.51*** NA 0.00
coef_alternative_specific_constant_for_return_stops_0out_1in-0.447 0.0942-4.75*** NA 0.00
coef_alternative_specific_constant_for_return_stops_0out_2in-1.66 0.136-12.17*** NA 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_0out_2in 0.0394 0.0697 0.57 NA 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in 0.755 0.335 2.25* NA 0.00
coef_am_peak_departure_between_6am_and_7_am_including_interacted_with_outbound_tours-2.00 0.132-15.17*** NA 0.00
coef_dummy_for_all_stops_made_by_transit-0.673 0.0870-7.73*** NA 0.00
coef_dummy_for_distance_in_miles 0.0440 0.0256 1.72 NA 0.00
coef_dummy_for_distance_less_than_20_miles-0.588 0.310-1.90 NA 0.00
coef_dummy_for_female 0.283 0.108 2.63** NA 0.00
coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_11_hours 0.713 0.139 5.13*** NA 0.00
coef_dummy_for_walking_to_all_stops-1.49 0.218-6.84*** NA 0.00
coef_evening_arrival_19_00_interacted_with_return_tours 0.606 0.127 4.78*** NA 0.00
coef_high_income_hh 0.240 1.15e-07 BIG*** NA 0.00
coef_mid_to_high_income_hh 0.230 3.09e-07 BIG*** NA 0.00
coef_middle_to_low_income_hh 0.170 1.05e-06 BIG*** NA 0.00
coef_no_stops_if_tour_mode_is_drivetransit-999. 9.87e-07-BIG*** NA 0.00
coef_num_kids_between_5_and_15_including_years_old 0.0897 0.206 0.44 NA 0.00
coef_number_of_adults_16_years_old_ 0.0742 0.0890 0.83 NA 0.00
coef_number_of_cars_number_of_workers-0.0657 0.116-0.57 NA 0.00
coef_number_of_escort_tours_tours_undertaken_by_the_person 0.0978 0.216 0.45 NA 0.00
coef_number_of_hh_persons-0.328 0.0857-3.83*** NA 0.00
coef_number_of_school_tours_tours_undertaken_by_the_person 0.130 1.43 0.09 NA 0.00
coef_number_of_shop_tours_undertaken_by_the_houshold-0.328 0.660-0.50 NA 0.00
coef_number_of_students_in_hh 0.315 0.0885 3.56*** NA 0.00
coef_number_of_subtours_in_the_tour 0.337 0.128 2.63** NA 0.00
coef_number_of_university_tours_tours_undertaken_by_the_person-0.480 8.22e-07-BIG*** NA 0.00
coef_number_of_work_tours_undertaken_by_the_person-0.175 0.201-0.87 NA 0.00
coef_presence_of_kids_between_0_and_4_including_years_old 0.557 0.200 2.78** NA 0.00
coef_presence_of_kids_between_5_and_15_including_years_old 0.118 0.306 0.38 NA 0.00
-2.672-2.67 0.00 NA NA-2.67
coef_alternative_specific_constant_for_outbound_stops_1out_0in_school-1.77 0.250-7.07*** NA 0.00
coef_alternative_specific_constant_for_outbound_stops_2out_0in_school-4.31 0.594-7.26*** NA 0.00
coef_alternative_specific_constant_for_outbound_stops_3out_0in_school-6.21 1.12-5.53*** NA 0.00
coef_alternative_specific_constant_for_return_stops_0out_1in_school-1.23 0.243-5.05*** NA 0.00
coef_alternative_specific_constant_for_return_stops_0out_3in_school-3.19 0.436-7.30*** NA 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in 1.57 0.577 2.72** NA 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_school 2.18 1.22 1.78 NA 0.00
coef_arrival_later_than_17_00_ 1.37 0.387 3.55*** NA 0.00
coef_dummy_for_distance_in_miles_school 0.0920 0.0697 1.32 NA 0.00
coef_dummy_for_female_school 0.688 0.282 2.44* NA 0.00
coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours_ 1.90 0.388 4.91*** NA 0.00
coef_dummy_for_walking_to_all_stops_school-1.53 0.539-2.83** NA 0.00
coef_number_of_cars_number_of_workers_school 0.282 0.300 0.94 NA 0.00
coef_number_of_escort_tours_tours_undertaken_by_the_person_school 2.32 0.591 3.93*** NA 0.00
coef_number_of_hh_persons_school-0.603 0.0890-6.78*** NA 0.00
coef_presence_of_kids_between_5_and_15_including_years_old_school 0.0211 0.346 0.06 NA 0.00
coef_alternative_specific_constant_for_outbound_stops_1out_0in_univ-2.21 0.395-5.59*** NA 0.00
coef_alternative_specific_constant_for_outbound_stops_2out_0in_univ-4.04 0.629-6.42*** NA 0.00
coef_alternative_specific_constant_for_outbound_stops_3out_0in_univ-4.64 0.752-6.17*** NA 0.00
coef_alternative_specific_constant_for_return_stops_0out_1in_univ-1.57 0.395-3.98*** NA 0.00
coef_alternative_specific_constant_for_return_stops_0out_2in_univ-3.43 0.560-6.13*** NA 0.00
coef_alternative_specific_constant_for_return_stops_0out_3in_univ-3.86 0.649-5.95*** NA 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_univ 2.02 0.718 2.81** NA 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_univ 2.12 1.26 1.68 NA 0.00
coef_arrival_later_than_17_00__univ 0.398 0.350 1.14 NA 0.00
coef_dummy_for_female_univ 0.527 0.361 1.46 NA 0.00
coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__univ 1.09 0.968 1.12 NA 0.00
coef_hh_accesibility_for_inbound_tours_interaction 0.244 0.0583 4.18*** NA 0.00
coef_number_of_escort_tours_tours_undertaken_by_the_person_univ 1.86 1.35 1.37 NA 0.00
coef_number_of_hh_persons_univ-0.326 0.139-2.35* NA 0.00
coef_number_of_vehicles 0.266 0.201 1.32 NA 0.00
coef_presence_of_kids_between_5_and_15_including_years_old_univ-0.0615 0.651-0.09 NA 0.00
-1.783-1.78 0.00 NA NA-1.78
-2.874-2.87 0.00 NA NA-2.87
-3.379-3.38 0.00 NA NA-3.38
1.497 1.50 0.00 NA NA 1.50
coef_alternative_specific_constant_for_outbound_stops_1out_0in_social-1.29 0.598-2.16* NA 0.00
coef_alternative_specific_constant_for_outbound_stops_3out_0in_social-42.6 8.43e-07-BIG*** NA 0.00
coef_alternative_specific_constant_for_outbound_stops_on_joint_tours_2out_0in-4.16 1.09-3.82*** NA 0.00
coef_alternative_specific_constant_for_outbound_stops_on_joint_tours_3out_0in-28.9 4.10e-07-BIG*** NA 0.00
coef_alternative_specific_constant_for_return_stops_0out_1in_social 0.474 1.29 0.37 NA 0.00
coef_alternative_specific_constant_for_return_stops_0out_2in_social-2.40 1.50-1.61 NA 0.00
coef_alternative_specific_constant_for_return_stops_0out_3in_social-3.11 1.65-1.88 NA 0.00
coef_alternative_specific_constant_for_return_stops_on_joint_tours_0out_1in-1.49 0.366-4.07*** NA 0.00
coef_alternative_specific_constant_for_return_stops_on_joint_tours_0out_2in-3.53 0.880-4.01*** NA 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_social 2.61 1.22 2.14* NA 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_social-9.81 921.-0.01 NA 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_on_joint_tours_0out_2in-0.168 0.519-0.32 NA 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_on_joint_tours_1out_3in-26.1 1.12e-07-BIG*** NA 0.00
coef_arrival_later_than_17_00__social-0.470 0.240-1.96 NA 0.00
coef_at_least_one_kid_and_one_adult_participate_in_the_tour 2.12 1.01 2.09* NA 0.00
coef_dummy_for_a_return_visiting_tour-1.75 1.28-1.36 NA 0.00
coef_dummy_for_a_visiting_tour_with_both_outbound_and_return_leg 0.344 0.644 0.53 NA 0.00
coef_dummy_for_an_outbound_visiting_tour-0.742 0.617-1.20 NA 0.00
coef_dummy_for_distance_in_miles_social-0.0788 0.0646-1.22 NA 0.00
coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_3_hours_ 1.14 0.248 4.60*** NA 0.00
coef_dummy_for_walking_to_all_stops_social-2.09 0.423-4.94*** NA 0.00
coef_number_of_persons_participating_in_the_tour_outgoing_stops_interaction-0.0275 0.310-0.09 NA 0.00
coef_number_of_shop_tours_undertaken_by_the_person-0.178 0.302-0.59 NA 0.00
coef_number_of_vehicles_social-0.154 0.132-1.17 NA 0.00
coef_number_of_work_tours_undertaken_by_the_person_social-0.0102 0.288-0.04 NA 0.00
-3.024-3.02 0.00 NA NA-3.02
coef_alternative_specific_constant_for_outbound_stops_1out_0in_shopping-1.49 0.156-9.57*** NA 0.00
coef_alternative_specific_constant_for_outbound_stops_2out_0in_shopping-3.34 0.273-12.24*** NA 0.00
coef_alternative_specific_constant_for_outbound_stops_3out_0in_shopping-4.54 0.447-10.16*** NA 0.00
coef_alternative_specific_constant_for_return_stops_0out_1in_shopping-1.23 0.155-7.95*** NA 0.00
coef_alternative_specific_constant_for_return_stops_0out_2in_shopping-2.58 0.221-11.70*** NA 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_shopping 0.585 0.339 1.72 NA 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_shopping-0.0156 1.03-0.02 NA 0.00
coef_dummy_for_distance_in_miles_shopping 0.0214 0.0384 0.56 NA 0.00
coef_dummy_for_distance_less_than_5_miles 0.153 0.172 0.89 NA 0.00
coef_dummy_for_female_shopping 0.339 0.162 2.09* NA 0.00
coef_dummy_for_only_adults_participate_in_the_tour 1.54 0.764 2.02* NA 0.00
coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__shopping 3.10 0.813 3.82*** NA 0.00
coef_dummy_for_walking_to_all_stops_shopping-1.88 0.331-5.69*** NA 0.00
coef_num_kids_between_5_and_15_including_years_old_shopping-0.0478 0.155-0.31 NA 0.00
coef_number_of_hh_persons_shopping-0.0870 0.0495-1.76 NA 0.00
coef_number_of_maintenace_tours_tours_undertaken_by_the_person-0.326 0.218-1.49 NA 0.00
coef_number_of_shop_tours_undertaken_by_the_houshold_shopping 0.148 0.276 0.54 NA 0.00
coef_number_of_university_tours_tours_undertaken_by_the_person_shopping-0.671 3.90e-07-BIG*** NA 0.00
coef_number_of_work_tours_undertaken_by_the_person_shopping-0.437 0.186-2.35* NA 0.00
coef_alternative_specific_constant_for_outbound_stops_1out_0in_eatout-1.88 0.316-5.94*** NA 0.00
coef_alternative_specific_constant_for_outbound_stops_2out_0in_eatout-32.6 1.42e-07-BIG*** NA 0.00
coef_alternative_specific_constant_for_outbound_stops_3out_0in_eatout-3.74 0.648-5.77*** NA 0.00
coef_alternative_specific_constant_for_return_stops_0out_1in_eatout-1.69 0.321-5.26*** NA 0.00
coef_alternative_specific_constant_for_return_stops_0out_2in_eatout-3.03 0.462-6.56*** NA 0.00
coef_alternative_specific_constant_for_return_stops_0out_3in_eatout-4.84 1.04-4.64*** NA 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_eatout-32.0 2.36e-07-BIG*** NA 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_eatout-30.9 2.73e-07-BIG*** NA 0.00
coef_alternative_specific_constant_for_outbound_stops_1out_0in_escort-2.23 0.253-8.78*** NA 0.00
coef_alternative_specific_constant_for_outbound_stops_2out_0in_escort-4.86 0.729-6.67*** NA 0.00
coef_alternative_specific_constant_for_outbound_stops_3out_0in_escort-4.79 0.731-6.56*** NA 0.00
coef_alternative_specific_constant_for_return_stops_0out_1in_escort-1.28 0.241-5.31*** NA 0.00
coef_alternative_specific_constant_for_return_stops_0out_2in_escort-2.46 0.315-7.81*** NA 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_escort-12.3 923.-0.01 NA 0.00
coef_dummy_for_distance_less_than_5_miles_escort 0.270 0.240 1.12 NA 0.00
coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__escort 1.40 0.752 1.86 NA 0.00
coef_dummy_for_walking_to_all_stops_escort-0.341 0.889-0.38 NA 0.00
coef_number_of_escort_tours_tours_undertaken_by_the_person_escort-0.260 0.147-1.77 NA 0.00
coef_number_of_hh_persons_escort-0.179 0.0901-1.98* NA 0.00
coef_number_of_students_in_hh_escort 0.161 0.159 1.01 NA 0.00
coef_number_of_work_tours_undertaken_by_the_person_escort-0.158 0.289-0.55 NA 0.00
-2.462-2.46 0.00 NA NA-2.46
coef_alternative_specific_constant_for_outbound_stops_1out_0in_othmaint-2.12 0.292-7.26*** NA 0.00
coef_alternative_specific_constant_for_outbound_stops_2out_0in_othmaint-3.47 0.501-6.92*** NA 0.00
coef_alternative_specific_constant_for_outbound_stops_3out_0in_othmaint-4.23 0.775-5.46*** NA 0.00
coef_alternative_specific_constant_for_return_stops_0out_1in_othmaint-0.834 0.287-2.91** NA 0.00
coef_alternative_specific_constant_for_return_stops_0out_2in_othmaint-1.19 0.307-3.87*** NA 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_othmaint 0.315 0.650 0.48 NA 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_2out_3in_othmaint-31.0 8.73e-08-BIG*** NA 0.00
coef_dummy_for_distance_in_miles_othmaint 0.102 0.0656 1.55 NA 0.00
coef_dummy_for_distance_less_than_20_miles_-0.622 0.451-1.38 NA 0.00
coef_dummy_for_female_othmaint 0.281 0.254 1.11 NA 0.00
coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__othmaint 0.169 0.746 0.23 NA 0.00
coef_dummy_for_walking_to_all_stops_othmaint-2.30 0.751-3.06** NA 0.00
coef_middle_to_low_income_hh_ 0.170 1.58e-08 BIG*** NA 0.00
coef_number_of_maintenace_tours_undertaken_by_the_houshold-0.265 0.426-0.62 NA 0.00
coef_number_of_persons_participating_in_the_tour_return_stops_interaction 0.626 0.233 2.69** NA 0.00
coef_number_of_shool_tours_tours_undertaken_by_the_person-29.4 3.81e-08-BIG*** NA 0.00
coef_number_of_shop_tours_undertaken_by_the_person_othmaint-0.200 0.253-0.79 NA 0.00
coef_number_of_university_tours_tours_undertaken_by_the_person_othmaint-0.625 3.47e-08-BIG*** NA 0.00
coef_number_of_work_tours_undertaken_by_the_person_othmaint-0.358 0.317-1.13 NA 0.00
-0.921-0.921 0.00 NA NA-0.92
0.939 0.939 0.00 NA NA 0.94
coef_alternative_specific_constant_for_outbound_stops_1out_0in_othdiscr-1.39 0.171-8.11*** NA 0.00
coef_alternative_specific_constant_for_outbound_stops_2out_0in_othdiscr-2.96 0.290-10.20*** NA 0.00
coef_alternative_specific_constant_for_outbound_stops_3out_0in_othdiscr-4.39 0.503-8.73*** NA 0.00
coef_alternative_specific_constant_for_return_stops_0out_2in_othdiscr-2.52 0.258-9.77*** NA 0.00
coef_alternative_specific_constant_for_return_stops_0out_3in_othdiscr-3.02 0.316-9.58*** NA 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_othdiscr 1.09 0.410 2.65** NA 0.00
coef_arrival_later_than_17_00__othdiscr-0.367 0.208-1.76 NA 0.00
coef_dummy_for_distance_in_miles_othdiscr 0.0493 0.0477 1.03 NA 0.00
coef_dummy_for_distance_less_than_10_miles_-0.135 0.250-0.54 NA 0.00
coef_dummy_for_the_duration_of_the_tour_being_equal_or_greater_than_or_equal_to_9_hours__othdiscr 0.254 0.398 0.64 NA 0.00
coef_dummy_for_walking_to_all_stops_othdiscr-2.06 0.429-4.81*** NA 0.00
coef_number_of_maintenace_tours_tours_undertaken_by_the_person_othdiscr-0.621 0.322-1.92 NA 0.00
coef_number_of_shool_tours_tours_undertaken_by_the_person_othdiscr-0.595 0.410-1.45 NA 0.00
coef_number_of_shop_tours_undertaken_by_the_person_othdiscr-0.607 0.236-2.57* NA 0.00
coef_number_of_work_tours_undertaken_by_the_person_othdiscr-0.475 0.243-1.96 NA 0.00
-3.671-3.67 0.00 NA NA-3.67
-3.896-3.90 0.00 NA NA-3.90
-7.3610000000000015-7.36 0.00 NA NA-7.36
coef_alternative_specific_constant_for_outbound_stops_2out_0in_atwork-5.61 0.354-15.85*** NA 0.00
coef_alternative_specific_constant_for_return_stops_0out_2in_atwork-6.03 0.427-14.13*** NA 0.00
coef_alternative_specific_constant_for_return_stops_0out_3in_atwork-8.02 1.03-7.75*** NA 0.00
coef_alternative_specific_constant_for_the_total_number_of_stops_1out_3in_atwork 2.56 1.04 2.45* NA 0.00
coef_dummy_for_subtour_origin_tour_destination_at_exurban_or_rual_areatypes_6_or_7_ 0.270 0.00 NA[] 0.00 0.00
coef_middle_to_low_income_hh__atwork 0.939 0.357 2.63** NA 0.00
coef_number_of_eating_tours_tours_undertaken_by_the_person-0.250 0.553-0.45 NA 0.00
coef_primary_destination_accessibility_log_of_it_ 0.171 0.0435 3.93*** NA 0.00
coef_subtour_departure_less_than_or_equal_to_11am 0.266 0.259 1.03 NA 0.00
coef_subtour_distance_in_miles_from_tour_destination_to_subtour_primary_destination_one_way_-0.152 0.0816-1.87 NA 0.00
coef_subtour_duration_in_hours_integer_ 0.682 0.0974 7.00*** NA 0.00
coef_subtour_return_time_greater_or_equal_to_2pm 1.55 0.707 2.19* NA 0.00
" + "\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 9, @@ -6295,67 +6168,67 @@ " 3\n", " coef_number_of_hh_persons\n", " Number of HH Persons\n", - " -0.328159\n", + " -0.291501\n", " \n", " \n", " 4\n", " coef_number_of_students_in_hh\n", " Number of Students in HH\n", - " 0.315297\n", + " 0.206028\n", " \n", " \n", " 5\n", " coef_presence_of_kids_between_0_and_4_includin...\n", " Presence of Kids between 0 and 4 (including) y...\n", - " 0.557476\n", + " 0.738257\n", " \n", " \n", " 6\n", " coef_num_kids_between_5_and_15_including_years...\n", " Num kids between 5 and 15 (including) years old\n", - " 0.089718\n", + " 0.083356\n", " \n", " \n", " 7\n", " coef_presence_of_kids_between_5_and_15_includi...\n", " Presence of kids between 5 and 15 (including) ...\n", - " 0.117544\n", + " 0.174006\n", " \n", " \n", " 8\n", " coef_number_of_adults_16_years_old_\n", " Number of Adults (>= 16 years old)\n", - " 0.074203\n", + " 0.006177\n", " \n", " \n", " 9\n", " coef_number_of_cars_number_of_workers\n", " Number of Cars > Number of Workers\n", - " -0.065713\n", + " 0.195317\n", " \n", " \n", " 10\n", " coef_dummy_for_female\n", " Dummy for female\n", - " 0.282632\n", + " 0.231116\n", " \n", " \n", " 11\n", " coef_dummy_for_all_stops_made_by_transit\n", " Dummy for all stops made by transit\n", - " -0.672704\n", + " -0.698140\n", " \n", " \n", " 12\n", " coef_dummy_for_walking_to_all_stops\n", " Dummy for walking to all stops\n", - " -1.491072\n", + " -1.590379\n", " \n", " \n", " 13\n", " coef_number_of_work_tours_undertaken_by_the_pe...\n", " Number of work tours undertaken by the person\n", - " -0.174762\n", + " -0.182288\n", " \n", " \n", " 14\n", @@ -6367,49 +6240,49 @@ " 15\n", " coef_number_of_school_tours_tours_undertaken_b...\n", " Number of school tours tours undertaken by the...\n", - " 0.130473\n", + " -1.539830\n", " \n", " \n", " 16\n", " coef_number_of_escort_tours_tours_undertaken_b...\n", " Number of escort tours tours undertaken by the...\n", - " 0.097792\n", + " 0.285502\n", " \n", " \n", " 17\n", " coef_number_of_shop_tours_undertaken_by_the_ho...\n", " Number of shop tours undertaken by the houshold\n", - " -0.328294\n", + " 0.194165\n", " \n", " \n", " 18\n", " coef_am_peak_departure_between_6am_and_7_am_in...\n", " AM Peak departure between 6AM and 7 AM (includ...\n", - " -1.998832\n", + " -1.913742\n", " \n", " \n", " 19\n", " coef_evening_arrival_19_00_interacted_with_ret...\n", " Evening Arrival (>=19:00) Interacted with retu...\n", - " 0.606441\n", + " 0.297829\n", " \n", " \n", " 20\n", " coef_dummy_for_the_duration_of_the_tour_being_...\n", " Dummy for the duration of the tour being equal...\n", - " 0.713048\n", + " 0.629566\n", " \n", " \n", " 21\n", " coef_dummy_for_distance_less_than_20_miles\n", " dummy for distance less than 20 Miles\n", - " -0.588175\n", + " -0.209813\n", " \n", " \n", " 22\n", " coef_dummy_for_distance_in_miles\n", " dummy for distance in miles\n", - " 0.043974\n", + " 0.008199\n", " \n", " \n", " 23\n", @@ -6421,55 +6294,55 @@ " 24\n", " coef_alternative_specific_constant_for_return_...\n", " Alternative specific constant for return stops\n", - " -0.447476\n", + " -0.422070\n", " \n", " \n", " 25\n", " coef_number_of_subtours_in_the_tour\n", " Number of subtours in the tour\n", - " 0.337091\n", + " 0.184545\n", " \n", " \n", " 26\n", " coef_alternative_specific_constant_for_return_...\n", " Alternative specific constant for return stops\n", - " -1.657817\n", + " -1.737740\n", " \n", " \n", " 27\n", " coef_alternative_specific_constant_for_the_tot...\n", " Alternative specific constant for the total nu...\n", - " 0.039441\n", + " -0.033904\n", " \n", " \n", " 28\n", " coef_alternative_specific_constant_for_return_...\n", " Alternative specific constant for return stops\n", - " -2.139000\n", + " -2.056255\n", " \n", " \n", " 29\n", " coef_alternative_specific_constant_for_outboun...\n", " Alternative specific constant for outbound stops\n", - " -0.741225\n", + " -0.817659\n", " \n", " \n", " 30\n", " coef_alternative_specific_constant_for_outboun...\n", " Alternative specific constant for outbound stops\n", - " -2.594489\n", + " -2.553493\n", " \n", " \n", " 31\n", " coef_alternative_specific_constant_for_the_tot...\n", " Alternative specific constant for the total nu...\n", - " 0.754748\n", + " 0.555526\n", " \n", " \n", " 32\n", " coef_alternative_specific_constant_for_outboun...\n", " Alternative specific constant for outbound stops\n", - " -3.934000\n", + " -3.914672\n", " \n", " \n", "\n", @@ -6515,36 +6388,36 @@ "0 Middle to Low Income HH 0.170000 \n", "1 Mid to High Income HH 0.230000 \n", "2 High Income HH 0.240000 \n", - "3 Number of HH Persons -0.328159 \n", - "4 Number of Students in HH 0.315297 \n", - "5 Presence of Kids between 0 and 4 (including) y... 0.557476 \n", - "6 Num kids between 5 and 15 (including) years old 0.089718 \n", - "7 Presence of kids between 5 and 15 (including) ... 0.117544 \n", - "8 Number of Adults (>= 16 years old) 0.074203 \n", - "9 Number of Cars > Number of Workers -0.065713 \n", - "10 Dummy for female 0.282632 \n", - "11 Dummy for all stops made by transit -0.672704 \n", - "12 Dummy for walking to all stops -1.491072 \n", - "13 Number of work tours undertaken by the person -0.174762 \n", + "3 Number of HH Persons -0.291501 \n", + "4 Number of Students in HH 0.206028 \n", + "5 Presence of Kids between 0 and 4 (including) y... 0.738257 \n", + "6 Num kids between 5 and 15 (including) years old 0.083356 \n", + "7 Presence of kids between 5 and 15 (including) ... 0.174006 \n", + "8 Number of Adults (>= 16 years old) 0.006177 \n", + "9 Number of Cars > Number of Workers 0.195317 \n", + "10 Dummy for female 0.231116 \n", + "11 Dummy for all stops made by transit -0.698140 \n", + "12 Dummy for walking to all stops -1.590379 \n", + "13 Number of work tours undertaken by the person -0.182288 \n", "14 Number of university tours tours undertaken by... -0.480000 \n", - "15 Number of school tours tours undertaken by the... 0.130473 \n", - "16 Number of escort tours tours undertaken by the... 0.097792 \n", - "17 Number of shop tours undertaken by the houshold -0.328294 \n", - "18 AM Peak departure between 6AM and 7 AM (includ... -1.998832 \n", - "19 Evening Arrival (>=19:00) Interacted with retu... 0.606441 \n", - "20 Dummy for the duration of the tour being equal... 0.713048 \n", - "21 dummy for distance less than 20 Miles -0.588175 \n", - "22 dummy for distance in miles 0.043974 \n", + "15 Number of school tours tours undertaken by the... -1.539830 \n", + "16 Number of escort tours tours undertaken by the... 0.285502 \n", + "17 Number of shop tours undertaken by the houshold 0.194165 \n", + "18 AM Peak departure between 6AM and 7 AM (includ... -1.913742 \n", + "19 Evening Arrival (>=19:00) Interacted with retu... 0.297829 \n", + "20 Dummy for the duration of the tour being equal... 0.629566 \n", + "21 dummy for distance less than 20 Miles -0.209813 \n", + "22 dummy for distance in miles 0.008199 \n", "23 No stops if tour mode is driveTransit -999.000000 \n", - "24 Alternative specific constant for return stops -0.447476 \n", - "25 Number of subtours in the tour 0.337091 \n", - "26 Alternative specific constant for return stops -1.657817 \n", - "27 Alternative specific constant for the total nu... 0.039441 \n", - "28 Alternative specific constant for return stops -2.139000 \n", - "29 Alternative specific constant for outbound stops -0.741225 \n", - "30 Alternative specific constant for outbound stops -2.594489 \n", - "31 Alternative specific constant for the total nu... 0.754748 \n", - "32 Alternative specific constant for outbound stops -3.934000 " + "24 Alternative specific constant for return stops -0.422070 \n", + "25 Number of subtours in the tour 0.184545 \n", + "26 Alternative specific constant for return stops -1.737740 \n", + "27 Alternative specific constant for the total nu... -0.033904 \n", + "28 Alternative specific constant for return stops -2.056255 \n", + "29 Alternative specific constant for outbound stops -0.817659 \n", + "30 Alternative specific constant for outbound stops -2.553493 \n", + "31 Alternative specific constant for the total nu... 0.555526 \n", + "32 Alternative specific constant for outbound stops -3.914672 " ] }, "execution_count": 12, @@ -6564,7 +6437,7 @@ "toc_visible": true }, "kernelspec": { - "display_name": "Python 3", + "display_name": "ESTER", "language": "python", "name": "python3" }, @@ -6578,7 +6451,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.10.15" }, "toc": { "base_numbering": 1, diff --git a/activitysim/examples/example_estimation/notebooks/22_trip_dest.ipynb b/activitysim/examples/example_estimation/notebooks/22_trip_dest.ipynb index 576e87bfe..2965cb74f 100644 --- a/activitysim/examples/example_estimation/notebooks/22_trip_dest.ipynb +++ b/activitysim/examples/example_estimation/notebooks/22_trip_dest.ipynb @@ -26,30 +26,74 @@ "cell_type": "code", "execution_count": 1, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "JAX not found. Some functionality will be unavailable.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'larch': '6.0.32',\n", + " 'sharrow': '2.13.0',\n", + " 'numpy': '1.26.4',\n", + " 'pandas': '1.5.3',\n", + " 'xarray': '2024.3.0',\n", + " 'numba': '0.60.0'}" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "import larch # !conda install larch #for estimation\n", + "import larch as lx\n", "import pandas as pd\n", - "import numpy as np\n", - "import yaml \n", - "import larch.util.excel\n", - "import os" + "\n", + "lx.versions()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We'll work in our `test` directory, where ActivitySim has saved the estimation data bundles." + "For this demo, we will assume that you have already run ActivitySim in estimation\n", + "mode, and saved the required estimation data bundles (EDB's) to disk. See\n", + "the [first notebook](./01_estimation_mode.ipynb) for details. The following module\n", + "will run a script to set everything up if the example data is not already available." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "EDB directory already populated.\n" + ] + }, + { + "data": { + "text/plain": [ + "PosixPath('test-estimation-data/activitysim-prototype-mtc-extended')" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "os.chdir('test')" + "from est_mode_setup import prepare\n", + "\n", + "prepare()" ] }, { @@ -72,10 +116,35 @@ "cell_type": "code", "execution_count": 4, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "loading from output-est-mode/estimation_data_bundle/trip_destination/trip_destination_coefficients.csv\n", + "loading from output-est-mode/estimation_data_bundle/trip_destination/trip_destination_SPEC.csv\n", + "loading from output-est-mode/estimation_data_bundle/trip_destination/trip_destination_alternatives_combined.parquet\n", + "loading from output-est-mode/estimation_data_bundle/trip_destination/trip_destination_choosers_combined.parquet\n", + "loading from output-est-mode/estimation_data_bundle/trip_destination/trip_destination_landuse.csv\n", + "loading from output-est-mode/estimation_data_bundle/trip_destination/trip_destination_size_terms.csv\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jpn/Git/est-mode/activitysim/activitysim/estimation/larch/location_choice.py:548: UserWarning: Removed 5419 choosers with invalid (zero-sized) observed choice\n", + " return location_choice_model(\n" + ] + } + ], "source": [ "from activitysim.estimation.larch import component_model\n", - "model, data = component_model(modelname, return_data=True)" + "model, data = component_model(\n", + " modelname,\n", + " edb_directory=f\"output-est-mode/estimation_data_bundle/{modelname}/\",\n", + " return_data=True,\n", + ")" ] }, { @@ -290,148 +359,118 @@ " \n", " \n", " trip_id\n", - " variable\n", - " 1\n", - " 2\n", - " 3\n", - " 4\n", - " 5\n", - " 6\n", - " 7\n", - " 8\n", - " ...\n", - " 181\n", - " 182\n", - " 183\n", - " 184\n", - " 185\n", - " 186\n", - " 187\n", - " 188\n", - " 189\n", - " 190\n", + " dest_taz\n", + " util_size_term\n", + " util_no_attractions\n", + " util_distance_inbound\n", + " util_distance_outbound\n", + " util_distance_joint\n", + " util_prox_home_outbound\n", + " util_prox_home_inbound\n", + " util_prox_dest_outbound\n", + " util_prox_dest_inbound\n", + " util_sample_of_alternatives_correction_factor\n", + " util_mode_choice_logsum_os\n", + " util_stop_not_accessible_by_this_tour_mode\n", + " util_mode_choice_logsum_sd\n", + " util_dest_not_accessible_by_this_tour_mode\n", " \n", " \n", " \n", " \n", " 0\n", - " 123229\n", - " util_dest_not_accessible_by_this_tour_mode\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " ...\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", + " 439241\n", + " 2\n", + " 6.117394\n", " False\n", + " 0.000000\n", + " 14.110000\n", + " 0.0\n", + " 6.89\n", + " 0.000000\n", + " 7.22\n", + " 0.00\n", + " 6.128602\n", + " -0.847005\n", " False\n", + " -0.633253\n", " False\n", " \n", " \n", " 1\n", - " 123229\n", - " util_distance_inbound\n", - " 6.390000343322754\n", - " 6.170000076293945\n", - " 5.920000076293945\n", - " 5.810000419616699\n", - " 5.299999713897705\n", - " 5.170000076293945\n", - " 4.840000152587891\n", - " 4.630000114440918\n", - " ...\n", - " 9.819999694824219\n", - " 11.25\n", - " 10.449999809265137\n", - " 8.970000267028809\n", - " 7.920000076293945\n", - " 9.600000381469727\n", - " 9.889999389648438\n", - " 10.079999923706055\n", - " 11.899999618530273\n", - " 12.170000076293945\n", + " 439241\n", + " 11\n", + " 7.726934\n", + " False\n", + " 0.000000\n", + " 12.280001\n", + " 0.0\n", + " 5.90\n", + " 0.000000\n", + " 6.38\n", + " 0.00\n", + " 3.637608\n", + " -0.558405\n", + " False\n", + " -0.497479\n", + " False\n", " \n", " \n", " 2\n", - " 123229\n", - " util_distance_joint\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " ...\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", + " 439241\n", + " 16\n", + " 7.935721\n", + " False\n", + " 0.000000\n", + " 14.280000\n", " 0.0\n", + " 6.81\n", + " 0.000000\n", + " 7.47\n", + " 0.00\n", + " 3.634621\n", + " -0.681632\n", + " False\n", + " -0.639591\n", + " False\n", " \n", " \n", " 3\n", - " 123229\n", - " util_distance_outbound\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " ...\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", + " 439241\n", + " 21\n", + " 5.953480\n", + " False\n", + " 0.000000\n", + " 12.920000\n", " 0.0\n", + " 6.13\n", + " 0.000000\n", + " 6.79\n", + " 0.00\n", + " 5.476918\n", + " -0.536647\n", + " False\n", + " -0.524008\n", + " False\n", " \n", " \n", " 4\n", - " 123229\n", - " util_mode_choice_logsum_os\n", - " -1.1826465123669618\n", - " -1.1342039462845261\n", - " -1.0045888362609303\n", - " -0.9695035841251944\n", - " -0.9086842324484546\n", - " -0.7911335856893744\n", - " -1.0394341719374236\n", - " -0.735128183005223\n", - " ...\n", - " -0.5685844758479193\n", - " -0.7106540688185471\n", - " -0.6324772374186627\n", - " -0.5127860821542347\n", - " -0.427736842041275\n", - " -0.5989989879176718\n", - " -0.6352947097849363\n", - " -0.6732994275559964\n", - " -0.8319610659002946\n", - " -0.8302145411677482\n", + " 439241\n", + " 82\n", + " 5.890218\n", + " False\n", + " 0.000000\n", + " 9.790000\n", + " 0.0\n", + " 4.83\n", + " 0.000000\n", + " 4.96\n", + " 0.00\n", + " 5.218103\n", + " -0.383122\n", + " False\n", + " -0.265333\n", + " False\n", " \n", " \n", " ...\n", @@ -451,230 +490,213 @@ " ...\n", " ...\n", " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " \n", - " \n", - " 39139\n", - " 2478375757\n", - " util_prox_home_inbound\n", - " 5.659999847412109\n", - " 5.570000171661377\n", - " 5.5\n", - " 5.329999923706055\n", - " 5.119999885559082\n", - " 5.190000057220459\n", - " 5.019999980926514\n", - " 4.809999942779541\n", - " ...\n", - " 6.260000228881836\n", - " 5.440000057220459\n", - " 5.110000133514404\n", - " 4.889999866485596\n", - " 4.329999923706055\n", - " 4.5\n", - " 3.990000009536743\n", - " 3.4200000762939453\n", - " 4.159999847412109\n", - " 4.650000095367432\n", - " \n", - " \n", - " 39140\n", - " 2478375757\n", - " util_prox_home_outbound\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " ...\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", " \n", " \n", - " 39141\n", - " 2478375757\n", - " util_sample_of_alternatives_correction_factor\n", - " 5.969689780743902\n", - " 5.229744858144034\n", - " 6.651885938411212\n", - " 5.457984599784746\n", - " 4.557500241901908\n", - " 5.683456777589848\n", - " 4.880351408439651\n", - " 5.056172176409885\n", - " ...\n", - " 6.167159960103807\n", - " 5.635222918217218\n", - " 4.9055149705471015\n", - " 5.197733187456251\n", - " 4.545857557157909\n", - " 5.146011961990624\n", - " 5.677734711636542\n", - " 4.0921031600858315\n", - " 5.525577058677637\n", - " 6.765177014979627\n", - " \n", - " \n", - " 39142\n", - " 2478375757\n", - " util_size_term\n", - " 5.8928092787280315\n", - " 6.61382841501164\n", - " 5.174023179275996\n", - " 6.331334576117736\n", - " 7.181350090272405\n", - " 6.062963941307298\n", - " 6.824432363972737\n", - " 6.596881001099327\n", - " ...\n", - " 5.988058753973149\n", - " 6.313073295919817\n", - " 6.959507591274848\n", - " 6.611773525937498\n", - " 7.122336273469753\n", - " 6.565080445969589\n", - " 5.957654370567811\n", - " 7.481461558469711\n", - " 6.2347224418357365\n", - " 5.096060413644514\n", - " \n", - " \n", - " 39143\n", - " 2478375757\n", - " util_stop_not_accessible_by_this_tour_mode\n", - " False\n", - " False\n", - " False\n", + " 854498\n", + " 2481262477\n", + " 1314\n", + " 6.565007\n", " False\n", + " 21.299999\n", + " 0.000000\n", + " 0.0\n", + " 0.00\n", + " 10.650000\n", + " 0.00\n", + " 10.65\n", + " 3.869640\n", + " -3.466365\n", " False\n", + " -3.466365\n", " False\n", + " \n", + " \n", + " 854499\n", + " 2481262477\n", + " 1315\n", + " 5.491167\n", " False\n", + " 14.500000\n", + " 0.000000\n", + " 0.0\n", + " 0.00\n", + " 7.250000\n", + " 0.00\n", + " 7.25\n", + " 2.986897\n", + " -2.475631\n", " False\n", - " ...\n", + " -2.476182\n", " False\n", + " \n", + " \n", + " 854500\n", + " 2481262477\n", + " 1318\n", + " 4.109496\n", " False\n", + " 35.799999\n", + " 0.000000\n", + " 0.0\n", + " 0.00\n", + " 17.900000\n", + " 0.00\n", + " 17.90\n", + " 7.056036\n", + " -6.066198\n", " False\n", + " -6.054759\n", " False\n", + " \n", + " \n", + " 854501\n", + " 2481262477\n", + " 1324\n", + " 5.586113\n", " False\n", + " 40.349998\n", + " 0.000000\n", + " 0.0\n", + " 0.00\n", + " 19.950001\n", + " 0.00\n", + " 20.40\n", + " 6.153502\n", + " -6.458255\n", " False\n", + " -6.443607\n", " False\n", + " \n", + " \n", + " 854502\n", + " 2481262477\n", + " 1361\n", + " 7.160701\n", " False\n", + " 60.360001\n", + " 0.000000\n", + " 0.0\n", + " 0.00\n", + " 30.180000\n", + " 0.00\n", + " 30.18\n", + " 7.103621\n", + " -9.888594\n", " False\n", + " -9.902823\n", " False\n", " \n", " \n", "\n", - "

39144 rows × 192 columns

\n", + "

854503 rows × 16 columns

\n", "" ], "text/plain": [ - " trip_id variable \\\n", - "0 123229 util_dest_not_accessible_by_this_tour_mode \n", - "1 123229 util_distance_inbound \n", - "2 123229 util_distance_joint \n", - "3 123229 util_distance_outbound \n", - "4 123229 util_mode_choice_logsum_os \n", - "... ... ... \n", - "39139 2478375757 util_prox_home_inbound \n", - "39140 2478375757 util_prox_home_outbound \n", - "39141 2478375757 util_sample_of_alternatives_correction_factor \n", - "39142 2478375757 util_size_term \n", - "39143 2478375757 util_stop_not_accessible_by_this_tour_mode \n", + " trip_id dest_taz util_size_term util_no_attractions \\\n", + "0 439241 2 6.117394 False \n", + "1 439241 11 7.726934 False \n", + "2 439241 16 7.935721 False \n", + "3 439241 21 5.953480 False \n", + "4 439241 82 5.890218 False \n", + "... ... ... ... ... \n", + "854498 2481262477 1314 6.565007 False \n", + "854499 2481262477 1315 5.491167 False \n", + "854500 2481262477 1318 4.109496 False \n", + "854501 2481262477 1324 5.586113 False \n", + "854502 2481262477 1361 7.160701 False \n", + "\n", + " util_distance_inbound util_distance_outbound util_distance_joint \\\n", + "0 0.000000 14.110000 0.0 \n", + "1 0.000000 12.280001 0.0 \n", + "2 0.000000 14.280000 0.0 \n", + "3 0.000000 12.920000 0.0 \n", + "4 0.000000 9.790000 0.0 \n", + "... ... ... ... \n", + "854498 21.299999 0.000000 0.0 \n", + "854499 14.500000 0.000000 0.0 \n", + "854500 35.799999 0.000000 0.0 \n", + "854501 40.349998 0.000000 0.0 \n", + "854502 60.360001 0.000000 0.0 \n", "\n", - " 1 2 3 \\\n", - "0 False False False \n", - "1 6.390000343322754 6.170000076293945 5.920000076293945 \n", - "2 0.0 0.0 0.0 \n", - "3 0.0 0.0 0.0 \n", - "4 -1.1826465123669618 -1.1342039462845261 -1.0045888362609303 \n", - "... ... ... ... \n", - "39139 5.659999847412109 5.570000171661377 5.5 \n", - "39140 0.0 0.0 0.0 \n", - "39141 5.969689780743902 5.229744858144034 6.651885938411212 \n", - "39142 5.8928092787280315 6.61382841501164 5.174023179275996 \n", - "39143 False False False \n", + " util_prox_home_outbound util_prox_home_inbound \\\n", + "0 6.89 0.000000 \n", + "1 5.90 0.000000 \n", + "2 6.81 0.000000 \n", + "3 6.13 0.000000 \n", + "4 4.83 0.000000 \n", + "... ... ... \n", + "854498 0.00 10.650000 \n", + "854499 0.00 7.250000 \n", + "854500 0.00 17.900000 \n", + "854501 0.00 19.950001 \n", + "854502 0.00 30.180000 \n", "\n", - " 4 5 6 \\\n", - "0 False False False \n", - "1 5.810000419616699 5.299999713897705 5.170000076293945 \n", - "2 0.0 0.0 0.0 \n", - "3 0.0 0.0 0.0 \n", - "4 -0.9695035841251944 -0.9086842324484546 -0.7911335856893744 \n", - "... ... ... ... \n", - "39139 5.329999923706055 5.119999885559082 5.190000057220459 \n", - "39140 0.0 0.0 0.0 \n", - "39141 5.457984599784746 4.557500241901908 5.683456777589848 \n", - "39142 6.331334576117736 7.181350090272405 6.062963941307298 \n", - "39143 False False False \n", + " util_prox_dest_outbound util_prox_dest_inbound \\\n", + "0 7.22 0.00 \n", + "1 6.38 0.00 \n", + "2 7.47 0.00 \n", + "3 6.79 0.00 \n", + "4 4.96 0.00 \n", + "... ... ... \n", + "854498 0.00 10.65 \n", + "854499 0.00 7.25 \n", + "854500 0.00 17.90 \n", + "854501 0.00 20.40 \n", + "854502 0.00 30.18 \n", "\n", - " 7 8 ... 181 \\\n", - "0 False False ... False \n", - "1 4.840000152587891 4.630000114440918 ... 9.819999694824219 \n", - "2 0.0 0.0 ... 0.0 \n", - "3 0.0 0.0 ... 0.0 \n", - "4 -1.0394341719374236 -0.735128183005223 ... -0.5685844758479193 \n", - "... ... ... ... ... \n", - "39139 5.019999980926514 4.809999942779541 ... 6.260000228881836 \n", - "39140 0.0 0.0 ... 0.0 \n", - "39141 4.880351408439651 5.056172176409885 ... 6.167159960103807 \n", - "39142 6.824432363972737 6.596881001099327 ... 5.988058753973149 \n", - "39143 False False ... False \n", + " util_sample_of_alternatives_correction_factor \\\n", + "0 6.128602 \n", + "1 3.637608 \n", + "2 3.634621 \n", + "3 5.476918 \n", + "4 5.218103 \n", + "... ... \n", + "854498 3.869640 \n", + "854499 2.986897 \n", + "854500 7.056036 \n", + "854501 6.153502 \n", + "854502 7.103621 \n", "\n", - " 182 183 184 \\\n", - "0 False False False \n", - "1 11.25 10.449999809265137 8.970000267028809 \n", - "2 0.0 0.0 0.0 \n", - "3 0.0 0.0 0.0 \n", - "4 -0.7106540688185471 -0.6324772374186627 -0.5127860821542347 \n", - "... ... ... ... \n", - "39139 5.440000057220459 5.110000133514404 4.889999866485596 \n", - "39140 0.0 0.0 0.0 \n", - "39141 5.635222918217218 4.9055149705471015 5.197733187456251 \n", - "39142 6.313073295919817 6.959507591274848 6.611773525937498 \n", - "39143 False False False \n", + " util_mode_choice_logsum_os \\\n", + "0 -0.847005 \n", + "1 -0.558405 \n", + "2 -0.681632 \n", + "3 -0.536647 \n", + "4 -0.383122 \n", + "... ... \n", + "854498 -3.466365 \n", + "854499 -2.475631 \n", + "854500 -6.066198 \n", + "854501 -6.458255 \n", + "854502 -9.888594 \n", "\n", - " 185 186 187 \\\n", - "0 False False False \n", - "1 7.920000076293945 9.600000381469727 9.889999389648438 \n", - "2 0.0 0.0 0.0 \n", - "3 0.0 0.0 0.0 \n", - "4 -0.427736842041275 -0.5989989879176718 -0.6352947097849363 \n", - "... ... ... ... \n", - "39139 4.329999923706055 4.5 3.990000009536743 \n", - "39140 0.0 0.0 0.0 \n", - "39141 4.545857557157909 5.146011961990624 5.677734711636542 \n", - "39142 7.122336273469753 6.565080445969589 5.957654370567811 \n", - "39143 False False False \n", + " util_stop_not_accessible_by_this_tour_mode \\\n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "... ... \n", + "854498 False \n", + "854499 False \n", + "854500 False \n", + "854501 False \n", + "854502 False \n", "\n", - " 188 189 190 \n", - "0 False False False \n", - "1 10.079999923706055 11.899999618530273 12.170000076293945 \n", - "2 0.0 0.0 0.0 \n", - "3 0.0 0.0 0.0 \n", - "4 -0.6732994275559964 -0.8319610659002946 -0.8302145411677482 \n", - "... ... ... ... \n", - "39139 3.4200000762939453 4.159999847412109 4.650000095367432 \n", - "39140 0.0 0.0 0.0 \n", - "39141 4.0921031600858315 5.525577058677637 6.765177014979627 \n", - "39142 7.481461558469711 6.2347224418357365 5.096060413644514 \n", - "39143 False False False \n", + " util_mode_choice_logsum_sd util_dest_not_accessible_by_this_tour_mode \n", + "0 -0.633253 False \n", + "1 -0.497479 False \n", + "2 -0.639591 False \n", + "3 -0.524008 False \n", + "4 -0.265333 False \n", + "... ... ... \n", + "854498 -3.466365 False \n", + "854499 -2.476182 False \n", + "854500 -6.054759 False \n", + "854501 -6.443607 False \n", + "854502 -9.902823 False \n", "\n", - "[39144 rows x 192 columns]" + "[854503 rows x 16 columns]" ] }, "execution_count": 6, @@ -724,130 +746,142 @@ " override_choice\n", " person_id\n", " household_id\n", - " tour_id\n", " primary_purpose\n", " trip_num\n", " outbound\n", " trip_count\n", + " destination\n", + " ...\n", " purpose\n", " next_trip_id\n", - " destination\n", - " origin\n", - " failed\n", " tour_mode\n", " trip_period\n", " is_joint\n", + " tour_leg_dest\n", + " purpose_index_num\n", + " tour_mode_is_walk\n", + " tour_mode_is_bike\n", " destination_logsum\n", " \n", " \n", " \n", " \n", " 0\n", - " 123229\n", - " 7\n", - " 69\n", - " 375\n", - " 375\n", - " 15403\n", - " othmaint\n", + " 439241\n", + " 93\n", + " 178\n", + " 1339\n", + " 1339\n", + " eatout\n", " 1\n", - " False\n", - " 3\n", + " True\n", + " 2\n", + " 187\n", + " ...\n", " shopping\n", - " 123230\n", - " 105\n", - " 67\n", - " False\n", + " 439242\n", " DRIVEALONEFREE\n", - " MD\n", + " PM\n", + " False\n", + " 187.0\n", + " 2\n", + " False\n", " False\n", " NaN\n", " \n", " \n", " 1\n", - " 123230\n", - " 9\n", - " 106\n", - " 375\n", - " 375\n", - " 15403\n", - " othmaint\n", + " 497189\n", + " 169\n", + " 99\n", + " 1515\n", + " 1515\n", + " shopping\n", + " 1\n", + " False\n", " 2\n", + " 170\n", + " ...\n", + " othdiscr\n", + " 497190\n", + " DRIVEALONEFREE\n", + " EV\n", " False\n", - " 3\n", - " eatout\n", - " 123231\n", - " 105\n", - " 69\n", + " 170.0\n", + " 6\n", " False\n", - " DRIVEALONEFREE\n", - " MD\n", " False\n", " NaN\n", " \n", " \n", " 2\n", - " 206561\n", - " 7\n", - " 9\n", - " 629\n", - " 629\n", - " 25820\n", - " univ\n", + " 536181\n", + " 184\n", + " 177\n", + " 1634\n", + " 1634\n", + " othmaint\n", " 1\n", - " True\n", + " False\n", " 2\n", - " escort\n", - " 206562\n", - " 12\n", - " 131\n", + " 178\n", + " ...\n", + " othmaint\n", + " 536182\n", + " DRIVEALONEFREE\n", + " PM\n", + " False\n", + " 178.0\n", + " 4\n", " False\n", - " WALK_HVY\n", - " MD\n", " False\n", " NaN\n", " \n", " \n", " 3\n", - " 265617\n", - " 141\n", - " 141\n", - " 809\n", - " 809\n", - " 33202\n", - " shopping\n", + " 593909\n", + " 183\n", + " 136\n", + " 1810\n", + " 1810\n", + " othmaint\n", + " 1\n", + " False\n", + " 3\n", + " 183\n", + " ...\n", + " escort\n", + " 593910\n", + " SHARED2FREE\n", + " AM\n", + " False\n", + " 183.0\n", " 1\n", - " True\n", - " 2\n", - " shopping\n", - " 265618\n", - " 117\n", - " 138\n", " False\n", - " DRIVEALONEFREE\n", - " MD\n", " False\n", " NaN\n", " \n", " \n", " 4\n", - " 265621\n", - " 127\n", - " 127\n", - " 809\n", - " 809\n", - " 33202\n", - " shopping\n", - " 1\n", - " False\n", + " 593910\n", + " 89\n", + " 188\n", + " 1810\n", + " 1810\n", + " othmaint\n", " 2\n", + " False\n", + " 3\n", + " 183\n", + " ...\n", " othmaint\n", - " 265622\n", - " 138\n", - " 117\n", + " 593911\n", + " SHARED2FREE\n", + " AM\n", + " False\n", + " 183.0\n", + " 4\n", " False\n", - " DRIVEALONEFREE\n", - " MD\n", " False\n", " NaN\n", " \n", @@ -872,176 +906,201 @@ " ...\n", " ...\n", " ...\n", + " ...\n", + " ...\n", " \n", " \n", - " 2791\n", - " 2473349145\n", - " 7\n", - " 121\n", - " 7540698\n", - " 2849363\n", - " 309168643\n", + " 36442\n", + " 2480879045\n", + " 1304\n", + " 1306\n", + " 7563655\n", + " 2872320\n", " othdiscr\n", " 1\n", - " True\n", + " False\n", " 2\n", - " social\n", - " 2473349146\n", - " 56\n", - " 92\n", + " 1293\n", + " ...\n", + " othdiscr\n", + " 2480879046\n", + " DRIVEALONEFREE\n", + " MD\n", + " False\n", + " 1293.0\n", + " 6\n", " False\n", - " SHARED3FREE\n", - " PM\n", " False\n", " NaN\n", " \n", " \n", - " 2792\n", - " 2473471869\n", - " 25\n", - " 134\n", - " 7541072\n", - " 2849737\n", - " 309183983\n", - " univ\n", + " 36443\n", + " 2480879069\n", + " 1298\n", + " 1299\n", + " 7563655\n", + " 2872320\n", + " othmaint\n", " 1\n", " False\n", + " 4\n", + " 1293\n", + " ...\n", + " shopping\n", + " 2480879070\n", + " DRIVEALONEFREE\n", + " PM\n", + " False\n", + " 1293.0\n", " 2\n", - " escort\n", - " 2473471870\n", - " 117\n", - " 107\n", " False\n", - " TAXI\n", - " AM\n", " False\n", " NaN\n", " \n", " \n", - " 2793\n", - " 2477980533\n", - " 7\n", - " 117\n", - " 7554818\n", - " 2863483\n", - " 309747566\n", + " 36444\n", + " 2480879070\n", + " 1291\n", + " 1293\n", + " 7563655\n", + " 2872320\n", " othmaint\n", - " 1\n", - " False\n", " 2\n", - " shopping\n", - " 2477980534\n", - " 20\n", - " 177\n", " False\n", + " 4\n", + " 1293\n", + " ...\n", + " eatout\n", + " 2480879071\n", " DRIVEALONEFREE\n", " PM\n", " False\n", + " 1293.0\n", + " 3\n", + " False\n", + " False\n", " NaN\n", " \n", " \n", - " 2794\n", - " 2478086525\n", - " 7\n", - " 48\n", - " 7555141\n", - " 2863806\n", - " 309760815\n", - " shopping\n", - " 1\n", + " 36445\n", + " 2480879071\n", + " 1293\n", + " 1293\n", + " 7563655\n", + " 2872320\n", + " othmaint\n", + " 3\n", + " False\n", + " 4\n", + " 1293\n", + " ...\n", + " othdiscr\n", + " 2480879072\n", + " DRIVEALONEFREE\n", + " PM\n", " False\n", - " 2\n", - " shopping\n", - " 2478086526\n", - " 85\n", - " 41\n", + " 1293.0\n", + " 6\n", " False\n", - " SHARED2FREE\n", - " PM\n", " False\n", " NaN\n", " \n", " \n", - " 2795\n", - " 2478375757\n", - " 126\n", - " 127\n", - " 7556023\n", - " 2864688\n", - " 309796969\n", + " 36446\n", + " 2481262477\n", + " 1309\n", + " 1302\n", + " 7564824\n", + " 2873489\n", " othdiscr\n", " 1\n", " False\n", " 2\n", - " escort\n", - " 2478375758\n", - " 136\n", - " 128\n", - " False\n", + " 1310\n", + " ...\n", + " shopping\n", + " 2481262478\n", " DRIVEALONEFREE\n", - " EV\n", + " PM\n", + " False\n", + " 1310.0\n", + " 2\n", + " False\n", " False\n", " NaN\n", " \n", " \n", "\n", - "

2796 rows × 19 columns

\n", + "

36447 rows × 23 columns

\n", "" ], "text/plain": [ - " trip_id model_choice override_choice person_id household_id \\\n", - "0 123229 7 69 375 375 \n", - "1 123230 9 106 375 375 \n", - "2 206561 7 9 629 629 \n", - "3 265617 141 141 809 809 \n", - "4 265621 127 127 809 809 \n", - "... ... ... ... ... ... \n", - "2791 2473349145 7 121 7540698 2849363 \n", - "2792 2473471869 25 134 7541072 2849737 \n", - "2793 2477980533 7 117 7554818 2863483 \n", - "2794 2478086525 7 48 7555141 2863806 \n", - "2795 2478375757 126 127 7556023 2864688 \n", + " trip_id model_choice override_choice person_id household_id \\\n", + "0 439241 93 178 1339 1339 \n", + "1 497189 169 99 1515 1515 \n", + "2 536181 184 177 1634 1634 \n", + "3 593909 183 136 1810 1810 \n", + "4 593910 89 188 1810 1810 \n", + "... ... ... ... ... ... \n", + "36442 2480879045 1304 1306 7563655 2872320 \n", + "36443 2480879069 1298 1299 7563655 2872320 \n", + "36444 2480879070 1291 1293 7563655 2872320 \n", + "36445 2480879071 1293 1293 7563655 2872320 \n", + "36446 2481262477 1309 1302 7564824 2873489 \n", "\n", - " tour_id primary_purpose trip_num outbound trip_count purpose \\\n", - "0 15403 othmaint 1 False 3 shopping \n", - "1 15403 othmaint 2 False 3 eatout \n", - "2 25820 univ 1 True 2 escort \n", - "3 33202 shopping 1 True 2 shopping \n", - "4 33202 shopping 1 False 2 othmaint \n", - "... ... ... ... ... ... ... \n", - "2791 309168643 othdiscr 1 True 2 social \n", - "2792 309183983 univ 1 False 2 escort \n", - "2793 309747566 othmaint 1 False 2 shopping \n", - "2794 309760815 shopping 1 False 2 shopping \n", - "2795 309796969 othdiscr 1 False 2 escort \n", + " primary_purpose trip_num outbound trip_count destination ... \\\n", + "0 eatout 1 True 2 187 ... \n", + "1 shopping 1 False 2 170 ... \n", + "2 othmaint 1 False 2 178 ... \n", + "3 othmaint 1 False 3 183 ... \n", + "4 othmaint 2 False 3 183 ... \n", + "... ... ... ... ... ... ... \n", + "36442 othdiscr 1 False 2 1293 ... \n", + "36443 othmaint 1 False 4 1293 ... \n", + "36444 othmaint 2 False 4 1293 ... \n", + "36445 othmaint 3 False 4 1293 ... \n", + "36446 othdiscr 1 False 2 1310 ... \n", "\n", - " next_trip_id destination origin failed tour_mode trip_period \\\n", - "0 123230 105 67 False DRIVEALONEFREE MD \n", - "1 123231 105 69 False DRIVEALONEFREE MD \n", - "2 206562 12 131 False WALK_HVY MD \n", - "3 265618 117 138 False DRIVEALONEFREE MD \n", - "4 265622 138 117 False DRIVEALONEFREE MD \n", - "... ... ... ... ... ... ... \n", - "2791 2473349146 56 92 False SHARED3FREE PM \n", - "2792 2473471870 117 107 False TAXI AM \n", - "2793 2477980534 20 177 False DRIVEALONEFREE PM \n", - "2794 2478086526 85 41 False SHARED2FREE PM \n", - "2795 2478375758 136 128 False DRIVEALONEFREE EV \n", + " purpose next_trip_id tour_mode trip_period is_joint \\\n", + "0 shopping 439242 DRIVEALONEFREE PM False \n", + "1 othdiscr 497190 DRIVEALONEFREE EV False \n", + "2 othmaint 536182 DRIVEALONEFREE PM False \n", + "3 escort 593910 SHARED2FREE AM False \n", + "4 othmaint 593911 SHARED2FREE AM False \n", + "... ... ... ... ... ... \n", + "36442 othdiscr 2480879046 DRIVEALONEFREE MD False \n", + "36443 shopping 2480879070 DRIVEALONEFREE PM False \n", + "36444 eatout 2480879071 DRIVEALONEFREE PM False \n", + "36445 othdiscr 2480879072 DRIVEALONEFREE PM False \n", + "36446 shopping 2481262478 DRIVEALONEFREE PM False \n", "\n", - " is_joint destination_logsum \n", - "0 False NaN \n", - "1 False NaN \n", - "2 False NaN \n", - "3 False NaN \n", - "4 False NaN \n", - "... ... ... \n", - "2791 False NaN \n", - "2792 False NaN \n", - "2793 False NaN \n", - "2794 False NaN \n", - "2795 False NaN \n", + " tour_leg_dest purpose_index_num tour_mode_is_walk tour_mode_is_bike \\\n", + "0 187.0 2 False False \n", + "1 170.0 6 False False \n", + "2 178.0 4 False False \n", + "3 183.0 1 False False \n", + "4 183.0 4 False False \n", + "... ... ... ... ... \n", + "36442 1293.0 6 False False \n", + "36443 1293.0 2 False False \n", + "36444 1293.0 3 False False \n", + "36445 1293.0 6 False False \n", + "36446 1310.0 2 False False \n", "\n", - "[2796 rows x 19 columns]" + " destination_logsum \n", + "0 NaN \n", + "1 NaN \n", + "2 NaN \n", + "3 NaN \n", + "4 NaN \n", + "... ... \n", + "36442 NaN \n", + "36443 NaN \n", + "36444 NaN \n", + "36445 NaN \n", + "36446 NaN \n", + "\n", + "[36447 rows x 23 columns]" ] }, "execution_count": 7, @@ -1148,9 +1207,9 @@ " 7\n", " ...\n", " 0\n", + " 0.0\n", " 0.00000\n", - " 0.00000\n", - " 0.00000\n", + " 0.0\n", " 3\n", " 5.89564\n", " 2.875000\n", @@ -1172,9 +1231,9 @@ " 19\n", " ...\n", " 0\n", + " 0.0\n", " 0.00000\n", - " 0.00000\n", - " 0.00000\n", + " 0.0\n", " 1\n", " 5.84871\n", " 5.195214\n", @@ -1196,9 +1255,9 @@ " 38\n", " ...\n", " 0\n", + " 0.0\n", " 0.00000\n", - " 0.00000\n", - " 0.00000\n", + " 0.0\n", " 1\n", " 5.53231\n", " 80.470405\n", @@ -1220,9 +1279,9 @@ " 20\n", " ...\n", " 0\n", + " 0.0\n", " 0.00000\n", - " 0.00000\n", - " 0.00000\n", + " 0.0\n", " 2\n", " 5.64330\n", " 7.947368\n", @@ -1244,9 +1303,9 @@ " 86\n", " ...\n", " 0\n", - " 0.00000\n", + " 0.0\n", " 72.14684\n", - " 0.00000\n", + " 0.0\n", " 1\n", " 5.52555\n", " 38.187500\n", @@ -1279,188 +1338,188 @@ " ...\n", " \n", " \n", - " 186\n", - " 4\n", - " 4\n", - " 1\n", - " 2779\n", - " 8062\n", - " 376.0\n", - " 172.0\n", - " 15.00000\n", - " 1760\n", - " 1178\n", + " 1450\n", + " 34\n", + " 34\n", + " 9\n", + " 2724\n", + " 6493\n", + " 1320.0\n", + " 630.0\n", + " 69.00000\n", + " 1046\n", + " 1013\n", " ...\n", - " 3\n", - " 0.00000\n", - " 0.00000\n", + " 4\n", + " 0.0\n", " 0.00000\n", + " 0.0\n", " 1\n", - " 2.04173\n", - " 14.860963\n", - " 9.411765\n", - " 5.762347\n", + " 1.12116\n", + " 3.896996\n", + " 1.496423\n", + " 1.081235\n", " False\n", " \n", " \n", - " 187\n", - " 4\n", - " 4\n", - " 1\n", - " 1492\n", - " 4139\n", - " 214.0\n", - " 116.0\n", - " 10.00000\n", - " 808\n", - " 603\n", + " 1451\n", + " 34\n", + " 34\n", + " 9\n", + " 2016\n", + " 4835\n", + " 664.0\n", + " 379.0\n", + " 43.00000\n", + " 757\n", + " 757\n", " ...\n", - " 3\n", - " 0.00000\n", - " 0.00000\n", + " 4\n", + " 0.0\n", " 0.00000\n", - " 2\n", - " 1.73676\n", - " 11.841270\n", - " 6.412698\n", - " 4.159890\n", + " 0.0\n", + " 1\n", + " 1.17116\n", + " 4.777251\n", + " 1.793839\n", + " 1.304140\n", " False\n", " \n", " \n", - " 188\n", - " 4\n", - " 4\n", - " 1\n", - " 753\n", - " 4072\n", - " 232.0\n", - " 11.0\n", - " 178.00000\n", - " 4502\n", - " 1117\n", + " 1452\n", + " 34\n", + " 34\n", + " 9\n", + " 2178\n", + " 5055\n", + " 1068.0\n", + " 602.0\n", + " 35.00000\n", + " 2110\n", + " 789\n", " ...\n", - " 2\n", - " 3961.04761\n", - " 17397.79102\n", - " 11152.93652\n", + " 4\n", + " 0.0\n", + " 0.00000\n", + " 0.0\n", " 1\n", - " 2.28992\n", - " 3.984127\n", - " 23.820106\n", - " 3.413233\n", + " 1.17587\n", + " 3.419152\n", + " 3.312402\n", + " 1.682465\n", " False\n", " \n", " \n", - " 189\n", - " 4\n", - " 4\n", - " 1\n", - " 3546\n", - " 8476\n", - " 201.0\n", - " 72.0\n", - " 6.00000\n", - " 226\n", - " 1057\n", + " 1453\n", + " 34\n", + " 34\n", + " 9\n", + " 298\n", + " 779\n", + " 14195.0\n", + " 429.0\n", + " 4.00000\n", + " 922\n", + " 88\n", " ...\n", - " 2\n", - " 0.00000\n", - " 0.00000\n", + " 5\n", + " 0.0\n", " 0.00000\n", + " 0.0\n", " 1\n", - " 2.88773\n", - " 45.461538\n", - " 2.897436\n", - " 2.723836\n", + " 1.01972\n", + " 0.688222\n", + " 2.129330\n", + " 0.520115\n", " False\n", " \n", " \n", - " 190\n", - " 4\n", - " 4\n", - " 1\n", - " 968\n", - " 1647\n", - " 1381.0\n", - " 14.0\n", - " 28.00000\n", - " 1010\n", - " 114\n", + " 1454\n", + " 34\n", + " 34\n", + " 9\n", + " 1068\n", + " 2337\n", + " 10469.0\n", + " 1114.0\n", + " 27.00000\n", + " 607\n", + " 418\n", " ...\n", - " 3\n", - " 0.00000\n", - " 0.00000\n", + " 5\n", + " 0.0\n", " 0.00000\n", + " 0.0\n", " 1\n", - " 2.60309\n", - " 23.047619\n", - " 24.047619\n", - " 11.768501\n", + " 0.95542\n", + " 0.936021\n", + " 0.531989\n", + " 0.339203\n", " False\n", " \n", " \n", "\n", - "

190 rows × 28 columns

\n", + "

1454 rows × 28 columns

\n", "" ], "text/plain": [ - " DISTRICT SD county_id TOTHH TOTPOP TOTACRE RESACRE CIACRE \\\n", - "zone_id \n", - "1 1 1 1 46 82 20.3 1.0 15.00000 \n", - "2 1 1 1 134 240 31.1 1.0 24.79297 \n", - "3 1 1 1 267 476 14.7 1.0 2.31799 \n", - "4 1 1 1 151 253 19.3 1.0 18.00000 \n", - "5 1 1 1 611 1069 52.7 1.0 15.00000 \n", - "... ... .. ... ... ... ... ... ... \n", - "186 4 4 1 2779 8062 376.0 172.0 15.00000 \n", - "187 4 4 1 1492 4139 214.0 116.0 10.00000 \n", - "188 4 4 1 753 4072 232.0 11.0 178.00000 \n", - "189 4 4 1 3546 8476 201.0 72.0 6.00000 \n", - "190 4 4 1 968 1647 1381.0 14.0 28.00000 \n", + " DISTRICT SD county_id TOTHH TOTPOP TOTACRE RESACRE CIACRE \\\n", + "zone_id \n", + "1 1 1 1 46 82 20.3 1.0 15.00000 \n", + "2 1 1 1 134 240 31.1 1.0 24.79297 \n", + "3 1 1 1 267 476 14.7 1.0 2.31799 \n", + "4 1 1 1 151 253 19.3 1.0 18.00000 \n", + "5 1 1 1 611 1069 52.7 1.0 15.00000 \n", + "... ... .. ... ... ... ... ... ... \n", + "1450 34 34 9 2724 6493 1320.0 630.0 69.00000 \n", + "1451 34 34 9 2016 4835 664.0 379.0 43.00000 \n", + "1452 34 34 9 2178 5055 1068.0 602.0 35.00000 \n", + "1453 34 34 9 298 779 14195.0 429.0 4.00000 \n", + "1454 34 34 9 1068 2337 10469.0 1114.0 27.00000 \n", "\n", - " TOTEMP AGE0519 ... area_type HSENROLL COLLFTE \\\n", - "zone_id ... \n", - "1 27318 7 ... 0 0.00000 0.00000 \n", - "2 42078 19 ... 0 0.00000 0.00000 \n", - "3 2445 38 ... 0 0.00000 0.00000 \n", - "4 22434 20 ... 0 0.00000 0.00000 \n", - "5 15662 86 ... 0 0.00000 72.14684 \n", - "... ... ... ... ... ... ... \n", - "186 1760 1178 ... 3 0.00000 0.00000 \n", - "187 808 603 ... 3 0.00000 0.00000 \n", - "188 4502 1117 ... 2 3961.04761 17397.79102 \n", - "189 226 1057 ... 2 0.00000 0.00000 \n", - "190 1010 114 ... 3 0.00000 0.00000 \n", + " TOTEMP AGE0519 ... area_type HSENROLL COLLFTE COLLPTE \\\n", + "zone_id ... \n", + "1 27318 7 ... 0 0.0 0.00000 0.0 \n", + "2 42078 19 ... 0 0.0 0.00000 0.0 \n", + "3 2445 38 ... 0 0.0 0.00000 0.0 \n", + "4 22434 20 ... 0 0.0 0.00000 0.0 \n", + "5 15662 86 ... 0 0.0 72.14684 0.0 \n", + "... ... ... ... ... ... ... ... \n", + "1450 1046 1013 ... 4 0.0 0.00000 0.0 \n", + "1451 757 757 ... 4 0.0 0.00000 0.0 \n", + "1452 2110 789 ... 4 0.0 0.00000 0.0 \n", + "1453 922 88 ... 5 0.0 0.00000 0.0 \n", + "1454 607 418 ... 5 0.0 0.00000 0.0 \n", "\n", - " COLLPTE TOPOLOGY TERMINAL household_density \\\n", - "zone_id \n", - "1 0.00000 3 5.89564 2.875000 \n", - "2 0.00000 1 5.84871 5.195214 \n", - "3 0.00000 1 5.53231 80.470405 \n", - "4 0.00000 2 5.64330 7.947368 \n", - "5 0.00000 1 5.52555 38.187500 \n", - "... ... ... ... ... \n", - "186 0.00000 1 2.04173 14.860963 \n", - "187 0.00000 2 1.73676 11.841270 \n", - "188 11152.93652 1 2.28992 3.984127 \n", - "189 0.00000 1 2.88773 45.461538 \n", - "190 0.00000 1 2.60309 23.047619 \n", + " TOPOLOGY TERMINAL household_density employment_density \\\n", + "zone_id \n", + "1 3 5.89564 2.875000 1707.375000 \n", + "2 1 5.84871 5.195214 1631.374751 \n", + "3 1 5.53231 80.470405 736.891913 \n", + "4 2 5.64330 7.947368 1180.736842 \n", + "5 1 5.52555 38.187500 978.875000 \n", + "... ... ... ... ... \n", + "1450 1 1.12116 3.896996 1.496423 \n", + "1451 1 1.17116 4.777251 1.793839 \n", + "1452 1 1.17587 3.419152 3.312402 \n", + "1453 1 1.01972 0.688222 2.129330 \n", + "1454 1 0.95542 0.936021 0.531989 \n", "\n", - " employment_density density_index is_cbd \n", - "zone_id \n", - "1 1707.375000 2.870167 False \n", - "2 1631.374751 5.178722 False \n", - "3 736.891913 72.547987 False \n", - "4 1180.736842 7.894233 False \n", - "5 978.875000 36.753679 False \n", - "... ... ... ... \n", - "186 9.411765 5.762347 False \n", - "187 6.412698 4.159890 False \n", - "188 23.820106 3.413233 False \n", - "189 2.897436 2.723836 False \n", - "190 24.047619 11.768501 False \n", + " density_index is_cbd \n", + "zone_id \n", + "1 2.870167 False \n", + "2 5.178722 False \n", + "3 72.547987 False \n", + "4 7.894233 False \n", + "5 36.753679 False \n", + "... ... ... \n", + "1450 1.081235 False \n", + "1451 1.304140 False \n", + "1452 1.682465 False \n", + "1453 0.520115 False \n", + "1454 0.339203 False \n", "\n", - "[190 rows x 28 columns]" + "[1454 rows x 28 columns]" ] }, "execution_count": 8, @@ -1541,7 +1600,7 @@ " 1\n", " util_no_attractions\n", " no attractions\n", - " @size_terms.get(df.dest_taz, df.purpose) == 0\n", + " @size_terms.get(df.dest_taz, df.purpose) == 0 ...\n", " coef_UNAVAILABLE\n", " coef_UNAVAILABLE\n", " coef_UNAVAILABLE\n", @@ -1784,7 +1843,7 @@ "\n", " Expression \\\n", "0 @np.log1p(size_terms.get(df.dest_taz, df.purpo... \n", - "1 @size_terms.get(df.dest_taz, df.purpose) == 0 \n", + "1 @size_terms.get(df.dest_taz, df.purpose) == 0 ... \n", "2 @(~df.is_joint & ~df.outbound) * (_od_DIST + _... \n", "3 @(~df.is_joint & df.outbound) * (_od_DIST + _d... \n", "4 @df.is_joint * (_od_DIST + _dp_DIST) \n", @@ -2112,13 +2171,6 @@ "execution_count": 11, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "req_data does not request avail_ca or avail_co but it is set and being provided\n" - ] - }, { "data": { "text/html": [ @@ -2134,7 +2186,7 @@ { "data": { "text/html": [ - "

Best LL = -12569.486099970745

" + "

Best LL = -78919.86749443343

" ], "text/plain": [ "" @@ -2165,13 +2217,22 @@ " \n", " \n", " value\n", + " best\n", " initvalue\n", - " nullvalue\n", " minimum\n", " maximum\n", + " nullvalue\n", " holdfast\n", - " note\n", - " best\n", + " \n", + " \n", + " param_name\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -2179,621 +2240,576 @@ " coef_UNAVAILABLE\n", " -999.000000\n", " -999.000000\n", + " -999.000000\n", + " -999.000000\n", + " -999.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 1\n", - " \n", - " -999.000000\n", " \n", " \n", " coef_distance_joint\n", - " -0.376392\n", + " -0.222590\n", + " -0.222590\n", " -0.123800\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.376392\n", " \n", " \n", " coef_mode_choice_logsum\n", - " 0.163028\n", + " 0.908189\n", + " 0.908189\n", " 1.821000\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.163028\n", " \n", " \n", " coef_one\n", " 1.000000\n", " 1.000000\n", + " 1.000000\n", + " 1.000000\n", + " 1.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 1\n", - " \n", - " 1.000000\n", " \n", " \n", " coef_prox_dest_outbound_work\n", - " -0.359504\n", + " -0.278949\n", + " -0.278949\n", " -0.260000\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.359504\n", " \n", " \n", " coef_prox_home_inbound_work\n", - " -0.174104\n", + " -0.121975\n", + " -0.121975\n", " -0.150000\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.174104\n", " \n", " \n", " coef_prox_home_outbound_work\n", - " -0.522711\n", + " -0.419012\n", + " -0.419012\n", " -0.380000\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.522711\n", " \n", " \n", " coef_util_distance_atwork\n", " -0.122335\n", " -0.122335\n", + " -0.122335\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.122335\n", " \n", " \n", " coef_util_distance_eatout\n", - " -0.366193\n", + " -0.219723\n", + " -0.219723\n", " -0.102900\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.366193\n", " \n", " \n", " coef_util_distance_escort\n", - " -0.337785\n", + " -0.235858\n", + " -0.235858\n", " -0.149100\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.337785\n", " \n", " \n", " coef_util_distance_othdiscr\n", - " -0.408787\n", + " -0.241573\n", + " -0.241573\n", " -0.126172\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.408787\n", " \n", " \n", " coef_util_distance_othmaint\n", - " -0.257971\n", + " -0.177610\n", + " -0.177610\n", " -0.096200\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.257971\n", " \n", " \n", " coef_util_distance_school\n", " -0.105600\n", " -0.105600\n", + " -0.105600\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.105600\n", " \n", " \n", " coef_util_distance_shopping\n", - " -0.390483\n", + " -0.227090\n", + " -0.227090\n", " -0.119200\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.390483\n", " \n", " \n", " coef_util_distance_social\n", - " -0.338764\n", + " -0.227558\n", + " -0.227558\n", " -0.132900\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.338764\n", " \n", " \n", " coef_util_distance_univ\n", - " -0.186380\n", + " -0.139388\n", + " -0.139388\n", " -0.061300\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.186380\n", " \n", " \n", " coef_util_distance_work_inbound\n", - " -0.094761\n", + " 0.089849\n", + " 0.089849\n", " 0.147813\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.094761\n", " \n", " \n", " coef_util_distance_work_outbound\n", - " -0.300511\n", + " -0.138174\n", + " -0.138174\n", " -0.049726\n", + " -25.000000\n", + " 25.000000\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.300511\n", " \n", " \n", " eatout_HEREMPN\n", - " -4.274182\n", + " -2.550718\n", + " -2.550718\n", " -1.354796\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -4.274182\n", " \n", " \n", " eatout_RETEMPN\n", " -0.298406\n", " -0.298406\n", + " -0.298406\n", + " -0.298406\n", + " -0.298406\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 1\n", - " \n", - " -0.298406\n", " \n", " \n", " escort_AGE0519\n", - " -1.513508\n", + " -0.039579\n", + " -0.039579\n", " -0.767871\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -1.513508\n", " \n", " \n", " escort_HEREMPN\n", - " -6.000000\n", + " -2.848681\n", + " -2.848681\n", " -1.937942\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -6.000000\n", " \n", " \n", " escort_HSENROLL\n", - " -3.172185\n", - " -1.795767\n", + " -2.260284\n", + " -2.260284\n", + " -1.795768\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -3.172185\n", " \n", " \n", " escort_RETEMPN\n", - " -2.099140\n", + " -0.886457\n", + " -0.886457\n", " -1.491655\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -2.099140\n", " \n", " \n", " escort_TOTHH\n", " -6.907755\n", " -6.907755\n", + " -6.907755\n", + " -6.907755\n", + " -6.907755\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 1\n", - " \n", - " -6.907755\n", " \n", " \n", " othdiscr_HEREMPN\n", - " -6.000000\n", + " -4.394168\n", + " -4.394168\n", " -1.301953\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -6.000000\n", " \n", " \n", " othdiscr_HSENROLL\n", - " -6.000000\n", + " -3.310820\n", + " -3.310820\n", " -2.322788\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -6.000000\n", " \n", " \n", " othdiscr_OTHEMPN\n", - " -4.741924\n", + " -2.825965\n", + " -2.825965\n", " -1.801810\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -4.741924\n", " \n", " \n", " othdiscr_RETEMPN\n", - " -0.420810\n", + " -2.884521\n", + " -2.884521\n", " -1.551169\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -0.420810\n", " \n", " \n", " othdiscr_TOTHH\n", " -1.378326\n", " -1.378326\n", + " -1.378326\n", + " -1.378326\n", + " -1.378326\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 1\n", - " \n", - " -1.378326\n", " \n", " \n", " othmaint_HEREMPN\n", - " -6.000000\n", + " -1.693356\n", + " -1.693356\n", " -0.657780\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -6.000000\n", " \n", " \n", " othmaint_RETEMPN\n", - " -4.468097\n", + " -0.351270\n", + " -0.351270\n", " -0.731888\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -4.468097\n", " \n", " \n", " othmaint_TOTHH\n", " -6.907755\n", " -6.907755\n", + " -6.907755\n", + " -6.907755\n", + " -6.907755\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 1\n", - " \n", - " -6.907755\n", " \n", " \n", " shopping_RETEMPN\n", " -6.000000\n", + " -6.000000\n", " -0.001001\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -6.000000\n", " \n", " \n", " shopping_TOTHH\n", " -6.907755\n", " -6.907755\n", + " -6.907755\n", + " -6.907755\n", + " -6.907755\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 1\n", - " \n", - " -6.907755\n", " \n", " \n", " social_HEREMPN\n", - " -6.000000\n", + " -1.516222\n", + " -1.516222\n", " -0.738145\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -6.000000\n", " \n", " \n", " social_RETEMPN\n", - " -3.463457\n", + " -0.098839\n", + " -0.098839\n", " -0.652005\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -3.463457\n", " \n", " \n", " social_TOTHH\n", " -6.907755\n", " -6.907755\n", + " -6.907755\n", + " -6.907755\n", + " -6.907755\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 1\n", - " \n", - " -6.907755\n", " \n", " \n", " univ_COLLFTE\n", " -6.000000\n", + " -6.000000\n", " -0.524249\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -6.000000\n", " \n", " \n", " univ_COLLPTE\n", " -6.000000\n", + " -6.000000\n", " -0.896488\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -6.000000\n", " \n", " \n", " univ_TOTHH\n", " -6.907755\n", " -6.907755\n", + " -6.907755\n", + " -6.907755\n", + " -6.907755\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 1\n", - " \n", - " -6.907755\n", " \n", " \n", " work_AGREMPN\n", - " 1.145159\n", + " 0.122431\n", + " 0.122431\n", " 0.000000\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " 1.145159\n", " \n", " \n", " work_FPSEMPN\n", " -6.000000\n", + " -6.000000\n", " 0.000000\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -6.000000\n", " \n", " \n", " work_HEREMPN\n", - " -4.551520\n", + " -1.959508\n", + " -1.959508\n", " 0.000000\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -4.551520\n", " \n", " \n", " work_MWTEMPN\n", - " -6.000000\n", + " -5.322959\n", + " -5.322959\n", " 0.000000\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -6.000000\n", " \n", " \n", " work_OTHEMPN\n", - " -5.205310\n", + " -2.512682\n", + " -2.512682\n", " 0.000000\n", + " -6.000000\n", + " 6.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 0\n", - " \n", - " -5.205310\n", " \n", " \n", " work_RETEMPN\n", " 0.000000\n", " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", " 0.0\n", - " -6.0\n", - " 6.0\n", " 1\n", - " \n", - " 0.000000\n", " \n", " \n", "\n", "" ], "text/plain": [ - " value initvalue nullvalue minimum \\\n", - "coef_UNAVAILABLE -999.000000 -999.000000 0.0 NaN \n", - "coef_distance_joint -0.376392 -0.123800 0.0 NaN \n", - "coef_mode_choice_logsum 0.163028 1.821000 0.0 NaN \n", - "coef_one 1.000000 1.000000 0.0 NaN \n", - "coef_prox_dest_outbound_work -0.359504 -0.260000 0.0 NaN \n", - "coef_prox_home_inbound_work -0.174104 -0.150000 0.0 NaN \n", - "coef_prox_home_outbound_work -0.522711 -0.380000 0.0 NaN \n", - "coef_util_distance_atwork -0.122335 -0.122335 0.0 NaN \n", - "coef_util_distance_eatout -0.366193 -0.102900 0.0 NaN \n", - "coef_util_distance_escort -0.337785 -0.149100 0.0 NaN \n", - "coef_util_distance_othdiscr -0.408787 -0.126172 0.0 NaN \n", - "coef_util_distance_othmaint -0.257971 -0.096200 0.0 NaN \n", - "coef_util_distance_school -0.105600 -0.105600 0.0 NaN \n", - "coef_util_distance_shopping -0.390483 -0.119200 0.0 NaN \n", - "coef_util_distance_social -0.338764 -0.132900 0.0 NaN \n", - "coef_util_distance_univ -0.186380 -0.061300 0.0 NaN \n", - "coef_util_distance_work_inbound -0.094761 0.147813 0.0 NaN \n", - "coef_util_distance_work_outbound -0.300511 -0.049726 0.0 NaN \n", - "eatout_HEREMPN -4.274182 -1.354796 0.0 -6.0 \n", - "eatout_RETEMPN -0.298406 -0.298406 0.0 -6.0 \n", - "escort_AGE0519 -1.513508 -0.767871 0.0 -6.0 \n", - "escort_HEREMPN -6.000000 -1.937942 0.0 -6.0 \n", - "escort_HSENROLL -3.172185 -1.795767 0.0 -6.0 \n", - "escort_RETEMPN -2.099140 -1.491655 0.0 -6.0 \n", - "escort_TOTHH -6.907755 -6.907755 0.0 -6.0 \n", - "othdiscr_HEREMPN -6.000000 -1.301953 0.0 -6.0 \n", - "othdiscr_HSENROLL -6.000000 -2.322788 0.0 -6.0 \n", - "othdiscr_OTHEMPN -4.741924 -1.801810 0.0 -6.0 \n", - "othdiscr_RETEMPN -0.420810 -1.551169 0.0 -6.0 \n", - "othdiscr_TOTHH -1.378326 -1.378326 0.0 -6.0 \n", - "othmaint_HEREMPN -6.000000 -0.657780 0.0 -6.0 \n", - "othmaint_RETEMPN -4.468097 -0.731888 0.0 -6.0 \n", - "othmaint_TOTHH -6.907755 -6.907755 0.0 -6.0 \n", - "shopping_RETEMPN -6.000000 -0.001001 0.0 -6.0 \n", - "shopping_TOTHH -6.907755 -6.907755 0.0 -6.0 \n", - "social_HEREMPN -6.000000 -0.738145 0.0 -6.0 \n", - "social_RETEMPN -3.463457 -0.652005 0.0 -6.0 \n", - "social_TOTHH -6.907755 -6.907755 0.0 -6.0 \n", - "univ_COLLFTE -6.000000 -0.524249 0.0 -6.0 \n", - "univ_COLLPTE -6.000000 -0.896488 0.0 -6.0 \n", - "univ_TOTHH -6.907755 -6.907755 0.0 -6.0 \n", - "work_AGREMPN 1.145159 0.000000 0.0 -6.0 \n", - "work_FPSEMPN -6.000000 0.000000 0.0 -6.0 \n", - "work_HEREMPN -4.551520 0.000000 0.0 -6.0 \n", - "work_MWTEMPN -6.000000 0.000000 0.0 -6.0 \n", - "work_OTHEMPN -5.205310 0.000000 0.0 -6.0 \n", - "work_RETEMPN 0.000000 0.000000 0.0 -6.0 \n", + " value best initvalue \\\n", + "param_name \n", + "coef_UNAVAILABLE -999.000000 -999.000000 -999.000000 \n", + "coef_distance_joint -0.222590 -0.222590 -0.123800 \n", + "coef_mode_choice_logsum 0.908189 0.908189 1.821000 \n", + "coef_one 1.000000 1.000000 1.000000 \n", + "coef_prox_dest_outbound_work -0.278949 -0.278949 -0.260000 \n", + "coef_prox_home_inbound_work -0.121975 -0.121975 -0.150000 \n", + "coef_prox_home_outbound_work -0.419012 -0.419012 -0.380000 \n", + "coef_util_distance_atwork -0.122335 -0.122335 -0.122335 \n", + "coef_util_distance_eatout -0.219723 -0.219723 -0.102900 \n", + "coef_util_distance_escort -0.235858 -0.235858 -0.149100 \n", + "coef_util_distance_othdiscr -0.241573 -0.241573 -0.126172 \n", + "coef_util_distance_othmaint -0.177610 -0.177610 -0.096200 \n", + "coef_util_distance_school -0.105600 -0.105600 -0.105600 \n", + "coef_util_distance_shopping -0.227090 -0.227090 -0.119200 \n", + "coef_util_distance_social -0.227558 -0.227558 -0.132900 \n", + "coef_util_distance_univ -0.139388 -0.139388 -0.061300 \n", + "coef_util_distance_work_inbound 0.089849 0.089849 0.147813 \n", + "coef_util_distance_work_outbound -0.138174 -0.138174 -0.049726 \n", + "eatout_HEREMPN -2.550718 -2.550718 -1.354796 \n", + "eatout_RETEMPN -0.298406 -0.298406 -0.298406 \n", + "escort_AGE0519 -0.039579 -0.039579 -0.767871 \n", + "escort_HEREMPN -2.848681 -2.848681 -1.937942 \n", + "escort_HSENROLL -2.260284 -2.260284 -1.795768 \n", + "escort_RETEMPN -0.886457 -0.886457 -1.491655 \n", + "escort_TOTHH -6.907755 -6.907755 -6.907755 \n", + "othdiscr_HEREMPN -4.394168 -4.394168 -1.301953 \n", + "othdiscr_HSENROLL -3.310820 -3.310820 -2.322788 \n", + "othdiscr_OTHEMPN -2.825965 -2.825965 -1.801810 \n", + "othdiscr_RETEMPN -2.884521 -2.884521 -1.551169 \n", + "othdiscr_TOTHH -1.378326 -1.378326 -1.378326 \n", + "othmaint_HEREMPN -1.693356 -1.693356 -0.657780 \n", + "othmaint_RETEMPN -0.351270 -0.351270 -0.731888 \n", + "othmaint_TOTHH -6.907755 -6.907755 -6.907755 \n", + "shopping_RETEMPN -6.000000 -6.000000 -0.001001 \n", + "shopping_TOTHH -6.907755 -6.907755 -6.907755 \n", + "social_HEREMPN -1.516222 -1.516222 -0.738145 \n", + "social_RETEMPN -0.098839 -0.098839 -0.652005 \n", + "social_TOTHH -6.907755 -6.907755 -6.907755 \n", + "univ_COLLFTE -6.000000 -6.000000 -0.524249 \n", + "univ_COLLPTE -6.000000 -6.000000 -0.896488 \n", + "univ_TOTHH -6.907755 -6.907755 -6.907755 \n", + "work_AGREMPN 0.122431 0.122431 0.000000 \n", + "work_FPSEMPN -6.000000 -6.000000 0.000000 \n", + "work_HEREMPN -1.959508 -1.959508 0.000000 \n", + "work_MWTEMPN -5.322959 -5.322959 0.000000 \n", + "work_OTHEMPN -2.512682 -2.512682 0.000000 \n", + "work_RETEMPN 0.000000 0.000000 0.000000 \n", "\n", - " maximum holdfast note best \n", - "coef_UNAVAILABLE NaN 1 -999.000000 \n", - "coef_distance_joint NaN 0 -0.376392 \n", - "coef_mode_choice_logsum NaN 0 0.163028 \n", - "coef_one NaN 1 1.000000 \n", - "coef_prox_dest_outbound_work NaN 0 -0.359504 \n", - "coef_prox_home_inbound_work NaN 0 -0.174104 \n", - "coef_prox_home_outbound_work NaN 0 -0.522711 \n", - "coef_util_distance_atwork NaN 0 -0.122335 \n", - "coef_util_distance_eatout NaN 0 -0.366193 \n", - "coef_util_distance_escort NaN 0 -0.337785 \n", - "coef_util_distance_othdiscr NaN 0 -0.408787 \n", - "coef_util_distance_othmaint NaN 0 -0.257971 \n", - "coef_util_distance_school NaN 0 -0.105600 \n", - "coef_util_distance_shopping NaN 0 -0.390483 \n", - "coef_util_distance_social NaN 0 -0.338764 \n", - "coef_util_distance_univ NaN 0 -0.186380 \n", - "coef_util_distance_work_inbound NaN 0 -0.094761 \n", - "coef_util_distance_work_outbound NaN 0 -0.300511 \n", - "eatout_HEREMPN 6.0 0 -4.274182 \n", - "eatout_RETEMPN 6.0 1 -0.298406 \n", - "escort_AGE0519 6.0 0 -1.513508 \n", - "escort_HEREMPN 6.0 0 -6.000000 \n", - "escort_HSENROLL 6.0 0 -3.172185 \n", - "escort_RETEMPN 6.0 0 -2.099140 \n", - "escort_TOTHH 6.0 1 -6.907755 \n", - "othdiscr_HEREMPN 6.0 0 -6.000000 \n", - "othdiscr_HSENROLL 6.0 0 -6.000000 \n", - "othdiscr_OTHEMPN 6.0 0 -4.741924 \n", - "othdiscr_RETEMPN 6.0 0 -0.420810 \n", - "othdiscr_TOTHH 6.0 1 -1.378326 \n", - "othmaint_HEREMPN 6.0 0 -6.000000 \n", - "othmaint_RETEMPN 6.0 0 -4.468097 \n", - "othmaint_TOTHH 6.0 1 -6.907755 \n", - "shopping_RETEMPN 6.0 0 -6.000000 \n", - "shopping_TOTHH 6.0 1 -6.907755 \n", - "social_HEREMPN 6.0 0 -6.000000 \n", - "social_RETEMPN 6.0 0 -3.463457 \n", - "social_TOTHH 6.0 1 -6.907755 \n", - "univ_COLLFTE 6.0 0 -6.000000 \n", - "univ_COLLPTE 6.0 0 -6.000000 \n", - "univ_TOTHH 6.0 1 -6.907755 \n", - "work_AGREMPN 6.0 0 1.145159 \n", - "work_FPSEMPN 6.0 0 -6.000000 \n", - "work_HEREMPN 6.0 0 -4.551520 \n", - "work_MWTEMPN 6.0 0 -6.000000 \n", - "work_OTHEMPN 6.0 0 -5.205310 \n", - "work_RETEMPN 6.0 1 0.000000 " + " minimum maximum nullvalue holdfast \n", + "param_name \n", + "coef_UNAVAILABLE -999.000000 -999.000000 0.0 1 \n", + "coef_distance_joint -25.000000 25.000000 0.0 0 \n", + "coef_mode_choice_logsum -25.000000 25.000000 0.0 0 \n", + "coef_one 1.000000 1.000000 0.0 1 \n", + "coef_prox_dest_outbound_work -25.000000 25.000000 0.0 0 \n", + "coef_prox_home_inbound_work -25.000000 25.000000 0.0 0 \n", + "coef_prox_home_outbound_work -25.000000 25.000000 0.0 0 \n", + "coef_util_distance_atwork -25.000000 25.000000 0.0 0 \n", + "coef_util_distance_eatout -25.000000 25.000000 0.0 0 \n", + "coef_util_distance_escort -25.000000 25.000000 0.0 0 \n", + "coef_util_distance_othdiscr -25.000000 25.000000 0.0 0 \n", + "coef_util_distance_othmaint -25.000000 25.000000 0.0 0 \n", + "coef_util_distance_school -25.000000 25.000000 0.0 0 \n", + "coef_util_distance_shopping -25.000000 25.000000 0.0 0 \n", + "coef_util_distance_social -25.000000 25.000000 0.0 0 \n", + "coef_util_distance_univ -25.000000 25.000000 0.0 0 \n", + "coef_util_distance_work_inbound -25.000000 25.000000 0.0 0 \n", + "coef_util_distance_work_outbound -25.000000 25.000000 0.0 0 \n", + "eatout_HEREMPN -6.000000 6.000000 0.0 0 \n", + "eatout_RETEMPN -0.298406 -0.298406 0.0 1 \n", + "escort_AGE0519 -6.000000 6.000000 0.0 0 \n", + "escort_HEREMPN -6.000000 6.000000 0.0 0 \n", + "escort_HSENROLL -6.000000 6.000000 0.0 0 \n", + "escort_RETEMPN -6.000000 6.000000 0.0 0 \n", + "escort_TOTHH -6.907755 -6.907755 0.0 1 \n", + "othdiscr_HEREMPN -6.000000 6.000000 0.0 0 \n", + "othdiscr_HSENROLL -6.000000 6.000000 0.0 0 \n", + "othdiscr_OTHEMPN -6.000000 6.000000 0.0 0 \n", + "othdiscr_RETEMPN -6.000000 6.000000 0.0 0 \n", + "othdiscr_TOTHH -1.378326 -1.378326 0.0 1 \n", + "othmaint_HEREMPN -6.000000 6.000000 0.0 0 \n", + "othmaint_RETEMPN -6.000000 6.000000 0.0 0 \n", + "othmaint_TOTHH -6.907755 -6.907755 0.0 1 \n", + "shopping_RETEMPN -6.000000 6.000000 0.0 0 \n", + "shopping_TOTHH -6.907755 -6.907755 0.0 1 \n", + "social_HEREMPN -6.000000 6.000000 0.0 0 \n", + "social_RETEMPN -6.000000 6.000000 0.0 0 \n", + "social_TOTHH -6.907755 -6.907755 0.0 1 \n", + "univ_COLLFTE -6.000000 6.000000 0.0 0 \n", + "univ_COLLPTE -6.000000 6.000000 0.0 0 \n", + "univ_TOTHH -6.907755 -6.907755 0.0 1 \n", + "work_AGREMPN -6.000000 6.000000 0.0 0 \n", + "work_FPSEMPN -6.000000 6.000000 0.0 0 \n", + "work_HEREMPN -6.000000 6.000000 0.0 0 \n", + "work_MWTEMPN -6.000000 6.000000 0.0 0 \n", + "work_OTHEMPN -6.000000 6.000000 0.0 0 \n", + "work_RETEMPN 0.000000 0.000000 0.0 1 " ] }, "metadata": {}, @@ -2803,12 +2819,8 @@ "name": "stderr", "output_type": "stream", "text": [ - ":1: PossibleOverspecification: WARNING: Model is possibly over-specified (hessian is nearly singular).\n", - " model.estimate(method='SLSQP', options={'maxiter':1000})\n", - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/larch/larch/linalg/__init__.py:18: UserWarning: minimum eig 8.29804005517378e-15 in general_inverse\n", - " warnings.warn(f\"minimum eig {min_eig} in general_inverse\")\n", - ":1: RuntimeWarning: invalid value encountered in sqrt\n", - " model.estimate(method='SLSQP', options={'maxiter':1000})\n" + "/Users/jpn/Git/est-mode/larch/src/larch/model/jaxmodel.py:1156: PossibleOverspecification: Model is possibly over-specified (hessian is nearly singular).\n", + " self.calculate_parameter_covariance()\n" ] }, { @@ -2828,11 +2840,11 @@ " \n", " \n", " coef_distance_joint\n", - " -0.376392\n", + " -0.222590\n", " \n", " \n", " coef_mode_choice_logsum\n", - " 0.163028\n", + " 0.908189\n", " \n", " \n", " coef_one\n", @@ -2840,15 +2852,15 @@ " \n", " \n", " coef_prox_dest_outbound_work\n", - " -0.359504\n", + " -0.278949\n", " \n", " \n", " coef_prox_home_inbound_work\n", - " -0.174104\n", + " -0.121975\n", " \n", " \n", " coef_prox_home_outbound_work\n", - " -0.522711\n", + " -0.419012\n", " \n", " \n", " coef_util_distance_atwork\n", @@ -2856,19 +2868,19 @@ " \n", " \n", " coef_util_distance_eatout\n", - " -0.366193\n", + " -0.219723\n", " \n", " \n", " coef_util_distance_escort\n", - " -0.337785\n", + " -0.235858\n", " \n", " \n", " coef_util_distance_othdiscr\n", - " -0.408787\n", + " -0.241573\n", " \n", " \n", " coef_util_distance_othmaint\n", - " -0.257971\n", + " -0.177610\n", " \n", " \n", " coef_util_distance_school\n", @@ -2876,27 +2888,27 @@ " \n", " \n", " coef_util_distance_shopping\n", - " -0.390483\n", + " -0.227090\n", " \n", " \n", " coef_util_distance_social\n", - " -0.338764\n", + " -0.227558\n", " \n", " \n", " coef_util_distance_univ\n", - " -0.186380\n", + " -0.139388\n", " \n", " \n", " coef_util_distance_work_inbound\n", - " -0.094761\n", + " 0.089849\n", " \n", " \n", " coef_util_distance_work_outbound\n", - " -0.300511\n", + " -0.138174\n", " \n", " \n", " eatout_HEREMPN\n", - " -4.274182\n", + " -2.550718\n", " \n", " \n", " eatout_RETEMPN\n", @@ -2904,39 +2916,39 @@ " \n", " \n", " escort_AGE0519\n", - " -1.513508\n", + " -0.039579\n", " \n", " \n", " escort_HEREMPN\n", - " -6.000000\n", + " -2.848681\n", " \n", " \n", " escort_HSENROLL\n", - " -3.172185\n", + " -2.260284\n", " \n", " \n", " escort_RETEMPN\n", - " -2.099140\n", + " -0.886457\n", " \n", " \n", " escort_TOTHH\n", - " -6.000000\n", + " -6.907755\n", " \n", " \n", " othdiscr_HEREMPN\n", - " -6.000000\n", + " -4.394168\n", " \n", " \n", " othdiscr_HSENROLL\n", - " -6.000000\n", + " -3.310820\n", " \n", " \n", " othdiscr_OTHEMPN\n", - " -4.741924\n", + " -2.825965\n", " \n", " \n", " othdiscr_RETEMPN\n", - " -0.420810\n", + " -2.884521\n", " \n", " \n", " othdiscr_TOTHH\n", @@ -2944,15 +2956,15 @@ " \n", " \n", " othmaint_HEREMPN\n", - " -6.000000\n", + " -1.693356\n", " \n", " \n", " othmaint_RETEMPN\n", - " -4.468097\n", + " -0.351270\n", " \n", " \n", " othmaint_TOTHH\n", - " -6.000000\n", + " -6.907755\n", " \n", " \n", " shopping_RETEMPN\n", @@ -2960,19 +2972,19 @@ " \n", " \n", " shopping_TOTHH\n", - " -6.000000\n", + " -6.907755\n", " \n", " \n", " social_HEREMPN\n", - " -6.000000\n", + " -1.516222\n", " \n", " \n", " social_RETEMPN\n", - " -3.463457\n", + " -0.098839\n", " \n", " \n", " social_TOTHH\n", - " -6.000000\n", + " -6.907755\n", " \n", " \n", " univ_COLLFTE\n", @@ -2984,11 +2996,11 @@ " \n", " \n", " univ_TOTHH\n", - " -6.000000\n", + " -6.907755\n", " \n", " \n", " work_AGREMPN\n", - " 1.145159\n", + " 0.122431\n", " \n", " \n", " work_FPSEMPN\n", @@ -2996,22 +3008,22 @@ " \n", " \n", " work_HEREMPN\n", - " -4.551520\n", + " -1.959508\n", " \n", " \n", " work_MWTEMPN\n", - " -6.000000\n", + " -5.322959\n", " \n", " \n", " work_OTHEMPN\n", - " -5.205310\n", + " -2.512682\n", " \n", " \n", " work_RETEMPN\n", " 0.000000\n", " \n", " \n", - "loglike-12569.486099970745d_loglike\n", + "
logloss2.543504818049292d_logloss\n", " \n", " \n", " \n", @@ -3025,11 +3037,11 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3037,15 +3049,15 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3053,19 +3065,19 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3073,27 +3085,27 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3101,19 +3113,19 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3121,19 +3133,19 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3141,11 +3153,11 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3153,7 +3165,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3161,11 +3173,11 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3173,11 +3185,11 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3185,140 +3197,140 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - "
coef_distance_joint-0.0015450.000054
coef_mode_choice_logsum-0.0371690.000028
coef_one
coef_prox_dest_outbound_work-0.004856-0.000016
coef_prox_home_inbound_work-0.0006900.000044
coef_prox_home_outbound_work0.006258-0.000010
coef_util_distance_atwork
coef_util_distance_eatout0.0009010.000017
coef_util_distance_escort0.0016000.000004
coef_util_distance_othdiscr-0.002904-0.000030
coef_util_distance_othmaint0.002059-0.000009
coef_util_distance_school
coef_util_distance_shopping-0.0016370.000006
coef_util_distance_social-0.000562-0.000076
coef_util_distance_univ-0.0014910.000026
coef_util_distance_work_inbound0.001402-0.000026
coef_util_distance_work_outbound0.0099840.000069
eatout_HEREMPN0.000060-0.000049
eatout_RETEMPN
escort_AGE0519-0.000103-0.000144
escort_HEREMPN-0.2823510.000048
escort_HSENROLL-0.0001000.000044
escort_RETEMPN0.0002190.000042
escort_TOTHH
othdiscr_HEREMPN-0.0837150.000056
othdiscr_HSENROLL-0.013300-0.000088
othdiscr_OTHEMPN-0.0001250.000216
othdiscr_RETEMPN-0.000008-0.000059
othdiscr_TOTHH
othmaint_HEREMPN-14.917882-0.000220
othmaint_RETEMPN0.000013-0.000006
othmaint_TOTHH
shopping_RETEMPN-6.303186-0.005801
shopping_TOTHH
social_HEREMPN-2.2981350.000007
social_RETEMPN-0.000206-0.000072
social_TOTHH
univ_COLLFTE-12.165359-0.003131
univ_COLLPTE-12.781555-0.002441
univ_TOTHH
work_AGREMPN0.000453-0.000051
work_FPSEMPN-0.905637-0.000190
work_HEREMPN0.0002220.000081
work_MWTEMPN-0.021745-0.000196
work_OTHEMPN-0.000419-0.000045
work_RETEMPN0.000000
nit87nfev147njev87status0message'Optimization terminated successfully'successTrueelapsed_time0:00:21.469689method'SLSQP'n_cases2490iteration_number87logloss5.04798638553042" + "nit87nfev92njev87status0message'Optimization terminated successfully'successTrueelapsed_time0:00:19.360953method'SLSQP'n_cases31028iteration_number87loglike-78919.86749443343" ], "text/plain": [ "┣ x: coef_UNAVAILABLE -999.000000\n", - "┃ coef_distance_joint -0.376392\n", - "┃ coef_mode_choice_logsum 0.163028\n", + "┃ coef_distance_joint -0.222590\n", + "┃ coef_mode_choice_logsum 0.908189\n", "┃ coef_one 1.000000\n", - "┃ coef_prox_dest_outbound_work -0.359504\n", - "┃ coef_prox_home_inbound_work -0.174104\n", - "┃ coef_prox_home_outbound_work -0.522711\n", + "┃ coef_prox_dest_outbound_work -0.278949\n", + "┃ coef_prox_home_inbound_work -0.121975\n", + "┃ coef_prox_home_outbound_work -0.419012\n", "┃ coef_util_distance_atwork -0.122335\n", - "┃ coef_util_distance_eatout -0.366193\n", - "┃ coef_util_distance_escort -0.337785\n", - "┃ coef_util_distance_othdiscr -0.408787\n", - "┃ coef_util_distance_othmaint -0.257971\n", + "┃ coef_util_distance_eatout -0.219723\n", + "┃ coef_util_distance_escort -0.235858\n", + "┃ coef_util_distance_othdiscr -0.241573\n", + "┃ coef_util_distance_othmaint -0.177610\n", "┃ coef_util_distance_school -0.105600\n", - "┃ coef_util_distance_shopping -0.390483\n", - "┃ coef_util_distance_social -0.338764\n", - "┃ coef_util_distance_univ -0.186380\n", - "┃ coef_util_distance_work_inbound -0.094761\n", - "┃ coef_util_distance_work_outbound -0.300511\n", - "┃ eatout_HEREMPN -4.274182\n", + "┃ coef_util_distance_shopping -0.227090\n", + "┃ coef_util_distance_social -0.227558\n", + "┃ coef_util_distance_univ -0.139388\n", + "┃ coef_util_distance_work_inbound 0.089849\n", + "┃ coef_util_distance_work_outbound -0.138174\n", + "┃ eatout_HEREMPN -2.550718\n", "┃ eatout_RETEMPN -0.298406\n", - "┃ escort_AGE0519 -1.513508\n", - "┃ escort_HEREMPN -6.000000\n", - "┃ escort_HSENROLL -3.172185\n", - "┃ escort_RETEMPN -2.099140\n", - "┃ escort_TOTHH -6.000000\n", - "┃ othdiscr_HEREMPN -6.000000\n", - "┃ othdiscr_HSENROLL -6.000000\n", - "┃ othdiscr_OTHEMPN -4.741924\n", - "┃ othdiscr_RETEMPN -0.420810\n", + "┃ escort_AGE0519 -0.039579\n", + "┃ escort_HEREMPN -2.848681\n", + "┃ escort_HSENROLL -2.260284\n", + "┃ escort_RETEMPN -0.886457\n", + "┃ escort_TOTHH -6.907755\n", + "┃ othdiscr_HEREMPN -4.394168\n", + "┃ othdiscr_HSENROLL -3.310820\n", + "┃ othdiscr_OTHEMPN -2.825965\n", + "┃ othdiscr_RETEMPN -2.884521\n", "┃ othdiscr_TOTHH -1.378326\n", - "┃ othmaint_HEREMPN -6.000000\n", - "┃ othmaint_RETEMPN -4.468097\n", - "┃ othmaint_TOTHH -6.000000\n", + "┃ othmaint_HEREMPN -1.693356\n", + "┃ othmaint_RETEMPN -0.351270\n", + "┃ othmaint_TOTHH -6.907755\n", "┃ shopping_RETEMPN -6.000000\n", - "┃ shopping_TOTHH -6.000000\n", - "┃ social_HEREMPN -6.000000\n", - "┃ social_RETEMPN -3.463457\n", - "┃ social_TOTHH -6.000000\n", + "┃ shopping_TOTHH -6.907755\n", + "┃ social_HEREMPN -1.516222\n", + "┃ social_RETEMPN -0.098839\n", + "┃ social_TOTHH -6.907755\n", "┃ univ_COLLFTE -6.000000\n", "┃ univ_COLLPTE -6.000000\n", - "┃ univ_TOTHH -6.000000\n", - "┃ work_AGREMPN 1.145159\n", + "┃ univ_TOTHH -6.907755\n", + "┃ work_AGREMPN 0.122431\n", "┃ work_FPSEMPN -6.000000\n", - "┃ work_HEREMPN -4.551520\n", - "┃ work_MWTEMPN -6.000000\n", - "┃ work_OTHEMPN -5.205310\n", + "┃ work_HEREMPN -1.959508\n", + "┃ work_MWTEMPN -5.322959\n", + "┃ work_OTHEMPN -2.512682\n", "┃ work_RETEMPN 0.000000\n", "┃ dtype: float64\n", - "┣ loglike: -12569.486099970745\n", - "┣ d_loglike: coef_UNAVAILABLE 0.000000\n", - "┃ coef_distance_joint -0.001545\n", - "┃ coef_mode_choice_logsum -0.037169\n", - "┃ coef_one 0.000000\n", - "┃ coef_prox_dest_outbound_work -0.004856\n", - "┃ coef_prox_home_inbound_work -0.000690\n", - "┃ coef_prox_home_outbound_work 0.006258\n", - "┃ coef_util_distance_atwork 0.000000\n", - "┃ coef_util_distance_eatout 0.000901\n", - "┃ coef_util_distance_escort 0.001600\n", - "┃ coef_util_distance_othdiscr -0.002904\n", - "┃ coef_util_distance_othmaint 0.002059\n", - "┃ coef_util_distance_school 0.000000\n", - "┃ coef_util_distance_shopping -0.001637\n", - "┃ coef_util_distance_social -0.000562\n", - "┃ coef_util_distance_univ -0.001491\n", - "┃ coef_util_distance_work_inbound 0.001402\n", - "┃ coef_util_distance_work_outbound 0.009984\n", - "┃ eatout_HEREMPN 0.000060\n", - "┃ eatout_RETEMPN 0.000000\n", - "┃ escort_AGE0519 -0.000103\n", - "┃ escort_HEREMPN -0.282351\n", - "┃ escort_HSENROLL -0.000100\n", - "┃ escort_RETEMPN 0.000219\n", - "┃ escort_TOTHH 0.000000\n", - "┃ othdiscr_HEREMPN -0.083715\n", - "┃ othdiscr_HSENROLL -0.013300\n", - "┃ othdiscr_OTHEMPN -0.000125\n", - "┃ othdiscr_RETEMPN -0.000008\n", - "┃ othdiscr_TOTHH 0.000000\n", - "┃ othmaint_HEREMPN -14.917882\n", - "┃ othmaint_RETEMPN 0.000013\n", - "┃ othmaint_TOTHH 0.000000\n", - "┃ shopping_RETEMPN -6.303186\n", - "┃ shopping_TOTHH 0.000000\n", - "┃ social_HEREMPN -2.298135\n", - "┃ social_RETEMPN -0.000206\n", - "┃ social_TOTHH 0.000000\n", - "┃ univ_COLLFTE -12.165359\n", - "┃ univ_COLLPTE -12.781555\n", - "┃ univ_TOTHH 0.000000\n", - "┃ work_AGREMPN 0.000453\n", - "┃ work_FPSEMPN -0.905637\n", - "┃ work_HEREMPN 0.000222\n", - "┃ work_MWTEMPN -0.021745\n", - "┃ work_OTHEMPN -0.000419\n", - "┃ work_RETEMPN 0.000000\n", + "┣ logloss: 2.543504818049292\n", + "┣ d_logloss: coef_UNAVAILABLE 0.000000\n", + "┃ coef_distance_joint 0.000054\n", + "┃ coef_mode_choice_logsum 0.000028\n", + "┃ coef_one 0.000000\n", + "┃ coef_prox_dest_outbound_work -0.000016\n", + "┃ coef_prox_home_inbound_work 0.000044\n", + "┃ coef_prox_home_outbound_work -0.000010\n", + "┃ coef_util_distance_atwork 0.000000\n", + "┃ coef_util_distance_eatout 0.000017\n", + "┃ coef_util_distance_escort 0.000004\n", + "┃ coef_util_distance_othdiscr -0.000030\n", + "┃ coef_util_distance_othmaint -0.000009\n", + "┃ coef_util_distance_school 0.000000\n", + "┃ coef_util_distance_shopping 0.000006\n", + "┃ coef_util_distance_social -0.000076\n", + "┃ coef_util_distance_univ 0.000026\n", + "┃ coef_util_distance_work_inbound -0.000026\n", + "┃ coef_util_distance_work_outbound 0.000069\n", + "┃ eatout_HEREMPN -0.000049\n", + "┃ eatout_RETEMPN 0.000000\n", + "┃ escort_AGE0519 -0.000144\n", + "┃ escort_HEREMPN 0.000048\n", + "┃ escort_HSENROLL 0.000044\n", + "┃ escort_RETEMPN 0.000042\n", + "┃ escort_TOTHH 0.000000\n", + "┃ othdiscr_HEREMPN 0.000056\n", + "┃ othdiscr_HSENROLL -0.000088\n", + "┃ othdiscr_OTHEMPN 0.000216\n", + "┃ othdiscr_RETEMPN -0.000059\n", + "┃ othdiscr_TOTHH 0.000000\n", + "┃ othmaint_HEREMPN -0.000220\n", + "┃ othmaint_RETEMPN -0.000006\n", + "┃ othmaint_TOTHH 0.000000\n", + "┃ shopping_RETEMPN -0.005801\n", + "┃ shopping_TOTHH 0.000000\n", + "┃ social_HEREMPN 0.000007\n", + "┃ social_RETEMPN -0.000072\n", + "┃ social_TOTHH 0.000000\n", + "┃ univ_COLLFTE -0.003131\n", + "┃ univ_COLLPTE -0.002441\n", + "┃ univ_TOTHH 0.000000\n", + "┃ work_AGREMPN -0.000051\n", + "┃ work_FPSEMPN -0.000190\n", + "┃ work_HEREMPN 0.000081\n", + "┃ work_MWTEMPN -0.000196\n", + "┃ work_OTHEMPN -0.000045\n", + "┃ work_RETEMPN 0.000000\n", "┃ dtype: float64\n", "┣ nit: 87\n", - "┣ nfev: 147\n", + "┣ nfev: 92\n", "┣ njev: 87\n", "┣ status: 0\n", "┣ message: 'Optimization terminated successfully'\n", "┣ success: True\n", - "┣ elapsed_time: datetime.timedelta(seconds=21, microseconds=469689)\n", + "┣ elapsed_time: datetime.timedelta(seconds=19, microseconds=360953)\n", "┣ method: 'SLSQP'\n", - "┣ n_cases: 2490\n", + "┣ n_cases: 31028\n", "┣ iteration_number: 87\n", - "┣ logloss: 5.04798638553042" + "┣ loglike: -78919.86749443343" ] }, "execution_count": 11, @@ -3345,490 +3357,469 @@ { "data": { "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Value Std Err t Stat Signif Like Ratio Null Value Constrained
coef_UNAVAILABLE-999. NA NA NA 0.00fixed value
coef_distance_joint-0.376 0.0762-4.94*** NA 0.00
coef_mode_choice_logsum 0.163 0.00797 20.46*** NA 0.00
coef_one 1.00 NA NA NA 0.00fixed value
coef_prox_dest_outbound_work-0.360 441.-0.00 NA 0.00
coef_prox_home_inbound_work-0.174 0.0368-4.73*** NA 0.00
coef_prox_home_outbound_work-0.523 441.-0.00 NA 0.00
coef_util_distance_atwork-0.122 2.43e-06-BIG*** NA 0.00
coef_util_distance_eatout-0.366 0.0630-5.81*** NA 0.00
coef_util_distance_escort-0.338 0.0329-10.28*** NA 0.00
coef_util_distance_othdiscr-0.409 0.0322-12.71*** NA 0.00
coef_util_distance_othmaint-0.258 0.0368-7.02*** NA 0.00
coef_util_distance_school-0.106 4.08e-06-BIG*** NA 0.00
coef_util_distance_shopping-0.390 0.0251-15.56*** NA 0.00
coef_util_distance_social-0.339 0.0631-5.36*** NA 0.00
coef_util_distance_univ-0.186 0.0428-4.35*** NA 0.00
coef_util_distance_work_inbound-0.0948 441.-0.00 NA 0.00
coef_util_distance_work_outbound-0.301 0.0272-11.05*** NA 0.00
eatout_HEREMPN-4.27 1.02-4.19*** NA 0.00
eatout_RETEMPN-0.298 NA NA NA 0.00fixed value
escort_AGE0519-1.51 2.88-0.53 NA 0.00
escort_HEREMPN-6.00 NA NA[***] 93.05 0.00escort_HEREMPN ≥ -6.0
escort_HSENROLL-3.17 2.87-1.10 NA 0.00
escort_RETEMPN-2.10 3.12-0.67 NA 0.00
escort_TOTHH-6.91 NA NA NA 0.00fixed value
othdiscr_HEREMPN-6.00 NA NA[***] 63.28 0.00othdiscr_HEREMPN ≥ -6.0
othdiscr_HSENROLL-6.00 NA NA[***] 23.13 0.00othdiscr_HSENROLL ≥ -6.0
othdiscr_OTHEMPN-4.74 2.07-2.29* NA 0.00
othdiscr_RETEMPN-0.421 0.383-1.10 NA 0.00
othdiscr_TOTHH-1.38 NA NA NA 0.00fixed value
othmaint_HEREMPN-6.00 NA NA[***] 93.87 0.00othmaint_HEREMPN ≥ -6.0
othmaint_RETEMPN-4.47 0.487-9.18*** NA 0.00
othmaint_TOTHH-6.91 NA NA NA 0.00fixed value
shopping_RETEMPN-6.00 NA NA[***] 107.89 0.00shopping_RETEMPN ≥ -6.0
shopping_TOTHH-6.91 NA NA NA 0.00fixed value
social_HEREMPN-6.00 NA NA[***] 33.82 0.00social_HEREMPN ≥ -6.0
social_RETEMPN-3.46 0.666-5.20*** NA 0.00
social_TOTHH-6.91 NA NA NA 0.00fixed value
univ_COLLFTE-6.00 NA NA[***] 379.06 0.00univ_COLLFTE ≥ -6.0
univ_COLLPTE-6.00 NA NA[***] 390.32 0.00univ_COLLPTE ≥ -6.0
univ_TOTHH-6.91 NA NA NA 0.00fixed value
work_AGREMPN 1.15 0.433 2.65** NA 0.00
work_FPSEMPN-6.00 NA NA[***] 647.25 0.00work_FPSEMPN ≥ -6.0
work_HEREMPN-4.55 0.535-8.51*** NA 0.00
work_MWTEMPN-6.00 NA NA[***] 106.49 0.00work_MWTEMPN ≥ -6.0
work_OTHEMPN-5.21 1.18-4.42*** NA 0.00
work_RETEMPN 0.00 NA NA NA 0.00fixed value
" + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ValueStd Errt StatSignifNull ValueConstrained
Parameter      
coef_UNAVAILABLE-999. 0.00 NA 0.00fixed value
coef_distance_joint-0.223 0.0134-16.56*** 0.00
coef_mode_choice_logsum 0.908 0.0111 82.17*** 0.00
coef_one 1.00 0.00 NA 0.00fixed value
coef_prox_dest_outbound_work-0.279 158.-0.00 0.00
coef_prox_home_inbound_work-0.122 0.00393-31.03*** 0.00
coef_prox_home_outbound_work-0.419 158.-0.00 0.00
coef_util_distance_atwork-0.122 NA NA 0.00
coef_util_distance_eatout-0.220 0.0130-16.94*** 0.00
coef_util_distance_escort-0.236 0.00671-35.15*** 0.00
coef_util_distance_othdiscr-0.242 0.00636-37.96*** 0.00
coef_util_distance_othmaint-0.178 0.00584-30.41*** 0.00
coef_util_distance_school-0.106 NA NA 0.00
coef_util_distance_shopping-0.227 0.00490-46.30*** 0.00
coef_util_distance_social-0.228 0.0116-19.56*** 0.00
coef_util_distance_univ-0.139 0.00887-15.71*** 0.00
coef_util_distance_work_inbound 0.0898 158. 0.00 0.00
coef_util_distance_work_outbound-0.138 0.00378-36.55*** 0.00
eatout_HEREMPN-2.55 0.279-9.16*** 0.00
eatout_RETEMPN-0.298 0.00 NA 0.00fixed value
escort_AGE0519-0.0396 NA NA 0.00
escort_HEREMPN-2.85 NA NA 0.00
escort_HSENROLL-2.26 NA NA 0.00
escort_RETEMPN-0.886 NA NA 0.00
escort_TOTHH-6.91 0.00 NA 0.00fixed value
othdiscr_HEREMPN-4.39 0.449-9.78*** 0.00
othdiscr_HSENROLL-3.31 0.341-9.70*** 0.00
othdiscr_OTHEMPN-2.83 0.181-15.63*** 0.00
othdiscr_RETEMPN-2.88 0.379-7.60*** 0.00
othdiscr_TOTHH-1.38 0.00 NA 0.00fixed value
othmaint_HEREMPN-1.69 NA NA 0.00
othmaint_RETEMPN-0.351 NA NA 0.00
othmaint_TOTHH-6.91 0.00 NA 0.00fixed value
shopping_RETEMPN-6.00 0.00 NA 0.00shopping_RETEMPN ≥ -6.0
shopping_TOTHH-6.91 0.00 NA 0.00fixed value
social_HEREMPN-1.52 NA NA 0.00
social_RETEMPN-0.0988 NA NA 0.00
social_TOTHH-6.91 0.00 NA 0.00fixed value
univ_COLLFTE-6.00 0.00 NA 0.00univ_COLLFTE ≥ -6.0
univ_COLLPTE-6.00 0.00 NA 0.00univ_COLLPTE ≥ -6.0
univ_TOTHH-6.91 0.00 NA 0.00fixed value
work_AGREMPN 0.122 0.169 0.73 0.00
work_FPSEMPN-6.00 5.27e-09-BIG*** 0.00work_FPSEMPN ≥ -6.0
work_HEREMPN-1.96 0.0705-27.78*** 0.00
work_MWTEMPN-5.32 0.384-13.86*** 0.00
work_OTHEMPN-2.51 0.0972-25.86*** 0.00
work_RETEMPN 0.00 0.00 NA 0.00fixed value
\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 12, @@ -4157,12 +4148,12 @@ " work\n", " trip\n", " 0.000000\n", - " 0.240157\n", - " 0.000595\n", - " 0.002534\n", - " 0.001318\n", - " 0.754800\n", - " 0.000595\n", + " 0.423805\n", + " 0.001051\n", + " 0.059726\n", + " 0.034350\n", + " 0.479002\n", + " 0.002067\n", " 0.000000\n", " 0.000000\n", " 0.000000\n", @@ -4172,15 +4163,15 @@ " 15\n", " escort\n", " trip\n", - " 0.002577\n", - " 0.315809\n", + " 0.000651\n", + " 0.268207\n", " 0.000000\n", - " 0.006387\n", + " 0.037695\n", " 0.000000\n", " 0.000000\n", " 0.000000\n", - " 0.567232\n", - " 0.107996\n", + " 0.625554\n", + " 0.067893\n", " 0.000000\n", " 0.000000\n", " \n", @@ -4205,9 +4196,9 @@ " eatout\n", " trip\n", " 0.000000\n", - " 0.981581\n", + " 0.904850\n", " 0.000000\n", - " 0.018419\n", + " 0.095150\n", " 0.000000\n", " 0.000000\n", " 0.000000\n", @@ -4220,10 +4211,10 @@ " 18\n", " othmaint\n", " trip\n", - " 0.066899\n", - " 0.767274\n", + " 0.001125\n", + " 0.791941\n", " 0.000000\n", - " 0.165826\n", + " 0.206934\n", " 0.000000\n", " 0.000000\n", " 0.000000\n", @@ -4236,10 +4227,10 @@ " 19\n", " social\n", " trip\n", - " 0.028736\n", - " 0.900036\n", + " 0.000888\n", + " 0.804213\n", " 0.000000\n", - " 0.071228\n", + " 0.194899\n", " 0.000000\n", " 0.000000\n", " 0.000000\n", @@ -4252,15 +4243,15 @@ " 20\n", " othdiscr\n", " trip\n", - " 0.273261\n", - " 0.711905\n", + " 0.605815\n", + " 0.134341\n", " 0.000000\n", - " 0.002688\n", - " 0.009458\n", + " 0.029688\n", + " 0.142442\n", " 0.000000\n", " 0.000000\n", " 0.000000\n", - " 0.002688\n", + " 0.087714\n", " 0.000000\n", " 0.000000\n", " \n", @@ -4300,13 +4291,13 @@ "11 social non_mandatory 0.000000 0.522000 0.000000 0.478000 \n", "12 othdiscr non_mandatory 0.252252 0.212212 0.000000 0.272272 \n", "13 atwork atwork 0.000000 0.742000 0.000000 0.258000 \n", - "14 work trip 0.000000 0.240157 0.000595 0.002534 \n", - "15 escort trip 0.002577 0.315809 0.000000 0.006387 \n", + "14 work trip 0.000000 0.423805 0.001051 0.059726 \n", + "15 escort trip 0.000651 0.268207 0.000000 0.037695 \n", "16 shopping trip 0.287459 0.712541 0.000000 0.000000 \n", - "17 eatout trip 0.000000 0.981581 0.000000 0.018419 \n", - "18 othmaint trip 0.066899 0.767274 0.000000 0.165826 \n", - "19 social trip 0.028736 0.900036 0.000000 0.071228 \n", - "20 othdiscr trip 0.273261 0.711905 0.000000 0.002688 \n", + "17 eatout trip 0.000000 0.904850 0.000000 0.095150 \n", + "18 othmaint trip 0.001125 0.791941 0.000000 0.206934 \n", + "19 social trip 0.000888 0.804213 0.000000 0.194899 \n", + "20 othdiscr trip 0.605815 0.134341 0.000000 0.029688 \n", "21 univ trip 0.167856 0.000000 0.000000 0.000000 \n", "\n", " OTHEMPN AGREMPN MWTEMPN AGE0519 HSENROLL COLLFTE COLLPTE \n", @@ -4324,13 +4315,13 @@ "11 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n", "12 0.165165 0.000000 0.000000 0.000000 0.098098 0.000000 0.000000 \n", "13 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n", - "14 0.001318 0.754800 0.000595 0.000000 0.000000 0.000000 0.000000 \n", - "15 0.000000 0.000000 0.000000 0.567232 0.107996 0.000000 0.000000 \n", + "14 0.034350 0.479002 0.002067 0.000000 0.000000 0.000000 0.000000 \n", + "15 0.000000 0.000000 0.000000 0.625554 0.067893 0.000000 0.000000 \n", "16 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n", "17 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n", "18 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n", "19 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n", - "20 0.009458 0.000000 0.000000 0.000000 0.002688 0.000000 0.000000 \n", + "20 0.142442 0.000000 0.000000 0.000000 0.087714 0.000000 0.000000 \n", "21 0.000000 0.000000 0.000000 0.000000 0.000000 0.416072 0.416072 " ] }, @@ -4424,31 +4415,31 @@ " \n", " 2\n", " coef_mode_choice_logsum\n", - " 0.163028\n", + " 0.908189\n", " F\n", " \n", " \n", " 3\n", " coef_distance_joint\n", - " -0.376392\n", + " -0.222590\n", " F\n", " \n", " \n", " 4\n", " coef_util_distance_work_outbound\n", - " -0.300511\n", + " -0.138174\n", " F\n", " \n", " \n", " 5\n", " coef_util_distance_work_inbound\n", - " -0.094761\n", + " 0.089849\n", " F\n", " \n", " \n", " 6\n", " coef_util_distance_univ\n", - " -0.186380\n", + " -0.139388\n", " F\n", " \n", " \n", @@ -4460,37 +4451,37 @@ " \n", " 8\n", " coef_util_distance_escort\n", - " -0.337785\n", + " -0.235858\n", " F\n", " \n", " \n", " 9\n", " coef_util_distance_shopping\n", - " -0.390483\n", + " -0.227090\n", " F\n", " \n", " \n", " 10\n", " coef_util_distance_eatout\n", - " -0.366193\n", + " -0.219723\n", " F\n", " \n", " \n", " 11\n", " coef_util_distance_othmaint\n", - " -0.257971\n", + " -0.177610\n", " F\n", " \n", " \n", " 12\n", " coef_util_distance_social\n", - " -0.338764\n", + " -0.227558\n", " F\n", " \n", " \n", " 13\n", " coef_util_distance_othdiscr\n", - " -0.408787\n", + " -0.241573\n", " F\n", " \n", " \n", @@ -4502,19 +4493,19 @@ " \n", " 15\n", " coef_prox_home_outbound_work\n", - " -0.522711\n", + " -0.419012\n", " F\n", " \n", " \n", " 16\n", " coef_prox_home_inbound_work\n", - " -0.174104\n", + " -0.121975\n", " F\n", " \n", " \n", " 17\n", " coef_prox_dest_outbound_work\n", - " -0.359504\n", + " -0.278949\n", " F\n", " \n", " \n", @@ -4525,22 +4516,22 @@ " coefficient_name value constrain\n", "0 coef_UNAVAILABLE -999.000000 T\n", "1 coef_one 1.000000 T\n", - "2 coef_mode_choice_logsum 0.163028 F\n", - "3 coef_distance_joint -0.376392 F\n", - "4 coef_util_distance_work_outbound -0.300511 F\n", - "5 coef_util_distance_work_inbound -0.094761 F\n", - "6 coef_util_distance_univ -0.186380 F\n", + "2 coef_mode_choice_logsum 0.908189 F\n", + "3 coef_distance_joint -0.222590 F\n", + "4 coef_util_distance_work_outbound -0.138174 F\n", + "5 coef_util_distance_work_inbound 0.089849 F\n", + "6 coef_util_distance_univ -0.139388 F\n", "7 coef_util_distance_school -0.105600 F\n", - "8 coef_util_distance_escort -0.337785 F\n", - "9 coef_util_distance_shopping -0.390483 F\n", - "10 coef_util_distance_eatout -0.366193 F\n", - "11 coef_util_distance_othmaint -0.257971 F\n", - "12 coef_util_distance_social -0.338764 F\n", - "13 coef_util_distance_othdiscr -0.408787 F\n", + "8 coef_util_distance_escort -0.235858 F\n", + "9 coef_util_distance_shopping -0.227090 F\n", + "10 coef_util_distance_eatout -0.219723 F\n", + "11 coef_util_distance_othmaint -0.177610 F\n", + "12 coef_util_distance_social -0.227558 F\n", + "13 coef_util_distance_othdiscr -0.241573 F\n", "14 coef_util_distance_atwork -0.122335 F\n", - "15 coef_prox_home_outbound_work -0.522711 F\n", - "16 coef_prox_home_inbound_work -0.174104 F\n", - "17 coef_prox_dest_outbound_work -0.359504 F" + "15 coef_prox_home_outbound_work -0.419012 F\n", + "16 coef_prox_home_inbound_work -0.121975 F\n", + "17 coef_prox_dest_outbound_work -0.278949 F" ] }, "execution_count": 17, @@ -4839,12 +4830,12 @@ " work\n", " trip\n", " 0.000000\n", - " 0.240157\n", - " 0.000595\n", - " 0.002534\n", - " 0.001318\n", - " 0.754800\n", - " 0.000595\n", + " 0.423805\n", + " 0.001051\n", + " 0.059726\n", + " 0.034350\n", + " 0.479002\n", + " 0.002067\n", " 0.000000\n", " 0.000000\n", " 0.000000\n", @@ -4855,15 +4846,15 @@ " 15\n", " escort\n", " trip\n", - " 0.002577\n", - " 0.315809\n", + " 0.000651\n", + " 0.268207\n", " 0.000000\n", - " 0.006387\n", + " 0.037695\n", " 0.000000\n", " 0.000000\n", " 0.000000\n", - " 0.567232\n", - " 0.107996\n", + " 0.625554\n", + " 0.067893\n", " 0.000000\n", " 0.000000\n", " \n", @@ -4890,9 +4881,9 @@ " eatout\n", " trip\n", " 0.000000\n", - " 0.981581\n", + " 0.904850\n", " 0.000000\n", - " 0.018419\n", + " 0.095150\n", " 0.000000\n", " 0.000000\n", " 0.000000\n", @@ -4906,10 +4897,10 @@ " 18\n", " othmaint\n", " trip\n", - " 0.066899\n", - " 0.767274\n", + " 0.001125\n", + " 0.791941\n", " 0.000000\n", - " 0.165826\n", + " 0.206934\n", " 0.000000\n", " 0.000000\n", " 0.000000\n", @@ -4923,10 +4914,10 @@ " 19\n", " social\n", " trip\n", - " 0.028736\n", - " 0.900036\n", + " 0.000888\n", + " 0.804213\n", " 0.000000\n", - " 0.071228\n", + " 0.194899\n", " 0.000000\n", " 0.000000\n", " 0.000000\n", @@ -4940,15 +4931,15 @@ " 20\n", " othdiscr\n", " trip\n", - " 0.273261\n", - " 0.711905\n", + " 0.605815\n", + " 0.134341\n", " 0.000000\n", - " 0.002688\n", - " 0.009458\n", + " 0.029688\n", + " 0.142442\n", " 0.000000\n", " 0.000000\n", " 0.000000\n", - " 0.002688\n", + " 0.087714\n", " 0.000000\n", " 0.000000\n", " \n", @@ -4989,13 +4980,13 @@ "11 11 social non_mandatory 0.000000 0.522000 0.000000 \n", "12 12 othdiscr non_mandatory 0.252252 0.212212 0.000000 \n", "13 13 atwork atwork 0.000000 0.742000 0.000000 \n", - "14 14 work trip 0.000000 0.240157 0.000595 \n", - "15 15 escort trip 0.002577 0.315809 0.000000 \n", + "14 14 work trip 0.000000 0.423805 0.001051 \n", + "15 15 escort trip 0.000651 0.268207 0.000000 \n", "16 16 shopping trip 0.287459 0.712541 0.000000 \n", - "17 17 eatout trip 0.000000 0.981581 0.000000 \n", - "18 18 othmaint trip 0.066899 0.767274 0.000000 \n", - "19 19 social trip 0.028736 0.900036 0.000000 \n", - "20 20 othdiscr trip 0.273261 0.711905 0.000000 \n", + "17 17 eatout trip 0.000000 0.904850 0.000000 \n", + "18 18 othmaint trip 0.001125 0.791941 0.000000 \n", + "19 19 social trip 0.000888 0.804213 0.000000 \n", + "20 20 othdiscr trip 0.605815 0.134341 0.000000 \n", "21 21 univ trip 0.167856 0.000000 0.000000 \n", "\n", " HEREMPN OTHEMPN AGREMPN MWTEMPN AGE0519 HSENROLL COLLFTE \\\n", @@ -5013,13 +5004,13 @@ "11 0.478000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n", "12 0.272272 0.165165 0.000000 0.000000 0.000000 0.098098 0.000000 \n", "13 0.258000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n", - "14 0.002534 0.001318 0.754800 0.000595 0.000000 0.000000 0.000000 \n", - "15 0.006387 0.000000 0.000000 0.000000 0.567232 0.107996 0.000000 \n", + "14 0.059726 0.034350 0.479002 0.002067 0.000000 0.000000 0.000000 \n", + "15 0.037695 0.000000 0.000000 0.000000 0.625554 0.067893 0.000000 \n", "16 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n", - "17 0.018419 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n", - "18 0.165826 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n", - "19 0.071228 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n", - "20 0.002688 0.009458 0.000000 0.000000 0.000000 0.002688 0.000000 \n", + "17 0.095150 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n", + "18 0.206934 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n", + "19 0.194899 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n", + "20 0.029688 0.142442 0.000000 0.000000 0.000000 0.087714 0.000000 \n", "21 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.416072 \n", "\n", " COLLPTE \n", @@ -5064,7 +5055,7 @@ "toc_visible": true }, "kernelspec": { - "display_name": "Python 3", + "display_name": "ESTER", "language": "python", "name": "python3" }, @@ -5078,7 +5069,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.10.15" }, "toc": { "base_numbering": 1, diff --git a/activitysim/examples/example_estimation/notebooks/23_trip_mode_choice.ipynb b/activitysim/examples/example_estimation/notebooks/23_trip_mode_choice.ipynb index acf84e274..a38eb9239 100644 --- a/activitysim/examples/example_estimation/notebooks/23_trip_mode_choice.ipynb +++ b/activitysim/examples/example_estimation/notebooks/23_trip_mode_choice.ipynb @@ -34,27 +34,74 @@ "id": "s53VwlPwtNnr", "outputId": "d1208b7a-c1f2-4b0b-c439-bf312fe12be0" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "JAX not found. Some functionality will be unavailable.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'larch': '6.0.32',\n", + " 'sharrow': '2.13.0',\n", + " 'numpy': '1.26.4',\n", + " 'pandas': '1.5.3',\n", + " 'xarray': '2024.3.0',\n", + " 'numba': '0.60.0'}" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "import os\n", - "import larch # !conda install larch -c conda-forge # for estimation\n", - "import pandas as pd" + "import larch as lx\n", + "import pandas as pd\n", + "\n", + "lx.versions()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We'll work in our `test` directory, where ActivitySim has saved the estimation data bundles." + "For this demo, we will assume that you have already run ActivitySim in estimation\n", + "mode, and saved the required estimation data bundles (EDB's) to disk. See\n", + "the [first notebook](./01_estimation_mode.ipynb) for details. The following module\n", + "will run a script to set everything up if the example data is not already available." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "EDB directory already populated.\n" + ] + }, + { + "data": { + "text/plain": [ + "PosixPath('test-estimation-data/activitysim-prototype-mtc-extended')" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "os.chdir('test')" + "from est_mode_setup import prepare\n", + "\n", + "prepare()" ] }, { @@ -70,11 +117,13 @@ "metadata": {}, "outputs": [ { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "/Users/jeffnewman/OneDrive - Cambridge Systematics/Git/activitysim/activitysim/estimation/larch/mode_choice.py:126: DtypeWarning: Columns (411) have mixed types.Specify dtype option on import or set low_memory=False.\n", - " return mode_choice_model(\n" + "loading from output-est-mode/estimation_data_bundle/trip_mode_choice/trip_mode_choice_coefficients.csv\n", + "loading from output-est-mode/estimation_data_bundle/trip_mode_choice/trip_mode_choice_coefficients_template.csv\n", + "loading spec from output-est-mode/estimation_data_bundle/trip_mode_choice/trip_mode_choice_SPEC.csv\n", + "loading from output-est-mode/estimation_data_bundle/trip_mode_choice/trip_mode_choice_values_combined.parquet\n" ] } ], @@ -82,7 +131,11 @@ "modelname = \"trip_mode_choice\"\n", "\n", "from activitysim.estimation.larch import component_model\n", - "model, data = component_model(modelname, return_data=True)" + "model, data = component_model(\n", + " modelname,\n", + " edb_directory=f\"output-est-mode/estimation_data_bundle/{modelname}/\",\n", + " return_data=True,\n", + ")" ] }, { @@ -685,15 +738,15 @@ " util_DRIVEALONEFREE_In_vehicle_time\n", " util_DRIVEALONEFREE_Terminal_time\n", " ...\n", - " drive_lrf_available_inbound\n", - " drive_express_available_outbound\n", - " drive_express_available_inbound\n", " drive_heavyrail_available_outbound\n", " drive_heavyrail_available_inbound\n", " drive_commuter_available_outbound\n", " drive_commuter_available_inbound\n", " walk_ferry_available\n", " drive_ferry_available\n", + " distance\n", + " distance_walk_od\n", + " distance_bike_od\n", " override_choice_code\n", " \n", " \n", @@ -723,17 +776,17 @@ " \n", " \n", " \n", - " 6812\n", - " 54497\n", + " 1870\n", + " 14961\n", " WALK\n", " WALK\n", " 0.0\n", - " 1.0\n", " 0.0\n", " 0.0\n", " 0.0\n", - " 2.72\n", - " 7.72508\n", + " 0.0\n", + " 10.52\n", + " 10.63286\n", " ...\n", " False\n", " False\n", @@ -741,23 +794,23 @@ " False\n", " False\n", " False\n", - " False\n", - " False\n", - " False\n", + " 3.78\n", + " 3.78\n", + " 3.78\n", " 7\n", " \n", " \n", - " 6812\n", - " 54501\n", + " 1870\n", + " 14965\n", " WALK\n", " WALK\n", " 0.0\n", - " 1.0\n", " 0.0\n", " 0.0\n", " 0.0\n", - " 2.76\n", - " 7.72508\n", + " 0.0\n", + " 10.31\n", + " 10.63286\n", " ...\n", " False\n", " False\n", @@ -765,71 +818,71 @@ " False\n", " False\n", " False\n", - " False\n", - " False\n", - " False\n", + " 3.79\n", + " 3.79\n", + " 3.79\n", " 7\n", " \n", " \n", - " 8110\n", - " 64881\n", - " WALK\n", - " WALK\n", + " 20468\n", + " 163745\n", + " WALK_LOC\n", + " WALK_LOC\n", " 0.0\n", - " 1.0\n", " 0.0\n", " 0.0\n", " 0.0\n", - " 4.43\n", - " 17.09892\n", + " 0.0\n", + " 4.72\n", + " 6.62312\n", " ...\n", + " True\n", " False\n", + " True\n", " False\n", " False\n", " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " 7\n", + " 2.07\n", + " 2.07\n", + " 2.07\n", + " 9\n", " \n", " \n", - " 8110\n", - " 64885\n", - " WALK\n", - " WALK\n", + " 20468\n", + " 163749\n", + " WALK_LOC\n", + " TNC_SINGLE\n", " 0.0\n", - " 1.0\n", " 0.0\n", " 0.0\n", " 0.0\n", - " 4.43\n", - " 17.09892\n", + " 0.0\n", + " 4.72\n", + " 6.62312\n", " ...\n", " False\n", + " True\n", " False\n", + " True\n", " False\n", " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " False\n", - " 7\n", + " 2.07\n", + " 2.07\n", + " 2.07\n", + " 20\n", " \n", " \n", - " 11013\n", - " 88105\n", - " DRIVEALONEFREE\n", + " 27055\n", + " 216441\n", + " SHARED3FREE\n", " DRIVEALONEFREE\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", - " 10.53\n", - " 9.08660\n", + " 6.77\n", + " 4.26534\n", " ...\n", " False\n", " False\n", @@ -837,9 +890,9 @@ " False\n", " False\n", " False\n", - " False\n", - " False\n", - " False\n", + " 2.49\n", + " 2.49\n", + " 2.49\n", " 1\n", " \n", " \n", @@ -867,17 +920,17 @@ " ...\n", " \n", " \n", - " 309796968\n", - " 2478375745\n", - " SHARED3FREE\n", - " SHARED3FREE\n", + " 310202384\n", + " 2481619077\n", + " DRIVEALONEFREE\n", + " DRIVEALONEFREE\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", - " 8.84\n", - " 6.83436\n", + " 2.74\n", + " 1.91196\n", " ...\n", " False\n", " False\n", @@ -885,23 +938,23 @@ " False\n", " False\n", " False\n", - " False\n", - " False\n", - " False\n", - " 5\n", + " 1.66\n", + " 2.55\n", + " 2.55\n", + " 1\n", " \n", " \n", - " 309796968\n", - " 2478375749\n", - " SHARED3FREE\n", - " SHARED3FREE\n", + " 310212634\n", + " 2481701073\n", + " DRIVEALONEFREE\n", + " DRIVEALONEFREE\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", - " 8.50\n", - " 6.83436\n", + " 6.42\n", + " 2.66128\n", " ...\n", " False\n", " False\n", @@ -909,14 +962,14 @@ " False\n", " False\n", " False\n", - " False\n", - " False\n", - " False\n", - " 5\n", + " 2.57\n", + " 2.57\n", + " 2.57\n", + " 1\n", " \n", " \n", - " 309796969\n", - " 2478375753\n", + " 310212634\n", + " 2481701077\n", " DRIVEALONEFREE\n", " DRIVEALONEFREE\n", " 0.0\n", @@ -924,8 +977,8 @@ " 0.0\n", " 0.0\n", " 0.0\n", - " 4.00\n", - " 5.00346\n", + " 6.42\n", + " 2.66128\n", " ...\n", " False\n", " False\n", @@ -933,23 +986,23 @@ " False\n", " False\n", " False\n", - " False\n", - " False\n", - " False\n", + " 2.57\n", + " 2.57\n", + " 2.57\n", " 1\n", " \n", " \n", - " 309796969\n", - " 2478375757\n", - " TNC_SHARED\n", - " TNC_SHARED\n", + " 310220296\n", + " 2481762369\n", + " DRIVEALONEFREE\n", + " DRIVEALONEFREE\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", - " 1.89\n", - " 9.29502\n", + " 6.72\n", + " 4.02884\n", " ...\n", " False\n", " False\n", @@ -957,14 +1010,14 @@ " False\n", " False\n", " False\n", - " False\n", - " False\n", - " False\n", - " 21\n", + " 2.90\n", + " 2.90\n", + " 2.90\n", + " 1\n", " \n", " \n", - " 309796969\n", - " 2478375758\n", + " 310220296\n", + " 2481762373\n", " DRIVEALONEFREE\n", " DRIVEALONEFREE\n", " 0.0\n", @@ -972,8 +1025,8 @@ " 0.0\n", " 0.0\n", " 0.0\n", - " 3.73\n", - " 4.29156\n", + " 6.87\n", + " 4.02884\n", " ...\n", " False\n", " False\n", @@ -981,228 +1034,214 @@ " False\n", " False\n", " False\n", - " False\n", - " False\n", - " False\n", + " 2.90\n", + " 2.90\n", + " 2.90\n", " 1\n", " \n", " \n", "\n", - "

14352 rows × 475 columns

\n", + "

176389 rows × 480 columns

\n", "" ], "text/plain": [ " trip_id model_choice override_choice \\\n", "tour_id \n", - "6812 54497 WALK WALK \n", - "6812 54501 WALK WALK \n", - "8110 64881 WALK WALK \n", - "8110 64885 WALK WALK \n", - "11013 88105 DRIVEALONEFREE DRIVEALONEFREE \n", + "1870 14961 WALK WALK \n", + "1870 14965 WALK WALK \n", + "20468 163745 WALK_LOC WALK_LOC \n", + "20468 163749 WALK_LOC TNC_SINGLE \n", + "27055 216441 SHARED3FREE DRIVEALONEFREE \n", "... ... ... ... \n", - "309796968 2478375745 SHARED3FREE SHARED3FREE \n", - "309796968 2478375749 SHARED3FREE SHARED3FREE \n", - "309796969 2478375753 DRIVEALONEFREE DRIVEALONEFREE \n", - "309796969 2478375757 TNC_SHARED TNC_SHARED \n", - "309796969 2478375758 DRIVEALONEFREE DRIVEALONEFREE \n", + "310202384 2481619077 DRIVEALONEFREE DRIVEALONEFREE \n", + "310212634 2481701073 DRIVEALONEFREE DRIVEALONEFREE \n", + "310212634 2481701077 DRIVEALONEFREE DRIVEALONEFREE \n", + "310220296 2481762369 DRIVEALONEFREE DRIVEALONEFREE \n", + "310220296 2481762373 DRIVEALONEFREE DRIVEALONEFREE \n", "\n", " util_DRIVEALONEFREE_Unavailable \\\n", "tour_id \n", - "6812 0.0 \n", - "6812 0.0 \n", - "8110 0.0 \n", - "8110 0.0 \n", - "11013 0.0 \n", + "1870 0.0 \n", + "1870 0.0 \n", + "20468 0.0 \n", + "20468 0.0 \n", + "27055 0.0 \n", "... ... \n", - "309796968 0.0 \n", - "309796968 0.0 \n", - "309796969 0.0 \n", - "309796969 0.0 \n", - "309796969 0.0 \n", + "310202384 0.0 \n", + "310212634 0.0 \n", + "310212634 0.0 \n", + "310220296 0.0 \n", + "310220296 0.0 \n", "\n", " util_DRIVEALONEFREE_Unavailable_for_zero_auto_households \\\n", "tour_id \n", - "6812 1.0 \n", - "6812 1.0 \n", - "8110 1.0 \n", - "8110 1.0 \n", - "11013 0.0 \n", + "1870 0.0 \n", + "1870 0.0 \n", + "20468 0.0 \n", + "20468 0.0 \n", + "27055 0.0 \n", "... ... \n", - "309796968 0.0 \n", - "309796968 0.0 \n", - "309796969 0.0 \n", - "309796969 0.0 \n", - "309796969 0.0 \n", + "310202384 0.0 \n", + "310212634 0.0 \n", + "310212634 0.0 \n", + "310220296 0.0 \n", + "310220296 0.0 \n", "\n", " util_DRIVEALONEFREE_Unavailable_for_persons_less_than_16 \\\n", "tour_id \n", - "6812 0.0 \n", - "6812 0.0 \n", - "8110 0.0 \n", - "8110 0.0 \n", - "11013 0.0 \n", + "1870 0.0 \n", + "1870 0.0 \n", + "20468 0.0 \n", + "20468 0.0 \n", + "27055 0.0 \n", "... ... \n", - "309796968 0.0 \n", - "309796968 0.0 \n", - "309796969 0.0 \n", - "309796969 0.0 \n", - "309796969 0.0 \n", + "310202384 0.0 \n", + "310212634 0.0 \n", + "310212634 0.0 \n", + "310220296 0.0 \n", + "310220296 0.0 \n", "\n", " util_DRIVEALONEFREE_Unavailable_for_joint_tours \\\n", "tour_id \n", - "6812 0.0 \n", - "6812 0.0 \n", - "8110 0.0 \n", - "8110 0.0 \n", - "11013 0.0 \n", + "1870 0.0 \n", + "1870 0.0 \n", + "20468 0.0 \n", + "20468 0.0 \n", + "27055 0.0 \n", "... ... \n", - "309796968 0.0 \n", - "309796968 0.0 \n", - "309796969 0.0 \n", - "309796969 0.0 \n", - "309796969 0.0 \n", + "310202384 0.0 \n", + "310212634 0.0 \n", + "310212634 0.0 \n", + "310220296 0.0 \n", + "310220296 0.0 \n", "\n", " util_DRIVEALONEFREE_Unavailable_if_didnt_drive_to_work \\\n", "tour_id \n", - "6812 0.0 \n", - "6812 0.0 \n", - "8110 0.0 \n", - "8110 0.0 \n", - "11013 0.0 \n", + "1870 0.0 \n", + "1870 0.0 \n", + "20468 0.0 \n", + "20468 0.0 \n", + "27055 0.0 \n", "... ... \n", - "309796968 0.0 \n", - "309796968 0.0 \n", - "309796969 0.0 \n", - "309796969 0.0 \n", - "309796969 0.0 \n", + "310202384 0.0 \n", + "310212634 0.0 \n", + "310212634 0.0 \n", + "310220296 0.0 \n", + "310220296 0.0 \n", "\n", " util_DRIVEALONEFREE_In_vehicle_time \\\n", "tour_id \n", - "6812 2.72 \n", - "6812 2.76 \n", - "8110 4.43 \n", - "8110 4.43 \n", - "11013 10.53 \n", + "1870 10.52 \n", + "1870 10.31 \n", + "20468 4.72 \n", + "20468 4.72 \n", + "27055 6.77 \n", "... ... \n", - "309796968 8.84 \n", - "309796968 8.50 \n", - "309796969 4.00 \n", - "309796969 1.89 \n", - "309796969 3.73 \n", + "310202384 2.74 \n", + "310212634 6.42 \n", + "310212634 6.42 \n", + "310220296 6.72 \n", + "310220296 6.87 \n", "\n", " util_DRIVEALONEFREE_Terminal_time ... \\\n", "tour_id ... \n", - "6812 7.72508 ... \n", - "6812 7.72508 ... \n", - "8110 17.09892 ... \n", - "8110 17.09892 ... \n", - "11013 9.08660 ... \n", + "1870 10.63286 ... \n", + "1870 10.63286 ... \n", + "20468 6.62312 ... \n", + "20468 6.62312 ... \n", + "27055 4.26534 ... \n", "... ... ... \n", - "309796968 6.83436 ... \n", - "309796968 6.83436 ... \n", - "309796969 5.00346 ... \n", - "309796969 9.29502 ... \n", - "309796969 4.29156 ... \n", - "\n", - " drive_lrf_available_inbound drive_express_available_outbound \\\n", - "tour_id \n", - "6812 False False \n", - "6812 False False \n", - "8110 False False \n", - "8110 False False \n", - "11013 False False \n", - "... ... ... \n", - "309796968 False False \n", - "309796968 False False \n", - "309796969 False False \n", - "309796969 False False \n", - "309796969 False False \n", - "\n", - " drive_express_available_inbound \\\n", - "tour_id \n", - "6812 False \n", - "6812 False \n", - "8110 False \n", - "8110 False \n", - "11013 False \n", - "... ... \n", - "309796968 False \n", - "309796968 False \n", - "309796969 False \n", - "309796969 False \n", - "309796969 False \n", + "310202384 1.91196 ... \n", + "310212634 2.66128 ... \n", + "310212634 2.66128 ... \n", + "310220296 4.02884 ... \n", + "310220296 4.02884 ... \n", "\n", " drive_heavyrail_available_outbound \\\n", "tour_id \n", - "6812 False \n", - "6812 False \n", - "8110 False \n", - "8110 False \n", - "11013 False \n", + "1870 False \n", + "1870 False \n", + "20468 True \n", + "20468 False \n", + "27055 False \n", "... ... \n", - "309796968 False \n", - "309796968 False \n", - "309796969 False \n", - "309796969 False \n", - "309796969 False \n", + "310202384 False \n", + "310212634 False \n", + "310212634 False \n", + "310220296 False \n", + "310220296 False \n", "\n", " drive_heavyrail_available_inbound \\\n", "tour_id \n", - "6812 False \n", - "6812 False \n", - "8110 False \n", - "8110 False \n", - "11013 False \n", + "1870 False \n", + "1870 False \n", + "20468 False \n", + "20468 True \n", + "27055 False \n", "... ... \n", - "309796968 False \n", - "309796968 False \n", - "309796969 False \n", - "309796969 False \n", - "309796969 False \n", + "310202384 False \n", + "310212634 False \n", + "310212634 False \n", + "310220296 False \n", + "310220296 False \n", "\n", " drive_commuter_available_outbound \\\n", "tour_id \n", - "6812 False \n", - "6812 False \n", - "8110 False \n", - "8110 False \n", - "11013 False \n", + "1870 False \n", + "1870 False \n", + "20468 True \n", + "20468 False \n", + "27055 False \n", "... ... \n", - "309796968 False \n", - "309796968 False \n", - "309796969 False \n", - "309796969 False \n", - "309796969 False \n", + "310202384 False \n", + "310212634 False \n", + "310212634 False \n", + "310220296 False \n", + "310220296 False \n", "\n", " drive_commuter_available_inbound walk_ferry_available \\\n", "tour_id \n", - "6812 False False \n", - "6812 False False \n", - "8110 False False \n", - "8110 False False \n", - "11013 False False \n", + "1870 False False \n", + "1870 False False \n", + "20468 False False \n", + "20468 True False \n", + "27055 False False \n", "... ... ... \n", - "309796968 False False \n", - "309796968 False False \n", - "309796969 False False \n", - "309796969 False False \n", - "309796969 False False \n", + "310202384 False False \n", + "310212634 False False \n", + "310212634 False False \n", + "310220296 False False \n", + "310220296 False False \n", "\n", - " drive_ferry_available override_choice_code \n", - "tour_id \n", - "6812 False 7 \n", - "6812 False 7 \n", - "8110 False 7 \n", - "8110 False 7 \n", - "11013 False 1 \n", - "... ... ... \n", - "309796968 False 5 \n", - "309796968 False 5 \n", - "309796969 False 1 \n", - "309796969 False 21 \n", - "309796969 False 1 \n", + " drive_ferry_available distance distance_walk_od \\\n", + "tour_id \n", + "1870 False 3.78 3.78 \n", + "1870 False 3.79 3.79 \n", + "20468 False 2.07 2.07 \n", + "20468 False 2.07 2.07 \n", + "27055 False 2.49 2.49 \n", + "... ... ... ... \n", + "310202384 False 1.66 2.55 \n", + "310212634 False 2.57 2.57 \n", + "310212634 False 2.57 2.57 \n", + "310220296 False 2.90 2.90 \n", + "310220296 False 2.90 2.90 \n", + "\n", + " distance_bike_od override_choice_code \n", + "tour_id \n", + "1870 3.78 7 \n", + "1870 3.79 7 \n", + "20468 2.07 9 \n", + "20468 2.07 20 \n", + "27055 2.49 1 \n", + "... ... ... \n", + "310202384 2.55 1 \n", + "310212634 2.57 1 \n", + "310212634 2.57 1 \n", + "310220296 2.90 1 \n", + "310220296 2.90 1 \n", "\n", - "[14352 rows x 475 columns]" + "[176389 rows x 480 columns]" ] }, "execution_count": 6, @@ -1228,41 +1267,10 @@ "execution_count": 7, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "req_data does not request avail_ca or avail_co but it is set and being provided\n", - "req_data does not request avail_ca or avail_co but it is set and being provided\n", - "req_data does not request avail_ca or avail_co but it is set and being provided\n", - "req_data does not request avail_ca or avail_co but it is set and being provided\n", - "req_data does not request avail_ca or avail_co but it is set and being provided\n", - "req_data does not request avail_ca or avail_co but it is set and being provided\n", - "req_data does not request avail_ca or avail_co but it is set and being provided\n", - "req_data does not request avail_ca or avail_co but it is set and being provided\n", - "req_data does not request avail_ca or avail_co but it is set and being provided\n", - "problem: chosen-but-not-available (2 issues)\n", - "problem: low-variance-data-co (1 issues)\n", - "problem: chosen-but-not-available (2 issues)\n", - "problem: low-variance-data-co (1 issues)\n", - "problem: chosen-but-not-available (1 issues)\n", - "problem: low-variance-data-co (1 issues)\n", - "problem: chosen-but-not-available (2 issues)\n", - "problem: low-variance-data-co (1 issues)\n", - "problem: chosen-but-not-available (1 issues)\n", - "problem: low-variance-data-co (1 issues)\n", - "problem: chosen-but-not-available (2 issues)\n", - "problem: low-variance-data-co (1 issues)\n", - "problem: chosen-but-not-available (1 issues)\n", - "problem: low-variance-data-co (1 issues)\n", - "problem: chosen-but-not-available (2 issues)\n", - "problem: low-variance-data-co (1 issues)\n" - ] - }, { "data": { "text/plain": [ - "-10094.898223413013" + "-94787.94601063678" ] }, "execution_count": 7, @@ -1271,7 +1279,6 @@ } ], "source": [ - "model.load_data()\n", "model.doctor(repair_ch_av='-')\n", "model.loglike()" ] @@ -1284,7 +1291,7 @@ { "data": { "text/html": [ - "

Iteration 110 [Optimization terminated successfully]

" + "

Iteration 304 [Optimization terminated successfully]

" ], "text/plain": [ "" @@ -1296,7 +1303,7 @@ { "data": { "text/html": [ - "

Best LL = -7541.342641931288

" + "

Best LL = -83882.48668326798

" ], "text/plain": [ "" @@ -1327,70 +1334,74 @@ " \n", " \n", " value\n", + " best\n", " initvalue\n", - " nullvalue\n", " minimum\n", " maximum\n", + " nullvalue\n", " holdfast\n", - " note\n", - " best\n", + " \n", + " \n", + " param_name\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " -999\n", " -999.000000\n", + " -999.000000\n", " -999.0000\n", " -999.0\n", " -999.0\n", - " -999.0\n", + " 0.0\n", " 1\n", - " \n", - " -999.000000\n", " \n", " \n", " 1\n", " 1.000000\n", + " 1.000000\n", " 1.0000\n", " 1.0\n", " 1.0\n", - " 1.0\n", + " 0.0\n", " 1\n", - " \n", - " 1.000000\n", " \n", " \n", " coef_age010_trn\n", - " 0.360551\n", + " 0.131028\n", + " 0.131028\n", " 0.0000\n", + " -inf\n", + " inf\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.360551\n", " \n", " \n", " coef_age1619_da\n", - " 0.344530\n", + " 0.432972\n", + " 0.432972\n", " 0.0000\n", + " -inf\n", + " inf\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.344530\n", " \n", " \n", " coef_age16p_sr\n", - " -0.151886\n", + " -0.403317\n", + " -0.403317\n", " 0.0000\n", + " -inf\n", + " inf\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.151886\n", " \n", " \n", " ...\n", @@ -1401,114 +1412,106 @@ " ...\n", " ...\n", " ...\n", - " ...\n", " \n", " \n", - " coef_sr3p_ASC_sr3p_othdiscr\n", - " 0.844944\n", - " 0.7398\n", + " coef_walk_transit_ASC_walk_school\n", + " -1.566510\n", + " -1.566510\n", + " -1.1828\n", + " -inf\n", + " inf\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " 0.844944\n", " \n", " \n", - " coef_sr3p_ASC_walk_othdiscr\n", - " -5.841028\n", - " -0.5272\n", + " coef_walk_transit_ASC_walk_shopping\n", + " -1.250219\n", + " -1.250219\n", + " -0.1943\n", + " -inf\n", + " inf\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -5.841028\n", " \n", " \n", - " coef_walk_transit_ASC_sr2_othdiscr\n", - " -1.232224\n", - " -2.7590\n", + " coef_walk_transit_ASC_walk_social\n", + " -0.846190\n", + " -0.846190\n", + " -0.7651\n", + " -inf\n", + " inf\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -1.232224\n", " \n", " \n", - " coef_walk_transit_ASC_sr3p_othdiscr\n", - " -1.199264\n", - " -2.5126\n", + " coef_walk_transit_ASC_walk_univ\n", + " -1.031100\n", + " -1.031100\n", + " -1.0311\n", + " -inf\n", + " inf\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -1.199264\n", " \n", " \n", - " coef_walk_transit_ASC_walk_othdiscr\n", - " -0.980497\n", - " -0.4997\n", + " coef_walk_transit_ASC_walk_work\n", + " 0.296352\n", + " 0.296352\n", + " 0.4432\n", + " -inf\n", + " inf\n", " 0.0\n", - " NaN\n", - " NaN\n", " 0\n", - " \n", - " -0.980497\n", " \n", " \n", "\n", - "

272 rows × 8 columns

\n", + "

272 rows × 7 columns

\n", "" ], "text/plain": [ - " value initvalue nullvalue \\\n", - "-999 -999.000000 -999.0000 -999.0 \n", - "1 1.000000 1.0000 1.0 \n", - "coef_age010_trn 0.360551 0.0000 0.0 \n", - "coef_age1619_da 0.344530 0.0000 0.0 \n", - "coef_age16p_sr -0.151886 0.0000 0.0 \n", - "... ... ... ... \n", - "coef_sr3p_ASC_sr3p_othdiscr 0.844944 0.7398 0.0 \n", - "coef_sr3p_ASC_walk_othdiscr -5.841028 -0.5272 0.0 \n", - "coef_walk_transit_ASC_sr2_othdiscr -1.232224 -2.7590 0.0 \n", - "coef_walk_transit_ASC_sr3p_othdiscr -1.199264 -2.5126 0.0 \n", - "coef_walk_transit_ASC_walk_othdiscr -0.980497 -0.4997 0.0 \n", + " value best initvalue \\\n", + "param_name \n", + "-999 -999.000000 -999.000000 -999.0000 \n", + "1 1.000000 1.000000 1.0000 \n", + "coef_age010_trn 0.131028 0.131028 0.0000 \n", + "coef_age1619_da 0.432972 0.432972 0.0000 \n", + "coef_age16p_sr -0.403317 -0.403317 0.0000 \n", + "... ... ... ... \n", + "coef_walk_transit_ASC_walk_school -1.566510 -1.566510 -1.1828 \n", + "coef_walk_transit_ASC_walk_shopping -1.250219 -1.250219 -0.1943 \n", + "coef_walk_transit_ASC_walk_social -0.846190 -0.846190 -0.7651 \n", + "coef_walk_transit_ASC_walk_univ -1.031100 -1.031100 -1.0311 \n", + "coef_walk_transit_ASC_walk_work 0.296352 0.296352 0.4432 \n", "\n", - " minimum maximum holdfast note \\\n", - "-999 -999.0 -999.0 1 \n", - "1 1.0 1.0 1 \n", - "coef_age010_trn NaN NaN 0 \n", - "coef_age1619_da NaN NaN 0 \n", - "coef_age16p_sr NaN NaN 0 \n", - "... ... ... ... ... \n", - "coef_sr3p_ASC_sr3p_othdiscr NaN NaN 0 \n", - "coef_sr3p_ASC_walk_othdiscr NaN NaN 0 \n", - "coef_walk_transit_ASC_sr2_othdiscr NaN NaN 0 \n", - "coef_walk_transit_ASC_sr3p_othdiscr NaN NaN 0 \n", - "coef_walk_transit_ASC_walk_othdiscr NaN NaN 0 \n", + " minimum maximum nullvalue holdfast \n", + "param_name \n", + "-999 -999.0 -999.0 0.0 1 \n", + "1 1.0 1.0 0.0 1 \n", + "coef_age010_trn -inf inf 0.0 0 \n", + "coef_age1619_da -inf inf 0.0 0 \n", + "coef_age16p_sr -inf inf 0.0 0 \n", + "... ... ... ... ... \n", + "coef_walk_transit_ASC_walk_school -inf inf 0.0 0 \n", + "coef_walk_transit_ASC_walk_shopping -inf inf 0.0 0 \n", + "coef_walk_transit_ASC_walk_social -inf inf 0.0 0 \n", + "coef_walk_transit_ASC_walk_univ -inf inf 0.0 0 \n", + "coef_walk_transit_ASC_walk_work -inf inf 0.0 0 \n", "\n", - " best \n", - "-999 -999.000000 \n", - "1 1.000000 \n", - "coef_age010_trn 0.360551 \n", - "coef_age1619_da 0.344530 \n", - "coef_age16p_sr -0.151886 \n", - "... ... \n", - "coef_sr3p_ASC_sr3p_othdiscr 0.844944 \n", - "coef_sr3p_ASC_walk_othdiscr -5.841028 \n", - "coef_walk_transit_ASC_sr2_othdiscr -1.232224 \n", - "coef_walk_transit_ASC_sr3p_othdiscr -1.199264 \n", - "coef_walk_transit_ASC_walk_othdiscr -0.980497 \n", - "\n", - "[272 rows x 8 columns]" + "[272 rows x 7 columns]" ] }, "metadata": {}, "output_type": "display_data" }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jpn/Git/est-mode/larch/src/larch/model/optimization.py:338: UserWarning: SLSQP may not play nicely with unbounded parameters\n", + "if you get poor results, consider setting global bounds with model.set_cap()\n", + " warnings.warn( # infinite bounds # )\n" + ] + }, { "data": { "text/html": [ @@ -1530,173 +1533,461 @@ " \n", " \n", " coef_age010_trn\n", - " 0.360551\n", + " 0.131028\n", " \n", " \n", " coef_age1619_da\n", - " 0.344530\n", + " 0.432972\n", " \n", " \n", " coef_age16p_sr\n", - " -0.151886\n", + " -0.403317\n", " \n", " \n", " coef_bike_ASC_rh\n", " -7.000000\n", " \n", " \n", - " coef_bike_ASC_walk_work\n", - " -2.659172\n", + " coef_bike_ASC_walk_eatout\n", + " -1.688820\n", " \n", " \n", - " coef_drive_transit_ASC_commuter_work\n", - " 0.426505\n", + " coef_bike_ASC_walk_escort\n", + " -13.520300\n", " \n", " \n", - " coef_drive_transit_ASC_express_work\n", - " -0.355400\n", + " coef_bike_ASC_walk_othdiscr\n", + " -1.324400\n", " \n", " \n", - " coef_drive_transit_ASC_ferry_work\n", - " 0.527700\n", + " coef_bike_ASC_walk_othmaint\n", + " -0.712317\n", " \n", " \n", - " coef_drive_transit_ASC_heavyrail_work\n", - " -11.994128\n", + " coef_bike_ASC_walk_school\n", + " -2.411542\n", " \n", " \n", - " coef_drive_transit_ASC_lightrail_work\n", - " -10.300241\n", + " coef_bike_ASC_walk_shopping\n", + " -1.577746\n", " \n", " \n", - " coef_drive_transit_ASC_rh\n", - " -162.171583\n", + " coef_bike_ASC_walk_social\n", + " -13.238401\n", " \n", " \n", - " coef_hhsize1_sr\n", - " -0.890929\n", + " coef_bike_ASC_walk_univ\n", + " -0.339900\n", " \n", " \n", - " coef_hhsize2_sr\n", - " 0.039653\n", + " coef_bike_ASC_walk_work\n", + " -2.059726\n", " \n", " \n", - " coef_ivt_work\n", - " -0.010155\n", + " coef_drive_transit_ASC_commuter_escort\n", + " 0.544200\n", " \n", " \n", - " coef_joint_auto_ASC_rh_work_univ_school_escort_atwork\n", - " 0.000000\n", + " coef_drive_transit_ASC_commuter_shopping_eatout_othmaint_social_othdiscr_atwork\n", + " 6.898234\n", " \n", " \n", - " coef_joint_auto_ASC_sr2_work_univ_school_escort_atwork\n", - " 0.000000\n", + " coef_drive_transit_ASC_commuter_univ_school\n", + " 3.472482\n", " \n", " \n", - " coef_joint_auto_ASC_sr3p_work_univ_school_escort_atwork\n", - " 0.000000\n", + " coef_drive_transit_ASC_commuter_work\n", + " 0.928536\n", " \n", " \n", - " coef_joint_auto_ASC_walk_work_univ_school_escort_atwork\n", - " 0.000000\n", + " coef_drive_transit_ASC_express_escort\n", + " 0.754700\n", " \n", " \n", - " coef_joint_bike_ASC_rh_work_univ_school_escort_atwork\n", - " 0.000000\n", + " coef_drive_transit_ASC_express_shopping_eatout_othmaint_social_othdiscr_atwork\n", + " 0.673466\n", " \n", " \n", - " coef_joint_bike_ASC_walk_work_univ_school_escort_atwork\n", - " 0.000000\n", + " coef_drive_transit_ASC_express_univ_school\n", + " -0.091011\n", " \n", " \n", - " coef_joint_drive_transit_ASC_commuter_work_univ_school_escort_atwork\n", - " 0.000000\n", + " coef_drive_transit_ASC_express_work\n", + " 0.063342\n", " \n", " \n", - " coef_joint_drive_transit_ASC_express_work_univ_school_escort_atwork\n", - " 0.000000\n", + " coef_drive_transit_ASC_ferry_escort\n", + " 0.600500\n", " \n", " \n", - " coef_joint_drive_transit_ASC_ferry_work_univ_school_escort_atwork\n", - " 0.000000\n", + " coef_drive_transit_ASC_ferry_shopping_eatout_othmaint_social_othdiscr_atwork\n", + " -1.435555\n", " \n", " \n", - " coef_joint_drive_transit_ASC_heavyrail_work_univ_school_escort_atwork\n", - " 0.000000\n", + " coef_drive_transit_ASC_ferry_univ_school\n", + " 0.935424\n", " \n", " \n", - " coef_joint_drive_transit_ASC_lightrail_work_univ_school_escort_atwork\n", - " 0.000000\n", + " coef_drive_transit_ASC_ferry_work\n", + " 0.556372\n", " \n", " \n", - " coef_joint_drive_transit_ASC_rh_work_univ_school_escort_atwork\n", - " 0.000000\n", + " coef_drive_transit_ASC_heavyrail_escort\n", + " -3.973160\n", " \n", " \n", - " coef_joint_ride_hail_ASC_sr2_work_univ_school_escort_atwork\n", - " 0.000000\n", + " coef_drive_transit_ASC_heavyrail_shopping_eatout_othmaint_social_othdiscr_atwork\n", + " 0.985065\n", " \n", " \n", - " coef_joint_ride_hail_ASC_sr3p_work_univ_school_escort_atwork\n", - " 0.000000\n", + " coef_drive_transit_ASC_heavyrail_univ_school\n", + " 0.729763\n", " \n", " \n", - " coef_joint_ride_hail_ASC_taxi_work_univ_school_escort_atwork\n", - " 0.000000\n", + " coef_drive_transit_ASC_heavyrail_work\n", + " 0.821984\n", " \n", " \n", - " coef_joint_ride_hail_ASC_tnc_shared\n", - " 0.000000\n", + " coef_drive_transit_ASC_lightrail_escort\n", + " 2.308376\n", " \n", " \n", - " coef_joint_ride_hail_ASC_tnc_single_work_univ_school_escort_atwork\n", - " 0.000000\n", + " coef_drive_transit_ASC_lightrail_shopping_eatout_othmaint_social_othdiscr_atwork\n", + " 0.501609\n", " \n", " \n", - " coef_joint_ride_hail_ASC_walk_transit\n", - " 0.000000\n", + " coef_drive_transit_ASC_lightrail_univ_school\n", + " 3.943847\n", " \n", " \n", - " coef_joint_ride_hail_ASC_walk_work_univ_school_escort_atwork\n", - " 0.000000\n", + " coef_drive_transit_ASC_lightrail_work\n", + " 0.635303\n", " \n", " \n", - " coef_joint_walk_ASC_rh_work_univ_school_escort_atwork\n", - " 0.000000\n", + " coef_drive_transit_ASC_rh\n", + " -3.908149\n", " \n", " \n", - " coef_joint_walk_transit_ASC_commuter_work_univ_school_escort_atwork\n", - " 0.000000\n", + " coef_hhsize1_sr\n", + " -0.789606\n", " \n", " \n", - " coef_joint_walk_transit_ASC_express_work_univ_school_escort_atwork\n", - " 0.000000\n", + " coef_hhsize2_sr\n", + " -0.058339\n", + " \n", + " \n", + " coef_ivt_escort_shopping_eatout_othdiscr_atwork\n", + " -0.011979\n", + " \n", + " \n", + " coef_ivt_othmaint_social\n", + " -0.008160\n", + " \n", + " \n", + " coef_ivt_univ_school\n", + " -0.016233\n", + " \n", + " \n", + " coef_ivt_work\n", + " -0.014958\n", + " \n", + " \n", + " coef_joint_auto_ASC_rh_shopping_eatout_othmaint_social_othdiscr\n", + " -7.345956\n", + " \n", + " \n", + " coef_joint_auto_ASC_rh_work_univ_school_escort_atwork\n", + " 0.000000\n", + " \n", + " \n", + " coef_joint_auto_ASC_sr2_eatout_othmaint_social_othdiscr\n", + " 1.280849\n", + " \n", + " \n", + " coef_joint_auto_ASC_sr2_shopping\n", + " 2.351884\n", + " \n", + " \n", + " coef_joint_auto_ASC_sr2_work_univ_school_escort_atwork\n", + " 0.000000\n", + " \n", + " \n", + " coef_joint_auto_ASC_sr3p_eatout_othmaint_social_othdiscr\n", + " 1.246167\n", + " \n", + " \n", + " coef_joint_auto_ASC_sr3p_shopping\n", + " -19.045412\n", + " \n", + " \n", + " coef_joint_auto_ASC_sr3p_work_univ_school_escort_atwork\n", + " 0.000000\n", + " \n", + " \n", + " coef_joint_auto_ASC_walk_eatout_othmaint_social_othdiscr\n", + " -0.098984\n", + " \n", + " \n", + " coef_joint_auto_ASC_walk_shopping\n", + " -23.468800\n", + " \n", + " \n", + " coef_joint_auto_ASC_walk_work_univ_school_escort_atwork\n", + " 0.000000\n", + " \n", + " \n", + " coef_joint_bike_ASC_rh_shopping_eatout_othmaint_social_othdiscr\n", + " -12.305749\n", + " \n", + " \n", + " coef_joint_bike_ASC_rh_work_univ_school_escort_atwork\n", + " 0.000000\n", + " \n", + " \n", + " coef_joint_bike_ASC_walk_eatout\n", + " -15.558800\n", + " \n", + " \n", + " coef_joint_bike_ASC_walk_othdiscr\n", + " -14.444000\n", + " \n", + " \n", + " coef_joint_bike_ASC_walk_othmaint\n", + " -13.519200\n", + " \n", + " \n", + " coef_joint_bike_ASC_walk_shopping\n", + " -7.047600\n", + " \n", + " \n", + " coef_joint_bike_ASC_walk_social\n", + " -26.171400\n", + " \n", + " \n", + " coef_joint_bike_ASC_walk_work_univ_school_escort_atwork\n", + " 0.000000\n", + " \n", + " \n", + " coef_joint_drive_transit_ASC_commuter_shopping_eatout_othmaint_social_othdiscr\n", + " 0.512900\n", + " \n", + " \n", + " coef_joint_drive_transit_ASC_commuter_work_univ_school_escort_atwork\n", + " 0.000000\n", + " \n", + " \n", + " coef_joint_drive_transit_ASC_express_shopping_eatout_othmaint_social_othdiscr\n", + " -0.805943\n", + " \n", + " \n", + " coef_joint_drive_transit_ASC_express_work_univ_school_escort_atwork\n", + " 0.000000\n", + " \n", + " \n", + " coef_joint_drive_transit_ASC_ferry_shopping_eatout_othmaint_social_othdiscr\n", + " 2.029768\n", + " \n", + " \n", + " coef_joint_drive_transit_ASC_ferry_work_univ_school_escort_atwork\n", + " 0.000000\n", + " \n", + " \n", + " coef_joint_drive_transit_ASC_heavyrail_shopping_eatout_othmaint_social_othdiscr\n", + " 3.190747\n", + " \n", + " \n", + " coef_joint_drive_transit_ASC_heavyrail_work_univ_school_escort_atwork\n", + " 0.000000\n", + " \n", + " \n", + " coef_joint_drive_transit_ASC_lightrail_shopping_eatout_othmaint_social_othdiscr\n", + " 0.539200\n", + " \n", + " \n", + " coef_joint_drive_transit_ASC_lightrail_work_univ_school_escort_atwork\n", + " 0.000000\n", + " \n", + " \n", + " coef_joint_drive_transit_ASC_rh_shopping_eatout_othmaint_social_othdiscr\n", + " 2.050928\n", + " \n", + " \n", + " coef_joint_drive_transit_ASC_rh_work_univ_school_escort_atwork\n", + " 0.000000\n", + " \n", + " \n", + " coef_joint_ride_hail_ASC_sr2_shopping_eatout_othmaint_social_othdiscr\n", + " -6.819150\n", + " \n", + " \n", + " coef_joint_ride_hail_ASC_sr2_work_univ_school_escort_atwork\n", + " 0.000000\n", + " \n", + " \n", + " coef_joint_ride_hail_ASC_sr3p_shopping_eatout_othmaint_social_othdiscr\n", + " -6.822328\n", + " \n", + " \n", + " coef_joint_ride_hail_ASC_sr3p_work_univ_school_escort_atwork\n", + " 0.000000\n", + " \n", + " \n", + " coef_joint_ride_hail_ASC_taxi_shopping_eatout_othmaint_social_othdiscr\n", + " -7.000000\n", + " \n", + " \n", + " coef_joint_ride_hail_ASC_taxi_work_univ_school_escort_atwork\n", + " 0.000000\n", + " \n", + " \n", + " coef_joint_ride_hail_ASC_tnc_shared\n", + " -0.345956\n", + " \n", + " \n", + " coef_joint_ride_hail_ASC_tnc_single_shopping_eatout_othmaint_social_othdiscr\n", + " -4.733900\n", + " \n", + " \n", + " coef_joint_ride_hail_ASC_tnc_single_work_univ_school_escort_atwork\n", + " 0.000000\n", + " \n", + " \n", + " coef_joint_ride_hail_ASC_walk_shopping_eatout_othmaint_social_othdiscr\n", + " -7.012565\n", + " \n", + " \n", + " coef_joint_ride_hail_ASC_walk_transit\n", + " 0.000000\n", + " \n", + " \n", + " coef_joint_ride_hail_ASC_walk_work_univ_school_escort_atwork\n", + " 0.000000\n", + " \n", + " \n", + " coef_joint_walk_ASC_rh_shopping_eatout_othmaint_social_othdiscr\n", + " -3.048765\n", + " \n", + " \n", + " coef_joint_walk_ASC_rh_work_univ_school_escort_atwork\n", + " 0.000000\n", + " \n", + " \n", + " coef_joint_walk_transit_ASC_commuter_shopping_eatout_othmaint_social_othdiscr\n", + " 0.512900\n", + " \n", + " \n", + " coef_joint_walk_transit_ASC_commuter_work_univ_school_escort_atwork\n", + " 0.000000\n", + " \n", + " \n", + " coef_joint_walk_transit_ASC_express_shopping_eatout_othmaint_social_othdiscr\n", + " 0.664800\n", + " \n", + " \n", + " coef_joint_walk_transit_ASC_express_work_univ_school_escort_atwork\n", + " 0.000000\n", + " \n", + " \n", + " coef_joint_walk_transit_ASC_ferry_shopping_eatout_othmaint_social_othdiscr\n", + " 0.646600\n", " \n", " \n", " coef_joint_walk_transit_ASC_ferry_work_univ_school_escort_atwork\n", " 0.000000\n", " \n", " \n", + " coef_joint_walk_transit_ASC_heavyrail_shopping_eatout_othmaint_social_othdiscr\n", + " 2.769790\n", + " \n", + " \n", " coef_joint_walk_transit_ASC_heavyrail_work_univ_school_escort_atwork\n", " 0.000000\n", " \n", " \n", + " coef_joint_walk_transit_ASC_lightrail_shopping_eatout_othmaint_social_othdiscr\n", + " 0.727835\n", + " \n", + " \n", " coef_joint_walk_transit_ASC_lightrail_work_univ_school_escort_atwork\n", " 0.000000\n", " \n", " \n", + " coef_joint_walk_transit_ASC_rh_shopping_eatout_othmaint_social_othdiscr\n", + " 0.073906\n", + " \n", + " \n", " coef_joint_walk_transit_ASC_rh_work_univ_school_escort_atwork\n", " 0.000000\n", " \n", " \n", + " coef_joint_walk_transit_ASC_sr2_eatout\n", + " -14.913400\n", + " \n", + " \n", + " coef_joint_walk_transit_ASC_sr2_othdiscr\n", + " -14.980100\n", + " \n", + " \n", + " coef_joint_walk_transit_ASC_sr2_othmaint\n", + " -5.324150\n", + " \n", + " \n", + " coef_joint_walk_transit_ASC_sr2_shopping\n", + " -21.576800\n", + " \n", + " \n", + " coef_joint_walk_transit_ASC_sr2_social\n", + " -20.502200\n", + " \n", + " \n", " coef_joint_walk_transit_ASC_sr2_work_univ_school_escort_atwork\n", " 0.000000\n", " \n", " \n", + " coef_joint_walk_transit_ASC_sr3p_eatout\n", + " -16.758700\n", + " \n", + " \n", + " coef_joint_walk_transit_ASC_sr3p_othdiscr\n", + " -16.735400\n", + " \n", + " \n", + " coef_joint_walk_transit_ASC_sr3p_othmaint\n", + " -3.973990\n", + " \n", + " \n", + " coef_joint_walk_transit_ASC_sr3p_shopping\n", + " -25.595300\n", + " \n", + " \n", + " coef_joint_walk_transit_ASC_sr3p_social\n", + " -34.737800\n", + " \n", + " \n", " coef_joint_walk_transit_ASC_sr3p_work_univ_school_escort_atwork\n", " 0.000000\n", " \n", " \n", + " coef_joint_walk_transit_ASC_walk_eatout\n", + " 3.421757\n", + " \n", + " \n", + " coef_joint_walk_transit_ASC_walk_othdiscr\n", + " -1.023876\n", + " \n", + " \n", + " coef_joint_walk_transit_ASC_walk_othmaint\n", + " 0.282606\n", + " \n", + " \n", + " coef_joint_walk_transit_ASC_walk_shopping\n", + " 0.717138\n", + " \n", + " \n", + " coef_joint_walk_transit_ASC_walk_social\n", + " -2.272422\n", + " \n", + " \n", " coef_joint_walk_transit_ASC_walk_work_univ_school_escort_atwork\n", " 0.000000\n", " \n", @@ -1737,3414 +2028,3144 @@ " 0.500000\n", " \n", " \n", - " coef_ride_hail_ASC_sr2_work\n", - " -24.964153\n", + " coef_ride_hail_ASC_sr2_eatout_social_othdiscr\n", + " -6.474676\n", + " \n", + " \n", + " coef_ride_hail_ASC_sr2_escort_shopping_othmaint\n", + " -3.837659\n", + " \n", + " \n", + " coef_ride_hail_ASC_sr2_school\n", + " -1.923960\n", + " \n", + " \n", + " coef_ride_hail_ASC_sr2_univ\n", + " -4.337200\n", + " \n", + " \n", + " coef_ride_hail_ASC_sr2_work\n", + " -12.531625\n", + " \n", + " \n", + " coef_ride_hail_ASC_sr3p_eatout_social_othdiscr\n", + " -6.907989\n", + " \n", + " \n", + " coef_ride_hail_ASC_sr3p_school\n", + " -8.857391\n", + " \n", + " \n", + " coef_ride_hail_ASC_sr3p_univ\n", + " -4.922000\n", " \n", " \n", " coef_ride_hail_ASC_sr3p_work_escort_shopping_othmaint_atwork\n", - " -29.661854\n", + " -10.063483\n", + " \n", + " \n", + " coef_ride_hail_ASC_taxi_eatout_social_othdiscr\n", + " -2.560139\n", + " \n", + " \n", + " coef_ride_hail_ASC_taxi_escort_shopping_othmaint\n", + " -3.667690\n", + " \n", + " \n", + " coef_ride_hail_ASC_taxi_school\n", + " 0.194629\n", + " \n", + " \n", + " coef_ride_hail_ASC_taxi_univ\n", + " -1.599400\n", " \n", " \n", " coef_ride_hail_ASC_taxi_work\n", - " -2.519566\n", + " -2.416191\n", " \n", " \n", " coef_ride_hail_ASC_tnc_shared\n", - " 23.268241\n", + " 0.940193\n", + " \n", + " \n", + " coef_ride_hail_ASC_tnc_single_eatout_social_othdiscr\n", + " 3.020074\n", + " \n", + " \n", + " coef_ride_hail_ASC_tnc_single_escort_shopping_othmaint\n", + " 2.436588\n", + " \n", + " \n", + " coef_ride_hail_ASC_tnc_single_school\n", + " 2.043069\n", + " \n", + " \n", + " coef_ride_hail_ASC_tnc_single_univ\n", + " 0.108100\n", " \n", " \n", " coef_ride_hail_ASC_tnc_single_work\n", - " 23.984210\n", + " 2.658594\n", + " \n", + " \n", + " coef_ride_hail_ASC_walk_eatout_social_othdiscr\n", + " -1.924015\n", + " \n", + " \n", + " coef_ride_hail_ASC_walk_school\n", + " -0.961041\n", " \n", " \n", " coef_ride_hail_ASC_walk_transit\n", - " 22.114587\n", + " 1.263022\n", + " \n", + " \n", + " coef_ride_hail_ASC_walk_univ_escort_shopping_othmaint\n", + " -3.676198\n", " \n", " \n", " coef_ride_hail_ASC_walk_work\n", - " 21.771188\n", + " 1.329192\n", + " \n", + " \n", + " coef_sov_ASC_rh_escort_shopping_eatout_othmaint_social_othdiscr\n", + " 0.000000\n", + " \n", + " \n", + " coef_sov_ASC_rh_school\n", + " -9.212494\n", + " \n", + " \n", + " coef_sov_ASC_rh_univ\n", + " -6.649000\n", " \n", " \n", " coef_sov_ASC_rh_work_atwork\n", " -7.000000\n", " \n", " \n", - " coef_sov_ASC_sr2_work_univ_school_shopping_eatout_othmaint_social_othdiscr_atwork\n", - " -999.000000\n", + " coef_sov_ASC_sr2_escort\n", + " 0.000000\n", + " \n", + " \n", + " coef_sov_ASC_sr2_work_univ_school_shopping_eatout_othmaint_social_othdiscr_atwork\n", + " -999.000000\n", + " \n", + " \n", + " coef_sov_ASC_sr3p_escort\n", + " 0.000000\n", + " \n", + " \n", + " coef_sov_ASC_sr3p_work_univ_school_shopping_eatout_othmaint_social_othdiscr_atwork\n", + " -999.000000\n", + " \n", + " \n", + " coef_sov_ASC_walk_eatout\n", + " -1.882701\n", + " \n", + " \n", + " coef_sov_ASC_walk_escort\n", + " 0.000000\n", + " \n", + " \n", + " coef_sov_ASC_walk_othdiscr\n", + " -1.659633\n", + " \n", + " \n", + " coef_sov_ASC_walk_othmaint\n", + " -1.375899\n", + " \n", + " \n", + " coef_sov_ASC_walk_school\n", + " -2.296910\n", + " \n", + " \n", + " coef_sov_ASC_walk_shopping\n", + " -1.588365\n", + " \n", + " \n", + " coef_sov_ASC_walk_social\n", + " -1.874278\n", + " \n", + " \n", + " coef_sov_ASC_walk_univ\n", + " -1.057900\n", + " \n", + " \n", + " coef_sov_ASC_walk_work\n", + " -1.173975\n", + " \n", + " \n", + " coef_sr2_ASC_rh_univ\n", + " -6.689700\n", + " \n", + " \n", + " coef_sr2_ASC_rh_work_school_escort_shopping_eatout_othmaint_social_othdiscr_atwork\n", + " -7.000000\n", + " \n", + " \n", + " coef_sr2_ASC_sr2_eatout\n", + " 1.537811\n", + " \n", + " \n", + " coef_sr2_ASC_sr2_escort\n", + " 0.829193\n", + " \n", + " \n", + " coef_sr2_ASC_sr2_othdiscr\n", + " 1.155943\n", + " \n", + " \n", + " coef_sr2_ASC_sr2_othmaint\n", + " 1.499065\n", + " \n", + " \n", + " coef_sr2_ASC_sr2_school\n", + " -0.206439\n", + " \n", + " \n", + " coef_sr2_ASC_sr2_shopping\n", + " 1.776150\n", + " \n", + " \n", + " coef_sr2_ASC_sr2_social\n", + " 0.975353\n", + " \n", + " \n", + " coef_sr2_ASC_sr2_univ\n", + " 0.430400\n", + " \n", + " \n", + " coef_sr2_ASC_sr2_work\n", + " 0.469947\n", + " \n", + " \n", + " coef_sr2_ASC_sr3p\n", + " -999.000000\n", + " \n", + " \n", + " coef_sr2_ASC_walk_eatout\n", + " -0.188724\n", + " \n", + " \n", + " coef_sr2_ASC_walk_escort\n", + " -2.206208\n", + " \n", + " \n", + " coef_sr2_ASC_walk_othdiscr\n", + " -0.448739\n", + " \n", + " \n", + " coef_sr2_ASC_walk_othmaint\n", + " -0.602562\n", + " \n", + " \n", + " coef_sr2_ASC_walk_school\n", + " -0.134158\n", + " \n", + " \n", + " coef_sr2_ASC_walk_shopping\n", + " -0.528320\n", + " \n", + " \n", + " coef_sr2_ASC_walk_social\n", + " -0.791489\n", + " \n", + " \n", + " coef_sr2_ASC_walk_univ\n", + " 1.304100\n", + " \n", + " \n", + " coef_sr2_ASC_walk_work\n", + " -0.125444\n", + " \n", + " \n", + " coef_sr3p_ASC_rh_school\n", + " -6.902592\n", + " \n", + " \n", + " coef_sr3p_ASC_rh_univ_escort_shopping_eatout_othmaint_social_othdiscr\n", + " -7.000000\n", + " \n", + " \n", + " coef_sr3p_ASC_rh_work\n", + " -71.917700\n", + " \n", + " \n", + " coef_sr3p_ASC_sr2_eatout\n", + " 0.017042\n", + " \n", + " \n", + " coef_sr3p_ASC_sr2_escort\n", + " 0.131909\n", + " \n", + " \n", + " coef_sr3p_ASC_sr2_othdiscr\n", + " -0.193304\n", + " \n", + " \n", + " coef_sr3p_ASC_sr2_othmaint\n", + " 0.059680\n", + " \n", + " \n", + " coef_sr3p_ASC_sr2_school\n", + " -1.380673\n", + " \n", + " \n", + " coef_sr3p_ASC_sr2_shopping\n", + " 0.409428\n", + " \n", + " \n", + " coef_sr3p_ASC_sr2_social\n", + " 0.441203\n", + " \n", + " \n", + " coef_sr3p_ASC_sr2_univ\n", + " -0.311700\n", + " \n", + " \n", + " coef_sr3p_ASC_sr2_work\n", + " -0.768708\n", + " \n", + " \n", + " coef_sr3p_ASC_sr3p_eatout\n", + " 1.747680\n", + " \n", + " \n", + " coef_sr3p_ASC_sr3p_escort\n", + " 1.121766\n", + " \n", + " \n", + " coef_sr3p_ASC_sr3p_othdiscr\n", + " 1.207573\n", + " \n", + " \n", + " coef_sr3p_ASC_sr3p_othmaint\n", + " 1.478403\n", + " \n", + " \n", + " coef_sr3p_ASC_sr3p_school\n", + " -0.385096\n", + " \n", + " \n", + " coef_sr3p_ASC_sr3p_shopping\n", + " 1.857665\n", + " \n", + " \n", + " coef_sr3p_ASC_sr3p_social\n", + " 1.384914\n", + " \n", + " \n", + " coef_sr3p_ASC_sr3p_univ\n", + " 0.629300\n", + " \n", + " \n", + " coef_sr3p_ASC_sr3p_work\n", + " 0.254527\n", + " \n", + " \n", + " coef_sr3p_ASC_walk_eatout\n", + " -0.239650\n", + " \n", + " \n", + " coef_sr3p_ASC_walk_escort\n", + " -1.295563\n", + " \n", + " \n", + " coef_sr3p_ASC_walk_othdiscr\n", + " -0.711999\n", + " \n", + " \n", + " coef_sr3p_ASC_walk_othmaint\n", + " -0.346602\n", + " \n", + " \n", + " coef_sr3p_ASC_walk_school\n", + " -0.602570\n", + " \n", + " \n", + " coef_sr3p_ASC_walk_shopping\n", + " -0.431074\n", + " \n", + " \n", + " coef_sr3p_ASC_walk_social\n", + " -0.451426\n", + " \n", + " \n", + " coef_sr3p_ASC_walk_univ\n", + " 1.679300\n", + " \n", + " \n", + " coef_sr3p_ASC_walk_work\n", + " -0.120488\n", + " \n", + " \n", + " coef_walk_ASC_rh\n", + " -7.000000\n", + " \n", + " \n", + " coef_walk_transit_ASC_commuter_escort\n", + " 0.544200\n", + " \n", + " \n", + " coef_walk_transit_ASC_commuter_shopping_eatout_othmaint_social_othdiscr_atwork\n", + " 0.183292\n", + " \n", + " \n", + " coef_walk_transit_ASC_commuter_univ_school\n", + " 2.151500\n", + " \n", + " \n", + " coef_walk_transit_ASC_commuter_work\n", + " 0.645876\n", + " \n", + " \n", + " coef_walk_transit_ASC_express_escort\n", + " 0.754700\n", + " \n", + " \n", + " coef_walk_transit_ASC_express_shopping_eatout_othmaint_social_othdiscr_atwork\n", + " 1.094351\n", + " \n", + " \n", + " coef_walk_transit_ASC_express_univ_school\n", + " 0.735906\n", + " \n", + " \n", + " coef_walk_transit_ASC_express_work\n", + " -0.116260\n", + " \n", + " \n", + " coef_walk_transit_ASC_ferry_escort\n", + " 0.600500\n", + " \n", + " \n", + " coef_walk_transit_ASC_ferry_shopping_eatout_othmaint_social_othdiscr_atwork\n", + " -5.309557\n", + " \n", + " \n", + " coef_walk_transit_ASC_ferry_univ_school\n", + " 0.102333\n", + " \n", + " \n", + " coef_walk_transit_ASC_ferry_work\n", + " -0.283494\n", + " \n", + " \n", + " coef_walk_transit_ASC_heavyrail_escort\n", + " 1.731811\n", + " \n", + " \n", + " coef_walk_transit_ASC_heavyrail_shopping_eatout_othmaint_social_othdiscr_atwork\n", + " 1.189277\n", + " \n", + " \n", + " coef_walk_transit_ASC_heavyrail_univ_school\n", + " 1.498435\n", + " \n", + " \n", + " coef_walk_transit_ASC_heavyrail_work\n", + " 0.661041\n", + " \n", + " \n", + " coef_walk_transit_ASC_lightrail_escort\n", + " 2.373483\n", + " \n", + " \n", + " coef_walk_transit_ASC_lightrail_shopping_eatout_othmaint_social_othdiscr_atwork\n", + " 0.938829\n", + " \n", + " \n", + " coef_walk_transit_ASC_lightrail_univ_school\n", + " 1.962454\n", + " \n", + " \n", + " coef_walk_transit_ASC_lightrail_work\n", + " 0.723958\n", + " \n", + " \n", + " coef_walk_transit_ASC_rh_eatout_social_othdiscr\n", + " -4.964980\n", + " \n", + " \n", + " coef_walk_transit_ASC_rh_escort_shopping_othmaint\n", + " -5.007587\n", + " \n", + " \n", + " coef_walk_transit_ASC_rh_school\n", + " -7.198073\n", + " \n", + " \n", + " coef_walk_transit_ASC_rh_univ\n", + " -4.269100\n", + " \n", + " \n", + " coef_walk_transit_ASC_rh_work\n", + " -4.008746\n", + " \n", + " \n", + " coef_walk_transit_ASC_sr2_eatout\n", + " -2.123282\n", + " \n", + " \n", + " coef_walk_transit_ASC_sr2_escort\n", + " -0.578643\n", + " \n", + " \n", + " coef_walk_transit_ASC_sr2_othdiscr\n", + " -1.931708\n", + " \n", + " \n", + " coef_walk_transit_ASC_sr2_othmaint\n", + " -34.674600\n", + " \n", + " \n", + " coef_walk_transit_ASC_sr2_school\n", + " -3.455103\n", + " \n", + " \n", + " coef_walk_transit_ASC_sr2_shopping\n", + " -2.572471\n", + " \n", + " \n", + " coef_walk_transit_ASC_sr2_social\n", + " -2.270677\n", + " \n", + " \n", + " coef_walk_transit_ASC_sr2_univ\n", + " -4.005000\n", + " \n", + " \n", + " coef_walk_transit_ASC_sr2_work\n", + " -2.579831\n", + " \n", + " \n", + " coef_walk_transit_ASC_sr3p_eatout\n", + " -4.643497\n", + " \n", + " \n", + " coef_walk_transit_ASC_sr3p_escort\n", + " -4.036703\n", + " \n", + " \n", + " coef_walk_transit_ASC_sr3p_othdiscr\n", + " -1.885419\n", + " \n", + " \n", + " coef_walk_transit_ASC_sr3p_othmaint\n", + " -29.385800\n", + " \n", + " \n", + " coef_walk_transit_ASC_sr3p_school\n", + " -3.509061\n", + " \n", + " \n", + " coef_walk_transit_ASC_sr3p_shopping\n", + " -2.484662\n", + " \n", + " \n", + " coef_walk_transit_ASC_sr3p_social\n", + " -21.630900\n", + " \n", + " \n", + " coef_walk_transit_ASC_sr3p_univ\n", + " -28.697200\n", + " \n", + " \n", + " coef_walk_transit_ASC_sr3p_work\n", + " -3.227732\n", + " \n", + " \n", + " coef_walk_transit_ASC_walk_eatout\n", + " 1.418767\n", + " \n", + " \n", + " coef_walk_transit_ASC_walk_escort\n", + " -1.542069\n", + " \n", + " \n", + " coef_walk_transit_ASC_walk_othdiscr\n", + " -0.862913\n", + " \n", + " \n", + " coef_walk_transit_ASC_walk_othmaint\n", + " 0.213330\n", + " \n", + " \n", + " coef_walk_transit_ASC_walk_school\n", + " -1.566510\n", + " \n", + " \n", + " coef_walk_transit_ASC_walk_shopping\n", + " -1.250219\n", + " \n", + " \n", + " coef_walk_transit_ASC_walk_social\n", + " -0.846190\n", + " \n", + " \n", + " coef_walk_transit_ASC_walk_univ\n", + " -1.031100\n", + " \n", + " \n", + " coef_walk_transit_ASC_walk_work\n", + " 0.296352\n", + " \n", + " \n", + "logloss0.5159237004389526d_logloss\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - "
0
-9990.000000e+00
10.000000e+00
coef_age010_trn-8.052927e-05
coef_age1619_da-5.187809e-05
coef_age16p_sr-4.063469e-05
coef_bike_ASC_rh0.000000e+00
coef_bike_ASC_walk_eatout-5.123004e-06
coef_bike_ASC_walk_escort-3.419598e-13
coef_bike_ASC_walk_othdiscr-2.593268e-05
coef_bike_ASC_walk_othmaint-1.081020e-04
coef_bike_ASC_walk_school4.476578e-05
coef_bike_ASC_walk_shopping2.508159e-06
coef_bike_ASC_walk_social-2.900688e-12
coef_bike_ASC_walk_univ0.000000e+00
coef_bike_ASC_walk_work-2.396275e-05
coef_drive_transit_ASC_commuter_escort0.000000e+00
coef_drive_transit_ASC_commuter_shopping_eatout_othmaint_social_othdiscr_atwork-2.460074e-05
coef_drive_transit_ASC_commuter_univ_school-1.203052e-05
coef_drive_transit_ASC_commuter_work-5.739187e-06
coef_drive_transit_ASC_express_escort0.000000e+00
coef_drive_transit_ASC_express_shopping_eatout_othmaint_social_othdiscr_atwork2.861095e-05
coef_drive_transit_ASC_express_univ_school1.660556e-05
coef_drive_transit_ASC_express_work2.987642e-05
coef_drive_transit_ASC_ferry_escort0.000000e+00
coef_drive_transit_ASC_ferry_shopping_eatout_othmaint_social_othdiscr_atwork3.202672e-05
coef_drive_transit_ASC_ferry_univ_school8.151265e-06
coef_drive_transit_ASC_ferry_work-2.890979e-05
coef_drive_transit_ASC_heavyrail_escort-6.480364e-09
coef_drive_transit_ASC_heavyrail_shopping_eatout_othmaint_social_othdiscr_atwork-3.208220e-05
coef_drive_transit_ASC_heavyrail_univ_school1.938031e-05
coef_drive_transit_ASC_heavyrail_work-3.909540e-05
coef_drive_transit_ASC_lightrail_escort3.266187e-07
coef_drive_transit_ASC_lightrail_shopping_eatout_othmaint_social_othdiscr_atwork2.070144e-05
coef_drive_transit_ASC_lightrail_univ_school-2.353233e-05
coef_drive_transit_ASC_lightrail_work-7.550447e-06
coef_drive_transit_ASC_rh-4.413205e-06
coef_hhsize1_sr1.028834e-04
coef_hhsize2_sr3.066434e-05
coef_ivt_escort_shopping_eatout_othdiscr_atwork7.728991e-05
coef_ivt_othmaint_social1.115618e-04
coef_ivt_univ_school1.895929e-05
coef_ivt_work-3.266536e-05
coef_joint_auto_ASC_rh_shopping_eatout_othmaint_social_othdiscr-8.027129e-07
coef_joint_auto_ASC_rh_work_univ_school_escort_atwork0.000000e+00
coef_joint_auto_ASC_sr2_eatout_othmaint_social_othdiscr-5.293412e-05
coef_joint_auto_ASC_sr2_shopping-5.407467e-05
coef_joint_auto_ASC_sr2_work_univ_school_escort_atwork0.000000e+00
coef_joint_auto_ASC_sr3p_eatout_othmaint_social_othdiscr-3.500718e-05
coef_joint_auto_ASC_sr3p_shopping-3.393545e-11
coef_joint_auto_ASC_sr3p_work_univ_school_escort_atwork0.000000e+00
coef_joint_auto_ASC_walk_eatout_othmaint_social_othdiscr3.607641e-05
coef_joint_auto_ASC_walk_shopping-1.531238e-13
coef_joint_auto_ASC_walk_work_univ_school_escort_atwork0.000000e+00
coef_joint_bike_ASC_rh_shopping_eatout_othmaint_social_othdiscr-1.751330e-10
coef_joint_bike_ASC_rh_work_univ_school_escort_atwork0.000000e+00
coef_joint_bike_ASC_walk_eatout0.000000e+00
coef_joint_bike_ASC_walk_othdiscr-3.130754e-15
coef_joint_bike_ASC_walk_othmaint-8.694082e-14
coef_joint_bike_ASC_walk_shopping0.000000e+00
coef_joint_bike_ASC_walk_social0.000000e+00
coef_joint_bike_ASC_walk_work_univ_school_escort_atwork0.000000e+00
coef_joint_drive_transit_ASC_commuter_shopping_eatout_othmaint_social_othdiscr0.000000e+00
coef_joint_drive_transit_ASC_commuter_work_univ_school_escort_atwork0.000000e+00
coef_sov_ASC_sr3p_work_univ_school_shopping_eatout_othmaint_social_othdiscr_atwork-999.000000coef_joint_drive_transit_ASC_express_shopping_eatout_othmaint_social_othdiscr-5.692884e-09
coef_sov_ASC_walk_work-3.007257coef_joint_drive_transit_ASC_express_work_univ_school_escort_atwork0.000000e+00
coef_sr2_ASC_rh_work_school_escort_shopping_eatout_othmaint_social_othdiscr_atwork-7.000000coef_joint_drive_transit_ASC_ferry_shopping_eatout_othmaint_social_othdiscr1.048025e-05
coef_sr2_ASC_sr2_work0.197457coef_joint_drive_transit_ASC_ferry_work_univ_school_escort_atwork0.000000e+00
coef_sr2_ASC_sr3p-999.000000coef_joint_drive_transit_ASC_heavyrail_shopping_eatout_othmaint_social_othdiscr-1.010350e-05
coef_sr2_ASC_walk_work-2.222935coef_joint_drive_transit_ASC_heavyrail_work_univ_school_escort_atwork0.000000e+00
coef_sr3p_ASC_rh_work-71.917700coef_joint_drive_transit_ASC_lightrail_shopping_eatout_othmaint_social_othdiscr0.000000e+00
coef_sr3p_ASC_sr2_work-0.953951coef_joint_drive_transit_ASC_lightrail_work_univ_school_escort_atwork0.000000e+00
coef_sr3p_ASC_sr3p_work0.002282coef_joint_drive_transit_ASC_rh_shopping_eatout_othmaint_social_othdiscr-3.710584e-07
coef_sr3p_ASC_walk_work-2.356624coef_joint_drive_transit_ASC_rh_work_univ_school_escort_atwork0.000000e+00
coef_walk_ASC_rh-7.000000coef_joint_ride_hail_ASC_sr2_shopping_eatout_othmaint_social_othdiscr4.173913e-07
coef_walk_transit_ASC_commuter_work0.401200coef_joint_ride_hail_ASC_sr2_work_univ_school_escort_atwork0.000000e+00
coef_walk_transit_ASC_express_work-0.355400coef_joint_ride_hail_ASC_sr3p_shopping_eatout_othmaint_social_othdiscr4.355591e-07
coef_walk_transit_ASC_ferry_work0.527700coef_joint_ride_hail_ASC_sr3p_work_univ_school_escort_atwork0.000000e+00
coef_walk_transit_ASC_heavyrail_work0.502539coef_joint_ride_hail_ASC_taxi_shopping_eatout_othmaint_social_othdiscr-1.084345e-16
coef_walk_transit_ASC_lightrail_work0.632593coef_joint_ride_hail_ASC_taxi_work_univ_school_escort_atwork0.000000e+00
coef_walk_transit_ASC_rh_work-2.869542coef_joint_ride_hail_ASC_tnc_shared-8.027126e-07
coef_walk_transit_ASC_sr2_work-2.256686coef_joint_ride_hail_ASC_tnc_single_shopping_eatout_othmaint_social_othdiscr-2.950989e-13
coef_walk_transit_ASC_sr3p_work-2.653448coef_joint_ride_hail_ASC_tnc_single_work_univ_school_escort_atwork0.000000e+00
coef_walk_transit_ASC_walk_work-0.391438coef_joint_ride_hail_ASC_walk_shopping_eatout_othmaint_social_othdiscr-5.023739e-08
coef_bike_ASC_walk_univ-0.339900coef_joint_ride_hail_ASC_walk_transit0.000000e+00
coef_drive_transit_ASC_commuter_univ_school0.908200coef_joint_ride_hail_ASC_walk_work_univ_school_escort_atwork0.000000e+00
coef_drive_transit_ASC_express_univ_school0.322400coef_joint_walk_ASC_rh_shopping_eatout_othmaint_social_othdiscr-5.023739e-08
coef_drive_transit_ASC_ferry_univ_school1.723700coef_joint_walk_ASC_rh_work_univ_school_escort_atwork0.000000e+00
coef_drive_transit_ASC_heavyrail_univ_school0.849000coef_joint_walk_transit_ASC_commuter_shopping_eatout_othmaint_social_othdiscr0.000000e+00
coef_drive_transit_ASC_lightrail_univ_school1.443600coef_joint_walk_transit_ASC_commuter_work_univ_school_escort_atwork0.000000e+00
coef_ivt_univ_school-0.008267coef_joint_walk_transit_ASC_express_shopping_eatout_othmaint_social_othdiscr0.000000e+00
coef_ride_hail_ASC_sr2_univ-4.337200coef_joint_walk_transit_ASC_express_work_univ_school_escort_atwork0.000000e+00
coef_ride_hail_ASC_sr3p_univ-4.922000coef_joint_walk_transit_ASC_ferry_shopping_eatout_othmaint_social_othdiscr0.000000e+00
coef_ride_hail_ASC_taxi_univ-1.599400coef_joint_walk_transit_ASC_ferry_work_univ_school_escort_atwork0.000000e+00
coef_ride_hail_ASC_tnc_single_univ0.108100coef_joint_walk_transit_ASC_heavyrail_shopping_eatout_othmaint_social_othdiscr-1.622222e-05
coef_ride_hail_ASC_walk_univ_escort_shopping_othmaint-26.322181coef_joint_walk_transit_ASC_heavyrail_work_univ_school_escort_atwork0.000000e+00
coef_sov_ASC_rh_univ-6.649000coef_joint_walk_transit_ASC_lightrail_shopping_eatout_othmaint_social_othdiscr7.683959e-06
coef_sov_ASC_walk_univ-1.057900coef_joint_walk_transit_ASC_lightrail_work_univ_school_escort_atwork0.000000e+00
coef_sr2_ASC_rh_univ-6.689700coef_joint_walk_transit_ASC_rh_shopping_eatout_othmaint_social_othdiscr3.133619e-05
coef_sr2_ASC_sr2_univ0.430400coef_joint_walk_transit_ASC_rh_work_univ_school_escort_atwork0.000000e+00
coef_sr2_ASC_walk_univ1.304100coef_joint_walk_transit_ASC_sr2_eatout-1.311308e-13
coef_sr3p_ASC_rh_univ_escort_shopping_eatout_othmaint_social_othdiscr-7.000000coef_joint_walk_transit_ASC_sr2_othdiscr-1.742242e-13
coef_sr3p_ASC_sr2_univ-0.311700coef_joint_walk_transit_ASC_sr2_othmaint-6.720435e-09
coef_sr3p_ASC_sr3p_univ0.629300coef_joint_walk_transit_ASC_sr2_shopping-4.685990e-15
coef_sr3p_ASC_walk_univ1.679300coef_joint_walk_transit_ASC_sr2_social-5.557123e-14
coef_walk_transit_ASC_commuter_univ_school0.908200coef_joint_walk_transit_ASC_sr2_work_univ_school_escort_atwork0.000000e+00
coef_walk_transit_ASC_express_univ_school0.322400coef_joint_walk_transit_ASC_sr3p_eatout-1.019099e-14
coef_walk_transit_ASC_ferry_univ_school1.723700coef_joint_walk_transit_ASC_sr3p_othdiscr-1.731132e-14
coef_walk_transit_ASC_heavyrail_univ_school0.866565coef_joint_walk_transit_ASC_sr3p_othmaint-5.123603e-08
coef_walk_transit_ASC_lightrail_univ_school1.567308coef_joint_walk_transit_ASC_sr3p_shopping-4.098772e-17
coef_walk_transit_ASC_rh_univ-4.269100coef_joint_walk_transit_ASC_sr3p_social-4.280627e-21
coef_walk_transit_ASC_sr2_univ-4.005000coef_joint_walk_transit_ASC_sr3p_work_univ_school_escort_atwork0.000000e+00
coef_walk_transit_ASC_sr3p_univ-28.697200coef_joint_walk_transit_ASC_walk_eatout1.113550e-06
coef_walk_transit_ASC_walk_univ-1.031100coef_joint_walk_transit_ASC_walk_othdiscr-1.701692e-06
coef_bike_ASC_walk_school-106.063114coef_joint_walk_transit_ASC_walk_othmaint1.228869e-06
coef_ride_hail_ASC_sr2_school-17.561865coef_joint_walk_transit_ASC_walk_shopping-1.792711e-05
coef_ride_hail_ASC_sr3p_school-17.869355coef_joint_walk_transit_ASC_walk_social-5.774335e-07
coef_ride_hail_ASC_taxi_school-1.638521coef_joint_walk_transit_ASC_walk_work_univ_school_escort_atwork0.000000e+00
coef_ride_hail_ASC_tnc_single_school23.693955coef_nest_AUTO3.798269e-03
coef_ride_hail_ASC_walk_school-17.881588coef_nest_AUTO_DRIVEALONE-7.484479e-05
coef_sov_ASC_rh_school-126.456157coef_nest_AUTO_SHAREDRIDE2-1.770846e-05
coef_sov_ASC_walk_school-3.115432coef_nest_AUTO_SHAREDRIDE31.242528e-16
coef_sr2_ASC_sr2_school-0.540540coef_nest_NONMOTORIZED-2.822089e-04
coef_sr2_ASC_walk_school-2.041209coef_nest_RIDEHAIL4.806521e-02
coef_sr3p_ASC_rh_school-167.923229coef_nest_TRANSIT1.215429e-16
coef_sr3p_ASC_sr2_school-1.017529coef_nest_TRANSIT_DRIVEACCESS-5.845497e-04
coef_sr3p_ASC_sr3p_school0.193124coef_nest_TRANSIT_WALKACCESS-1.988260e-03
coef_sr3p_ASC_walk_school-2.444740coef_ride_hail_ASC_sr2_eatout_social_othdiscr-2.996284e-07
coef_walk_transit_ASC_rh_school-4.361987coef_ride_hail_ASC_sr2_escort_shopping_othmaint5.673196e-06
coef_walk_transit_ASC_sr2_school-2.270275coef_ride_hail_ASC_sr2_school-7.458355e-06
coef_walk_transit_ASC_sr3p_school-2.406738coef_ride_hail_ASC_sr2_univ0.000000e+00
coef_walk_transit_ASC_walk_school-1.495040coef_ride_hail_ASC_sr2_work8.272446e-06
coef_bike_ASC_walk_escort-13.520327coef_ride_hail_ASC_sr3p_eatout_social_othdiscr-1.686483e-07
coef_drive_transit_ASC_commuter_escort0.544200coef_ride_hail_ASC_sr3p_school8.540094e-05
coef_drive_transit_ASC_express_escort0.754700coef_ride_hail_ASC_sr3p_univ0.000000e+00
coef_drive_transit_ASC_ferry_escort0.600500coef_ride_hail_ASC_sr3p_work_escort_shopping_othmaint_atwork-1.001284e-07
coef_drive_transit_ASC_heavyrail_escort-14.234170coef_ride_hail_ASC_taxi_eatout_social_othdiscr-9.851593e-10
coef_drive_transit_ASC_lightrail_escort0.525200coef_ride_hail_ASC_taxi_escort_shopping_othmaint-1.492910e-09
coef_ivt_escort_shopping_eatout_othdiscr_atwork-0.011935coef_ride_hail_ASC_taxi_school2.540371e-06
coef_ride_hail_ASC_sr2_escort_shopping_othmaint-23.873934coef_ride_hail_ASC_taxi_univ0.000000e+00
coef_ride_hail_ASC_taxi_escort_shopping_othmaint-3.664573coef_ride_hail_ASC_taxi_work-7.883260e-09
coef_ride_hail_ASC_tnc_single_escort_shopping_othmaint24.219922coef_ride_hail_ASC_tnc_shared-8.319215e-08
coef_sov_ASC_rh_escort_shopping_eatout_othmaint_social_othdiscr0.000000coef_ride_hail_ASC_tnc_single_eatout_social_othdiscr-7.330852e-05
coef_sov_ASC_sr2_escort0.000000coef_ride_hail_ASC_tnc_single_escort_shopping_othmaint4.713975e-05
coef_sov_ASC_sr3p_escort0.000000coef_ride_hail_ASC_tnc_single_school-6.786929e-05
coef_sov_ASC_walk_escort0.000000coef_ride_hail_ASC_tnc_single_univ0.000000e+00
coef_sr2_ASC_sr2_escort0.488426coef_ride_hail_ASC_tnc_single_work-6.171617e-05
coef_sr2_ASC_walk_escort-25.486556coef_ride_hail_ASC_walk_eatout_social_othdiscr-5.637237e-06
coef_sr3p_ASC_sr2_escort-0.206514coef_ride_hail_ASC_walk_school3.297792e-05
coef_sr3p_ASC_sr3p_escort0.895787coef_ride_hail_ASC_walk_transit6.334090e-05
coef_sr3p_ASC_walk_escort-3.416048coef_ride_hail_ASC_walk_univ_escort_shopping_othmaint-2.013343e-05
coef_walk_transit_ASC_commuter_escort0.544200coef_ride_hail_ASC_walk_work-8.560547e-06
coef_walk_transit_ASC_express_escort0.754700coef_sov_ASC_rh_escort_shopping_eatout_othmaint_social_othdiscr0.000000e+00
coef_walk_transit_ASC_ferry_escort0.600500coef_sov_ASC_rh_school-4.695209e-07
coef_walk_transit_ASC_heavyrail_escort0.850280coef_sov_ASC_rh_univ0.000000e+00
coef_walk_transit_ASC_lightrail_escort1.125205coef_sov_ASC_rh_work_atwork0.000000e+00
coef_walk_transit_ASC_rh_escort_shopping_othmaint-2.359575coef_sov_ASC_sr2_escort0.000000e+00
coef_walk_transit_ASC_sr2_escort-1.020599coef_sov_ASC_sr2_work_univ_school_shopping_eatout_othmaint_social_othdiscr_atwork0.000000e+00
coef_walk_transit_ASC_sr3p_escort-184.696926coef_sov_ASC_sr3p_escort0.000000e+00
coef_walk_transit_ASC_walk_escort-88.120509coef_sov_ASC_sr3p_work_univ_school_shopping_eatout_othmaint_social_othdiscr_atwork0.000000e+00
coef_bike_ASC_walk_shopping-23.156539coef_sov_ASC_walk_eatout2.000937e-05
coef_drive_transit_ASC_commuter_shopping_eatout_othmaint_social_othdiscr_atwork0.512900coef_sov_ASC_walk_escort0.000000e+00
coef_drive_transit_ASC_express_shopping_eatout_othmaint_social_othdiscr_atwork0.664800coef_sov_ASC_walk_othdiscr-1.541924e-05
coef_drive_transit_ASC_ferry_shopping_eatout_othmaint_social_othdiscr_atwork0.646600coef_sov_ASC_walk_othmaint1.028660e-05
coef_drive_transit_ASC_heavyrail_shopping_eatout_othmaint_social_othdiscr_atwork0.540300coef_sov_ASC_walk_school3.206853e-05
coef_drive_transit_ASC_lightrail_shopping_eatout_othmaint_social_othdiscr_atwork0.539200coef_sov_ASC_walk_shopping4.947660e-06
coef_joint_auto_ASC_rh_shopping_eatout_othmaint_social_othdiscr-7.000000coef_sov_ASC_walk_social-4.512895e-05
coef_joint_auto_ASC_sr2_shopping2.775344coef_sov_ASC_walk_univ0.000000e+00
coef_joint_auto_ASC_sr3p_shopping-19.064341coef_sov_ASC_walk_work-1.780858e-04
coef_joint_auto_ASC_walk_shopping-23.468836coef_sr2_ASC_rh_univ0.000000e+00
coef_joint_bike_ASC_rh_shopping_eatout_othmaint_social_othdiscr-12.305700coef_sr2_ASC_rh_work_school_escort_shopping_eatout_othmaint_social_othdiscr_atwork0.000000e+00
coef_joint_bike_ASC_walk_shopping-7.047600coef_sr2_ASC_sr2_eatout-4.140956e-05
coef_joint_drive_transit_ASC_commuter_shopping_eatout_othmaint_social_othdiscr0.512900coef_sr2_ASC_sr2_escort4.290147e-05
coef_joint_drive_transit_ASC_express_shopping_eatout_othmaint_social_othdiscr0.664800coef_sr2_ASC_sr2_othdiscr-6.726220e-05
coef_joint_drive_transit_ASC_ferry_shopping_eatout_othmaint_social_othdiscr0.646600coef_sr2_ASC_sr2_othmaint-3.357184e-04
coef_joint_drive_transit_ASC_heavyrail_shopping_eatout_othmaint_social_othdiscr0.540300coef_sr2_ASC_sr2_school5.619690e-05
coef_joint_drive_transit_ASC_lightrail_shopping_eatout_othmaint_social_othdiscr0.539200coef_sr2_ASC_sr2_shopping5.088492e-05
coef_joint_drive_transit_ASC_rh_shopping_eatout_othmaint_social_othdiscr4.613800coef_sr2_ASC_sr2_social-1.364701e-06
coef_joint_ride_hail_ASC_sr2_shopping_eatout_othmaint_social_othdiscr-7.000000coef_sr2_ASC_sr2_univ0.000000e+00
coef_joint_ride_hail_ASC_sr3p_shopping_eatout_othmaint_social_othdiscr-7.000000coef_sr2_ASC_sr2_work3.859442e-05
coef_joint_ride_hail_ASC_taxi_shopping_eatout_othmaint_social_othdiscr-7.000000coef_sr2_ASC_sr3p0.000000e+00
coef_joint_ride_hail_ASC_tnc_single_shopping_eatout_othmaint_social_othdiscr-4.733900coef_sr2_ASC_walk_eatout-8.282582e-06
coef_joint_ride_hail_ASC_walk_shopping_eatout_othmaint_social_othdiscr-7.000000coef_sr2_ASC_walk_escort9.198932e-06
coef_joint_walk_ASC_rh_shopping_eatout_othmaint_social_othdiscr-3.036200coef_sr2_ASC_walk_othdiscr-3.271701e-05
coef_joint_walk_transit_ASC_commuter_shopping_eatout_othmaint_social_othdiscr0.512900coef_sr2_ASC_walk_othmaint-4.830644e-05
coef_joint_walk_transit_ASC_express_shopping_eatout_othmaint_social_othdiscr0.664800coef_sr2_ASC_walk_school-1.464562e-04
coef_joint_walk_transit_ASC_ferry_shopping_eatout_othmaint_social_othdiscr0.646600coef_sr2_ASC_walk_shopping-4.380221e-05
coef_joint_walk_transit_ASC_heavyrail_shopping_eatout_othmaint_social_othdiscr21.596514coef_sr2_ASC_walk_social-7.099048e-05
coef_joint_walk_transit_ASC_lightrail_shopping_eatout_othmaint_social_othdiscr0.924477coef_sr2_ASC_walk_univ0.000000e+00
coef_joint_walk_transit_ASC_rh_shopping_eatout_othmaint_social_othdiscr3.132294coef_sr2_ASC_walk_work1.223257e-05
coef_joint_walk_transit_ASC_sr2_shopping-21.576802coef_sr3p_ASC_rh_school1.022791e-05
coef_joint_walk_transit_ASC_sr3p_shopping-25.595300coef_sr3p_ASC_rh_univ_escort_shopping_eatout_othmaint_social_othdiscr0.000000e+00
coef_joint_walk_transit_ASC_walk_shopping-101.701521coef_sr3p_ASC_rh_work-3.585395e-34
coef_sov_ASC_walk_shopping-3.786742coef_sr3p_ASC_sr2_eatout4.626279e-05
coef_sr2_ASC_sr2_shopping1.746355coef_sr3p_ASC_sr2_escort1.179670e-04
coef_sr2_ASC_walk_shopping-3.653076coef_sr3p_ASC_sr2_othdiscr-2.422139e-05
coef_sr3p_ASC_sr2_shopping0.336306coef_sr3p_ASC_sr2_othmaint4.015271e-05
coef_sr3p_ASC_sr3p_shopping1.642740coef_sr3p_ASC_sr2_school-7.447033e-05
coef_sr3p_ASC_walk_shopping-3.919129coef_sr3p_ASC_sr2_shopping-1.080924e-04
coef_walk_transit_ASC_commuter_shopping_eatout_othmaint_social_othdiscr_atwork0.512900coef_sr3p_ASC_sr2_social5.325523e-05
coef_walk_transit_ASC_express_shopping_eatout_othmaint_social_othdiscr_atwork0.664800coef_sr3p_ASC_sr2_univ0.000000e+00
coef_walk_transit_ASC_ferry_shopping_eatout_othmaint_social_othdiscr_atwork0.646600coef_sr3p_ASC_sr2_work1.444028e-04
coef_walk_transit_ASC_heavyrail_shopping_eatout_othmaint_social_othdiscr_atwork0.926216coef_sr3p_ASC_sr3p_eatout-9.199681e-07
coef_walk_transit_ASC_lightrail_shopping_eatout_othmaint_social_othdiscr_atwork0.831361coef_sr3p_ASC_sr3p_escort8.270563e-05
coef_walk_transit_ASC_sr2_shopping-2.123317coef_sr3p_ASC_sr3p_othdiscr-4.927531e-06
coef_walk_transit_ASC_sr3p_shopping-91.093531coef_sr3p_ASC_sr3p_othmaint-5.334583e-05
coef_walk_transit_ASC_walk_shopping-0.813508coef_sr3p_ASC_sr3p_school-6.413479e-05
coef_bike_ASC_walk_eatout-174.816115coef_sr3p_ASC_sr3p_shopping2.347327e-06
coef_joint_auto_ASC_sr2_eatout_othmaint_social_othdiscr0.381044coef_sr3p_ASC_sr3p_social-7.650571e-05
coef_joint_auto_ASC_sr3p_eatout_othmaint_social_othdiscr0.389086coef_sr3p_ASC_sr3p_univ0.000000e+00
coef_joint_auto_ASC_walk_eatout_othmaint_social_othdiscr-4.379431coef_sr3p_ASC_sr3p_work6.672288e-05
coef_joint_bike_ASC_walk_eatout-15.558800coef_sr3p_ASC_walk_eatout-1.002897e-05
coef_joint_walk_transit_ASC_sr2_eatout-14.914320coef_sr3p_ASC_walk_escort-1.132764e-04
coef_joint_walk_transit_ASC_sr3p_eatout-16.758772coef_sr3p_ASC_walk_othdiscr1.694649e-05
coef_joint_walk_transit_ASC_walk_eatout1.101858coef_sr3p_ASC_walk_othmaint1.223450e-05
coef_ride_hail_ASC_sr2_eatout_social_othdiscr-16.851846coef_sr3p_ASC_walk_school6.705206e-05
coef_ride_hail_ASC_sr3p_eatout_social_othdiscr-11.873288coef_sr3p_ASC_walk_shopping-3.926960e-05
coef_ride_hail_ASC_taxi_eatout_social_othdiscr-2.563243coef_sr3p_ASC_walk_social-5.151184e-05
coef_ride_hail_ASC_tnc_single_eatout_social_othdiscr23.995880coef_sr3p_ASC_walk_univ0.000000e+00
coef_ride_hail_ASC_walk_eatout_social_othdiscr-17.718714coef_sr3p_ASC_walk_work-2.902005e-05
coef_sov_ASC_walk_eatout-2.633796coef_walk_ASC_rh0.000000e+00
coef_sr2_ASC_sr2_eatout1.101640coef_walk_transit_ASC_commuter_escort0.000000e+00
coef_sr2_ASC_walk_eatout-4.547177coef_walk_transit_ASC_commuter_shopping_eatout_othmaint_social_othdiscr_atwork2.306946e-06
coef_sr3p_ASC_sr2_eatout-0.213200coef_walk_transit_ASC_commuter_univ_school-1.192088e-05
coef_sr3p_ASC_sr3p_eatout1.474080coef_walk_transit_ASC_commuter_work1.090185e-05
coef_sr3p_ASC_walk_eatout-2.508248coef_walk_transit_ASC_express_escort0.000000e+00
coef_walk_transit_ASC_rh_eatout_social_othdiscr-2.658491coef_walk_transit_ASC_express_shopping_eatout_othmaint_social_othdiscr_atwork-1.268928e-04
coef_walk_transit_ASC_sr2_eatout-2.006929coef_walk_transit_ASC_express_univ_school-9.703439e-06
coef_walk_transit_ASC_sr3p_eatout-2.523163coef_walk_transit_ASC_express_work1.090671e-05
coef_walk_transit_ASC_walk_eatout0.166429coef_walk_transit_ASC_ferry_escort0.000000e+00
coef_bike_ASC_walk_othmaint-0.784009coef_walk_transit_ASC_ferry_shopping_eatout_othmaint_social_othdiscr_atwork-3.047071e-10
coef_ivt_othmaint_social-0.012116coef_walk_transit_ASC_ferry_univ_school2.887862e-05
coef_joint_bike_ASC_walk_othmaint-13.519200coef_walk_transit_ASC_ferry_work-7.060814e-06
coef_joint_walk_transit_ASC_sr2_othmaint-11.323061coef_walk_transit_ASC_heavyrail_escort8.334112e-07
coef_joint_walk_transit_ASC_sr3p_othmaint-44.010114coef_walk_transit_ASC_heavyrail_shopping_eatout_othmaint_social_othdiscr_atwork2.034887e-05
coef_joint_walk_transit_ASC_walk_othmaint-73.569640coef_walk_transit_ASC_heavyrail_univ_school1.130434e-05
coef_sov_ASC_walk_othmaint-4.426307coef_walk_transit_ASC_heavyrail_work1.800939e-05
coef_sr2_ASC_sr2_othmaint0.934836coef_walk_transit_ASC_lightrail_escort2.747481e-07
coef_sr2_ASC_walk_othmaint-3.138692coef_walk_transit_ASC_lightrail_shopping_eatout_othmaint_social_othdiscr_atwork5.538127e-05
coef_sr3p_ASC_sr2_othmaint0.042064coef_walk_transit_ASC_lightrail_univ_school-6.674879e-05
coef_sr3p_ASC_sr3p_othmaint1.128336coef_walk_transit_ASC_lightrail_work9.489701e-05
coef_sr3p_ASC_walk_othmaint-5.066409coef_walk_transit_ASC_rh_eatout_social_othdiscr4.837296e-06
coef_walk_transit_ASC_sr2_othmaint-34.674600coef_walk_transit_ASC_rh_escort_shopping_othmaint4.659828e-05
coef_walk_transit_ASC_sr3p_othmaint-29.385800coef_walk_transit_ASC_rh_school3.174726e-05
coef_walk_transit_ASC_walk_othmaint-0.288117coef_walk_transit_ASC_rh_univ0.000000e+00
coef_bike_ASC_walk_social-13.240952coef_walk_transit_ASC_rh_work-1.723890e-06
coef_joint_bike_ASC_walk_social-26.171400coef_walk_transit_ASC_sr2_eatout-1.514648e-05
coef_joint_walk_transit_ASC_sr2_social-20.502200coef_walk_transit_ASC_sr2_escort-9.735364e-06
coef_joint_walk_transit_ASC_sr3p_social-34.737800coef_walk_transit_ASC_sr2_othdiscr2.700726e-05
coef_joint_walk_transit_ASC_walk_social-2.385214coef_walk_transit_ASC_sr2_othmaint-6.519662e-20
coef_sov_ASC_walk_social-25.269333coef_walk_transit_ASC_sr2_school-2.011443e-06
coef_sr2_ASC_sr2_social0.768269coef_walk_transit_ASC_sr2_shopping-9.388409e-06
coef_sr2_ASC_walk_social-2.850657coef_walk_transit_ASC_sr2_social9.230328e-07
coef_sr3p_ASC_sr2_social-0.122347coef_walk_transit_ASC_sr2_univ0.000000e+00
coef_sr3p_ASC_sr3p_social1.210687coef_walk_transit_ASC_sr2_work-1.261236e-04
coef_sr3p_ASC_walk_social-3.080113coef_walk_transit_ASC_sr3p_eatout6.744761e-06
coef_walk_transit_ASC_sr2_social-2.064534coef_walk_transit_ASC_sr3p_escort-2.229624e-07
coef_walk_transit_ASC_sr3p_social-21.630900coef_walk_transit_ASC_sr3p_othdiscr-1.310142e-05
coef_walk_transit_ASC_walk_social-2.314604coef_walk_transit_ASC_sr3p_othmaint-1.028683e-16
coef_bike_ASC_walk_othdiscr-1.397187coef_walk_transit_ASC_sr3p_school1.154167e-04
coef_joint_bike_ASC_walk_othdiscr-14.444000coef_walk_transit_ASC_sr3p_shopping-5.588721e-05
coef_joint_walk_transit_ASC_sr2_othdiscr-14.980100coef_walk_transit_ASC_sr3p_social-1.622526e-16
coef_joint_walk_transit_ASC_sr3p_othdiscr-16.735568coef_walk_transit_ASC_sr3p_univ0.000000e+00
coef_joint_walk_transit_ASC_walk_othdiscr-25.948045coef_walk_transit_ASC_sr3p_work-1.697982e-05
coef_sov_ASC_walk_othdiscr-4.939783coef_walk_transit_ASC_walk_eatout-1.290994e-04
coef_sr2_ASC_sr2_othdiscr0.855704coef_walk_transit_ASC_walk_escort1.459589e-06
coef_sr2_ASC_walk_othdiscr-2.470470coef_walk_transit_ASC_walk_othdiscr-6.642421e-05
coef_sr3p_ASC_sr2_othdiscr-0.417630coef_walk_transit_ASC_walk_othmaint-5.294680e-05
coef_sr3p_ASC_sr3p_othdiscr0.844944coef_walk_transit_ASC_walk_school9.694344e-05
coef_sr3p_ASC_walk_othdiscr-5.841028coef_walk_transit_ASC_walk_shopping4.504021e-05
coef_walk_transit_ASC_sr2_othdiscr-1.232224coef_walk_transit_ASC_walk_social-7.533156e-05
coef_walk_transit_ASC_sr3p_othdiscr-1.199264coef_walk_transit_ASC_walk_univ0.000000e+00
coef_walk_transit_ASC_walk_othdiscr-0.980497coef_walk_transit_ASC_walk_work-1.629846e-04
loglike-7541.342641931288d_loglike\n", + "
nit304nfev317njev304status0message'Optimization terminated successfully'successTrueelapsed_time0:03:32.168906method'SLSQP'n_cases162587iteration_number304loglike-83882.486683268" + ], + "text/plain": [ + "┣ x: -999 -999.000000\n", + "┃ 1 1.000000\n", + "┃ coef_age010_trn 0.131028\n", + "┃ coef_age1619_da 0.432972\n", + "┃ coef_age16p_sr -0.403317\n", + "┃ ... \n", + "┃ coef_walk_transit_ASC_walk_school -1.566510\n", + "┃ coef_walk_transit_ASC_walk_shopping -1.250219\n", + "┃ coef_walk_transit_ASC_walk_social -0.846190\n", + "┃ coef_walk_transit_ASC_walk_univ -1.031100\n", + "┃ coef_walk_transit_ASC_walk_work 0.296352\n", + "┃ Length: 272, dtype: float64\n", + "┣ logloss: 0.5159237004389526\n", + "┣ d_logloss: -999 0.000000\n", + "┃ 1 0.000000\n", + "┃ coef_age010_trn -0.000081\n", + "┃ coef_age1619_da -0.000052\n", + "┃ coef_age16p_sr -0.000041\n", + "┃ ... \n", + "┃ coef_walk_transit_ASC_walk_school 0.000097\n", + "┃ coef_walk_transit_ASC_walk_shopping 0.000045\n", + "┃ coef_walk_transit_ASC_walk_social -0.000075\n", + "┃ coef_walk_transit_ASC_walk_univ 0.000000\n", + "┃ coef_walk_transit_ASC_walk_work -0.000163\n", + "┃ Length: 272, dtype: float64\n", + "┣ nit: 304\n", + "┣ nfev: 317\n", + "┣ njev: 304\n", + "┣ status: 0\n", + "┣ message: 'Optimization terminated successfully'\n", + "┣ success: True\n", + "┣ elapsed_time: datetime.timedelta(seconds=212, microseconds=168906)\n", + "┣ method: 'SLSQP'\n", + "┣ n_cases: 162587\n", + "┣ iteration_number: 304\n", + "┣ loglike: -83882.486683268" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.maximize_loglike(method='SLSQP', options={\"maxiter\": 1000})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Estimated coefficients" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - "
0
 ValueNull Value
Parameter  
-9990.000000e+00-999-999. 0.00
10.000000e+001 1.00 0.00
coef_age010_trn6.536294e-06coef_age010_trn 0.131 0.00
coef_age1619_da-2.022165e-05coef_age1619_da 0.433 0.00
coef_age16p_sr-1.531626e-03coef_age16p_sr-0.403 0.00
coef_bike_ASC_rh0.000000e+00coef_bike_ASC_rh-7.00 0.00
coef_bike_ASC_walk_work4.331337e-05coef_bike_ASC_walk_eatout-1.69 0.00
coef_drive_transit_ASC_commuter_work-4.495517e-05coef_bike_ASC_walk_escort-13.5 0.00
coef_drive_transit_ASC_express_work0.000000e+00coef_bike_ASC_walk_othdiscr-1.32 0.00
coef_drive_transit_ASC_ferry_work0.000000e+00coef_bike_ASC_walk_othmaint-0.712 0.00
coef_drive_transit_ASC_heavyrail_work-4.473961e-10coef_bike_ASC_walk_school-2.41 0.00
coef_drive_transit_ASC_lightrail_work-2.507220e-09coef_bike_ASC_walk_shopping-1.58 0.00
coef_drive_transit_ASC_rh-1.718236e-62coef_bike_ASC_walk_social-13.2 0.00
coef_hhsize1_sr4.378810e-05coef_bike_ASC_walk_univ-0.340 0.00
coef_hhsize2_sr-9.408883e-04coef_bike_ASC_walk_work-2.06 0.00
coef_ivt_work5.462510e-02coef_drive_transit_ASC_commuter_escort 0.544 0.00
coef_joint_auto_ASC_rh_work_univ_school_escort_atwork0.000000e+00coef_drive_transit_ASC_commuter_shopping_eatout_othmaint_social_othdiscr_atwork 6.90 0.00
coef_joint_auto_ASC_sr2_work_univ_school_escort_atwork0.000000e+00coef_drive_transit_ASC_commuter_univ_school 3.47 0.00
coef_joint_auto_ASC_sr3p_work_univ_school_escort_atwork0.000000e+00coef_drive_transit_ASC_commuter_work 0.929 0.00
coef_joint_auto_ASC_walk_work_univ_school_escort_atwork0.000000e+00coef_drive_transit_ASC_express_escort 0.755 0.00
coef_joint_bike_ASC_rh_work_univ_school_escort_atwork0.000000e+00coef_drive_transit_ASC_express_shopping_eatout_othmaint_social_othdiscr_atwork 0.673 0.00
coef_joint_bike_ASC_walk_work_univ_school_escort_atwork0.000000e+00coef_drive_transit_ASC_express_univ_school-0.0910 0.00
coef_joint_drive_transit_ASC_commuter_work_univ_school_escort_atwork0.000000e+00coef_drive_transit_ASC_express_work 0.0633 0.00
coef_joint_drive_transit_ASC_express_work_univ_school_escort_atwork0.000000e+00coef_drive_transit_ASC_ferry_escort 0.601 0.00
coef_joint_drive_transit_ASC_ferry_work_univ_school_escort_atwork0.000000e+00coef_drive_transit_ASC_ferry_shopping_eatout_othmaint_social_othdiscr_atwork-1.44 0.00
coef_joint_drive_transit_ASC_heavyrail_work_univ_school_escort_atwork0.000000e+00coef_drive_transit_ASC_ferry_univ_school 0.935 0.00
coef_joint_drive_transit_ASC_lightrail_work_univ_school_escort_atwork0.000000e+00coef_drive_transit_ASC_ferry_work 0.556 0.00
coef_joint_drive_transit_ASC_rh_work_univ_school_escort_atwork0.000000e+00coef_drive_transit_ASC_heavyrail_escort-3.97 0.00
coef_joint_ride_hail_ASC_sr2_work_univ_school_escort_atwork0.000000e+00coef_drive_transit_ASC_heavyrail_shopping_eatout_othmaint_social_othdiscr_atwork 0.985 0.00
coef_joint_ride_hail_ASC_sr3p_work_univ_school_escort_atwork0.000000e+00coef_drive_transit_ASC_heavyrail_univ_school 0.730 0.00
coef_joint_ride_hail_ASC_taxi_work_univ_school_escort_atwork0.000000e+00coef_drive_transit_ASC_heavyrail_work 0.822 0.00
coef_joint_ride_hail_ASC_tnc_shared0.000000e+00coef_drive_transit_ASC_lightrail_escort 2.31 0.00
coef_joint_ride_hail_ASC_tnc_single_work_univ_school_escort_atwork0.000000e+00coef_drive_transit_ASC_lightrail_shopping_eatout_othmaint_social_othdiscr_atwork 0.502 0.00
coef_joint_ride_hail_ASC_walk_transit0.000000e+00coef_drive_transit_ASC_lightrail_univ_school 3.94 0.00
coef_joint_ride_hail_ASC_walk_work_univ_school_escort_atwork0.000000e+00coef_drive_transit_ASC_lightrail_work 0.635 0.00
coef_joint_walk_ASC_rh_work_univ_school_escort_atwork0.000000e+00coef_drive_transit_ASC_rh-3.91 0.00
coef_joint_walk_transit_ASC_commuter_work_univ_school_escort_atwork0.000000e+00coef_hhsize1_sr-0.790 0.00
coef_joint_walk_transit_ASC_express_work_univ_school_escort_atwork0.000000e+00coef_hhsize2_sr-0.0583 0.00
coef_joint_walk_transit_ASC_ferry_work_univ_school_escort_atwork0.000000e+00coef_ivt_escort_shopping_eatout_othdiscr_atwork-0.0120 0.00
coef_joint_walk_transit_ASC_heavyrail_work_univ_school_escort_atwork0.000000e+00coef_ivt_othmaint_social-0.00816 0.00
coef_joint_walk_transit_ASC_lightrail_work_univ_school_escort_atwork0.000000e+00coef_ivt_univ_school-0.0162 0.00
coef_joint_walk_transit_ASC_rh_work_univ_school_escort_atwork0.000000e+00coef_ivt_work-0.0150 0.00
coef_joint_walk_transit_ASC_sr2_work_univ_school_escort_atwork0.000000e+00coef_joint_auto_ASC_rh_shopping_eatout_othmaint_social_othdiscr-7.35 0.00
coef_joint_walk_transit_ASC_sr3p_work_univ_school_escort_atwork0.000000e+00coef_joint_auto_ASC_rh_work_univ_school_escort_atwork 0.00 0.00
coef_joint_walk_transit_ASC_walk_work_univ_school_escort_atwork0.000000e+00coef_joint_auto_ASC_sr2_eatout_othmaint_social_othdiscr 1.28 0.00
coef_nest_AUTO0.000000e+00coef_joint_auto_ASC_sr2_shopping 2.35 0.00
coef_nest_AUTO_DRIVEALONE0.000000e+00coef_joint_auto_ASC_sr2_work_univ_school_escort_atwork 0.00 0.00
coef_nest_AUTO_SHAREDRIDE20.000000e+00coef_joint_auto_ASC_sr3p_eatout_othmaint_social_othdiscr 1.25 0.00
coef_nest_AUTO_SHAREDRIDE30.000000e+00coef_joint_auto_ASC_sr3p_shopping-19.0 0.00
coef_nest_NONMOTORIZED0.000000e+00coef_joint_auto_ASC_sr3p_work_univ_school_escort_atwork 0.00 0.00
coef_nest_RIDEHAIL0.000000e+00coef_joint_auto_ASC_walk_eatout_othmaint_social_othdiscr-0.0990 0.00
coef_nest_TRANSIT0.000000e+00coef_joint_auto_ASC_walk_shopping-23.5 0.00
coef_nest_TRANSIT_DRIVEACCESS0.000000e+00coef_joint_auto_ASC_walk_work_univ_school_escort_atwork 0.00 0.00
coef_nest_TRANSIT_WALKACCESS0.000000e+00coef_joint_bike_ASC_rh_shopping_eatout_othmaint_social_othdiscr-12.3 0.00
coef_ride_hail_ASC_sr2_work-1.076131e-17coef_joint_bike_ASC_rh_work_univ_school_escort_atwork 0.00 0.00
coef_ride_hail_ASC_sr3p_work_escort_shopping_othmaint_atwork-4.912817e-20coef_joint_bike_ASC_walk_eatout-15.6 0.00
coef_ride_hail_ASC_taxi_work-2.445223e-27coef_joint_bike_ASC_walk_othdiscr-14.4 0.00
coef_ride_hail_ASC_tnc_shared9.512800e-04coef_joint_bike_ASC_walk_othmaint-13.5 0.00
coef_ride_hail_ASC_tnc_single_work-5.210129e-04coef_joint_bike_ASC_walk_shopping-7.05 0.00
coef_ride_hail_ASC_walk_transit-1.264748e-04coef_joint_bike_ASC_walk_social-26.2 0.00
coef_ride_hail_ASC_walk_work-1.549984e-05coef_joint_bike_ASC_walk_work_univ_school_escort_atwork 0.00 0.00
coef_sov_ASC_rh_work_atwork0.000000e+00coef_joint_drive_transit_ASC_commuter_shopping_eatout_othmaint_social_othdiscr 0.513 0.00
coef_sov_ASC_sr2_work_univ_school_shopping_eatout_othmaint_social_othdiscr_atwork0.000000e+00coef_joint_drive_transit_ASC_commuter_work_univ_school_escort_atwork 0.00 0.00
coef_sov_ASC_sr3p_work_univ_school_shopping_eatout_othmaint_social_othdiscr_atwork0.000000e+00coef_joint_drive_transit_ASC_express_shopping_eatout_othmaint_social_othdiscr-0.806 0.00
coef_sov_ASC_walk_work-1.293137e-04coef_joint_drive_transit_ASC_express_work_univ_school_escort_atwork 0.00 0.00
coef_sr2_ASC_rh_work_school_escort_shopping_eatout_othmaint_social_othdiscr_atwork0.000000e+00coef_joint_drive_transit_ASC_ferry_shopping_eatout_othmaint_social_othdiscr 2.03 0.00
coef_sr2_ASC_sr2_work-4.657072e-04coef_joint_drive_transit_ASC_ferry_work_univ_school_escort_atwork 0.00 0.00
coef_sr2_ASC_sr3p0.000000e+00coef_joint_drive_transit_ASC_heavyrail_shopping_eatout_othmaint_social_othdiscr 3.19 0.00
coef_sr2_ASC_walk_work-5.813633e-05coef_joint_drive_transit_ASC_heavyrail_work_univ_school_escort_atwork 0.00 0.00
coef_sr3p_ASC_rh_work-8.206902e-30coef_joint_drive_transit_ASC_lightrail_shopping_eatout_othmaint_social_othdiscr 0.539 0.00
coef_sr3p_ASC_sr2_work2.351910e-04coef_joint_drive_transit_ASC_lightrail_work_univ_school_escort_atwork 0.00 0.00
coef_sr3p_ASC_sr3p_work-5.735054e-04coef_joint_drive_transit_ASC_rh_shopping_eatout_othmaint_social_othdiscr 2.05 0.00
coef_sr3p_ASC_walk_work3.486286e-05coef_joint_drive_transit_ASC_rh_work_univ_school_escort_atwork 0.00 0.00
coef_walk_ASC_rh0.000000e+00coef_joint_ride_hail_ASC_sr2_shopping_eatout_othmaint_social_othdiscr-6.82 0.00
coef_walk_transit_ASC_commuter_work0.000000e+00coef_joint_ride_hail_ASC_sr2_work_univ_school_escort_atwork 0.00 0.00
coef_walk_transit_ASC_express_work0.000000e+00coef_joint_ride_hail_ASC_sr3p_shopping_eatout_othmaint_social_othdiscr-6.82 0.00
coef_walk_transit_ASC_ferry_work0.000000e+00coef_joint_ride_hail_ASC_sr3p_work_univ_school_escort_atwork 0.00 0.00
coef_walk_transit_ASC_heavyrail_work3.025768e-04coef_joint_ride_hail_ASC_taxi_shopping_eatout_othmaint_social_othdiscr-7.00 0.00
coef_walk_transit_ASC_lightrail_work-1.644943e-03coef_joint_ride_hail_ASC_taxi_work_univ_school_escort_atwork 0.00 0.00
coef_walk_transit_ASC_rh_work-2.191119e-05coef_joint_ride_hail_ASC_tnc_shared-0.346 0.00
coef_walk_transit_ASC_sr2_work5.241777e-05coef_joint_ride_hail_ASC_tnc_single_shopping_eatout_othmaint_social_othdiscr-4.73 0.00
coef_walk_transit_ASC_sr3p_work-2.945579e-05coef_joint_ride_hail_ASC_tnc_single_work_univ_school_escort_atwork 0.00 0.00
coef_walk_transit_ASC_walk_work6.752091e-04coef_joint_ride_hail_ASC_walk_shopping_eatout_othmaint_social_othdiscr-7.01 0.00
coef_bike_ASC_walk_univ0.000000e+00coef_joint_ride_hail_ASC_walk_transit 0.00 0.00
coef_drive_transit_ASC_commuter_univ_school0.000000e+00coef_joint_ride_hail_ASC_walk_work_univ_school_escort_atwork 0.00 0.00
coef_drive_transit_ASC_express_univ_school0.000000e+00coef_joint_walk_ASC_rh_shopping_eatout_othmaint_social_othdiscr-3.05 0.00
coef_drive_transit_ASC_ferry_univ_school0.000000e+00coef_joint_walk_ASC_rh_work_univ_school_escort_atwork 0.00 0.00
coef_drive_transit_ASC_heavyrail_univ_school0.000000e+00coef_joint_walk_transit_ASC_commuter_shopping_eatout_othmaint_social_othdiscr 0.513 0.00
coef_drive_transit_ASC_lightrail_univ_school0.000000e+00coef_joint_walk_transit_ASC_commuter_work_univ_school_escort_atwork 0.00 0.00
coef_ivt_univ_school-1.050483e-02coef_joint_walk_transit_ASC_express_shopping_eatout_othmaint_social_othdiscr 0.665 0.00
coef_ride_hail_ASC_sr2_univ0.000000e+00coef_joint_walk_transit_ASC_express_work_univ_school_escort_atwork 0.00 0.00
coef_ride_hail_ASC_sr3p_univ0.000000e+00coef_joint_walk_transit_ASC_ferry_shopping_eatout_othmaint_social_othdiscr 0.647 0.00
coef_ride_hail_ASC_taxi_univ0.000000e+00coef_joint_walk_transit_ASC_ferry_work_univ_school_escort_atwork 0.00 0.00
coef_ride_hail_ASC_tnc_single_univ0.000000e+00coef_joint_walk_transit_ASC_heavyrail_shopping_eatout_othmaint_social_othdiscr 2.77 0.00
coef_ride_hail_ASC_walk_univ_escort_shopping_othmaint-2.749099e-18coef_joint_walk_transit_ASC_heavyrail_work_univ_school_escort_atwork 0.00 0.00
coef_sov_ASC_rh_univ0.000000e+00coef_joint_walk_transit_ASC_lightrail_shopping_eatout_othmaint_social_othdiscr 0.728 0.00
coef_sov_ASC_walk_univ0.000000e+00coef_joint_walk_transit_ASC_lightrail_work_univ_school_escort_atwork 0.00 0.00
coef_sr2_ASC_rh_univ0.000000e+00coef_joint_walk_transit_ASC_rh_shopping_eatout_othmaint_social_othdiscr 0.0739 0.00
coef_sr2_ASC_sr2_univ0.000000e+00coef_joint_walk_transit_ASC_rh_work_univ_school_escort_atwork 0.00 0.00
coef_sr2_ASC_walk_univ0.000000e+00coef_joint_walk_transit_ASC_sr2_eatout-14.9 0.00
coef_sr3p_ASC_rh_univ_escort_shopping_eatout_othmaint_social_othdiscr0.000000e+00coef_joint_walk_transit_ASC_sr2_othdiscr-15.0 0.00
coef_sr3p_ASC_sr2_univ0.000000e+00coef_joint_walk_transit_ASC_sr2_othmaint-5.32 0.00
coef_sr3p_ASC_sr3p_univ0.000000e+00coef_joint_walk_transit_ASC_sr2_shopping-21.6 0.00
coef_sr3p_ASC_walk_univ0.000000e+00coef_joint_walk_transit_ASC_sr2_social-20.5 0.00
coef_walk_transit_ASC_commuter_univ_school0.000000e+00
coef_joint_walk_transit_ASC_sr2_work_univ_school_escort_atwork 0.00 0.00
coef_walk_transit_ASC_express_univ_school0.000000e+00coef_joint_walk_transit_ASC_sr3p_eatout-16.8 0.00
coef_walk_transit_ASC_ferry_univ_school0.000000e+00coef_joint_walk_transit_ASC_sr3p_othdiscr-16.7 0.00
coef_walk_transit_ASC_heavyrail_univ_school-5.322431e-05coef_joint_walk_transit_ASC_sr3p_othmaint-3.97 0.00
coef_walk_transit_ASC_lightrail_univ_school1.268521e-04coef_joint_walk_transit_ASC_sr3p_shopping-25.6 0.00
coef_walk_transit_ASC_rh_univ0.000000e+00coef_joint_walk_transit_ASC_sr3p_social-34.7 0.00
coef_walk_transit_ASC_sr2_univ0.000000e+00coef_joint_walk_transit_ASC_sr3p_work_univ_school_escort_atwork 0.00 0.00
coef_walk_transit_ASC_sr3p_univ0.000000e+00coef_joint_walk_transit_ASC_walk_eatout 3.42 0.00
coef_walk_transit_ASC_walk_univ0.000000e+00coef_joint_walk_transit_ASC_walk_othdiscr-1.02 0.00
coef_bike_ASC_walk_school-2.045778e-57coef_joint_walk_transit_ASC_walk_othmaint 0.283 0.00
coef_ride_hail_ASC_sr2_school-7.168630e-16coef_joint_walk_transit_ASC_walk_shopping 0.717 0.00
coef_ride_hail_ASC_sr3p_school-4.930109e-16coef_joint_walk_transit_ASC_walk_social-2.27 0.00
coef_ride_hail_ASC_taxi_school-4.621869e-27coef_joint_walk_transit_ASC_walk_work_univ_school_escort_atwork 0.00 0.00
coef_ride_hail_ASC_tnc_single_school-1.784036e-04coef_nest_AUTO 0.720 1.00
coef_ride_hail_ASC_walk_school-4.237276e-16coef_nest_AUTO_DRIVEALONE 0.350 1.00
coef_sov_ASC_rh_school-4.635032e-48coef_nest_AUTO_SHAREDRIDE2 0.350 1.00
coef_sov_ASC_walk_school-2.359157e-05coef_nest_AUTO_SHAREDRIDE3 0.350 1.00
coef_sr2_ASC_sr2_school5.082394e-05coef_nest_NONMOTORIZED 0.720 1.00
coef_sr2_ASC_walk_school-3.377311e-05coef_nest_RIDEHAIL 0.360 1.00
coef_sr3p_ASC_rh_school-8.786869e-64coef_nest_TRANSIT 0.720 1.00
coef_sr3p_ASC_sr2_school-1.979710e-04coef_nest_TRANSIT_DRIVEACCESS 0.500 1.00
coef_sr3p_ASC_sr3p_school2.444092e-04coef_nest_TRANSIT_WALKACCESS 0.500 1.00
coef_sr3p_ASC_walk_school-1.610767e-04coef_ride_hail_ASC_sr2_eatout_social_othdiscr-6.47 0.00
coef_walk_transit_ASC_rh_school1.961319e-05coef_ride_hail_ASC_sr2_escort_shopping_othmaint-3.84 0.00
coef_walk_transit_ASC_sr2_school2.811230e-05coef_ride_hail_ASC_sr2_school-1.92 0.00
coef_walk_transit_ASC_sr3p_school-4.190001e-05coef_ride_hail_ASC_sr2_univ-4.34 0.00
coef_walk_transit_ASC_walk_school-1.524977e-05coef_ride_hail_ASC_sr2_work-12.5 0.00
coef_bike_ASC_walk_escort-8.352243e-10coef_ride_hail_ASC_sr3p_eatout_social_othdiscr-6.91 0.00
coef_drive_transit_ASC_commuter_escort0.000000e+00coef_ride_hail_ASC_sr3p_school-8.86 0.00
coef_drive_transit_ASC_express_escort0.000000e+00coef_ride_hail_ASC_sr3p_univ-4.92 0.00
coef_drive_transit_ASC_ferry_escort0.000000e+00coef_ride_hail_ASC_sr3p_work_escort_shopping_othmaint_atwork-10.1 0.00
coef_drive_transit_ASC_heavyrail_escort-1.175371e-11coef_ride_hail_ASC_taxi_eatout_social_othdiscr-2.56 0.00
coef_drive_transit_ASC_lightrail_escort0.000000e+00coef_ride_hail_ASC_taxi_escort_shopping_othmaint-3.67 0.00
coef_ivt_escort_shopping_eatout_othdiscr_atwork-7.640350e-02coef_ride_hail_ASC_taxi_school 0.195 0.00
coef_ride_hail_ASC_sr2_escort_shopping_othmaint-2.138916e-17coef_ride_hail_ASC_taxi_univ-1.60 0.00
coef_ride_hail_ASC_taxi_escort_shopping_othmaint-2.798746e-29coef_ride_hail_ASC_taxi_work-2.42 0.00
coef_ride_hail_ASC_tnc_single_escort_shopping_othmaint9.394624e-05coef_ride_hail_ASC_tnc_shared 0.940 0.00
coef_sov_ASC_rh_escort_shopping_eatout_othmaint_social_othdiscr0.000000e+00coef_ride_hail_ASC_tnc_single_eatout_social_othdiscr 3.02 0.00
coef_sov_ASC_sr2_escort0.000000e+00coef_ride_hail_ASC_tnc_single_escort_shopping_othmaint 2.44 0.00
coef_sov_ASC_sr3p_escort0.000000e+00coef_ride_hail_ASC_tnc_single_school 2.04 0.00
coef_sov_ASC_walk_escort0.000000e+00coef_ride_hail_ASC_tnc_single_univ 0.108 0.00
coef_sr2_ASC_sr2_escort-6.160566e-04coef_ride_hail_ASC_tnc_single_work 2.66 0.00
coef_sr2_ASC_walk_escort-1.374539e-08coef_ride_hail_ASC_walk_eatout_social_othdiscr-1.92 0.00
coef_sr3p_ASC_sr2_escort4.939249e-05coef_ride_hail_ASC_walk_school-0.961 0.00
coef_sr3p_ASC_sr3p_escort-5.312809e-05coef_ride_hail_ASC_walk_transit 1.26 0.00
coef_sr3p_ASC_walk_escort7.813745e-07coef_ride_hail_ASC_walk_univ_escort_shopping_othmaint-3.68 0.00
coef_walk_transit_ASC_commuter_escort0.000000e+00coef_ride_hail_ASC_walk_work 1.33 0.00
coef_walk_transit_ASC_express_escort0.000000e+00coef_sov_ASC_rh_escort_shopping_eatout_othmaint_social_othdiscr 0.00 0.00
coef_walk_transit_ASC_ferry_escort0.000000e+00coef_sov_ASC_rh_school-9.21 0.00
coef_walk_transit_ASC_heavyrail_escort1.847275e-05coef_sov_ASC_rh_univ-6.65 0.00
coef_walk_transit_ASC_lightrail_escort-6.175222e-05coef_sov_ASC_rh_work_atwork-7.00 0.00
coef_walk_transit_ASC_rh_escort_shopping_othmaint-3.544690e-05coef_sov_ASC_sr2_escort 0.00 0.00
coef_walk_transit_ASC_sr2_escort-4.425501e-05coef_sov_ASC_sr2_work_univ_school_shopping_eatout_othmaint_social_othdiscr_atwork-999. 0.00
coef_walk_transit_ASC_sr3p_escort-4.715077e-99coef_sov_ASC_sr3p_escort 0.00 0.00
coef_walk_transit_ASC_walk_escort-5.506864e-35coef_sov_ASC_sr3p_work_univ_school_shopping_eatout_othmaint_social_othdiscr_atwork-999. 0.00
coef_bike_ASC_walk_shopping-1.404547e-12coef_sov_ASC_walk_eatout-1.88 0.00
coef_drive_transit_ASC_commuter_shopping_eatout_othmaint_social_othdiscr_atwork0.000000e+00coef_sov_ASC_walk_escort 0.00 0.00
coef_drive_transit_ASC_express_shopping_eatout_othmaint_social_othdiscr_atwork0.000000e+00coef_sov_ASC_walk_othdiscr-1.66 0.00
coef_drive_transit_ASC_ferry_shopping_eatout_othmaint_social_othdiscr_atwork0.000000e+00coef_sov_ASC_walk_othmaint-1.38 0.00
coef_drive_transit_ASC_heavyrail_shopping_eatout_othmaint_social_othdiscr_atwork0.000000e+00coef_sov_ASC_walk_school-2.30 0.00
coef_drive_transit_ASC_lightrail_shopping_eatout_othmaint_social_othdiscr_atwork0.000000e+00coef_sov_ASC_walk_shopping-1.59 0.00
coef_joint_auto_ASC_rh_shopping_eatout_othmaint_social_othdiscr0.000000e+00coef_sov_ASC_walk_social-1.87 0.00
coef_joint_auto_ASC_sr2_shopping1.199811e-05coef_sov_ASC_walk_univ-1.06 0.00
coef_joint_auto_ASC_sr3p_shopping-5.796288e-07coef_sov_ASC_walk_work-1.17 0.00
coef_joint_auto_ASC_walk_shopping-1.431461e-09coef_sr2_ASC_rh_univ-6.69 0.00
coef_joint_bike_ASC_rh_shopping_eatout_othmaint_social_othdiscr0.000000e+00coef_sr2_ASC_rh_work_school_escort_shopping_eatout_othmaint_social_othdiscr_atwork-7.00 0.00
coef_joint_bike_ASC_walk_shopping0.000000e+00coef_sr2_ASC_sr2_eatout 1.54 0.00
coef_joint_drive_transit_ASC_commuter_shopping_eatout_othmaint_social_othdiscr0.000000e+00coef_sr2_ASC_sr2_escort 0.829 0.00
coef_joint_drive_transit_ASC_express_shopping_eatout_othmaint_social_othdiscr0.000000e+00coef_sr2_ASC_sr2_othdiscr 1.16 0.00
coef_joint_drive_transit_ASC_ferry_shopping_eatout_othmaint_social_othdiscr0.000000e+00coef_sr2_ASC_sr2_othmaint 1.50 0.00
coef_joint_drive_transit_ASC_heavyrail_shopping_eatout_othmaint_social_othdiscr0.000000e+00coef_sr2_ASC_sr2_school-0.206 0.00
coef_joint_drive_transit_ASC_lightrail_shopping_eatout_othmaint_social_othdiscr0.000000e+00coef_sr2_ASC_sr2_shopping 1.78 0.00
coef_joint_drive_transit_ASC_rh_shopping_eatout_othmaint_social_othdiscr0.000000e+00coef_sr2_ASC_sr2_social 0.975 0.00
coef_joint_ride_hail_ASC_sr2_shopping_eatout_othmaint_social_othdiscr0.000000e+00coef_sr2_ASC_sr2_univ 0.430 0.00
coef_joint_ride_hail_ASC_sr3p_shopping_eatout_othmaint_social_othdiscr0.000000e+00coef_sr2_ASC_sr2_work 0.470 0.00
coef_joint_ride_hail_ASC_taxi_shopping_eatout_othmaint_social_othdiscr0.000000e+00coef_sr2_ASC_sr3p-999. 0.00
coef_joint_ride_hail_ASC_tnc_single_shopping_eatout_othmaint_social_othdiscr0.000000e+00coef_sr2_ASC_walk_eatout-0.189 0.00
coef_joint_ride_hail_ASC_walk_shopping_eatout_othmaint_social_othdiscr0.000000e+00coef_sr2_ASC_walk_escort-2.21 0.00
coef_joint_walk_ASC_rh_shopping_eatout_othmaint_social_othdiscr0.000000e+00coef_sr2_ASC_walk_othdiscr-0.449 0.00
coef_joint_walk_transit_ASC_commuter_shopping_eatout_othmaint_social_othdiscr0.000000e+00coef_sr2_ASC_walk_othmaint-0.603 0.00
coef_joint_walk_transit_ASC_express_shopping_eatout_othmaint_social_othdiscr0.000000e+00coef_sr2_ASC_walk_school-0.134 0.00
coef_joint_walk_transit_ASC_ferry_shopping_eatout_othmaint_social_othdiscr0.000000e+00coef_sr2_ASC_walk_shopping-0.528 0.00
coef_joint_walk_transit_ASC_heavyrail_shopping_eatout_othmaint_social_othdiscr3.150898e-09coef_sr2_ASC_walk_social-0.791 0.00
coef_joint_walk_transit_ASC_lightrail_shopping_eatout_othmaint_social_othdiscr-1.676959e-05coef_sr2_ASC_walk_univ 1.30 0.00
coef_joint_walk_transit_ASC_rh_shopping_eatout_othmaint_social_othdiscr-4.853053e-05coef_sr2_ASC_walk_work-0.125 0.00
coef_joint_walk_transit_ASC_sr2_shopping-6.388223e-11coef_sr3p_ASC_rh_school-6.90 0.00
coef_joint_walk_transit_ASC_sr3p_shopping-3.009123e-13coef_sr3p_ASC_rh_univ_escort_shopping_eatout_othmaint_social_othdiscr-7.00 0.00
coef_joint_walk_transit_ASC_walk_shopping-1.854492e-40coef_sr3p_ASC_rh_work-71.9 0.00
coef_sov_ASC_walk_shopping1.979504e-05coef_sr3p_ASC_sr2_eatout 0.0170 0.00
coef_sr2_ASC_sr2_shopping-1.633169e-04coef_sr3p_ASC_sr2_escort 0.132 0.00
coef_sr2_ASC_walk_shopping-2.087183e-05coef_sr3p_ASC_sr2_othdiscr-0.193 0.00
coef_sr3p_ASC_sr2_shopping-2.114611e-05coef_sr3p_ASC_sr2_othmaint 0.0597 0.00
coef_sr3p_ASC_sr3p_shopping-7.777893e-06coef_sr3p_ASC_sr2_school-1.38 0.00
coef_sr3p_ASC_walk_shopping-5.499761e-05coef_sr3p_ASC_sr2_shopping 0.409 0.00
coef_walk_transit_ASC_commuter_shopping_eatout_othmaint_social_othdiscr_atwork0.000000e+00coef_sr3p_ASC_sr2_social 0.441 0.00
coef_walk_transit_ASC_express_shopping_eatout_othmaint_social_othdiscr_atwork0.000000e+00coef_sr3p_ASC_sr2_univ-0.312 0.00
coef_walk_transit_ASC_ferry_shopping_eatout_othmaint_social_othdiscr_atwork0.000000e+00coef_sr3p_ASC_sr2_work-0.769 0.00
coef_walk_transit_ASC_heavyrail_shopping_eatout_othmaint_social_othdiscr_atwork-9.355912e-05coef_sr3p_ASC_sr3p_eatout 1.75 0.00
coef_walk_transit_ASC_lightrail_shopping_eatout_othmaint_social_othdiscr_atwork1.458827e-04coef_sr3p_ASC_sr3p_escort 1.12 0.00
coef_walk_transit_ASC_sr2_shopping-4.838269e-05coef_sr3p_ASC_sr3p_othdiscr 1.21 0.00
coef_walk_transit_ASC_sr3p_shopping-7.841219e-48coef_sr3p_ASC_sr3p_othmaint 1.48 0.00
coef_walk_transit_ASC_walk_shopping-5.761910e-05coef_sr3p_ASC_sr3p_school-0.385 0.00
coef_bike_ASC_walk_eatout-5.163611e-94coef_sr3p_ASC_sr3p_shopping 1.86 0.00
coef_joint_auto_ASC_sr2_eatout_othmaint_social_othdiscr1.042498e-05coef_sr3p_ASC_sr3p_social 1.38 0.00
coef_joint_auto_ASC_sr3p_eatout_othmaint_social_othdiscr6.920224e-06coef_sr3p_ASC_sr3p_univ 0.629 0.00
coef_joint_auto_ASC_walk_eatout_othmaint_social_othdiscr-5.600401e-05coef_sr3p_ASC_sr3p_work 0.255 0.00
coef_joint_bike_ASC_walk_eatout0.000000e+00coef_sr3p_ASC_walk_eatout-0.240 0.00
coef_joint_walk_transit_ASC_sr2_eatout-2.828607e-08coef_sr3p_ASC_walk_escort-1.30 0.00
coef_joint_walk_transit_ASC_sr3p_eatout-2.226057e-09coef_sr3p_ASC_walk_othdiscr-0.712 0.00
coef_joint_walk_transit_ASC_walk_eatout-1.504477e-05coef_sr3p_ASC_walk_othmaint-0.347 0.00
coef_ride_hail_ASC_sr2_eatout_social_othdiscr-3.869795e-16coef_sr3p_ASC_walk_school-0.603 0.00
coef_ride_hail_ASC_sr3p_eatout_social_othdiscr-1.643875e-13coef_sr3p_ASC_walk_shopping-0.431 0.00
coef_ride_hail_ASC_taxi_eatout_social_othdiscr-2.363466e-28coef_sr3p_ASC_walk_social-0.451 0.00
coef_ride_hail_ASC_tnc_single_eatout_social_othdiscr-2.038351e-04coef_sr3p_ASC_walk_univ 1.68 0.00
coef_ride_hail_ASC_walk_eatout_social_othdiscr-1.208287e-15coef_sr3p_ASC_walk_work-0.120 0.00
coef_sov_ASC_walk_eatout1.478005e-05coef_walk_ASC_rh-7.00 0.00
coef_sr2_ASC_sr2_eatout1.134955e-05coef_walk_transit_ASC_commuter_escort 0.544 0.00
coef_sr2_ASC_walk_eatout-5.387236e-05coef_walk_transit_ASC_commuter_shopping_eatout_othmaint_social_othdiscr_atwork 0.183 0.00
coef_sr3p_ASC_sr2_eatout-4.592690e-05coef_walk_transit_ASC_commuter_univ_school 2.15 0.00
coef_sr3p_ASC_sr3p_eatout8.013239e-05coef_walk_transit_ASC_commuter_work 0.646 0.00
coef_sr3p_ASC_walk_eatout-2.559943e-05coef_walk_transit_ASC_express_escort 0.755 0.00
coef_walk_transit_ASC_rh_eatout_social_othdiscr2.475426e-05coef_walk_transit_ASC_express_shopping_eatout_othmaint_social_othdiscr_atwork 1.09 0.00
coef_walk_transit_ASC_sr2_eatout-8.378197e-06coef_walk_transit_ASC_express_univ_school 0.736 0.00
coef_walk_transit_ASC_sr3p_eatout5.928461e-05coef_walk_transit_ASC_express_work-0.116 0.00
coef_walk_transit_ASC_walk_eatout3.351367e-05coef_walk_transit_ASC_ferry_escort 0.601 0.00
coef_bike_ASC_walk_othmaint-1.105637e-05coef_walk_transit_ASC_ferry_shopping_eatout_othmaint_social_othdiscr_atwork-5.31 0.00
coef_ivt_othmaint_social5.370351e-02coef_walk_transit_ASC_ferry_univ_school 0.102 0.00
coef_joint_bike_ASC_walk_othmaint0.000000e+00coef_walk_transit_ASC_ferry_work-0.283 0.00
coef_joint_walk_transit_ASC_sr2_othmaint-1.624906e-06coef_walk_transit_ASC_heavyrail_escort 1.73 0.00
coef_joint_walk_transit_ASC_sr3p_othmaint-7.397451e-24coef_walk_transit_ASC_heavyrail_shopping_eatout_othmaint_social_othdiscr_atwork 1.19 0.00
coef_joint_walk_transit_ASC_walk_othmaint-3.953263e-30coef_walk_transit_ASC_heavyrail_univ_school 1.50 0.00
coef_sov_ASC_walk_othmaint5.401771e-05coef_walk_transit_ASC_heavyrail_work 0.661 0.00
coef_sr2_ASC_sr2_othmaint-4.666221e-05coef_walk_transit_ASC_lightrail_escort 2.37 0.00
coef_sr2_ASC_walk_othmaint4.186596e-05coef_walk_transit_ASC_lightrail_shopping_eatout_othmaint_social_othdiscr_atwork 0.939 0.00
coef_sr3p_ASC_sr2_othmaint7.950676e-05coef_walk_transit_ASC_lightrail_univ_school 1.96 0.00
coef_sr3p_ASC_sr3p_othmaint-8.383183e-05coef_walk_transit_ASC_lightrail_work 0.724 0.00
coef_sr3p_ASC_walk_othmaint1.080875e-04coef_walk_transit_ASC_rh_eatout_social_othdiscr-4.96 0.00
coef_walk_transit_ASC_sr2_othmaint-4.017102e-15coef_walk_transit_ASC_rh_escort_shopping_othmaint-5.01 0.00
coef_walk_transit_ASC_sr3p_othmaint-6.376816e-12coef_walk_transit_ASC_rh_school-7.20 0.00
coef_walk_transit_ASC_walk_othmaint1.941271e-05coef_walk_transit_ASC_rh_univ-4.27 0.00
coef_bike_ASC_walk_social-7.802548e-08coef_walk_transit_ASC_rh_work-4.01 0.00
coef_joint_bike_ASC_walk_social0.000000e+00coef_walk_transit_ASC_sr2_eatout-2.12 0.00
coef_joint_walk_transit_ASC_sr2_social0.000000e+00coef_walk_transit_ASC_sr2_escort-0.579 0.00
coef_joint_walk_transit_ASC_sr3p_social-2.473076e-24coef_walk_transit_ASC_sr2_othdiscr-1.93 0.00
coef_joint_walk_transit_ASC_walk_social-4.316912e-11coef_walk_transit_ASC_sr2_othmaint-34.7 0.00
coef_sov_ASC_walk_social-5.943503e-10coef_walk_transit_ASC_sr2_school-3.46 0.00
coef_sr2_ASC_sr2_social-2.952234e-05coef_walk_transit_ASC_sr2_shopping-2.57 0.00
coef_sr2_ASC_walk_social2.268310e-05coef_walk_transit_ASC_sr2_social-2.27 0.00
coef_sr3p_ASC_sr2_social1.341521e-05coef_walk_transit_ASC_sr2_univ-4.00 0.00
coef_sr3p_ASC_sr3p_social3.699722e-05coef_walk_transit_ASC_sr2_work-2.58 0.00
coef_sr3p_ASC_walk_social1.658572e-05coef_walk_transit_ASC_sr3p_eatout-4.64 0.00
coef_walk_transit_ASC_sr2_social2.083999e-04coef_walk_transit_ASC_sr3p_escort-4.04 0.00
coef_walk_transit_ASC_sr3p_social-4.566934e-12coef_walk_transit_ASC_sr3p_othdiscr-1.89 0.00
coef_walk_transit_ASC_walk_social-1.676922e-04coef_walk_transit_ASC_sr3p_othmaint-29.4 0.00
coef_bike_ASC_walk_othdiscr5.983509e-05coef_walk_transit_ASC_sr3p_school-3.51 0.00
coef_joint_bike_ASC_walk_othdiscr0.000000e+00coef_walk_transit_ASC_sr3p_shopping-2.48 0.00
coef_joint_walk_transit_ASC_sr2_othdiscr0.000000e+00coef_walk_transit_ASC_sr3p_social-21.6 0.00
coef_joint_walk_transit_ASC_sr3p_othdiscr-5.170098e-09coef_walk_transit_ASC_sr3p_univ-28.7 0.00
coef_joint_walk_transit_ASC_walk_othdiscr-8.676475e-14coef_walk_transit_ASC_sr3p_work-3.23 0.00
coef_sov_ASC_walk_othdiscr4.282980e-06coef_walk_transit_ASC_walk_eatout 1.42 0.00
coef_sr2_ASC_sr2_othdiscr-6.122804e-05coef_walk_transit_ASC_walk_escort-1.54 0.00
coef_sr2_ASC_walk_othdiscr-2.831322e-05coef_walk_transit_ASC_walk_othdiscr-0.863 0.00
coef_sr3p_ASC_sr2_othdiscr-4.358718e-05coef_walk_transit_ASC_walk_othmaint 0.213 0.00
coef_sr3p_ASC_sr3p_othdiscr-8.122719e-06coef_walk_transit_ASC_walk_school-1.57 0.00
coef_sr3p_ASC_walk_othdiscr4.957928e-05coef_walk_transit_ASC_walk_shopping-1.25 0.00
coef_walk_transit_ASC_sr2_othdiscr8.887145e-06coef_walk_transit_ASC_walk_social-0.846 0.00
coef_walk_transit_ASC_sr3p_othdiscr2.325113e-05coef_walk_transit_ASC_walk_univ-1.03 0.00
coef_walk_transit_ASC_walk_othdiscr-4.684099e-05coef_walk_transit_ASC_walk_work 0.296 0.00
nit110nfev255njev110status0message'Optimization terminated successfully'successTrueelapsed_time0:02:12.823819method'SLSQP'n_cases13279iteration_number110logloss0.5679149515725046" - ], - "text/plain": [ - "┣ x: -999 -999.000000\n", - "┃ 1 1.000000\n", - "┃ coef_age010_trn 0.360551\n", - "┃ coef_age1619_da 0.344530\n", - "┃ coef_age16p_sr -0.151886\n", - "┃ ... \n", - "┃ coef_sr3p_ASC_sr3p_othdiscr 0.844944\n", - "┃ coef_sr3p_ASC_walk_othdiscr -5.841028\n", - "┃ coef_walk_transit_ASC_sr2_othdiscr -1.232224\n", - "┃ coef_walk_transit_ASC_sr3p_othdiscr -1.199264\n", - "┃ coef_walk_transit_ASC_walk_othdiscr -0.980497\n", - "┃ Length: 272, dtype: float64\n", - "┣ loglike: -7541.342641931288\n", - "┣ d_loglike: -999 0.000000\n", - "┃ 1 0.000000\n", - "┃ coef_age010_trn 0.000007\n", - "┃ coef_age1619_da -0.000020\n", - "┃ coef_age16p_sr -0.001532\n", - "┃ ... \n", - "┃ coef_sr3p_ASC_sr3p_othdiscr -0.000008\n", - "┃ coef_sr3p_ASC_walk_othdiscr 0.000050\n", - "┃ coef_walk_transit_ASC_sr2_othdiscr 0.000009\n", - "┃ coef_walk_transit_ASC_sr3p_othdiscr 0.000023\n", - "┃ coef_walk_transit_ASC_walk_othdiscr -0.000047\n", - "┃ Length: 272, dtype: float64\n", - "┣ nit: 110\n", - "┣ nfev: 255\n", - "┣ njev: 110\n", - "┣ status: 0\n", - "┣ message: 'Optimization terminated successfully'\n", - "┣ success: True\n", - "┣ elapsed_time: datetime.timedelta(seconds=132, microseconds=823819)\n", - "┣ method: 'SLSQP'\n", - "┣ n_cases: 13279\n", - "┣ iteration_number: 110\n", - "┣ logloss: 0.5679149515725046" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model.maximize_loglike(method='SLSQP', options={\"maxiter\": 1000})" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Estimated coefficients" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Value Null Value
-999-999.-999.00
1 1.00 1.00
coef_age010_trn 0.361 0.00
coef_age1619_da 0.345 0.00
coef_age16p_sr-0.152 0.00
coef_bike_ASC_rh-7.00 0.00
coef_bike_ASC_walk_work-2.66 0.00
coef_drive_transit_ASC_commuter_work 0.427 0.00
coef_drive_transit_ASC_express_work-0.355 0.00
coef_drive_transit_ASC_ferry_work 0.528 0.00
coef_drive_transit_ASC_heavyrail_work-12.0 0.00
coef_drive_transit_ASC_lightrail_work-10.3 0.00
coef_drive_transit_ASC_rh-162. 0.00
coef_hhsize1_sr-0.891 0.00
coef_hhsize2_sr 0.0397 0.00
coef_ivt_work-0.0102 0.00
coef_joint_auto_ASC_rh_work_univ_school_escort_atwork 0.00 0.00
coef_joint_auto_ASC_sr2_work_univ_school_escort_atwork 0.00 0.00
coef_joint_auto_ASC_sr3p_work_univ_school_escort_atwork 0.00 0.00
coef_joint_auto_ASC_walk_work_univ_school_escort_atwork 0.00 0.00
coef_joint_bike_ASC_rh_work_univ_school_escort_atwork 0.00 0.00
coef_joint_bike_ASC_walk_work_univ_school_escort_atwork 0.00 0.00
coef_joint_drive_transit_ASC_commuter_work_univ_school_escort_atwork 0.00 0.00
coef_joint_drive_transit_ASC_express_work_univ_school_escort_atwork 0.00 0.00
coef_joint_drive_transit_ASC_ferry_work_univ_school_escort_atwork 0.00 0.00
coef_joint_drive_transit_ASC_heavyrail_work_univ_school_escort_atwork 0.00 0.00
coef_joint_drive_transit_ASC_lightrail_work_univ_school_escort_atwork 0.00 0.00
coef_joint_drive_transit_ASC_rh_work_univ_school_escort_atwork 0.00 0.00
coef_joint_ride_hail_ASC_sr2_work_univ_school_escort_atwork 0.00 0.00
coef_joint_ride_hail_ASC_sr3p_work_univ_school_escort_atwork 0.00 0.00
coef_joint_ride_hail_ASC_taxi_work_univ_school_escort_atwork 0.00 0.00
coef_joint_ride_hail_ASC_tnc_shared 0.00 0.00
coef_joint_ride_hail_ASC_tnc_single_work_univ_school_escort_atwork 0.00 0.00
coef_joint_ride_hail_ASC_walk_transit 0.00 0.00
coef_joint_ride_hail_ASC_walk_work_univ_school_escort_atwork 0.00 0.00
coef_joint_walk_ASC_rh_work_univ_school_escort_atwork 0.00 0.00
coef_joint_walk_transit_ASC_commuter_work_univ_school_escort_atwork 0.00 0.00
coef_joint_walk_transit_ASC_express_work_univ_school_escort_atwork 0.00 0.00
coef_joint_walk_transit_ASC_ferry_work_univ_school_escort_atwork 0.00 0.00
coef_joint_walk_transit_ASC_heavyrail_work_univ_school_escort_atwork 0.00 0.00
coef_joint_walk_transit_ASC_lightrail_work_univ_school_escort_atwork 0.00 0.00
coef_joint_walk_transit_ASC_rh_work_univ_school_escort_atwork 0.00 0.00
coef_joint_walk_transit_ASC_sr2_work_univ_school_escort_atwork 0.00 0.00
coef_joint_walk_transit_ASC_sr3p_work_univ_school_escort_atwork 0.00 0.00
coef_joint_walk_transit_ASC_walk_work_univ_school_escort_atwork 0.00 0.00
coef_nest_AUTO 0.720 1.00
coef_nest_AUTO_DRIVEALONE 0.350 1.00
coef_nest_AUTO_SHAREDRIDE2 0.350 1.00
coef_nest_AUTO_SHAREDRIDE3 0.350 1.00
coef_nest_NONMOTORIZED 0.720 1.00
coef_nest_RIDEHAIL 0.360 1.00
coef_nest_TRANSIT 0.720 1.00
coef_nest_TRANSIT_DRIVEACCESS 0.500 1.00
coef_nest_TRANSIT_WALKACCESS 0.500 1.00
coef_ride_hail_ASC_sr2_work-25.0 0.00
coef_ride_hail_ASC_sr3p_work_escort_shopping_othmaint_atwork-29.7 0.00
coef_ride_hail_ASC_taxi_work-2.52 0.00
coef_ride_hail_ASC_tnc_shared 23.3 0.00
coef_ride_hail_ASC_tnc_single_work 24.0 0.00
coef_ride_hail_ASC_walk_transit 22.1 0.00
coef_ride_hail_ASC_walk_work 21.8 0.00
coef_sov_ASC_rh_work_atwork-7.00 0.00
coef_sov_ASC_sr2_work_univ_school_shopping_eatout_othmaint_social_othdiscr_atwork-999. 0.00
coef_sov_ASC_sr3p_work_univ_school_shopping_eatout_othmaint_social_othdiscr_atwork-999. 0.00
coef_sov_ASC_walk_work-3.01 0.00
coef_sr2_ASC_rh_work_school_escort_shopping_eatout_othmaint_social_othdiscr_atwork-7.00 0.00
coef_sr2_ASC_sr2_work 0.197 0.00
coef_sr2_ASC_sr3p-999. 0.00
coef_sr2_ASC_walk_work-2.22 0.00
coef_sr3p_ASC_rh_work-71.9 0.00
coef_sr3p_ASC_sr2_work-0.954 0.00
coef_sr3p_ASC_sr3p_work 0.00228 0.00
coef_sr3p_ASC_walk_work-2.36 0.00
coef_walk_ASC_rh-7.00 0.00
coef_walk_transit_ASC_commuter_work 0.401 0.00
coef_walk_transit_ASC_express_work-0.355 0.00
coef_walk_transit_ASC_ferry_work 0.528 0.00
coef_walk_transit_ASC_heavyrail_work 0.503 0.00
coef_walk_transit_ASC_lightrail_work 0.633 0.00
coef_walk_transit_ASC_rh_work-2.87 0.00
coef_walk_transit_ASC_sr2_work-2.26 0.00
coef_walk_transit_ASC_sr3p_work-2.65 0.00
coef_walk_transit_ASC_walk_work-0.391 0.00
coef_bike_ASC_walk_univ-0.340 0.00
coef_drive_transit_ASC_commuter_univ_school 0.908 0.00
coef_drive_transit_ASC_express_univ_school 0.322 0.00
coef_drive_transit_ASC_ferry_univ_school 1.72 0.00
coef_drive_transit_ASC_heavyrail_univ_school 0.849 0.00
coef_drive_transit_ASC_lightrail_univ_school 1.44 0.00
coef_ivt_univ_school-0.00827 0.00
coef_ride_hail_ASC_sr2_univ-4.34 0.00
coef_ride_hail_ASC_sr3p_univ-4.92 0.00
coef_ride_hail_ASC_taxi_univ-1.60 0.00
coef_ride_hail_ASC_tnc_single_univ 0.108 0.00
coef_ride_hail_ASC_walk_univ_escort_shopping_othmaint-26.3 0.00
coef_sov_ASC_rh_univ-6.65 0.00
coef_sov_ASC_walk_univ-1.06 0.00
coef_sr2_ASC_rh_univ-6.69 0.00
coef_sr2_ASC_sr2_univ 0.430 0.00
coef_sr2_ASC_walk_univ 1.30 0.00
coef_sr3p_ASC_rh_univ_escort_shopping_eatout_othmaint_social_othdiscr-7.00 0.00
coef_sr3p_ASC_sr2_univ-0.312 0.00
coef_sr3p_ASC_sr3p_univ 0.629 0.00
coef_sr3p_ASC_walk_univ 1.68 0.00
coef_walk_transit_ASC_commuter_univ_school 0.908 0.00
coef_walk_transit_ASC_express_univ_school 0.322 0.00
coef_walk_transit_ASC_ferry_univ_school 1.72 0.00
coef_walk_transit_ASC_heavyrail_univ_school 0.867 0.00
coef_walk_transit_ASC_lightrail_univ_school 1.57 0.00
coef_walk_transit_ASC_rh_univ-4.27 0.00
coef_walk_transit_ASC_sr2_univ-4.00 0.00
coef_walk_transit_ASC_sr3p_univ-28.7 0.00
coef_walk_transit_ASC_walk_univ-1.03 0.00
coef_bike_ASC_walk_school-106. 0.00
coef_ride_hail_ASC_sr2_school-17.6 0.00
coef_ride_hail_ASC_sr3p_school-17.9 0.00
coef_ride_hail_ASC_taxi_school-1.64 0.00
coef_ride_hail_ASC_tnc_single_school 23.7 0.00
coef_ride_hail_ASC_walk_school-17.9 0.00
coef_sov_ASC_rh_school-126. 0.00
coef_sov_ASC_walk_school-3.12 0.00
coef_sr2_ASC_sr2_school-0.541 0.00
coef_sr2_ASC_walk_school-2.04 0.00
coef_sr3p_ASC_rh_school-168. 0.00
coef_sr3p_ASC_sr2_school-1.02 0.00
coef_sr3p_ASC_sr3p_school 0.193 0.00
coef_sr3p_ASC_walk_school-2.44 0.00
coef_walk_transit_ASC_rh_school-4.36 0.00
coef_walk_transit_ASC_sr2_school-2.27 0.00
coef_walk_transit_ASC_sr3p_school-2.41 0.00
coef_walk_transit_ASC_walk_school-1.50 0.00
coef_bike_ASC_walk_escort-13.5 0.00
coef_drive_transit_ASC_commuter_escort 0.544 0.00
coef_drive_transit_ASC_express_escort 0.755 0.00
coef_drive_transit_ASC_ferry_escort 0.601 0.00
coef_drive_transit_ASC_heavyrail_escort-14.2 0.00
coef_drive_transit_ASC_lightrail_escort 0.525 0.00
coef_ivt_escort_shopping_eatout_othdiscr_atwork-0.0119 0.00
coef_ride_hail_ASC_sr2_escort_shopping_othmaint-23.9 0.00
coef_ride_hail_ASC_taxi_escort_shopping_othmaint-3.66 0.00
coef_ride_hail_ASC_tnc_single_escort_shopping_othmaint 24.2 0.00
coef_sov_ASC_rh_escort_shopping_eatout_othmaint_social_othdiscr 0.00 0.00
coef_sov_ASC_sr2_escort 0.00 0.00
coef_sov_ASC_sr3p_escort 0.00 0.00
coef_sov_ASC_walk_escort 0.00 0.00
coef_sr2_ASC_sr2_escort 0.488 0.00
coef_sr2_ASC_walk_escort-25.5 0.00
coef_sr3p_ASC_sr2_escort-0.207 0.00
coef_sr3p_ASC_sr3p_escort 0.896 0.00
coef_sr3p_ASC_walk_escort-3.42 0.00
coef_walk_transit_ASC_commuter_escort 0.544 0.00
coef_walk_transit_ASC_express_escort 0.755 0.00
coef_walk_transit_ASC_ferry_escort 0.601 0.00
coef_walk_transit_ASC_heavyrail_escort 0.850 0.00
coef_walk_transit_ASC_lightrail_escort 1.13 0.00
coef_walk_transit_ASC_rh_escort_shopping_othmaint-2.36 0.00
coef_walk_transit_ASC_sr2_escort-1.02 0.00
coef_walk_transit_ASC_sr3p_escort-185. 0.00
coef_walk_transit_ASC_walk_escort-88.1 0.00
coef_bike_ASC_walk_shopping-23.2 0.00
coef_drive_transit_ASC_commuter_shopping_eatout_othmaint_social_othdiscr_atwork 0.513 0.00
coef_drive_transit_ASC_express_shopping_eatout_othmaint_social_othdiscr_atwork 0.665 0.00
coef_drive_transit_ASC_ferry_shopping_eatout_othmaint_social_othdiscr_atwork 0.647 0.00
coef_drive_transit_ASC_heavyrail_shopping_eatout_othmaint_social_othdiscr_atwork 0.540 0.00
coef_drive_transit_ASC_lightrail_shopping_eatout_othmaint_social_othdiscr_atwork 0.539 0.00
coef_joint_auto_ASC_rh_shopping_eatout_othmaint_social_othdiscr-7.00 0.00
coef_joint_auto_ASC_sr2_shopping 2.78 0.00
coef_joint_auto_ASC_sr3p_shopping-19.1 0.00
coef_joint_auto_ASC_walk_shopping-23.5 0.00
coef_joint_bike_ASC_rh_shopping_eatout_othmaint_social_othdiscr-12.3 0.00
coef_joint_bike_ASC_walk_shopping-7.05 0.00
coef_joint_drive_transit_ASC_commuter_shopping_eatout_othmaint_social_othdiscr 0.513 0.00
coef_joint_drive_transit_ASC_express_shopping_eatout_othmaint_social_othdiscr 0.665 0.00
coef_joint_drive_transit_ASC_ferry_shopping_eatout_othmaint_social_othdiscr 0.647 0.00
coef_joint_drive_transit_ASC_heavyrail_shopping_eatout_othmaint_social_othdiscr 0.540 0.00
coef_joint_drive_transit_ASC_lightrail_shopping_eatout_othmaint_social_othdiscr 0.539 0.00
coef_joint_drive_transit_ASC_rh_shopping_eatout_othmaint_social_othdiscr 4.61 0.00
coef_joint_ride_hail_ASC_sr2_shopping_eatout_othmaint_social_othdiscr-7.00 0.00
coef_joint_ride_hail_ASC_sr3p_shopping_eatout_othmaint_social_othdiscr-7.00 0.00
coef_joint_ride_hail_ASC_taxi_shopping_eatout_othmaint_social_othdiscr-7.00 0.00
coef_joint_ride_hail_ASC_tnc_single_shopping_eatout_othmaint_social_othdiscr-4.73 0.00
coef_joint_ride_hail_ASC_walk_shopping_eatout_othmaint_social_othdiscr-7.00 0.00
coef_joint_walk_ASC_rh_shopping_eatout_othmaint_social_othdiscr-3.04 0.00
coef_joint_walk_transit_ASC_commuter_shopping_eatout_othmaint_social_othdiscr 0.513 0.00
coef_joint_walk_transit_ASC_express_shopping_eatout_othmaint_social_othdiscr 0.665 0.00
coef_joint_walk_transit_ASC_ferry_shopping_eatout_othmaint_social_othdiscr 0.647 0.00
coef_joint_walk_transit_ASC_heavyrail_shopping_eatout_othmaint_social_othdiscr 21.6 0.00
coef_joint_walk_transit_ASC_lightrail_shopping_eatout_othmaint_social_othdiscr 0.924 0.00
coef_joint_walk_transit_ASC_rh_shopping_eatout_othmaint_social_othdiscr 3.13 0.00
coef_joint_walk_transit_ASC_sr2_shopping-21.6 0.00
coef_joint_walk_transit_ASC_sr3p_shopping-25.6 0.00
coef_joint_walk_transit_ASC_walk_shopping-102. 0.00
coef_sov_ASC_walk_shopping-3.79 0.00
coef_sr2_ASC_sr2_shopping 1.75 0.00
coef_sr2_ASC_walk_shopping-3.65 0.00
coef_sr3p_ASC_sr2_shopping 0.336 0.00
coef_sr3p_ASC_sr3p_shopping 1.64 0.00
coef_sr3p_ASC_walk_shopping-3.92 0.00
coef_walk_transit_ASC_commuter_shopping_eatout_othmaint_social_othdiscr_atwork 0.513 0.00
coef_walk_transit_ASC_express_shopping_eatout_othmaint_social_othdiscr_atwork 0.665 0.00
coef_walk_transit_ASC_ferry_shopping_eatout_othmaint_social_othdiscr_atwork 0.647 0.00
coef_walk_transit_ASC_heavyrail_shopping_eatout_othmaint_social_othdiscr_atwork 0.926 0.00
coef_walk_transit_ASC_lightrail_shopping_eatout_othmaint_social_othdiscr_atwork 0.831 0.00
coef_walk_transit_ASC_sr2_shopping-2.12 0.00
coef_walk_transit_ASC_sr3p_shopping-91.1 0.00
coef_walk_transit_ASC_walk_shopping-0.814 0.00
coef_bike_ASC_walk_eatout-175. 0.00
coef_joint_auto_ASC_sr2_eatout_othmaint_social_othdiscr 0.381 0.00
coef_joint_auto_ASC_sr3p_eatout_othmaint_social_othdiscr 0.389 0.00
coef_joint_auto_ASC_walk_eatout_othmaint_social_othdiscr-4.38 0.00
coef_joint_bike_ASC_walk_eatout-15.6 0.00
coef_joint_walk_transit_ASC_sr2_eatout-14.9 0.00
coef_joint_walk_transit_ASC_sr3p_eatout-16.8 0.00
coef_joint_walk_transit_ASC_walk_eatout 1.10 0.00
coef_ride_hail_ASC_sr2_eatout_social_othdiscr-16.9 0.00
coef_ride_hail_ASC_sr3p_eatout_social_othdiscr-11.9 0.00
coef_ride_hail_ASC_taxi_eatout_social_othdiscr-2.56 0.00
coef_ride_hail_ASC_tnc_single_eatout_social_othdiscr 24.0 0.00
coef_ride_hail_ASC_walk_eatout_social_othdiscr-17.7 0.00
coef_sov_ASC_walk_eatout-2.63 0.00
coef_sr2_ASC_sr2_eatout 1.10 0.00
coef_sr2_ASC_walk_eatout-4.55 0.00
coef_sr3p_ASC_sr2_eatout-0.213 0.00
coef_sr3p_ASC_sr3p_eatout 1.47 0.00
coef_sr3p_ASC_walk_eatout-2.51 0.00
coef_walk_transit_ASC_rh_eatout_social_othdiscr-2.66 0.00
coef_walk_transit_ASC_sr2_eatout-2.01 0.00
coef_walk_transit_ASC_sr3p_eatout-2.52 0.00
coef_walk_transit_ASC_walk_eatout 0.166 0.00
coef_bike_ASC_walk_othmaint-0.784 0.00
coef_ivt_othmaint_social-0.0121 0.00
coef_joint_bike_ASC_walk_othmaint-13.5 0.00
coef_joint_walk_transit_ASC_sr2_othmaint-11.3 0.00
coef_joint_walk_transit_ASC_sr3p_othmaint-44.0 0.00
coef_joint_walk_transit_ASC_walk_othmaint-73.6 0.00
coef_sov_ASC_walk_othmaint-4.43 0.00
coef_sr2_ASC_sr2_othmaint 0.935 0.00
coef_sr2_ASC_walk_othmaint-3.14 0.00
coef_sr3p_ASC_sr2_othmaint 0.0421 0.00
coef_sr3p_ASC_sr3p_othmaint 1.13 0.00
coef_sr3p_ASC_walk_othmaint-5.07 0.00
coef_walk_transit_ASC_sr2_othmaint-34.7 0.00
coef_walk_transit_ASC_sr3p_othmaint-29.4 0.00
coef_walk_transit_ASC_walk_othmaint-0.288 0.00
coef_bike_ASC_walk_social-13.2 0.00
coef_joint_bike_ASC_walk_social-26.2 0.00
coef_joint_walk_transit_ASC_sr2_social-20.5 0.00
coef_joint_walk_transit_ASC_sr3p_social-34.7 0.00
coef_joint_walk_transit_ASC_walk_social-2.39 0.00
coef_sov_ASC_walk_social-25.3 0.00
coef_sr2_ASC_sr2_social 0.768 0.00
coef_sr2_ASC_walk_social-2.85 0.00
coef_sr3p_ASC_sr2_social-0.122 0.00
coef_sr3p_ASC_sr3p_social 1.21 0.00
coef_sr3p_ASC_walk_social-3.08 0.00
coef_walk_transit_ASC_sr2_social-2.06 0.00
coef_walk_transit_ASC_sr3p_social-21.6 0.00
coef_walk_transit_ASC_walk_social-2.31 0.00
coef_bike_ASC_walk_othdiscr-1.40 0.00
coef_joint_bike_ASC_walk_othdiscr-14.4 0.00
coef_joint_walk_transit_ASC_sr2_othdiscr-15.0 0.00
coef_joint_walk_transit_ASC_sr3p_othdiscr-16.7 0.00
coef_joint_walk_transit_ASC_walk_othdiscr-25.9 0.00
coef_sov_ASC_walk_othdiscr-4.94 0.00
coef_sr2_ASC_sr2_othdiscr 0.856 0.00
coef_sr2_ASC_walk_othdiscr-2.47 0.00
coef_sr3p_ASC_sr2_othdiscr-0.418 0.00
coef_sr3p_ASC_sr3p_othdiscr 0.845 0.00
coef_sr3p_ASC_walk_othdiscr-5.84 0.00
coef_walk_transit_ASC_sr2_othdiscr-1.23 0.00
coef_walk_transit_ASC_sr3p_othdiscr-1.20 0.00
coef_walk_transit_ASC_walk_othdiscr-0.980 0.00
" + "\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 9, @@ -5168,7 +5189,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -5189,7 +5210,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ @@ -5211,7 +5232,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -5280,7 +5301,7 @@ " \n", " 309\n", " coef_walk_transit_ASC_walk_eatout\n", - " 0.166429\n", + " 1.418767\n", " F\n", " \n", " \n", @@ -5320,7 +5341,7 @@ "3 coef_nest_AUTO_DRIVEALONE 0.350000 T\n", "4 coef_nest_AUTO_SHAREDRIDE2 0.350000 T\n", ".. ... ... ...\n", - "309 coef_walk_transit_ASC_walk_eatout 0.166429 F\n", + "309 coef_walk_transit_ASC_walk_eatout 1.418767 F\n", "310 walk_express_penalty 10.000000 T\n", "311 adjust_tnc_shared 30.000000 T\n", "312 coef_origin_density_applied_work_univ_school 0.000000 T\n", @@ -5329,7 +5350,7 @@ "[314 rows x 3 columns]" ] }, - "execution_count": 19, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -5346,7 +5367,7 @@ "toc_visible": true }, "kernelspec": { - "display_name": "Python 3", + "display_name": "ESTER", "language": "python", "name": "python3" }, @@ -5360,7 +5381,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.10.15" }, "toc": { "base_numbering": 1, diff --git a/activitysim/examples/example_estimation/notebooks/est_mode_setup.py b/activitysim/examples/example_estimation/notebooks/est_mode_setup.py new file mode 100644 index 000000000..af0546cbe --- /dev/null +++ b/activitysim/examples/example_estimation/notebooks/est_mode_setup.py @@ -0,0 +1,83 @@ +from __future__ import annotations + +import argparse +import os +import shutil +import sys +import warnings +from pathlib import Path + +# suppress RuntimeWarning from xarray +warnings.filterwarnings( + "ignore", + category=RuntimeWarning, + module="xarray", +) + + +def prepare( + household_sample_size: int = 20_000, subdir: str = "test-estimation-data" +) -> Path: + """Prepare the example for estimation. + + This function prepares the example for estimation by downloading the example data and + setting up the working directory. The current working directory is then set to the + created example directory. + + Parameters + ---------- + household_sample_size : int, optional + The number of households to sample from the synthetic population. The default is 20_000. + subdir : str, optional + The subdirectory to store the example data. The default is "test-estimation-data". + + Returns + ------- + Path + The path to the created example directory. + """ + root_dir = Path(__file__).parent.parent.resolve() + sys.path.insert(0, str(root_dir)) + + try: + from build_full_mtc_example import as_needed + except ImportError: + print( + "Please run this script from the " + "activitysim/examples/example_estimation/notebooks directory." + ) + raise + + as_needed(root_dir / "notebooks" / subdir, household_sample_size) + relative_path = os.path.relpath( + root_dir / "notebooks" / subdir / "activitysim-prototype-mtc-extended" + ) + os.chdir(relative_path) + return Path(relative_path) + + +def backup(filename: str | os.PathLike): + """Create or restore from a backup copy of a file.""" + backup_filename = f"{filename}.bak" + if Path(backup_filename).exists(): + shutil.copy(backup_filename, filename) + else: + shutil.copy(filename, backup_filename) + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="Prepare the example for estimation.") + parser.add_argument( + "--household_sample_size", + type=int, + default=20_000, + help="The number of households to sample from the synthetic population.", + ) + parser.add_argument( + "--subdir", + type=str, + default="test-estimation-data", + help="The subdirectory to store the example data.", + ) + args = parser.parse_args() + prepare(args.household_sample_size, args.subdir) diff --git a/activitysim/examples/example_estimation/scripts/infer.py b/activitysim/examples/example_estimation/scripts/infer.py index 6b6991992..94869cffb 100644 --- a/activitysim/examples/example_estimation/scripts/infer.py +++ b/activitysim/examples/example_estimation/scripts/infer.py @@ -1,6 +1,8 @@ # ActivitySim # See full license in LICENSE.txt. +from __future__ import annotations + import logging import os import sys @@ -165,6 +167,8 @@ def read_alts(): alts = read_alts() tour_types = list(alts.columns.values) + if "tot_tours" in tour_types: + tour_types.remove("tot_tours") # tour_frequency is index in alts table alts["alt_id"] = alts.index @@ -806,7 +810,7 @@ def infer(state: workflow.State, configs_dir, input_dir, output_dir): assert skip_controls or check_controls("joint_tour_participants", "index") # patch_tour_ids - trips = patch_trip_ids(tours, trips) + trips = patch_trip_ids(state, tours, trips) survey_tables["trips"]["table"] = trips # so we can check_controls assert skip_controls or check_controls("trips", "index") @@ -846,18 +850,27 @@ def infer(state: workflow.State, configs_dir, input_dir, output_dir): # python infer.py data args = sys.argv[1:] -assert len(args) == 2, "usage: python infer.py " +assert len(args) == 3, "usage: python infer.py " data_dir = args[0] configs_dir = args[1] +output_dir = args[2] with open(os.path.join(configs_dir, "constants.yaml")) as stream: CONSTANTS = yaml.load(stream, Loader=yaml.SafeLoader) input_dir = os.path.join(data_dir, "survey_data/") -output_dir = input_dir if apply_controls: read_tables(input_dir, control_tables) +state = ( + workflow.State() + .initialize_filesystem( + configs_dir=(configs_dir,), + output_dir=output_dir, + data_dir=(data_dir,), + ) + .load_settings() +) infer(state, configs_dir, input_dir, output_dir) diff --git a/activitysim/examples/placeholder_psrc/configs/tour_scheduling_school.csv b/activitysim/examples/placeholder_psrc/configs/tour_scheduling_school.csv index 8cc5fb59e..039fa9e66 100755 --- a/activitysim/examples/placeholder_psrc/configs/tour_scheduling_school.csv +++ b/activitysim/examples/placeholder_psrc/configs/tour_scheduling_school.csv @@ -33,7 +33,7 @@ util_adjacent_window_exists_before_this_departure_hour_second_plus_tour_interact util_adjacent_window_exists_after_this_arrival_hour_second_plus_tour_interaction,Adjacent window exists after this arrival hour - second+ tour interaction,"@(df.tour_num > 1) * _adjacent_window_after",coef_adjacent_window_exists_after_this_arrival_hour_second_plus_tour_interaction util_remaining_work_school_tours_to_be_scheduled_div_number_of_unscheduled_hours,Remaining work/school tours to be scheduled / number of unscheduled hours,"@((df.tour_count>1) & (df.tour_num == 1)) * 1.0 / tt.remaining_periods_available(df.person_id, df.start, df.end)",coef_remaining_work_school_tours_to_be_scheduled_div_number_of_unscheduled_hours util_departure_constants_early_up_to_5,Departure Constants -- Early (up to 5),start < 6,coef_departure_constants_early -util_departure_constants_am_peak_1 _6,Departure Constants -- AM peak 1 (6),start == 6,coef_departure_constants_am_peak_1 +util_departure_constants_am_peak_1_6,Departure Constants -- AM peak 1 (6),start == 6,coef_departure_constants_am_peak_1 util_departure_constants_am_peak_2_7,Departure Constants -- AM peak 2 (7),start == 7,coef_departure_constants_am_peak_2 util_departure_constants_am_peak_3_8,Departure Constants -- AM peak 3 (8),start == 8,coef_departure_constants_am_peak_3 util_departure_constants_am_peak_4_9,Departure Constants -- AM peak 4 (9),start == 9,coef_departure_constants_am_peak_4 diff --git a/activitysim/examples/prototype_mtc/configs/tour_scheduling_school.csv b/activitysim/examples/prototype_mtc/configs/tour_scheduling_school.csv index 6c735c423..779109503 100644 --- a/activitysim/examples/prototype_mtc/configs/tour_scheduling_school.csv +++ b/activitysim/examples/prototype_mtc/configs/tour_scheduling_school.csv @@ -32,7 +32,7 @@ util_adjacent_window_exists_after_this_arrival_hour_second_plus_tour_interaction util_remaining_work_school_tours_to_be_scheduled_div_number_of_unscheduled_hours,Remaining work/school tours to be scheduled / number of unscheduled hours,"@((df.tour_count>1) & (df.tour_num == 1)) * 1.0 / tt.remaining_periods_available(df.person_id, df.start, df.end)",coef_remaining_work_school_tours_to_be_scheduled_div_number_of_unscheduled_hours #,,, util_departure_constants_early_up_to_5,Departure Constants -- Early (up to 5),start < 6,coef_departure_constants_early -util_departure_constants_am_peak_1 _6,Departure Constants -- AM peak 1 (6),start == 6,coef_departure_constants_am_peak_1 +util_departure_constants_am_peak_1_6,Departure Constants -- AM peak 1 (6),start == 6,coef_departure_constants_am_peak_1 util_departure_constants_am_peak_2_7,Departure Constants -- AM peak 2 (7),start == 7,coef_departure_constants_am_peak_2 util_departure_constants_am_peak_3_8,Departure Constants -- AM peak 3 (8),start == 8,coef_departure_constants_am_peak_3 util_departure_constants_am_peak_4_9,Departure Constants -- AM peak 4 (9),start == 9,coef_departure_constants_am_peak_4 diff --git a/activitysim/examples/prototype_sandag_xborder/configs/estimation.yaml b/activitysim/examples/prototype_sandag_xborder/configs/estimation.yaml index bbe11f7fc..fc857fbb9 100644 --- a/activitysim/examples/prototype_sandag_xborder/configs/estimation.yaml +++ b/activitysim/examples/prototype_sandag_xborder/configs/estimation.yaml @@ -29,55 +29,7 @@ survey_tables: file_name: trips_survey.csv index_col: trip_id -estimation_table_recipes: - - interaction_sample_simulate: - omnibus_tables: - choosers_combined: - - choices - - override_choices - - choosers - alternatives_combined: - - interaction_sample_alternatives - - interaction_expression_values - omnibus_tables_append_columns: [choosers_combined] - - interaction_simulate: - omnibus_tables: - choosers_combined: - - choices - - override_choices - - choosers - omnibus_tables_append_columns: [choosers_combined] - - simple_simulate: - omnibus_tables: - values_combined: - - choices - - override_choices - - expression_values - - choosers - omnibus_tables_append_columns: [values_combined] - - cdap_simulate: - omnibus_tables: - values_combined: - - choices - - override_choices - - choosers - omnibus_tables_append_columns: [values_combined] - - simple_probabilistic: - omnibus_tables: - values_combined: - - choices - - override_choices - - choosers - - probs - omnibus_tables_append_columns: [values_combined] - - -model_estimation_table_types: +estimation_table_types: tour_scheduling_probabilistic: simple_probabilistic tour_od_choice: interaction_sample_simulate school_location: interaction_sample_simulate diff --git a/conda-environments/activitysim-dev-base.yml b/conda-environments/activitysim-dev-base.yml new file mode 100644 index 000000000..e69de29bb diff --git a/conda-environments/activitysim-dev.yml b/conda-environments/activitysim-dev.yml new file mode 100644 index 000000000..e69de29bb diff --git a/conda-environments/docbuild.yml b/conda-environments/docbuild.yml new file mode 100644 index 000000000..e69de29bb diff --git a/conda-environments/github-actions-tests.yml b/conda-environments/github-actions-tests.yml new file mode 100644 index 000000000..e69de29bb diff --git a/docs/dev-guide/changes.md b/docs/dev-guide/changes.md index e8a94effd..360ab1026 100644 --- a/docs/dev-guide/changes.md +++ b/docs/dev-guide/changes.md @@ -5,6 +5,21 @@ major new features that may require modifications to existing model configuratio or code to utilize, as well as breaking changes that may cause existing model configurations or code to fail to run correctly. +## v1.4 + +### Improved Estimation Mode + +Version 1.4 includes several improvements to the estimation mode, including: + +- The ability to run estimation mode in parallel, which can significantly + speed up the estimation process for large models. +- The ability to modify the model specification and coefficients file(s) for + the estimated submodels without re-running ActivitySim, which allows for more + flexibility in the estimation process. +- Other improvements to the estimation mode workflow, including better error + handling, logging, and model evaluation tools. + + ## v1.3 ### New Canonical Examples diff --git a/docs/users-guide/estimation-mode/asim-est.md b/docs/users-guide/estimation-mode/asim-est.md new file mode 100644 index 000000000..77ef1e65a --- /dev/null +++ b/docs/users-guide/estimation-mode/asim-est.md @@ -0,0 +1,34 @@ +# Running ActivitySim in Estimation Mode + +ActivitySim is run in estimation mode to read ActivitySim-format travel survey +files, and apply the ActivitySim submodels to write estimation data bundles (EDBs) +that contains the model utility specifications, coefficients, chooser data, and +alternatives data for each submodel. These EDBs are then used with Larch to +re-estimate the model parameters. + +ActivitySim can be run in estimation mode by including a few extra settings in +the `estimation.yaml` config file. The key setting in this file is the `enabled` +setting, which must be set to `True` in order to run in estimation mode. The +default value for this setting is `False`, so if it is not explicitly set to +`True`, ActivitySim will run in normal simulation mode, and everything else +in the `estimation.yaml` config file will be ignored. These settings are +documented below. After running ActivitySim in estimation mode, the EDBs will be +written to disk, and can be used with Larch to re-estimate the model parameters. + +```{eval-rst} +.. currentmodule:: activitysim.core.estimation +``` + +## Configuration Settings + +```{eval-rst} +.. autopydantic_model:: EstimationConfig + :inherited-members: PydanticReadable + :show-inheritance: +``` + +## Survey Table Settings + +```{eval-rst} +.. autopydantic_model:: SurveyTableConfig +``` diff --git a/docs/users-guide/estimation-mode/index.md b/docs/users-guide/estimation-mode/index.md new file mode 100644 index 000000000..4593a5a42 --- /dev/null +++ b/docs/users-guide/estimation-mode/index.md @@ -0,0 +1,58 @@ + +# Estimation Mode + +ActivitySim includes the ability to re-estimate submodels using choice model estimation +tools. It is possible to output the data needed for estimation and then use more or less +any parameter estimation tool to find the best-fitting parameters for each model, but +ActivitySim has a built-in integration with the [`larch`](https://larch.driftless.xyz) +package, which is an open source Python package for estimating discrete choice models. + +## Estimation Workflow, Summarized + +The general workflow for estimating models is shown in the following figures and +explained in more detail below. + +![estimation workflow](https://activitysim.github.io/activitysim/develop/_images/estimation_tools.jpg) + +First, the user converts their household travel survey into ActivitySim-format +households, persons, tours, joint tour participants, and trip tables. The +households and persons tables must have the same fields as the synthetic population +input tables since the surveyed households and persons will be run through the same +set of submodels as the simulated households and persons. + +The ActivitySim estimation example [``scripts\infer.py``](https://github.com/ActivitySim/activitysim/blob/main/activitysim/examples/example_estimation/scripts/infer.py) +module reads the ActivitySim-format household travel survey files and checks for +inconsistencies in the input tables versus the model design, and calculates +additional fields such as the household joint tour frequency based on the trips +and joint tour participants table. Survey households and persons observed choices +much match the model design (i.e. a person cannot have more work tours than the model +allows). + +ActivitySim is then run in estimation mode to read the ActivitySim-format +travel survey files, and apply the ActivitySim submodels to write estimation data bundles +(EDBs) that contains the model utility specifications, coefficients, chooser data, +and alternatives data for each submodel. + +The relevant EDBs are read and transformed into the format required by the model +estimation tool (i.e. larch) and then the coefficients are re-estimated. The +``activitysim.estimation.larch`` library is included for integration with larch +and there is a Jupyter Notebook estimation example for most core submodels. +Certain kinds of changes to the model specification are allowed during the estimation +process, as long as the required data fields are present in the EDB. For example, +the user can add new expressions that transform existing data, such as converting +a continuous variable into a categorical variable, a polynomial transform, or a +piecewise linear form. More intensive changes to the model specification, such as +adding data that is not in the EDB, or adding new alternatives, are generally not +possible without re-running the estimation mode to write a new EDB. + +Based on the results of the estimation, the user can then update the model +specification and coefficients file(s) for the estimated submodel. + +```{eval-rst} +.. toctree:: + :maxdepth: 2 + + Running ActivitySim in Estimation Mode + Using Larch to Re-estimate Models + ActivitySim Larch Tool API +``` diff --git a/docs/users-guide/estimation-mode/larch-api.rst b/docs/users-guide/estimation-mode/larch-api.rst new file mode 100644 index 000000000..94805cda0 --- /dev/null +++ b/docs/users-guide/estimation-mode/larch-api.rst @@ -0,0 +1,50 @@ +============== +Larch Tool API +============== + +.. currentmodule:: activitysim.estimation.larch + + +activitysim.estimation.larch.general +------------------------------------ + +.. automodule:: activitysim.estimation.larch.general + :members: + + +activitysim.estimation.larch.data_maker +--------------------------------------- + +.. automodule:: activitysim.estimation.larch.data_maker + :members: + +activitysim.estimation.larch.simple_simulate +-------------------------------------------- + +.. automodule:: activitysim.estimation.larch.simple_simulate + :members: + +activitysim.estimation.larch.cdap +--------------------------------- + +.. automodule:: activitysim.estimation.larch.cdap + :members: + +activitysim.estimation.larch.location_choice +-------------------------------------------- + +.. automodule:: activitysim.estimation.larch.location_choice + :members: + +.. automodule:: activitysim.estimation.larch.mode_choice + :members: + +.. automodule:: activitysim.estimation.larch.nonmand_tour_freq + :members: + +.. automodule:: activitysim.estimation.larch.scheduling + :members: + +.. automodule:: activitysim.estimation.larch.stop_frequency + :members: +``` diff --git a/docs/users-guide/estimation-mode/larch.md b/docs/users-guide/estimation-mode/larch.md new file mode 100644 index 000000000..da029b636 --- /dev/null +++ b/docs/users-guide/estimation-mode/larch.md @@ -0,0 +1,321 @@ +# Using Larch + +ActivitySim component models are mostly built as discrete choice models. The +parameters for these models typically need to be estimated based on observed +survey data. The estimation process is facilitated by the Larch package, which +is a Python package for estimating discrete choice models. Larch is a +general-purpose package that can be used to estimate a wide variety of discrete +choice models, including the multinomial logit and nested logit models that are +commonly used in ActivitySim. This section highlights some of the features of +Larch, particularly as they relate to ActivitySim, as there are a few subtle +differences between the two packages that users should be aware of when +estimating models. + +## Setting up Larch Models + +ActivitySim includes a number of scripts and tools to set up Larch models for +estimation. The `activitysim.estimation.larch` library includes functions to +read the EDBs written by ActivitySim and convert them into Larch models, +including a generic [`component_model`](activitysim.estimation.larch.component_model) +function that can be used to load the data and set up Larch for any standard +ActivitySim component. This function is demonstrated in the [example notebooks] +(#example-notebooks). + +When given a truthy `return_data` argument, the `component_model` function will +return a 2-tuple of the Larch model and the data used to create it. The data as +the second element of this tuple should be treated as a *copy* of the data used +to create the model, and is provided primarily for the user to review and use in +debugging if needed. If it is necessary to modify the data (e.g. to recreate +temporary variables), the user should modify the `data` attribute of the model +itself (i.e. `model.data` if `model` is the first element of the returned +tuple), not the data returned in the second element of the tuple. + +## Model Specification + +By default, the process of estimating parameters for ActivitySim model +components with Larch is based on the existing model specification files. These +are the CSV files that are used to define the utility function for each logit +component. When running ActivitySim, these files are typically found in the +configs directory, but when running in estimation mode, they are written out to +the EDB as well, which is where the `activitysim.estimation.larch` library +functions look for these input files. + +Users are not limited to using the existing model specification files, however. +The Larch tools for model estimation now allow users to modify the model +specification files, and then re-estimate the model, including existing and new +parameters. The revised model specification files must rely on the same data +that has already been written out to the EDB, but the user can add new +expressions to the specification to transform the data, or to create new +variables. This is particularly useful for creating new piecewise linear +transformations, or for creating new categorical variables from continuous +variables. The user can also add new variables to the specification that are not +in the EDB, but this will require re-running ActivitySim in estimation mode to +write a new EDB. Examples for how to re-specify the model specification files +are included in [selected example notebooks](#examples-that-include-re-specification). + +## Maximum Likelihood Estimation + +The approach used to estimate the parameters of a discrete choice model is +maximum likelihood estimation (MLE). The goal of MLE is to find the set of +parameters that maximize the likelihood of observing the choice data that we +have collected. + +Finding the maximum likelihood estimates of the parameters is a non-linear +optimization problem. To solve this problem, Larch primarily relies on the +widely-used `scipy.optimize` package, which provides a number of +[optimization algorithms](https://docs.scipy.org/doc/scipy/reference/optimize.html#local-multivariate-optimization) +that can be used to find the maximum likelihood estimates. Different algorithms +have different strengths and weaknesses, and the choice of algorithm can have a +significant impact on the speed and accuracy of the estimation process. By +default, when no constraints or bounds are present, Larch uses an +implementation of the [BHHH algorithm](https://en.wikipedia.org/wiki/Berndt–Hall–Hall–Hausman_algorithm), +which is not included in scipy but is usually efficient for simple, well +specified choice models without any constraints. When constraints or bounds are +present, by default Larch uses the `scipy.optimize.minimize` function with the +`SLSQP` algorithm. The `larch.Model.estimate` method allows the user to specify +the optimization algorithm to use via the `method` argument, which can be set to +'BHHH', 'SLSQP', or any other algorithm supported by `scipy.optimize.minimize`. +If you are estimating a model and find the optimization is not converging as +fast as expected (or at all), you may want to try a different optimization +algorithm. + +## Model Evaluation + +The `larch.Model` class includes a number of methods for evaluating the +quality of each estimated model. These tools are explained in +[detail](https://larch.driftless.xyz/v6.0/user-guide/analysis.html) in the +Larch documentation. + +A [simple aggregate analysis](https://larch.driftless.xyz/v6.0/user-guide/analysis.html#choice-and-availability-summary) +of a Larch model data’s choice and availability statistics is available. + +Larch also includes methods to +[analyze model predictions](https://larch.driftless.xyz/v6.0/user-guide/analysis.html#analyze-predictions) +across various dimensions. The `analyze_predictions_co` method can be used to +examine how well the model predicts choices against any available (or +computable) attribute of the chooser. In addition, there are tools to evaluate +[demand elasticity](https://larch.driftless.xyz/v6.0/user-guide/analysis.html#elasticity) with +respect to changes in underlying data. + +## Model Overspecification + +When using ActivitySim for simulation, there are generally few limitations or +requirements on the uniqueness of data elements. For example, it may end up +being confusing for a user, but there is nothing fundamentally wrong with having +two different variables in the model specification that both represent "income" +but have different scales, or with having alternative-specific constants for all +the alternatives. In model estimation, however, this can lead to problems. +Having two data elements that are perfectly correlated (e.g. two different +variables that both represent "income") or having a full set of +alternative-specific values for all the alternatives can lead to numerical +problems in the estimation process, as the log likelihood function will have +flat areas and will not have a unique maximum. This is called "model +overspecification". In Larch, the user is warned if an estimated model appears +to be overspecified, see the Larch documentation +[for details](https://larch.driftless.xyz/v6.0/user-guide/choice-models.html#overspecification). + +## Recreating Temporary Variables + +When writing out estimation data bundles, ActivitySim may omit certain temporary +variables included in a model spec. For example, in the example workplace +location choice model, the spec creates a temporary variable +["_DIST"](https://github.com/ActivitySim/activitysim-prototype-mtc/blob/7da9d6d6deca670cc4701fea749a270ab6fe77aa/configs/workplace_location.csv#L2) +which is then reused in several subsequent expressions. When the model's +estimation data bundle is written out, the "_DIST" variable may not be +included[^1]. This is not a problem when simply re-estimating the parameters of +the current model specification, as all the piecewise linear transformations +that use "_DIST" are included. However, if the user wanted to change those +piecewise linear transformations (e.g. by moving the breakpoints), the absence +of the "_DIST" value will be relevant. + +[^1]: Future versions of ActivitySim may include these values in the EDB output. + +If the missing temporary value can be reconstructed from the data that *is* +included in the EDB, it can be added back into the model's data. For example, +here we reconstitute the total distance by summing up over the piecewise +component parts: + +```{python} +model.data["_DIST"] = ( + model.data.util_dist_0_1 + + model.data.util_dist_1_2 + + model.data.util_dist_2_5 + + model.data.util_dist_5_15 + + model.data.util_dist_15_up +) +``` + +Note in this expression, we are modifying `model.data`, i.e. the data attached +to the model. If you have other raw data available in your estimation notebook, +e.g., from running `model, data = component_model(..., return_data=True)`, it is +not sufficient to manipulate `data` itself; you must manipulate `model.data` or +otherwise re-attach any data changes to the model, or else the changes will not +show up in estimation. + +## Expressing Alternative Availability + +In ActivitySim, the unavailability of alternatives is typically expressed in the +utility function given in the model specification, by including an indicator variable +for unavailable alternatives, which is then attached to a large negative coefficient. +This creates a large negative utility for the unavailable alternative, which will +render it effectively unavailable in the choice model. If *all* the alternatives +are made unavailable in this manner, this can result in a condition where no +alternative can be chosen, and ActivitySim will raise an error. + +When estimating models in Larch for use with ActivitySim, it is totally acceptable and +appropriate to use this approach to express alternative availability, +by embedding it in the utility function. This will greatly simplify the process +of subsequently transferring the resulting model specification and parameters +back to the ActivitySim model. However, it is important to note that this +approach is not the only way to express alternative availability in Larch. + +Larch includes a system to define the availability of alternatives explicitly as a +[separate array of values](https://larch.driftless.xyz/dev/user-guide/choice-models.html#availability), +which is not included in the utility function. This is +more robust in estimation, as the Larch computational engine can (and will) +automatically shift the utility values to avoid numerical underflow or overflow +issues that can arise when some choices are very unlikely but not strictly unavailable. +When using the ActivitySim style of expressing alternative availability, the onus +is entirely on the user to ensure that the utility values are not so large or small +that they cause numerical problems. If this is not checked, it is possible that +the model will appear to be estimating correctly in Larch, but the resulting model +will underflow in ActivitySim, resulting in an error when the model is run. + +The scripts that build Larch models from estimation data bundles +(`activitysim.estimation.larch`) will attempt to identify unavailability flags +in the utility specifications, and when such flags are found it will automatically +convert them to the Larch availability array format. However, since specification +files can be complex, and the unavailability flags can be expressed in many different +ways, it is possible that the automatic detection will not always work as expected. +It is a good idea to check the +[choice and availability summary](https://larch.driftless.xyz/dev/user-guide/analysis.html#choice-and-availability-summary) +on the Larch model to confirm that the availability of alternatives is being +processes as expected. + +## Components that have Related Models + +Within ActivitySim, it is possible for multiple parts of model components +to share a common set of coefficients. It is even possible for completely +separate components to do so. For example, in the MTC example model, +the joint tour destination choice model and the non-mandatory tour destination +choice model share a common set of coefficients written in a single file. +To re-estimate these coefficients, the user must simultaneously work with all +the estimation survey data from both models. + +In Larch, the case of two models sharing coefficients is handled by creating two separate +`Model` objects, one for each model, and then using the `ModelGroup` object to link them +together. The `ModelGroup` object allows the user to specify a set of common parameters +for two or more models, and then estimate them together. In the case of re-estimating +the joint tour destination choice model and the non-mandatory tour destination +choice model, it may be that both models have a similar (or even identical) +utility structure. In other cases, the linked models may have different utility +structures, which share a subset of parameters, but also may have other parameters +that are unique to each model. In either case, when using the `ModelGroup` object, +parameters are identified as being linked across models by having a common name. + +There are also components in ActivitySim where a single component can embed multiple +discrete choice models which share details, but each sub-model can have a different +utility structure or different sets of parameters. For example, the `tour_mode_choice` +component has a coefficient template file, which allows the model developer to +specify a different set of coefficients for each tour purpose, which are otherwise +processed using a common utility function. This is implemented in Larch with the +`ModelGroup` object, where each purpose is represented as a separate `Model` object, +and the `ModelGroup` object is used to link them together. This logic is further +extended by including the at-work subtour mode choice component, which allows for +the joint estimation of the tour mode choice model and the at-work subtour mode +choice model, which very reasonably share numerous parameters, but also have a few +differences. Similarly, the stop frequency and CDAP models are implemented for +Larch estimation as `ModelGroup` objects, segmented on tour purpose and household +size, respectively. + +When estimating a `ModelGroup` object, process for estimating the likelihood +maximizing parameters is the same as for a single model: the log likelihood is computed +for each observation (i.e. chooser) in the data set according to the parameters, model, +and data for that chooser, and the overall log likelihood is the sum of all the +chooser log likelihoods. By using this approach, the rest of the estimation process is +the same as for a single model, including finding parameter estimates, the standard +error of those estimates, and any statistical tests or interpretations that are +desired. + +## Components with Size Terms + +Location choice models in ActivitySim (and in discrete choice modeling +in general) usually include a "size" term. The size term is a measure +of the quantity of the alternative, which in location choice models is +typically a geographic area that contains multiple distinct alternatives. +For example, in a workplace location choice model, the size term might +be the number of jobs in the zone. In practice, the size term is a statistical +approximation of the number of opportunities available in the zone, and +can be composed of multiple components, such as the number of employers, the +number of households, and/or the number of retail establishments. + +The size term is included in the utility function of the model, but it is +expressed differently from other qualitative measures. The typical model +specification for a location choice model will include a utility function +given in a spec file, which will represent the quality of the alternative(s) +that are being considered. Put another way, the "regular" utility function +is a measure of the quality of the alternative, while the size term is a +measure of the quantity of the alternative. + +In ActivitySim, size terms appear not in the utility spec files, but instead +are expressed in a separate "size term" spec file, typically named +"destination_choice_size_terms.csv". This one file contains all the size +terms for all the location choice models. + +When using Larch for model estimation, size terms can be estimated alongside the +other parameters. The `update_size_spec` function in the `activitysim.estimation.larch` library +allows the user to update the size term specification for a model. This function +takes the existing size term specification and updates the appropriate rows +that correspond to the model being re-estimated. The resulting updated size +term output file will also include the (unmodified) size term specification +for all other size-based models. When copying the revised size term specification +to the model configuration, the user should be careful that re-estimation updates +from multiple models are not inadvertently overwriting each other. + +As an alternative, users can choose to *not* re-estimate the size terms, by +providing exogenous size terms in the model specification, and instructing Larch +not to re-estimate these parameters. This is done via the `Model.lock_value` +command, which will fix any given named parameter to a specific value. This command +takes two arguments: the name of the parameter to be fixed, and the value to +fix it to. The `lock_value` command can be used to fix the size term parameters +to the values in the size term specification file, and then the model will be +estimated without re-estimating the size terms. If no re-estimation is desired, +users can also safely ignore the `update_size_spec` function. + +## Example Notebooks + +ActivitySim includes a collection of Jupyter notebooks with interactive +re-estimation examples for many core submodels, which can be found in the GitHub +repository under the [`activitysim/examples/example_estimation/notebooks`](https://github.com/ActivitySim/activitysim/tree/main/activitysim/examples/example_estimation/notebooks) +directory. Most of these notebooks demonstrate the process of re-estimating +model parameters, without changing the model specification, i.e. finding updated +values for coefficients without changing the mathematical form of a model's +utility function. + +### Examples that include Re-Specification + +A selection of these notebooks have also been updated to demonstrate the process +of estimating model parameters and also *changing the model specification*. +These notebooks generally include instructions and a demonstration of how to +modify the model specification, and then re-estimate the model parameters, as +well as how to compare the results of the original and modified models +side-by-side, which can be useful for understanding the impact of the changes +made, and conducting statistical tests to determine if the changes made are +statistically significant. + +The following notebooks include examples of modifying the model specification: + +- [`03_work_location.ipynb`](https://github.com/ActivitySim/activitysim/tree/main/activitysim/examples/example_estimation/notebooks/03_work_location.ipynb): + This notebook includes a demonstration of modification to the SPEC file for a + destination choice model, using the "interact-sample-simulate" type model. +- [`04_auto_ownership.ipynb`](https://github.com/ActivitySim/activitysim/tree/main/activitysim/examples/example_estimation/notebooks/04_auto_ownership.ipynb): + This notebook includes a demonstration of modification to the SPEC file for the + auto ownership model. It shows an example of an edit in the utility function + for a "simple simulate" type model. +- [`06_cdap.ipynb`](https://github.com/ActivitySim/activitysim/tree/main/activitysim/examples/example_estimation/notebooks/06_cdap.ipynb): + This notebook includes a demonstration of modification to the SPEC file for the + CDAP model. This model has a complex structure that is unique among the + ActivitySim component models. +- [`17_tour_mode_choice.ipynb`](https://github.com/ActivitySim/activitysim/tree/main/activitysim/examples/example_estimation/notebooks/17_tour_mode_choice.ipynb): + This notebook includes a demonstration of modification to the spec, coefficients, + and coefficients template file for the tour mode choice model. diff --git a/docs/users-guide/index.rst b/docs/users-guide/index.rst index 35f60622f..d464a6cd0 100644 --- a/docs/users-guide/index.rst +++ b/docs/users-guide/index.rst @@ -44,6 +44,7 @@ Contents visualization example_models example_performance + estimation-mode/index .. toctree:: :maxdepth: 1 other_examples diff --git a/docs/users-guide/model_dev.rst b/docs/users-guide/model_dev.rst index 0e6d03330..dd63911c9 100644 --- a/docs/users-guide/model_dev.rst +++ b/docs/users-guide/model_dev.rst @@ -11,30 +11,54 @@ Input Data Preparation Estimation ---------- -ActivitySim includes the ability to re-estimate submodels using choice model estimation tools -such as `larch `__. To do so, ActivitySim adopts the concept of an estimation -data bundle (EDB), which is a collection of the necessary data to re-estimate a submodel. For example, for the auto ownership submodel, +ActivitySim includes the ability to re-estimate submodels using choice model estimation +tools such as `larch `__. To do so, ActivitySim adopts +the concept of an estimation data bundle (EDB), which is a collection of the necessary +data to re-estimate a submodel. For example, for the auto ownership submodel, the EDB consists of the following files: -* model settings - the auto_ownership_model_settings.yaml file -* coefficients - the auto_ownership_coefficients.csv file with each coefficient name, value, and constrain set to True or False if the coefficient is estimatable -* utilities specification - the auto_ownership_SPEC.csv utility expressions file -* chooser and alternatives data - the auto_ownership_values_combined.csv file with all chooser and alternatives data such as household information, land use information, and the utility data components for each alternative +* model settings - the auto_ownership_model_settings.yaml file -ActivitySim also includes Jupyter :ref:`estimation_example_notebooks` for estimating submodels with larch, as well as an ``activitysim.estimation.larch`` submodule that transforms EDBs into larch models. Additional estimation software translators can be added later if desired. +* coefficients - the auto_ownership_coefficients.csv file with each coefficient + name, value, and constrain set to True or False if the coefficient is estimatable -The combination of writing an EDB for a submodel + a larch estimation notebook means users can easily re-estimate submodels. This -combination of functionality means: +* utilities specification - the auto_ownership_SPEC.csv utility expressions file -* There is no duplication of model specifications. ActivitySim owns the specification and larch pivots off of it. Users code model specifications and utility expressions in ActivitySim so as to facilitate ease of use and eliminate inconsistencies and errors between the code used to estimate the models and the code used to apply the models. -* The EDB includes all the data and model structure information and the ``activitysim.estimation.larch`` submodule used by the example notebooks transforms the EDB to larch's data model for estimation. -* Users are able to add zones, alternatives, new chooser data, new taz data, new modes, new coefficients, revise utilities, and revise nesting structures in ActivitySim and larch responds accordingly. -* Eventually it may be desirable for ActivitySim to automatically write larch estimators (or other types of estimators), but for now the integration is loosely coupled rather than tightly coupled in order to provide flexibility. +* chooser and alternatives data - the auto_ownership_values_combined.csv file with + all chooser and alternatives data such as household information, land use + information, and the utility data components for each alternative + +ActivitySim also includes Jupyter :ref:`estimation_example_notebooks` for estimating +submodels with larch, as well as an ``activitysim.estimation.larch`` submodule that +transforms EDBs into larch models. Additional estimation software translators can +be added later if desired. + +The combination of writing an EDB for a submodel + a larch estimation notebook +means users can easily re-estimate submodels. This combination of functionality means: + +* There is no duplication of model specifications. ActivitySim owns the specification + and larch pivots off of it. Users code model specifications and utility expressions + in ActivitySim so as to facilitate ease of use and eliminate inconsistencies and + errors between the code used to estimate the models and the code used to apply the + models. + +* The EDB includes all the data and model structure information and the + ``activitysim.estimation.larch`` submodule used by the example notebooks transforms + the EDB to larch's data model for estimation. + +* Users are able to add zones, alternatives, new chooser data, new taz data, new + modes, new coefficients, revise utilities, and revise nesting structures in + ActivitySim and larch responds accordingly. + +* In the future ActivitySim may be more tightly coupled to Larch, but for now the + integration is loosely coupled to provide flexibility. Users preferring a different + estimation tool can write their own translator. Workflow ~~~~~~~~ -The general workflow for estimating models is shown in the following figures and explained in more detail below. +The general workflow for estimating models is shown in the following figures and +explained in more detail below. .. image:: ../images/estimation_tools.jpg @@ -190,4 +214,4 @@ Models API Calibration ----------- - \ No newline at end of file + diff --git a/pyproject.toml b/pyproject.toml index bd531b579..c7814e601 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,7 +11,7 @@ name = "activitysim" dynamic = ["version"] dependencies = [ "cytoolz >= 0.8.1", - "multimethod <2.0", + "multimethod < 2.0", "numba >= 0.57", "numpy >= 1.16.1, <1.26", "openmatrix >= 0.3.4.1", @@ -76,7 +76,6 @@ log_cli = true tb = "native" [tool.ruff] -select = ["E", "F", "B", "UP", "TID"] line-length = 140 exclude = [ ".git", @@ -88,14 +87,17 @@ exclude = [ "sandbox/" ] -[tool.ruff.isort] +[tool.ruff.lint] +select = ["E", "F", "B", "UP", "TID"] + +[tool.ruff.lint.isort] known-first-party = ["activitysim"] required-imports = ["from __future__ import annotations"] -[tool.ruff.pydocstyle] +[tool.ruff.lint.pydocstyle] convention = "numpy" -[tool.ruff.per-file-ignores] +[tool.ruff.lint.per-file-ignores] "__init__.py" = ["E402", "F401"] # Ignore import violations in all `__init__.py` files [dependency-groups] @@ -155,12 +157,15 @@ github-action = [ "dask==2023.11", "isort==5.12.0", "nbmake==1.4.6", + "pydot>=4.0.1", "pytest==7.2", "pytest-cov", "pytest-regressions", + "requests>=2.32.3", "ruff", + "xlsxwriter==3.2.5", "zarr>=2,<3", - "zstandard" + "zstandard", ] [tool.uv] diff --git a/uv.lock b/uv.lock index 527124b1c..b5cf49c6c 100644 --- a/uv.lock +++ b/uv.lock @@ -1,5 +1,5 @@ version = 1 -revision = 2 +revision = 3 requires-python = ">=3.10" resolution-markers = [ "python_full_version >= '3.12'", @@ -104,10 +104,13 @@ github-action = [ { name = "dask" }, { name = "isort" }, { name = "nbmake" }, + { name = "pydot" }, { name = "pytest" }, { name = "pytest-cov" }, { name = "pytest-regressions" }, + { name = "requests" }, { name = "ruff" }, + { name = "xlsxwriter" }, { name = "zarr", version = "2.18.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "zarr", version = "2.18.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "zstandard" }, @@ -194,10 +197,13 @@ github-action = [ { name = "dask", specifier = "==2023.11" }, { name = "isort", specifier = "==5.12.0" }, { name = "nbmake", specifier = "==1.4.6" }, + { name = "pydot", specifier = ">=4.0.1" }, { name = "pytest", specifier = "==7.2" }, { name = "pytest-cov" }, { name = "pytest-regressions" }, + { name = "requests", specifier = ">=2.32.3" }, { name = "ruff" }, + { name = "xlsxwriter", specifier = "==3.2.5" }, { name = "zarr", specifier = ">=2,<3" }, { name = "zstandard" }, ] @@ -3141,6 +3147,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e2/0d/8ba33fa83a7dcde13eb3c1c2a0c1cc29950a048bfed6d9b0d8b6bd710b4c/pydata_sphinx_theme-0.16.1-py3-none-any.whl", hash = "sha256:225331e8ac4b32682c18fcac5a57a6f717c4e632cea5dd0e247b55155faeccde", size = 6723264, upload-time = "2024-12-17T10:53:35.645Z" }, ] +[[package]] +name = "pydot" +version = "4.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyparsing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/50/35/b17cb89ff865484c6a20ef46bf9d95a5f07328292578de0b295f4a6beec2/pydot-4.0.1.tar.gz", hash = "sha256:c2148f681c4a33e08bf0e26a9e5f8e4099a82e0e2a068098f32ce86577364ad5", size = 162594, upload-time = "2025-06-17T20:09:56.454Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/32/a7125fb28c4261a627f999d5fb4afff25b523800faed2c30979949d6facd/pydot-4.0.1-py3-none-any.whl", hash = "sha256:869c0efadd2708c0be1f916eb669f3d664ca684bc57ffb7ecc08e70d5e93fee6", size = 37087, upload-time = "2025-06-17T20:09:55.25Z" }, +] + [[package]] name = "pygments" version = "2.19.1" @@ -4903,6 +4921,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a4/1e/96fd96419fec1a37da998a1ca3d558f2cae2f6f3cd5015170371b05a2b6b/xarray-2025.4.0-py3-none-any.whl", hash = "sha256:b27defd082c5cb85d32c695708de6bb05c2838fb7caaf3f952982e602a35b9b8", size = 1290171, upload-time = "2025-04-29T23:27:57.059Z" }, ] +[[package]] +name = "xlsxwriter" +version = "3.2.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a7/47/7704bac42ac6fe1710ae099b70e6a1e68ed173ef14792b647808c357da43/xlsxwriter-3.2.5.tar.gz", hash = "sha256:7e88469d607cdc920151c0ab3ce9cf1a83992d4b7bc730c5ffdd1a12115a7dbe", size = 213306, upload-time = "2025-06-17T08:59:14.619Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fa/34/a22e6664211f0c8879521328000bdcae9bf6dbafa94a923e531f6d5b3f73/xlsxwriter-3.2.5-py3-none-any.whl", hash = "sha256:4f4824234e1eaf9d95df9a8fe974585ff91d0f5e3d3f12ace5b71e443c1c6abd", size = 172347, upload-time = "2025-06-17T08:59:13.453Z" }, +] + [[package]] name = "xmle" version = "0.1.26" From e1f9b2abba9efd07bda74276db0b43d266b66052 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Fri, 26 Sep 2025 07:21:34 -0500 Subject: [PATCH 17/34] Wrap mem.consolidate_logs in try-except to prevent model run crashes (#979) * Initial plan * Wrap mem.consolidate_logs in try-except to prevent model run crashes Co-authored-by: jpn-- <1036626+jpn--@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: jpn-- <1036626+jpn--@users.noreply.github.com> Co-authored-by: Jeffrey Newman --- activitysim/cli/run.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/activitysim/cli/run.py b/activitysim/cli/run.py index 1293fa2c7..af9a76daa 100644 --- a/activitysim/cli/run.py +++ b/activitysim/cli/run.py @@ -452,7 +452,13 @@ def run(args): raise chunk.consolidate_logs(state) - mem.consolidate_logs(state) + try: + mem.consolidate_logs(state) + except Exception as e: + logger.warning( + f"Memory log consolidation failed with error: {e}. " + "This does not affect model results, but memory usage logs will not be consolidated." + ) from activitysim.core.flow import TimeLogger From 5e528fc1a1dbd49b286b83d68b91c2fd7917bc8c Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Fri, 26 Sep 2025 13:08:25 -0500 Subject: [PATCH 18/34] Add CITATION.cff file for academic referencing (#985) * Initial plan * Add CITATION.cff file for academic referencing Co-authored-by: jpn-- <1036626+jpn--@users.noreply.github.com> * Change copyright holder in LICENSE file Updated copyright holder from Association of Metropolitan Planning Organizations Research Foundation to Zephyr Foundation. * Update README to remove status badges Removed Build and Coverage Status badges from README, and add link to Zephyr page. * Update CITATION.cff per review feedback Co-authored-by: jpn-- <1036626+jpn--@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: jpn-- <1036626+jpn--@users.noreply.github.com> Co-authored-by: Jeffrey Newman --- CITATION.cff | 24 ++++++++++++++++++++++++ LICENSE.txt | 2 +- README.md | 4 +--- 3 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 CITATION.cff diff --git a/CITATION.cff b/CITATION.cff new file mode 100644 index 000000000..d234a51a5 --- /dev/null +++ b/CITATION.cff @@ -0,0 +1,24 @@ +cff-version: 1.2.0 +message: "If you use this software, please cite it as below." +type: software +title: "ActivitySim" +abstract: "Advanced, open-source, activity-based travel behavior modeling software based on best software development practices for distribution at no charge to the public." +authors: + - name: "Zephyr Foundation" +repository-code: "https://github.com/ActivitySim/activitysim" +url: "https://activitysim.github.io/activitysim" +license: BSD-3-Clause +keywords: + - "activity-based modeling" + - "travel behavior" + - "transportation planning" + - "microsimulation" + - "travel demand modeling" +preferred-citation: + type: software + title: "ActivitySim" + authors: + - name: "Zephyr Foundation" + repository-code: "https://github.com/ActivitySim/activitysim" + url: "https://activitysim.github.io/activitysim" + license: BSD-3-Clause \ No newline at end of file diff --git a/LICENSE.txt b/LICENSE.txt index c091c014e..7f725194d 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,6 +1,6 @@ BSD 3-Clause License -Copyright (c) Association of Metropolitan Planning Organizations Research Foundation +Copyright (c) Zephyr Foundation All rights reserved. diff --git a/README.md b/README.md index 93e7f2ec9..6f7dfae18 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,6 @@ ActivitySim =========== -[![Build Status](https://travis-ci.com/ActivitySim/activitysim.svg?branch=main)](https://travis-ci.org/github/ActivitySim/activitysim)[![Coverage Status](https://coveralls.io/repos/github/ActivitySim/activitysim/badge.svg?branch=main)](https://coveralls.io/github/ActivitySim/activitysim?branch=main) - The mission of the ActivitySim project is to create and maintain advanced, open-source, activity-based travel behavior modeling software based on best software development practices for distribution at no charge to the public. @@ -20,6 +18,6 @@ but it is generally expected that code in the `main` branch should be usable. ## Helpful Links -- [AMPO Research Foundation](https://research.ampo.org/#research) +- [Zephyr Foundation](https://activitysim.github.io) - [Documentation](https://activitysim.github.io/activitysim) - [Releases](https://github.com/ActivitySim/activitysim/releases) From 00a76ef4d14c52df96eb6661baecc123c47f907c Mon Sep 17 00:00:00 2001 From: Jeffrey Newman Date: Mon, 29 Sep 2025 18:38:07 -0500 Subject: [PATCH 19/34] update uv lock file (#986) * update uv lock file * strip github-action group, only use dev * update coveralls * update uv lock to larch 6.0.42 * begin to remove placeholder_sandag example --- .github/workflows/core_tests.yml | 27 +- activitysim/examples/example_manifest.yaml | 214 - .../placeholder_sandag/test/test_sandag.py | 383 -- docs/development.rst | 2 +- docs/users-guide/modelsetup.rst | 2 +- docs/users-guide/other_examples.rst | 21 - pyproject.toml | 25 +- uv.lock | 4357 ++++++++++------- 8 files changed, 2732 insertions(+), 2299 deletions(-) delete mode 100644 activitysim/examples/placeholder_sandag/test/test_sandag.py diff --git a/.github/workflows/core_tests.yml b/.github/workflows/core_tests.yml index 2c583275c..8e659b25c 100644 --- a/.github/workflows/core_tests.yml +++ b/.github/workflows/core_tests.yml @@ -39,7 +39,7 @@ jobs: - name: Install activitysim run: | - uv sync --locked --group github-action --no-dev + uv sync --locked - name: Lint with Black run: | @@ -105,7 +105,7 @@ jobs: - name: Install activitysim run: | - uv sync --locked --group github-action --no-dev + uv sync --locked - name: Lint with Black run: | @@ -143,7 +143,6 @@ jobs: - placeholder_psrc - prototype_marin - prototype_mtc_extended - - placeholder_sandag - prototype_sandag_xborder - production_semcog - prototype_mwcog @@ -171,7 +170,7 @@ jobs: - name: Install activitysim run: | - uv sync --locked --group github-action --no-dev + uv sync --locked # TODO: Cache sharrow compiled flows? The contents of __pycache__ appear to # be ignored, so this is not working as expected right now @@ -240,7 +239,7 @@ jobs: - name: Install activitysim run: | - uv sync --locked --group github-action --no-dev + uv sync --locked - name: Checkout Example uses: actions/checkout@v4 @@ -252,7 +251,7 @@ jobs: - name: Test ${{ matrix.region }} run: | cd ${{ matrix.region-repo }} - uv run --project .. --locked --group github-action --no-dev pytest ./test + uv run --project .. --locked pytest ./test random_seed_generation: needs: foundation @@ -282,7 +281,7 @@ jobs: - name: Install activitysim run: | - uv sync --locked --group github-action --no-dev + uv sync --locked - name: Test Random Seed Generation run: | @@ -315,7 +314,7 @@ jobs: - name: Install activitysim run: | - uv sync --locked --group github-action --no-dev + uv sync --locked - name: Test Estimation Mode run: | @@ -351,16 +350,16 @@ jobs: - name: Install activitysim run: | - uv sync --locked --group github-action + uv sync --locked - name: Create Estimation Data run: > - uv run --group github-action python activitysim/examples/example_estimation/notebooks/est_mode_setup.py + uv run python activitysim/examples/example_estimation/notebooks/est_mode_setup.py --household_sample_size 5000 - name: Test Estimation Notebooks run: > - uv run --group github-action pytest activitysim/examples/example_estimation/notebooks + uv run pytest activitysim/examples/example_estimation/notebooks --nbmake-timeout=3000 --ignore=activitysim/examples/example_estimation/notebooks/01_estimation_mode.ipynb --ignore-glob=activitysim/examples/example_estimation/notebooks/test-estimation-data/** @@ -392,7 +391,7 @@ jobs: - name: Install activitysim run: | - uv sync --locked --only-group github-action + uv sync --locked - name: Test Estimation EDB Creation run: | @@ -425,7 +424,7 @@ jobs: - name: Install activitysim run: | - uv sync --locked --group github-action --no-dev + uv sync --locked - name: Test Expression Profiling run: | @@ -457,7 +456,7 @@ jobs: python-version-file: ".python-version" - name: Install activitysim run: | - uv sync --locked --group github-action --no-dev + uv sync --locked - name: localize version switcher run: | python .github/workflows/localize-base-urls.py docs/_static/switcher.json diff --git a/activitysim/examples/example_manifest.yaml b/activitysim/examples/example_manifest.yaml index f5d393217..c3e8ededa 100644 --- a/activitysim/examples/example_manifest.yaml +++ b/activitysim/examples/example_manifest.yaml @@ -619,220 +619,6 @@ data/land_use.csv 36383b4c9dacdd7dd10c84b4479aa9f53ced23e155b6d354c468decc6710c80e -- name: placeholder_sandag_1_zone - description: 90-TAZ (includes univ) 1-zone test example for the SANDAG region - # activitysim create -e placeholder_sandag_1_zone -d test_placeholder_sandag_1_zone - # cd test_placeholder_sandag_1_zone - # activitysim run -c configs_1_zone -c prototype_mtc/configs -d data_1 -o output_1 -s settings_mp.yaml - # cd .. - include: - - placeholder_sandag/../prototype_mtc/configs - prototype_mtc - - placeholder_sandag/configs_1_zone - - placeholder_sandag/data_1 - - placeholder_sandag/output_1 - -- name: placeholder_sandag_1_zone_full - description: full 1-zone example for the SANDAG region - # activitysim create -e placeholder_sandag_1_zone_full -d test_placeholder_sandag_1_zone_full - # cd test_placeholder_sandag_1_zone_full - # activitysim run -c configs_1_zone -c prototype_mtc/configs -d data_1 -o output_1 -s settings_mp.yaml - # cd .. - include: - - placeholder_sandag/../prototype_mtc/configs - prototype_mtc - - placeholder_sandag/configs_1_zone - # placeholder_sandag/data_1 # load data from activitysim_resources instead - - placeholder_sandag/output_1 - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_1_zone_data_full/households.csv - data_1/households.csv - 2b0b19a1a0b00901e80a533fc6418a4dbeb3d0b017d9feadae71324f9145dcec - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_1_zone_data_full/persons.csv - data_1/persons.csv - 7864364ef70ab3f490570768da12984593da81921a0cd3f8e4b0d724ae436f7a - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_1_zone_data_full/land_use.csv - data_1/land_use.csv - 2088fd1375a6a5ee253cc11da5f1b9171a9e0b788896589197ecd41ded35edd0 - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_1_zone_data_full/skims1.omx - data_1/skims1.omx - 33cd691c51b205e0c2bd09dba5612cd05862127f3c8ffc83c4fd533e83a0817b - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_1_zone_data_full/skims2.omx - data_1/skims2.omx - e650d70aeb932a1452f636088af599abe6e66dd0843a045130d8e683601b5a82 - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_1_zone_data_full/skims3.omx - data_1/skims3.omx - 9940974c5cde572ad88e1e1d3db7ba7e7954084599f65aac1ebe575233cde68d - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_1_zone_data_full/skims4.omx - data_1/skims4.omx - 586cb610b15d698e5ebbb6ba02847c405b5ed6b65c24a01cd812684cf665631c - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_1_zone_data_full/skims5.omx - data_1/skims5.omx - c3584e8c413d63ee38847ece0cc665c969a2152480bd4ca71dfbe9e91b59b2bd - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_1_zone_data_full/skims6.omx - data_1/skims6.omx - e3f7fb1e0b334fc83dc69985dce8b925e3660149c5de5635c7d8464e306074b9 - -- name: placeholder_sandag_2_zone - description: 90-TAZ 609-MAZ (includes univ) 2-zone test example for the SANDAG region - # activitysim create -e placeholder_sandag_2_zone -d test_placeholder_sandag_2_zone - # cd test_placeholder_sandag_2_zone - # activitysim run -c configs_2_zone -c placeholder_psrc/configs -d data_2 -o output_2 -s settings_mp.yaml - # cd .. - include: - - placeholder_sandag/../placeholder_psrc/configs - placeholder_psrc - - placeholder_sandag/configs_2_zone - - placeholder_sandag/data_2 - - placeholder_sandag/data_3/maz_to_maz_bike.csv - data_2/maz_to_maz_bike.csv - # the original data for data_2 was corrupted, but there's no need to store this file twice in the repo - - placeholder_sandag/output_2 - -- name: placeholder_sandag_2_zone_full - description: full 2-zone example for the SANDAG region - # activitysim create -e placeholder_sandag_2_zone_full -d test_placeholder_sandag_2_zone_full - # cd test_placeholder_sandag_2_zone_full - # activitysim run -c configs_2_zone -c placeholder_psrc/configs -d data_2 -o output_2 -s settings_mp.yaml - # cd .. - include: - - placeholder_sandag/../placeholder_psrc/configs - placeholder_psrc - - placeholder_sandag/configs_2_zone - # placeholder_sandag/data_2 # load data from activitysim_resources instead - - placeholder_sandag/output_2 - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_2_zone_data_full/households.csv - data_2/households.csv - 4afe40dfbdb89f17cd150fd5b32245364d538cdebb91fd323e18c6f570d1a087 - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_2_zone_data_full/land_use.csv - data_2/land_use.csv - e914b54b16000af84d2e49e27697898028a7c007a5792812c7274ce33e1dc064 - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_2_zone_data_full/maz.csv - data_2/maz.csv - d9d908adcbe1e56fbb6d50665e767c317cdfbeedeae675dda449206f2a7fb3f1 - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_2_zone_data_full/maz_to_maz_bike.csv - data_2/maz_to_maz_bike.csv - c68322fff0ff32a7d487b7cd8dd1e205192d2728621c9cc541e8c41722293cbc - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_2_zone_data_full/maz_to_maz_walk.csv - data_2/maz_to_maz_walk.csv - 76c702d8ded8ae9eb7ae978ffa35c1e74ae6264dd2f90d96cdaa42d49c54684a - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_2_zone_data_full/persons.csv - data_2/persons.csv - 7864364ef70ab3f490570768da12984593da81921a0cd3f8e4b0d724ae436f7a - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_2_zone_data_full/taz.csv - data_2/taz.csv - ac9fa2f5adc13e90b1fa5537444f25b9ea389bdfe56e7e9f1ef3be9eb63014ef - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_2_zone_data_full/skims1.omx - data_2/skims1.omx - 4ad4aa7669c095a0dfe94c48bc00f57ff7b07c623f4322d75d4ef5c69bcfabcd - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_2_zone_data_full/skims2.omx - data_2/skims2.omx - fad6033a5ddbd2efbd3ca20b5b6bb98408ad57708d91cf129fabf8d4ec8d8063 - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_2_zone_data_full/skims3.omx - data_2/skims3.omx - c7691c95436a6599e7c5cb497eecd4b86a669a3078785ec37f40247f15016e9c - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_2_zone_data_full/skims4.omx - data_2/skims4.omx - 61f907862c4cff5617c9fe36c0b68885277821b1a1cfa1b9290f30542f04cbbe - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_2_zone_data_full/skims5.omx - data_2/skims5.omx - 04f5b2bad494b39eadb3a59e040aa1603edaa7cdc12ba1f457eacc69b0f89f60 - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_2_zone_data_full/skims6.omx - data_2/skims6.omx - 77a82afa09ee1f4c48aa7928e96756525d170402ca99da04cdf676e45cb6fbcf - -- name: placeholder_sandag_3_zone - description: 90-TAZ 609-MAZ (includes univ) 3-zone test example for the SANDAG region - # activitysim create -e placeholder_sandag_3_zone -d test_placeholder_sandag_3_zone - # cd test_placeholder_sandag_3_zone - # activitysim run -c configs_3_zone -c prototype_mtc/configs -d data_3 -o output_3 -s settings_mp.yaml - # cd .. - include: - - placeholder_sandag/data_3 - - placeholder_sandag/../prototype_mtc/configs - prototype_mtc - - placeholder_sandag/configs_3_zone - - placeholder_sandag/configs_skip_accessibility - - placeholder_sandag/output_3 - subdirs: - configs_dir: - - configs_3_zone - - prototype_mtc/configs - data_dir: data_3 - output_dir: output_3 - -- name: placeholder_sandag_3_zone_full - description: full 3-zone example for the SANDAG region - # activitysim create -e placeholder_sandag_3_zone_full -d test_placeholder_sandag_3_zone_full - # cd test_placeholder_sandag_3_zone_full - # activitysim run -c configs_3_zone -c prototype_mtc/configs -d data_3 -o output_3 -s settings_mp.yaml - # cd .. - include: - # placeholder_sandag/data_3 # load data from activitysim_resources instead - - placeholder_sandag/../prototype_mtc/configs - prototype_mtc - - placeholder_sandag/configs_3_zone - - placeholder_sandag/configs_skip_accessibility - - placeholder_sandag/output_3 - - placeholder_sandag/data_3/cached_accessibility.csv.gz - data_3/cached_accessibility.csv.gz - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_3_zone_data_full/taz_skims1.omx - data_3/taz_skims1.omx - 5b56d0e79ec671e37f8c71f7fedd741d7bf32d2bced866ab1f03f3973fccce8c - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_3_zone_data_full/taz_skims2.omx - data_3/taz_skims2.omx - fbdd68ba7f8c82914b47da885326da35499293fd9097f5928b5247bbf8f70376 - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_3_zone_data_full/taz_skims3.omx - data_3/taz_skims3.omx - 57e2e72e4e5ab19ecccc240df8223fc6433d315ca710dca975f81f32dc25e92d - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_3_zone_data_full/taz_skims4.omx - data_3/taz_skims4.omx - f68cf6cf0b5c8e58a19d8ba9ea6cc39abcce0af417f635d6ccffdd28dae50779 - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_3_zone_data_full/tap_skims1.omx - data_3/tap_skims1.omx - a26f38efab2f88a5923938b7572e47badac487a54d4819616bb5ccc5c19a6eb0 - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_3_zone_data_full/tap_skims2.omx - data_3/tap_skims2.omx - a0aef494023763572674acbe755d665db100c1d18f664b464c514b30503824d9 - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_3_zone_data_full/tap_skims3.omx - data_3/tap_skims3.omx - a33659454e215402618a352259398eed59a8e42991fd8890e267e563a0730853 - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_3_zone_data_full/tap_skims4.omx - data_3/tap_skims4.omx - f905398e850ed005df5647de46f13eb976ba3c313f2f7aea1f71c369c9004c7f - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_3_zone_data_full/households.csv - data_3/households.csv - e504d391c19367b86a09074bbabeb9149a419a8e07f98cd7e380f98b399c1cd8 - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_3_zone_data_full/persons.csv - data_3/persons.csv - 7864364ef70ab3f490570768da12984593da81921a0cd3f8e4b0d724ae436f7a - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_3_zone_data_full/land_use.csv - data_3/land_use.csv - d773c95d08d24962d53f54929080bacb91993c01925350b0d92a32f18b66d790 - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_3_zone_data_full/maz.csv - data_3/maz.csv - c8162a6f38541f62ed706529c062bd0c4158bbcfbc1f65d787b506a5ad218dda - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_3_zone_data_full/taz.csv - data_3/taz.csv - ac9fa2f5adc13e90b1fa5537444f25b9ea389bdfe56e7e9f1ef3be9eb63014ef - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_3_zone_data_full/maz_to_maz_bike.csv - data_3/maz_to_maz_bike.csv - 39199f42334c65f1eadf2c47213ee8a10d83eb0bac4a7447a6fbd165d9065e11 - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_3_zone_data_full/maz_to_maz_walk.csv - data_3/maz_to_maz_walk.csv - 8cf6cd05e95ed08a7501229ed8ec515d83fd2904d407ecc350f1867ef2a9b378 - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_3_zone_data_full/maz_to_tap_walk.csv - data_3/maz_to_tap_walk.csv - 2d0e4c49f7d94f8d15ee9a5d39d9dc9c9ab10cfe6259a835284053c84cef94d5 - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_3_zone_data_full/maz_to_tap_drive.csv - data_3/maz_to_tap_drive.csv - bd4c4ef6a87c0c3db18615f6c2dcf6e863aac62afce48f627ffa142c9c4e9789 - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_3_zone_data_full/tap.csv - data_3/tap.csv - 9b74d18d681a1c61708dd5767d90d7872443a0ef7be189f802c3905592f3c8da - - https://media.githubusercontent.com/media/activitysim/activitysim_resources/master/sandag_3_zone_data_full/tap_lines.csv - data_3/tap_lines.csv - 0e1b2c532e5e85b48e2ac77b2836be7ec0cc7cba79907c6f5fb11d2ba171230a - - name: prototype_sandag_xborder description: SANDAG cross border travel model # activitysim create -e prototype_sandag_xborder -d test_prototype_sandag_xborder diff --git a/activitysim/examples/placeholder_sandag/test/test_sandag.py b/activitysim/examples/placeholder_sandag/test/test_sandag.py deleted file mode 100644 index cda0d0872..000000000 --- a/activitysim/examples/placeholder_sandag/test/test_sandag.py +++ /dev/null @@ -1,383 +0,0 @@ -from __future__ import annotations - -# ActivitySim -# See full license in LICENSE.txt. -import os -import shutil -import subprocess -import sys -from pathlib import Path - -import pandas as pd -import pkg_resources -import pytest - -from activitysim.core import configuration, test, workflow - - -def example_path(dirname): - resource = os.path.join("examples", "placeholder_sandag", dirname) - return pkg_resources.resource_filename("activitysim", resource) - - -def mtc_example_path(dirname): - resource = os.path.join("examples", "prototype_mtc", dirname) - return pkg_resources.resource_filename("activitysim", resource) - - -def psrc_example_path(dirname): - resource = os.path.join("examples", "placeholder_psrc", dirname) - return pkg_resources.resource_filename("activitysim", resource) - - -def build_data(): - shutil.copy( - example_path(os.path.join("data_3", "maz_to_maz_bike.csv")), - example_path(os.path.join("data_2", "maz_to_maz_bike.csv")), - ) - - -@pytest.fixture(scope="module") -def data(): - build_data() - - -def run_test(zone, multiprocess=False, sharrow=False, recode=True): - def test_path(dirname): - return os.path.join(os.path.dirname(__file__), dirname) - - def regress(zone): - # ## regress tours - if sharrow and os.path.isfile( - test_path(f"regress/final_{zone}_zone_tours_sh.csv") - ): - regress_tours_df = pd.read_csv( - test_path(f"regress/final_{zone}_zone_tours_sh.csv") - ) - else: - regress_tours_df = pd.read_csv( - test_path(f"regress/final_{zone}_zone_tours.csv") - ) - tours_df = pd.read_csv(test_path(f"output_{zone}/final_{zone}_zone_tours.csv")) - tours_df.to_csv( - test_path(f"regress/final_{zone}_zone_tours_last_run.csv"), index=False - ) - print("regress tours") - test.assert_frame_substantively_equal( - tours_df, regress_tours_df, rtol=1e-03, check_dtype=False - ) - - # ## regress trips - if sharrow and os.path.isfile( - test_path(f"regress/final_{zone}_zone_trips_sh.csv") - ): - regress_trips_df = pd.read_csv( - test_path(f"regress/final_{zone}_zone_trips_sh.csv") - ) - else: - regress_trips_df = pd.read_csv( - test_path(f"regress/final_{zone}_zone_trips.csv") - ) - trips_df = pd.read_csv(test_path(f"output_{zone}/final_{zone}_zone_trips.csv")) - trips_df.to_csv( - test_path(f"regress/final_{zone}_zone_trips_last_run.csv"), index=False - ) - print("regress trips") - test.assert_frame_substantively_equal( - trips_df, regress_trips_df, rtol=1e-03, check_dtype=False - ) - - if zone == "2": - # also test accessibility for the 2-zone system - regress_accessibility_df = pd.read_csv( - test_path( - f"regress/final_{zone}_zone_proto_disaggregate_accessibility.csv" - ) - ) - final_accessibility_df = pd.read_csv( - test_path( - f"output_{zone}/final_{zone}_zone_proto_disaggregate_accessibility.csv" - ) - ) - final_accessibility_df = final_accessibility_df[ - [ - c - for c in final_accessibility_df.columns - if not c.startswith("_original_") - ] - ] - test.assert_frame_substantively_equal( - final_accessibility_df, - regress_accessibility_df, - check_dtype=False, - ) - - # run test - file_path = os.path.join(os.path.dirname(__file__), "simulation.py") - - if zone == "2": - base_configs = psrc_example_path("configs") - else: - base_configs = mtc_example_path("configs") - - run_args = [ - "-c", - test_path(f"configs_{zone}_zone"), - "-c", - example_path(f"configs_{zone}_zone"), - "-c", - base_configs, - "-d", - example_path(f"data_{zone}"), - "-o", - test_path(f"output_{zone}"), - ] - - if multiprocess: - run_args = run_args + ["-s", "settings_mp.yaml"] - elif not recode: - run_args = run_args + ["-s", "settings_no_recode.yaml"] - - if sharrow: - run_args = ["-c", test_path(f"configs_{zone}_sharrow")] + run_args - - try: - subprocess.run(["coverage", "run", "-a", file_path] + run_args, check=True) - except FileNotFoundError: - subprocess.run([sys.executable, file_path] + run_args, check=True) - from tempfile import TemporaryFile - from time import sleep - - with TemporaryFile() as outputstream: - env = os.environ.copy() - pythonpath = env.pop("PYTHONPATH", None) - process = subprocess.Popen( - args=[sys.executable, file_path] + run_args, - shell=True, - stdout=outputstream, - stderr=subprocess.STDOUT, - cwd=os.getcwd(), - env=env, - ) - while process.poll() is None: - where = outputstream.tell() - lines = outputstream.read() - if not lines: - # Adjust the sleep interval to your needs - sleep(0.25) - # make sure pointing to the last place we read - outputstream.seek(where) - else: - # Windows adds an extra carriage return and then chokes on - # it when displaying (or, as it were, not displaying) the - # output. So we give Windows a little helping hand. - print(lines.decode().replace("\r\n", "\n"), end="") - - regress(zone) - - -def test_1_zone(data): - run_test(zone="1", multiprocess=False) - - -def test_1_zone_mp(data): - run_test(zone="1", multiprocess=True) - - -def test_1_zone_sharrow(data): - # Run both single and MP in one test function - # guarantees that compile happens in single - run_test(zone="1", multiprocess=False, sharrow=True) - run_test(zone="1", multiprocess=True, sharrow=True) - - -def test_2_zone(data): - run_test(zone="2", multiprocess=False) - - -def test_2_zone_local_compute(data): - def _test_path(dirname): - return os.path.join(os.path.dirname(__file__), dirname) - - import activitysim.abm # register components # noqa: F401 - - state = workflow.State.make_default( - data_dir=example_path("data_2"), - configs_dir=( - _test_path("configs_2_zone"), - example_path("configs_2_zone"), - psrc_example_path("configs"), - ), - output_dir=_test_path("output_2"), - ) - state.run.all(resume_after=None) - # ## regress tours - regress_tours_df = pd.read_csv(_test_path(f"regress/final_2_zone_tours.csv")) - tours_df = pd.read_csv(_test_path(f"output_2/final_2_zone_tours.csv")) - tours_df.to_csv( - _test_path(f"regress/final_2_zone_tours_last_run_localcompute.csv"), index=False - ) - test.assert_frame_substantively_equal( - tours_df, regress_tours_df, rtol=1e-03, check_dtype=False - ) - - # ## regress trips - regress_trips_df = pd.read_csv(_test_path(f"regress/final_2_zone_trips.csv")) - trips_df = pd.read_csv(_test_path(f"output_2/final_2_zone_trips.csv")) - trips_df.to_csv(_test_path(f"regress/final_2_zone_trips_last_run.csv"), index=False) - test.assert_frame_substantively_equal( - trips_df, regress_trips_df, rtol=1e-03, check_dtype=False - ) - - # also test accessibility for the 2-zone system - regress_accessibility_df = pd.read_csv( - _test_path(f"regress/final_2_zone_proto_disaggregate_accessibility.csv") - ) - final_accessibility_df = pd.read_csv( - _test_path(f"output_2/final_2_zone_proto_disaggregate_accessibility.csv") - ) - final_accessibility_df = final_accessibility_df[ - [c for c in final_accessibility_df.columns if not c.startswith("_original_")] - ] - test.assert_frame_substantively_equal( - final_accessibility_df, - regress_accessibility_df, - check_dtype=False, - ) - - -def test_2_zone_norecode(data): - run_test(zone="2", multiprocess=False, recode=False) - - -def test_2_zone_mp(data): - run_test(zone="2", multiprocess=True) - - -def test_2_zone_sharrow(data): - # Run both single and MP in one test function - # guarantees that compile happens in single - run_test(zone="2", multiprocess=False, sharrow=True) - run_test(zone="2", multiprocess=True, sharrow=True) - - -def test_3_zone(data): - run_test(zone="3", multiprocess=False) - - -def test_3_zone_mp(data): - run_test(zone="3", multiprocess=True) - - -def test_3_zone_sharrow(data): - # Run both single and MP in one test function - # guarantees that compile happens in single - run_test(zone="3", multiprocess=False, sharrow=True) - run_test(zone="3", multiprocess=True, sharrow=True) - - -EXPECTED_MODELS_3_ZONE = [ - "initialize_landuse", - "initialize_households", - "compute_accessibility", - "initialize_los", - "initialize_tvpb", - "school_location", - "workplace_location", - "auto_ownership_simulate", - "free_parking", - "cdap_simulate", - "mandatory_tour_frequency", - "mandatory_tour_scheduling", - "joint_tour_frequency", - "joint_tour_composition", - "joint_tour_participation", - "joint_tour_destination", - "joint_tour_scheduling", - "non_mandatory_tour_frequency", - "non_mandatory_tour_destination", - "non_mandatory_tour_scheduling", - "tour_mode_choice_simulate", - "atwork_subtour_frequency", - "atwork_subtour_destination", - "atwork_subtour_scheduling", - "atwork_subtour_mode_choice", - "stop_frequency", - "trip_purpose", - "trip_destination", - "trip_purpose_and_destination", - "trip_scheduling", - "trip_mode_choice", - "write_data_dictionary", - "track_skim_usage", - "write_trip_matrices", - "write_tables", -] - - -@test.run_if_exists("placeholder_sandag_3_zone_reference_pipeline.zip") -def test_3_zone_progressive(): - import activitysim.abm # register components - - state = workflow.create_example( - "placeholder_sandag_3_zone", directory="/tmp/placeholder_sandag_3_zone" - ) - - assert state.settings.models == EXPECTED_MODELS_3_ZONE - assert state.settings.chunk_size == 0 - assert state.settings.sharrow == False - - state.settings.recode_pipeline_columns = True - state.settings.treat_warnings_as_errors = False - state.settings.households_sample_size = 30 - state.settings.use_shadow_pricing = False - state.settings.want_dest_choice_sample_tables = False - state.settings.want_dest_choice_presampling = True - state.settings.cleanup_pipeline_after_run = True - state.settings.output_tables = configuration.OutputTables( - h5_store=False, - action="include", - prefix="final_3_zone_", - sort=True, - tables=["trips", "tours"], - ) - from activitysim.abm.tables.skims import network_los_preload - - state.get(network_los_preload) - state.network_settings.read_skim_cache = False - state.network_settings.write_skim_cache = False - state.network_settings.rebuild_tvpb_cache = False - - for step_name in EXPECTED_MODELS_3_ZONE: - state.run.by_name(step_name) - try: - state.checkpoint.check_against( - Path(__file__).parent.joinpath( - "placeholder_sandag_3_zone_reference_pipeline.zip" - ), - checkpoint_name=step_name, - ) - except Exception: - print(f"> placeholder_sandag_3_zone {step_name}: ERROR") - raise - else: - print(f"> placeholder_sandag_3_zone {step_name}: ok") - - -if __name__ == "__main__": - # call each test explicitly so we get a pass/fail for each - build_data() - run_test(zone="1", multiprocess=False) - run_test(zone="1", multiprocess=True) - run_test(zone="1", multiprocess=False, sharrow=True) - run_test(zone="1", multiprocess=True, sharrow=True) - - run_test(zone="2", multiprocess=False) - run_test(zone="2", multiprocess=True) - run_test(zone="2", multiprocess=False, sharrow=True) - run_test(zone="2", multiprocess=True, sharrow=True) - - run_test(zone="3", multiprocess=False) - run_test(zone="3", multiprocess=True) - run_test(zone="3", multiprocess=False, sharrow=True) - run_test(zone="3", multiprocess=True, sharrow=True) diff --git a/docs/development.rst b/docs/development.rst index 8ba941f24..b71373f7c 100644 --- a/docs/development.rst +++ b/docs/development.rst @@ -322,7 +322,7 @@ Generally speaking, there are two types of ActivitySim examples: test examples a examples are :ref:`prototype_mtc`, :ref:`example_estimation`, :ref:`placeholder_multiple_zone`, and :ref:`prototype_marin`. These examples are owned and maintained by the project. * Agency examples - these are agency partner model implementations currently being setup. The current agency examples - are :ref:`prototype_arc`, :ref:`prototype_semcog`, :ref:`placeholder_psrc`, :ref:`placeholder_sandag`, and :ref:`prototype_sandag_xborder`. These examples can be + are :ref:`prototype_arc`, :ref:`prototype_semcog`, :ref:`placeholder_psrc`, and :ref:`prototype_sandag_xborder`. These examples can be configured in ways different from the test examples, include new inputs and expressions, and may include new planned software components for contribution to ActivitySim. These examples are owned by the agency. diff --git a/docs/users-guide/modelsetup.rst b/docs/users-guide/modelsetup.rst index 97695c99e..2398ed3d9 100644 --- a/docs/users-guide/modelsetup.rst +++ b/docs/users-guide/modelsetup.rst @@ -271,7 +271,7 @@ removing any dependency on the source code. Also, `uv run` automatically installs the dependencies listed in `pyproject.toml` under `dependencies` under `[project]`, and it also installs those listed -under `dev` under `[dependency-groups]` (not `github-action`). If you want to +under `dev` under `[dependency-groups]`. If you want to skip the dependency groups entirely with a *uv* install (and only install those that would install via `pip` from 'pypi`), use the `--no-default-groups` flag with `uv sync`. diff --git a/docs/users-guide/other_examples.rst b/docs/users-guide/other_examples.rst index 98011ba3d..662c82bc2 100644 --- a/docs/users-guide/other_examples.rst +++ b/docs/users-guide/other_examples.rst @@ -50,8 +50,6 @@ Some available examples include those listed in the table below. +-------------------------------------------+-----------------------------------------------------------+--------------+----------------------+ | placeholder_psrc | PSRC agency example | 2 | Future development | +-------------------------------------------+-----------------------------------------------------------+--------------+----------------------+ -| placeholder_sandag | SANDAG agency example | 3 | Future development | -+-------------------------------------------+-----------------------------------------------------------+--------------+----------------------+ | prototype_sandag_xborder | SANDAG agency example | 3 | In development | +-------------------------------------------+-----------------------------------------------------------+--------------+----------------------+ | prototype_mwcog | MWCOG agency example | 2 | In development | @@ -195,25 +193,6 @@ prototype_mtc model design. It uses PSRC zones, land use, synthetic population, See example commands in `example_manifest.yaml `_ for running placeholder_psrc. For optimal performance, configure multiprocessing and chunk_size based on machine hardware. -.. _placeholder_sandag : - -**placeholder_sandag** - - -.. note:: - - This example is in development - - -The placeholder_sandag is a multi-part model, containing one-, two-, and three- zone system (MAZs, TAZs, and TAPs) implementation of the -prototype_mtc model design. It uses SANDAG zones, land use, synthetic population, and network LOS (skims). - -*Example* - - -See example commands in `example_manifest.yaml `_ -for running placeholder_sandag. For optimal performance, configure multiprocessing and chunk_size based on machine hardware. - .. _prototype_sandag_xborder : **prototype_sandag_xborder** diff --git a/pyproject.toml b/pyproject.toml index c7814e601..e1fb5b5bc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -105,9 +105,9 @@ dev = [ "altair", "autodoc_pydantic", "asv", # for benchmarking - "black==22.12.0,<23", + "black==22.12.0", "bump2version", # for making a release - "coveralls==3.3.1", + "coveralls>=3.3.1", "dask==2023.11", "descartes", "filelock", @@ -118,7 +118,7 @@ dev = [ "isort==5.12.0", "jupyter-book", "jupyterlab", - "larch>=5.7", + "larch>=6.0.42", "matplotlib", "myst-nb", "myst-parser", # allows markdown in sphinx @@ -130,10 +130,12 @@ dev = [ "pre-commit", "pycodestyle", "pydata-sphinx-theme", + "pydot>=4.0.1", "pyinstrument==4.4", "pytest==7.2", "pytest-cov", "pytest-regressions", + "requests>=2.32.3", "rich==13.3", "ruby", # for benchmarking pre-commit hooks "ruff", @@ -147,26 +149,11 @@ dev = [ "sphinx-remove-toctrees", "sphinx_rtd_theme==1.2", "sphinx-argparse==0.4", + "xlsxwriter==3.2.5", "xmle", "zarr>=2,<3", "zstandard" ] -github-action = [ - "black==22.12.0", - "coveralls==3.3.1", - "dask==2023.11", - "isort==5.12.0", - "nbmake==1.4.6", - "pydot>=4.0.1", - "pytest==7.2", - "pytest-cov", - "pytest-regressions", - "requests>=2.32.3", - "ruff", - "xlsxwriter==3.2.5", - "zarr>=2,<3", - "zstandard", -] [tool.uv] default-groups = ["dev"] diff --git a/uv.lock b/uv.lock index b5cf49c6c..e3c68661f 100644 --- a/uv.lock +++ b/uv.lock @@ -2,7 +2,8 @@ version = 1 revision = 3 requires-python = ">=3.10" resolution-markers = [ - "python_full_version >= '3.12'", + "python_full_version >= '3.14'", + "python_full_version >= '3.12' and python_full_version < '3.14'", "python_full_version == '3.11.*'", "python_full_version < '3.11'", ] @@ -29,7 +30,7 @@ dependencies = [ { name = "numpy" }, { name = "openmatrix" }, { name = "pandas", version = "2.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, - { name = "pandas", version = "2.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, + { name = "pandas", version = "2.3.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, { name = "pandera" }, { name = "platformdirs" }, { name = "psutil" }, @@ -77,10 +78,12 @@ dev = [ { name = "pre-commit" }, { name = "pycodestyle" }, { name = "pydata-sphinx-theme" }, + { name = "pydot" }, { name = "pyinstrument" }, { name = "pytest" }, { name = "pytest-cov" }, { name = "pytest-regressions" }, + { name = "requests" }, { name = "rich" }, { name = "ruby" }, { name = "ruff" }, @@ -93,24 +96,8 @@ dev = [ { name = "sphinx-copybutton" }, { name = "sphinx-remove-toctrees" }, { name = "sphinx-rtd-theme" }, - { name = "xmle" }, - { name = "zarr", version = "2.18.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "zarr", version = "2.18.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, - { name = "zstandard" }, -] -github-action = [ - { name = "black" }, - { name = "coveralls" }, - { name = "dask" }, - { name = "isort" }, - { name = "nbmake" }, - { name = "pydot" }, - { name = "pytest" }, - { name = "pytest-cov" }, - { name = "pytest-regressions" }, - { name = "requests" }, - { name = "ruff" }, { name = "xlsxwriter" }, + { name = "xmle" }, { name = "zarr", version = "2.18.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "zarr", version = "2.18.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "zstandard" }, @@ -145,9 +132,9 @@ dev = [ { name = "altair" }, { name = "asv" }, { name = "autodoc-pydantic" }, - { name = "black", specifier = "==22.12.0,<23" }, + { name = "black", specifier = "==22.12.0" }, { name = "bump2version" }, - { name = "coveralls", specifier = "==3.3.1" }, + { name = "coveralls", specifier = ">=3.3.1" }, { name = "dask", specifier = "==2023.11" }, { name = "descartes" }, { name = "filelock" }, @@ -158,7 +145,7 @@ dev = [ { name = "isort", specifier = "==5.12.0" }, { name = "jupyter-book" }, { name = "jupyterlab" }, - { name = "larch", specifier = ">=5.7" }, + { name = "larch", specifier = ">=6.0.42" }, { name = "matplotlib" }, { name = "myst-nb" }, { name = "myst-parser" }, @@ -170,10 +157,12 @@ dev = [ { name = "pre-commit" }, { name = "pycodestyle" }, { name = "pydata-sphinx-theme" }, + { name = "pydot", specifier = ">=4.0.1" }, { name = "pyinstrument", specifier = "==4.4" }, { name = "pytest", specifier = "==7.2" }, { name = "pytest-cov" }, { name = "pytest-regressions" }, + { name = "requests", specifier = ">=2.32.3" }, { name = "rich", specifier = "==13.3" }, { name = "ruby" }, { name = "ruff" }, @@ -187,23 +176,8 @@ dev = [ { name = "sphinx-copybutton" }, { name = "sphinx-remove-toctrees" }, { name = "sphinx-rtd-theme", specifier = "==1.2" }, - { name = "xmle" }, - { name = "zarr", specifier = ">=2,<3" }, - { name = "zstandard" }, -] -github-action = [ - { name = "black", specifier = "==22.12.0" }, - { name = "coveralls", specifier = "==3.3.1" }, - { name = "dask", specifier = "==2023.11" }, - { name = "isort", specifier = "==5.12.0" }, - { name = "nbmake", specifier = "==1.4.6" }, - { name = "pydot", specifier = ">=4.0.1" }, - { name = "pytest", specifier = "==7.2" }, - { name = "pytest-cov" }, - { name = "pytest-regressions" }, - { name = "requests", specifier = ">=2.32.3" }, - { name = "ruff" }, { name = "xlsxwriter", specifier = "==3.2.5" }, + { name = "xmle" }, { name = "zarr", specifier = ">=2,<3" }, { name = "zstandard" }, ] @@ -246,6 +220,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/aa/f3/0b6ced594e51cc95d8c1fc1640d3623770d01e4969d29c0bd09945fafefa/altair-5.5.0-py3-none-any.whl", hash = "sha256:91a310b926508d560fe0148d02a194f38b824122641ef528113d029fcd129f8c", size = 731200, upload-time = "2024-11-23T23:39:56.4Z" }, ] +[[package]] +name = "aniso8601" +version = "10.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8b/8d/52179c4e3f1978d3d9a285f98c706642522750ef343e9738286130423730/aniso8601-10.0.1.tar.gz", hash = "sha256:25488f8663dd1528ae1f54f94ac1ea51ae25b4d531539b8bc707fed184d16845", size = 47190, upload-time = "2025-04-18T17:29:42.995Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/59/75/e0e10dc7ed1408c28e03a6cb2d7a407f99320eb953f229d008a7a6d05546/aniso8601-10.0.1-py2.py3-none-any.whl", hash = "sha256:eb19717fd4e0db6de1aab06f12450ab92144246b257423fe020af5748c0cb89e", size = 52848, upload-time = "2025-04-18T17:29:41.492Z" }, +] + [[package]] name = "annotated-types" version = "0.7.0" @@ -257,7 +240,7 @@ wheels = [ [[package]] name = "anyio" -version = "4.9.0" +version = "4.11.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, @@ -265,9 +248,9 @@ dependencies = [ { name = "sniffio" }, { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/95/7d/4c1bd541d4dffa1b52bd83fb8527089e097a106fc90b467a7313b105f840/anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028", size = 190949, upload-time = "2025-03-17T00:02:54.77Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c6/78/7d432127c41b50bccba979505f272c16cbcadcc33645d5fa3a738110ae75/anyio-4.11.0.tar.gz", hash = "sha256:82a8d0b81e318cc5ce71a5f1f8b5c4e63619620b63141ef8c995fa0db95a57c4", size = 219094, upload-time = "2025-09-23T09:19:12.58Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c", size = 100916, upload-time = "2025-03-17T00:02:52.713Z" }, + { url = "https://files.pythonhosted.org/packages/15/b3/9b1a8074496371342ec1e796a96f99c82c945a339cd81a8e73de28b4cf9e/anyio-4.11.0-py3-none-any.whl", hash = "sha256:0287e96f4d26d4149305414d4e3bc32f0dcd0862365a4bddea19d7a1ec38c4fc", size = 109097, upload-time = "2025-09-23T09:19:10.601Z" }, ] [[package]] @@ -293,23 +276,38 @@ wheels = [ [[package]] name = "argon2-cffi-bindings" -version = "21.2.0" +version = "25.1.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b9/e9/184b8ccce6683b0aa2fbb7ba5683ea4b9c5763f1356347f1312c32e3c66e/argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3", size = 1779911, upload-time = "2021-12-01T08:52:55.68Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d4/13/838ce2620025e9666aa8f686431f67a29052241692a3dd1ae9d3692a89d3/argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367", size = 29658, upload-time = "2021-12-01T09:09:17.016Z" }, - { url = "https://files.pythonhosted.org/packages/b3/02/f7f7bb6b6af6031edb11037639c697b912e1dea2db94d436e681aea2f495/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d", size = 80583, upload-time = "2021-12-01T09:09:19.546Z" }, - { url = "https://files.pythonhosted.org/packages/ec/f7/378254e6dd7ae6f31fe40c8649eea7d4832a42243acaf0f1fff9083b2bed/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae", size = 86168, upload-time = "2021-12-01T09:09:21.445Z" }, - { url = "https://files.pythonhosted.org/packages/74/f6/4a34a37a98311ed73bb80efe422fed95f2ac25a4cacc5ae1d7ae6a144505/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c", size = 82709, upload-time = "2021-12-01T09:09:18.182Z" }, - { url = "https://files.pythonhosted.org/packages/74/2b/73d767bfdaab25484f7e7901379d5f8793cccbb86c6e0cbc4c1b96f63896/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86", size = 83613, upload-time = "2021-12-01T09:09:22.741Z" }, - { url = "https://files.pythonhosted.org/packages/4f/fd/37f86deef67ff57c76f137a67181949c2d408077e2e3dd70c6c42912c9bf/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f", size = 84583, upload-time = "2021-12-01T09:09:24.177Z" }, - { url = "https://files.pythonhosted.org/packages/6f/52/5a60085a3dae8fded8327a4f564223029f5f54b0cb0455a31131b5363a01/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e", size = 88475, upload-time = "2021-12-01T09:09:26.673Z" }, - { url = "https://files.pythonhosted.org/packages/8b/95/143cd64feb24a15fa4b189a3e1e7efbaeeb00f39a51e99b26fc62fbacabd/argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082", size = 27698, upload-time = "2021-12-01T09:09:27.87Z" }, - { url = "https://files.pythonhosted.org/packages/37/2c/e34e47c7dee97ba6f01a6203e0383e15b60fb85d78ac9a15cd066f6fe28b/argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f", size = 30817, upload-time = "2021-12-01T09:09:30.267Z" }, - { url = "https://files.pythonhosted.org/packages/5a/e4/bf8034d25edaa495da3c8a3405627d2e35758e44ff6eaa7948092646fdcc/argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93", size = 53104, upload-time = "2021-12-01T09:09:31.335Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/5c/2d/db8af0df73c1cf454f71b2bbe5e356b8c1f8041c979f505b3d3186e520a9/argon2_cffi_bindings-25.1.0.tar.gz", hash = "sha256:b957f3e6ea4d55d820e40ff76f450952807013d361a65d7f28acc0acbf29229d", size = 1783441, upload-time = "2025-07-30T10:02:05.147Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/97/3c0a35f46e52108d4707c44b95cfe2afcafc50800b5450c197454569b776/argon2_cffi_bindings-25.1.0-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:3d3f05610594151994ca9ccb3c771115bdb4daef161976a266f0dd8aa9996b8f", size = 54393, upload-time = "2025-07-30T10:01:40.97Z" }, + { url = "https://files.pythonhosted.org/packages/9d/f4/98bbd6ee89febd4f212696f13c03ca302b8552e7dbf9c8efa11ea4a388c3/argon2_cffi_bindings-25.1.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:8b8efee945193e667a396cbc7b4fb7d357297d6234d30a489905d96caabde56b", size = 29328, upload-time = "2025-07-30T10:01:41.916Z" }, + { url = "https://files.pythonhosted.org/packages/43/24/90a01c0ef12ac91a6be05969f29944643bc1e5e461155ae6559befa8f00b/argon2_cffi_bindings-25.1.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:3c6702abc36bf3ccba3f802b799505def420a1b7039862014a65db3205967f5a", size = 31269, upload-time = "2025-07-30T10:01:42.716Z" }, + { url = "https://files.pythonhosted.org/packages/d4/d3/942aa10782b2697eee7af5e12eeff5ebb325ccfb86dd8abda54174e377e4/argon2_cffi_bindings-25.1.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a1c70058c6ab1e352304ac7e3b52554daadacd8d453c1752e547c76e9c99ac44", size = 86558, upload-time = "2025-07-30T10:01:43.943Z" }, + { url = "https://files.pythonhosted.org/packages/0d/82/b484f702fec5536e71836fc2dbc8c5267b3f6e78d2d539b4eaa6f0db8bf8/argon2_cffi_bindings-25.1.0-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e2fd3bfbff3c5d74fef31a722f729bf93500910db650c925c2d6ef879a7e51cb", size = 92364, upload-time = "2025-07-30T10:01:44.887Z" }, + { url = "https://files.pythonhosted.org/packages/c9/c1/a606ff83b3f1735f3759ad0f2cd9e038a0ad11a3de3b6c673aa41c24bb7b/argon2_cffi_bindings-25.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c4f9665de60b1b0e99bcd6be4f17d90339698ce954cfd8d9cf4f91c995165a92", size = 85637, upload-time = "2025-07-30T10:01:46.225Z" }, + { url = "https://files.pythonhosted.org/packages/44/b4/678503f12aceb0262f84fa201f6027ed77d71c5019ae03b399b97caa2f19/argon2_cffi_bindings-25.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ba92837e4a9aa6a508c8d2d7883ed5a8f6c308c89a4790e1e447a220deb79a85", size = 91934, upload-time = "2025-07-30T10:01:47.203Z" }, + { url = "https://files.pythonhosted.org/packages/f0/c7/f36bd08ef9bd9f0a9cff9428406651f5937ce27b6c5b07b92d41f91ae541/argon2_cffi_bindings-25.1.0-cp314-cp314t-win32.whl", hash = "sha256:84a461d4d84ae1295871329b346a97f68eade8c53b6ed9a7ca2d7467f3c8ff6f", size = 28158, upload-time = "2025-07-30T10:01:48.341Z" }, + { url = "https://files.pythonhosted.org/packages/b3/80/0106a7448abb24a2c467bf7d527fe5413b7fdfa4ad6d6a96a43a62ef3988/argon2_cffi_bindings-25.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b55aec3565b65f56455eebc9b9f34130440404f27fe21c3b375bf1ea4d8fbae6", size = 32597, upload-time = "2025-07-30T10:01:49.112Z" }, + { url = "https://files.pythonhosted.org/packages/05/b8/d663c9caea07e9180b2cb662772865230715cbd573ba3b5e81793d580316/argon2_cffi_bindings-25.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:87c33a52407e4c41f3b70a9c2d3f6056d88b10dad7695be708c5021673f55623", size = 28231, upload-time = "2025-07-30T10:01:49.92Z" }, + { url = "https://files.pythonhosted.org/packages/1d/57/96b8b9f93166147826da5f90376e784a10582dd39a393c99bb62cfcf52f0/argon2_cffi_bindings-25.1.0-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:aecba1723ae35330a008418a91ea6cfcedf6d31e5fbaa056a166462ff066d500", size = 54121, upload-time = "2025-07-30T10:01:50.815Z" }, + { url = "https://files.pythonhosted.org/packages/0a/08/a9bebdb2e0e602dde230bdde8021b29f71f7841bd54801bcfd514acb5dcf/argon2_cffi_bindings-25.1.0-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2630b6240b495dfab90aebe159ff784d08ea999aa4b0d17efa734055a07d2f44", size = 29177, upload-time = "2025-07-30T10:01:51.681Z" }, + { url = "https://files.pythonhosted.org/packages/b6/02/d297943bcacf05e4f2a94ab6f462831dc20158614e5d067c35d4e63b9acb/argon2_cffi_bindings-25.1.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:7aef0c91e2c0fbca6fc68e7555aa60ef7008a739cbe045541e438373bc54d2b0", size = 31090, upload-time = "2025-07-30T10:01:53.184Z" }, + { url = "https://files.pythonhosted.org/packages/c1/93/44365f3d75053e53893ec6d733e4a5e3147502663554b4d864587c7828a7/argon2_cffi_bindings-25.1.0-cp39-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1e021e87faa76ae0d413b619fe2b65ab9a037f24c60a1e6cc43457ae20de6dc6", size = 81246, upload-time = "2025-07-30T10:01:54.145Z" }, + { url = "https://files.pythonhosted.org/packages/09/52/94108adfdd6e2ddf58be64f959a0b9c7d4ef2fa71086c38356d22dc501ea/argon2_cffi_bindings-25.1.0-cp39-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d3e924cfc503018a714f94a49a149fdc0b644eaead5d1f089330399134fa028a", size = 87126, upload-time = "2025-07-30T10:01:55.074Z" }, + { url = "https://files.pythonhosted.org/packages/72/70/7a2993a12b0ffa2a9271259b79cc616e2389ed1a4d93842fac5a1f923ffd/argon2_cffi_bindings-25.1.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c87b72589133f0346a1cb8d5ecca4b933e3c9b64656c9d175270a000e73b288d", size = 80343, upload-time = "2025-07-30T10:01:56.007Z" }, + { url = "https://files.pythonhosted.org/packages/78/9a/4e5157d893ffc712b74dbd868c7f62365618266982b64accab26bab01edc/argon2_cffi_bindings-25.1.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:1db89609c06afa1a214a69a462ea741cf735b29a57530478c06eb81dd403de99", size = 86777, upload-time = "2025-07-30T10:01:56.943Z" }, + { url = "https://files.pythonhosted.org/packages/74/cd/15777dfde1c29d96de7f18edf4cc94c385646852e7c7b0320aa91ccca583/argon2_cffi_bindings-25.1.0-cp39-abi3-win32.whl", hash = "sha256:473bcb5f82924b1becbb637b63303ec8d10e84c8d241119419897a26116515d2", size = 27180, upload-time = "2025-07-30T10:01:57.759Z" }, + { url = "https://files.pythonhosted.org/packages/e2/c6/a759ece8f1829d1f162261226fbfd2c6832b3ff7657384045286d2afa384/argon2_cffi_bindings-25.1.0-cp39-abi3-win_amd64.whl", hash = "sha256:a98cd7d17e9f7ce244c0803cad3c23a7d379c301ba618a5fa76a67d116618b98", size = 31715, upload-time = "2025-07-30T10:01:58.56Z" }, + { url = "https://files.pythonhosted.org/packages/42/b9/f8d6fa329ab25128b7e98fd83a3cb34d9db5b059a9847eddb840a0af45dd/argon2_cffi_bindings-25.1.0-cp39-abi3-win_arm64.whl", hash = "sha256:b0fdbcf513833809c882823f98dc2f931cf659d9a1429616ac3adebb49f5db94", size = 27149, upload-time = "2025-07-30T10:01:59.329Z" }, + { url = "https://files.pythonhosted.org/packages/11/2d/ba4e4ca8d149f8dcc0d952ac0967089e1d759c7e5fcf0865a317eb680fbb/argon2_cffi_bindings-25.1.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:6dca33a9859abf613e22733131fc9194091c1fa7cb3e131c143056b4856aa47e", size = 24549, upload-time = "2025-07-30T10:02:00.101Z" }, + { url = "https://files.pythonhosted.org/packages/5c/82/9b2386cc75ac0bd3210e12a44bfc7fd1632065ed8b80d573036eecb10442/argon2_cffi_bindings-25.1.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:21378b40e1b8d1655dd5310c84a40fc19a9aa5e6366e835ceb8576bf0fea716d", size = 25539, upload-time = "2025-07-30T10:02:00.929Z" }, + { url = "https://files.pythonhosted.org/packages/31/db/740de99a37aa727623730c90d92c22c9e12585b3c98c54b7960f7810289f/argon2_cffi_bindings-25.1.0-pp310-pypy310_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d588dec224e2a83edbdc785a5e6f3c6cd736f46bfd4b441bbb5aa1f5085e584", size = 28467, upload-time = "2025-07-30T10:02:02.08Z" }, + { url = "https://files.pythonhosted.org/packages/71/7a/47c4509ea18d755f44e2b92b7178914f0c113946d11e16e626df8eaa2b0b/argon2_cffi_bindings-25.1.0-pp310-pypy310_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5acb4e41090d53f17ca1110c3427f0a130f944b896fc8c83973219c97f57b690", size = 27355, upload-time = "2025-07-30T10:02:02.867Z" }, + { url = "https://files.pythonhosted.org/packages/ee/82/82745642d3c46e7cea25e1885b014b033f4693346ce46b7f47483cf5d448/argon2_cffi_bindings-25.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:da0c79c23a63723aa5d782250fbf51b768abca630285262fb5144ba5ae01e520", size = 29187, upload-time = "2025-07-30T10:02:03.674Z" }, ] [[package]] @@ -342,46 +340,59 @@ wheels = [ [[package]] name = "asv" -version = "0.6.4" +version = "0.6.5" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "asv-runner" }, { name = "build" }, { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "importlib-metadata" }, { name = "json5" }, + { name = "packaging" }, { name = "pympler", marker = "platform_python_implementation != 'PyPy'" }, { name = "pyyaml", marker = "platform_python_implementation != 'PyPy'" }, { name = "tabulate" }, { name = "tomli", marker = "python_full_version < '3.11'" }, { name = "virtualenv" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/75/0c/31fe4135b378ee17131a804b11380a1ec1406c3925cb24ecdff5b86e673c/asv-0.6.4.tar.gz", hash = "sha256:1d124184171cfe106e3e57ac04e3221b8d4571c9bd6ca2c6498a8c7407339df1", size = 389611, upload-time = "2024-08-12T23:00:14.137Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/85/54/de33292ea7ce15613bdd9a6e51fac47878ce80f293157c9116c23387a1e5/asv-0.6.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e32b4cc435bdb6f2ef83d8092e977962f6fa20471542d6341e596324d350cbea", size = 185448, upload-time = "2024-08-12T22:58:12.49Z" }, - { url = "https://files.pythonhosted.org/packages/a9/14/fc30a590333a1021b28f9f2aaab009d3bb7c277cc1decadfcc86b74108de/asv-0.6.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fdfb9090623fc45cbeb77ab40b394779794083c155128e3d320fa06af2e0fdf5", size = 185245, upload-time = "2024-08-12T22:58:15.386Z" }, - { url = "https://files.pythonhosted.org/packages/c3/72/87296f54fbf876fd8e0ad744e0c9322dee6f6f631a8d9f14b9b48008b51c/asv-0.6.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5dfee8a415f4b5da0be4bedf4c9cb3b041c2148d28d2327cf3b54f9cb565cefd", size = 259330, upload-time = "2024-08-12T22:58:17.403Z" }, - { url = "https://files.pythonhosted.org/packages/bf/77/26cb95b1f1751706352e9924388732dc9fe4cc9e60153098407974d72b89/asv-0.6.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abc13331bb8bb1880dbc33e75175ae90bca439038a1f7e246528481ecebd15dd", size = 261036, upload-time = "2024-08-12T22:58:19.447Z" }, - { url = "https://files.pythonhosted.org/packages/ca/c6/c6f40902933b87f41e1ded3065eae526d29a40fbb84a69e2e61e151b217e/asv-0.6.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:b67eec004f8218bba25dcdbdda2e6676dd6c4ac3e97a80b691b27dcfbfbda38d", size = 866515, upload-time = "2024-08-12T22:58:22.934Z" }, - { url = "https://files.pythonhosted.org/packages/ae/00/7fa5a7c695ee49e11765956123407f868cefbf481b7c4177feba6e0646e9/asv-0.6.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:aef14496a34552308d054db71181bfb1ca45d7ef29028747d388be9f00a5b45c", size = 812157, upload-time = "2024-08-12T22:58:25.684Z" }, - { url = "https://files.pythonhosted.org/packages/4f/97/f09925683128f9bce9a7bfbcecb22334cec988fdb139a9959c2d22f39f19/asv-0.6.4-cp310-cp310-win_amd64.whl", hash = "sha256:0c8931e7a8aeda75f90b3ac422cbb7c46a5ce50d8c0a8e821cdf3e4d0705dd76", size = 188022, upload-time = "2024-08-12T22:58:27.774Z" }, - { url = "https://files.pythonhosted.org/packages/b0/39/8532a88cde13dca8d9dcfeb2ba48d92beaef8919fbfc2d428cbfa5a1bbb9/asv-0.6.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:74666c5896b4aec92b4a12cf9aa7494dec3398bb9ea602a9f8dc1656b53e8e10", size = 185462, upload-time = "2024-08-12T22:58:30.299Z" }, - { url = "https://files.pythonhosted.org/packages/9b/a6/b0133d083ac4c979f16e9bd887427c141306e3779505941ccf25341c0384/asv-0.6.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:26166a7bd7fe05b5a8507247d1a7ab1dfc4256414b0505d124a7b9d46a618a1c", size = 185242, upload-time = "2024-08-12T22:58:32.138Z" }, - { url = "https://files.pythonhosted.org/packages/ba/5c/0726b4925163c12e842e306267c0e702fb694b85f34b62240f687208091c/asv-0.6.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe6161c5616f5aed936947866b6376e09c937d628aa81115b3c72e90a151c1f9", size = 259959, upload-time = "2024-08-12T22:58:33.877Z" }, - { url = "https://files.pythonhosted.org/packages/e0/6d/944b4fc935b6c6874a17413159aa19701b80052d29c80efe6a9afbcec3b5/asv-0.6.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4d6122b5e86bf9071b9ff7136672d50da0d460dfc958f43429843f7a3cd3e86a", size = 261620, upload-time = "2024-08-12T22:58:36.129Z" }, - { url = "https://files.pythonhosted.org/packages/eb/24/b6169229108e1a1d6506fbd2bfad5ecede34df5e03020b16c627e44411b8/asv-0.6.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:79554f125033ecbcb599cd704b4b5b525d254e5e05b1dd24bab3bbd83ae5502e", size = 867864, upload-time = "2024-08-12T22:58:38.865Z" }, - { url = "https://files.pythonhosted.org/packages/4a/a2/b9e5be144fd0c7072637f50c98bdf615d83165244849473e2b9f262ea24b/asv-0.6.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2e80f39501628fd4cac972f08fa4c9b8e211a86fc43dd6e58c95d106cbaf54e7", size = 813539, upload-time = "2024-08-12T22:58:41.184Z" }, - { url = "https://files.pythonhosted.org/packages/2a/d7/ea92fc7155a5cd7aa1903dd74096a91a8851355423bf8f09d6e3a96ccc21/asv-0.6.4-cp311-cp311-win_amd64.whl", hash = "sha256:363dfdee98cc072e6a1468137eed640985e48ccbb11c175d04ee420f05459872", size = 188025, upload-time = "2024-08-12T22:58:42.72Z" }, - { url = "https://files.pythonhosted.org/packages/42/5f/f6ac7c787cde901d694b9355d9cd9227b907b313b3f1ed2b006668104e5f/asv-0.6.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:244b71778f91aa6672e1f16feb9eecac78ef7cee95228ef8f0315a2e2deecfed", size = 185442, upload-time = "2024-08-12T22:58:44.839Z" }, - { url = "https://files.pythonhosted.org/packages/b2/c0/339bf20ad132b85376aa4ddc6d17e0ee704846a856a84eb59609df6ca4ef/asv-0.6.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3e798b275de2889748d43d42305bfce68c015a3e38ae935d231835cb836fef73", size = 185225, upload-time = "2024-08-12T22:58:48.309Z" }, - { url = "https://files.pythonhosted.org/packages/3d/3e/1019cb8cb54bc6cf28799c49b86a67b4713082d1e857eac8ec9e34d8ed83/asv-0.6.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d064c5ac1ab18efc62467f65ed4989a2e2ac1a4d21886119fa0ef0f91d548438", size = 260431, upload-time = "2024-08-12T22:58:49.663Z" }, - { url = "https://files.pythonhosted.org/packages/a5/80/fd70dba7f524a95a2d9e8f976cfc891d570f3ccdd9201c1f0c3bc2dfea74/asv-0.6.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c51e5862bdac0f1fe11886bdd40b30a9691a65cb7feac40f0676fe9206d5bb43", size = 261970, upload-time = "2024-08-12T22:58:51.499Z" }, - { url = "https://files.pythonhosted.org/packages/6a/bf/5af517bef47eb92eca0016b33334f77760a4f4f7acd3022b1d00dfe576fa/asv-0.6.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:46a7ca838e8c49109c43b1cda0eb64abc5e0a045538da718abe981d115ed47aa", size = 867717, upload-time = "2024-08-12T22:58:54.508Z" }, - { url = "https://files.pythonhosted.org/packages/98/71/f205a3122f8aa7889a4691384c6b01bea4805b5982d47ccdaa189296d53a/asv-0.6.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f5f722178c7e36b797f764c837fc03c462f68c8f2cba5145b2e64119e46231ff", size = 813322, upload-time = "2024-08-12T22:58:57.074Z" }, - { url = "https://files.pythonhosted.org/packages/1f/7b/a2001b35bc1fbaa7cbf763f8cff4ad64af849fd59ef26a3f4e32ee211e63/asv-0.6.4-cp312-cp312-win_amd64.whl", hash = "sha256:f972ca71316d46a0242eb69e53dadfeab1e4d0546773b0f722462f97b3e5fbd9", size = 188022, upload-time = "2024-08-12T22:58:58.824Z" }, - { url = "https://files.pythonhosted.org/packages/67/c2/0808a237f90189f8fcfd6be4b77a8e1f19d0b8813d947a816f2bf9514809/asv-0.6.4-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0305e9eee21f71c3d3f8b046beb35e571f6dd7ed2fcd0e8405f8a208bcd3228a", size = 184577, upload-time = "2024-08-12T22:59:45.167Z" }, - { url = "https://files.pythonhosted.org/packages/7b/c7/171341cc046f570b32fc4da70e80f800470301df3d67301e71b9c6f68a43/asv-0.6.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e6cd23fa20edf8cb30354fda3388a8835a15158e21559c86f0d997e5d30dbf91", size = 185004, upload-time = "2024-08-12T22:59:46.378Z" }, - { url = "https://files.pythonhosted.org/packages/8f/c6/df037423144a902cd2cbcdb9cbcdee567f7ba35be4f470f2a09ffba1e2fd/asv-0.6.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7424d2dbfcb98aa3c099311100ceb9aabfd83fed0b41420f70f142852ed392a", size = 185767, upload-time = "2024-08-12T22:59:48.423Z" }, - { url = "https://files.pythonhosted.org/packages/36/09/8ec4eb06432ccd13a346fb4db1e9ee67589c65731bc7a5c59c347eab5581/asv-0.6.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:e7f4b95583cf379015d35b747a1bb4df99c05dd4107d6081b2cf4a577f4caeca", size = 188103, upload-time = "2024-08-12T22:59:50.475Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/88/50/f762be4ee8632d88aff4ba9e62e7c156a0684ef52db629c22bae24fda449/asv-0.6.5.tar.gz", hash = "sha256:a8eeb7c5037cd78c146bd727d27203132438d4d62f36e669eb0cd5d63da0cf39", size = 402650, upload-time = "2025-09-13T16:25:48.141Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/28/84/6db5430f169d42c72a92851a7491f868a593351bb41eafb3ed7d7c53140f/asv-0.6.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0174f8f1b8a0c8db4df44ae923f128f64951604489adca2282add143c4996d33", size = 180214, upload-time = "2025-09-13T16:23:58.384Z" }, + { url = "https://files.pythonhosted.org/packages/c3/af/defaf2f0ccc139deea6715fc252f39bd20d83c850dac77d4d27a429d43d7/asv-0.6.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5408856baf761e2520da08b40e854d33915a3d59c2b8187c9d510d570eee1df2", size = 180507, upload-time = "2025-09-13T16:24:00.561Z" }, + { url = "https://files.pythonhosted.org/packages/20/cc/f2cf0f562e6cfc60f761c247510984321030a60e67a1578189f5793b5646/asv-0.6.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a998342b9f8f74f10324dddcb90554872cf3458a7ce6c8c3e96267c087a3459", size = 253792, upload-time = "2025-09-13T16:24:02.671Z" }, + { url = "https://files.pythonhosted.org/packages/ef/b4/1ce9b980728844fececcbcde487c24b5e130ec90c964e4fb0e19328f8817/asv-0.6.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4dad86244253438bffc8b1a8f941e48be1bf06e61fb51b3512102dd52dc6717b", size = 255498, upload-time = "2025-09-13T16:24:05.179Z" }, + { url = "https://files.pythonhosted.org/packages/70/12/67e0aba3248b92c7c48225f30a56ae783aa6c593a7f198551376321dc93f/asv-0.6.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0a0068a12760e952741fd88050164658867258ccf5df5ee380e8b871cc6c6666", size = 806724, upload-time = "2025-09-13T16:24:08.008Z" }, + { url = "https://files.pythonhosted.org/packages/a9/4c/8d07c5b94763a687046b349e4cffe7df7c2b2ce14421ec22d9e3eee6c113/asv-0.6.5-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:a1272609150c74144c86bc243a050eff63581fe906987b9b931abcaf26c65ca0", size = 1384071, upload-time = "2025-09-13T16:24:11.477Z" }, + { url = "https://files.pythonhosted.org/packages/b4/cc/3dda985fcf4e2bb940f7c574988f71f4b1fbb8d68d8a6c22a2b3c908f6be/asv-0.6.5-cp310-cp310-win_amd64.whl", hash = "sha256:ce0a6e834a4c30f2b567eb59c7189831bb0c2b345d5b92376b69b0def020f691", size = 182794, upload-time = "2025-09-13T16:24:13.771Z" }, + { url = "https://files.pythonhosted.org/packages/b0/95/27569d3f5077153911863207c2d1f96ea8b21ef7e9f8bc969dfac29d65f7/asv-0.6.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cfc6e195f51d83060458f443155adf8b968d73520c63d0c28c72f30be8d58858", size = 180216, upload-time = "2025-09-13T16:24:15.452Z" }, + { url = "https://files.pythonhosted.org/packages/68/92/293280069e6cb7b670c72760edef05ef7e8fd2c77837d077c01b8d7b0448/asv-0.6.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:816a420666f39980e75b4dd58545a0702474811087b8c933dd14fb9f0cac5dd6", size = 180511, upload-time = "2025-09-13T16:24:17.144Z" }, + { url = "https://files.pythonhosted.org/packages/1d/aa/42e55241325cd03b489105206919dd56351f6b55113dd844ce0cba8b0d5c/asv-0.6.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5bba7568ca5c72e1d980746925c353ac9e76d46329fc324ed43778f91c5c00a1", size = 254428, upload-time = "2025-09-13T16:24:19.157Z" }, + { url = "https://files.pythonhosted.org/packages/3f/b6/271d74413393b886b073dc4aa5dbb698426cf8e4f6774555969a70921595/asv-0.6.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2d423f671f671f6ae5dd2a6912c64130ed374d01dfe2c3d05a6a5307cc47d5ed", size = 256087, upload-time = "2025-09-13T16:24:20.41Z" }, + { url = "https://files.pythonhosted.org/packages/8b/3d/bddea222ad0141f4ae4b24ba406ebfd13ab1637a50c60407c13d5ec9e090/asv-0.6.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4d82cc4e95530ce386c0280d84586b6358a7e73b6bb6d814b35734c2d49cc43a", size = 808082, upload-time = "2025-09-13T16:24:22.048Z" }, + { url = "https://files.pythonhosted.org/packages/08/11/8199376b9df37457c2a59a55e7f43f501f3c44cb54279dc5307f4966f666/asv-0.6.5-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7911132aab8263751946ff79d9b75d1178ec278d2731f09d6d14ef4f26842c70", size = 1384612, upload-time = "2025-09-13T16:24:24.38Z" }, + { url = "https://files.pythonhosted.org/packages/b5/47/3aceb8c4ca6d91e00b3fa6c6312580958791407034b0afd588f66dc6690e/asv-0.6.5-cp311-cp311-win_amd64.whl", hash = "sha256:48fba7264d348b932fd4d2f42b6128836347d46af3d61df0c9d641bc61678af8", size = 182792, upload-time = "2025-09-13T16:24:26.124Z" }, + { url = "https://files.pythonhosted.org/packages/e7/58/3c94d6043f2d815480b873f302ecda3b9debb0f202556fd822b118e87415/asv-0.6.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:375da7109fa160d41e4b86a5de7783e8c9bc9f1c930a1c02c29b652b15d46835", size = 180231, upload-time = "2025-09-13T16:24:27.465Z" }, + { url = "https://files.pythonhosted.org/packages/f2/75/2a23346aabb19698e97b7ee8f57eb905dabf7460b226a2070c6cdd3e8c17/asv-0.6.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:980cb8e9c3be5350621c85201bfb25f70c26695f69bd4e91b19f1b3c97f00ff3", size = 180531, upload-time = "2025-09-13T16:24:28.693Z" }, + { url = "https://files.pythonhosted.org/packages/27/d3/22bc22619266bced0a53ff07ee94a41bb09fed2bbe505e07a146fc4c1a58/asv-0.6.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13f503d45077ba275d357a9712fe1506b98e507eb276ca01e981c9e5baf30b43", size = 254851, upload-time = "2025-09-13T16:24:30.035Z" }, + { url = "https://files.pythonhosted.org/packages/de/70/9991371db795a84b4fb0774ff050ed48730c14568953f9f59ca35170541b/asv-0.6.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:440aca773d254f6590f7a459bdc388441027bc2745eae644675665acc3809c2e", size = 256342, upload-time = "2025-09-13T16:24:31.309Z" }, + { url = "https://files.pythonhosted.org/packages/8a/1d/7cb7f02091908201c45c609d29ced5bbc1101a057edc0e1fb153f7592b4e/asv-0.6.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bf63f7ee3d35ec8191543d82ca3a3be3a3c0cde8eb2d45a672f09f32ba5fbb37", size = 807867, upload-time = "2025-09-13T16:24:33.298Z" }, + { url = "https://files.pythonhosted.org/packages/ff/02/946c53292fe551b3bb977260f29b5bfa9f284bf17088ccef5c8ddf28f06c/asv-0.6.5-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:58a0d2de09ebc67642b661d904d2e686e0f32bb5e8b4867523a15ff7561f061a", size = 1384841, upload-time = "2025-09-13T16:24:34.857Z" }, + { url = "https://files.pythonhosted.org/packages/cc/f7/b43efa62f20af7e9035f6fd6dadb7109feddfb4e0b1e2ff791656ae55606/asv-0.6.5-cp312-cp312-win_amd64.whl", hash = "sha256:8df71cd3c656680051e0d0b2834521f7ab6da3d4804c48354c0e5ca341a0a39e", size = 182804, upload-time = "2025-09-13T16:24:36.135Z" }, + { url = "https://files.pythonhosted.org/packages/25/70/a00673c98d30de3377b036cd85247274330ade931c0e4909c3e2d269c0c6/asv-0.6.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:bedfc7f0138ab136ccd67f42575dd4b2471c811239ad8c7b7aabc83f5eba79c3", size = 180236, upload-time = "2025-09-13T16:24:37.775Z" }, + { url = "https://files.pythonhosted.org/packages/2f/fd/d2f5c43dcb614cfedd1f339feb2f711b0a69e7c2ad96d68b547d44227c80/asv-0.6.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2f062e0658e568b98154afe11d91b5fb631f884678b7ad4a00ebcc0d6aa6b41f", size = 180537, upload-time = "2025-09-13T16:24:39.396Z" }, + { url = "https://files.pythonhosted.org/packages/6d/00/a8dba759f554e6aedc5a7caf2a8efd00e5c69536560c670b1f41e7b53d83/asv-0.6.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6caedcca3ec60602b907caeab54d1706abb12e088ce96650862c6fc117831cc0", size = 254761, upload-time = "2025-09-13T16:24:41.262Z" }, + { url = "https://files.pythonhosted.org/packages/3e/bd/89c4483e1e781e39957547d7bda0a7a7af338911ea159cd66a9415cc811d/asv-0.6.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:861ae69bfdd8659f95a058891c98757d3a5f857bf0ddc5d810e0dabf3405042e", size = 256267, upload-time = "2025-09-13T16:24:43.033Z" }, + { url = "https://files.pythonhosted.org/packages/35/f1/752a51a07be0c153281f04795433524c76e6926063da005b78e2053117c5/asv-0.6.5-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:7344c0020c1ab1cb33af9626cf24e05c346b4fd521d4f866f35a7a9a276f8e16", size = 806346, upload-time = "2025-09-13T16:24:45.123Z" }, + { url = "https://files.pythonhosted.org/packages/3e/ce/c6d9f2dc42462db7897178e21e38c925d8efb75813dde8e7a0a2e5126387/asv-0.6.5-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:1279a92cd8a601d2be5430afe3dd9f942ab0e6003f33ff1914dd9f638b595a3d", size = 1384779, upload-time = "2025-09-13T16:24:46.758Z" }, + { url = "https://files.pythonhosted.org/packages/f0/4f/48af74f756f1c67b71074c99f265d382927de742288cf416e212c1808c7d/asv-0.6.5-cp313-cp313-win_amd64.whl", hash = "sha256:dbc3269464ec27d025d3b25e0e1f3d616035e05e01bcfceb2f4e965278d72197", size = 182807, upload-time = "2025-09-13T16:24:47.978Z" }, + { url = "https://files.pythonhosted.org/packages/7a/a1/722271d6b4d7756a71a425deaa4c57e1341f84c153765cd432e001885388/asv-0.6.5-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:bacb55e91562d5c8aa1ec63393db8cd5faac15be20133f9b5b538453341604a7", size = 179850, upload-time = "2025-09-13T16:25:19.183Z" }, + { url = "https://files.pythonhosted.org/packages/44/8d/14b0691728311e295ef7d22dc08782eb02ef79e080a748a37c22e26bda45/asv-0.6.5-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bd9d0476ed9712252b933a27b29e0208b68c0909f0ff512f9c95cc1112def49", size = 179470, upload-time = "2025-09-13T16:25:20.407Z" }, + { url = "https://files.pythonhosted.org/packages/63/19/ecd112b688913b406772c919c64da9d3345747cf127cb967cff8d83bc591/asv-0.6.5-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dca4988cee5bdb2aa7552a123fe1e405574d1e67fa084bde25c32d93f329462a", size = 180233, upload-time = "2025-09-13T16:25:21.634Z" }, + { url = "https://files.pythonhosted.org/packages/c9/6d/b89b6b240e43375025363e6f68ea1ea2e59db832fe5a22e5a22b4718b0ac/asv-0.6.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:43b25126ca1a8620887be80caa1e826e79224277fc637e31ad6cacd38b6a81a9", size = 182887, upload-time = "2025-09-13T16:25:23.052Z" }, + { url = "https://files.pythonhosted.org/packages/35/78/ee6ad8ca4de3ad89e382f7fd45eabcfecfcd6dca844462706a8aa1f8d895/asv-0.6.5-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5204d6e4c9d574a9f8dd9b3834c3385b8b118d48ce4fcb3bc10b61f60de287fd", size = 179852, upload-time = "2025-09-13T16:25:24.263Z" }, + { url = "https://files.pythonhosted.org/packages/de/24/22a85656df00f64ceb1bc7c4a5a358a3990410cd9a96c48486fc2c13bdaf/asv-0.6.5-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c419db85e40ca1cebefbe8bd5f338a16cbc5f7a2cbf2de0793f95d6bda9ede6c", size = 179470, upload-time = "2025-09-13T16:25:25.76Z" }, + { url = "https://files.pythonhosted.org/packages/33/28/30a5571658ab4cd0f8ba616afad7782ed7ad82e04a7b6eda77e480abf174/asv-0.6.5-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:80a76dc32330c97bfba861c547dd17bcc04811946f386e00c8c7dfbb12354280", size = 180233, upload-time = "2025-09-13T16:25:27.158Z" }, + { url = "https://files.pythonhosted.org/packages/3d/d6/04875bb5abf2c6b8390d63e0ff45dc0a5c6413377be975b9e825150c7d75/asv-0.6.5-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:0f26006545918b9a2fb78323823bc4f9fa8bad628fc2aae5bd77d41f58fa61ac", size = 182887, upload-time = "2025-09-13T16:25:28.58Z" }, ] [[package]] @@ -441,15 +452,15 @@ wheels = [ [[package]] name = "beautifulsoup4" -version = "4.13.4" +version = "4.14.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "soupsieve" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d8/e4/0c4c39e18fd76d6a628d4dd8da40543d136ce2d1752bd6eeeab0791f4d6b/beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195", size = 621067, upload-time = "2025-04-15T17:05:13.836Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8a/bb/3387a5bf72121e1e2cd9223d20598c2fb599ef63517ff3e6ec526d8c4928/beautifulsoup4-4.14.0.tar.gz", hash = "sha256:e6150e53c8a52fd4f3b9b28839f8f0fb7c7f029d3c953a50b1762b0947c3cf85", size = 625697, upload-time = "2025-09-27T17:22:17.532Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/50/cd/30110dc0ffcf3b131156077b90e9f60ed75711223f306da4db08eff8403b/beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", size = 187285, upload-time = "2025-04-15T17:05:12.221Z" }, + { url = "https://files.pythonhosted.org/packages/28/4f/3e23dfc8b4951103028d30f29e17aa703a87564abd71bc405964c36326dc/beautifulsoup4-4.14.0-py3-none-any.whl", hash = "sha256:aee96fbccdf2d2a8d1288b2afa51fc76bb60823b7881a50fb1ed5f711d1a7d73", size = 106466, upload-time = "2025-09-27T17:22:16.13Z" }, ] [[package]] @@ -489,6 +500,54 @@ css = [ { name = "tinycss2" }, ] +[[package]] +name = "blinker" +version = "1.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/21/28/9b3f50ce0e048515135495f198351908d99540d69bfdc8c1d15b73dc55ce/blinker-1.9.0.tar.gz", hash = "sha256:b4ce2265a7abece45e7cc896e98dbebe6cead56bcf805a3d23136d145f5445bf", size = 22460, upload-time = "2024-11-08T17:25:47.436Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/cb/f2ad4230dc2eb1a74edf38f1a38b9b52277f75bef262d8908e60d957e13c/blinker-1.9.0-py3-none-any.whl", hash = "sha256:ba0efaa9080b619ff2f3459d1d500c57bddea4a6b424b60a91141db6fd2f08bc", size = 8458, upload-time = "2024-11-08T17:25:46.184Z" }, +] + +[[package]] +name = "blosc" +version = "1.11.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e3/ca/3ec5a5d05e10ad200d887c8cfb9492d9a02e05f9f8f726aa178123b1711b/blosc-1.11.3.tar.gz", hash = "sha256:89ed658eba7814a92e89c44d8c524148d55921595bc133bd1a90f8888a9e088e", size = 1439627, upload-time = "2025-05-17T11:50:03.713Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/3f/23d182b246d1e877f57c21e1136ecc232b6d817015358770424509ad8ec7/blosc-1.11.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b96333a29cbd7c23811f84afb406eeefde668d1b30b52d8cf97619f1a6e2218", size = 2274740, upload-time = "2025-05-17T11:49:04.869Z" }, + { url = "https://files.pythonhosted.org/packages/cf/10/d722417e3606c51297490edf3f6b60afb35bba44726925a04be69d18256e/blosc-1.11.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f993509c04335426d140e44d33011604a35aeff48873a86158393cfb4cadba41", size = 1801992, upload-time = "2025-05-17T11:49:06.834Z" }, + { url = "https://files.pythonhosted.org/packages/3b/50/4e030a8b8f878b047b62e2838528ecf5c120471aa69ec1cc3b78b95d313b/blosc-1.11.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:db3593bbe73fd9877feee6b97e12a16973fa16c2e4cb21286b64369724482b5e", size = 2485416, upload-time = "2025-05-17T11:49:08.483Z" }, + { url = "https://files.pythonhosted.org/packages/c7/e4/20f13078cb0ae69bb59dee170e50fee38c033cede76259066f78572c4444/blosc-1.11.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed133aabada36fc04f5b435592a95498277441a0b8d6e106006879ec4d094e05", size = 2619961, upload-time = "2025-05-17T11:49:10.17Z" }, + { url = "https://files.pythonhosted.org/packages/76/9e/23291ae6ea2ae39815ed6b2a832372a0ac4927975751039ee524a9ea3e6f/blosc-1.11.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1f5aa57e574762fed475daa9172a53053e3eeb1f72979f7dd1739289472c475c", size = 2678244, upload-time = "2025-05-17T11:49:11.857Z" }, + { url = "https://files.pythonhosted.org/packages/93/be/9db8fadc453ca97ec3b6d0d5274d0dac0b3458e996cc86a99b96eca005ba/blosc-1.11.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0dfed36910623db800ed98c2ef3ba24e2d65aa6972aafd10b9f0db550ec197fc", size = 2752730, upload-time = "2025-05-17T11:49:13.628Z" }, + { url = "https://files.pythonhosted.org/packages/52/4c/08824d1277441777619d49e3a6b016bd4e82b63a19fad4c51aeb0fcb49fa/blosc-1.11.3-cp310-cp310-win32.whl", hash = "sha256:179e7030cd3088cec9f9235eb54740db8eb6abfca2f3f80d62921dc5fe56d2dd", size = 1530970, upload-time = "2025-05-17T11:49:15.274Z" }, + { url = "https://files.pythonhosted.org/packages/29/60/ef9fd034a4c9027cc2e19392acd70749e90f615754230588c702994e1a2d/blosc-1.11.3-cp310-cp310-win_amd64.whl", hash = "sha256:b70a2f7ccbbc7b8c37f16816947ae3f15e05e1cb443b37c3bb21c4a472e7de0c", size = 1815667, upload-time = "2025-05-17T11:49:17.912Z" }, + { url = "https://files.pythonhosted.org/packages/27/bd/887108b6d3f50f1fbfc796470630920197635a27856ea0c097867780b827/blosc-1.11.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8e235534e09d428e3665d9bec8655913e1bd095b55436a11b5bc9a196e07d477", size = 2274751, upload-time = "2025-05-17T11:49:19.579Z" }, + { url = "https://files.pythonhosted.org/packages/77/c2/a6fbc2d29c95b09f18fa92a2cbb59cfab62c1c21535420faac7e22a9715e/blosc-1.11.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:953fa3bd263d0a23838598a91aaf623f3faa20160289ab5c53404d95814283ae", size = 1801974, upload-time = "2025-05-17T11:49:21.301Z" }, + { url = "https://files.pythonhosted.org/packages/e5/d4/c98f6ada26b31ecdf827c407f1069c44ea7a2626de8afaabdc134dc57147/blosc-1.11.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89b57f7428e40329d2e2caa1c439078cef265b3bd91b64f05fd76ee845ec7b25", size = 2485416, upload-time = "2025-05-17T11:49:22.442Z" }, + { url = "https://files.pythonhosted.org/packages/38/d5/6be838160326ff13a5e10aca0a82a33dd5eda2298574553247c2963f1c20/blosc-1.11.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c3e148519bec17e05e5fa390d55d8c4270d18edba430bca7949ae1493fa79d4", size = 2619996, upload-time = "2025-05-17T11:49:24.098Z" }, + { url = "https://files.pythonhosted.org/packages/78/c0/a5229545f63c48a7ff1dee4182745509785471ab3d000e9984f0573e000f/blosc-1.11.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8014b760e051fbbf6c4c75f342721d908494c4631fdfc738b177849966f38526", size = 2678244, upload-time = "2025-05-17T11:49:25.792Z" }, + { url = "https://files.pythonhosted.org/packages/39/23/25a2caedac53a5fe60c6a240f98684b95331ab8f3fe0eeb009d5feb34881/blosc-1.11.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e9ded3af5b49d1912dc087a700a20c001e5992bb9a31b1b6eb22d3c4372d3d02", size = 2752740, upload-time = "2025-05-17T11:49:27.595Z" }, + { url = "https://files.pythonhosted.org/packages/13/41/d0d7d7b8aa1fc1d7526aa8deed79a3dd2bc80d882d41d1659ec711df52e7/blosc-1.11.3-cp311-cp311-win32.whl", hash = "sha256:5c8586f13caf8848c676101259842d77f49fa0ba83e3e4e8fdd6a7f6f7b34b3e", size = 1530967, upload-time = "2025-05-17T11:49:28.814Z" }, + { url = "https://files.pythonhosted.org/packages/ea/78/901d41c86ba0dccf5f422aa4e484f0be6fb643b73d7b83cdd2474f6b2ef6/blosc-1.11.3-cp311-cp311-win_amd64.whl", hash = "sha256:171a3a6e9ce365b43978de65e93732c4d30dbf478f532cf41cfcc4d4a68e120a", size = 1815692, upload-time = "2025-05-17T11:49:30.15Z" }, + { url = "https://files.pythonhosted.org/packages/32/ca/b7447cc735c5b5e364a74f33b2af1c3a5ca939f915d03045a021c3279152/blosc-1.11.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:075f7b57576e8197c3febbb0317a198b18911a6b882ac114de8c9e90d9058acb", size = 2291581, upload-time = "2025-05-17T11:49:31.313Z" }, + { url = "https://files.pythonhosted.org/packages/86/e8/1679a35c079f0b42d973cf4411152975710ff190273ddb507ee8a9d1baf0/blosc-1.11.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d5a63601d24bd722b2daa20b86380bc147969466471ea8bf7950ad2f5da19834", size = 1801978, upload-time = "2025-05-17T11:49:32.45Z" }, + { url = "https://files.pythonhosted.org/packages/2d/ed/b01be8d05f970d48a3837a1e22796e934a72ad657ba1383f8e6d7893ae51/blosc-1.11.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9ec958830a22a20fea66f4d7f491e0993959974d68d104d3798c88f543dda14", size = 2485404, upload-time = "2025-05-17T11:49:33.724Z" }, + { url = "https://files.pythonhosted.org/packages/59/08/9c133c628932bbaca9429a1a82759c5f07d8bbb0d856ca25ce9863f808c4/blosc-1.11.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47dbe4ad431a773699a5779a98a982d8241eb412e4ddd1f19a4a869106d7a8d9", size = 2619988, upload-time = "2025-05-17T11:49:35.347Z" }, + { url = "https://files.pythonhosted.org/packages/64/f2/18353bdfa9cd7af34f2b40c7da0ba919200688f41f4ebe7d4e9720af545d/blosc-1.11.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f41e9202cd2d73238f2620725e84f668338aa45a53549a807d4c09fcf74e901f", size = 2678188, upload-time = "2025-05-17T11:49:36.784Z" }, + { url = "https://files.pythonhosted.org/packages/87/59/77ea209329c7d1ed692dd7b44a81bc66817588940341372bdb3282a232ce/blosc-1.11.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:52edad6b839b9ae2a7f1268fabe1570fd64bc5ba25c3f4f7aba5c5e555dd4a8a", size = 2752726, upload-time = "2025-05-17T11:49:38.59Z" }, + { url = "https://files.pythonhosted.org/packages/0a/a9/53b1ecb81f0332ab6538e43555644e19ea08184b3ed3d36242847147103c/blosc-1.11.3-cp312-cp312-win_amd64.whl", hash = "sha256:1a5cbcaa68d73e1115fed9ff09c20d35ab34d3b5e9bc6f0a2865156c363c0168", size = 1815691, upload-time = "2025-05-17T11:49:39.767Z" }, + { url = "https://files.pythonhosted.org/packages/a5/23/6ee0e7270ad6299e73483dfad31b17f8acf66f7768094316a35ee0534f1d/blosc-1.11.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9b474c70b9765587323dd1d7ff8e9fa9e9b35ccb3bee77e7658ce9faf2e05f7f", size = 2291576, upload-time = "2025-05-17T11:49:41.013Z" }, + { url = "https://files.pythonhosted.org/packages/51/8f/d8097dd6bf952d4bc1a31852f717d5a1157b32c1bea50dac723ed8e6bc8d/blosc-1.11.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:291d153864f53960861a48c2a5f6706adc2a84a2bdd9c3d1c5353d9c32748a03", size = 1801973, upload-time = "2025-05-17T11:49:42.259Z" }, + { url = "https://files.pythonhosted.org/packages/1e/cb/7fdf0756e6a38d6a28c5063bc8ba8a8c8b1a1ab6980d777c52ca7dd942b1/blosc-1.11.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece67bb34741a147e4120cff3ee3784121709a112d16795716b8f4239aaddfa4", size = 2485043, upload-time = "2025-05-17T11:49:44.034Z" }, + { url = "https://files.pythonhosted.org/packages/7c/b8/d21a1305356312ca0fc6bd54ad6fb91e7434f0efef545972eb72f040c815/blosc-1.11.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e70216dbddb85b69a8d0f62a4a5c09b7a1fce9ca2f329793e799f8b6f9fa3ab0", size = 2619988, upload-time = "2025-05-17T11:49:45.346Z" }, + { url = "https://files.pythonhosted.org/packages/a0/79/9ed273c9493e02f0bc5deacd3854ecabd6c6ba5371ed04b6c7702fd16f77/blosc-1.11.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:220865ffcac638f8f0f4b51259d4e4f3236165e5b43fffd1e836cd7cd29b9367", size = 2678176, upload-time = "2025-05-17T11:49:47.12Z" }, + { url = "https://files.pythonhosted.org/packages/79/0e/c50458a1e038c0f0da70c3223d2a34ad702b86a79d0921f23a8ffaae035f/blosc-1.11.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d57dde8c335378e8443757b69d0b29e90dfc53047d01311e952aecc815167dec", size = 2752740, upload-time = "2025-05-17T11:49:48.909Z" }, + { url = "https://files.pythonhosted.org/packages/f1/0e/3a5ed949e0e23eb576c08017bb39e8612607cf8f591d8149b0fb82469a03/blosc-1.11.3-cp313-cp313-win32.whl", hash = "sha256:d3d72046580a50177811916c78130d6ae7307420733de6e950cb567c896b1ca5", size = 1530991, upload-time = "2025-05-17T11:49:50.121Z" }, + { url = "https://files.pythonhosted.org/packages/06/d4/0c3cdaf34b3ef705fdab465ad8df4a3bce5bbdf2bca8f2515eae90ae28a0/blosc-1.11.3-cp313-cp313-win_amd64.whl", hash = "sha256:73721c1949f2b8d2f4168cababbfe6280511f0da9a971ba7ec9c56eab9603824", size = 1815688, upload-time = "2025-05-17T11:49:51.434Z" }, +] + [[package]] name = "blosc2" version = "2.7.1" @@ -533,7 +592,8 @@ name = "blosc2" version = "3.1.1" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.12'", + "python_full_version >= '3.14'", + "python_full_version >= '3.12' and python_full_version < '3.14'", "python_full_version == '3.11.*'", ] dependencies = [ @@ -564,9 +624,101 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e9/e6/c1602b0642110d621e9661b24eaa5f20bf691191d1e1915005b97fc18283/blosc2-3.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:3cb0f17ce4551ecff5a90eee5e297be73c29689fb82c026f51751d4e48cee4cd", size = 2178726, upload-time = "2025-02-14T11:24:34.766Z" }, ] +[[package]] +name = "brotli" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2f/c2/f9e977608bdf958650638c3f1e28f85a1b075f075ebbe77db8555463787b/Brotli-1.1.0.tar.gz", hash = "sha256:81de08ac11bcb85841e440c13611c00b67d3bf82698314928d0b676362546724", size = 7372270, upload-time = "2023-09-07T14:05:41.643Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6d/3a/dbf4fb970c1019a57b5e492e1e0eae745d32e59ba4d6161ab5422b08eefe/Brotli-1.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e1140c64812cb9b06c922e77f1c26a75ec5e3f0fb2bf92cc8c58720dec276752", size = 873045, upload-time = "2023-09-07T14:03:16.894Z" }, + { url = "https://files.pythonhosted.org/packages/dd/11/afc14026ea7f44bd6eb9316d800d439d092c8d508752055ce8d03086079a/Brotli-1.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c8fd5270e906eef71d4a8d19b7c6a43760c6abcfcc10c9101d14eb2357418de9", size = 446218, upload-time = "2023-09-07T14:03:18.917Z" }, + { url = "https://files.pythonhosted.org/packages/36/83/7545a6e7729db43cb36c4287ae388d6885c85a86dd251768a47015dfde32/Brotli-1.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ae56aca0402a0f9a3431cddda62ad71666ca9d4dc3a10a142b9dce2e3c0cda3", size = 2903872, upload-time = "2023-09-07T14:03:20.398Z" }, + { url = "https://files.pythonhosted.org/packages/32/23/35331c4d9391fcc0f29fd9bec2c76e4b4eeab769afbc4b11dd2e1098fb13/Brotli-1.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:43ce1b9935bfa1ede40028054d7f48b5469cd02733a365eec8a329ffd342915d", size = 2941254, upload-time = "2023-09-07T14:03:21.914Z" }, + { url = "https://files.pythonhosted.org/packages/3b/24/1671acb450c902edb64bd765d73603797c6c7280a9ada85a195f6b78c6e5/Brotli-1.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:7c4855522edb2e6ae7fdb58e07c3ba9111e7621a8956f481c68d5d979c93032e", size = 2857293, upload-time = "2023-09-07T14:03:24Z" }, + { url = "https://files.pythonhosted.org/packages/d5/00/40f760cc27007912b327fe15bf6bfd8eaecbe451687f72a8abc587d503b3/Brotli-1.1.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:38025d9f30cf4634f8309c6874ef871b841eb3c347e90b0851f63d1ded5212da", size = 3002385, upload-time = "2023-09-07T14:03:26.248Z" }, + { url = "https://files.pythonhosted.org/packages/b8/cb/8aaa83f7a4caa131757668c0fb0c4b6384b09ffa77f2fba9570d87ab587d/Brotli-1.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e6a904cb26bfefc2f0a6f240bdf5233be78cd2488900a2f846f3c3ac8489ab80", size = 2911104, upload-time = "2023-09-07T14:03:27.849Z" }, + { url = "https://files.pythonhosted.org/packages/bc/c4/65456561d89d3c49f46b7fbeb8fe6e449f13bdc8ea7791832c5d476b2faf/Brotli-1.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a37b8f0391212d29b3a91a799c8e4a2855e0576911cdfb2515487e30e322253d", size = 2809981, upload-time = "2023-09-07T14:03:29.92Z" }, + { url = "https://files.pythonhosted.org/packages/05/1b/cf49528437bae28abce5f6e059f0d0be6fecdcc1d3e33e7c54b3ca498425/Brotli-1.1.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e84799f09591700a4154154cab9787452925578841a94321d5ee8fb9a9a328f0", size = 2935297, upload-time = "2023-09-07T14:03:32.035Z" }, + { url = "https://files.pythonhosted.org/packages/81/ff/190d4af610680bf0c5a09eb5d1eac6e99c7c8e216440f9c7cfd42b7adab5/Brotli-1.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f66b5337fa213f1da0d9000bc8dc0cb5b896b726eefd9c6046f699b169c41b9e", size = 2930735, upload-time = "2023-09-07T14:03:33.801Z" }, + { url = "https://files.pythonhosted.org/packages/80/7d/f1abbc0c98f6e09abd3cad63ec34af17abc4c44f308a7a539010f79aae7a/Brotli-1.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5dab0844f2cf82be357a0eb11a9087f70c5430b2c241493fc122bb6f2bb0917c", size = 2933107, upload-time = "2024-10-18T12:32:09.016Z" }, + { url = "https://files.pythonhosted.org/packages/34/ce/5a5020ba48f2b5a4ad1c0522d095ad5847a0be508e7d7569c8630ce25062/Brotli-1.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e4fe605b917c70283db7dfe5ada75e04561479075761a0b3866c081d035b01c1", size = 2845400, upload-time = "2024-10-18T12:32:11.134Z" }, + { url = "https://files.pythonhosted.org/packages/44/89/fa2c4355ab1eecf3994e5a0a7f5492c6ff81dfcb5f9ba7859bd534bb5c1a/Brotli-1.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:1e9a65b5736232e7a7f91ff3d02277f11d339bf34099a56cdab6a8b3410a02b2", size = 3031985, upload-time = "2024-10-18T12:32:12.813Z" }, + { url = "https://files.pythonhosted.org/packages/af/a4/79196b4a1674143d19dca400866b1a4d1a089040df7b93b88ebae81f3447/Brotli-1.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:58d4b711689366d4a03ac7957ab8c28890415e267f9b6589969e74b6e42225ec", size = 2927099, upload-time = "2024-10-18T12:32:14.733Z" }, + { url = "https://files.pythonhosted.org/packages/e9/54/1c0278556a097f9651e657b873ab08f01b9a9ae4cac128ceb66427d7cd20/Brotli-1.1.0-cp310-cp310-win32.whl", hash = "sha256:be36e3d172dc816333f33520154d708a2657ea63762ec16b62ece02ab5e4daf2", size = 333172, upload-time = "2023-09-07T14:03:35.212Z" }, + { url = "https://files.pythonhosted.org/packages/f7/65/b785722e941193fd8b571afd9edbec2a9b838ddec4375d8af33a50b8dab9/Brotli-1.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:0c6244521dda65ea562d5a69b9a26120769b7a9fb3db2fe9545935ed6735b128", size = 357255, upload-time = "2023-09-07T14:03:36.447Z" }, + { url = "https://files.pythonhosted.org/packages/96/12/ad41e7fadd5db55459c4c401842b47f7fee51068f86dd2894dd0dcfc2d2a/Brotli-1.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a3daabb76a78f829cafc365531c972016e4aa8d5b4bf60660ad8ecee19df7ccc", size = 873068, upload-time = "2023-09-07T14:03:37.779Z" }, + { url = "https://files.pythonhosted.org/packages/95/4e/5afab7b2b4b61a84e9c75b17814198ce515343a44e2ed4488fac314cd0a9/Brotli-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c8146669223164fc87a7e3de9f81e9423c67a79d6b3447994dfb9c95da16e2d6", size = 446244, upload-time = "2023-09-07T14:03:39.223Z" }, + { url = "https://files.pythonhosted.org/packages/9d/e6/f305eb61fb9a8580c525478a4a34c5ae1a9bcb12c3aee619114940bc513d/Brotli-1.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30924eb4c57903d5a7526b08ef4a584acc22ab1ffa085faceb521521d2de32dd", size = 2906500, upload-time = "2023-09-07T14:03:40.858Z" }, + { url = "https://files.pythonhosted.org/packages/3e/4f/af6846cfbc1550a3024e5d3775ede1e00474c40882c7bf5b37a43ca35e91/Brotli-1.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ceb64bbc6eac5a140ca649003756940f8d6a7c444a68af170b3187623b43bebf", size = 2943950, upload-time = "2023-09-07T14:03:42.896Z" }, + { url = "https://files.pythonhosted.org/packages/b3/e7/ca2993c7682d8629b62630ebf0d1f3bb3d579e667ce8e7ca03a0a0576a2d/Brotli-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a469274ad18dc0e4d316eefa616d1d0c2ff9da369af19fa6f3daa4f09671fd61", size = 2918527, upload-time = "2023-09-07T14:03:44.552Z" }, + { url = "https://files.pythonhosted.org/packages/b3/96/da98e7bedc4c51104d29cc61e5f449a502dd3dbc211944546a4cc65500d3/Brotli-1.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:524f35912131cc2cabb00edfd8d573b07f2d9f21fa824bd3fb19725a9cf06327", size = 2845489, upload-time = "2023-09-07T14:03:46.594Z" }, + { url = "https://files.pythonhosted.org/packages/e8/ef/ccbc16947d6ce943a7f57e1a40596c75859eeb6d279c6994eddd69615265/Brotli-1.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5b3cc074004d968722f51e550b41a27be656ec48f8afaeeb45ebf65b561481dd", size = 2914080, upload-time = "2023-09-07T14:03:48.204Z" }, + { url = "https://files.pythonhosted.org/packages/80/d6/0bd38d758d1afa62a5524172f0b18626bb2392d717ff94806f741fcd5ee9/Brotli-1.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:19c116e796420b0cee3da1ccec3b764ed2952ccfcc298b55a10e5610ad7885f9", size = 2813051, upload-time = "2023-09-07T14:03:50.348Z" }, + { url = "https://files.pythonhosted.org/packages/14/56/48859dd5d129d7519e001f06dcfbb6e2cf6db92b2702c0c2ce7d97e086c1/Brotli-1.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:510b5b1bfbe20e1a7b3baf5fed9e9451873559a976c1a78eebaa3b86c57b4265", size = 2938172, upload-time = "2023-09-07T14:03:52.395Z" }, + { url = "https://files.pythonhosted.org/packages/3d/77/a236d5f8cd9e9f4348da5acc75ab032ab1ab2c03cc8f430d24eea2672888/Brotli-1.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a1fd8a29719ccce974d523580987b7f8229aeace506952fa9ce1d53a033873c8", size = 2933023, upload-time = "2023-09-07T14:03:53.96Z" }, + { url = "https://files.pythonhosted.org/packages/f1/87/3b283efc0f5cb35f7f84c0c240b1e1a1003a5e47141a4881bf87c86d0ce2/Brotli-1.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c247dd99d39e0338a604f8c2b3bc7061d5c2e9e2ac7ba9cc1be5a69cb6cd832f", size = 2935871, upload-time = "2024-10-18T12:32:16.688Z" }, + { url = "https://files.pythonhosted.org/packages/f3/eb/2be4cc3e2141dc1a43ad4ca1875a72088229de38c68e842746b342667b2a/Brotli-1.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1b2c248cd517c222d89e74669a4adfa5577e06ab68771a529060cf5a156e9757", size = 2847784, upload-time = "2024-10-18T12:32:18.459Z" }, + { url = "https://files.pythonhosted.org/packages/66/13/b58ddebfd35edde572ccefe6890cf7c493f0c319aad2a5badee134b4d8ec/Brotli-1.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:2a24c50840d89ded6c9a8fdc7b6ed3692ed4e86f1c4a4a938e1e92def92933e0", size = 3034905, upload-time = "2024-10-18T12:32:20.192Z" }, + { url = "https://files.pythonhosted.org/packages/84/9c/bc96b6c7db824998a49ed3b38e441a2cae9234da6fa11f6ed17e8cf4f147/Brotli-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f31859074d57b4639318523d6ffdca586ace54271a73ad23ad021acd807eb14b", size = 2929467, upload-time = "2024-10-18T12:32:21.774Z" }, + { url = "https://files.pythonhosted.org/packages/e7/71/8f161dee223c7ff7fea9d44893fba953ce97cf2c3c33f78ba260a91bcff5/Brotli-1.1.0-cp311-cp311-win32.whl", hash = "sha256:39da8adedf6942d76dc3e46653e52df937a3c4d6d18fdc94a7c29d263b1f5b50", size = 333169, upload-time = "2023-09-07T14:03:55.404Z" }, + { url = "https://files.pythonhosted.org/packages/02/8a/fece0ee1057643cb2a5bbf59682de13f1725f8482b2c057d4e799d7ade75/Brotli-1.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:aac0411d20e345dc0920bdec5548e438e999ff68d77564d5e9463a7ca9d3e7b1", size = 357253, upload-time = "2023-09-07T14:03:56.643Z" }, + { url = "https://files.pythonhosted.org/packages/5c/d0/5373ae13b93fe00095a58efcbce837fd470ca39f703a235d2a999baadfbc/Brotli-1.1.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:32d95b80260d79926f5fab3c41701dbb818fde1c9da590e77e571eefd14abe28", size = 815693, upload-time = "2024-10-18T12:32:23.824Z" }, + { url = "https://files.pythonhosted.org/packages/8e/48/f6e1cdf86751300c288c1459724bfa6917a80e30dbfc326f92cea5d3683a/Brotli-1.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b760c65308ff1e462f65d69c12e4ae085cff3b332d894637f6273a12a482d09f", size = 422489, upload-time = "2024-10-18T12:32:25.641Z" }, + { url = "https://files.pythonhosted.org/packages/06/88/564958cedce636d0f1bed313381dfc4b4e3d3f6015a63dae6146e1b8c65c/Brotli-1.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:316cc9b17edf613ac76b1f1f305d2a748f1b976b033b049a6ecdfd5612c70409", size = 873081, upload-time = "2023-09-07T14:03:57.967Z" }, + { url = "https://files.pythonhosted.org/packages/58/79/b7026a8bb65da9a6bb7d14329fd2bd48d2b7f86d7329d5cc8ddc6a90526f/Brotli-1.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:caf9ee9a5775f3111642d33b86237b05808dafcd6268faa492250e9b78046eb2", size = 446244, upload-time = "2023-09-07T14:03:59.319Z" }, + { url = "https://files.pythonhosted.org/packages/e5/18/c18c32ecea41b6c0004e15606e274006366fe19436b6adccc1ae7b2e50c2/Brotli-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70051525001750221daa10907c77830bc889cb6d865cc0b813d9db7fefc21451", size = 2906505, upload-time = "2023-09-07T14:04:01.327Z" }, + { url = "https://files.pythonhosted.org/packages/08/c8/69ec0496b1ada7569b62d85893d928e865df29b90736558d6c98c2031208/Brotli-1.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7f4bf76817c14aa98cc6697ac02f3972cb8c3da93e9ef16b9c66573a68014f91", size = 2944152, upload-time = "2023-09-07T14:04:03.033Z" }, + { url = "https://files.pythonhosted.org/packages/ab/fb/0517cea182219d6768113a38167ef6d4eb157a033178cc938033a552ed6d/Brotli-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0c5516f0aed654134a2fc936325cc2e642f8a0e096d075209672eb321cff408", size = 2919252, upload-time = "2023-09-07T14:04:04.675Z" }, + { url = "https://files.pythonhosted.org/packages/c7/53/73a3431662e33ae61a5c80b1b9d2d18f58dfa910ae8dd696e57d39f1a2f5/Brotli-1.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c3020404e0b5eefd7c9485ccf8393cfb75ec38ce75586e046573c9dc29967a0", size = 2845955, upload-time = "2023-09-07T14:04:06.585Z" }, + { url = "https://files.pythonhosted.org/packages/55/ac/bd280708d9c5ebdbf9de01459e625a3e3803cce0784f47d633562cf40e83/Brotli-1.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4ed11165dd45ce798d99a136808a794a748d5dc38511303239d4e2363c0695dc", size = 2914304, upload-time = "2023-09-07T14:04:08.668Z" }, + { url = "https://files.pythonhosted.org/packages/76/58/5c391b41ecfc4527d2cc3350719b02e87cb424ef8ba2023fb662f9bf743c/Brotli-1.1.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4093c631e96fdd49e0377a9c167bfd75b6d0bad2ace734c6eb20b348bc3ea180", size = 2814452, upload-time = "2023-09-07T14:04:10.736Z" }, + { url = "https://files.pythonhosted.org/packages/c7/4e/91b8256dfe99c407f174924b65a01f5305e303f486cc7a2e8a5d43c8bec3/Brotli-1.1.0-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:7e4c4629ddad63006efa0ef968c8e4751c5868ff0b1c5c40f76524e894c50248", size = 2938751, upload-time = "2023-09-07T14:04:12.875Z" }, + { url = "https://files.pythonhosted.org/packages/5a/a6/e2a39a5d3b412938362bbbeba5af904092bf3f95b867b4a3eb856104074e/Brotli-1.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:861bf317735688269936f755fa136a99d1ed526883859f86e41a5d43c61d8966", size = 2933757, upload-time = "2023-09-07T14:04:14.551Z" }, + { url = "https://files.pythonhosted.org/packages/13/f0/358354786280a509482e0e77c1a5459e439766597d280f28cb097642fc26/Brotli-1.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:87a3044c3a35055527ac75e419dfa9f4f3667a1e887ee80360589eb8c90aabb9", size = 2936146, upload-time = "2024-10-18T12:32:27.257Z" }, + { url = "https://files.pythonhosted.org/packages/80/f7/daf538c1060d3a88266b80ecc1d1c98b79553b3f117a485653f17070ea2a/Brotli-1.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c5529b34c1c9d937168297f2c1fde7ebe9ebdd5e121297ff9c043bdb2ae3d6fb", size = 2848055, upload-time = "2024-10-18T12:32:29.376Z" }, + { url = "https://files.pythonhosted.org/packages/ad/cf/0eaa0585c4077d3c2d1edf322d8e97aabf317941d3a72d7b3ad8bce004b0/Brotli-1.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:ca63e1890ede90b2e4454f9a65135a4d387a4585ff8282bb72964fab893f2111", size = 3035102, upload-time = "2024-10-18T12:32:31.371Z" }, + { url = "https://files.pythonhosted.org/packages/d8/63/1c1585b2aa554fe6dbce30f0c18bdbc877fa9a1bf5ff17677d9cca0ac122/Brotli-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e79e6520141d792237c70bcd7a3b122d00f2613769ae0cb61c52e89fd3443839", size = 2930029, upload-time = "2024-10-18T12:32:33.293Z" }, + { url = "https://files.pythonhosted.org/packages/5f/3b/4e3fd1893eb3bbfef8e5a80d4508bec17a57bb92d586c85c12d28666bb13/Brotli-1.1.0-cp312-cp312-win32.whl", hash = "sha256:5f4d5ea15c9382135076d2fb28dde923352fe02951e66935a9efaac8f10e81b0", size = 333276, upload-time = "2023-09-07T14:04:16.49Z" }, + { url = "https://files.pythonhosted.org/packages/3d/d5/942051b45a9e883b5b6e98c041698b1eb2012d25e5948c58d6bf85b1bb43/Brotli-1.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:906bc3a79de8c4ae5b86d3d75a8b77e44404b0f4261714306e3ad248d8ab0951", size = 357255, upload-time = "2023-09-07T14:04:17.83Z" }, + { url = "https://files.pythonhosted.org/packages/0a/9f/fb37bb8ffc52a8da37b1c03c459a8cd55df7a57bdccd8831d500e994a0ca/Brotli-1.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8bf32b98b75c13ec7cf774164172683d6e7891088f6316e54425fde1efc276d5", size = 815681, upload-time = "2024-10-18T12:32:34.942Z" }, + { url = "https://files.pythonhosted.org/packages/06/b3/dbd332a988586fefb0aa49c779f59f47cae76855c2d00f450364bb574cac/Brotli-1.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7bc37c4d6b87fb1017ea28c9508b36bbcb0c3d18b4260fcdf08b200c74a6aee8", size = 422475, upload-time = "2024-10-18T12:32:36.485Z" }, + { url = "https://files.pythonhosted.org/packages/bb/80/6aaddc2f63dbcf2d93c2d204e49c11a9ec93a8c7c63261e2b4bd35198283/Brotli-1.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c0ef38c7a7014ffac184db9e04debe495d317cc9c6fb10071f7fefd93100a4f", size = 2906173, upload-time = "2024-10-18T12:32:37.978Z" }, + { url = "https://files.pythonhosted.org/packages/ea/1d/e6ca79c96ff5b641df6097d299347507d39a9604bde8915e76bf026d6c77/Brotli-1.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91d7cc2a76b5567591d12c01f019dd7afce6ba8cba6571187e21e2fc418ae648", size = 2943803, upload-time = "2024-10-18T12:32:39.606Z" }, + { url = "https://files.pythonhosted.org/packages/ac/a3/d98d2472e0130b7dd3acdbb7f390d478123dbf62b7d32bda5c830a96116d/Brotli-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a93dde851926f4f2678e704fadeb39e16c35d8baebd5252c9fd94ce8ce68c4a0", size = 2918946, upload-time = "2024-10-18T12:32:41.679Z" }, + { url = "https://files.pythonhosted.org/packages/c4/a5/c69e6d272aee3e1423ed005d8915a7eaa0384c7de503da987f2d224d0721/Brotli-1.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f0db75f47be8b8abc8d9e31bc7aad0547ca26f24a54e6fd10231d623f183d089", size = 2845707, upload-time = "2024-10-18T12:32:43.478Z" }, + { url = "https://files.pythonhosted.org/packages/58/9f/4149d38b52725afa39067350696c09526de0125ebfbaab5acc5af28b42ea/Brotli-1.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6967ced6730aed543b8673008b5a391c3b1076d834ca438bbd70635c73775368", size = 2936231, upload-time = "2024-10-18T12:32:45.224Z" }, + { url = "https://files.pythonhosted.org/packages/5a/5a/145de884285611838a16bebfdb060c231c52b8f84dfbe52b852a15780386/Brotli-1.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:7eedaa5d036d9336c95915035fb57422054014ebdeb6f3b42eac809928e40d0c", size = 2848157, upload-time = "2024-10-18T12:32:46.894Z" }, + { url = "https://files.pythonhosted.org/packages/50/ae/408b6bfb8525dadebd3b3dd5b19d631da4f7d46420321db44cd99dcf2f2c/Brotli-1.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:d487f5432bf35b60ed625d7e1b448e2dc855422e87469e3f450aa5552b0eb284", size = 3035122, upload-time = "2024-10-18T12:32:48.844Z" }, + { url = "https://files.pythonhosted.org/packages/af/85/a94e5cfaa0ca449d8f91c3d6f78313ebf919a0dbd55a100c711c6e9655bc/Brotli-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:832436e59afb93e1836081a20f324cb185836c617659b07b129141a8426973c7", size = 2930206, upload-time = "2024-10-18T12:32:51.198Z" }, + { url = "https://files.pythonhosted.org/packages/c2/f0/a61d9262cd01351df22e57ad7c34f66794709acab13f34be2675f45bf89d/Brotli-1.1.0-cp313-cp313-win32.whl", hash = "sha256:43395e90523f9c23a3d5bdf004733246fba087f2948f87ab28015f12359ca6a0", size = 333804, upload-time = "2024-10-18T12:32:52.661Z" }, + { url = "https://files.pythonhosted.org/packages/7e/c1/ec214e9c94000d1c1974ec67ced1c970c148aa6b8d8373066123fc3dbf06/Brotli-1.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:9011560a466d2eb3f5a6e4929cf4a09be405c64154e12df0dd72713f6500e32b", size = 358517, upload-time = "2024-10-18T12:32:54.066Z" }, +] + +[[package]] +name = "brotlicffi" +version = "1.1.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/95/9d/70caa61192f570fcf0352766331b735afa931b4c6bc9a348a0925cc13288/brotlicffi-1.1.0.0.tar.gz", hash = "sha256:b77827a689905143f87915310b93b273ab17888fd43ef350d4832c4a71083c13", size = 465192, upload-time = "2023-09-14T14:22:40.707Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/11/7b96009d3dcc2c931e828ce1e157f03824a69fb728d06bfd7b2fc6f93718/brotlicffi-1.1.0.0-cp37-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9b7ae6bd1a3f0df532b6d67ff674099a96d22bc0948955cb338488c31bfb8851", size = 453786, upload-time = "2023-09-14T14:21:57.72Z" }, + { url = "https://files.pythonhosted.org/packages/d6/e6/a8f46f4a4ee7856fbd6ac0c6fb0dc65ed181ba46cd77875b8d9bbe494d9e/brotlicffi-1.1.0.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19ffc919fa4fc6ace69286e0a23b3789b4219058313cf9b45625016bf7ff996b", size = 2911165, upload-time = "2023-09-14T14:21:59.613Z" }, + { url = "https://files.pythonhosted.org/packages/be/20/201559dff14e83ba345a5ec03335607e47467b6633c210607e693aefac40/brotlicffi-1.1.0.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9feb210d932ffe7798ee62e6145d3a757eb6233aa9a4e7db78dd3690d7755814", size = 2927895, upload-time = "2023-09-14T14:22:01.22Z" }, + { url = "https://files.pythonhosted.org/packages/cd/15/695b1409264143be3c933f708a3f81d53c4a1e1ebbc06f46331decbf6563/brotlicffi-1.1.0.0-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:84763dbdef5dd5c24b75597a77e1b30c66604725707565188ba54bab4f114820", size = 2851834, upload-time = "2023-09-14T14:22:03.571Z" }, + { url = "https://files.pythonhosted.org/packages/b4/40/b961a702463b6005baf952794c2e9e0099bde657d0d7e007f923883b907f/brotlicffi-1.1.0.0-cp37-abi3-win32.whl", hash = "sha256:1b12b50e07c3911e1efa3a8971543e7648100713d4e0971b13631cce22c587eb", size = 341731, upload-time = "2023-09-14T14:22:05.74Z" }, + { url = "https://files.pythonhosted.org/packages/1c/fa/5408a03c041114ceab628ce21766a4ea882aa6f6f0a800e04ee3a30ec6b9/brotlicffi-1.1.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:994a4f0681bb6c6c3b0925530a1926b7a189d878e6e5e38fae8efa47c5d9c613", size = 366783, upload-time = "2023-09-14T14:22:07.096Z" }, + { url = "https://files.pythonhosted.org/packages/e5/3b/bd4f3d2bcf2306ae66b0346f5b42af1962480b200096ffc7abc3bd130eca/brotlicffi-1.1.0.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2e4aeb0bd2540cb91b069dbdd54d458da8c4334ceaf2d25df2f4af576d6766ca", size = 397397, upload-time = "2023-09-14T14:22:08.519Z" }, + { url = "https://files.pythonhosted.org/packages/54/10/1fd57864449360852c535c2381ee7120ba8f390aa3869df967c44ca7eba1/brotlicffi-1.1.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b7b0033b0d37bb33009fb2fef73310e432e76f688af76c156b3594389d81391", size = 379698, upload-time = "2023-09-14T14:22:10.52Z" }, + { url = "https://files.pythonhosted.org/packages/e5/95/15aa422aa6450e6556e54a5fd1650ff59f470aed77ac739aa90ab63dc611/brotlicffi-1.1.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54a07bb2374a1eba8ebb52b6fafffa2afd3c4df85ddd38fcc0511f2bb387c2a8", size = 378635, upload-time = "2023-09-14T14:22:11.982Z" }, + { url = "https://files.pythonhosted.org/packages/6c/a7/f254e13b2cb43337d6d99a4ec10394c134e41bfda8a2eff15b75627f4a3d/brotlicffi-1.1.0.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7901a7dc4b88f1c1475de59ae9be59799db1007b7d059817948d8e4f12e24e35", size = 385719, upload-time = "2023-09-14T14:22:13.483Z" }, + { url = "https://files.pythonhosted.org/packages/72/a9/0971251c4427c14b2a827dba3d910d4d3330dabf23d4278bf6d06a978847/brotlicffi-1.1.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ce01c7316aebc7fce59da734286148b1d1b9455f89cf2c8a4dfce7d41db55c2d", size = 361760, upload-time = "2023-09-14T14:22:14.767Z" }, +] + [[package]] name = "build" -version = "1.2.2.post1" +version = "1.3.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "os_name == 'nt'" }, @@ -575,9 +727,9 @@ dependencies = [ { name = "pyproject-hooks" }, { name = "tomli", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7d/46/aeab111f8e06793e4f0e421fcad593d547fb8313b50990f31681ee2fb1ad/build-1.2.2.post1.tar.gz", hash = "sha256:b36993e92ca9375a219c99e606a122ff365a760a2d4bba0caa09bd5278b608b7", size = 46701, upload-time = "2024-10-06T17:22:25.251Z" } +sdist = { url = "https://files.pythonhosted.org/packages/25/1c/23e33405a7c9eac261dff640926b8b5adaed6a6eb3e1767d441ed611d0c0/build-1.3.0.tar.gz", hash = "sha256:698edd0ea270bde950f53aed21f3a0135672206f3911e0176261a31e0e07b397", size = 48544, upload-time = "2025-08-01T21:27:09.268Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/84/c2/80633736cd183ee4a62107413def345f7e6e3c01563dbca1417363cf957e/build-1.2.2.post1-py3-none-any.whl", hash = "sha256:1d61c0887fa860c01971625baae8bdd338e517b836a2f70dd1f7aa3a6b2fc5b5", size = 22950, upload-time = "2024-10-06T17:22:23.299Z" }, + { url = "https://files.pythonhosted.org/packages/cb/8c/2b30c12155ad8de0cf641d76a8b396a16d2c36bc6d50b621a62b7c4567c1/build-1.3.0-py3-none-any.whl", hash = "sha256:7145f0b5061ba90a1500d60bd1b13ca0a8a4cebdd0cc16ed8adf1c0e739f43b4", size = 23382, upload-time = "2025-08-01T21:27:07.844Z" }, ] [[package]] @@ -591,68 +743,93 @@ wheels = [ [[package]] name = "certifi" -version = "2025.4.26" +version = "2025.8.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e8/9e/c05b3920a3b7d20d3d3310465f50348e5b3694f4f88c6daf736eef3024c4/certifi-2025.4.26.tar.gz", hash = "sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6", size = 160705, upload-time = "2025-04-26T02:12:29.51Z" } +sdist = { url = "https://files.pythonhosted.org/packages/dc/67/960ebe6bf230a96cda2e0abcf73af550ec4f090005363542f0765df162e0/certifi-2025.8.3.tar.gz", hash = "sha256:e564105f78ded564e3ae7c923924435e1daa7463faeab5bb932bc53ffae63407", size = 162386, upload-time = "2025-08-03T03:07:47.08Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4a/7e/3db2bd1b1f9e95f7cddca6d6e75e2f2bd9f51b1246e546d88addca0106bd/certifi-2025.4.26-py3-none-any.whl", hash = "sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3", size = 159618, upload-time = "2025-04-26T02:12:27.662Z" }, + { url = "https://files.pythonhosted.org/packages/e5/48/1549795ba7742c948d2ad169c1c8cdbae65bc450d6cd753d124b17c8cd32/certifi-2025.8.3-py3-none-any.whl", hash = "sha256:f6c12493cfb1b06ba2ff328595af9350c65d6644968e5d3a2ffd78699af217a5", size = 161216, upload-time = "2025-08-03T03:07:45.777Z" }, ] [[package]] name = "cffi" -version = "1.17.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pycparser" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621, upload-time = "2024-09-04T20:45:21.852Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/90/07/f44ca684db4e4f08a3fdc6eeb9a0d15dc6883efc7b8c90357fdbf74e186c/cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14", size = 182191, upload-time = "2024-09-04T20:43:30.027Z" }, - { url = "https://files.pythonhosted.org/packages/08/fd/cc2fedbd887223f9f5d170c96e57cbf655df9831a6546c1727ae13fa977a/cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67", size = 178592, upload-time = "2024-09-04T20:43:32.108Z" }, - { url = "https://files.pythonhosted.org/packages/de/cc/4635c320081c78d6ffc2cab0a76025b691a91204f4aa317d568ff9280a2d/cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382", size = 426024, upload-time = "2024-09-04T20:43:34.186Z" }, - { url = "https://files.pythonhosted.org/packages/b6/7b/3b2b250f3aab91abe5f8a51ada1b717935fdaec53f790ad4100fe2ec64d1/cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702", size = 448188, upload-time = "2024-09-04T20:43:36.286Z" }, - { url = "https://files.pythonhosted.org/packages/d3/48/1b9283ebbf0ec065148d8de05d647a986c5f22586b18120020452fff8f5d/cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3", size = 455571, upload-time = "2024-09-04T20:43:38.586Z" }, - { url = "https://files.pythonhosted.org/packages/40/87/3b8452525437b40f39ca7ff70276679772ee7e8b394934ff60e63b7b090c/cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6", size = 436687, upload-time = "2024-09-04T20:43:40.084Z" }, - { url = "https://files.pythonhosted.org/packages/8d/fb/4da72871d177d63649ac449aec2e8a29efe0274035880c7af59101ca2232/cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17", size = 446211, upload-time = "2024-09-04T20:43:41.526Z" }, - { url = "https://files.pythonhosted.org/packages/ab/a0/62f00bcb411332106c02b663b26f3545a9ef136f80d5df746c05878f8c4b/cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8", size = 461325, upload-time = "2024-09-04T20:43:43.117Z" }, - { url = "https://files.pythonhosted.org/packages/36/83/76127035ed2e7e27b0787604d99da630ac3123bfb02d8e80c633f218a11d/cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e", size = 438784, upload-time = "2024-09-04T20:43:45.256Z" }, - { url = "https://files.pythonhosted.org/packages/21/81/a6cd025db2f08ac88b901b745c163d884641909641f9b826e8cb87645942/cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be", size = 461564, upload-time = "2024-09-04T20:43:46.779Z" }, - { url = "https://files.pythonhosted.org/packages/f8/fe/4d41c2f200c4a457933dbd98d3cf4e911870877bd94d9656cc0fcb390681/cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c", size = 171804, upload-time = "2024-09-04T20:43:48.186Z" }, - { url = "https://files.pythonhosted.org/packages/d1/b6/0b0f5ab93b0df4acc49cae758c81fe4e5ef26c3ae2e10cc69249dfd8b3ab/cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15", size = 181299, upload-time = "2024-09-04T20:43:49.812Z" }, - { url = "https://files.pythonhosted.org/packages/6b/f4/927e3a8899e52a27fa57a48607ff7dc91a9ebe97399b357b85a0c7892e00/cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401", size = 182264, upload-time = "2024-09-04T20:43:51.124Z" }, - { url = "https://files.pythonhosted.org/packages/6c/f5/6c3a8efe5f503175aaddcbea6ad0d2c96dad6f5abb205750d1b3df44ef29/cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf", size = 178651, upload-time = "2024-09-04T20:43:52.872Z" }, - { url = "https://files.pythonhosted.org/packages/94/dd/a3f0118e688d1b1a57553da23b16bdade96d2f9bcda4d32e7d2838047ff7/cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4", size = 445259, upload-time = "2024-09-04T20:43:56.123Z" }, - { url = "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", size = 469200, upload-time = "2024-09-04T20:43:57.891Z" }, - { url = "https://files.pythonhosted.org/packages/1c/a0/a4fa9f4f781bda074c3ddd57a572b060fa0df7655d2a4247bbe277200146/cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1", size = 477235, upload-time = "2024-09-04T20:44:00.18Z" }, - { url = "https://files.pythonhosted.org/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", size = 459721, upload-time = "2024-09-04T20:44:01.585Z" }, - { url = "https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", size = 467242, upload-time = "2024-09-04T20:44:03.467Z" }, - { url = "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", size = 477999, upload-time = "2024-09-04T20:44:05.023Z" }, - { url = "https://files.pythonhosted.org/packages/44/74/f2a2460684a1a2d00ca799ad880d54652841a780c4c97b87754f660c7603/cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f", size = 454242, upload-time = "2024-09-04T20:44:06.444Z" }, - { url = "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", size = 478604, upload-time = "2024-09-04T20:44:08.206Z" }, - { url = "https://files.pythonhosted.org/packages/34/33/e1b8a1ba29025adbdcda5fb3a36f94c03d771c1b7b12f726ff7fef2ebe36/cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655", size = 171727, upload-time = "2024-09-04T20:44:09.481Z" }, - { url = "https://files.pythonhosted.org/packages/3d/97/50228be003bb2802627d28ec0627837ac0bf35c90cf769812056f235b2d1/cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0", size = 181400, upload-time = "2024-09-04T20:44:10.873Z" }, - { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178, upload-time = "2024-09-04T20:44:12.232Z" }, - { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840, upload-time = "2024-09-04T20:44:13.739Z" }, - { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803, upload-time = "2024-09-04T20:44:15.231Z" }, - { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850, upload-time = "2024-09-04T20:44:17.188Z" }, - { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729, upload-time = "2024-09-04T20:44:18.688Z" }, - { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256, upload-time = "2024-09-04T20:44:20.248Z" }, - { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424, upload-time = "2024-09-04T20:44:21.673Z" }, - { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568, upload-time = "2024-09-04T20:44:23.245Z" }, - { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736, upload-time = "2024-09-04T20:44:24.757Z" }, - { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448, upload-time = "2024-09-04T20:44:26.208Z" }, - { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976, upload-time = "2024-09-04T20:44:27.578Z" }, - { url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989, upload-time = "2024-09-04T20:44:28.956Z" }, - { url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802, upload-time = "2024-09-04T20:44:30.289Z" }, - { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792, upload-time = "2024-09-04T20:44:32.01Z" }, - { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893, upload-time = "2024-09-04T20:44:33.606Z" }, - { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810, upload-time = "2024-09-04T20:44:35.191Z" }, - { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200, upload-time = "2024-09-04T20:44:36.743Z" }, - { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447, upload-time = "2024-09-04T20:44:38.492Z" }, - { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358, upload-time = "2024-09-04T20:44:40.046Z" }, - { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469, upload-time = "2024-09-04T20:44:41.616Z" }, - { url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475, upload-time = "2024-09-04T20:44:43.733Z" }, - { url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009, upload-time = "2024-09-04T20:44:45.309Z" }, +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser", marker = "implementation_name != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588, upload-time = "2025-09-08T23:24:04.541Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/93/d7/516d984057745a6cd96575eea814fe1edd6646ee6efd552fb7b0921dec83/cffi-2.0.0-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:0cf2d91ecc3fcc0625c2c530fe004f82c110405f101548512cce44322fa8ac44", size = 184283, upload-time = "2025-09-08T23:22:08.01Z" }, + { url = "https://files.pythonhosted.org/packages/9e/84/ad6a0b408daa859246f57c03efd28e5dd1b33c21737c2db84cae8c237aa5/cffi-2.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f73b96c41e3b2adedc34a7356e64c8eb96e03a3782b535e043a986276ce12a49", size = 180504, upload-time = "2025-09-08T23:22:10.637Z" }, + { url = "https://files.pythonhosted.org/packages/50/bd/b1a6362b80628111e6653c961f987faa55262b4002fcec42308cad1db680/cffi-2.0.0-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:53f77cbe57044e88bbd5ed26ac1d0514d2acf0591dd6bb02a3ae37f76811b80c", size = 208811, upload-time = "2025-09-08T23:22:12.267Z" }, + { url = "https://files.pythonhosted.org/packages/4f/27/6933a8b2562d7bd1fb595074cf99cc81fc3789f6a6c05cdabb46284a3188/cffi-2.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3e837e369566884707ddaf85fc1744b47575005c0a229de3327f8f9a20f4efeb", size = 216402, upload-time = "2025-09-08T23:22:13.455Z" }, + { url = "https://files.pythonhosted.org/packages/05/eb/b86f2a2645b62adcfff53b0dd97e8dfafb5c8aa864bd0d9a2c2049a0d551/cffi-2.0.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:5eda85d6d1879e692d546a078b44251cdd08dd1cfb98dfb77b670c97cee49ea0", size = 203217, upload-time = "2025-09-08T23:22:14.596Z" }, + { url = "https://files.pythonhosted.org/packages/9f/e0/6cbe77a53acf5acc7c08cc186c9928864bd7c005f9efd0d126884858a5fe/cffi-2.0.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9332088d75dc3241c702d852d4671613136d90fa6881da7d770a483fd05248b4", size = 203079, upload-time = "2025-09-08T23:22:15.769Z" }, + { url = "https://files.pythonhosted.org/packages/98/29/9b366e70e243eb3d14a5cb488dfd3a0b6b2f1fb001a203f653b93ccfac88/cffi-2.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fc7de24befaeae77ba923797c7c87834c73648a05a4bde34b3b7e5588973a453", size = 216475, upload-time = "2025-09-08T23:22:17.427Z" }, + { url = "https://files.pythonhosted.org/packages/21/7a/13b24e70d2f90a322f2900c5d8e1f14fa7e2a6b3332b7309ba7b2ba51a5a/cffi-2.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf364028c016c03078a23b503f02058f1814320a56ad535686f90565636a9495", size = 218829, upload-time = "2025-09-08T23:22:19.069Z" }, + { url = "https://files.pythonhosted.org/packages/60/99/c9dc110974c59cc981b1f5b66e1d8af8af764e00f0293266824d9c4254bc/cffi-2.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e11e82b744887154b182fd3e7e8512418446501191994dbf9c9fc1f32cc8efd5", size = 211211, upload-time = "2025-09-08T23:22:20.588Z" }, + { url = "https://files.pythonhosted.org/packages/49/72/ff2d12dbf21aca1b32a40ed792ee6b40f6dc3a9cf1644bd7ef6e95e0ac5e/cffi-2.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8ea985900c5c95ce9db1745f7933eeef5d314f0565b27625d9a10ec9881e1bfb", size = 218036, upload-time = "2025-09-08T23:22:22.143Z" }, + { url = "https://files.pythonhosted.org/packages/e2/cc/027d7fb82e58c48ea717149b03bcadcbdc293553edb283af792bd4bcbb3f/cffi-2.0.0-cp310-cp310-win32.whl", hash = "sha256:1f72fb8906754ac8a2cc3f9f5aaa298070652a0ffae577e0ea9bd480dc3c931a", size = 172184, upload-time = "2025-09-08T23:22:23.328Z" }, + { url = "https://files.pythonhosted.org/packages/33/fa/072dd15ae27fbb4e06b437eb6e944e75b068deb09e2a2826039e49ee2045/cffi-2.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:b18a3ed7d5b3bd8d9ef7a8cb226502c6bf8308df1525e1cc676c3680e7176739", size = 182790, upload-time = "2025-09-08T23:22:24.752Z" }, + { url = "https://files.pythonhosted.org/packages/12/4a/3dfd5f7850cbf0d06dc84ba9aa00db766b52ca38d8b86e3a38314d52498c/cffi-2.0.0-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:b4c854ef3adc177950a8dfc81a86f5115d2abd545751a304c5bcf2c2c7283cfe", size = 184344, upload-time = "2025-09-08T23:22:26.456Z" }, + { url = "https://files.pythonhosted.org/packages/4f/8b/f0e4c441227ba756aafbe78f117485b25bb26b1c059d01f137fa6d14896b/cffi-2.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2de9a304e27f7596cd03d16f1b7c72219bd944e99cc52b84d0145aefb07cbd3c", size = 180560, upload-time = "2025-09-08T23:22:28.197Z" }, + { url = "https://files.pythonhosted.org/packages/b1/b7/1200d354378ef52ec227395d95c2576330fd22a869f7a70e88e1447eb234/cffi-2.0.0-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:baf5215e0ab74c16e2dd324e8ec067ef59e41125d3eade2b863d294fd5035c92", size = 209613, upload-time = "2025-09-08T23:22:29.475Z" }, + { url = "https://files.pythonhosted.org/packages/b8/56/6033f5e86e8cc9bb629f0077ba71679508bdf54a9a5e112a3c0b91870332/cffi-2.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:730cacb21e1bdff3ce90babf007d0a0917cc3e6492f336c2f0134101e0944f93", size = 216476, upload-time = "2025-09-08T23:22:31.063Z" }, + { url = "https://files.pythonhosted.org/packages/dc/7f/55fecd70f7ece178db2f26128ec41430d8720f2d12ca97bf8f0a628207d5/cffi-2.0.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:6824f87845e3396029f3820c206e459ccc91760e8fa24422f8b0c3d1731cbec5", size = 203374, upload-time = "2025-09-08T23:22:32.507Z" }, + { url = "https://files.pythonhosted.org/packages/84/ef/a7b77c8bdc0f77adc3b46888f1ad54be8f3b7821697a7b89126e829e676a/cffi-2.0.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9de40a7b0323d889cf8d23d1ef214f565ab154443c42737dfe52ff82cf857664", size = 202597, upload-time = "2025-09-08T23:22:34.132Z" }, + { url = "https://files.pythonhosted.org/packages/d7/91/500d892b2bf36529a75b77958edfcd5ad8e2ce4064ce2ecfeab2125d72d1/cffi-2.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8941aaadaf67246224cee8c3803777eed332a19d909b47e29c9842ef1e79ac26", size = 215574, upload-time = "2025-09-08T23:22:35.443Z" }, + { url = "https://files.pythonhosted.org/packages/44/64/58f6255b62b101093d5df22dcb752596066c7e89dd725e0afaed242a61be/cffi-2.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a05d0c237b3349096d3981b727493e22147f934b20f6f125a3eba8f994bec4a9", size = 218971, upload-time = "2025-09-08T23:22:36.805Z" }, + { url = "https://files.pythonhosted.org/packages/ab/49/fa72cebe2fd8a55fbe14956f9970fe8eb1ac59e5df042f603ef7c8ba0adc/cffi-2.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:94698a9c5f91f9d138526b48fe26a199609544591f859c870d477351dc7b2414", size = 211972, upload-time = "2025-09-08T23:22:38.436Z" }, + { url = "https://files.pythonhosted.org/packages/0b/28/dd0967a76aab36731b6ebfe64dec4e981aff7e0608f60c2d46b46982607d/cffi-2.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:5fed36fccc0612a53f1d4d9a816b50a36702c28a2aa880cb8a122b3466638743", size = 217078, upload-time = "2025-09-08T23:22:39.776Z" }, + { url = "https://files.pythonhosted.org/packages/2b/c0/015b25184413d7ab0a410775fdb4a50fca20f5589b5dab1dbbfa3baad8ce/cffi-2.0.0-cp311-cp311-win32.whl", hash = "sha256:c649e3a33450ec82378822b3dad03cc228b8f5963c0c12fc3b1e0ab940f768a5", size = 172076, upload-time = "2025-09-08T23:22:40.95Z" }, + { url = "https://files.pythonhosted.org/packages/ae/8f/dc5531155e7070361eb1b7e4c1a9d896d0cb21c49f807a6c03fd63fc877e/cffi-2.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:66f011380d0e49ed280c789fbd08ff0d40968ee7b665575489afa95c98196ab5", size = 182820, upload-time = "2025-09-08T23:22:42.463Z" }, + { url = "https://files.pythonhosted.org/packages/95/5c/1b493356429f9aecfd56bc171285a4c4ac8697f76e9bbbbb105e537853a1/cffi-2.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c6638687455baf640e37344fe26d37c404db8b80d037c3d29f58fe8d1c3b194d", size = 177635, upload-time = "2025-09-08T23:22:43.623Z" }, + { url = "https://files.pythonhosted.org/packages/ea/47/4f61023ea636104d4f16ab488e268b93008c3d0bb76893b1b31db1f96802/cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d", size = 185271, upload-time = "2025-09-08T23:22:44.795Z" }, + { url = "https://files.pythonhosted.org/packages/df/a2/781b623f57358e360d62cdd7a8c681f074a71d445418a776eef0aadb4ab4/cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c", size = 181048, upload-time = "2025-09-08T23:22:45.938Z" }, + { url = "https://files.pythonhosted.org/packages/ff/df/a4f0fbd47331ceeba3d37c2e51e9dfc9722498becbeec2bd8bc856c9538a/cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe", size = 212529, upload-time = "2025-09-08T23:22:47.349Z" }, + { url = "https://files.pythonhosted.org/packages/d5/72/12b5f8d3865bf0f87cf1404d8c374e7487dcf097a1c91c436e72e6badd83/cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062", size = 220097, upload-time = "2025-09-08T23:22:48.677Z" }, + { url = "https://files.pythonhosted.org/packages/c2/95/7a135d52a50dfa7c882ab0ac17e8dc11cec9d55d2c18dda414c051c5e69e/cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e", size = 207983, upload-time = "2025-09-08T23:22:50.06Z" }, + { url = "https://files.pythonhosted.org/packages/3a/c8/15cb9ada8895957ea171c62dc78ff3e99159ee7adb13c0123c001a2546c1/cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037", size = 206519, upload-time = "2025-09-08T23:22:51.364Z" }, + { url = "https://files.pythonhosted.org/packages/78/2d/7fa73dfa841b5ac06c7b8855cfc18622132e365f5b81d02230333ff26e9e/cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba", size = 219572, upload-time = "2025-09-08T23:22:52.902Z" }, + { url = "https://files.pythonhosted.org/packages/07/e0/267e57e387b4ca276b90f0434ff88b2c2241ad72b16d31836adddfd6031b/cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94", size = 222963, upload-time = "2025-09-08T23:22:54.518Z" }, + { url = "https://files.pythonhosted.org/packages/b6/75/1f2747525e06f53efbd878f4d03bac5b859cbc11c633d0fb81432d98a795/cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187", size = 221361, upload-time = "2025-09-08T23:22:55.867Z" }, + { url = "https://files.pythonhosted.org/packages/7b/2b/2b6435f76bfeb6bbf055596976da087377ede68df465419d192acf00c437/cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18", size = 172932, upload-time = "2025-09-08T23:22:57.188Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ed/13bd4418627013bec4ed6e54283b1959cf6db888048c7cf4b4c3b5b36002/cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5", size = 183557, upload-time = "2025-09-08T23:22:58.351Z" }, + { url = "https://files.pythonhosted.org/packages/95/31/9f7f93ad2f8eff1dbc1c3656d7ca5bfd8fb52c9d786b4dcf19b2d02217fa/cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6", size = 177762, upload-time = "2025-09-08T23:22:59.668Z" }, + { url = "https://files.pythonhosted.org/packages/4b/8d/a0a47a0c9e413a658623d014e91e74a50cdd2c423f7ccfd44086ef767f90/cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb", size = 185230, upload-time = "2025-09-08T23:23:00.879Z" }, + { url = "https://files.pythonhosted.org/packages/4a/d2/a6c0296814556c68ee32009d9c2ad4f85f2707cdecfd7727951ec228005d/cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca", size = 181043, upload-time = "2025-09-08T23:23:02.231Z" }, + { url = "https://files.pythonhosted.org/packages/b0/1e/d22cc63332bd59b06481ceaac49d6c507598642e2230f201649058a7e704/cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b", size = 212446, upload-time = "2025-09-08T23:23:03.472Z" }, + { url = "https://files.pythonhosted.org/packages/a9/f5/a2c23eb03b61a0b8747f211eb716446c826ad66818ddc7810cc2cc19b3f2/cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b", size = 220101, upload-time = "2025-09-08T23:23:04.792Z" }, + { url = "https://files.pythonhosted.org/packages/f2/7f/e6647792fc5850d634695bc0e6ab4111ae88e89981d35ac269956605feba/cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2", size = 207948, upload-time = "2025-09-08T23:23:06.127Z" }, + { url = "https://files.pythonhosted.org/packages/cb/1e/a5a1bd6f1fb30f22573f76533de12a00bf274abcdc55c8edab639078abb6/cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3", size = 206422, upload-time = "2025-09-08T23:23:07.753Z" }, + { url = "https://files.pythonhosted.org/packages/98/df/0a1755e750013a2081e863e7cd37e0cdd02664372c754e5560099eb7aa44/cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26", size = 219499, upload-time = "2025-09-08T23:23:09.648Z" }, + { url = "https://files.pythonhosted.org/packages/50/e1/a969e687fcf9ea58e6e2a928ad5e2dd88cc12f6f0ab477e9971f2309b57c/cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c", size = 222928, upload-time = "2025-09-08T23:23:10.928Z" }, + { url = "https://files.pythonhosted.org/packages/36/54/0362578dd2c9e557a28ac77698ed67323ed5b9775ca9d3fe73fe191bb5d8/cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b", size = 221302, upload-time = "2025-09-08T23:23:12.42Z" }, + { url = "https://files.pythonhosted.org/packages/eb/6d/bf9bda840d5f1dfdbf0feca87fbdb64a918a69bca42cfa0ba7b137c48cb8/cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27", size = 172909, upload-time = "2025-09-08T23:23:14.32Z" }, + { url = "https://files.pythonhosted.org/packages/37/18/6519e1ee6f5a1e579e04b9ddb6f1676c17368a7aba48299c3759bbc3c8b3/cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75", size = 183402, upload-time = "2025-09-08T23:23:15.535Z" }, + { url = "https://files.pythonhosted.org/packages/cb/0e/02ceeec9a7d6ee63bb596121c2c8e9b3a9e150936f4fbef6ca1943e6137c/cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91", size = 177780, upload-time = "2025-09-08T23:23:16.761Z" }, + { url = "https://files.pythonhosted.org/packages/92/c4/3ce07396253a83250ee98564f8d7e9789fab8e58858f35d07a9a2c78de9f/cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5", size = 185320, upload-time = "2025-09-08T23:23:18.087Z" }, + { url = "https://files.pythonhosted.org/packages/59/dd/27e9fa567a23931c838c6b02d0764611c62290062a6d4e8ff7863daf9730/cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13", size = 181487, upload-time = "2025-09-08T23:23:19.622Z" }, + { url = "https://files.pythonhosted.org/packages/d6/43/0e822876f87ea8a4ef95442c3d766a06a51fc5298823f884ef87aaad168c/cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b", size = 220049, upload-time = "2025-09-08T23:23:20.853Z" }, + { url = "https://files.pythonhosted.org/packages/b4/89/76799151d9c2d2d1ead63c2429da9ea9d7aac304603de0c6e8764e6e8e70/cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c", size = 207793, upload-time = "2025-09-08T23:23:22.08Z" }, + { url = "https://files.pythonhosted.org/packages/bb/dd/3465b14bb9e24ee24cb88c9e3730f6de63111fffe513492bf8c808a3547e/cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef", size = 206300, upload-time = "2025-09-08T23:23:23.314Z" }, + { url = "https://files.pythonhosted.org/packages/47/d9/d83e293854571c877a92da46fdec39158f8d7e68da75bf73581225d28e90/cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775", size = 219244, upload-time = "2025-09-08T23:23:24.541Z" }, + { url = "https://files.pythonhosted.org/packages/2b/0f/1f177e3683aead2bb00f7679a16451d302c436b5cbf2505f0ea8146ef59e/cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205", size = 222828, upload-time = "2025-09-08T23:23:26.143Z" }, + { url = "https://files.pythonhosted.org/packages/c6/0f/cafacebd4b040e3119dcb32fed8bdef8dfe94da653155f9d0b9dc660166e/cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1", size = 220926, upload-time = "2025-09-08T23:23:27.873Z" }, + { url = "https://files.pythonhosted.org/packages/3e/aa/df335faa45b395396fcbc03de2dfcab242cd61a9900e914fe682a59170b1/cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f", size = 175328, upload-time = "2025-09-08T23:23:44.61Z" }, + { url = "https://files.pythonhosted.org/packages/bb/92/882c2d30831744296ce713f0feb4c1cd30f346ef747b530b5318715cc367/cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25", size = 185650, upload-time = "2025-09-08T23:23:45.848Z" }, + { url = "https://files.pythonhosted.org/packages/9f/2c/98ece204b9d35a7366b5b2c6539c350313ca13932143e79dc133ba757104/cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad", size = 180687, upload-time = "2025-09-08T23:23:47.105Z" }, + { url = "https://files.pythonhosted.org/packages/3e/61/c768e4d548bfa607abcda77423448df8c471f25dbe64fb2ef6d555eae006/cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9", size = 188773, upload-time = "2025-09-08T23:23:29.347Z" }, + { url = "https://files.pythonhosted.org/packages/2c/ea/5f76bce7cf6fcd0ab1a1058b5af899bfbef198bea4d5686da88471ea0336/cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d", size = 185013, upload-time = "2025-09-08T23:23:30.63Z" }, + { url = "https://files.pythonhosted.org/packages/be/b4/c56878d0d1755cf9caa54ba71e5d049479c52f9e4afc230f06822162ab2f/cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c", size = 221593, upload-time = "2025-09-08T23:23:31.91Z" }, + { url = "https://files.pythonhosted.org/packages/e0/0d/eb704606dfe8033e7128df5e90fee946bbcb64a04fcdaa97321309004000/cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8", size = 209354, upload-time = "2025-09-08T23:23:33.214Z" }, + { url = "https://files.pythonhosted.org/packages/d8/19/3c435d727b368ca475fb8742ab97c9cb13a0de600ce86f62eab7fa3eea60/cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc", size = 208480, upload-time = "2025-09-08T23:23:34.495Z" }, + { url = "https://files.pythonhosted.org/packages/d0/44/681604464ed9541673e486521497406fadcc15b5217c3e326b061696899a/cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592", size = 221584, upload-time = "2025-09-08T23:23:36.096Z" }, + { url = "https://files.pythonhosted.org/packages/25/8e/342a504ff018a2825d395d44d63a767dd8ebc927ebda557fecdaca3ac33a/cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512", size = 224443, upload-time = "2025-09-08T23:23:37.328Z" }, + { url = "https://files.pythonhosted.org/packages/e1/5e/b666bacbbc60fbf415ba9988324a132c9a7a0448a9a8f125074671c0f2c3/cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4", size = 223437, upload-time = "2025-09-08T23:23:38.945Z" }, + { url = "https://files.pythonhosted.org/packages/a0/1d/ec1a60bd1a10daa292d3cd6bb0b359a81607154fb8165f3ec95fe003b85c/cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e", size = 180487, upload-time = "2025-09-08T23:23:40.423Z" }, + { url = "https://files.pythonhosted.org/packages/bf/41/4c1168c74fac325c0c8156f04b6749c8b6a8f405bbf91413ba088359f60d/cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6", size = 191726, upload-time = "2025-09-08T23:23:41.742Z" }, + { url = "https://files.pythonhosted.org/packages/ae/3a/dbeec9d1ee0844c679f6bb5d6ad4e9f198b1224f4e7a32825f47f6192b0c/cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9", size = 184195, upload-time = "2025-09-08T23:23:43.004Z" }, ] [[package]] @@ -666,75 +843,78 @@ wheels = [ [[package]] name = "charset-normalizer" -version = "3.4.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367, upload-time = "2025-05-02T08:34:42.01Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/95/28/9901804da60055b406e1a1c5ba7aac1276fb77f1dde635aabfc7fd84b8ab/charset_normalizer-3.4.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7c48ed483eb946e6c04ccbe02c6b4d1d48e51944b6db70f697e089c193404941", size = 201818, upload-time = "2025-05-02T08:31:46.725Z" }, - { url = "https://files.pythonhosted.org/packages/d9/9b/892a8c8af9110935e5adcbb06d9c6fe741b6bb02608c6513983048ba1a18/charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2d318c11350e10662026ad0eb71bb51c7812fc8590825304ae0bdd4ac283acd", size = 144649, upload-time = "2025-05-02T08:31:48.889Z" }, - { url = "https://files.pythonhosted.org/packages/7b/a5/4179abd063ff6414223575e008593861d62abfc22455b5d1a44995b7c101/charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9cbfacf36cb0ec2897ce0ebc5d08ca44213af24265bd56eca54bee7923c48fd6", size = 155045, upload-time = "2025-05-02T08:31:50.757Z" }, - { url = "https://files.pythonhosted.org/packages/3b/95/bc08c7dfeddd26b4be8c8287b9bb055716f31077c8b0ea1cd09553794665/charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18dd2e350387c87dabe711b86f83c9c78af772c748904d372ade190b5c7c9d4d", size = 147356, upload-time = "2025-05-02T08:31:52.634Z" }, - { url = "https://files.pythonhosted.org/packages/a8/2d/7a5b635aa65284bf3eab7653e8b4151ab420ecbae918d3e359d1947b4d61/charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8075c35cd58273fee266c58c0c9b670947c19df5fb98e7b66710e04ad4e9ff86", size = 149471, upload-time = "2025-05-02T08:31:56.207Z" }, - { url = "https://files.pythonhosted.org/packages/ae/38/51fc6ac74251fd331a8cfdb7ec57beba8c23fd5493f1050f71c87ef77ed0/charset_normalizer-3.4.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5bf4545e3b962767e5c06fe1738f951f77d27967cb2caa64c28be7c4563e162c", size = 151317, upload-time = "2025-05-02T08:31:57.613Z" }, - { url = "https://files.pythonhosted.org/packages/b7/17/edee1e32215ee6e9e46c3e482645b46575a44a2d72c7dfd49e49f60ce6bf/charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7a6ab32f7210554a96cd9e33abe3ddd86732beeafc7a28e9955cdf22ffadbab0", size = 146368, upload-time = "2025-05-02T08:31:59.468Z" }, - { url = "https://files.pythonhosted.org/packages/26/2c/ea3e66f2b5f21fd00b2825c94cafb8c326ea6240cd80a91eb09e4a285830/charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b33de11b92e9f75a2b545d6e9b6f37e398d86c3e9e9653c4864eb7e89c5773ef", size = 154491, upload-time = "2025-05-02T08:32:01.219Z" }, - { url = "https://files.pythonhosted.org/packages/52/47/7be7fa972422ad062e909fd62460d45c3ef4c141805b7078dbab15904ff7/charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8755483f3c00d6c9a77f490c17e6ab0c8729e39e6390328e42521ef175380ae6", size = 157695, upload-time = "2025-05-02T08:32:03.045Z" }, - { url = "https://files.pythonhosted.org/packages/2f/42/9f02c194da282b2b340f28e5fb60762de1151387a36842a92b533685c61e/charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:68a328e5f55ec37c57f19ebb1fdc56a248db2e3e9ad769919a58672958e8f366", size = 154849, upload-time = "2025-05-02T08:32:04.651Z" }, - { url = "https://files.pythonhosted.org/packages/67/44/89cacd6628f31fb0b63201a618049be4be2a7435a31b55b5eb1c3674547a/charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:21b2899062867b0e1fde9b724f8aecb1af14f2778d69aacd1a5a1853a597a5db", size = 150091, upload-time = "2025-05-02T08:32:06.719Z" }, - { url = "https://files.pythonhosted.org/packages/1f/79/4b8da9f712bc079c0f16b6d67b099b0b8d808c2292c937f267d816ec5ecc/charset_normalizer-3.4.2-cp310-cp310-win32.whl", hash = "sha256:e8082b26888e2f8b36a042a58307d5b917ef2b1cacab921ad3323ef91901c71a", size = 98445, upload-time = "2025-05-02T08:32:08.66Z" }, - { url = "https://files.pythonhosted.org/packages/7d/d7/96970afb4fb66497a40761cdf7bd4f6fca0fc7bafde3a84f836c1f57a926/charset_normalizer-3.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:f69a27e45c43520f5487f27627059b64aaf160415589230992cec34c5e18a509", size = 105782, upload-time = "2025-05-02T08:32:10.46Z" }, - { url = "https://files.pythonhosted.org/packages/05/85/4c40d00dcc6284a1c1ad5de5e0996b06f39d8232f1031cd23c2f5c07ee86/charset_normalizer-3.4.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:be1e352acbe3c78727a16a455126d9ff83ea2dfdcbc83148d2982305a04714c2", size = 198794, upload-time = "2025-05-02T08:32:11.945Z" }, - { url = "https://files.pythonhosted.org/packages/41/d9/7a6c0b9db952598e97e93cbdfcb91bacd89b9b88c7c983250a77c008703c/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa88ca0b1932e93f2d961bf3addbb2db902198dca337d88c89e1559e066e7645", size = 142846, upload-time = "2025-05-02T08:32:13.946Z" }, - { url = "https://files.pythonhosted.org/packages/66/82/a37989cda2ace7e37f36c1a8ed16c58cf48965a79c2142713244bf945c89/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d524ba3f1581b35c03cb42beebab4a13e6cdad7b36246bd22541fa585a56cccd", size = 153350, upload-time = "2025-05-02T08:32:15.873Z" }, - { url = "https://files.pythonhosted.org/packages/df/68/a576b31b694d07b53807269d05ec3f6f1093e9545e8607121995ba7a8313/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28a1005facc94196e1fb3e82a3d442a9d9110b8434fc1ded7a24a2983c9888d8", size = 145657, upload-time = "2025-05-02T08:32:17.283Z" }, - { url = "https://files.pythonhosted.org/packages/92/9b/ad67f03d74554bed3aefd56fe836e1623a50780f7c998d00ca128924a499/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdb20a30fe1175ecabed17cbf7812f7b804b8a315a25f24678bcdf120a90077f", size = 147260, upload-time = "2025-05-02T08:32:18.807Z" }, - { url = "https://files.pythonhosted.org/packages/a6/e6/8aebae25e328160b20e31a7e9929b1578bbdc7f42e66f46595a432f8539e/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f5d9ed7f254402c9e7d35d2f5972c9bbea9040e99cd2861bd77dc68263277c7", size = 149164, upload-time = "2025-05-02T08:32:20.333Z" }, - { url = "https://files.pythonhosted.org/packages/8b/f2/b3c2f07dbcc248805f10e67a0262c93308cfa149a4cd3d1fe01f593e5fd2/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:efd387a49825780ff861998cd959767800d54f8308936b21025326de4b5a42b9", size = 144571, upload-time = "2025-05-02T08:32:21.86Z" }, - { url = "https://files.pythonhosted.org/packages/60/5b/c3f3a94bc345bc211622ea59b4bed9ae63c00920e2e8f11824aa5708e8b7/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f0aa37f3c979cf2546b73e8222bbfa3dc07a641585340179d768068e3455e544", size = 151952, upload-time = "2025-05-02T08:32:23.434Z" }, - { url = "https://files.pythonhosted.org/packages/e2/4d/ff460c8b474122334c2fa394a3f99a04cf11c646da895f81402ae54f5c42/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e70e990b2137b29dc5564715de1e12701815dacc1d056308e2b17e9095372a82", size = 155959, upload-time = "2025-05-02T08:32:24.993Z" }, - { url = "https://files.pythonhosted.org/packages/a2/2b/b964c6a2fda88611a1fe3d4c400d39c66a42d6c169c924818c848f922415/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0c8c57f84ccfc871a48a47321cfa49ae1df56cd1d965a09abe84066f6853b9c0", size = 153030, upload-time = "2025-05-02T08:32:26.435Z" }, - { url = "https://files.pythonhosted.org/packages/59/2e/d3b9811db26a5ebf444bc0fa4f4be5aa6d76fc6e1c0fd537b16c14e849b6/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6b66f92b17849b85cad91259efc341dce9c1af48e2173bf38a85c6329f1033e5", size = 148015, upload-time = "2025-05-02T08:32:28.376Z" }, - { url = "https://files.pythonhosted.org/packages/90/07/c5fd7c11eafd561bb51220d600a788f1c8d77c5eef37ee49454cc5c35575/charset_normalizer-3.4.2-cp311-cp311-win32.whl", hash = "sha256:daac4765328a919a805fa5e2720f3e94767abd632ae410a9062dff5412bae65a", size = 98106, upload-time = "2025-05-02T08:32:30.281Z" }, - { url = "https://files.pythonhosted.org/packages/a8/05/5e33dbef7e2f773d672b6d79f10ec633d4a71cd96db6673625838a4fd532/charset_normalizer-3.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53efc7c7cee4c1e70661e2e112ca46a575f90ed9ae3fef200f2a25e954f4b28", size = 105402, upload-time = "2025-05-02T08:32:32.191Z" }, - { url = "https://files.pythonhosted.org/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7", size = 199936, upload-time = "2025-05-02T08:32:33.712Z" }, - { url = "https://files.pythonhosted.org/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3", size = 143790, upload-time = "2025-05-02T08:32:35.768Z" }, - { url = "https://files.pythonhosted.org/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a", size = 153924, upload-time = "2025-05-02T08:32:37.284Z" }, - { url = "https://files.pythonhosted.org/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214", size = 146626, upload-time = "2025-05-02T08:32:38.803Z" }, - { url = "https://files.pythonhosted.org/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a", size = 148567, upload-time = "2025-05-02T08:32:40.251Z" }, - { url = "https://files.pythonhosted.org/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd", size = 150957, upload-time = "2025-05-02T08:32:41.705Z" }, - { url = "https://files.pythonhosted.org/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981", size = 145408, upload-time = "2025-05-02T08:32:43.709Z" }, - { url = "https://files.pythonhosted.org/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c", size = 153399, upload-time = "2025-05-02T08:32:46.197Z" }, - { url = "https://files.pythonhosted.org/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b", size = 156815, upload-time = "2025-05-02T08:32:48.105Z" }, - { url = "https://files.pythonhosted.org/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d", size = 154537, upload-time = "2025-05-02T08:32:49.719Z" }, - { url = "https://files.pythonhosted.org/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f", size = 149565, upload-time = "2025-05-02T08:32:51.404Z" }, - { url = "https://files.pythonhosted.org/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c", size = 98357, upload-time = "2025-05-02T08:32:53.079Z" }, - { url = "https://files.pythonhosted.org/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e", size = 105776, upload-time = "2025-05-02T08:32:54.573Z" }, - { url = "https://files.pythonhosted.org/packages/ea/12/a93df3366ed32db1d907d7593a94f1fe6293903e3e92967bebd6950ed12c/charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0", size = 199622, upload-time = "2025-05-02T08:32:56.363Z" }, - { url = "https://files.pythonhosted.org/packages/04/93/bf204e6f344c39d9937d3c13c8cd5bbfc266472e51fc8c07cb7f64fcd2de/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf", size = 143435, upload-time = "2025-05-02T08:32:58.551Z" }, - { url = "https://files.pythonhosted.org/packages/22/2a/ea8a2095b0bafa6c5b5a55ffdc2f924455233ee7b91c69b7edfcc9e02284/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e", size = 153653, upload-time = "2025-05-02T08:33:00.342Z" }, - { url = "https://files.pythonhosted.org/packages/b6/57/1b090ff183d13cef485dfbe272e2fe57622a76694061353c59da52c9a659/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1", size = 146231, upload-time = "2025-05-02T08:33:02.081Z" }, - { url = "https://files.pythonhosted.org/packages/e2/28/ffc026b26f441fc67bd21ab7f03b313ab3fe46714a14b516f931abe1a2d8/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c", size = 148243, upload-time = "2025-05-02T08:33:04.063Z" }, - { url = "https://files.pythonhosted.org/packages/c0/0f/9abe9bd191629c33e69e47c6ef45ef99773320e9ad8e9cb08b8ab4a8d4cb/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691", size = 150442, upload-time = "2025-05-02T08:33:06.418Z" }, - { url = "https://files.pythonhosted.org/packages/67/7c/a123bbcedca91d5916c056407f89a7f5e8fdfce12ba825d7d6b9954a1a3c/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0", size = 145147, upload-time = "2025-05-02T08:33:08.183Z" }, - { url = "https://files.pythonhosted.org/packages/ec/fe/1ac556fa4899d967b83e9893788e86b6af4d83e4726511eaaad035e36595/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b", size = 153057, upload-time = "2025-05-02T08:33:09.986Z" }, - { url = "https://files.pythonhosted.org/packages/2b/ff/acfc0b0a70b19e3e54febdd5301a98b72fa07635e56f24f60502e954c461/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff", size = 156454, upload-time = "2025-05-02T08:33:11.814Z" }, - { url = "https://files.pythonhosted.org/packages/92/08/95b458ce9c740d0645feb0e96cea1f5ec946ea9c580a94adfe0b617f3573/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b", size = 154174, upload-time = "2025-05-02T08:33:13.707Z" }, - { url = "https://files.pythonhosted.org/packages/78/be/8392efc43487ac051eee6c36d5fbd63032d78f7728cb37aebcc98191f1ff/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148", size = 149166, upload-time = "2025-05-02T08:33:15.458Z" }, - { url = "https://files.pythonhosted.org/packages/44/96/392abd49b094d30b91d9fbda6a69519e95802250b777841cf3bda8fe136c/charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7", size = 98064, upload-time = "2025-05-02T08:33:17.06Z" }, - { url = "https://files.pythonhosted.org/packages/e9/b0/0200da600134e001d91851ddc797809e2fe0ea72de90e09bec5a2fbdaccb/charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980", size = 105641, upload-time = "2025-05-02T08:33:18.753Z" }, - { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626, upload-time = "2025-05-02T08:34:40.053Z" }, +version = "3.4.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/83/2d/5fd176ceb9b2fc619e63405525573493ca23441330fcdaee6bef9460e924/charset_normalizer-3.4.3.tar.gz", hash = "sha256:6fce4b8500244f6fcb71465d4a4930d132ba9ab8e71a7859e6a5d59851068d14", size = 122371, upload-time = "2025-08-09T07:57:28.46Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d6/98/f3b8013223728a99b908c9344da3aa04ee6e3fa235f19409033eda92fb78/charset_normalizer-3.4.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fb7f67a1bfa6e40b438170ebdc8158b78dc465a5a67b6dde178a46987b244a72", size = 207695, upload-time = "2025-08-09T07:55:36.452Z" }, + { url = "https://files.pythonhosted.org/packages/21/40/5188be1e3118c82dcb7c2a5ba101b783822cfb413a0268ed3be0468532de/charset_normalizer-3.4.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cc9370a2da1ac13f0153780040f465839e6cccb4a1e44810124b4e22483c93fe", size = 147153, upload-time = "2025-08-09T07:55:38.467Z" }, + { url = "https://files.pythonhosted.org/packages/37/60/5d0d74bc1e1380f0b72c327948d9c2aca14b46a9efd87604e724260f384c/charset_normalizer-3.4.3-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:07a0eae9e2787b586e129fdcbe1af6997f8d0e5abaa0bc98c0e20e124d67e601", size = 160428, upload-time = "2025-08-09T07:55:40.072Z" }, + { url = "https://files.pythonhosted.org/packages/85/9a/d891f63722d9158688de58d050c59dc3da560ea7f04f4c53e769de5140f5/charset_normalizer-3.4.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:74d77e25adda8581ffc1c720f1c81ca082921329452eba58b16233ab1842141c", size = 157627, upload-time = "2025-08-09T07:55:41.706Z" }, + { url = "https://files.pythonhosted.org/packages/65/1a/7425c952944a6521a9cfa7e675343f83fd82085b8af2b1373a2409c683dc/charset_normalizer-3.4.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d0e909868420b7049dafd3a31d45125b31143eec59235311fc4c57ea26a4acd2", size = 152388, upload-time = "2025-08-09T07:55:43.262Z" }, + { url = "https://files.pythonhosted.org/packages/f0/c9/a2c9c2a355a8594ce2446085e2ec97fd44d323c684ff32042e2a6b718e1d/charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c6f162aabe9a91a309510d74eeb6507fab5fff92337a15acbe77753d88d9dcf0", size = 150077, upload-time = "2025-08-09T07:55:44.903Z" }, + { url = "https://files.pythonhosted.org/packages/3b/38/20a1f44e4851aa1c9105d6e7110c9d020e093dfa5836d712a5f074a12bf7/charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4ca4c094de7771a98d7fbd67d9e5dbf1eb73efa4f744a730437d8a3a5cf994f0", size = 161631, upload-time = "2025-08-09T07:55:46.346Z" }, + { url = "https://files.pythonhosted.org/packages/a4/fa/384d2c0f57edad03d7bec3ebefb462090d8905b4ff5a2d2525f3bb711fac/charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:02425242e96bcf29a49711b0ca9f37e451da7c70562bc10e8ed992a5a7a25cc0", size = 159210, upload-time = "2025-08-09T07:55:47.539Z" }, + { url = "https://files.pythonhosted.org/packages/33/9e/eca49d35867ca2db336b6ca27617deed4653b97ebf45dfc21311ce473c37/charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:78deba4d8f9590fe4dae384aeff04082510a709957e968753ff3c48399f6f92a", size = 153739, upload-time = "2025-08-09T07:55:48.744Z" }, + { url = "https://files.pythonhosted.org/packages/2a/91/26c3036e62dfe8de8061182d33be5025e2424002125c9500faff74a6735e/charset_normalizer-3.4.3-cp310-cp310-win32.whl", hash = "sha256:d79c198e27580c8e958906f803e63cddb77653731be08851c7df0b1a14a8fc0f", size = 99825, upload-time = "2025-08-09T07:55:50.305Z" }, + { url = "https://files.pythonhosted.org/packages/e2/c6/f05db471f81af1fa01839d44ae2a8bfeec8d2a8b4590f16c4e7393afd323/charset_normalizer-3.4.3-cp310-cp310-win_amd64.whl", hash = "sha256:c6e490913a46fa054e03699c70019ab869e990270597018cef1d8562132c2669", size = 107452, upload-time = "2025-08-09T07:55:51.461Z" }, + { url = "https://files.pythonhosted.org/packages/7f/b5/991245018615474a60965a7c9cd2b4efbaabd16d582a5547c47ee1c7730b/charset_normalizer-3.4.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:b256ee2e749283ef3ddcff51a675ff43798d92d746d1a6e4631bf8c707d22d0b", size = 204483, upload-time = "2025-08-09T07:55:53.12Z" }, + { url = "https://files.pythonhosted.org/packages/c7/2a/ae245c41c06299ec18262825c1569c5d3298fc920e4ddf56ab011b417efd/charset_normalizer-3.4.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:13faeacfe61784e2559e690fc53fa4c5ae97c6fcedb8eb6fb8d0a15b475d2c64", size = 145520, upload-time = "2025-08-09T07:55:54.712Z" }, + { url = "https://files.pythonhosted.org/packages/3a/a4/b3b6c76e7a635748c4421d2b92c7b8f90a432f98bda5082049af37ffc8e3/charset_normalizer-3.4.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:00237675befef519d9af72169d8604a067d92755e84fe76492fef5441db05b91", size = 158876, upload-time = "2025-08-09T07:55:56.024Z" }, + { url = "https://files.pythonhosted.org/packages/e2/e6/63bb0e10f90a8243c5def74b5b105b3bbbfb3e7bb753915fe333fb0c11ea/charset_normalizer-3.4.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:585f3b2a80fbd26b048a0be90c5aae8f06605d3c92615911c3a2b03a8a3b796f", size = 156083, upload-time = "2025-08-09T07:55:57.582Z" }, + { url = "https://files.pythonhosted.org/packages/87/df/b7737ff046c974b183ea9aa111b74185ac8c3a326c6262d413bd5a1b8c69/charset_normalizer-3.4.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e78314bdc32fa80696f72fa16dc61168fda4d6a0c014e0380f9d02f0e5d8a07", size = 150295, upload-time = "2025-08-09T07:55:59.147Z" }, + { url = "https://files.pythonhosted.org/packages/61/f1/190d9977e0084d3f1dc169acd060d479bbbc71b90bf3e7bf7b9927dec3eb/charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:96b2b3d1a83ad55310de8c7b4a2d04d9277d5591f40761274856635acc5fcb30", size = 148379, upload-time = "2025-08-09T07:56:00.364Z" }, + { url = "https://files.pythonhosted.org/packages/4c/92/27dbe365d34c68cfe0ca76f1edd70e8705d82b378cb54ebbaeabc2e3029d/charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:939578d9d8fd4299220161fdd76e86c6a251987476f5243e8864a7844476ba14", size = 160018, upload-time = "2025-08-09T07:56:01.678Z" }, + { url = "https://files.pythonhosted.org/packages/99/04/baae2a1ea1893a01635d475b9261c889a18fd48393634b6270827869fa34/charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:fd10de089bcdcd1be95a2f73dbe6254798ec1bda9f450d5828c96f93e2536b9c", size = 157430, upload-time = "2025-08-09T07:56:02.87Z" }, + { url = "https://files.pythonhosted.org/packages/2f/36/77da9c6a328c54d17b960c89eccacfab8271fdaaa228305330915b88afa9/charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1e8ac75d72fa3775e0b7cb7e4629cec13b7514d928d15ef8ea06bca03ef01cae", size = 151600, upload-time = "2025-08-09T07:56:04.089Z" }, + { url = "https://files.pythonhosted.org/packages/64/d4/9eb4ff2c167edbbf08cdd28e19078bf195762e9bd63371689cab5ecd3d0d/charset_normalizer-3.4.3-cp311-cp311-win32.whl", hash = "sha256:6cf8fd4c04756b6b60146d98cd8a77d0cdae0e1ca20329da2ac85eed779b6849", size = 99616, upload-time = "2025-08-09T07:56:05.658Z" }, + { url = "https://files.pythonhosted.org/packages/f4/9c/996a4a028222e7761a96634d1820de8a744ff4327a00ada9c8942033089b/charset_normalizer-3.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:31a9a6f775f9bcd865d88ee350f0ffb0e25936a7f930ca98995c05abf1faf21c", size = 107108, upload-time = "2025-08-09T07:56:07.176Z" }, + { url = "https://files.pythonhosted.org/packages/e9/5e/14c94999e418d9b87682734589404a25854d5f5d0408df68bc15b6ff54bb/charset_normalizer-3.4.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e28e334d3ff134e88989d90ba04b47d84382a828c061d0d1027b1b12a62b39b1", size = 205655, upload-time = "2025-08-09T07:56:08.475Z" }, + { url = "https://files.pythonhosted.org/packages/7d/a8/c6ec5d389672521f644505a257f50544c074cf5fc292d5390331cd6fc9c3/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0cacf8f7297b0c4fcb74227692ca46b4a5852f8f4f24b3c766dd94a1075c4884", size = 146223, upload-time = "2025-08-09T07:56:09.708Z" }, + { url = "https://files.pythonhosted.org/packages/fc/eb/a2ffb08547f4e1e5415fb69eb7db25932c52a52bed371429648db4d84fb1/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c6fd51128a41297f5409deab284fecbe5305ebd7e5a1f959bee1c054622b7018", size = 159366, upload-time = "2025-08-09T07:56:11.326Z" }, + { url = "https://files.pythonhosted.org/packages/82/10/0fd19f20c624b278dddaf83b8464dcddc2456cb4b02bb902a6da126b87a1/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3cfb2aad70f2c6debfbcb717f23b7eb55febc0bb23dcffc0f076009da10c6392", size = 157104, upload-time = "2025-08-09T07:56:13.014Z" }, + { url = "https://files.pythonhosted.org/packages/16/ab/0233c3231af734f5dfcf0844aa9582d5a1466c985bbed6cedab85af9bfe3/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1606f4a55c0fd363d754049cdf400175ee96c992b1f8018b993941f221221c5f", size = 151830, upload-time = "2025-08-09T07:56:14.428Z" }, + { url = "https://files.pythonhosted.org/packages/ae/02/e29e22b4e02839a0e4a06557b1999d0a47db3567e82989b5bb21f3fbbd9f/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:027b776c26d38b7f15b26a5da1044f376455fb3766df8fc38563b4efbc515154", size = 148854, upload-time = "2025-08-09T07:56:16.051Z" }, + { url = "https://files.pythonhosted.org/packages/05/6b/e2539a0a4be302b481e8cafb5af8792da8093b486885a1ae4d15d452bcec/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:42e5088973e56e31e4fa58eb6bd709e42fc03799c11c42929592889a2e54c491", size = 160670, upload-time = "2025-08-09T07:56:17.314Z" }, + { url = "https://files.pythonhosted.org/packages/31/e7/883ee5676a2ef217a40ce0bffcc3d0dfbf9e64cbcfbdf822c52981c3304b/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cc34f233c9e71701040d772aa7490318673aa7164a0efe3172b2981218c26d93", size = 158501, upload-time = "2025-08-09T07:56:18.641Z" }, + { url = "https://files.pythonhosted.org/packages/c1/35/6525b21aa0db614cf8b5792d232021dca3df7f90a1944db934efa5d20bb1/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:320e8e66157cc4e247d9ddca8e21f427efc7a04bbd0ac8a9faf56583fa543f9f", size = 153173, upload-time = "2025-08-09T07:56:20.289Z" }, + { url = "https://files.pythonhosted.org/packages/50/ee/f4704bad8201de513fdc8aac1cabc87e38c5818c93857140e06e772b5892/charset_normalizer-3.4.3-cp312-cp312-win32.whl", hash = "sha256:fb6fecfd65564f208cbf0fba07f107fb661bcd1a7c389edbced3f7a493f70e37", size = 99822, upload-time = "2025-08-09T07:56:21.551Z" }, + { url = "https://files.pythonhosted.org/packages/39/f5/3b3836ca6064d0992c58c7561c6b6eee1b3892e9665d650c803bd5614522/charset_normalizer-3.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:86df271bf921c2ee3818f0522e9a5b8092ca2ad8b065ece5d7d9d0e9f4849bcc", size = 107543, upload-time = "2025-08-09T07:56:23.115Z" }, + { url = "https://files.pythonhosted.org/packages/65/ca/2135ac97709b400c7654b4b764daf5c5567c2da45a30cdd20f9eefe2d658/charset_normalizer-3.4.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:14c2a87c65b351109f6abfc424cab3927b3bdece6f706e4d12faaf3d52ee5efe", size = 205326, upload-time = "2025-08-09T07:56:24.721Z" }, + { url = "https://files.pythonhosted.org/packages/71/11/98a04c3c97dd34e49c7d247083af03645ca3730809a5509443f3c37f7c99/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41d1fc408ff5fdfb910200ec0e74abc40387bccb3252f3f27c0676731df2b2c8", size = 146008, upload-time = "2025-08-09T07:56:26.004Z" }, + { url = "https://files.pythonhosted.org/packages/60/f5/4659a4cb3c4ec146bec80c32d8bb16033752574c20b1252ee842a95d1a1e/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1bb60174149316da1c35fa5233681f7c0f9f514509b8e399ab70fea5f17e45c9", size = 159196, upload-time = "2025-08-09T07:56:27.25Z" }, + { url = "https://files.pythonhosted.org/packages/86/9e/f552f7a00611f168b9a5865a1414179b2c6de8235a4fa40189f6f79a1753/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:30d006f98569de3459c2fc1f2acde170b7b2bd265dc1943e87e1a4efe1b67c31", size = 156819, upload-time = "2025-08-09T07:56:28.515Z" }, + { url = "https://files.pythonhosted.org/packages/7e/95/42aa2156235cbc8fa61208aded06ef46111c4d3f0de233107b3f38631803/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:416175faf02e4b0810f1f38bcb54682878a4af94059a1cd63b8747244420801f", size = 151350, upload-time = "2025-08-09T07:56:29.716Z" }, + { url = "https://files.pythonhosted.org/packages/c2/a9/3865b02c56f300a6f94fc631ef54f0a8a29da74fb45a773dfd3dcd380af7/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6aab0f181c486f973bc7262a97f5aca3ee7e1437011ef0c2ec04b5a11d16c927", size = 148644, upload-time = "2025-08-09T07:56:30.984Z" }, + { url = "https://files.pythonhosted.org/packages/77/d9/cbcf1a2a5c7d7856f11e7ac2d782aec12bdfea60d104e60e0aa1c97849dc/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabf8315679312cfa71302f9bd509ded4f2f263fb5b765cf1433b39106c3cc9", size = 160468, upload-time = "2025-08-09T07:56:32.252Z" }, + { url = "https://files.pythonhosted.org/packages/f6/42/6f45efee8697b89fda4d50580f292b8f7f9306cb2971d4b53f8914e4d890/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:bd28b817ea8c70215401f657edef3a8aa83c29d447fb0b622c35403780ba11d5", size = 158187, upload-time = "2025-08-09T07:56:33.481Z" }, + { url = "https://files.pythonhosted.org/packages/70/99/f1c3bdcfaa9c45b3ce96f70b14f070411366fa19549c1d4832c935d8e2c3/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:18343b2d246dc6761a249ba1fb13f9ee9a2bcd95decc767319506056ea4ad4dc", size = 152699, upload-time = "2025-08-09T07:56:34.739Z" }, + { url = "https://files.pythonhosted.org/packages/a3/ad/b0081f2f99a4b194bcbb1934ef3b12aa4d9702ced80a37026b7607c72e58/charset_normalizer-3.4.3-cp313-cp313-win32.whl", hash = "sha256:6fb70de56f1859a3f71261cbe41005f56a7842cc348d3aeb26237560bfa5e0ce", size = 99580, upload-time = "2025-08-09T07:56:35.981Z" }, + { url = "https://files.pythonhosted.org/packages/9a/8f/ae790790c7b64f925e5c953b924aaa42a243fb778fed9e41f147b2a5715a/charset_normalizer-3.4.3-cp313-cp313-win_amd64.whl", hash = "sha256:cf1ebb7d78e1ad8ec2a8c4732c7be2e736f6e5123a4146c5b89c9d1f585f8cef", size = 107366, upload-time = "2025-08-09T07:56:37.339Z" }, + { url = "https://files.pythonhosted.org/packages/8e/91/b5a06ad970ddc7a0e513112d40113e834638f4ca1120eb727a249fb2715e/charset_normalizer-3.4.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3cd35b7e8aedeb9e34c41385fda4f73ba609e561faedfae0a9e75e44ac558a15", size = 204342, upload-time = "2025-08-09T07:56:38.687Z" }, + { url = "https://files.pythonhosted.org/packages/ce/ec/1edc30a377f0a02689342f214455c3f6c2fbedd896a1d2f856c002fc3062/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b89bc04de1d83006373429975f8ef9e7932534b8cc9ca582e4db7d20d91816db", size = 145995, upload-time = "2025-08-09T07:56:40.048Z" }, + { url = "https://files.pythonhosted.org/packages/17/e5/5e67ab85e6d22b04641acb5399c8684f4d37caf7558a53859f0283a650e9/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2001a39612b241dae17b4687898843f254f8748b796a2e16f1051a17078d991d", size = 158640, upload-time = "2025-08-09T07:56:41.311Z" }, + { url = "https://files.pythonhosted.org/packages/f1/e5/38421987f6c697ee3722981289d554957c4be652f963d71c5e46a262e135/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8dcfc373f888e4fb39a7bc57e93e3b845e7f462dacc008d9749568b1c4ece096", size = 156636, upload-time = "2025-08-09T07:56:43.195Z" }, + { url = "https://files.pythonhosted.org/packages/a0/e4/5a075de8daa3ec0745a9a3b54467e0c2967daaaf2cec04c845f73493e9a1/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:18b97b8404387b96cdbd30ad660f6407799126d26a39ca65729162fd810a99aa", size = 150939, upload-time = "2025-08-09T07:56:44.819Z" }, + { url = "https://files.pythonhosted.org/packages/02/f7/3611b32318b30974131db62b4043f335861d4d9b49adc6d57c1149cc49d4/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ccf600859c183d70eb47e05a44cd80a4ce77394d1ac0f79dbd2dd90a69a3a049", size = 148580, upload-time = "2025-08-09T07:56:46.684Z" }, + { url = "https://files.pythonhosted.org/packages/7e/61/19b36f4bd67f2793ab6a99b979b4e4f3d8fc754cbdffb805335df4337126/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:53cd68b185d98dde4ad8990e56a58dea83a4162161b1ea9272e5c9182ce415e0", size = 159870, upload-time = "2025-08-09T07:56:47.941Z" }, + { url = "https://files.pythonhosted.org/packages/06/57/84722eefdd338c04cf3030ada66889298eaedf3e7a30a624201e0cbe424a/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:30a96e1e1f865f78b030d65241c1ee850cdf422d869e9028e2fc1d5e4db73b92", size = 157797, upload-time = "2025-08-09T07:56:49.756Z" }, + { url = "https://files.pythonhosted.org/packages/72/2a/aff5dd112b2f14bcc3462c312dce5445806bfc8ab3a7328555da95330e4b/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d716a916938e03231e86e43782ca7878fb602a125a91e7acb8b5112e2e96ac16", size = 152224, upload-time = "2025-08-09T07:56:51.369Z" }, + { url = "https://files.pythonhosted.org/packages/b7/8c/9839225320046ed279c6e839d51f028342eb77c91c89b8ef2549f951f3ec/charset_normalizer-3.4.3-cp314-cp314-win32.whl", hash = "sha256:c6dbd0ccdda3a2ba7c2ecd9d77b37f3b5831687d8dc1b6ca5f56a4880cc7b7ce", size = 100086, upload-time = "2025-08-09T07:56:52.722Z" }, + { url = "https://files.pythonhosted.org/packages/ee/7a/36fbcf646e41f710ce0a563c1c9a343c6edf9be80786edeb15b6f62e17db/charset_normalizer-3.4.3-cp314-cp314-win_amd64.whl", hash = "sha256:73dc19b562516fc9bcf6e5d6e596df0b4eb98d87e4f79f3ae71840e6ed21361c", size = 107400, upload-time = "2025-08-09T07:56:55.172Z" }, + { url = "https://files.pythonhosted.org/packages/8a/1f/f041989e93b001bc4e44bb1669ccdcf54d3f00e628229a85b08d330615c5/charset_normalizer-3.4.3-py3-none-any.whl", hash = "sha256:ce571ab16d890d23b5c278547ba694193a45011ff86a9162a71307ed9f86759a", size = 53175, upload-time = "2025-08-09T07:57:26.864Z" }, ] [[package]] name = "click" -version = "8.2.1" +version = "8.3.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342, upload-time = "2025-05-20T23:19:49.832Z" } +sdist = { url = "https://files.pythonhosted.org/packages/46/61/de6cd827efad202d7057d93e0fed9294b96952e188f7384832791c7b2254/click-8.3.0.tar.gz", hash = "sha256:e7b8232224eba16f4ebe410c25ced9f7875cb5f3263ffc93cc3e8da705e229c4", size = 276943, upload-time = "2025-09-18T17:32:23.696Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215, upload-time = "2025-05-20T23:19:47.796Z" }, + { url = "https://files.pythonhosted.org/packages/db/d3/9dcc0f5797f070ec8edf30fbadfb200e71d9db6b84d211e3b2085a7589a0/click-8.3.0-py3-none-any.whl", hash = "sha256:9b9f285302c6e3064f4330c05f05b81945b2a39544279343e6e7c5f27a9baddc", size = 107295, upload-time = "2025-09-18T17:32:22.42Z" }, ] [[package]] @@ -757,22 +937,22 @@ wheels = [ [[package]] name = "comm" -version = "0.2.2" +version = "0.2.3" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "traitlets" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/e9/a8/fb783cb0abe2b5fded9f55e5703015cdf1c9c85b3669087c538dd15a6a86/comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e", size = 6210, upload-time = "2024-03-12T16:53:41.133Z" } +sdist = { url = "https://files.pythonhosted.org/packages/4c/13/7d740c5849255756bc17888787313b61fd38a0a8304fc4f073dfc46122aa/comm-0.2.3.tar.gz", hash = "sha256:2dc8048c10962d55d7ad693be1e7045d891b7ce8d999c97963a5e3e99c055971", size = 6319, upload-time = "2025-07-25T14:02:04.452Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3", size = 7180, upload-time = "2024-03-12T16:53:39.226Z" }, + { url = "https://files.pythonhosted.org/packages/60/97/891a0971e1e4a8c5d2b20bbe0e524dc04548d2307fee33cdeba148fd4fc7/comm-0.2.3-py3-none-any.whl", hash = "sha256:c615d91d75f7f04f095b30d1c1711babd43bdc6419c1be9886a85f2f4e489417", size = 7294, upload-time = "2025-07-25T14:02:02.896Z" }, ] [[package]] name = "contourpy" version = "1.3.2" source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11'", +] dependencies = [ - { name = "numpy" }, + { name = "numpy", marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/66/54/eb9bfc647b19f2009dd5c7f5ec51c4e6ca831725f1aea7a993034f483147/contourpy-1.3.2.tar.gz", hash = "sha256:b6945942715a034c671b7fc54f9588126b0b8bf23db2696e3ca8328f3ff0ab54", size = 13466130, upload-time = "2025-04-15T17:47:53.79Z" } wheels = [ @@ -834,31 +1014,190 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/87/68/7f46fb537958e87427d98a4074bcde4b67a70b04900cfc5ce29bc2f556c1/contourpy-1.3.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:8c5acb8dddb0752bf252e01a3035b21443158910ac16a3b0d20e7fed7d534ce5", size = 221791, upload-time = "2025-04-15T17:45:24.794Z" }, ] +[[package]] +name = "contourpy" +version = "1.3.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14'", + "python_full_version >= '3.12' and python_full_version < '3.14'", + "python_full_version == '3.11.*'", +] +dependencies = [ + { name = "numpy", marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/58/01/1253e6698a07380cd31a736d248a3f2a50a7c88779a1813da27503cadc2a/contourpy-1.3.3.tar.gz", hash = "sha256:083e12155b210502d0bca491432bb04d56dc3432f95a979b429f2848c3dbe880", size = 13466174, upload-time = "2025-07-26T12:03:12.549Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/91/2e/c4390a31919d8a78b90e8ecf87cd4b4c4f05a5b48d05ec17db8e5404c6f4/contourpy-1.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:709a48ef9a690e1343202916450bc48b9e51c049b089c7f79a267b46cffcdaa1", size = 288773, upload-time = "2025-07-26T12:01:02.277Z" }, + { url = "https://files.pythonhosted.org/packages/0d/44/c4b0b6095fef4dc9c420e041799591e3b63e9619e3044f7f4f6c21c0ab24/contourpy-1.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:23416f38bfd74d5d28ab8429cc4d63fa67d5068bd711a85edb1c3fb0c3e2f381", size = 270149, upload-time = "2025-07-26T12:01:04.072Z" }, + { url = "https://files.pythonhosted.org/packages/30/2e/dd4ced42fefac8470661d7cb7e264808425e6c5d56d175291e93890cce09/contourpy-1.3.3-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:929ddf8c4c7f348e4c0a5a3a714b5c8542ffaa8c22954862a46ca1813b667ee7", size = 329222, upload-time = "2025-07-26T12:01:05.688Z" }, + { url = "https://files.pythonhosted.org/packages/f2/74/cc6ec2548e3d276c71389ea4802a774b7aa3558223b7bade3f25787fafc2/contourpy-1.3.3-cp311-cp311-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9e999574eddae35f1312c2b4b717b7885d4edd6cb46700e04f7f02db454e67c1", size = 377234, upload-time = "2025-07-26T12:01:07.054Z" }, + { url = "https://files.pythonhosted.org/packages/03/b3/64ef723029f917410f75c09da54254c5f9ea90ef89b143ccadb09df14c15/contourpy-1.3.3-cp311-cp311-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0bf67e0e3f482cb69779dd3061b534eb35ac9b17f163d851e2a547d56dba0a3a", size = 380555, upload-time = "2025-07-26T12:01:08.801Z" }, + { url = "https://files.pythonhosted.org/packages/5f/4b/6157f24ca425b89fe2eb7e7be642375711ab671135be21e6faa100f7448c/contourpy-1.3.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:51e79c1f7470158e838808d4a996fa9bac72c498e93d8ebe5119bc1e6becb0db", size = 355238, upload-time = "2025-07-26T12:01:10.319Z" }, + { url = "https://files.pythonhosted.org/packages/98/56/f914f0dd678480708a04cfd2206e7c382533249bc5001eb9f58aa693e200/contourpy-1.3.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:598c3aaece21c503615fd59c92a3598b428b2f01bfb4b8ca9c4edeecc2438620", size = 1326218, upload-time = "2025-07-26T12:01:12.659Z" }, + { url = "https://files.pythonhosted.org/packages/fb/d7/4a972334a0c971acd5172389671113ae82aa7527073980c38d5868ff1161/contourpy-1.3.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:322ab1c99b008dad206d406bb61d014cf0174df491ae9d9d0fac6a6fda4f977f", size = 1392867, upload-time = "2025-07-26T12:01:15.533Z" }, + { url = "https://files.pythonhosted.org/packages/75/3e/f2cc6cd56dc8cff46b1a56232eabc6feea52720083ea71ab15523daab796/contourpy-1.3.3-cp311-cp311-win32.whl", hash = "sha256:fd907ae12cd483cd83e414b12941c632a969171bf90fc937d0c9f268a31cafff", size = 183677, upload-time = "2025-07-26T12:01:17.088Z" }, + { url = "https://files.pythonhosted.org/packages/98/4b/9bd370b004b5c9d8045c6c33cf65bae018b27aca550a3f657cdc99acdbd8/contourpy-1.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:3519428f6be58431c56581f1694ba8e50626f2dd550af225f82fb5f5814d2a42", size = 225234, upload-time = "2025-07-26T12:01:18.256Z" }, + { url = "https://files.pythonhosted.org/packages/d9/b6/71771e02c2e004450c12b1120a5f488cad2e4d5b590b1af8bad060360fe4/contourpy-1.3.3-cp311-cp311-win_arm64.whl", hash = "sha256:15ff10bfada4bf92ec8b31c62bf7c1834c244019b4a33095a68000d7075df470", size = 193123, upload-time = "2025-07-26T12:01:19.848Z" }, + { url = "https://files.pythonhosted.org/packages/be/45/adfee365d9ea3d853550b2e735f9d66366701c65db7855cd07621732ccfc/contourpy-1.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b08a32ea2f8e42cf1d4be3169a98dd4be32bafe4f22b6c4cb4ba810fa9e5d2cb", size = 293419, upload-time = "2025-07-26T12:01:21.16Z" }, + { url = "https://files.pythonhosted.org/packages/53/3e/405b59cfa13021a56bba395a6b3aca8cec012b45bf177b0eaf7a202cde2c/contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:556dba8fb6f5d8742f2923fe9457dbdd51e1049c4a43fd3986a0b14a1d815fc6", size = 273979, upload-time = "2025-07-26T12:01:22.448Z" }, + { url = "https://files.pythonhosted.org/packages/d4/1c/a12359b9b2ca3a845e8f7f9ac08bdf776114eb931392fcad91743e2ea17b/contourpy-1.3.3-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92d9abc807cf7d0e047b95ca5d957cf4792fcd04e920ca70d48add15c1a90ea7", size = 332653, upload-time = "2025-07-26T12:01:24.155Z" }, + { url = "https://files.pythonhosted.org/packages/63/12/897aeebfb475b7748ea67b61e045accdfcf0d971f8a588b67108ed7f5512/contourpy-1.3.3-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b2e8faa0ed68cb29af51edd8e24798bb661eac3bd9f65420c1887b6ca89987c8", size = 379536, upload-time = "2025-07-26T12:01:25.91Z" }, + { url = "https://files.pythonhosted.org/packages/43/8a/a8c584b82deb248930ce069e71576fc09bd7174bbd35183b7943fb1064fd/contourpy-1.3.3-cp312-cp312-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:626d60935cf668e70a5ce6ff184fd713e9683fb458898e4249b63be9e28286ea", size = 384397, upload-time = "2025-07-26T12:01:27.152Z" }, + { url = "https://files.pythonhosted.org/packages/cc/8f/ec6289987824b29529d0dfda0d74a07cec60e54b9c92f3c9da4c0ac732de/contourpy-1.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4d00e655fcef08aba35ec9610536bfe90267d7ab5ba944f7032549c55a146da1", size = 362601, upload-time = "2025-07-26T12:01:28.808Z" }, + { url = "https://files.pythonhosted.org/packages/05/0a/a3fe3be3ee2dceb3e615ebb4df97ae6f3828aa915d3e10549ce016302bd1/contourpy-1.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:451e71b5a7d597379ef572de31eeb909a87246974d960049a9848c3bc6c41bf7", size = 1331288, upload-time = "2025-07-26T12:01:31.198Z" }, + { url = "https://files.pythonhosted.org/packages/33/1d/acad9bd4e97f13f3e2b18a3977fe1b4a37ecf3d38d815333980c6c72e963/contourpy-1.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:459c1f020cd59fcfe6650180678a9993932d80d44ccde1fa1868977438f0b411", size = 1403386, upload-time = "2025-07-26T12:01:33.947Z" }, + { url = "https://files.pythonhosted.org/packages/cf/8f/5847f44a7fddf859704217a99a23a4f6417b10e5ab1256a179264561540e/contourpy-1.3.3-cp312-cp312-win32.whl", hash = "sha256:023b44101dfe49d7d53932be418477dba359649246075c996866106da069af69", size = 185018, upload-time = "2025-07-26T12:01:35.64Z" }, + { url = "https://files.pythonhosted.org/packages/19/e8/6026ed58a64563186a9ee3f29f41261fd1828f527dd93d33b60feca63352/contourpy-1.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:8153b8bfc11e1e4d75bcb0bff1db232f9e10b274e0929de9d608027e0d34ff8b", size = 226567, upload-time = "2025-07-26T12:01:36.804Z" }, + { url = "https://files.pythonhosted.org/packages/d1/e2/f05240d2c39a1ed228d8328a78b6f44cd695f7ef47beb3e684cf93604f86/contourpy-1.3.3-cp312-cp312-win_arm64.whl", hash = "sha256:07ce5ed73ecdc4a03ffe3e1b3e3c1166db35ae7584be76f65dbbe28a7791b0cc", size = 193655, upload-time = "2025-07-26T12:01:37.999Z" }, + { url = "https://files.pythonhosted.org/packages/68/35/0167aad910bbdb9599272bd96d01a9ec6852f36b9455cf2ca67bd4cc2d23/contourpy-1.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:177fb367556747a686509d6fef71d221a4b198a3905fe824430e5ea0fda54eb5", size = 293257, upload-time = "2025-07-26T12:01:39.367Z" }, + { url = "https://files.pythonhosted.org/packages/96/e4/7adcd9c8362745b2210728f209bfbcf7d91ba868a2c5f40d8b58f54c509b/contourpy-1.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d002b6f00d73d69333dac9d0b8d5e84d9724ff9ef044fd63c5986e62b7c9e1b1", size = 274034, upload-time = "2025-07-26T12:01:40.645Z" }, + { url = "https://files.pythonhosted.org/packages/73/23/90e31ceeed1de63058a02cb04b12f2de4b40e3bef5e082a7c18d9c8ae281/contourpy-1.3.3-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:348ac1f5d4f1d66d3322420f01d42e43122f43616e0f194fc1c9f5d830c5b286", size = 334672, upload-time = "2025-07-26T12:01:41.942Z" }, + { url = "https://files.pythonhosted.org/packages/ed/93/b43d8acbe67392e659e1d984700e79eb67e2acb2bd7f62012b583a7f1b55/contourpy-1.3.3-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:655456777ff65c2c548b7c454af9c6f33f16c8884f11083244b5819cc214f1b5", size = 381234, upload-time = "2025-07-26T12:01:43.499Z" }, + { url = "https://files.pythonhosted.org/packages/46/3b/bec82a3ea06f66711520f75a40c8fc0b113b2a75edb36aa633eb11c4f50f/contourpy-1.3.3-cp313-cp313-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:644a6853d15b2512d67881586bd03f462c7ab755db95f16f14d7e238f2852c67", size = 385169, upload-time = "2025-07-26T12:01:45.219Z" }, + { url = "https://files.pythonhosted.org/packages/4b/32/e0f13a1c5b0f8572d0ec6ae2f6c677b7991fafd95da523159c19eff0696a/contourpy-1.3.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4debd64f124ca62069f313a9cb86656ff087786016d76927ae2cf37846b006c9", size = 362859, upload-time = "2025-07-26T12:01:46.519Z" }, + { url = "https://files.pythonhosted.org/packages/33/71/e2a7945b7de4e58af42d708a219f3b2f4cff7386e6b6ab0a0fa0033c49a9/contourpy-1.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a15459b0f4615b00bbd1e91f1b9e19b7e63aea7483d03d804186f278c0af2659", size = 1332062, upload-time = "2025-07-26T12:01:48.964Z" }, + { url = "https://files.pythonhosted.org/packages/12/fc/4e87ac754220ccc0e807284f88e943d6d43b43843614f0a8afa469801db0/contourpy-1.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ca0fdcd73925568ca027e0b17ab07aad764be4706d0a925b89227e447d9737b7", size = 1403932, upload-time = "2025-07-26T12:01:51.979Z" }, + { url = "https://files.pythonhosted.org/packages/a6/2e/adc197a37443f934594112222ac1aa7dc9a98faf9c3842884df9a9d8751d/contourpy-1.3.3-cp313-cp313-win32.whl", hash = "sha256:b20c7c9a3bf701366556e1b1984ed2d0cedf999903c51311417cf5f591d8c78d", size = 185024, upload-time = "2025-07-26T12:01:53.245Z" }, + { url = "https://files.pythonhosted.org/packages/18/0b/0098c214843213759692cc638fce7de5c289200a830e5035d1791d7a2338/contourpy-1.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:1cadd8b8969f060ba45ed7c1b714fe69185812ab43bd6b86a9123fe8f99c3263", size = 226578, upload-time = "2025-07-26T12:01:54.422Z" }, + { url = "https://files.pythonhosted.org/packages/8a/9a/2f6024a0c5995243cd63afdeb3651c984f0d2bc727fd98066d40e141ad73/contourpy-1.3.3-cp313-cp313-win_arm64.whl", hash = "sha256:fd914713266421b7536de2bfa8181aa8c699432b6763a0ea64195ebe28bff6a9", size = 193524, upload-time = "2025-07-26T12:01:55.73Z" }, + { url = "https://files.pythonhosted.org/packages/c0/b3/f8a1a86bd3298513f500e5b1f5fd92b69896449f6cab6a146a5d52715479/contourpy-1.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:88df9880d507169449d434c293467418b9f6cbe82edd19284aa0409e7fdb933d", size = 306730, upload-time = "2025-07-26T12:01:57.051Z" }, + { url = "https://files.pythonhosted.org/packages/3f/11/4780db94ae62fc0c2053909b65dc3246bd7cecfc4f8a20d957ad43aa4ad8/contourpy-1.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:d06bb1f751ba5d417047db62bca3c8fde202b8c11fb50742ab3ab962c81e8216", size = 287897, upload-time = "2025-07-26T12:01:58.663Z" }, + { url = "https://files.pythonhosted.org/packages/ae/15/e59f5f3ffdd6f3d4daa3e47114c53daabcb18574a26c21f03dc9e4e42ff0/contourpy-1.3.3-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e4e6b05a45525357e382909a4c1600444e2a45b4795163d3b22669285591c1ae", size = 326751, upload-time = "2025-07-26T12:02:00.343Z" }, + { url = "https://files.pythonhosted.org/packages/0f/81/03b45cfad088e4770b1dcf72ea78d3802d04200009fb364d18a493857210/contourpy-1.3.3-cp313-cp313t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ab3074b48c4e2cf1a960e6bbeb7f04566bf36b1861d5c9d4d8ac04b82e38ba20", size = 375486, upload-time = "2025-07-26T12:02:02.128Z" }, + { url = "https://files.pythonhosted.org/packages/0c/ba/49923366492ffbdd4486e970d421b289a670ae8cf539c1ea9a09822b371a/contourpy-1.3.3-cp313-cp313t-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6c3d53c796f8647d6deb1abe867daeb66dcc8a97e8455efa729516b997b8ed99", size = 388106, upload-time = "2025-07-26T12:02:03.615Z" }, + { url = "https://files.pythonhosted.org/packages/9f/52/5b00ea89525f8f143651f9f03a0df371d3cbd2fccd21ca9b768c7a6500c2/contourpy-1.3.3-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:50ed930df7289ff2a8d7afeb9603f8289e5704755c7e5c3bbd929c90c817164b", size = 352548, upload-time = "2025-07-26T12:02:05.165Z" }, + { url = "https://files.pythonhosted.org/packages/32/1d/a209ec1a3a3452d490f6b14dd92e72280c99ae3d1e73da74f8277d4ee08f/contourpy-1.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4feffb6537d64b84877da813a5c30f1422ea5739566abf0bd18065ac040e120a", size = 1322297, upload-time = "2025-07-26T12:02:07.379Z" }, + { url = "https://files.pythonhosted.org/packages/bc/9e/46f0e8ebdd884ca0e8877e46a3f4e633f6c9c8c4f3f6e72be3fe075994aa/contourpy-1.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:2b7e9480ffe2b0cd2e787e4df64270e3a0440d9db8dc823312e2c940c167df7e", size = 1391023, upload-time = "2025-07-26T12:02:10.171Z" }, + { url = "https://files.pythonhosted.org/packages/b9/70/f308384a3ae9cd2209e0849f33c913f658d3326900d0ff5d378d6a1422d2/contourpy-1.3.3-cp313-cp313t-win32.whl", hash = "sha256:283edd842a01e3dcd435b1c5116798d661378d83d36d337b8dde1d16a5fc9ba3", size = 196157, upload-time = "2025-07-26T12:02:11.488Z" }, + { url = "https://files.pythonhosted.org/packages/b2/dd/880f890a6663b84d9e34a6f88cded89d78f0091e0045a284427cb6b18521/contourpy-1.3.3-cp313-cp313t-win_amd64.whl", hash = "sha256:87acf5963fc2b34825e5b6b048f40e3635dd547f590b04d2ab317c2619ef7ae8", size = 240570, upload-time = "2025-07-26T12:02:12.754Z" }, + { url = "https://files.pythonhosted.org/packages/80/99/2adc7d8ffead633234817ef8e9a87115c8a11927a94478f6bb3d3f4d4f7d/contourpy-1.3.3-cp313-cp313t-win_arm64.whl", hash = "sha256:3c30273eb2a55024ff31ba7d052dde990d7d8e5450f4bbb6e913558b3d6c2301", size = 199713, upload-time = "2025-07-26T12:02:14.4Z" }, + { url = "https://files.pythonhosted.org/packages/72/8b/4546f3ab60f78c514ffb7d01a0bd743f90de36f0019d1be84d0a708a580a/contourpy-1.3.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fde6c716d51c04b1c25d0b90364d0be954624a0ee9d60e23e850e8d48353d07a", size = 292189, upload-time = "2025-07-26T12:02:16.095Z" }, + { url = "https://files.pythonhosted.org/packages/fd/e1/3542a9cb596cadd76fcef413f19c79216e002623158befe6daa03dbfa88c/contourpy-1.3.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:cbedb772ed74ff5be440fa8eee9bd49f64f6e3fc09436d9c7d8f1c287b121d77", size = 273251, upload-time = "2025-07-26T12:02:17.524Z" }, + { url = "https://files.pythonhosted.org/packages/b1/71/f93e1e9471d189f79d0ce2497007731c1e6bf9ef6d1d61b911430c3db4e5/contourpy-1.3.3-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:22e9b1bd7a9b1d652cd77388465dc358dafcd2e217d35552424aa4f996f524f5", size = 335810, upload-time = "2025-07-26T12:02:18.9Z" }, + { url = "https://files.pythonhosted.org/packages/91/f9/e35f4c1c93f9275d4e38681a80506b5510e9327350c51f8d4a5a724d178c/contourpy-1.3.3-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a22738912262aa3e254e4f3cb079a95a67132fc5a063890e224393596902f5a4", size = 382871, upload-time = "2025-07-26T12:02:20.418Z" }, + { url = "https://files.pythonhosted.org/packages/b5/71/47b512f936f66a0a900d81c396a7e60d73419868fba959c61efed7a8ab46/contourpy-1.3.3-cp314-cp314-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:afe5a512f31ee6bd7d0dda52ec9864c984ca3d66664444f2d72e0dc4eb832e36", size = 386264, upload-time = "2025-07-26T12:02:21.916Z" }, + { url = "https://files.pythonhosted.org/packages/04/5f/9ff93450ba96b09c7c2b3f81c94de31c89f92292f1380261bd7195bea4ea/contourpy-1.3.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f64836de09927cba6f79dcd00fdd7d5329f3fccc633468507079c829ca4db4e3", size = 363819, upload-time = "2025-07-26T12:02:23.759Z" }, + { url = "https://files.pythonhosted.org/packages/3e/a6/0b185d4cc480ee494945cde102cb0149ae830b5fa17bf855b95f2e70ad13/contourpy-1.3.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1fd43c3be4c8e5fd6e4f2baeae35ae18176cf2e5cced681cca908addf1cdd53b", size = 1333650, upload-time = "2025-07-26T12:02:26.181Z" }, + { url = "https://files.pythonhosted.org/packages/43/d7/afdc95580ca56f30fbcd3060250f66cedbde69b4547028863abd8aa3b47e/contourpy-1.3.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:6afc576f7b33cf00996e5c1102dc2a8f7cc89e39c0b55df93a0b78c1bd992b36", size = 1404833, upload-time = "2025-07-26T12:02:28.782Z" }, + { url = "https://files.pythonhosted.org/packages/e2/e2/366af18a6d386f41132a48f033cbd2102e9b0cf6345d35ff0826cd984566/contourpy-1.3.3-cp314-cp314-win32.whl", hash = "sha256:66c8a43a4f7b8df8b71ee1840e4211a3c8d93b214b213f590e18a1beca458f7d", size = 189692, upload-time = "2025-07-26T12:02:30.128Z" }, + { url = "https://files.pythonhosted.org/packages/7d/c2/57f54b03d0f22d4044b8afb9ca0e184f8b1afd57b4f735c2fa70883dc601/contourpy-1.3.3-cp314-cp314-win_amd64.whl", hash = "sha256:cf9022ef053f2694e31d630feaacb21ea24224be1c3ad0520b13d844274614fd", size = 232424, upload-time = "2025-07-26T12:02:31.395Z" }, + { url = "https://files.pythonhosted.org/packages/18/79/a9416650df9b525737ab521aa181ccc42d56016d2123ddcb7b58e926a42c/contourpy-1.3.3-cp314-cp314-win_arm64.whl", hash = "sha256:95b181891b4c71de4bb404c6621e7e2390745f887f2a026b2d99e92c17892339", size = 198300, upload-time = "2025-07-26T12:02:32.956Z" }, + { url = "https://files.pythonhosted.org/packages/1f/42/38c159a7d0f2b7b9c04c64ab317042bb6952b713ba875c1681529a2932fe/contourpy-1.3.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:33c82d0138c0a062380332c861387650c82e4cf1747aaa6938b9b6516762e772", size = 306769, upload-time = "2025-07-26T12:02:34.2Z" }, + { url = "https://files.pythonhosted.org/packages/c3/6c/26a8205f24bca10974e77460de68d3d7c63e282e23782f1239f226fcae6f/contourpy-1.3.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ea37e7b45949df430fe649e5de8351c423430046a2af20b1c1961cae3afcda77", size = 287892, upload-time = "2025-07-26T12:02:35.807Z" }, + { url = "https://files.pythonhosted.org/packages/66/06/8a475c8ab718ebfd7925661747dbb3c3ee9c82ac834ccb3570be49d129f4/contourpy-1.3.3-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d304906ecc71672e9c89e87c4675dc5c2645e1f4269a5063b99b0bb29f232d13", size = 326748, upload-time = "2025-07-26T12:02:37.193Z" }, + { url = "https://files.pythonhosted.org/packages/b4/a3/c5ca9f010a44c223f098fccd8b158bb1cb287378a31ac141f04730dc49be/contourpy-1.3.3-cp314-cp314t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ca658cd1a680a5c9ea96dc61cdbae1e85c8f25849843aa799dfd3cb370ad4fbe", size = 375554, upload-time = "2025-07-26T12:02:38.894Z" }, + { url = "https://files.pythonhosted.org/packages/80/5b/68bd33ae63fac658a4145088c1e894405e07584a316738710b636c6d0333/contourpy-1.3.3-cp314-cp314t-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ab2fd90904c503739a75b7c8c5c01160130ba67944a7b77bbf36ef8054576e7f", size = 388118, upload-time = "2025-07-26T12:02:40.642Z" }, + { url = "https://files.pythonhosted.org/packages/40/52/4c285a6435940ae25d7410a6c36bda5145839bc3f0beb20c707cda18b9d2/contourpy-1.3.3-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7301b89040075c30e5768810bc96a8e8d78085b47d8be6e4c3f5a0b4ed478a0", size = 352555, upload-time = "2025-07-26T12:02:42.25Z" }, + { url = "https://files.pythonhosted.org/packages/24/ee/3e81e1dd174f5c7fefe50e85d0892de05ca4e26ef1c9a59c2a57e43b865a/contourpy-1.3.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:2a2a8b627d5cc6b7c41a4beff6c5ad5eb848c88255fda4a8745f7e901b32d8e4", size = 1322295, upload-time = "2025-07-26T12:02:44.668Z" }, + { url = "https://files.pythonhosted.org/packages/3c/b2/6d913d4d04e14379de429057cd169e5e00f6c2af3bb13e1710bcbdb5da12/contourpy-1.3.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:fd6ec6be509c787f1caf6b247f0b1ca598bef13f4ddeaa126b7658215529ba0f", size = 1391027, upload-time = "2025-07-26T12:02:47.09Z" }, + { url = "https://files.pythonhosted.org/packages/93/8a/68a4ec5c55a2971213d29a9374913f7e9f18581945a7a31d1a39b5d2dfe5/contourpy-1.3.3-cp314-cp314t-win32.whl", hash = "sha256:e74a9a0f5e3fff48fb5a7f2fd2b9b70a3fe014a67522f79b7cca4c0c7e43c9ae", size = 202428, upload-time = "2025-07-26T12:02:48.691Z" }, + { url = "https://files.pythonhosted.org/packages/fa/96/fd9f641ffedc4fa3ace923af73b9d07e869496c9cc7a459103e6e978992f/contourpy-1.3.3-cp314-cp314t-win_amd64.whl", hash = "sha256:13b68d6a62db8eafaebb8039218921399baf6e47bf85006fd8529f2a08ef33fc", size = 250331, upload-time = "2025-07-26T12:02:50.137Z" }, + { url = "https://files.pythonhosted.org/packages/ae/8c/469afb6465b853afff216f9528ffda78a915ff880ed58813ba4faf4ba0b6/contourpy-1.3.3-cp314-cp314t-win_arm64.whl", hash = "sha256:b7448cb5a725bb1e35ce88771b86fba35ef418952474492cf7c764059933ff8b", size = 203831, upload-time = "2025-07-26T12:02:51.449Z" }, + { url = "https://files.pythonhosted.org/packages/a5/29/8dcfe16f0107943fa92388c23f6e05cff0ba58058c4c95b00280d4c75a14/contourpy-1.3.3-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cd5dfcaeb10f7b7f9dc8941717c6c2ade08f587be2226222c12b25f0483ed497", size = 278809, upload-time = "2025-07-26T12:02:52.74Z" }, + { url = "https://files.pythonhosted.org/packages/85/a9/8b37ef4f7dafeb335daee3c8254645ef5725be4d9c6aa70b50ec46ef2f7e/contourpy-1.3.3-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:0c1fc238306b35f246d61a1d416a627348b5cf0648648a031e14bb8705fcdfe8", size = 261593, upload-time = "2025-07-26T12:02:54.037Z" }, + { url = "https://files.pythonhosted.org/packages/0a/59/ebfb8c677c75605cc27f7122c90313fd2f375ff3c8d19a1694bda74aaa63/contourpy-1.3.3-pp311-pypy311_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:70f9aad7de812d6541d29d2bbf8feb22ff7e1c299523db288004e3157ff4674e", size = 302202, upload-time = "2025-07-26T12:02:55.947Z" }, + { url = "https://files.pythonhosted.org/packages/3c/37/21972a15834d90bfbfb009b9d004779bd5a07a0ec0234e5ba8f64d5736f4/contourpy-1.3.3-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5ed3657edf08512fc3fe81b510e35c2012fbd3081d2e26160f27ca28affec989", size = 329207, upload-time = "2025-07-26T12:02:57.468Z" }, + { url = "https://files.pythonhosted.org/packages/0c/58/bd257695f39d05594ca4ad60df5bcb7e32247f9951fd09a9b8edb82d1daa/contourpy-1.3.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:3d1a3799d62d45c18bafd41c5fa05120b96a28079f2393af559b843d1a966a77", size = 225315, upload-time = "2025-07-26T12:02:58.801Z" }, +] + [[package]] name = "coverage" -version = "6.5.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5c/66/38d1870cb7cf62da49add1d6803fdbcdef632b2808b5c80bcac35b7634d8/coverage-6.5.0.tar.gz", hash = "sha256:f642e90754ee3e06b0e7e51bce3379590e76b7f76b708e1a71ff043f87025c84", size = 775224, upload-time = "2022-09-29T20:05:58.509Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c4/8d/5ec7d08f4601d2d792563fe31db5e9322c306848fec1e65ec8885927f739/coverage-6.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ef8674b0ee8cc11e2d574e3e2998aea5df5ab242e012286824ea3c6970580e53", size = 185264, upload-time = "2022-09-29T20:04:39.481Z" }, - { url = "https://files.pythonhosted.org/packages/89/a2/cbf599e50bb4be416e0408c4cf523c354c51d7da39935461a9687e039481/coverage-6.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:784f53ebc9f3fd0e2a3f6a78b2be1bd1f5575d7863e10c6e12504f240fd06660", size = 185482, upload-time = "2022-09-29T20:04:41.703Z" }, - { url = "https://files.pythonhosted.org/packages/15/b0/3639d84ee8a900da0cf6450ab46e22517e4688b6cec0ba8ab6f8166103a2/coverage-6.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4a5be1748d538a710f87542f22c2cad22f80545a847ad91ce45e77417293eb4", size = 214083, upload-time = "2022-09-29T20:04:43.294Z" }, - { url = "https://files.pythonhosted.org/packages/13/f3/c6025ba30f2ce21d20d5332c3819880fe8afdfc008c2e2f9c075c7b67543/coverage-6.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:83516205e254a0cb77d2d7bb3632ee019d93d9f4005de31dca0a8c3667d5bc04", size = 212396, upload-time = "2022-09-29T20:04:44.809Z" }, - { url = "https://files.pythonhosted.org/packages/3c/7d/d5211ea782b193ab8064b06dc0cc042cf1a4ca9c93a530071459172c550f/coverage-6.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af4fffaffc4067232253715065e30c5a7ec6faac36f8fc8d6f64263b15f74db0", size = 213270, upload-time = "2022-09-29T20:04:46.291Z" }, - { url = "https://files.pythonhosted.org/packages/10/9e/68e384940179713640743a010ac7f7c813d1087c8730a9c0bdfa73bdffd7/coverage-6.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:97117225cdd992a9c2a5515db1f66b59db634f59d0679ca1fa3fe8da32749cae", size = 219188, upload-time = "2022-09-29T20:04:47.728Z" }, - { url = "https://files.pythonhosted.org/packages/2f/8b/ca3fe3cfbd66d63181f6e6a06b8b494bb327ba8222d2fa628b392b9ad08a/coverage-6.5.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a1170fa54185845505fbfa672f1c1ab175446c887cce8212c44149581cf2d466", size = 217430, upload-time = "2022-09-29T20:04:49.098Z" }, - { url = "https://files.pythonhosted.org/packages/c0/18/2a0a9b3c29376ce04ceb7ca2948559dad76409a2c9b3f664756581101e16/coverage-6.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:11b990d520ea75e7ee8dcab5bc908072aaada194a794db9f6d7d5cfd19661e5a", size = 218646, upload-time = "2022-09-29T20:04:50.582Z" }, - { url = "https://files.pythonhosted.org/packages/11/9e/7afba355bdabc550b3b2669e3432e71aec87d79400372d7686c09aab0acf/coverage-6.5.0-cp310-cp310-win32.whl", hash = "sha256:5dbec3b9095749390c09ab7c89d314727f18800060d8d24e87f01fb9cfb40b32", size = 187602, upload-time = "2022-09-29T20:04:52.509Z" }, - { url = "https://files.pythonhosted.org/packages/ae/a3/f45cb5d32de0751863945d22083c15eb8854bb53681b2e792f2066c629b9/coverage-6.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:59f53f1dc5b656cafb1badd0feb428c1e7bc19b867479ff72f7a9dd9b479f10e", size = 188510, upload-time = "2022-09-29T20:04:54.421Z" }, - { url = "https://files.pythonhosted.org/packages/50/cf/455930004231fa87efe8be06d13512f34e070ddfee8b8bf5a050cdc47ab3/coverage-6.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4a5375e28c5191ac38cca59b38edd33ef4cc914732c916f2929029b4bfb50795", size = 185433, upload-time = "2022-09-29T20:04:55.856Z" }, - { url = "https://files.pythonhosted.org/packages/36/f3/5cbd79cf4cd059c80b59104aca33b8d05af4ad5bf5b1547645ecee716378/coverage-6.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4ed2820d919351f4167e52425e096af41bfabacb1857186c1ea32ff9983ed75", size = 217736, upload-time = "2022-09-29T20:04:57.242Z" }, - { url = "https://files.pythonhosted.org/packages/89/58/5ec19b43a6511288511f64fc4763d95af8403f5926e7e4556e6b29b03a26/coverage-6.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33a7da4376d5977fbf0a8ed91c4dffaaa8dbf0ddbf4c8eea500a2486d8bc4d7b", size = 215313, upload-time = "2022-09-29T20:04:58.661Z" }, - { url = "https://files.pythonhosted.org/packages/6a/63/8e82513b7e4a1b8d887b4e85c1c2b6c9b754a581b187c0b084f3330ac479/coverage-6.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8fb6cf131ac4070c9c5a3e21de0f7dc5a0fbe8bc77c9456ced896c12fcdad91", size = 217115, upload-time = "2022-09-29T20:05:00.194Z" }, - { url = "https://files.pythonhosted.org/packages/ac/bc/c9d4fd6b3494d2cc1e26f4b98eb19206b92a59094617ad02d5689ac9d3c4/coverage-6.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a6b7d95969b8845250586f269e81e5dfdd8ff828ddeb8567a4a2eaa7313460c4", size = 226072, upload-time = "2022-09-29T20:05:01.635Z" }, - { url = "https://files.pythonhosted.org/packages/78/98/253ce0cfcc3b352d3072940940ed44a035614f2abe781477f77038d21d9f/coverage-6.5.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1ef221513e6f68b69ee9e159506d583d31aa3567e0ae84eaad9d6ec1107dddaa", size = 224486, upload-time = "2022-09-29T20:05:03.158Z" }, - { url = "https://files.pythonhosted.org/packages/4b/66/6e588f5dfc93ccedd06d6785c8143f17bb92b89247d50128d8789e9588d0/coverage-6.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cca4435eebea7962a52bdb216dec27215d0df64cf27fc1dd538415f5d2b9da6b", size = 225537, upload-time = "2022-09-29T20:05:04.646Z" }, - { url = "https://files.pythonhosted.org/packages/ff/27/339089b558672f04e62d0cd2d49b9280270bad3bc95de24e7eb03deb4638/coverage-6.5.0-cp311-cp311-win32.whl", hash = "sha256:98e8a10b7a314f454d9eff4216a9a94d143a7ee65018dd12442e898ee2310578", size = 187586, upload-time = "2022-09-29T20:05:06.22Z" }, - { url = "https://files.pythonhosted.org/packages/e6/24/7fe8ededb4060dd8c3f1d86cb624fcb3452f66fbef5051ed7fab126c5c0c/coverage-6.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:bc8ef5e043a2af066fa8cbfc6e708d58017024dc4345a1f9757b329a249f041b", size = 188604, upload-time = "2022-09-29T20:05:09.007Z" }, +version = "7.10.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/51/26/d22c300112504f5f9a9fd2297ce33c35f3d353e4aeb987c8419453b2a7c2/coverage-7.10.7.tar.gz", hash = "sha256:f4ab143ab113be368a3e9b795f9cd7906c5ef407d6173fe9675a902e1fffc239", size = 827704, upload-time = "2025-09-21T20:03:56.815Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/6c/3a3f7a46888e69d18abe3ccc6fe4cb16cccb1e6a2f99698931dafca489e6/coverage-7.10.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:fc04cc7a3db33664e0c2d10eb8990ff6b3536f6842c9590ae8da4c614b9ed05a", size = 217987, upload-time = "2025-09-21T20:00:57.218Z" }, + { url = "https://files.pythonhosted.org/packages/03/94/952d30f180b1a916c11a56f5c22d3535e943aa22430e9e3322447e520e1c/coverage-7.10.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e201e015644e207139f7e2351980feb7040e6f4b2c2978892f3e3789d1c125e5", size = 218388, upload-time = "2025-09-21T20:01:00.081Z" }, + { url = "https://files.pythonhosted.org/packages/50/2b/9e0cf8ded1e114bcd8b2fd42792b57f1c4e9e4ea1824cde2af93a67305be/coverage-7.10.7-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:240af60539987ced2c399809bd34f7c78e8abe0736af91c3d7d0e795df633d17", size = 245148, upload-time = "2025-09-21T20:01:01.768Z" }, + { url = "https://files.pythonhosted.org/packages/19/20/d0384ac06a6f908783d9b6aa6135e41b093971499ec488e47279f5b846e6/coverage-7.10.7-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:8421e088bc051361b01c4b3a50fd39a4b9133079a2229978d9d30511fd05231b", size = 246958, upload-time = "2025-09-21T20:01:03.355Z" }, + { url = "https://files.pythonhosted.org/packages/60/83/5c283cff3d41285f8eab897651585db908a909c572bdc014bcfaf8a8b6ae/coverage-7.10.7-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6be8ed3039ae7f7ac5ce058c308484787c86e8437e72b30bf5e88b8ea10f3c87", size = 248819, upload-time = "2025-09-21T20:01:04.968Z" }, + { url = "https://files.pythonhosted.org/packages/60/22/02eb98fdc5ff79f423e990d877693e5310ae1eab6cb20ae0b0b9ac45b23b/coverage-7.10.7-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e28299d9f2e889e6d51b1f043f58d5f997c373cc12e6403b90df95b8b047c13e", size = 245754, upload-time = "2025-09-21T20:01:06.321Z" }, + { url = "https://files.pythonhosted.org/packages/b4/bc/25c83bcf3ad141b32cd7dc45485ef3c01a776ca3aa8ef0a93e77e8b5bc43/coverage-7.10.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c4e16bd7761c5e454f4efd36f345286d6f7c5fa111623c355691e2755cae3b9e", size = 246860, upload-time = "2025-09-21T20:01:07.605Z" }, + { url = "https://files.pythonhosted.org/packages/3c/b7/95574702888b58c0928a6e982038c596f9c34d52c5e5107f1eef729399b5/coverage-7.10.7-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b1c81d0e5e160651879755c9c675b974276f135558cf4ba79fee7b8413a515df", size = 244877, upload-time = "2025-09-21T20:01:08.829Z" }, + { url = "https://files.pythonhosted.org/packages/47/b6/40095c185f235e085df0e0b158f6bd68cc6e1d80ba6c7721dc81d97ec318/coverage-7.10.7-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:606cc265adc9aaedcc84f1f064f0e8736bc45814f15a357e30fca7ecc01504e0", size = 245108, upload-time = "2025-09-21T20:01:10.527Z" }, + { url = "https://files.pythonhosted.org/packages/c8/50/4aea0556da7a4b93ec9168420d170b55e2eb50ae21b25062513d020c6861/coverage-7.10.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:10b24412692df990dbc34f8fb1b6b13d236ace9dfdd68df5b28c2e39cafbba13", size = 245752, upload-time = "2025-09-21T20:01:11.857Z" }, + { url = "https://files.pythonhosted.org/packages/6a/28/ea1a84a60828177ae3b100cb6723838523369a44ec5742313ed7db3da160/coverage-7.10.7-cp310-cp310-win32.whl", hash = "sha256:b51dcd060f18c19290d9b8a9dd1e0181538df2ce0717f562fff6cf74d9fc0b5b", size = 220497, upload-time = "2025-09-21T20:01:13.459Z" }, + { url = "https://files.pythonhosted.org/packages/fc/1a/a81d46bbeb3c3fd97b9602ebaa411e076219a150489bcc2c025f151bd52d/coverage-7.10.7-cp310-cp310-win_amd64.whl", hash = "sha256:3a622ac801b17198020f09af3eaf45666b344a0d69fc2a6ffe2ea83aeef1d807", size = 221392, upload-time = "2025-09-21T20:01:14.722Z" }, + { url = "https://files.pythonhosted.org/packages/d2/5d/c1a17867b0456f2e9ce2d8d4708a4c3a089947d0bec9c66cdf60c9e7739f/coverage-7.10.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a609f9c93113be646f44c2a0256d6ea375ad047005d7f57a5c15f614dc1b2f59", size = 218102, upload-time = "2025-09-21T20:01:16.089Z" }, + { url = "https://files.pythonhosted.org/packages/54/f0/514dcf4b4e3698b9a9077f084429681bf3aad2b4a72578f89d7f643eb506/coverage-7.10.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:65646bb0359386e07639c367a22cf9b5bf6304e8630b565d0626e2bdf329227a", size = 218505, upload-time = "2025-09-21T20:01:17.788Z" }, + { url = "https://files.pythonhosted.org/packages/20/f6/9626b81d17e2a4b25c63ac1b425ff307ecdeef03d67c9a147673ae40dc36/coverage-7.10.7-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:5f33166f0dfcce728191f520bd2692914ec70fac2713f6bf3ce59c3deacb4699", size = 248898, upload-time = "2025-09-21T20:01:19.488Z" }, + { url = "https://files.pythonhosted.org/packages/b0/ef/bd8e719c2f7417ba03239052e099b76ea1130ac0cbb183ee1fcaa58aaff3/coverage-7.10.7-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:35f5e3f9e455bb17831876048355dca0f758b6df22f49258cb5a91da23ef437d", size = 250831, upload-time = "2025-09-21T20:01:20.817Z" }, + { url = "https://files.pythonhosted.org/packages/a5/b6/bf054de41ec948b151ae2b79a55c107f5760979538f5fb80c195f2517718/coverage-7.10.7-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4da86b6d62a496e908ac2898243920c7992499c1712ff7c2b6d837cc69d9467e", size = 252937, upload-time = "2025-09-21T20:01:22.171Z" }, + { url = "https://files.pythonhosted.org/packages/0f/e5/3860756aa6f9318227443c6ce4ed7bf9e70bb7f1447a0353f45ac5c7974b/coverage-7.10.7-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:6b8b09c1fad947c84bbbc95eca841350fad9cbfa5a2d7ca88ac9f8d836c92e23", size = 249021, upload-time = "2025-09-21T20:01:23.907Z" }, + { url = "https://files.pythonhosted.org/packages/26/0f/bd08bd042854f7fd07b45808927ebcce99a7ed0f2f412d11629883517ac2/coverage-7.10.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4376538f36b533b46f8971d3a3e63464f2c7905c9800db97361c43a2b14792ab", size = 250626, upload-time = "2025-09-21T20:01:25.721Z" }, + { url = "https://files.pythonhosted.org/packages/8e/a7/4777b14de4abcc2e80c6b1d430f5d51eb18ed1d75fca56cbce5f2db9b36e/coverage-7.10.7-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:121da30abb574f6ce6ae09840dae322bef734480ceafe410117627aa54f76d82", size = 248682, upload-time = "2025-09-21T20:01:27.105Z" }, + { url = "https://files.pythonhosted.org/packages/34/72/17d082b00b53cd45679bad682fac058b87f011fd8b9fe31d77f5f8d3a4e4/coverage-7.10.7-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:88127d40df529336a9836870436fc2751c339fbaed3a836d42c93f3e4bd1d0a2", size = 248402, upload-time = "2025-09-21T20:01:28.629Z" }, + { url = "https://files.pythonhosted.org/packages/81/7a/92367572eb5bdd6a84bfa278cc7e97db192f9f45b28c94a9ca1a921c3577/coverage-7.10.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ba58bbcd1b72f136080c0bccc2400d66cc6115f3f906c499013d065ac33a4b61", size = 249320, upload-time = "2025-09-21T20:01:30.004Z" }, + { url = "https://files.pythonhosted.org/packages/2f/88/a23cc185f6a805dfc4fdf14a94016835eeb85e22ac3a0e66d5e89acd6462/coverage-7.10.7-cp311-cp311-win32.whl", hash = "sha256:972b9e3a4094b053a4e46832b4bc829fc8a8d347160eb39d03f1690316a99c14", size = 220536, upload-time = "2025-09-21T20:01:32.184Z" }, + { url = "https://files.pythonhosted.org/packages/fe/ef/0b510a399dfca17cec7bc2f05ad8bd78cf55f15c8bc9a73ab20c5c913c2e/coverage-7.10.7-cp311-cp311-win_amd64.whl", hash = "sha256:a7b55a944a7f43892e28ad4bc0561dfd5f0d73e605d1aa5c3c976b52aea121d2", size = 221425, upload-time = "2025-09-21T20:01:33.557Z" }, + { url = "https://files.pythonhosted.org/packages/51/7f/023657f301a276e4ba1850f82749bc136f5a7e8768060c2e5d9744a22951/coverage-7.10.7-cp311-cp311-win_arm64.whl", hash = "sha256:736f227fb490f03c6488f9b6d45855f8e0fd749c007f9303ad30efab0e73c05a", size = 220103, upload-time = "2025-09-21T20:01:34.929Z" }, + { url = "https://files.pythonhosted.org/packages/13/e4/eb12450f71b542a53972d19117ea5a5cea1cab3ac9e31b0b5d498df1bd5a/coverage-7.10.7-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7bb3b9ddb87ef7725056572368040c32775036472d5a033679d1fa6c8dc08417", size = 218290, upload-time = "2025-09-21T20:01:36.455Z" }, + { url = "https://files.pythonhosted.org/packages/37/66/593f9be12fc19fb36711f19a5371af79a718537204d16ea1d36f16bd78d2/coverage-7.10.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:18afb24843cbc175687225cab1138c95d262337f5473512010e46831aa0c2973", size = 218515, upload-time = "2025-09-21T20:01:37.982Z" }, + { url = "https://files.pythonhosted.org/packages/66/80/4c49f7ae09cafdacc73fbc30949ffe77359635c168f4e9ff33c9ebb07838/coverage-7.10.7-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:399a0b6347bcd3822be369392932884b8216d0944049ae22925631a9b3d4ba4c", size = 250020, upload-time = "2025-09-21T20:01:39.617Z" }, + { url = "https://files.pythonhosted.org/packages/a6/90/a64aaacab3b37a17aaedd83e8000142561a29eb262cede42d94a67f7556b/coverage-7.10.7-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:314f2c326ded3f4b09be11bc282eb2fc861184bc95748ae67b360ac962770be7", size = 252769, upload-time = "2025-09-21T20:01:41.341Z" }, + { url = "https://files.pythonhosted.org/packages/98/2e/2dda59afd6103b342e096f246ebc5f87a3363b5412609946c120f4e7750d/coverage-7.10.7-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c41e71c9cfb854789dee6fc51e46743a6d138b1803fab6cb860af43265b42ea6", size = 253901, upload-time = "2025-09-21T20:01:43.042Z" }, + { url = "https://files.pythonhosted.org/packages/53/dc/8d8119c9051d50f3119bb4a75f29f1e4a6ab9415cd1fa8bf22fcc3fb3b5f/coverage-7.10.7-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc01f57ca26269c2c706e838f6422e2a8788e41b3e3c65e2f41148212e57cd59", size = 250413, upload-time = "2025-09-21T20:01:44.469Z" }, + { url = "https://files.pythonhosted.org/packages/98/b3/edaff9c5d79ee4d4b6d3fe046f2b1d799850425695b789d491a64225d493/coverage-7.10.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a6442c59a8ac8b85812ce33bc4d05bde3fb22321fa8294e2a5b487c3505f611b", size = 251820, upload-time = "2025-09-21T20:01:45.915Z" }, + { url = "https://files.pythonhosted.org/packages/11/25/9a0728564bb05863f7e513e5a594fe5ffef091b325437f5430e8cfb0d530/coverage-7.10.7-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:78a384e49f46b80fb4c901d52d92abe098e78768ed829c673fbb53c498bef73a", size = 249941, upload-time = "2025-09-21T20:01:47.296Z" }, + { url = "https://files.pythonhosted.org/packages/e0/fd/ca2650443bfbef5b0e74373aac4df67b08180d2f184b482c41499668e258/coverage-7.10.7-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:5e1e9802121405ede4b0133aa4340ad8186a1d2526de5b7c3eca519db7bb89fb", size = 249519, upload-time = "2025-09-21T20:01:48.73Z" }, + { url = "https://files.pythonhosted.org/packages/24/79/f692f125fb4299b6f963b0745124998ebb8e73ecdfce4ceceb06a8c6bec5/coverage-7.10.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d41213ea25a86f69efd1575073d34ea11aabe075604ddf3d148ecfec9e1e96a1", size = 251375, upload-time = "2025-09-21T20:01:50.529Z" }, + { url = "https://files.pythonhosted.org/packages/5e/75/61b9bbd6c7d24d896bfeec57acba78e0f8deac68e6baf2d4804f7aae1f88/coverage-7.10.7-cp312-cp312-win32.whl", hash = "sha256:77eb4c747061a6af8d0f7bdb31f1e108d172762ef579166ec84542f711d90256", size = 220699, upload-time = "2025-09-21T20:01:51.941Z" }, + { url = "https://files.pythonhosted.org/packages/ca/f3/3bf7905288b45b075918d372498f1cf845b5b579b723c8fd17168018d5f5/coverage-7.10.7-cp312-cp312-win_amd64.whl", hash = "sha256:f51328ffe987aecf6d09f3cd9d979face89a617eacdaea43e7b3080777f647ba", size = 221512, upload-time = "2025-09-21T20:01:53.481Z" }, + { url = "https://files.pythonhosted.org/packages/5c/44/3e32dbe933979d05cf2dac5e697c8599cfe038aaf51223ab901e208d5a62/coverage-7.10.7-cp312-cp312-win_arm64.whl", hash = "sha256:bda5e34f8a75721c96085903c6f2197dc398c20ffd98df33f866a9c8fd95f4bf", size = 220147, upload-time = "2025-09-21T20:01:55.2Z" }, + { url = "https://files.pythonhosted.org/packages/9a/94/b765c1abcb613d103b64fcf10395f54d69b0ef8be6a0dd9c524384892cc7/coverage-7.10.7-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:981a651f543f2854abd3b5fcb3263aac581b18209be49863ba575de6edf4c14d", size = 218320, upload-time = "2025-09-21T20:01:56.629Z" }, + { url = "https://files.pythonhosted.org/packages/72/4f/732fff31c119bb73b35236dd333030f32c4bfe909f445b423e6c7594f9a2/coverage-7.10.7-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:73ab1601f84dc804f7812dc297e93cd99381162da39c47040a827d4e8dafe63b", size = 218575, upload-time = "2025-09-21T20:01:58.203Z" }, + { url = "https://files.pythonhosted.org/packages/87/02/ae7e0af4b674be47566707777db1aa375474f02a1d64b9323e5813a6cdd5/coverage-7.10.7-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:a8b6f03672aa6734e700bbcd65ff050fd19cddfec4b031cc8cf1c6967de5a68e", size = 249568, upload-time = "2025-09-21T20:01:59.748Z" }, + { url = "https://files.pythonhosted.org/packages/a2/77/8c6d22bf61921a59bce5471c2f1f7ac30cd4ac50aadde72b8c48d5727902/coverage-7.10.7-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:10b6ba00ab1132a0ce4428ff68cf50a25efd6840a42cdf4239c9b99aad83be8b", size = 252174, upload-time = "2025-09-21T20:02:01.192Z" }, + { url = "https://files.pythonhosted.org/packages/b1/20/b6ea4f69bbb52dac0aebd62157ba6a9dddbfe664f5af8122dac296c3ee15/coverage-7.10.7-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c79124f70465a150e89340de5963f936ee97097d2ef76c869708c4248c63ca49", size = 253447, upload-time = "2025-09-21T20:02:02.701Z" }, + { url = "https://files.pythonhosted.org/packages/f9/28/4831523ba483a7f90f7b259d2018fef02cb4d5b90bc7c1505d6e5a84883c/coverage-7.10.7-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:69212fbccdbd5b0e39eac4067e20a4a5256609e209547d86f740d68ad4f04911", size = 249779, upload-time = "2025-09-21T20:02:04.185Z" }, + { url = "https://files.pythonhosted.org/packages/a7/9f/4331142bc98c10ca6436d2d620c3e165f31e6c58d43479985afce6f3191c/coverage-7.10.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7ea7c6c9d0d286d04ed3541747e6597cbe4971f22648b68248f7ddcd329207f0", size = 251604, upload-time = "2025-09-21T20:02:06.034Z" }, + { url = "https://files.pythonhosted.org/packages/ce/60/bda83b96602036b77ecf34e6393a3836365481b69f7ed7079ab85048202b/coverage-7.10.7-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b9be91986841a75042b3e3243d0b3cb0b2434252b977baaf0cd56e960fe1e46f", size = 249497, upload-time = "2025-09-21T20:02:07.619Z" }, + { url = "https://files.pythonhosted.org/packages/5f/af/152633ff35b2af63977edd835d8e6430f0caef27d171edf2fc76c270ef31/coverage-7.10.7-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:b281d5eca50189325cfe1f365fafade89b14b4a78d9b40b05ddd1fc7d2a10a9c", size = 249350, upload-time = "2025-09-21T20:02:10.34Z" }, + { url = "https://files.pythonhosted.org/packages/9d/71/d92105d122bd21cebba877228990e1646d862e34a98bb3374d3fece5a794/coverage-7.10.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:99e4aa63097ab1118e75a848a28e40d68b08a5e19ce587891ab7fd04475e780f", size = 251111, upload-time = "2025-09-21T20:02:12.122Z" }, + { url = "https://files.pythonhosted.org/packages/a2/9e/9fdb08f4bf476c912f0c3ca292e019aab6712c93c9344a1653986c3fd305/coverage-7.10.7-cp313-cp313-win32.whl", hash = "sha256:dc7c389dce432500273eaf48f410b37886be9208b2dd5710aaf7c57fd442c698", size = 220746, upload-time = "2025-09-21T20:02:13.919Z" }, + { url = "https://files.pythonhosted.org/packages/b1/b1/a75fd25df44eab52d1931e89980d1ada46824c7a3210be0d3c88a44aaa99/coverage-7.10.7-cp313-cp313-win_amd64.whl", hash = "sha256:cac0fdca17b036af3881a9d2729a850b76553f3f716ccb0360ad4dbc06b3b843", size = 221541, upload-time = "2025-09-21T20:02:15.57Z" }, + { url = "https://files.pythonhosted.org/packages/14/3a/d720d7c989562a6e9a14b2c9f5f2876bdb38e9367126d118495b89c99c37/coverage-7.10.7-cp313-cp313-win_arm64.whl", hash = "sha256:4b6f236edf6e2f9ae8fcd1332da4e791c1b6ba0dc16a2dc94590ceccb482e546", size = 220170, upload-time = "2025-09-21T20:02:17.395Z" }, + { url = "https://files.pythonhosted.org/packages/bb/22/e04514bf2a735d8b0add31d2b4ab636fc02370730787c576bb995390d2d5/coverage-7.10.7-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:a0ec07fd264d0745ee396b666d47cef20875f4ff2375d7c4f58235886cc1ef0c", size = 219029, upload-time = "2025-09-21T20:02:18.936Z" }, + { url = "https://files.pythonhosted.org/packages/11/0b/91128e099035ece15da3445d9015e4b4153a6059403452d324cbb0a575fa/coverage-7.10.7-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:dd5e856ebb7bfb7672b0086846db5afb4567a7b9714b8a0ebafd211ec7ce6a15", size = 219259, upload-time = "2025-09-21T20:02:20.44Z" }, + { url = "https://files.pythonhosted.org/packages/8b/51/66420081e72801536a091a0c8f8c1f88a5c4bf7b9b1bdc6222c7afe6dc9b/coverage-7.10.7-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:f57b2a3c8353d3e04acf75b3fed57ba41f5c0646bbf1d10c7c282291c97936b4", size = 260592, upload-time = "2025-09-21T20:02:22.313Z" }, + { url = "https://files.pythonhosted.org/packages/5d/22/9b8d458c2881b22df3db5bb3e7369e63d527d986decb6c11a591ba2364f7/coverage-7.10.7-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:1ef2319dd15a0b009667301a3f84452a4dc6fddfd06b0c5c53ea472d3989fbf0", size = 262768, upload-time = "2025-09-21T20:02:24.287Z" }, + { url = "https://files.pythonhosted.org/packages/f7/08/16bee2c433e60913c610ea200b276e8eeef084b0d200bdcff69920bd5828/coverage-7.10.7-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:83082a57783239717ceb0ad584de3c69cf581b2a95ed6bf81ea66034f00401c0", size = 264995, upload-time = "2025-09-21T20:02:26.133Z" }, + { url = "https://files.pythonhosted.org/packages/20/9d/e53eb9771d154859b084b90201e5221bca7674ba449a17c101a5031d4054/coverage-7.10.7-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:50aa94fb1fb9a397eaa19c0d5ec15a5edd03a47bf1a3a6111a16b36e190cff65", size = 259546, upload-time = "2025-09-21T20:02:27.716Z" }, + { url = "https://files.pythonhosted.org/packages/ad/b0/69bc7050f8d4e56a89fb550a1577d5d0d1db2278106f6f626464067b3817/coverage-7.10.7-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:2120043f147bebb41c85b97ac45dd173595ff14f2a584f2963891cbcc3091541", size = 262544, upload-time = "2025-09-21T20:02:29.216Z" }, + { url = "https://files.pythonhosted.org/packages/ef/4b/2514b060dbd1bc0aaf23b852c14bb5818f244c664cb16517feff6bb3a5ab/coverage-7.10.7-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:2fafd773231dd0378fdba66d339f84904a8e57a262f583530f4f156ab83863e6", size = 260308, upload-time = "2025-09-21T20:02:31.226Z" }, + { url = "https://files.pythonhosted.org/packages/54/78/7ba2175007c246d75e496f64c06e94122bdb914790a1285d627a918bd271/coverage-7.10.7-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:0b944ee8459f515f28b851728ad224fa2d068f1513ef6b7ff1efafeb2185f999", size = 258920, upload-time = "2025-09-21T20:02:32.823Z" }, + { url = "https://files.pythonhosted.org/packages/c0/b3/fac9f7abbc841409b9a410309d73bfa6cfb2e51c3fada738cb607ce174f8/coverage-7.10.7-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4b583b97ab2e3efe1b3e75248a9b333bd3f8b0b1b8e5b45578e05e5850dfb2c2", size = 261434, upload-time = "2025-09-21T20:02:34.86Z" }, + { url = "https://files.pythonhosted.org/packages/ee/51/a03bec00d37faaa891b3ff7387192cef20f01604e5283a5fabc95346befa/coverage-7.10.7-cp313-cp313t-win32.whl", hash = "sha256:2a78cd46550081a7909b3329e2266204d584866e8d97b898cd7fb5ac8d888b1a", size = 221403, upload-time = "2025-09-21T20:02:37.034Z" }, + { url = "https://files.pythonhosted.org/packages/53/22/3cf25d614e64bf6d8e59c7c669b20d6d940bb337bdee5900b9ca41c820bb/coverage-7.10.7-cp313-cp313t-win_amd64.whl", hash = "sha256:33a5e6396ab684cb43dc7befa386258acb2d7fae7f67330ebb85ba4ea27938eb", size = 222469, upload-time = "2025-09-21T20:02:39.011Z" }, + { url = "https://files.pythonhosted.org/packages/49/a1/00164f6d30d8a01c3c9c48418a7a5be394de5349b421b9ee019f380df2a0/coverage-7.10.7-cp313-cp313t-win_arm64.whl", hash = "sha256:86b0e7308289ddde73d863b7683f596d8d21c7d8664ce1dee061d0bcf3fbb4bb", size = 220731, upload-time = "2025-09-21T20:02:40.939Z" }, + { url = "https://files.pythonhosted.org/packages/23/9c/5844ab4ca6a4dd97a1850e030a15ec7d292b5c5cb93082979225126e35dd/coverage-7.10.7-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:b06f260b16ead11643a5a9f955bd4b5fd76c1a4c6796aeade8520095b75de520", size = 218302, upload-time = "2025-09-21T20:02:42.527Z" }, + { url = "https://files.pythonhosted.org/packages/f0/89/673f6514b0961d1f0e20ddc242e9342f6da21eaba3489901b565c0689f34/coverage-7.10.7-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:212f8f2e0612778f09c55dd4872cb1f64a1f2b074393d139278ce902064d5b32", size = 218578, upload-time = "2025-09-21T20:02:44.468Z" }, + { url = "https://files.pythonhosted.org/packages/05/e8/261cae479e85232828fb17ad536765c88dd818c8470aca690b0ac6feeaa3/coverage-7.10.7-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3445258bcded7d4aa630ab8296dea4d3f15a255588dd535f980c193ab6b95f3f", size = 249629, upload-time = "2025-09-21T20:02:46.503Z" }, + { url = "https://files.pythonhosted.org/packages/82/62/14ed6546d0207e6eda876434e3e8475a3e9adbe32110ce896c9e0c06bb9a/coverage-7.10.7-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:bb45474711ba385c46a0bfe696c695a929ae69ac636cda8f532be9e8c93d720a", size = 252162, upload-time = "2025-09-21T20:02:48.689Z" }, + { url = "https://files.pythonhosted.org/packages/ff/49/07f00db9ac6478e4358165a08fb41b469a1b053212e8a00cb02f0d27a05f/coverage-7.10.7-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:813922f35bd800dca9994c5971883cbc0d291128a5de6b167c7aa697fcf59360", size = 253517, upload-time = "2025-09-21T20:02:50.31Z" }, + { url = "https://files.pythonhosted.org/packages/a2/59/c5201c62dbf165dfbc91460f6dbbaa85a8b82cfa6131ac45d6c1bfb52deb/coverage-7.10.7-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:93c1b03552081b2a4423091d6fb3787265b8f86af404cff98d1b5342713bdd69", size = 249632, upload-time = "2025-09-21T20:02:51.971Z" }, + { url = "https://files.pythonhosted.org/packages/07/ae/5920097195291a51fb00b3a70b9bbd2edbfe3c84876a1762bd1ef1565ebc/coverage-7.10.7-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:cc87dd1b6eaf0b848eebb1c86469b9f72a1891cb42ac7adcfbce75eadb13dd14", size = 251520, upload-time = "2025-09-21T20:02:53.858Z" }, + { url = "https://files.pythonhosted.org/packages/b9/3c/a815dde77a2981f5743a60b63df31cb322c944843e57dbd579326625a413/coverage-7.10.7-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:39508ffda4f343c35f3236fe8d1a6634a51f4581226a1262769d7f970e73bffe", size = 249455, upload-time = "2025-09-21T20:02:55.807Z" }, + { url = "https://files.pythonhosted.org/packages/aa/99/f5cdd8421ea656abefb6c0ce92556709db2265c41e8f9fc6c8ae0f7824c9/coverage-7.10.7-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:925a1edf3d810537c5a3abe78ec5530160c5f9a26b1f4270b40e62cc79304a1e", size = 249287, upload-time = "2025-09-21T20:02:57.784Z" }, + { url = "https://files.pythonhosted.org/packages/c3/7a/e9a2da6a1fc5d007dd51fca083a663ab930a8c4d149c087732a5dbaa0029/coverage-7.10.7-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2c8b9a0636f94c43cd3576811e05b89aa9bc2d0a85137affc544ae5cb0e4bfbd", size = 250946, upload-time = "2025-09-21T20:02:59.431Z" }, + { url = "https://files.pythonhosted.org/packages/ef/5b/0b5799aa30380a949005a353715095d6d1da81927d6dbed5def2200a4e25/coverage-7.10.7-cp314-cp314-win32.whl", hash = "sha256:b7b8288eb7cdd268b0304632da8cb0bb93fadcfec2fe5712f7b9cc8f4d487be2", size = 221009, upload-time = "2025-09-21T20:03:01.324Z" }, + { url = "https://files.pythonhosted.org/packages/da/b0/e802fbb6eb746de006490abc9bb554b708918b6774b722bb3a0e6aa1b7de/coverage-7.10.7-cp314-cp314-win_amd64.whl", hash = "sha256:1ca6db7c8807fb9e755d0379ccc39017ce0a84dcd26d14b5a03b78563776f681", size = 221804, upload-time = "2025-09-21T20:03:03.4Z" }, + { url = "https://files.pythonhosted.org/packages/9e/e8/71d0c8e374e31f39e3389bb0bd19e527d46f00ea8571ec7ec8fd261d8b44/coverage-7.10.7-cp314-cp314-win_arm64.whl", hash = "sha256:097c1591f5af4496226d5783d036bf6fd6cd0cbc132e071b33861de756efb880", size = 220384, upload-time = "2025-09-21T20:03:05.111Z" }, + { url = "https://files.pythonhosted.org/packages/62/09/9a5608d319fa3eba7a2019addeacb8c746fb50872b57a724c9f79f146969/coverage-7.10.7-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:a62c6ef0d50e6de320c270ff91d9dd0a05e7250cac2a800b7784bae474506e63", size = 219047, upload-time = "2025-09-21T20:03:06.795Z" }, + { url = "https://files.pythonhosted.org/packages/f5/6f/f58d46f33db9f2e3647b2d0764704548c184e6f5e014bef528b7f979ef84/coverage-7.10.7-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:9fa6e4dd51fe15d8738708a973470f67a855ca50002294852e9571cdbd9433f2", size = 219266, upload-time = "2025-09-21T20:03:08.495Z" }, + { url = "https://files.pythonhosted.org/packages/74/5c/183ffc817ba68e0b443b8c934c8795553eb0c14573813415bd59941ee165/coverage-7.10.7-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:8fb190658865565c549b6b4706856d6a7b09302c797eb2cf8e7fe9dabb043f0d", size = 260767, upload-time = "2025-09-21T20:03:10.172Z" }, + { url = "https://files.pythonhosted.org/packages/0f/48/71a8abe9c1ad7e97548835e3cc1adbf361e743e9d60310c5f75c9e7bf847/coverage-7.10.7-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:affef7c76a9ef259187ef31599a9260330e0335a3011732c4b9effa01e1cd6e0", size = 262931, upload-time = "2025-09-21T20:03:11.861Z" }, + { url = "https://files.pythonhosted.org/packages/84/fd/193a8fb132acfc0a901f72020e54be5e48021e1575bb327d8ee1097a28fd/coverage-7.10.7-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e16e07d85ca0cf8bafe5f5d23a0b850064e8e945d5677492b06bbe6f09cc699", size = 265186, upload-time = "2025-09-21T20:03:13.539Z" }, + { url = "https://files.pythonhosted.org/packages/b1/8f/74ecc30607dd95ad50e3034221113ccb1c6d4e8085cc761134782995daae/coverage-7.10.7-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:03ffc58aacdf65d2a82bbeb1ffe4d01ead4017a21bfd0454983b88ca73af94b9", size = 259470, upload-time = "2025-09-21T20:03:15.584Z" }, + { url = "https://files.pythonhosted.org/packages/0f/55/79ff53a769f20d71b07023ea115c9167c0bb56f281320520cf64c5298a96/coverage-7.10.7-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:1b4fd784344d4e52647fd7857b2af5b3fbe6c239b0b5fa63e94eb67320770e0f", size = 262626, upload-time = "2025-09-21T20:03:17.673Z" }, + { url = "https://files.pythonhosted.org/packages/88/e2/dac66c140009b61ac3fc13af673a574b00c16efdf04f9b5c740703e953c0/coverage-7.10.7-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:0ebbaddb2c19b71912c6f2518e791aa8b9f054985a0769bdb3a53ebbc765c6a1", size = 260386, upload-time = "2025-09-21T20:03:19.36Z" }, + { url = "https://files.pythonhosted.org/packages/a2/f1/f48f645e3f33bb9ca8a496bc4a9671b52f2f353146233ebd7c1df6160440/coverage-7.10.7-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:a2d9a3b260cc1d1dbdb1c582e63ddcf5363426a1a68faa0f5da28d8ee3c722a0", size = 258852, upload-time = "2025-09-21T20:03:21.007Z" }, + { url = "https://files.pythonhosted.org/packages/bb/3b/8442618972c51a7affeead957995cfa8323c0c9bcf8fa5a027421f720ff4/coverage-7.10.7-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a3cc8638b2480865eaa3926d192e64ce6c51e3d29c849e09d5b4ad95efae5399", size = 261534, upload-time = "2025-09-21T20:03:23.12Z" }, + { url = "https://files.pythonhosted.org/packages/b2/dc/101f3fa3a45146db0cb03f5b4376e24c0aac818309da23e2de0c75295a91/coverage-7.10.7-cp314-cp314t-win32.whl", hash = "sha256:67f8c5cbcd3deb7a60b3345dffc89a961a484ed0af1f6f73de91705cc6e31235", size = 221784, upload-time = "2025-09-21T20:03:24.769Z" }, + { url = "https://files.pythonhosted.org/packages/4c/a1/74c51803fc70a8a40d7346660379e144be772bab4ac7bb6e6b905152345c/coverage-7.10.7-cp314-cp314t-win_amd64.whl", hash = "sha256:e1ed71194ef6dea7ed2d5cb5f7243d4bcd334bfb63e59878519be558078f848d", size = 222905, upload-time = "2025-09-21T20:03:26.93Z" }, + { url = "https://files.pythonhosted.org/packages/12/65/f116a6d2127df30bcafbceef0302d8a64ba87488bf6f73a6d8eebf060873/coverage-7.10.7-cp314-cp314t-win_arm64.whl", hash = "sha256:7fe650342addd8524ca63d77b2362b02345e5f1a093266787d210c70a50b471a", size = 220922, upload-time = "2025-09-21T20:03:28.672Z" }, + { url = "https://files.pythonhosted.org/packages/ec/16/114df1c291c22cac3b0c127a73e0af5c12ed7bbb6558d310429a0ae24023/coverage-7.10.7-py3-none-any.whl", hash = "sha256:f7941f6f2fe6dd6807a1208737b8a0cbcf1cc6d7b07d24998ad2d63590868260", size = 209952, upload-time = "2025-09-21T20:03:53.918Z" }, ] [package.optional-dependencies] @@ -868,16 +1207,16 @@ toml = [ [[package]] name = "coveralls" -version = "3.3.1" +version = "4.0.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "coverage" }, + { name = "coverage", extra = ["toml"] }, { name = "docopt" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c2/c5/6b8254092117fa366b022fbee9434224483ba38e0bbf36e80836bf10692a/coveralls-3.3.1.tar.gz", hash = "sha256:b32a8bb5d2df585207c119d6c01567b81fba690c9c10a753bfe27a335bfc43ea", size = 17964, upload-time = "2021-11-11T21:00:05.24Z" } +sdist = { url = "https://files.pythonhosted.org/packages/61/75/a454fb443eb6a053833f61603a432ffbd7dd6ae53a11159bacfadb9d6219/coveralls-4.0.1.tar.gz", hash = "sha256:7b2a0a2bcef94f295e3cf28dcc55ca40b71c77d1c2446b538e85f0f7bc21aa69", size = 12419, upload-time = "2024-05-15T12:56:14.297Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/56/d6/e95db3c56afd1eff815db7dda01908f5e57770e47042209db448ab496197/coveralls-3.3.1-py2.py3-none-any.whl", hash = "sha256:f42015f31d386b351d4226389b387ae173207058832fbf5c8ec4b40e27b16026", size = 14700, upload-time = "2021-11-11T21:00:03.875Z" }, + { url = "https://files.pythonhosted.org/packages/63/e5/6708c75e2a4cfca929302d4d9b53b862c6dc65bd75e6933ea3d20016d41d/coveralls-4.0.1-py3-none-any.whl", hash = "sha256:7a6b1fa9848332c7b2221afb20f3df90272ac0167060f41b5fe90429b30b1809", size = 13599, upload-time = "2024-05-15T12:56:12.342Z" }, ] [[package]] @@ -982,27 +1321,31 @@ wheels = [ [[package]] name = "debugpy" -version = "1.8.14" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bd/75/087fe07d40f490a78782ff3b0a30e3968936854105487decdb33446d4b0e/debugpy-1.8.14.tar.gz", hash = "sha256:7cd287184318416850aa8b60ac90105837bb1e59531898c07569d197d2ed5322", size = 1641444, upload-time = "2025-04-10T19:46:10.981Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fc/df/156df75a41aaebd97cee9d3870fe68f8001b6c1c4ca023e221cfce69bece/debugpy-1.8.14-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:93fee753097e85623cab1c0e6a68c76308cd9f13ffdf44127e6fab4fbf024339", size = 2076510, upload-time = "2025-04-10T19:46:13.315Z" }, - { url = "https://files.pythonhosted.org/packages/69/cd/4fc391607bca0996db5f3658762106e3d2427beaef9bfd363fd370a3c054/debugpy-1.8.14-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d937d93ae4fa51cdc94d3e865f535f185d5f9748efb41d0d49e33bf3365bd79", size = 3559614, upload-time = "2025-04-10T19:46:14.647Z" }, - { url = "https://files.pythonhosted.org/packages/1a/42/4e6d2b9d63e002db79edfd0cb5656f1c403958915e0e73ab3e9220012eec/debugpy-1.8.14-cp310-cp310-win32.whl", hash = "sha256:c442f20577b38cc7a9aafecffe1094f78f07fb8423c3dddb384e6b8f49fd2987", size = 5208588, upload-time = "2025-04-10T19:46:16.233Z" }, - { url = "https://files.pythonhosted.org/packages/97/b1/cc9e4e5faadc9d00df1a64a3c2d5c5f4b9df28196c39ada06361c5141f89/debugpy-1.8.14-cp310-cp310-win_amd64.whl", hash = "sha256:f117dedda6d969c5c9483e23f573b38f4e39412845c7bc487b6f2648df30fe84", size = 5241043, upload-time = "2025-04-10T19:46:17.768Z" }, - { url = "https://files.pythonhosted.org/packages/67/e8/57fe0c86915671fd6a3d2d8746e40485fd55e8d9e682388fbb3a3d42b86f/debugpy-1.8.14-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:1b2ac8c13b2645e0b1eaf30e816404990fbdb168e193322be8f545e8c01644a9", size = 2175064, upload-time = "2025-04-10T19:46:19.486Z" }, - { url = "https://files.pythonhosted.org/packages/3b/97/2b2fd1b1c9569c6764ccdb650a6f752e4ac31be465049563c9eb127a8487/debugpy-1.8.14-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf431c343a99384ac7eab2f763980724834f933a271e90496944195318c619e2", size = 3132359, upload-time = "2025-04-10T19:46:21.192Z" }, - { url = "https://files.pythonhosted.org/packages/c0/ee/b825c87ed06256ee2a7ed8bab8fb3bb5851293bf9465409fdffc6261c426/debugpy-1.8.14-cp311-cp311-win32.whl", hash = "sha256:c99295c76161ad8d507b413cd33422d7c542889fbb73035889420ac1fad354f2", size = 5133269, upload-time = "2025-04-10T19:46:23.047Z" }, - { url = "https://files.pythonhosted.org/packages/d5/a6/6c70cd15afa43d37839d60f324213843174c1d1e6bb616bd89f7c1341bac/debugpy-1.8.14-cp311-cp311-win_amd64.whl", hash = "sha256:7816acea4a46d7e4e50ad8d09d963a680ecc814ae31cdef3622eb05ccacf7b01", size = 5158156, upload-time = "2025-04-10T19:46:24.521Z" }, - { url = "https://files.pythonhosted.org/packages/d9/2a/ac2df0eda4898f29c46eb6713a5148e6f8b2b389c8ec9e425a4a1d67bf07/debugpy-1.8.14-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:8899c17920d089cfa23e6005ad9f22582fd86f144b23acb9feeda59e84405b84", size = 2501268, upload-time = "2025-04-10T19:46:26.044Z" }, - { url = "https://files.pythonhosted.org/packages/10/53/0a0cb5d79dd9f7039169f8bf94a144ad3efa52cc519940b3b7dde23bcb89/debugpy-1.8.14-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6bb5c0dcf80ad5dbc7b7d6eac484e2af34bdacdf81df09b6a3e62792b722826", size = 4221077, upload-time = "2025-04-10T19:46:27.464Z" }, - { url = "https://files.pythonhosted.org/packages/f8/d5/84e01821f362327bf4828728aa31e907a2eca7c78cd7c6ec062780d249f8/debugpy-1.8.14-cp312-cp312-win32.whl", hash = "sha256:281d44d248a0e1791ad0eafdbbd2912ff0de9eec48022a5bfbc332957487ed3f", size = 5255127, upload-time = "2025-04-10T19:46:29.467Z" }, - { url = "https://files.pythonhosted.org/packages/33/16/1ed929d812c758295cac7f9cf3dab5c73439c83d9091f2d91871e648093e/debugpy-1.8.14-cp312-cp312-win_amd64.whl", hash = "sha256:5aa56ef8538893e4502a7d79047fe39b1dae08d9ae257074c6464a7b290b806f", size = 5297249, upload-time = "2025-04-10T19:46:31.538Z" }, - { url = "https://files.pythonhosted.org/packages/4d/e4/395c792b243f2367d84202dc33689aa3d910fb9826a7491ba20fc9e261f5/debugpy-1.8.14-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:329a15d0660ee09fec6786acdb6e0443d595f64f5d096fc3e3ccf09a4259033f", size = 2485676, upload-time = "2025-04-10T19:46:32.96Z" }, - { url = "https://files.pythonhosted.org/packages/ba/f1/6f2ee3f991327ad9e4c2f8b82611a467052a0fb0e247390192580e89f7ff/debugpy-1.8.14-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f920c7f9af409d90f5fd26e313e119d908b0dd2952c2393cd3247a462331f15", size = 4217514, upload-time = "2025-04-10T19:46:34.336Z" }, - { url = "https://files.pythonhosted.org/packages/79/28/b9d146f8f2dc535c236ee09ad3e5ac899adb39d7a19b49f03ac95d216beb/debugpy-1.8.14-cp313-cp313-win32.whl", hash = "sha256:3784ec6e8600c66cbdd4ca2726c72d8ca781e94bce2f396cc606d458146f8f4e", size = 5254756, upload-time = "2025-04-10T19:46:36.199Z" }, - { url = "https://files.pythonhosted.org/packages/e0/62/a7b4a57013eac4ccaef6977966e6bec5c63906dd25a86e35f155952e29a1/debugpy-1.8.14-cp313-cp313-win_amd64.whl", hash = "sha256:684eaf43c95a3ec39a96f1f5195a7ff3d4144e4a18d69bb66beeb1a6de605d6e", size = 5297119, upload-time = "2025-04-10T19:46:38.141Z" }, - { url = "https://files.pythonhosted.org/packages/97/1a/481f33c37ee3ac8040d3d51fc4c4e4e7e61cb08b8bc8971d6032acc2279f/debugpy-1.8.14-py2.py3-none-any.whl", hash = "sha256:5cd9a579d553b6cb9759a7908a41988ee6280b961f24f63336835d9418216a20", size = 5256230, upload-time = "2025-04-10T19:46:54.077Z" }, +version = "1.8.17" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/15/ad/71e708ff4ca377c4230530d6a7aa7992592648c122a2cd2b321cf8b35a76/debugpy-1.8.17.tar.gz", hash = "sha256:fd723b47a8c08892b1a16b2c6239a8b96637c62a59b94bb5dab4bac592a58a8e", size = 1644129, upload-time = "2025-09-17T16:33:20.633Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/36/b57c6e818d909f6e59c0182252921cf435e0951126a97e11de37e72ab5e1/debugpy-1.8.17-cp310-cp310-macosx_15_0_x86_64.whl", hash = "sha256:c41d2ce8bbaddcc0009cc73f65318eedfa3dbc88a8298081deb05389f1ab5542", size = 2098021, upload-time = "2025-09-17T16:33:22.556Z" }, + { url = "https://files.pythonhosted.org/packages/be/01/0363c7efdd1e9febd090bb13cee4fb1057215b157b2979a4ca5ccb678217/debugpy-1.8.17-cp310-cp310-manylinux_2_34_x86_64.whl", hash = "sha256:1440fd514e1b815edd5861ca394786f90eb24960eb26d6f7200994333b1d79e3", size = 3087399, upload-time = "2025-09-17T16:33:24.292Z" }, + { url = "https://files.pythonhosted.org/packages/79/bc/4a984729674aa9a84856650438b9665f9a1d5a748804ac6f37932ce0d4aa/debugpy-1.8.17-cp310-cp310-win32.whl", hash = "sha256:3a32c0af575749083d7492dc79f6ab69f21b2d2ad4cd977a958a07d5865316e4", size = 5230292, upload-time = "2025-09-17T16:33:26.137Z" }, + { url = "https://files.pythonhosted.org/packages/5d/19/2b9b3092d0cf81a5aa10c86271999453030af354d1a5a7d6e34c574515d7/debugpy-1.8.17-cp310-cp310-win_amd64.whl", hash = "sha256:a3aad0537cf4d9c1996434be68c6c9a6d233ac6f76c2a482c7803295b4e4f99a", size = 5261885, upload-time = "2025-09-17T16:33:27.592Z" }, + { url = "https://files.pythonhosted.org/packages/d8/53/3af72b5c159278c4a0cf4cffa518675a0e73bdb7d1cac0239b815502d2ce/debugpy-1.8.17-cp311-cp311-macosx_15_0_universal2.whl", hash = "sha256:d3fce3f0e3de262a3b67e69916d001f3e767661c6e1ee42553009d445d1cd840", size = 2207154, upload-time = "2025-09-17T16:33:29.457Z" }, + { url = "https://files.pythonhosted.org/packages/8f/6d/204f407df45600e2245b4a39860ed4ba32552330a0b3f5f160ae4cc30072/debugpy-1.8.17-cp311-cp311-manylinux_2_34_x86_64.whl", hash = "sha256:c6bdf134457ae0cac6fb68205776be635d31174eeac9541e1d0c062165c6461f", size = 3170322, upload-time = "2025-09-17T16:33:30.837Z" }, + { url = "https://files.pythonhosted.org/packages/f2/13/1b8f87d39cf83c6b713de2620c31205299e6065622e7dd37aff4808dd410/debugpy-1.8.17-cp311-cp311-win32.whl", hash = "sha256:e79a195f9e059edfe5d8bf6f3749b2599452d3e9380484cd261f6b7cd2c7c4da", size = 5155078, upload-time = "2025-09-17T16:33:33.331Z" }, + { url = "https://files.pythonhosted.org/packages/c2/c5/c012c60a2922cc91caa9675d0ddfbb14ba59e1e36228355f41cab6483469/debugpy-1.8.17-cp311-cp311-win_amd64.whl", hash = "sha256:b532282ad4eca958b1b2d7dbcb2b7218e02cb934165859b918e3b6ba7772d3f4", size = 5179011, upload-time = "2025-09-17T16:33:35.711Z" }, + { url = "https://files.pythonhosted.org/packages/08/2b/9d8e65beb2751876c82e1aceb32f328c43ec872711fa80257c7674f45650/debugpy-1.8.17-cp312-cp312-macosx_15_0_universal2.whl", hash = "sha256:f14467edef672195c6f6b8e27ce5005313cb5d03c9239059bc7182b60c176e2d", size = 2549522, upload-time = "2025-09-17T16:33:38.466Z" }, + { url = "https://files.pythonhosted.org/packages/b4/78/eb0d77f02971c05fca0eb7465b18058ba84bd957062f5eec82f941ac792a/debugpy-1.8.17-cp312-cp312-manylinux_2_34_x86_64.whl", hash = "sha256:24693179ef9dfa20dca8605905a42b392be56d410c333af82f1c5dff807a64cc", size = 4309417, upload-time = "2025-09-17T16:33:41.299Z" }, + { url = "https://files.pythonhosted.org/packages/37/42/c40f1d8cc1fed1e75ea54298a382395b8b937d923fcf41ab0797a554f555/debugpy-1.8.17-cp312-cp312-win32.whl", hash = "sha256:6a4e9dacf2cbb60d2514ff7b04b4534b0139facbf2abdffe0639ddb6088e59cf", size = 5277130, upload-time = "2025-09-17T16:33:43.554Z" }, + { url = "https://files.pythonhosted.org/packages/72/22/84263b205baad32b81b36eac076de0cdbe09fe2d0637f5b32243dc7c925b/debugpy-1.8.17-cp312-cp312-win_amd64.whl", hash = "sha256:e8f8f61c518952fb15f74a302e068b48d9c4691768ade433e4adeea961993464", size = 5319053, upload-time = "2025-09-17T16:33:53.033Z" }, + { url = "https://files.pythonhosted.org/packages/50/76/597e5cb97d026274ba297af8d89138dfd9e695767ba0e0895edb20963f40/debugpy-1.8.17-cp313-cp313-macosx_15_0_universal2.whl", hash = "sha256:857c1dd5d70042502aef1c6d1c2801211f3ea7e56f75e9c335f434afb403e464", size = 2538386, upload-time = "2025-09-17T16:33:54.594Z" }, + { url = "https://files.pythonhosted.org/packages/5f/60/ce5c34fcdfec493701f9d1532dba95b21b2f6394147234dce21160bd923f/debugpy-1.8.17-cp313-cp313-manylinux_2_34_x86_64.whl", hash = "sha256:3bea3b0b12f3946e098cce9b43c3c46e317b567f79570c3f43f0b96d00788088", size = 4292100, upload-time = "2025-09-17T16:33:56.353Z" }, + { url = "https://files.pythonhosted.org/packages/e8/95/7873cf2146577ef71d2a20bf553f12df865922a6f87b9e8ee1df04f01785/debugpy-1.8.17-cp313-cp313-win32.whl", hash = "sha256:e34ee844c2f17b18556b5bbe59e1e2ff4e86a00282d2a46edab73fd7f18f4a83", size = 5277002, upload-time = "2025-09-17T16:33:58.231Z" }, + { url = "https://files.pythonhosted.org/packages/46/11/18c79a1cee5ff539a94ec4aa290c1c069a5580fd5cfd2fb2e282f8e905da/debugpy-1.8.17-cp313-cp313-win_amd64.whl", hash = "sha256:6c5cd6f009ad4fca8e33e5238210dc1e5f42db07d4b6ab21ac7ffa904a196420", size = 5319047, upload-time = "2025-09-17T16:34:00.586Z" }, + { url = "https://files.pythonhosted.org/packages/de/45/115d55b2a9da6de812696064ceb505c31e952c5d89c4ed1d9bb983deec34/debugpy-1.8.17-cp314-cp314-macosx_15_0_universal2.whl", hash = "sha256:045290c010bcd2d82bc97aa2daf6837443cd52f6328592698809b4549babcee1", size = 2536899, upload-time = "2025-09-17T16:34:02.657Z" }, + { url = "https://files.pythonhosted.org/packages/5a/73/2aa00c7f1f06e997ef57dc9b23d61a92120bec1437a012afb6d176585197/debugpy-1.8.17-cp314-cp314-manylinux_2_34_x86_64.whl", hash = "sha256:b69b6bd9dba6a03632534cdf67c760625760a215ae289f7489a452af1031fe1f", size = 4268254, upload-time = "2025-09-17T16:34:04.486Z" }, + { url = "https://files.pythonhosted.org/packages/86/b5/ed3e65c63c68a6634e3ba04bd10255c8e46ec16ebed7d1c79e4816d8a760/debugpy-1.8.17-cp314-cp314-win32.whl", hash = "sha256:5c59b74aa5630f3a5194467100c3b3d1c77898f9ab27e3f7dc5d40fc2f122670", size = 5277203, upload-time = "2025-09-17T16:34:06.65Z" }, + { url = "https://files.pythonhosted.org/packages/b0/26/394276b71c7538445f29e792f589ab7379ae70fd26ff5577dfde71158e96/debugpy-1.8.17-cp314-cp314-win_amd64.whl", hash = "sha256:893cba7bb0f55161de4365584b025f7064e1f88913551bcd23be3260b231429c", size = 5318493, upload-time = "2025-09-17T16:34:08.483Z" }, + { url = "https://files.pythonhosted.org/packages/b0/d0/89247ec250369fc76db477720a26b2fce7ba079ff1380e4ab4529d2fe233/debugpy-1.8.17-py2.py3-none-any.whl", hash = "sha256:60c7dca6571efe660ccb7a9508d73ca14b8796c4ed484c2002abba714226cfef", size = 5283210, upload-time = "2025-09-17T16:34:25.835Z" }, ] [[package]] @@ -1049,11 +1392,11 @@ wheels = [ [[package]] name = "distlib" -version = "0.3.9" +version = "0.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0d/dd/1bec4c5ddb504ca60fc29472f3d27e8d4da1257a854e1d96742f15c1d02d/distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403", size = 613923, upload-time = "2024-10-09T18:35:47.551Z" } +sdist = { url = "https://files.pythonhosted.org/packages/96/8e/709914eb2b5749865801041647dc7f4e6d00b549cfe88b65ca192995f07c/distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d", size = 614605, upload-time = "2025-07-17T16:52:00.465Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87", size = 468973, upload-time = "2024-10-09T18:35:44.272Z" }, + { url = "https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16", size = 469047, upload-time = "2025-07-17T16:51:58.613Z" }, ] [[package]] @@ -1085,79 +1428,155 @@ wheels = [ [[package]] name = "executing" -version = "2.2.0" +version = "2.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/91/50/a9d80c47ff289c611ff12e63f7c5d13942c65d68125160cefd768c73e6e4/executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755", size = 978693, upload-time = "2025-01-22T15:41:29.403Z" } +sdist = { url = "https://files.pythonhosted.org/packages/cc/28/c14e053b6762b1044f34a13aab6859bbf40456d37d23aa286ac24cfd9a5d/executing-2.2.1.tar.gz", hash = "sha256:3632cc370565f6648cc328b32435bd120a1e4ebb20c77e3fdde9a13cd1e533c4", size = 1129488, upload-time = "2025-09-01T09:48:10.866Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702, upload-time = "2025-01-22T15:41:25.929Z" }, + { url = "https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl", hash = "sha256:760643d3452b4d777d295bb167ccc74c64a81df23fb5e08eff250c425a4b2017", size = 28317, upload-time = "2025-09-01T09:48:08.5Z" }, ] [[package]] name = "fasteners" -version = "0.19" +version = "0.20" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5f/d4/e834d929be54bfadb1f3e3b931c38e956aaa3b235a46a3c764c26c774902/fasteners-0.19.tar.gz", hash = "sha256:b4f37c3ac52d8a445af3a66bce57b33b5e90b97c696b7b984f530cf8f0ded09c", size = 24832, upload-time = "2023-09-19T17:11:20.228Z" } +sdist = { url = "https://files.pythonhosted.org/packages/2d/18/7881a99ba5244bfc82f06017316ffe93217dbbbcfa52b887caa1d4f2a6d3/fasteners-0.20.tar.gz", hash = "sha256:55dce8792a41b56f727ba6e123fcaee77fd87e638a6863cec00007bfea84c8d8", size = 25087, upload-time = "2025-08-11T10:19:37.785Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/61/bf/fd60001b3abc5222d8eaa4a204cd8c0ae78e75adc688f33ce4bf25b7fafa/fasteners-0.19-py3-none-any.whl", hash = "sha256:758819cb5d94cdedf4e836988b74de396ceacb8e2794d21f82d131fd9ee77237", size = 18679, upload-time = "2023-09-19T17:11:18.725Z" }, + { url = "https://files.pythonhosted.org/packages/51/ac/e5d886f892666d2d1e5cb8c1a41146e1d79ae8896477b1153a21711d3b44/fasteners-0.20-py3-none-any.whl", hash = "sha256:9422c40d1e350e4259f509fb2e608d6bc43c0136f79a00db1b49046029d0b3b7", size = 18702, upload-time = "2025-08-11T10:19:35.716Z" }, ] [[package]] name = "fastjsonschema" -version = "2.21.1" +version = "2.21.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8b/50/4b769ce1ac4071a1ef6d86b1a3fb56cdc3a37615e8c5519e1af96cdac366/fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4", size = 373939, upload-time = "2024-12-02T10:55:15.133Z" } +sdist = { url = "https://files.pythonhosted.org/packages/20/b5/23b216d9d985a956623b6bd12d4086b60f0059b27799f23016af04a74ea1/fastjsonschema-2.21.2.tar.gz", hash = "sha256:b1eb43748041c880796cd077f1a07c3d94e93ae84bba5ed36800a33554ae05de", size = 374130, upload-time = "2025-08-14T18:49:36.666Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", size = 23924, upload-time = "2024-12-02T10:55:07.599Z" }, + { url = "https://files.pythonhosted.org/packages/cb/a8/20d0723294217e47de6d9e2e40fd4a9d2f7c4b6ef974babd482a59743694/fastjsonschema-2.21.2-py3-none-any.whl", hash = "sha256:1c797122d0a86c5cace2e54bf4e819c36223b552017172f32c5c024a6b77e463", size = 24024, upload-time = "2025-08-14T18:49:34.776Z" }, ] [[package]] name = "filelock" -version = "3.18.0" +version = "3.19.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075, upload-time = "2025-03-14T07:11:40.47Z" } +sdist = { url = "https://files.pythonhosted.org/packages/40/bb/0ab3e58d22305b6f5440629d20683af28959bf793d98d11950e305c1c326/filelock-3.19.1.tar.gz", hash = "sha256:66eda1888b0171c998b35be2bcc0f6d75c388a7ce20c3f3f37aa8e96c2dddf58", size = 17687, upload-time = "2025-08-14T16:56:03.016Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215, upload-time = "2025-03-14T07:11:39.145Z" }, + { url = "https://files.pythonhosted.org/packages/42/14/42b2651a2f46b022ccd948bca9f2d5af0fd8929c4eec235b8d6d844fbe67/filelock-3.19.1-py3-none-any.whl", hash = "sha256:d38e30481def20772f5baf097c122c3babc4fcdb7e14e57049eb9d88c6dc017d", size = 15988, upload-time = "2025-08-14T16:56:01.633Z" }, +] + +[[package]] +name = "flask" +version = "3.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "blinker" }, + { name = "click" }, + { name = "itsdangerous" }, + { name = "jinja2" }, + { name = "markupsafe" }, + { name = "werkzeug" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dc/6d/cfe3c0fcc5e477df242b98bfe186a4c34357b4847e87ecaef04507332dab/flask-3.1.2.tar.gz", hash = "sha256:bf656c15c80190ed628ad08cdfd3aaa35beb087855e2f494910aa3774cc4fd87", size = 720160, upload-time = "2025-08-19T21:03:21.205Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/f9/7f9263c5695f4bd0023734af91bedb2ff8209e8de6ead162f35d8dc762fd/flask-3.1.2-py3-none-any.whl", hash = "sha256:ca1d8112ec8a6158cc29ea4858963350011b5c846a414cdb7a954aa9e967d03c", size = 103308, upload-time = "2025-08-19T21:03:19.499Z" }, +] + +[[package]] +name = "flask-compress" +version = "1.18" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "brotli", marker = "platform_python_implementation != 'PyPy'" }, + { name = "brotlicffi", marker = "platform_python_implementation == 'PyPy'" }, + { name = "flask" }, + { name = "pyzstd", marker = "python_full_version < '3.14'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/33/77/7d3c1b071e29c09bd796a84f95442f3c75f24a1f2a9f2c86c857579ab4ec/flask_compress-1.18.tar.gz", hash = "sha256:fdbae1bd8e334dfdc8b19549829163987c796fafea7fa1c63f9a4add23c8413a", size = 16571, upload-time = "2025-07-11T14:08:13.496Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/28/d8/953232867e42b5b91899e9c6c4a2b89218a5fbbdbbb4493f48729770de81/flask_compress-1.18-py3-none-any.whl", hash = "sha256:9c3b7defbd0f29a06e51617b910eab07bd4db314507e4edc4c6b02a2e139fda9", size = 9340, upload-time = "2025-07-11T14:08:12.275Z" }, +] + +[[package]] +name = "flask-cors" +version = "6.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "flask" }, + { name = "werkzeug" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/76/37/bcfa6c7d5eec777c4c7cf45ce6b27631cebe5230caf88d85eadd63edd37a/flask_cors-6.0.1.tar.gz", hash = "sha256:d81bcb31f07b0985be7f48406247e9243aced229b7747219160a0559edd678db", size = 13463, upload-time = "2025-06-11T01:32:08.518Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/17/f8/01bf35a3afd734345528f98d0353f2a978a476528ad4d7e78b70c4d149dd/flask_cors-6.0.1-py3-none-any.whl", hash = "sha256:c7b2cbfb1a31aa0d2e5341eea03a6805349f7a61647daee1a15c46bbe981494c", size = 13244, upload-time = "2025-06-11T01:32:07.352Z" }, +] + +[[package]] +name = "flask-restful" +version = "0.3.10" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aniso8601" }, + { name = "flask" }, + { name = "pytz" }, + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c0/ce/a0a133db616ea47f78a41e15c4c68b9f08cab3df31eb960f61899200a119/Flask-RESTful-0.3.10.tar.gz", hash = "sha256:fe4af2ef0027df8f9b4f797aba20c5566801b6ade995ac63b588abf1a59cec37", size = 110453, upload-time = "2023-05-21T03:58:55.781Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/7b/f0b45f0df7d2978e5ae51804bb5939b7897b2ace24306009da0cc34d8d1f/Flask_RESTful-0.3.10-py2.py3-none-any.whl", hash = "sha256:1cf93c535172f112e080b0d4503a8d15f93a48c88bdd36dd87269bdaf405051b", size = 26217, upload-time = "2023-05-21T03:58:54.004Z" }, ] [[package]] name = "fonttools" -version = "4.58.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b6/a9/3319c6ae07fd9dde51064ddc6d82a2b707efad8ed407d700a01091121bbc/fonttools-4.58.2.tar.gz", hash = "sha256:4b491ddbfd50b856e84b0648b5f7941af918f6d32f938f18e62b58426a8d50e2", size = 3524285, upload-time = "2025-06-06T14:50:58.643Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d3/6f/1f0158cd9d6168258362369fa003c58fc36f2b141a66bc805c76f28f57cc/fonttools-4.58.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4baaf34f07013ba9c2c3d7a95d0c391fcbb30748cb86c36c094fab8f168e49bb", size = 2735491, upload-time = "2025-06-06T14:49:33.45Z" }, - { url = "https://files.pythonhosted.org/packages/3d/94/d9a36a4ae1ed257ed5117c0905635e89327428cbf3521387c13bd85e6de1/fonttools-4.58.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2e26e4a4920d57f04bb2c3b6e9a68b099c7ef2d70881d4fee527896fa4f7b5aa", size = 2307732, upload-time = "2025-06-06T14:49:36.612Z" }, - { url = "https://files.pythonhosted.org/packages/37/57/0f72a9fe7c051ce316779b8721c707413c53ae75ab00f970d74c7876388f/fonttools-4.58.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c0bb956d9d01ea51368415515f664f58abf96557ba3c1aae4e26948ae7c86f29", size = 4718769, upload-time = "2025-06-06T14:49:39.597Z" }, - { url = "https://files.pythonhosted.org/packages/35/dd/8be06b93e24214d7dc52fd8183dbb9e75ab9638940d84d92ced25669f4d8/fonttools-4.58.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d40af8493c80ec17a1133ef429d42f1a97258dd9213b917daae9d8cafa6e0e6c", size = 4751963, upload-time = "2025-06-06T14:49:41.391Z" }, - { url = "https://files.pythonhosted.org/packages/9e/d3/85d60be364cea1b61f47bc8ea82d3e24cd6fb08640ad783fd2494bcaf4e0/fonttools-4.58.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:60b5cde1c76f6ded198da5608dddb1ee197faad7d2f0f6d3348ca0cda0c756c4", size = 4801368, upload-time = "2025-06-06T14:49:44.663Z" }, - { url = "https://files.pythonhosted.org/packages/9f/b9/98abf9c9c1ed67eed263f091fa1bbf0ea32ef65bb8f707c2ee106b877496/fonttools-4.58.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f8df6dc80ecc9033ca25a944ee5db7564fecca28e96383043fd92d9df861a159", size = 4909670, upload-time = "2025-06-06T14:49:46.751Z" }, - { url = "https://files.pythonhosted.org/packages/32/23/d8676da27a1a27cca89549f50b4a22c98e305d9ee4c67357515d9cb25ec4/fonttools-4.58.2-cp310-cp310-win32.whl", hash = "sha256:25728e980f5fbb67f52c5311b90fae4aaec08c3d3b78dce78ab564784df1129c", size = 2191921, upload-time = "2025-06-06T14:49:48.523Z" }, - { url = "https://files.pythonhosted.org/packages/0b/ff/ed6452dde8fd04299ec840a4fb112597a40468106039aed9abc8e35ba7eb/fonttools-4.58.2-cp310-cp310-win_amd64.whl", hash = "sha256:d6997ee7c2909a904802faf44b0d0208797c4d751f7611836011ace165308165", size = 2236374, upload-time = "2025-06-06T14:49:50.759Z" }, - { url = "https://files.pythonhosted.org/packages/63/d0/335d12ee943b8d67847864bba98478fedf3503d8b168eeeefadd8660256a/fonttools-4.58.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:024faaf20811296fd2f83ebdac7682276362e726ed5fea4062480dd36aff2fd9", size = 2755885, upload-time = "2025-06-06T14:49:52.459Z" }, - { url = "https://files.pythonhosted.org/packages/66/c2/d8ceb8b91e3847786a19d4b93749b1d804833482b5f79bee35b68327609e/fonttools-4.58.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2faec6e7f2abd80cd9f2392dfa28c02cfd5b1125be966ea6eddd6ca684deaa40", size = 2317804, upload-time = "2025-06-06T14:49:54.581Z" }, - { url = "https://files.pythonhosted.org/packages/7c/93/865c8d50b3a1f50ebdc02227f28bb81817df88cee75bc6f2652469e754b1/fonttools-4.58.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:520792629a938c14dd7fe185794b156cfc159c609d07b31bbb5f51af8dc7918a", size = 4916900, upload-time = "2025-06-06T14:49:56.366Z" }, - { url = "https://files.pythonhosted.org/packages/60/d1/301aec4f02995958b7af6728f838b2e5cc9296bec7eae350722dec31f685/fonttools-4.58.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:12fbc6e0bf0c75ce475ef170f2c065be6abc9e06ad19a13b56b02ec2acf02427", size = 4937358, upload-time = "2025-06-06T14:49:58.392Z" }, - { url = "https://files.pythonhosted.org/packages/15/22/75dc23a4c7200b8feb90baa82c518684a601a3a03be25f7cc3dde1525e37/fonttools-4.58.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:44a39cf856d52109127d55576c7ec010206a8ba510161a7705021f70d1649831", size = 4980151, upload-time = "2025-06-06T14:50:00.778Z" }, - { url = "https://files.pythonhosted.org/packages/14/51/5d402f65c4b0c89ce0cdbffe86646f3996da209f7bc93f1f4a13a7211ee0/fonttools-4.58.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:5390a67c55a835ad5a420da15b3d88b75412cbbd74450cb78c4916b0bd7f0a34", size = 5091255, upload-time = "2025-06-06T14:50:02.588Z" }, - { url = "https://files.pythonhosted.org/packages/c7/5e/dee28700276129db1a0ee8ab0d5574d255a1d72df7f6df58a9d26ddef687/fonttools-4.58.2-cp311-cp311-win32.whl", hash = "sha256:f7e10f4e7160bcf6a240d7560e9e299e8cb585baed96f6a616cef51180bf56cb", size = 2190095, upload-time = "2025-06-06T14:50:04.932Z" }, - { url = "https://files.pythonhosted.org/packages/bd/60/b90fda549942808b68c1c5bada4b369f4f55d4c28a7012f7537670438f82/fonttools-4.58.2-cp311-cp311-win_amd64.whl", hash = "sha256:29bdf52bfafdae362570d3f0d3119a3b10982e1ef8cb3a9d3ebb72da81cb8d5e", size = 2238013, upload-time = "2025-06-06T14:50:06.605Z" }, - { url = "https://files.pythonhosted.org/packages/eb/68/7ec64584dc592faf944d540307c3562cd893256c48bb028c90de489e4750/fonttools-4.58.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:c6eeaed9c54c1d33c1db928eb92b4e180c7cb93b50b1ee3e79b2395cb01f25e9", size = 2741645, upload-time = "2025-06-06T14:50:08.706Z" }, - { url = "https://files.pythonhosted.org/packages/8f/0c/b327838f63baa7ebdd6db3ffdf5aff638e883f9236d928be4f32c692e1bd/fonttools-4.58.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bbe1d9c72b7f981bed5c2a61443d5e3127c1b3aca28ca76386d1ad93268a803f", size = 2311100, upload-time = "2025-06-06T14:50:10.401Z" }, - { url = "https://files.pythonhosted.org/packages/ae/c7/dec024a1c873c79a4db98fe0104755fa62ec2b4518e09d6fda28246c3c9b/fonttools-4.58.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85babe5b3ce2cbe57fc0d09c0ee92bbd4d594fd7ea46a65eb43510a74a4ce773", size = 4815841, upload-time = "2025-06-06T14:50:12.496Z" }, - { url = "https://files.pythonhosted.org/packages/94/33/57c81abad641d6ec9c8b06c99cd28d687cb4849efb6168625b5c6b8f9fa4/fonttools-4.58.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:918a2854537fcdc662938057ad58b633bc9e0698f04a2f4894258213283a7932", size = 4882659, upload-time = "2025-06-06T14:50:14.361Z" }, - { url = "https://files.pythonhosted.org/packages/a5/37/2f8faa2bf8bd1ba016ea86a94c72a5e8ef8ea1c52ec64dada617191f0515/fonttools-4.58.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3b379cf05bf776c336a0205632596b1c7d7ab5f7135e3935f2ca2a0596d2d092", size = 4876128, upload-time = "2025-06-06T14:50:16.653Z" }, - { url = "https://files.pythonhosted.org/packages/a0/ca/f1caac24ae7028a33f2a95e66c640571ff0ce5cb06c4c9ca1f632e98e22c/fonttools-4.58.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:99ab3547a15a5d168c265e139e21756bbae1de04782ac9445c9ef61b8c0a32ce", size = 5027843, upload-time = "2025-06-06T14:50:18.582Z" }, - { url = "https://files.pythonhosted.org/packages/52/6e/3200fa2bafeed748a3017e4e6594751fd50cce544270919265451b21b75c/fonttools-4.58.2-cp312-cp312-win32.whl", hash = "sha256:6764e7a3188ce36eea37b477cdeca602ae62e63ae9fc768ebc176518072deb04", size = 2177374, upload-time = "2025-06-06T14:50:20.454Z" }, - { url = "https://files.pythonhosted.org/packages/55/ab/8f3e726f3f3ef3062ce9bbb615727c55beb11eea96d1f443f79cafca93ee/fonttools-4.58.2-cp312-cp312-win_amd64.whl", hash = "sha256:41f02182a1d41b79bae93c1551855146868b04ec3e7f9c57d6fef41a124e6b29", size = 2226685, upload-time = "2025-06-06T14:50:22.087Z" }, - { url = "https://files.pythonhosted.org/packages/ac/01/29f81970a508408af20b434ff5136cd1c7ef92198957eb8ddadfbb9ef177/fonttools-4.58.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:829048ef29dbefec35d95cc6811014720371c95bdc6ceb0afd2f8e407c41697c", size = 2732398, upload-time = "2025-06-06T14:50:23.821Z" }, - { url = "https://files.pythonhosted.org/packages/0c/f1/095f2338359333adb2f1c51b8b2ad94bf9a2fa17e5fcbdf8a7b8e3672d2d/fonttools-4.58.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:64998c5993431e45b474ed5f579f18555f45309dd1cf8008b594d2fe0a94be59", size = 2306390, upload-time = "2025-06-06T14:50:25.942Z" }, - { url = "https://files.pythonhosted.org/packages/bf/d4/9eba134c7666a26668c28945355cd86e5d57828b6b8d952a5489fe45d7e2/fonttools-4.58.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b887a1cf9fbcb920980460ee4a489c8aba7e81341f6cdaeefa08c0ab6529591c", size = 4795100, upload-time = "2025-06-06T14:50:27.653Z" }, - { url = "https://files.pythonhosted.org/packages/2a/34/345f153a24c1340daa62340c3be2d1e5ee6c1ee57e13f6d15613209e688b/fonttools-4.58.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27d74b9f6970cefbcda33609a3bee1618e5e57176c8b972134c4e22461b9c791", size = 4864585, upload-time = "2025-06-06T14:50:29.915Z" }, - { url = "https://files.pythonhosted.org/packages/01/5f/091979a25c9a6c4ba064716cfdfe9431f78ed6ffba4bd05ae01eee3532e9/fonttools-4.58.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ec26784610056a770e15a60f9920cee26ae10d44d1e43271ea652dadf4e7a236", size = 4866191, upload-time = "2025-06-06T14:50:32.188Z" }, - { url = "https://files.pythonhosted.org/packages/9d/09/3944d0ece4a39560918cba37c2e0453a5f826b665a6db0b43abbd9dbe7e1/fonttools-4.58.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ed0a71d57dd427c0fb89febd08cac9b925284d2a8888e982a6c04714b82698d7", size = 5003867, upload-time = "2025-06-06T14:50:34.323Z" }, - { url = "https://files.pythonhosted.org/packages/68/97/190b8f9ba22f8b7d07df2faa9fd7087b453776d0705d3cb5b0cbd89b8ef0/fonttools-4.58.2-cp313-cp313-win32.whl", hash = "sha256:994e362b01460aa863ef0cb41a29880bc1a498c546952df465deff7abf75587a", size = 2175688, upload-time = "2025-06-06T14:50:36.211Z" }, - { url = "https://files.pythonhosted.org/packages/94/ea/0e6d4a39528dbb6e0f908c2ad219975be0a506ed440fddf5453b90f76981/fonttools-4.58.2-cp313-cp313-win_amd64.whl", hash = "sha256:f95dec862d7c395f2d4efe0535d9bdaf1e3811e51b86432fa2a77e73f8195756", size = 2226464, upload-time = "2025-06-06T14:50:38.862Z" }, - { url = "https://files.pythonhosted.org/packages/e8/e5/c1cb8ebabb80be76d4d28995da9416816653f8f572920ab5e3d2e3ac8285/fonttools-4.58.2-py3-none-any.whl", hash = "sha256:84f4b0bcfa046254a65ee7117094b4907e22dc98097a220ef108030eb3c15596", size = 1114597, upload-time = "2025-06-06T14:50:56.619Z" }, +version = "4.60.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/27/d9/4eabd956fe123651a1f0efe29d9758b3837b5ae9a98934bdb571117033bb/fonttools-4.60.0.tar.gz", hash = "sha256:8f5927f049091a0ca74d35cce7f78e8f7775c83a6901a8fbe899babcc297146a", size = 3553671, upload-time = "2025-09-17T11:34:01.504Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/01/1e/7c2d660cd2a6718961946f76b6af25ae8c7ad0e2a93a34c9bf8b955cb77f/fonttools-4.60.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:151282a235c36024168c21c02193e939e8b28c73d5fa0b36ae1072671d8fa134", size = 2809773, upload-time = "2025-09-17T11:31:52.648Z" }, + { url = "https://files.pythonhosted.org/packages/f2/74/35cb2e17d984e712f0f7241b1b8bf06bc1b0da345f11620acd78a7eb1f0e/fonttools-4.60.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3f32cc42d485d9b1546463b9a7a92bdbde8aef90bac3602503e04c2ddb27e164", size = 2345916, upload-time = "2025-09-17T11:31:55.817Z" }, + { url = "https://files.pythonhosted.org/packages/40/52/39e50212f47bad254255734903accb4f44143faf2b950ba67a61f0bfb26a/fonttools-4.60.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:336b89d169c40379b8ccef418c877edbc28840b553099c9a739b0db2bcbb57c5", size = 4863583, upload-time = "2025-09-17T11:31:57.708Z" }, + { url = "https://files.pythonhosted.org/packages/0c/2c/e701ba6a439119fe312f1ad738369519b446503b02d3f0f75424111686f1/fonttools-4.60.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:39a38d950b2b04cd6da729586e6b51d686b0c27d554a2154a6a35887f87c09b1", size = 4793647, upload-time = "2025-09-17T11:31:59.944Z" }, + { url = "https://files.pythonhosted.org/packages/d5/04/a48f5f7cce1653a876d6b57d9626c1364bcb430780bbbdd475662bbbf759/fonttools-4.60.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7067dd03e0296907a5c6184285807cbb7bc0bf61a584ffebbf97c2b638d8641a", size = 4842891, upload-time = "2025-09-17T11:32:02.149Z" }, + { url = "https://files.pythonhosted.org/packages/dd/af/0f2b742f6b489a62c6f5a2239867c6d203e3ba358cb48dfc940baee41932/fonttools-4.60.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:342753fe1a1bd2e6896e7a4e936a67c0f441d6897bd11477f718e772d6e63e88", size = 4953569, upload-time = "2025-09-17T11:32:04.467Z" }, + { url = "https://files.pythonhosted.org/packages/d6/2b/23c4dde4a869aa138f5fb63fb124e6accb0d643600b437f4eca0f2637ea2/fonttools-4.60.0-cp310-cp310-win32.whl", hash = "sha256:0746c2b2b32087da2ac5f81e14d319c44cb21127d419bc60869daed089790e3d", size = 2231022, upload-time = "2025-09-17T11:32:06.617Z" }, + { url = "https://files.pythonhosted.org/packages/e3/1c/d53dd15d3392d8f69aa3bc49ca7bdfaea06aa875dc3a641eca85433c90b3/fonttools-4.60.0-cp310-cp310-win_amd64.whl", hash = "sha256:b83b32e5e8918f8e0ccd79816fc2f914e30edc6969ab2df6baf4148e72dbcc11", size = 2275804, upload-time = "2025-09-17T11:32:08.578Z" }, + { url = "https://files.pythonhosted.org/packages/da/3d/c57731fbbf204ef1045caca28d5176430161ead73cd9feac3e9d9ef77ee6/fonttools-4.60.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a9106c202d68ff5f9b4a0094c4d7ad2eaa7e9280f06427b09643215e706eb016", size = 2830883, upload-time = "2025-09-17T11:32:10.552Z" }, + { url = "https://files.pythonhosted.org/packages/cc/2d/b7a6ebaed464ce441c755252cc222af11edc651d17c8f26482f429cc2c0e/fonttools-4.60.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9da3a4a3f2485b156bb429b4f8faa972480fc01f553f7c8c80d05d48f17eec89", size = 2356005, upload-time = "2025-09-17T11:32:13.248Z" }, + { url = "https://files.pythonhosted.org/packages/ee/c2/ea834e921324e2051403e125c1fe0bfbdde4951a7c1784e4ae6bdbd286cc/fonttools-4.60.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1f84de764c6057b2ffd4feb50ddef481d92e348f0c70f2c849b723118d352bf3", size = 5041201, upload-time = "2025-09-17T11:32:15.373Z" }, + { url = "https://files.pythonhosted.org/packages/93/3c/1c64a338e9aa410d2d0728827d5bb1301463078cb225b94589f27558b427/fonttools-4.60.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:800b3fa0d5c12ddff02179d45b035a23989a6c597a71c8035c010fff3b2ef1bb", size = 4977696, upload-time = "2025-09-17T11:32:17.674Z" }, + { url = "https://files.pythonhosted.org/packages/07/cc/c8c411a0d9732bb886b870e052f20658fec9cf91118314f253950d2c1d65/fonttools-4.60.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd68f60b030277f292a582d31c374edfadc60bb33d51ec7b6cd4304531819ba", size = 5020386, upload-time = "2025-09-17T11:32:20.089Z" }, + { url = "https://files.pythonhosted.org/packages/13/01/1d3bc07cf92e7f4fc27f06d4494bf6078dc595b2e01b959157a4fd23df12/fonttools-4.60.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:53328e3ca9e5c8660ef6de07c35f8f312c189b757535e12141be7a8ec942de6e", size = 5131575, upload-time = "2025-09-17T11:32:22.582Z" }, + { url = "https://files.pythonhosted.org/packages/5a/16/08db3917ee19e89d2eb0ee637d37cd4136c849dc421ff63f406b9165c1a1/fonttools-4.60.0-cp311-cp311-win32.whl", hash = "sha256:d493c175ddd0b88a5376e61163e3e6fde3be8b8987db9b092e0a84650709c9e7", size = 2229297, upload-time = "2025-09-17T11:32:24.834Z" }, + { url = "https://files.pythonhosted.org/packages/d2/0b/76764da82c0dfcea144861f568d9e83f4b921e84f2be617b451257bb25a7/fonttools-4.60.0-cp311-cp311-win_amd64.whl", hash = "sha256:cc2770c9dc49c2d0366e9683f4d03beb46c98042d7ccc8ddbadf3459ecb051a7", size = 2277193, upload-time = "2025-09-17T11:32:27.094Z" }, + { url = "https://files.pythonhosted.org/packages/2a/9b/706ebf84b55ab03439c1f3a94d6915123c0d96099f4238b254fdacffe03a/fonttools-4.60.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:8c68928a438d60dfde90e2f09aa7f848ed201176ca6652341744ceec4215859f", size = 2831953, upload-time = "2025-09-17T11:32:29.39Z" }, + { url = "https://files.pythonhosted.org/packages/76/40/782f485be450846e4f3aecff1f10e42af414fc6e19d235c70020f64278e1/fonttools-4.60.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b7133821249097cffabf0624eafd37f5a3358d5ce814febe9db688e3673e724e", size = 2351716, upload-time = "2025-09-17T11:32:31.46Z" }, + { url = "https://files.pythonhosted.org/packages/39/77/ad8d2a6ecc19716eb488c8cf118de10f7802e14bdf61d136d7b52358d6b1/fonttools-4.60.0-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:d3638905d3d77ac8791127ce181f7cb434f37e4204d8b2e31b8f1e154320b41f", size = 4922729, upload-time = "2025-09-17T11:32:33.659Z" }, + { url = "https://files.pythonhosted.org/packages/6b/48/aa543037c6e7788e1bc36b3f858ac70a59d32d0f45915263d0b330a35140/fonttools-4.60.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7968a26ef010ae89aabbb2f8e9dec1e2709a2541bb8620790451ee8aeb4f6fbf", size = 4967188, upload-time = "2025-09-17T11:32:35.74Z" }, + { url = "https://files.pythonhosted.org/packages/ac/58/e407d2028adc6387947eff8f2940b31f4ed40b9a83c2c7bbc8b9255126e2/fonttools-4.60.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1ef01ca7847c356b0fe026b7b92304bc31dc60a4218689ee0acc66652c1a36b2", size = 4910043, upload-time = "2025-09-17T11:32:38.054Z" }, + { url = "https://files.pythonhosted.org/packages/16/ef/e78519b3c296ef757a21b792fc6a785aa2ef9a2efb098083d8ed5f6ee2ba/fonttools-4.60.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f3482d7ed7867edfcf785f77c1dffc876c4b2ddac19539c075712ff2a0703cf5", size = 5061980, upload-time = "2025-09-17T11:32:40.457Z" }, + { url = "https://files.pythonhosted.org/packages/00/4c/ad72444d1e3ef704ee90af8d5abf198016a39908d322bf41235562fb01a0/fonttools-4.60.0-cp312-cp312-win32.whl", hash = "sha256:8c937c4fe8addff575a984c9519433391180bf52cf35895524a07b520f376067", size = 2217750, upload-time = "2025-09-17T11:32:42.586Z" }, + { url = "https://files.pythonhosted.org/packages/46/55/3e8ac21963e130242f5a9ea2ebc57f5726d704bf4dcca89088b5b637b2d3/fonttools-4.60.0-cp312-cp312-win_amd64.whl", hash = "sha256:99b06d5d6f29f32e312adaed0367112f5ff2d300ea24363d377ec917daf9e8c5", size = 2266025, upload-time = "2025-09-17T11:32:44.8Z" }, + { url = "https://files.pythonhosted.org/packages/b4/6b/d090cd54abe88192fe3010f573508b2592cf1d1f98b14bcb799a8ad20525/fonttools-4.60.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:97100ba820936cdb5148b634e0884f0088699c7e2f1302ae7bba3747c7a19fb3", size = 2824791, upload-time = "2025-09-17T11:32:47.002Z" }, + { url = "https://files.pythonhosted.org/packages/97/8c/7ccb5a27aac9a535623fe04935fb9f469a4f8a1253991af9fbac2fe88c17/fonttools-4.60.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:03fccf84f377f83e99a5328a9ebe6b41e16fcf64a1450c352b6aa7e0deedbc01", size = 2347081, upload-time = "2025-09-17T11:32:49.204Z" }, + { url = "https://files.pythonhosted.org/packages/f8/1a/c14f0bb20b4cb7849dc0519f0ab0da74318d52236dc23168530569958599/fonttools-4.60.0-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:a3ef06671f862cd7da78ab105fbf8dce9da3634a8f91b3a64ed5c29c0ac6a9a8", size = 4902095, upload-time = "2025-09-17T11:32:51.848Z" }, + { url = "https://files.pythonhosted.org/packages/c9/a0/c7c91f07c40de5399cbaec7d25e04c9afac6c8f80036a98c125efdb5fe1a/fonttools-4.60.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3f2195faf96594c238462c420c7eff97d1aa51de595434f806ec3952df428616", size = 4959137, upload-time = "2025-09-17T11:32:54.185Z" }, + { url = "https://files.pythonhosted.org/packages/38/d2/169e49498df9f2c721763aa39b0bf3d08cb762864ebc8a8ddb99f5ba7ec8/fonttools-4.60.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3887008865fa4f56cff58a1878f1300ba81a4e34f76daf9b47234698493072ee", size = 4900467, upload-time = "2025-09-17T11:32:56.664Z" }, + { url = "https://files.pythonhosted.org/packages/cc/9c/bfb56b89c3eab8bcb739c7fd1e8a43285c8dd833e1e1d18d4f54f2f641af/fonttools-4.60.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5567bd130378f21231d3856d8f0571dcdfcd77e47832978c26dabe572d456daa", size = 5043508, upload-time = "2025-09-17T11:32:58.944Z" }, + { url = "https://files.pythonhosted.org/packages/77/30/2b511c7eb99faee1fd9a0b42e984fb91275da3d681da650af4edf409d0fd/fonttools-4.60.0-cp313-cp313-win32.whl", hash = "sha256:699d0b521ec0b188ac11f2c14ccf6a926367795818ddf2bd00a273e9a052dd20", size = 2216037, upload-time = "2025-09-17T11:33:01.192Z" }, + { url = "https://files.pythonhosted.org/packages/3d/73/a2cc5ee4faeb0302cc81942c27f3b516801bf489fdc422a1b20090fff695/fonttools-4.60.0-cp313-cp313-win_amd64.whl", hash = "sha256:24296163268e7c800009711ce5c0e9997be8882c0bd546696c82ef45966163a6", size = 2265190, upload-time = "2025-09-17T11:33:03.935Z" }, + { url = "https://files.pythonhosted.org/packages/86/dd/a126706e45e0ce097cef6de4108b5597795acaa945fdbdd922dbc090d335/fonttools-4.60.0-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:b6fe3efdc956bdad95145cea906ad9ff345c17b706356dfc1098ce3230591343", size = 2821835, upload-time = "2025-09-17T11:33:06.094Z" }, + { url = "https://files.pythonhosted.org/packages/ac/90/5c17f311bbd983fd614b82a7a06da967b5d3c87e3e61cf34de6029a92ff4/fonttools-4.60.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:764b2aaab839762a3aa3207e5b3f0e0dfa41799e0b091edec5fcbccc584fdab5", size = 2344536, upload-time = "2025-09-17T11:33:08.574Z" }, + { url = "https://files.pythonhosted.org/packages/60/67/48c1a6229b2a5668c4111fbd1694ca417adedc1254c5cd2f9a11834c429d/fonttools-4.60.0-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b81c7c47d9e78106a4d70f1dbeb49150513171715e45e0d2661809f2b0e3f710", size = 4842494, upload-time = "2025-09-17T11:33:11.338Z" }, + { url = "https://files.pythonhosted.org/packages/13/3e/83b0b37d02b7e321cbe2b8fcec0aa18571f0a47d3dc222196404371d83b6/fonttools-4.60.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:799ff60ee66b300ebe1fe6632b1cc55a66400fe815cef7b034d076bce6b1d8fc", size = 4943203, upload-time = "2025-09-17T11:33:13.285Z" }, + { url = "https://files.pythonhosted.org/packages/c9/07/11163e49497c53392eaca210a474104e4987c17ca7731f8754ba0d416a67/fonttools-4.60.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:f9878abe155ddd1b433bab95d027a686898a6afba961f3c5ca14b27488f2d772", size = 4889233, upload-time = "2025-09-17T11:33:15.175Z" }, + { url = "https://files.pythonhosted.org/packages/60/90/e85005d955cb26e7de015d5678778b8cc3293c0f3d717865675bd641fbfc/fonttools-4.60.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ded432b7133ea4602fdb4731a4a7443a8e9548edad28987b99590cf6da626254", size = 4998335, upload-time = "2025-09-17T11:33:17.217Z" }, + { url = "https://files.pythonhosted.org/packages/2a/82/0374ad53729de6e3788ecdb8a3731ce6592c5ffa9bff823cef2ffe0164af/fonttools-4.60.0-cp314-cp314-win32.whl", hash = "sha256:5d97cf3a9245316d5978628c05642b939809c4f55ca632ca40744cb9de6e8d4a", size = 2219840, upload-time = "2025-09-17T11:33:19.494Z" }, + { url = "https://files.pythonhosted.org/packages/11/c3/804cd47453dcafb7976f9825b43cc0e61a2fe30eddb971b681cd72c4ca65/fonttools-4.60.0-cp314-cp314-win_amd64.whl", hash = "sha256:61b9ef46dd5e9dcb6f437eb0cc5ed83d5049e1bf9348e31974ffee1235db0f8f", size = 2269891, upload-time = "2025-09-17T11:33:21.743Z" }, + { url = "https://files.pythonhosted.org/packages/75/bf/1bd760aca04098e7028b4e0e5f73b41ff74b322275698071454652476a44/fonttools-4.60.0-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:bba7e3470cf353e1484a36dfb4108f431c2859e3f6097fe10118eeae92166773", size = 2893361, upload-time = "2025-09-17T11:33:23.68Z" }, + { url = "https://files.pythonhosted.org/packages/25/35/7a2c09aa990ed77f34924def383f44fc576a5596cc3df8438071e1baa1ac/fonttools-4.60.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:c5ac6439a38c27b3287063176b3303b34982024b01e2e95bba8ac1e45f6d41c1", size = 2374086, upload-time = "2025-09-17T11:33:25.988Z" }, + { url = "https://files.pythonhosted.org/packages/77/a9/f85ed2493e82837ff73421f3f7a1c3ae8f0b14051307418c916d9563da1f/fonttools-4.60.0-cp314-cp314t-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:4acd21e9f125a1257da59edf7a6e9bd4abd76282770715c613f1fe482409e9f9", size = 4848766, upload-time = "2025-09-17T11:33:28.018Z" }, + { url = "https://files.pythonhosted.org/packages/d1/91/29830eda31ae9231a06d5246e5d0c686422d03456ed666e13576c24c3f97/fonttools-4.60.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b4a6fc53039ea047e35dc62b958af9cd397eedbc3fa42406d2910ae091b9ae37", size = 5084613, upload-time = "2025-09-17T11:33:30.562Z" }, + { url = "https://files.pythonhosted.org/packages/48/01/615905e7db2568fe1843145077e680443494b7caab2089527b7e112c7606/fonttools-4.60.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:ef34f44eadf133e94e82c775a33ee3091dd37ee0161c5f5ea224b46e3ce0fb8e", size = 4956620, upload-time = "2025-09-17T11:33:32.497Z" }, + { url = "https://files.pythonhosted.org/packages/97/8e/64e65255871ec2f13b6c00b5b12d08b928b504867cfb7e7ed73e5e941832/fonttools-4.60.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:d112cae3e7ad1bb5d7f7a60365fcf6c181374648e064a8c07617b240e7c828ee", size = 4973202, upload-time = "2025-09-17T11:33:34.561Z" }, + { url = "https://files.pythonhosted.org/packages/e0/6d/04d16243eb441e8de61074c7809e92d2e35df4cd11af5632e486bc630dab/fonttools-4.60.0-cp314-cp314t-win32.whl", hash = "sha256:0f7b2c251dc338973e892a1e153016114e7a75f6aac7a49b84d5d1a4c0608d08", size = 2281217, upload-time = "2025-09-17T11:33:36.965Z" }, + { url = "https://files.pythonhosted.org/packages/ab/5f/09bd2f9f28ef0d6f3620fa19699d11c4bc83ff8a2786d8ccdd97c209b19a/fonttools-4.60.0-cp314-cp314t-win_amd64.whl", hash = "sha256:c8a72771106bc7434098db35abecd84d608857f6e116d3ef00366b213c502ce9", size = 2344738, upload-time = "2025-09-17T11:33:39.372Z" }, + { url = "https://files.pythonhosted.org/packages/f9/a4/247d3e54eb5ed59e94e09866cfc4f9567e274fbf310ba390711851f63b3b/fonttools-4.60.0-py3-none-any.whl", hash = "sha256:496d26e4d14dcccdd6ada2e937e4d174d3138e3d73f5c9b6ec6eb2fd1dab4f66", size = 1142186, upload-time = "2025-09-17T11:33:59.287Z" }, ] [[package]] @@ -1171,29 +1590,30 @@ wheels = [ [[package]] name = "fsspec" -version = "2025.5.1" +version = "2025.9.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/00/f7/27f15d41f0ed38e8fcc488584b57e902b331da7f7c6dcda53721b15838fc/fsspec-2025.5.1.tar.gz", hash = "sha256:2e55e47a540b91843b755e83ded97c6e897fa0942b11490113f09e9c443c2475", size = 303033, upload-time = "2025-05-24T12:03:23.792Z" } +sdist = { url = "https://files.pythonhosted.org/packages/de/e0/bab50af11c2d75c9c4a2a26a5254573c0bd97cea152254401510950486fa/fsspec-2025.9.0.tar.gz", hash = "sha256:19fd429483d25d28b65ec68f9f4adc16c17ea2c7c7bf54ec61360d478fb19c19", size = 304847, upload-time = "2025-09-02T19:10:49.215Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/bb/61/78c7b3851add1481b048b5fdc29067397a1784e2910592bc81bb3f608635/fsspec-2025.5.1-py3-none-any.whl", hash = "sha256:24d3a2e663d5fc735ab256263c4075f374a174c3410c0b25e5bd1970bceaa462", size = 199052, upload-time = "2025-05-24T12:03:21.66Z" }, + { url = "https://files.pythonhosted.org/packages/47/71/70db47e4f6ce3e5c37a607355f80da8860a33226be640226ac52cb05ef2e/fsspec-2025.9.0-py3-none-any.whl", hash = "sha256:530dc2a2af60a414a832059574df4a6e10cce927f6f4a78209390fe38955cfb7", size = 199289, upload-time = "2025-09-02T19:10:47.708Z" }, ] [[package]] name = "geopandas" -version = "1.1.0" +version = "1.1.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, { name = "packaging" }, { name = "pandas", version = "2.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, - { name = "pandas", version = "2.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, + { name = "pandas", version = "2.3.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, { name = "pyogrio" }, - { name = "pyproj" }, + { name = "pyproj", version = "3.7.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "pyproj", version = "3.7.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "shapely" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/98/ca/e62641e5391285cda854c2802e706e6686f62fc9d919ecf78ff7f8d42654/geopandas-1.1.0.tar.gz", hash = "sha256:d176b084170539044ce7554a1219a4433fa1bfba94035b5a519c8986330e429e", size = 331955, upload-time = "2025-06-01T16:54:30.854Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8c/76/e1960ba846f153ab109575242abf89dc98f8e057faa32f3decf4cce9247a/geopandas-1.1.1.tar.gz", hash = "sha256:1745713f64d095c43e72e08e753dbd271678254b24f2e01db8cdb8debe1d293d", size = 332655, upload-time = "2025-06-26T21:04:56.57Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/be/82/79e02a0e5dd4aca81894842b9d6522624a40048a913c6384efb2987a4144/geopandas-1.1.0-py3-none-any.whl", hash = "sha256:b19b18bdc736ee05b237f5e9184211c452768a4c883f7d7f8421b0cbe1da5875", size = 338014, upload-time = "2025-06-01T16:54:29.239Z" }, + { url = "https://files.pythonhosted.org/packages/0b/70/d5cd0696eff08e62fdbdebe5b46527facb4e7220eabe0ac6225efab50168/geopandas-1.1.1-py3-none-any.whl", hash = "sha256:589e61aaf39b19828843df16cb90234e72897e2579be236f10eee0d052ad98e8", size = 338365, upload-time = "2025-06-26T21:04:55.139Z" }, ] [[package]] @@ -1219,65 +1639,77 @@ wheels = [ [[package]] name = "gitpython" -version = "3.1.44" +version = "3.1.45" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "gitdb" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c0/89/37df0b71473153574a5cdef8f242de422a0f5d26d7a9e231e6f169b4ad14/gitpython-3.1.44.tar.gz", hash = "sha256:c87e30b26253bf5418b01b0660f818967f3c503193838337fe5e573331249269", size = 214196, upload-time = "2025-01-02T07:32:43.59Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9a/c8/dd58967d119baab745caec2f9d853297cec1989ec1d63f677d3880632b88/gitpython-3.1.45.tar.gz", hash = "sha256:85b0ee964ceddf211c41b9f27a49086010a190fd8132a24e21f362a4b36a791c", size = 215076, upload-time = "2025-07-24T03:45:54.871Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1d/9a/4114a9057db2f1462d5c8f8390ab7383925fe1ac012eaa42402ad65c2963/GitPython-3.1.44-py3-none-any.whl", hash = "sha256:9e0e10cda9bed1ee64bc9a6de50e7e38a9c9943241cd7f585f6df3ed28011110", size = 207599, upload-time = "2025-01-02T07:32:40.731Z" }, + { url = "https://files.pythonhosted.org/packages/01/61/d4b89fec821f72385526e1b9d9a3a0385dda4a72b206d28049e2c7cd39b8/gitpython-3.1.45-py3-none-any.whl", hash = "sha256:8908cb2e02fb3b93b7eb0f2827125cb699869470432cc885f019b8fd0fccff77", size = 208168, upload-time = "2025-07-24T03:45:52.517Z" }, ] [[package]] name = "greenlet" -version = "3.2.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c9/92/bb85bd6e80148a4d2e0c59f7c0c2891029f8fd510183afc7d8d2feeed9b6/greenlet-3.2.3.tar.gz", hash = "sha256:8b0dd8ae4c0d6f5e54ee55ba935eeb3d735a9b58a8a1e5b5cbab64e01a39f365", size = 185752, upload-time = "2025-06-05T16:16:09.955Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/92/db/b4c12cff13ebac2786f4f217f06588bccd8b53d260453404ef22b121fc3a/greenlet-3.2.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:1afd685acd5597349ee6d7a88a8bec83ce13c106ac78c196ee9dde7c04fe87be", size = 268977, upload-time = "2025-06-05T16:10:24.001Z" }, - { url = "https://files.pythonhosted.org/packages/52/61/75b4abd8147f13f70986df2801bf93735c1bd87ea780d70e3b3ecda8c165/greenlet-3.2.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:761917cac215c61e9dc7324b2606107b3b292a8349bdebb31503ab4de3f559ac", size = 627351, upload-time = "2025-06-05T16:38:50.685Z" }, - { url = "https://files.pythonhosted.org/packages/35/aa/6894ae299d059d26254779a5088632874b80ee8cf89a88bca00b0709d22f/greenlet-3.2.3-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:a433dbc54e4a37e4fff90ef34f25a8c00aed99b06856f0119dcf09fbafa16392", size = 638599, upload-time = "2025-06-05T16:41:34.057Z" }, - { url = "https://files.pythonhosted.org/packages/30/64/e01a8261d13c47f3c082519a5e9dbf9e143cc0498ed20c911d04e54d526c/greenlet-3.2.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:72e77ed69312bab0434d7292316d5afd6896192ac4327d44f3d613ecb85b037c", size = 634482, upload-time = "2025-06-05T16:48:16.26Z" }, - { url = "https://files.pythonhosted.org/packages/47/48/ff9ca8ba9772d083a4f5221f7b4f0ebe8978131a9ae0909cf202f94cd879/greenlet-3.2.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:68671180e3849b963649254a882cd544a3c75bfcd2c527346ad8bb53494444db", size = 633284, upload-time = "2025-06-05T16:13:01.599Z" }, - { url = "https://files.pythonhosted.org/packages/e9/45/626e974948713bc15775b696adb3eb0bd708bec267d6d2d5c47bb47a6119/greenlet-3.2.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:49c8cfb18fb419b3d08e011228ef8a25882397f3a859b9fe1436946140b6756b", size = 582206, upload-time = "2025-06-05T16:12:48.51Z" }, - { url = "https://files.pythonhosted.org/packages/b1/8e/8b6f42c67d5df7db35b8c55c9a850ea045219741bb14416255616808c690/greenlet-3.2.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:efc6dc8a792243c31f2f5674b670b3a95d46fa1c6a912b8e310d6f542e7b0712", size = 1111412, upload-time = "2025-06-05T16:36:45.479Z" }, - { url = "https://files.pythonhosted.org/packages/05/46/ab58828217349500a7ebb81159d52ca357da747ff1797c29c6023d79d798/greenlet-3.2.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:731e154aba8e757aedd0781d4b240f1225b075b4409f1bb83b05ff410582cf00", size = 1135054, upload-time = "2025-06-05T16:12:36.478Z" }, - { url = "https://files.pythonhosted.org/packages/68/7f/d1b537be5080721c0f0089a8447d4ef72839039cdb743bdd8ffd23046e9a/greenlet-3.2.3-cp310-cp310-win_amd64.whl", hash = "sha256:96c20252c2f792defe9a115d3287e14811036d51e78b3aaddbee23b69b216302", size = 296573, upload-time = "2025-06-05T16:34:26.521Z" }, - { url = "https://files.pythonhosted.org/packages/fc/2e/d4fcb2978f826358b673f779f78fa8a32ee37df11920dc2bb5589cbeecef/greenlet-3.2.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:784ae58bba89fa1fa5733d170d42486580cab9decda3484779f4759345b29822", size = 270219, upload-time = "2025-06-05T16:10:10.414Z" }, - { url = "https://files.pythonhosted.org/packages/16/24/929f853e0202130e4fe163bc1d05a671ce8dcd604f790e14896adac43a52/greenlet-3.2.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0921ac4ea42a5315d3446120ad48f90c3a6b9bb93dd9b3cf4e4d84a66e42de83", size = 630383, upload-time = "2025-06-05T16:38:51.785Z" }, - { url = "https://files.pythonhosted.org/packages/d1/b2/0320715eb61ae70c25ceca2f1d5ae620477d246692d9cc284c13242ec31c/greenlet-3.2.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:d2971d93bb99e05f8c2c0c2f4aa9484a18d98c4c3bd3c62b65b7e6ae33dfcfaf", size = 642422, upload-time = "2025-06-05T16:41:35.259Z" }, - { url = "https://files.pythonhosted.org/packages/bd/49/445fd1a210f4747fedf77615d941444349c6a3a4a1135bba9701337cd966/greenlet-3.2.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:c667c0bf9d406b77a15c924ef3285e1e05250948001220368e039b6aa5b5034b", size = 638375, upload-time = "2025-06-05T16:48:18.235Z" }, - { url = "https://files.pythonhosted.org/packages/7e/c8/ca19760cf6eae75fa8dc32b487e963d863b3ee04a7637da77b616703bc37/greenlet-3.2.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:592c12fb1165be74592f5de0d70f82bc5ba552ac44800d632214b76089945147", size = 637627, upload-time = "2025-06-05T16:13:02.858Z" }, - { url = "https://files.pythonhosted.org/packages/65/89/77acf9e3da38e9bcfca881e43b02ed467c1dedc387021fc4d9bd9928afb8/greenlet-3.2.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:29e184536ba333003540790ba29829ac14bb645514fbd7e32af331e8202a62a5", size = 585502, upload-time = "2025-06-05T16:12:49.642Z" }, - { url = "https://files.pythonhosted.org/packages/97/c6/ae244d7c95b23b7130136e07a9cc5aadd60d59b5951180dc7dc7e8edaba7/greenlet-3.2.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:93c0bb79844a367782ec4f429d07589417052e621aa39a5ac1fb99c5aa308edc", size = 1114498, upload-time = "2025-06-05T16:36:46.598Z" }, - { url = "https://files.pythonhosted.org/packages/89/5f/b16dec0cbfd3070658e0d744487919740c6d45eb90946f6787689a7efbce/greenlet-3.2.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:751261fc5ad7b6705f5f76726567375bb2104a059454e0226e1eef6c756748ba", size = 1139977, upload-time = "2025-06-05T16:12:38.262Z" }, - { url = "https://files.pythonhosted.org/packages/66/77/d48fb441b5a71125bcac042fc5b1494c806ccb9a1432ecaa421e72157f77/greenlet-3.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:83a8761c75312361aa2b5b903b79da97f13f556164a7dd2d5448655425bd4c34", size = 297017, upload-time = "2025-06-05T16:25:05.225Z" }, - { url = "https://files.pythonhosted.org/packages/f3/94/ad0d435f7c48debe960c53b8f60fb41c2026b1d0fa4a99a1cb17c3461e09/greenlet-3.2.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:25ad29caed5783d4bd7a85c9251c651696164622494c00802a139c00d639242d", size = 271992, upload-time = "2025-06-05T16:11:23.467Z" }, - { url = "https://files.pythonhosted.org/packages/93/5d/7c27cf4d003d6e77749d299c7c8f5fd50b4f251647b5c2e97e1f20da0ab5/greenlet-3.2.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:88cd97bf37fe24a6710ec6a3a7799f3f81d9cd33317dcf565ff9950c83f55e0b", size = 638820, upload-time = "2025-06-05T16:38:52.882Z" }, - { url = "https://files.pythonhosted.org/packages/c6/7e/807e1e9be07a125bb4c169144937910bf59b9d2f6d931578e57f0bce0ae2/greenlet-3.2.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:baeedccca94880d2f5666b4fa16fc20ef50ba1ee353ee2d7092b383a243b0b0d", size = 653046, upload-time = "2025-06-05T16:41:36.343Z" }, - { url = "https://files.pythonhosted.org/packages/9d/ab/158c1a4ea1068bdbc78dba5a3de57e4c7aeb4e7fa034320ea94c688bfb61/greenlet-3.2.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:be52af4b6292baecfa0f397f3edb3c6092ce071b499dd6fe292c9ac9f2c8f264", size = 647701, upload-time = "2025-06-05T16:48:19.604Z" }, - { url = "https://files.pythonhosted.org/packages/cc/0d/93729068259b550d6a0288da4ff72b86ed05626eaf1eb7c0d3466a2571de/greenlet-3.2.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0cc73378150b8b78b0c9fe2ce56e166695e67478550769536a6742dca3651688", size = 649747, upload-time = "2025-06-05T16:13:04.628Z" }, - { url = "https://files.pythonhosted.org/packages/f6/f6/c82ac1851c60851302d8581680573245c8fc300253fc1ff741ae74a6c24d/greenlet-3.2.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:706d016a03e78df129f68c4c9b4c4f963f7d73534e48a24f5f5a7101ed13dbbb", size = 605461, upload-time = "2025-06-05T16:12:50.792Z" }, - { url = "https://files.pythonhosted.org/packages/98/82/d022cf25ca39cf1200650fc58c52af32c90f80479c25d1cbf57980ec3065/greenlet-3.2.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:419e60f80709510c343c57b4bb5a339d8767bf9aef9b8ce43f4f143240f88b7c", size = 1121190, upload-time = "2025-06-05T16:36:48.59Z" }, - { url = "https://files.pythonhosted.org/packages/f5/e1/25297f70717abe8104c20ecf7af0a5b82d2f5a980eb1ac79f65654799f9f/greenlet-3.2.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:93d48533fade144203816783373f27a97e4193177ebaaf0fc396db19e5d61163", size = 1149055, upload-time = "2025-06-05T16:12:40.457Z" }, - { url = "https://files.pythonhosted.org/packages/1f/8f/8f9e56c5e82eb2c26e8cde787962e66494312dc8cb261c460e1f3a9c88bc/greenlet-3.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:7454d37c740bb27bdeddfc3f358f26956a07d5220818ceb467a483197d84f849", size = 297817, upload-time = "2025-06-05T16:29:49.244Z" }, - { url = "https://files.pythonhosted.org/packages/b1/cf/f5c0b23309070ae93de75c90d29300751a5aacefc0a3ed1b1d8edb28f08b/greenlet-3.2.3-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:500b8689aa9dd1ab26872a34084503aeddefcb438e2e7317b89b11eaea1901ad", size = 270732, upload-time = "2025-06-05T16:10:08.26Z" }, - { url = "https://files.pythonhosted.org/packages/48/ae/91a957ba60482d3fecf9be49bc3948f341d706b52ddb9d83a70d42abd498/greenlet-3.2.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a07d3472c2a93117af3b0136f246b2833fdc0b542d4a9799ae5f41c28323faef", size = 639033, upload-time = "2025-06-05T16:38:53.983Z" }, - { url = "https://files.pythonhosted.org/packages/6f/df/20ffa66dd5a7a7beffa6451bdb7400d66251374ab40b99981478c69a67a8/greenlet-3.2.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:8704b3768d2f51150626962f4b9a9e4a17d2e37c8a8d9867bbd9fa4eb938d3b3", size = 652999, upload-time = "2025-06-05T16:41:37.89Z" }, - { url = "https://files.pythonhosted.org/packages/51/b4/ebb2c8cb41e521f1d72bf0465f2f9a2fd803f674a88db228887e6847077e/greenlet-3.2.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:5035d77a27b7c62db6cf41cf786cfe2242644a7a337a0e155c80960598baab95", size = 647368, upload-time = "2025-06-05T16:48:21.467Z" }, - { url = "https://files.pythonhosted.org/packages/8e/6a/1e1b5aa10dced4ae876a322155705257748108b7fd2e4fae3f2a091fe81a/greenlet-3.2.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2d8aa5423cd4a396792f6d4580f88bdc6efcb9205891c9d40d20f6e670992efb", size = 650037, upload-time = "2025-06-05T16:13:06.402Z" }, - { url = "https://files.pythonhosted.org/packages/26/f2/ad51331a157c7015c675702e2d5230c243695c788f8f75feba1af32b3617/greenlet-3.2.3-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2c724620a101f8170065d7dded3f962a2aea7a7dae133a009cada42847e04a7b", size = 608402, upload-time = "2025-06-05T16:12:51.91Z" }, - { url = "https://files.pythonhosted.org/packages/26/bc/862bd2083e6b3aff23300900a956f4ea9a4059de337f5c8734346b9b34fc/greenlet-3.2.3-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:873abe55f134c48e1f2a6f53f7d1419192a3d1a4e873bace00499a4e45ea6af0", size = 1119577, upload-time = "2025-06-05T16:36:49.787Z" }, - { url = "https://files.pythonhosted.org/packages/86/94/1fc0cc068cfde885170e01de40a619b00eaa8f2916bf3541744730ffb4c3/greenlet-3.2.3-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:024571bbce5f2c1cfff08bf3fbaa43bbc7444f580ae13b0099e95d0e6e67ed36", size = 1147121, upload-time = "2025-06-05T16:12:42.527Z" }, - { url = "https://files.pythonhosted.org/packages/27/1a/199f9587e8cb08a0658f9c30f3799244307614148ffe8b1e3aa22f324dea/greenlet-3.2.3-cp313-cp313-win_amd64.whl", hash = "sha256:5195fb1e75e592dd04ce79881c8a22becdfa3e6f500e7feb059b1e6fdd54d3e3", size = 297603, upload-time = "2025-06-05T16:20:12.651Z" }, - { url = "https://files.pythonhosted.org/packages/d8/ca/accd7aa5280eb92b70ed9e8f7fd79dc50a2c21d8c73b9a0856f5b564e222/greenlet-3.2.3-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:3d04332dddb10b4a211b68111dabaee2e1a073663d117dc10247b5b1642bac86", size = 271479, upload-time = "2025-06-05T16:10:47.525Z" }, - { url = "https://files.pythonhosted.org/packages/55/71/01ed9895d9eb49223280ecc98a557585edfa56b3d0e965b9fa9f7f06b6d9/greenlet-3.2.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8186162dffde068a465deab08fc72c767196895c39db26ab1c17c0b77a6d8b97", size = 683952, upload-time = "2025-06-05T16:38:55.125Z" }, - { url = "https://files.pythonhosted.org/packages/ea/61/638c4bdf460c3c678a0a1ef4c200f347dff80719597e53b5edb2fb27ab54/greenlet-3.2.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f4bfbaa6096b1b7a200024784217defedf46a07c2eee1a498e94a1b5f8ec5728", size = 696917, upload-time = "2025-06-05T16:41:38.959Z" }, - { url = "https://files.pythonhosted.org/packages/22/cc/0bd1a7eb759d1f3e3cc2d1bc0f0b487ad3cc9f34d74da4b80f226fde4ec3/greenlet-3.2.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:ed6cfa9200484d234d8394c70f5492f144b20d4533f69262d530a1a082f6ee9a", size = 692443, upload-time = "2025-06-05T16:48:23.113Z" }, - { url = "https://files.pythonhosted.org/packages/67/10/b2a4b63d3f08362662e89c103f7fe28894a51ae0bc890fabf37d1d780e52/greenlet-3.2.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:02b0df6f63cd15012bed5401b47829cfd2e97052dc89da3cfaf2c779124eb892", size = 692995, upload-time = "2025-06-05T16:13:07.972Z" }, - { url = "https://files.pythonhosted.org/packages/5a/c6/ad82f148a4e3ce9564056453a71529732baf5448ad53fc323e37efe34f66/greenlet-3.2.3-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:86c2d68e87107c1792e2e8d5399acec2487a4e993ab76c792408e59394d52141", size = 655320, upload-time = "2025-06-05T16:12:53.453Z" }, - { url = "https://files.pythonhosted.org/packages/5c/4f/aab73ecaa6b3086a4c89863d94cf26fa84cbff63f52ce9bc4342b3087a06/greenlet-3.2.3-cp314-cp314-win_amd64.whl", hash = "sha256:8c47aae8fbbfcf82cc13327ae802ba13c9c36753b67e760023fd116bc124a62a", size = 301236, upload-time = "2025-06-05T16:15:20.111Z" }, +version = "3.2.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/03/b8/704d753a5a45507a7aab61f18db9509302ed3d0a27ac7e0359ec2905b1a6/greenlet-3.2.4.tar.gz", hash = "sha256:0dca0d95ff849f9a364385f36ab49f50065d76964944638be9691e1832e9f86d", size = 188260, upload-time = "2025-08-07T13:24:33.51Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7d/ed/6bfa4109fcb23a58819600392564fea69cdc6551ffd5e69ccf1d52a40cbc/greenlet-3.2.4-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:8c68325b0d0acf8d91dde4e6f930967dd52a5302cd4062932a6b2e7c2969f47c", size = 271061, upload-time = "2025-08-07T13:17:15.373Z" }, + { url = "https://files.pythonhosted.org/packages/2a/fc/102ec1a2fc015b3a7652abab7acf3541d58c04d3d17a8d3d6a44adae1eb1/greenlet-3.2.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:94385f101946790ae13da500603491f04a76b6e4c059dab271b3ce2e283b2590", size = 629475, upload-time = "2025-08-07T13:42:54.009Z" }, + { url = "https://files.pythonhosted.org/packages/c5/26/80383131d55a4ac0fb08d71660fd77e7660b9db6bdb4e8884f46d9f2cc04/greenlet-3.2.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f10fd42b5ee276335863712fa3da6608e93f70629c631bf77145021600abc23c", size = 640802, upload-time = "2025-08-07T13:45:25.52Z" }, + { url = "https://files.pythonhosted.org/packages/9f/7c/e7833dbcd8f376f3326bd728c845d31dcde4c84268d3921afcae77d90d08/greenlet-3.2.4-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:c8c9e331e58180d0d83c5b7999255721b725913ff6bc6cf39fa2a45841a4fd4b", size = 636703, upload-time = "2025-08-07T13:53:12.622Z" }, + { url = "https://files.pythonhosted.org/packages/e9/49/547b93b7c0428ede7b3f309bc965986874759f7d89e4e04aeddbc9699acb/greenlet-3.2.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:58b97143c9cc7b86fc458f215bd0932f1757ce649e05b640fea2e79b54cedb31", size = 635417, upload-time = "2025-08-07T13:18:25.189Z" }, + { url = "https://files.pythonhosted.org/packages/7f/91/ae2eb6b7979e2f9b035a9f612cf70f1bf54aad4e1d125129bef1eae96f19/greenlet-3.2.4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c2ca18a03a8cfb5b25bc1cbe20f3d9a4c80d8c3b13ba3df49ac3961af0b1018d", size = 584358, upload-time = "2025-08-07T13:18:23.708Z" }, + { url = "https://files.pythonhosted.org/packages/f7/85/433de0c9c0252b22b16d413c9407e6cb3b41df7389afc366ca204dbc1393/greenlet-3.2.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9fe0a28a7b952a21e2c062cd5756d34354117796c6d9215a87f55e38d15402c5", size = 1113550, upload-time = "2025-08-07T13:42:37.467Z" }, + { url = "https://files.pythonhosted.org/packages/a1/8d/88f3ebd2bc96bf7747093696f4335a0a8a4c5acfcf1b757717c0d2474ba3/greenlet-3.2.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8854167e06950ca75b898b104b63cc646573aa5fef1353d4508ecdd1ee76254f", size = 1137126, upload-time = "2025-08-07T13:18:20.239Z" }, + { url = "https://files.pythonhosted.org/packages/d6/6f/b60b0291d9623c496638c582297ead61f43c4b72eef5e9c926ef4565ec13/greenlet-3.2.4-cp310-cp310-win_amd64.whl", hash = "sha256:73f49b5368b5359d04e18d15828eecc1806033db5233397748f4ca813ff1056c", size = 298654, upload-time = "2025-08-07T13:50:00.469Z" }, + { url = "https://files.pythonhosted.org/packages/a4/de/f28ced0a67749cac23fecb02b694f6473f47686dff6afaa211d186e2ef9c/greenlet-3.2.4-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:96378df1de302bc38e99c3a9aa311967b7dc80ced1dcc6f171e99842987882a2", size = 272305, upload-time = "2025-08-07T13:15:41.288Z" }, + { url = "https://files.pythonhosted.org/packages/09/16/2c3792cba130000bf2a31c5272999113f4764fd9d874fb257ff588ac779a/greenlet-3.2.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1ee8fae0519a337f2329cb78bd7a8e128ec0f881073d43f023c7b8d4831d5246", size = 632472, upload-time = "2025-08-07T13:42:55.044Z" }, + { url = "https://files.pythonhosted.org/packages/ae/8f/95d48d7e3d433e6dae5b1682e4292242a53f22df82e6d3dda81b1701a960/greenlet-3.2.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:94abf90142c2a18151632371140b3dba4dee031633fe614cb592dbb6c9e17bc3", size = 644646, upload-time = "2025-08-07T13:45:26.523Z" }, + { url = "https://files.pythonhosted.org/packages/d5/5e/405965351aef8c76b8ef7ad370e5da58d57ef6068df197548b015464001a/greenlet-3.2.4-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:4d1378601b85e2e5171b99be8d2dc85f594c79967599328f95c1dc1a40f1c633", size = 640519, upload-time = "2025-08-07T13:53:13.928Z" }, + { url = "https://files.pythonhosted.org/packages/25/5d/382753b52006ce0218297ec1b628e048c4e64b155379331f25a7316eb749/greenlet-3.2.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0db5594dce18db94f7d1650d7489909b57afde4c580806b8d9203b6e79cdc079", size = 639707, upload-time = "2025-08-07T13:18:27.146Z" }, + { url = "https://files.pythonhosted.org/packages/1f/8e/abdd3f14d735b2929290a018ecf133c901be4874b858dd1c604b9319f064/greenlet-3.2.4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2523e5246274f54fdadbce8494458a2ebdcdbc7b802318466ac5606d3cded1f8", size = 587684, upload-time = "2025-08-07T13:18:25.164Z" }, + { url = "https://files.pythonhosted.org/packages/5d/65/deb2a69c3e5996439b0176f6651e0052542bb6c8f8ec2e3fba97c9768805/greenlet-3.2.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1987de92fec508535687fb807a5cea1560f6196285a4cde35c100b8cd632cc52", size = 1116647, upload-time = "2025-08-07T13:42:38.655Z" }, + { url = "https://files.pythonhosted.org/packages/3f/cc/b07000438a29ac5cfb2194bfc128151d52f333cee74dd7dfe3fb733fc16c/greenlet-3.2.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:55e9c5affaa6775e2c6b67659f3a71684de4c549b3dd9afca3bc773533d284fa", size = 1142073, upload-time = "2025-08-07T13:18:21.737Z" }, + { url = "https://files.pythonhosted.org/packages/d8/0f/30aef242fcab550b0b3520b8e3561156857c94288f0332a79928c31a52cf/greenlet-3.2.4-cp311-cp311-win_amd64.whl", hash = "sha256:9c40adce87eaa9ddb593ccb0fa6a07caf34015a29bf8d344811665b573138db9", size = 299100, upload-time = "2025-08-07T13:44:12.287Z" }, + { url = "https://files.pythonhosted.org/packages/44/69/9b804adb5fd0671f367781560eb5eb586c4d495277c93bde4307b9e28068/greenlet-3.2.4-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3b67ca49f54cede0186854a008109d6ee71f66bd57bb36abd6d0a0267b540cdd", size = 274079, upload-time = "2025-08-07T13:15:45.033Z" }, + { url = "https://files.pythonhosted.org/packages/46/e9/d2a80c99f19a153eff70bc451ab78615583b8dac0754cfb942223d2c1a0d/greenlet-3.2.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ddf9164e7a5b08e9d22511526865780a576f19ddd00d62f8a665949327fde8bb", size = 640997, upload-time = "2025-08-07T13:42:56.234Z" }, + { url = "https://files.pythonhosted.org/packages/3b/16/035dcfcc48715ccd345f3a93183267167cdd162ad123cd93067d86f27ce4/greenlet-3.2.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f28588772bb5fb869a8eb331374ec06f24a83a9c25bfa1f38b6993afe9c1e968", size = 655185, upload-time = "2025-08-07T13:45:27.624Z" }, + { url = "https://files.pythonhosted.org/packages/31/da/0386695eef69ffae1ad726881571dfe28b41970173947e7c558d9998de0f/greenlet-3.2.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:5c9320971821a7cb77cfab8d956fa8e39cd07ca44b6070db358ceb7f8797c8c9", size = 649926, upload-time = "2025-08-07T13:53:15.251Z" }, + { url = "https://files.pythonhosted.org/packages/68/88/69bf19fd4dc19981928ceacbc5fd4bb6bc2215d53199e367832e98d1d8fe/greenlet-3.2.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c60a6d84229b271d44b70fb6e5fa23781abb5d742af7b808ae3f6efd7c9c60f6", size = 651839, upload-time = "2025-08-07T13:18:30.281Z" }, + { url = "https://files.pythonhosted.org/packages/19/0d/6660d55f7373b2ff8152401a83e02084956da23ae58cddbfb0b330978fe9/greenlet-3.2.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b3812d8d0c9579967815af437d96623f45c0f2ae5f04e366de62a12d83a8fb0", size = 607586, upload-time = "2025-08-07T13:18:28.544Z" }, + { url = "https://files.pythonhosted.org/packages/8e/1a/c953fdedd22d81ee4629afbb38d2f9d71e37d23caace44775a3a969147d4/greenlet-3.2.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:abbf57b5a870d30c4675928c37278493044d7c14378350b3aa5d484fa65575f0", size = 1123281, upload-time = "2025-08-07T13:42:39.858Z" }, + { url = "https://files.pythonhosted.org/packages/3f/c7/12381b18e21aef2c6bd3a636da1088b888b97b7a0362fac2e4de92405f97/greenlet-3.2.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:20fb936b4652b6e307b8f347665e2c615540d4b42b3b4c8a321d8286da7e520f", size = 1151142, upload-time = "2025-08-07T13:18:22.981Z" }, + { url = "https://files.pythonhosted.org/packages/e9/08/b0814846b79399e585f974bbeebf5580fbe59e258ea7be64d9dfb253c84f/greenlet-3.2.4-cp312-cp312-win_amd64.whl", hash = "sha256:a7d4e128405eea3814a12cc2605e0e6aedb4035bf32697f72deca74de4105e02", size = 299899, upload-time = "2025-08-07T13:38:53.448Z" }, + { url = "https://files.pythonhosted.org/packages/49/e8/58c7f85958bda41dafea50497cbd59738c5c43dbbea5ee83d651234398f4/greenlet-3.2.4-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:1a921e542453fe531144e91e1feedf12e07351b1cf6c9e8a3325ea600a715a31", size = 272814, upload-time = "2025-08-07T13:15:50.011Z" }, + { url = "https://files.pythonhosted.org/packages/62/dd/b9f59862e9e257a16e4e610480cfffd29e3fae018a68c2332090b53aac3d/greenlet-3.2.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cd3c8e693bff0fff6ba55f140bf390fa92c994083f838fece0f63be121334945", size = 641073, upload-time = "2025-08-07T13:42:57.23Z" }, + { url = "https://files.pythonhosted.org/packages/f7/0b/bc13f787394920b23073ca3b6c4a7a21396301ed75a655bcb47196b50e6e/greenlet-3.2.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:710638eb93b1fa52823aa91bf75326f9ecdfd5e0466f00789246a5280f4ba0fc", size = 655191, upload-time = "2025-08-07T13:45:29.752Z" }, + { url = "https://files.pythonhosted.org/packages/f2/d6/6adde57d1345a8d0f14d31e4ab9c23cfe8e2cd39c3baf7674b4b0338d266/greenlet-3.2.4-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:c5111ccdc9c88f423426df3fd1811bfc40ed66264d35aa373420a34377efc98a", size = 649516, upload-time = "2025-08-07T13:53:16.314Z" }, + { url = "https://files.pythonhosted.org/packages/7f/3b/3a3328a788d4a473889a2d403199932be55b1b0060f4ddd96ee7cdfcad10/greenlet-3.2.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d76383238584e9711e20ebe14db6c88ddcedc1829a9ad31a584389463b5aa504", size = 652169, upload-time = "2025-08-07T13:18:32.861Z" }, + { url = "https://files.pythonhosted.org/packages/ee/43/3cecdc0349359e1a527cbf2e3e28e5f8f06d3343aaf82ca13437a9aa290f/greenlet-3.2.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:23768528f2911bcd7e475210822ffb5254ed10d71f4028387e5a99b4c6699671", size = 610497, upload-time = "2025-08-07T13:18:31.636Z" }, + { url = "https://files.pythonhosted.org/packages/b8/19/06b6cf5d604e2c382a6f31cafafd6f33d5dea706f4db7bdab184bad2b21d/greenlet-3.2.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:00fadb3fedccc447f517ee0d3fd8fe49eae949e1cd0f6a611818f4f6fb7dc83b", size = 1121662, upload-time = "2025-08-07T13:42:41.117Z" }, + { url = "https://files.pythonhosted.org/packages/a2/15/0d5e4e1a66fab130d98168fe984c509249c833c1a3c16806b90f253ce7b9/greenlet-3.2.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:d25c5091190f2dc0eaa3f950252122edbbadbb682aa7b1ef2f8af0f8c0afefae", size = 1149210, upload-time = "2025-08-07T13:18:24.072Z" }, + { url = "https://files.pythonhosted.org/packages/0b/55/2321e43595e6801e105fcfdee02b34c0f996eb71e6ddffca6b10b7e1d771/greenlet-3.2.4-cp313-cp313-win_amd64.whl", hash = "sha256:554b03b6e73aaabec3745364d6239e9e012d64c68ccd0b8430c64ccc14939a8b", size = 299685, upload-time = "2025-08-07T13:24:38.824Z" }, + { url = "https://files.pythonhosted.org/packages/22/5c/85273fd7cc388285632b0498dbbab97596e04b154933dfe0f3e68156c68c/greenlet-3.2.4-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:49a30d5fda2507ae77be16479bdb62a660fa51b1eb4928b524975b3bde77b3c0", size = 273586, upload-time = "2025-08-07T13:16:08.004Z" }, + { url = "https://files.pythonhosted.org/packages/d1/75/10aeeaa3da9332c2e761e4c50d4c3556c21113ee3f0afa2cf5769946f7a3/greenlet-3.2.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:299fd615cd8fc86267b47597123e3f43ad79c9d8a22bebdce535e53550763e2f", size = 686346, upload-time = "2025-08-07T13:42:59.944Z" }, + { url = "https://files.pythonhosted.org/packages/c0/aa/687d6b12ffb505a4447567d1f3abea23bd20e73a5bed63871178e0831b7a/greenlet-3.2.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:c17b6b34111ea72fc5a4e4beec9711d2226285f0386ea83477cbb97c30a3f3a5", size = 699218, upload-time = "2025-08-07T13:45:30.969Z" }, + { url = "https://files.pythonhosted.org/packages/dc/8b/29aae55436521f1d6f8ff4e12fb676f3400de7fcf27fccd1d4d17fd8fecd/greenlet-3.2.4-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b4a1870c51720687af7fa3e7cda6d08d801dae660f75a76f3845b642b4da6ee1", size = 694659, upload-time = "2025-08-07T13:53:17.759Z" }, + { url = "https://files.pythonhosted.org/packages/92/2e/ea25914b1ebfde93b6fc4ff46d6864564fba59024e928bdc7de475affc25/greenlet-3.2.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:061dc4cf2c34852b052a8620d40f36324554bc192be474b9e9770e8c042fd735", size = 695355, upload-time = "2025-08-07T13:18:34.517Z" }, + { url = "https://files.pythonhosted.org/packages/72/60/fc56c62046ec17f6b0d3060564562c64c862948c9d4bc8aa807cf5bd74f4/greenlet-3.2.4-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:44358b9bf66c8576a9f57a590d5f5d6e72fa4228b763d0e43fee6d3b06d3a337", size = 657512, upload-time = "2025-08-07T13:18:33.969Z" }, + { url = "https://files.pythonhosted.org/packages/e3/a5/6ddab2b4c112be95601c13428db1d8b6608a8b6039816f2ba09c346c08fc/greenlet-3.2.4-cp314-cp314-win_amd64.whl", hash = "sha256:e37ab26028f12dbb0ff65f29a8d3d44a765c61e729647bf2ddfbbed621726f01", size = 303425, upload-time = "2025-08-07T13:32:27.59Z" }, +] + +[[package]] +name = "gunicorn" +version = "23.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/34/72/9614c465dc206155d93eff0ca20d42e1e35afc533971379482de953521a4/gunicorn-23.0.0.tar.gz", hash = "sha256:f014447a0101dc57e294f6c18ca6b40227a4c90e9bdb586042628030cba004ec", size = 375031, upload-time = "2024-08-10T20:25:27.378Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/7d/6dac2a6e1eba33ee43f318edbed4ff29151a49b5d37f080aad1e6469bca4/gunicorn-23.0.0-py3-none-any.whl", hash = "sha256:ec400d38950de4dfd418cff8328b2c8faed0edb0d517d3394e457c317908ca4d", size = 85029, upload-time = "2024-08-10T20:25:24.996Z" }, ] [[package]] @@ -1319,11 +1751,11 @@ wheels = [ [[package]] name = "identify" -version = "2.6.12" +version = "2.6.14" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/88/d193a27416618628a5eea64e3223acd800b40749a96ffb322a9b55a49ed1/identify-2.6.12.tar.gz", hash = "sha256:d8de45749f1efb108badef65ee8386f0f7bb19a7f26185f74de6367bffbaf0e6", size = 99254, upload-time = "2025-05-23T20:37:53.3Z" } +sdist = { url = "https://files.pythonhosted.org/packages/52/c4/62963f25a678f6a050fb0505a65e9e726996171e6dbe1547f79619eefb15/identify-2.6.14.tar.gz", hash = "sha256:663494103b4f717cb26921c52f8751363dc89db64364cd836a9bf1535f53cd6a", size = 99283, upload-time = "2025-09-06T19:30:52.938Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7a/cd/18f8da995b658420625f7ef13f037be53ae04ec5ad33f9b718240dcfd48c/identify-2.6.12-py2.py3-none-any.whl", hash = "sha256:ad9672d5a72e0d2ff7c5c8809b62dfa60458626352fb0eb7b55e69bdc45334a2", size = 99145, upload-time = "2025-05-23T20:37:51.495Z" }, + { url = "https://files.pythonhosted.org/packages/e5/ae/2ad30f4652712c82f1c23423d79136fbce338932ad166d70c1efb86a5998/identify-2.6.14-py2.py3-none-any.whl", hash = "sha256:11a073da82212c6646b1f39bb20d4483bfb9543bd5566fec60053c4bb309bf2e", size = 99172, upload-time = "2025-09-06T19:30:51.759Z" }, ] [[package]] @@ -1367,14 +1799,14 @@ wheels = [ [[package]] name = "ipykernel" -version = "6.29.5" +version = "6.30.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "appnope", marker = "sys_platform == 'darwin'" }, { name = "comm" }, { name = "debugpy" }, { name = "ipython", version = "8.37.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "ipython", version = "9.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "ipython", version = "9.5.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "jupyter-client" }, { name = "jupyter-core" }, { name = "matplotlib-inline" }, @@ -1385,9 +1817,9 @@ dependencies = [ { name = "tornado" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e9/5c/67594cb0c7055dc50814b21731c22a601101ea3b1b50a9a1b090e11f5d0f/ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215", size = 163367, upload-time = "2024-07-01T14:07:22.543Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/76/11082e338e0daadc89c8ff866185de11daf67d181901038f9e139d109761/ipykernel-6.30.1.tar.gz", hash = "sha256:6abb270161896402e76b91394fcdce5d1be5d45f456671e5080572f8505be39b", size = 166260, upload-time = "2025-08-04T15:47:35.018Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/94/5c/368ae6c01c7628438358e6d337c19b05425727fbb221d2a3c4303c372f42/ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5", size = 117173, upload-time = "2024-07-01T14:07:19.603Z" }, + { url = "https://files.pythonhosted.org/packages/fc/c7/b445faca8deb954fe536abebff4ece5b097b923de482b26e78448c89d1dd/ipykernel-6.30.1-py3-none-any.whl", hash = "sha256:aa6b9fb93dca949069d8b85b6c79b2518e32ac583ae9c7d37c51d119e18b3fb4", size = 117484, upload-time = "2025-08-04T15:47:32.622Z" }, ] [[package]] @@ -1417,10 +1849,11 @@ wheels = [ [[package]] name = "ipython" -version = "9.3.0" +version = "9.5.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.12'", + "python_full_version >= '3.14'", + "python_full_version >= '3.12' and python_full_version < '3.14'", "python_full_version == '3.11.*'", ] dependencies = [ @@ -1436,9 +1869,9 @@ dependencies = [ { name = "traitlets", marker = "python_full_version >= '3.11'" }, { name = "typing-extensions", marker = "python_full_version == '3.11.*'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/dc/09/4c7e06b96fbd203e06567b60fb41b06db606b6a82db6db7b2c85bb72a15c/ipython-9.3.0.tar.gz", hash = "sha256:79eb896f9f23f50ad16c3bc205f686f6e030ad246cc309c6279a242b14afe9d8", size = 4426460, upload-time = "2025-05-31T16:34:55.678Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6e/71/a86262bf5a68bf211bcc71fe302af7e05f18a2852fdc610a854d20d085e6/ipython-9.5.0.tar.gz", hash = "sha256:129c44b941fe6d9b82d36fc7a7c18127ddb1d6f02f78f867f402e2e3adde3113", size = 4389137, upload-time = "2025-08-29T12:15:21.519Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3c/99/9ed3d52d00f1846679e3aa12e2326ac7044b5e7f90dc822b60115fa533ca/ipython-9.3.0-py3-none-any.whl", hash = "sha256:1a0b6dd9221a1f5dddf725b57ac0cb6fddc7b5f470576231ae9162b9b3455a04", size = 605320, upload-time = "2025-05-31T16:34:52.154Z" }, + { url = "https://files.pythonhosted.org/packages/08/2a/5628a99d04acb2d2f2e749cdf4ea571d2575e898df0528a090948018b726/ipython-9.5.0-py3-none-any.whl", hash = "sha256:88369ffa1d5817d609120daa523a6da06d02518e582347c29f8451732a9c5e72", size = 612426, upload-time = "2025-08-29T12:15:18.866Z" }, ] [[package]] @@ -1474,6 +1907,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/0a/63/4036ae70eea279c63e2304b91ee0ac182f467f24f86394ecfe726092340b/isort-5.12.0-py3-none-any.whl", hash = "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6", size = 91198, upload-time = "2023-01-28T17:10:21.149Z" }, ] +[[package]] +name = "itsdangerous" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9c/cb/8ac0172223afbccb63986cc25049b154ecfb5e85932587206f42317be31d/itsdangerous-2.2.0.tar.gz", hash = "sha256:e0050c0b7da1eea53ffaf149c0cfbb5c6e2e2b69c4bef22c81fa6eb73e5f6173", size = 54410, upload-time = "2024-04-16T21:28:15.614Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/96/92447566d16df59b2a776c0fb82dbc4d9e07cd95062562af01e408583fc4/itsdangerous-2.2.0-py3-none-any.whl", hash = "sha256:c6242fc49e35958c8b15141343aa660db5fc54d4f13a1db01a3f5891b98700ef", size = 16234, upload-time = "2024-04-16T21:28:14.499Z" }, +] + [[package]] name = "jedi" version = "0.19.2" @@ -1500,20 +1942,20 @@ wheels = [ [[package]] name = "joblib" -version = "1.5.1" +version = "1.5.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/dc/fe/0f5a938c54105553436dbff7a61dc4fed4b1b2c98852f8833beaf4d5968f/joblib-1.5.1.tar.gz", hash = "sha256:f4f86e351f39fe3d0d32a9f2c3d8af1ee4cec285aafcb27003dda5205576b444", size = 330475, upload-time = "2025-05-23T12:04:37.097Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e8/5d/447af5ea094b9e4c4054f82e223ada074c552335b9b4b2d14bd9b35a67c4/joblib-1.5.2.tar.gz", hash = "sha256:3faa5c39054b2f03ca547da9b2f52fde67c06240c31853f306aea97f13647b55", size = 331077, upload-time = "2025-08-27T12:15:46.575Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7d/4f/1195bbac8e0c2acc5f740661631d8d750dc38d4a32b23ee5df3cde6f4e0d/joblib-1.5.1-py3-none-any.whl", hash = "sha256:4719a31f054c7d766948dcd83e9613686b27114f190f717cec7eaa2084f8a74a", size = 307746, upload-time = "2025-05-23T12:04:35.124Z" }, + { url = "https://files.pythonhosted.org/packages/1e/e8/685f47e0d754320684db4425a0967f7d3fa70126bffd76110b7009a0090f/joblib-1.5.2-py3-none-any.whl", hash = "sha256:4e1f0bdbb987e6d843c70cf43714cb276623def372df3c22fe5266b2670bc241", size = 308396, upload-time = "2025-08-27T12:15:45.188Z" }, ] [[package]] name = "json5" -version = "0.12.0" +version = "0.12.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/12/be/c6c745ec4c4539b25a278b70e29793f10382947df0d9efba2fa09120895d/json5-0.12.0.tar.gz", hash = "sha256:0b4b6ff56801a1c7dc817b0241bca4ce474a0e6a163bfef3fc594d3fd263ff3a", size = 51907, upload-time = "2025-04-03T16:33:13.201Z" } +sdist = { url = "https://files.pythonhosted.org/packages/12/ae/929aee9619e9eba9015207a9d2c1c54db18311da7eb4dcf6d41ad6f0eb67/json5-0.12.1.tar.gz", hash = "sha256:b2743e77b3242f8d03c143dd975a6ec7c52e2f2afe76ed934e53503dd4ad4990", size = 52191, upload-time = "2025-08-12T19:47:42.583Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/41/9f/3500910d5a98549e3098807493851eeef2b89cdd3032227558a104dfe926/json5-0.12.0-py3-none-any.whl", hash = "sha256:6d37aa6c08b0609f16e1ec5ff94697e2cbbfbad5ac112afa05794da9ab7810db", size = 36079, upload-time = "2025-04-03T16:33:11.927Z" }, + { url = "https://files.pythonhosted.org/packages/85/e2/05328bd2621be49a6fed9e3030b1e51a2d04537d3f816d211b9cc53c5262/json5-0.12.1-py3-none-any.whl", hash = "sha256:d9c9b3bc34a5f54d43c35e11ef7cb87d8bdd098c6ace87117a7b7e83e705c1d5", size = 36119, upload-time = "2025-08-12T19:47:41.131Z" }, ] [[package]] @@ -1527,7 +1969,7 @@ wheels = [ [[package]] name = "jsonschema" -version = "4.24.0" +version = "4.25.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, @@ -1535,9 +1977,9 @@ dependencies = [ { name = "referencing" }, { name = "rpds-py" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bf/d3/1cf5326b923a53515d8f3a2cd442e6d7e94fcc444716e879ea70a0ce3177/jsonschema-4.24.0.tar.gz", hash = "sha256:0b4e8069eb12aedfa881333004bccaec24ecef5a8a6a4b6df142b2cc9599d196", size = 353480, upload-time = "2025-05-26T18:48:10.459Z" } +sdist = { url = "https://files.pythonhosted.org/packages/74/69/f7185de793a29082a9f3c7728268ffb31cb5095131a9c139a74078e27336/jsonschema-4.25.1.tar.gz", hash = "sha256:e4a9655ce0da0c0b67a085847e00a3a51449e1157f4f75e9fb5aa545e122eb85", size = 357342, upload-time = "2025-08-18T17:03:50.038Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a2/3d/023389198f69c722d039351050738d6755376c8fd343e91dc493ea485905/jsonschema-4.24.0-py3-none-any.whl", hash = "sha256:a462455f19f5faf404a7902952b6f0e3ce868f3ee09a359b05eca6673bd8412d", size = 88709, upload-time = "2025-05-26T18:48:08.417Z" }, + { url = "https://files.pythonhosted.org/packages/bf/9c/8c95d856233c1f82500c2450b8c68576b4cf1c871db3afac5c34ff84e6fd/jsonschema-4.25.1-py3-none-any.whl", hash = "sha256:3fba0169e345c7175110351d456342c364814cfcf3b964ba4587f22915230a63", size = 90040, upload-time = "2025-08-18T17:03:48.373Z" }, ] [package.optional-dependencies] @@ -1548,20 +1990,21 @@ format-nongpl = [ { name = "jsonpointer" }, { name = "rfc3339-validator" }, { name = "rfc3986-validator" }, + { name = "rfc3987-syntax" }, { name = "uri-template" }, { name = "webcolors" }, ] [[package]] name = "jsonschema-specifications" -version = "2025.4.1" +version = "2025.9.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "referencing" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bf/ce/46fbd9c8119cfc3581ee5643ea49464d168028cfb5caff5fc0596d0cf914/jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608", size = 15513, upload-time = "2025-04-23T12:34:07.418Z" } +sdist = { url = "https://files.pythonhosted.org/packages/19/74/a633ee74eb36c44aa6d1095e7cc5569bebf04342ee146178e2d36600708b/jsonschema_specifications-2025.9.1.tar.gz", hash = "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d", size = 32855, upload-time = "2025-09-08T01:34:59.186Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437, upload-time = "2025-04-23T12:34:05.422Z" }, + { url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", size = 18437, upload-time = "2025-09-08T01:34:57.871Z" }, ] [[package]] @@ -1663,19 +2106,19 @@ wheels = [ [[package]] name = "jupyter-lsp" -version = "2.2.5" +version = "2.3.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jupyter-server" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/85/b4/3200b0b09c12bc3b72d943d923323c398eff382d1dcc7c0dbc8b74630e40/jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001", size = 48741, upload-time = "2024-04-09T17:59:44.918Z" } +sdist = { url = "https://files.pythonhosted.org/packages/eb/5a/9066c9f8e94ee517133cd98dba393459a16cd48bba71a82f16a65415206c/jupyter_lsp-2.3.0.tar.gz", hash = "sha256:458aa59339dc868fb784d73364f17dbce8836e906cd75fd471a325cba02e0245", size = 54823, upload-time = "2025-08-27T17:47:34.671Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/07/e0/7bd7cff65594fd9936e2f9385701e44574fc7d721331ff676ce440b14100/jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da", size = 69146, upload-time = "2024-04-09T17:59:43.388Z" }, + { url = "https://files.pythonhosted.org/packages/1a/60/1f6cee0c46263de1173894f0fafcb3475ded276c472c14d25e0280c18d6d/jupyter_lsp-2.3.0-py3-none-any.whl", hash = "sha256:e914a3cb2addf48b1c7710914771aaf1819d46b2e5a79b0f917b5478ec93f34f", size = 76687, upload-time = "2025-08-27T17:47:33.15Z" }, ] [[package]] name = "jupyter-server" -version = "2.16.0" +version = "2.17.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, @@ -1687,7 +2130,7 @@ dependencies = [ { name = "jupyter-server-terminals" }, { name = "nbconvert" }, { name = "nbformat" }, - { name = "overrides" }, + { name = "overrides", marker = "python_full_version < '3.12'" }, { name = "packaging" }, { name = "prometheus-client" }, { name = "pywinpty", marker = "os_name == 'nt'" }, @@ -1698,9 +2141,9 @@ dependencies = [ { name = "traitlets" }, { name = "websocket-client" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/41/c8/ba2bbcd758c47f1124c4ca14061e8ce60d9c6fd537faee9534a95f83521a/jupyter_server-2.16.0.tar.gz", hash = "sha256:65d4b44fdf2dcbbdfe0aa1ace4a842d4aaf746a2b7b168134d5aaed35621b7f6", size = 728177, upload-time = "2025-05-12T16:44:46.245Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5b/ac/e040ec363d7b6b1f11304cc9f209dac4517ece5d5e01821366b924a64a50/jupyter_server-2.17.0.tar.gz", hash = "sha256:c38ea898566964c888b4772ae1ed58eca84592e88251d2cfc4d171f81f7e99d5", size = 731949, upload-time = "2025-08-21T14:42:54.042Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/46/1f/5ebbced977171d09a7b0c08a285ff9a20aafb9c51bde07e52349ff1ddd71/jupyter_server-2.16.0-py3-none-any.whl", hash = "sha256:3d8db5be3bc64403b1c65b400a1d7f4647a5ce743f3b20dbdefe8ddb7b55af9e", size = 386904, upload-time = "2025-05-12T16:44:43.335Z" }, + { url = "https://files.pythonhosted.org/packages/92/80/a24767e6ca280f5a49525d987bf3e4d7552bf67c8be07e8ccf20271f8568/jupyter_server-2.17.0-py3-none-any.whl", hash = "sha256:e8cb9c7db4251f51ed307e329b81b72ccf2056ff82d50524debde1ee1870e13f", size = 388221, upload-time = "2025-08-21T14:42:52.034Z" }, ] [[package]] @@ -1718,7 +2161,7 @@ wheels = [ [[package]] name = "jupyterlab" -version = "4.4.3" +version = "4.4.9" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "async-lru" }, @@ -1736,9 +2179,9 @@ dependencies = [ { name = "tornado" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d3/2d/d1678dcf2db66cb4a38a80d9e5fcf48c349f3ac12f2d38882993353ae768/jupyterlab-4.4.3.tar.gz", hash = "sha256:a94c32fd7f8b93e82a49dc70a6ec45a5c18281ca2a7228d12765e4e210e5bca2", size = 23032376, upload-time = "2025-05-26T11:18:00.996Z" } +sdist = { url = "https://files.pythonhosted.org/packages/45/b2/7dad2d0049a904d17c070226a4f78f81905f93bfe09503722d210ccf9335/jupyterlab-4.4.9.tar.gz", hash = "sha256:ea55aca8269909016d5fde2dc09b97128bc931230183fe7e2920ede5154ad9c2", size = 22966654, upload-time = "2025-09-26T17:28:20.158Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c6/4d/7dd5c2ffbb960930452a031dc8410746183c924580f2ab4e68ceb5b3043f/jupyterlab-4.4.3-py3-none-any.whl", hash = "sha256:164302f6d4b6c44773dfc38d585665a4db401a16e5296c37df5cba63904fbdea", size = 12295480, upload-time = "2025-05-26T11:17:56.607Z" }, + { url = "https://files.pythonhosted.org/packages/1f/fd/ac0979ebd1b1975c266c99b96930b0a66609c3f6e5d76979ca6eb3073896/jupyterlab-4.4.9-py3-none-any.whl", hash = "sha256:394c902827350c017430a8370b9f40c03c098773084bc53930145c146d3d2cb2", size = 12292552, upload-time = "2025-09-26T17:28:15.663Z" }, ] [[package]] @@ -1770,94 +2213,115 @@ wheels = [ [[package]] name = "kiwisolver" -version = "1.4.8" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/82/59/7c91426a8ac292e1cdd53a63b6d9439abd573c875c3f92c146767dd33faf/kiwisolver-1.4.8.tar.gz", hash = "sha256:23d5f023bdc8c7e54eb65f03ca5d5bb25b601eac4d7f1a042888a1f45237987e", size = 97538, upload-time = "2024-12-24T18:30:51.519Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/47/5f/4d8e9e852d98ecd26cdf8eaf7ed8bc33174033bba5e07001b289f07308fd/kiwisolver-1.4.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:88c6f252f6816a73b1f8c904f7bbe02fd67c09a69f7cb8a0eecdbf5ce78e63db", size = 124623, upload-time = "2024-12-24T18:28:17.687Z" }, - { url = "https://files.pythonhosted.org/packages/1d/70/7f5af2a18a76fe92ea14675f8bd88ce53ee79e37900fa5f1a1d8e0b42998/kiwisolver-1.4.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c72941acb7b67138f35b879bbe85be0f6c6a70cab78fe3ef6db9c024d9223e5b", size = 66720, upload-time = "2024-12-24T18:28:19.158Z" }, - { url = "https://files.pythonhosted.org/packages/c6/13/e15f804a142353aefd089fadc8f1d985561a15358c97aca27b0979cb0785/kiwisolver-1.4.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce2cf1e5688edcb727fdf7cd1bbd0b6416758996826a8be1d958f91880d0809d", size = 65413, upload-time = "2024-12-24T18:28:20.064Z" }, - { url = "https://files.pythonhosted.org/packages/ce/6d/67d36c4d2054e83fb875c6b59d0809d5c530de8148846b1370475eeeece9/kiwisolver-1.4.8-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c8bf637892dc6e6aad2bc6d4d69d08764166e5e3f69d469e55427b6ac001b19d", size = 1650826, upload-time = "2024-12-24T18:28:21.203Z" }, - { url = "https://files.pythonhosted.org/packages/de/c6/7b9bb8044e150d4d1558423a1568e4f227193662a02231064e3824f37e0a/kiwisolver-1.4.8-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:034d2c891f76bd3edbdb3ea11140d8510dca675443da7304205a2eaa45d8334c", size = 1628231, upload-time = "2024-12-24T18:28:23.851Z" }, - { url = "https://files.pythonhosted.org/packages/b6/38/ad10d437563063eaaedbe2c3540a71101fc7fb07a7e71f855e93ea4de605/kiwisolver-1.4.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d47b28d1dfe0793d5e96bce90835e17edf9a499b53969b03c6c47ea5985844c3", size = 1408938, upload-time = "2024-12-24T18:28:26.687Z" }, - { url = "https://files.pythonhosted.org/packages/52/ce/c0106b3bd7f9e665c5f5bc1e07cc95b5dabd4e08e3dad42dbe2faad467e7/kiwisolver-1.4.8-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb158fe28ca0c29f2260cca8c43005329ad58452c36f0edf298204de32a9a3ed", size = 1422799, upload-time = "2024-12-24T18:28:30.538Z" }, - { url = "https://files.pythonhosted.org/packages/d0/87/efb704b1d75dc9758087ba374c0f23d3254505edaedd09cf9d247f7878b9/kiwisolver-1.4.8-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5536185fce131780ebd809f8e623bf4030ce1b161353166c49a3c74c287897f", size = 1354362, upload-time = "2024-12-24T18:28:32.943Z" }, - { url = "https://files.pythonhosted.org/packages/eb/b3/fd760dc214ec9a8f208b99e42e8f0130ff4b384eca8b29dd0efc62052176/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:369b75d40abedc1da2c1f4de13f3482cb99e3237b38726710f4a793432b1c5ff", size = 2222695, upload-time = "2024-12-24T18:28:35.641Z" }, - { url = "https://files.pythonhosted.org/packages/a2/09/a27fb36cca3fc01700687cc45dae7a6a5f8eeb5f657b9f710f788748e10d/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:641f2ddf9358c80faa22e22eb4c9f54bd3f0e442e038728f500e3b978d00aa7d", size = 2370802, upload-time = "2024-12-24T18:28:38.357Z" }, - { url = "https://files.pythonhosted.org/packages/3d/c3/ba0a0346db35fe4dc1f2f2cf8b99362fbb922d7562e5f911f7ce7a7b60fa/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d561d2d8883e0819445cfe58d7ddd673e4015c3c57261d7bdcd3710d0d14005c", size = 2334646, upload-time = "2024-12-24T18:28:40.941Z" }, - { url = "https://files.pythonhosted.org/packages/41/52/942cf69e562f5ed253ac67d5c92a693745f0bed3c81f49fc0cbebe4d6b00/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:1732e065704b47c9afca7ffa272f845300a4eb959276bf6970dc07265e73b605", size = 2467260, upload-time = "2024-12-24T18:28:42.273Z" }, - { url = "https://files.pythonhosted.org/packages/32/26/2d9668f30d8a494b0411d4d7d4ea1345ba12deb6a75274d58dd6ea01e951/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:bcb1ebc3547619c3b58a39e2448af089ea2ef44b37988caf432447374941574e", size = 2288633, upload-time = "2024-12-24T18:28:44.87Z" }, - { url = "https://files.pythonhosted.org/packages/98/99/0dd05071654aa44fe5d5e350729961e7bb535372935a45ac89a8924316e6/kiwisolver-1.4.8-cp310-cp310-win_amd64.whl", hash = "sha256:89c107041f7b27844179ea9c85d6da275aa55ecf28413e87624d033cf1f6b751", size = 71885, upload-time = "2024-12-24T18:28:47.346Z" }, - { url = "https://files.pythonhosted.org/packages/6c/fc/822e532262a97442989335394d441cd1d0448c2e46d26d3e04efca84df22/kiwisolver-1.4.8-cp310-cp310-win_arm64.whl", hash = "sha256:b5773efa2be9eb9fcf5415ea3ab70fc785d598729fd6057bea38d539ead28271", size = 65175, upload-time = "2024-12-24T18:28:49.651Z" }, - { url = "https://files.pythonhosted.org/packages/da/ed/c913ee28936c371418cb167b128066ffb20bbf37771eecc2c97edf8a6e4c/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a4d3601908c560bdf880f07d94f31d734afd1bb71e96585cace0e38ef44c6d84", size = 124635, upload-time = "2024-12-24T18:28:51.826Z" }, - { url = "https://files.pythonhosted.org/packages/4c/45/4a7f896f7467aaf5f56ef093d1f329346f3b594e77c6a3c327b2d415f521/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:856b269c4d28a5c0d5e6c1955ec36ebfd1651ac00e1ce0afa3e28da95293b561", size = 66717, upload-time = "2024-12-24T18:28:54.256Z" }, - { url = "https://files.pythonhosted.org/packages/5f/b4/c12b3ac0852a3a68f94598d4c8d569f55361beef6159dce4e7b624160da2/kiwisolver-1.4.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c2b9a96e0f326205af81a15718a9073328df1173a2619a68553decb7097fd5d7", size = 65413, upload-time = "2024-12-24T18:28:55.184Z" }, - { url = "https://files.pythonhosted.org/packages/a9/98/1df4089b1ed23d83d410adfdc5947245c753bddfbe06541c4aae330e9e70/kiwisolver-1.4.8-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5020c83e8553f770cb3b5fc13faac40f17e0b205bd237aebd21d53d733adb03", size = 1343994, upload-time = "2024-12-24T18:28:57.493Z" }, - { url = "https://files.pythonhosted.org/packages/8d/bf/b4b169b050c8421a7c53ea1ea74e4ef9c335ee9013216c558a047f162d20/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dace81d28c787956bfbfbbfd72fdcef014f37d9b48830829e488fdb32b49d954", size = 1434804, upload-time = "2024-12-24T18:29:00.077Z" }, - { url = "https://files.pythonhosted.org/packages/66/5a/e13bd341fbcf73325ea60fdc8af752addf75c5079867af2e04cc41f34434/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11e1022b524bd48ae56c9b4f9296bce77e15a2e42a502cceba602f804b32bb79", size = 1450690, upload-time = "2024-12-24T18:29:01.401Z" }, - { url = "https://files.pythonhosted.org/packages/9b/4f/5955dcb376ba4a830384cc6fab7d7547bd6759fe75a09564910e9e3bb8ea/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b9b4d2892fefc886f30301cdd80debd8bb01ecdf165a449eb6e78f79f0fabd6", size = 1376839, upload-time = "2024-12-24T18:29:02.685Z" }, - { url = "https://files.pythonhosted.org/packages/3a/97/5edbed69a9d0caa2e4aa616ae7df8127e10f6586940aa683a496c2c280b9/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a96c0e790ee875d65e340ab383700e2b4891677b7fcd30a699146f9384a2bb0", size = 1435109, upload-time = "2024-12-24T18:29:04.113Z" }, - { url = "https://files.pythonhosted.org/packages/13/fc/e756382cb64e556af6c1809a1bbb22c141bbc2445049f2da06b420fe52bf/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:23454ff084b07ac54ca8be535f4174170c1094a4cff78fbae4f73a4bcc0d4dab", size = 2245269, upload-time = "2024-12-24T18:29:05.488Z" }, - { url = "https://files.pythonhosted.org/packages/76/15/e59e45829d7f41c776d138245cabae6515cb4eb44b418f6d4109c478b481/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:87b287251ad6488e95b4f0b4a79a6d04d3ea35fde6340eb38fbd1ca9cd35bbbc", size = 2393468, upload-time = "2024-12-24T18:29:06.79Z" }, - { url = "https://files.pythonhosted.org/packages/e9/39/483558c2a913ab8384d6e4b66a932406f87c95a6080112433da5ed668559/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:b21dbe165081142b1232a240fc6383fd32cdd877ca6cc89eab93e5f5883e1c25", size = 2355394, upload-time = "2024-12-24T18:29:08.24Z" }, - { url = "https://files.pythonhosted.org/packages/01/aa/efad1fbca6570a161d29224f14b082960c7e08268a133fe5dc0f6906820e/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:768cade2c2df13db52475bd28d3a3fac8c9eff04b0e9e2fda0f3760f20b3f7fc", size = 2490901, upload-time = "2024-12-24T18:29:09.653Z" }, - { url = "https://files.pythonhosted.org/packages/c9/4f/15988966ba46bcd5ab9d0c8296914436720dd67fca689ae1a75b4ec1c72f/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d47cfb2650f0e103d4bf68b0b5804c68da97272c84bb12850d877a95c056bd67", size = 2312306, upload-time = "2024-12-24T18:29:12.644Z" }, - { url = "https://files.pythonhosted.org/packages/2d/27/bdf1c769c83f74d98cbc34483a972f221440703054894a37d174fba8aa68/kiwisolver-1.4.8-cp311-cp311-win_amd64.whl", hash = "sha256:ed33ca2002a779a2e20eeb06aea7721b6e47f2d4b8a8ece979d8ba9e2a167e34", size = 71966, upload-time = "2024-12-24T18:29:14.089Z" }, - { url = "https://files.pythonhosted.org/packages/4a/c9/9642ea855604aeb2968a8e145fc662edf61db7632ad2e4fb92424be6b6c0/kiwisolver-1.4.8-cp311-cp311-win_arm64.whl", hash = "sha256:16523b40aab60426ffdebe33ac374457cf62863e330a90a0383639ce14bf44b2", size = 65311, upload-time = "2024-12-24T18:29:15.892Z" }, - { url = "https://files.pythonhosted.org/packages/fc/aa/cea685c4ab647f349c3bc92d2daf7ae34c8e8cf405a6dcd3a497f58a2ac3/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d6af5e8815fd02997cb6ad9bbed0ee1e60014438ee1a5c2444c96f87b8843502", size = 124152, upload-time = "2024-12-24T18:29:16.85Z" }, - { url = "https://files.pythonhosted.org/packages/c5/0b/8db6d2e2452d60d5ebc4ce4b204feeb16176a851fd42462f66ade6808084/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bade438f86e21d91e0cf5dd7c0ed00cda0f77c8c1616bd83f9fc157fa6760d31", size = 66555, upload-time = "2024-12-24T18:29:19.146Z" }, - { url = "https://files.pythonhosted.org/packages/60/26/d6a0db6785dd35d3ba5bf2b2df0aedc5af089962c6eb2cbf67a15b81369e/kiwisolver-1.4.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b83dc6769ddbc57613280118fb4ce3cd08899cc3369f7d0e0fab518a7cf37fdb", size = 65067, upload-time = "2024-12-24T18:29:20.096Z" }, - { url = "https://files.pythonhosted.org/packages/c9/ed/1d97f7e3561e09757a196231edccc1bcf59d55ddccefa2afc9c615abd8e0/kiwisolver-1.4.8-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:111793b232842991be367ed828076b03d96202c19221b5ebab421ce8bcad016f", size = 1378443, upload-time = "2024-12-24T18:29:22.843Z" }, - { url = "https://files.pythonhosted.org/packages/29/61/39d30b99954e6b46f760e6289c12fede2ab96a254c443639052d1b573fbc/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:257af1622860e51b1a9d0ce387bf5c2c4f36a90594cb9514f55b074bcc787cfc", size = 1472728, upload-time = "2024-12-24T18:29:24.463Z" }, - { url = "https://files.pythonhosted.org/packages/0c/3e/804163b932f7603ef256e4a715e5843a9600802bb23a68b4e08c8c0ff61d/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b5637c3f316cab1ec1c9a12b8c5f4750a4c4b71af9157645bf32830e39c03a", size = 1478388, upload-time = "2024-12-24T18:29:25.776Z" }, - { url = "https://files.pythonhosted.org/packages/8a/9e/60eaa75169a154700be74f875a4d9961b11ba048bef315fbe89cb6999056/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:782bb86f245ec18009890e7cb8d13a5ef54dcf2ebe18ed65f795e635a96a1c6a", size = 1413849, upload-time = "2024-12-24T18:29:27.202Z" }, - { url = "https://files.pythonhosted.org/packages/bc/b3/9458adb9472e61a998c8c4d95cfdfec91c73c53a375b30b1428310f923e4/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc978a80a0db3a66d25767b03688f1147a69e6237175c0f4ffffaaedf744055a", size = 1475533, upload-time = "2024-12-24T18:29:28.638Z" }, - { url = "https://files.pythonhosted.org/packages/e4/7a/0a42d9571e35798de80aef4bb43a9b672aa7f8e58643d7bd1950398ffb0a/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:36dbbfd34838500a31f52c9786990d00150860e46cd5041386f217101350f0d3", size = 2268898, upload-time = "2024-12-24T18:29:30.368Z" }, - { url = "https://files.pythonhosted.org/packages/d9/07/1255dc8d80271400126ed8db35a1795b1a2c098ac3a72645075d06fe5c5d/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:eaa973f1e05131de5ff3569bbba7f5fd07ea0595d3870ed4a526d486fe57fa1b", size = 2425605, upload-time = "2024-12-24T18:29:33.151Z" }, - { url = "https://files.pythonhosted.org/packages/84/df/5a3b4cf13780ef6f6942df67b138b03b7e79e9f1f08f57c49957d5867f6e/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a66f60f8d0c87ab7f59b6fb80e642ebb29fec354a4dfad687ca4092ae69d04f4", size = 2375801, upload-time = "2024-12-24T18:29:34.584Z" }, - { url = "https://files.pythonhosted.org/packages/8f/10/2348d068e8b0f635c8c86892788dac7a6b5c0cb12356620ab575775aad89/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858416b7fb777a53f0c59ca08190ce24e9abbd3cffa18886a5781b8e3e26f65d", size = 2520077, upload-time = "2024-12-24T18:29:36.138Z" }, - { url = "https://files.pythonhosted.org/packages/32/d8/014b89fee5d4dce157d814303b0fce4d31385a2af4c41fed194b173b81ac/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:085940635c62697391baafaaeabdf3dd7a6c3643577dde337f4d66eba021b2b8", size = 2338410, upload-time = "2024-12-24T18:29:39.991Z" }, - { url = "https://files.pythonhosted.org/packages/bd/72/dfff0cc97f2a0776e1c9eb5bef1ddfd45f46246c6533b0191887a427bca5/kiwisolver-1.4.8-cp312-cp312-win_amd64.whl", hash = "sha256:01c3d31902c7db5fb6182832713d3b4122ad9317c2c5877d0539227d96bb2e50", size = 71853, upload-time = "2024-12-24T18:29:42.006Z" }, - { url = "https://files.pythonhosted.org/packages/dc/85/220d13d914485c0948a00f0b9eb419efaf6da81b7d72e88ce2391f7aed8d/kiwisolver-1.4.8-cp312-cp312-win_arm64.whl", hash = "sha256:a3c44cb68861de93f0c4a8175fbaa691f0aa22550c331fefef02b618a9dcb476", size = 65424, upload-time = "2024-12-24T18:29:44.38Z" }, - { url = "https://files.pythonhosted.org/packages/79/b3/e62464a652f4f8cd9006e13d07abad844a47df1e6537f73ddfbf1bc997ec/kiwisolver-1.4.8-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:1c8ceb754339793c24aee1c9fb2485b5b1f5bb1c2c214ff13368431e51fc9a09", size = 124156, upload-time = "2024-12-24T18:29:45.368Z" }, - { url = "https://files.pythonhosted.org/packages/8d/2d/f13d06998b546a2ad4f48607a146e045bbe48030774de29f90bdc573df15/kiwisolver-1.4.8-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:54a62808ac74b5e55a04a408cda6156f986cefbcf0ada13572696b507cc92fa1", size = 66555, upload-time = "2024-12-24T18:29:46.37Z" }, - { url = "https://files.pythonhosted.org/packages/59/e3/b8bd14b0a54998a9fd1e8da591c60998dc003618cb19a3f94cb233ec1511/kiwisolver-1.4.8-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:68269e60ee4929893aad82666821aaacbd455284124817af45c11e50a4b42e3c", size = 65071, upload-time = "2024-12-24T18:29:47.333Z" }, - { url = "https://files.pythonhosted.org/packages/f0/1c/6c86f6d85ffe4d0ce04228d976f00674f1df5dc893bf2dd4f1928748f187/kiwisolver-1.4.8-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:34d142fba9c464bc3bbfeff15c96eab0e7310343d6aefb62a79d51421fcc5f1b", size = 1378053, upload-time = "2024-12-24T18:29:49.636Z" }, - { url = "https://files.pythonhosted.org/packages/4e/b9/1c6e9f6dcb103ac5cf87cb695845f5fa71379021500153566d8a8a9fc291/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc373e0eef45b59197de815b1b28ef89ae3955e7722cc9710fb91cd77b7f47", size = 1472278, upload-time = "2024-12-24T18:29:51.164Z" }, - { url = "https://files.pythonhosted.org/packages/ee/81/aca1eb176de671f8bda479b11acdc42c132b61a2ac861c883907dde6debb/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:77e6f57a20b9bd4e1e2cedda4d0b986ebd0216236f0106e55c28aea3d3d69b16", size = 1478139, upload-time = "2024-12-24T18:29:52.594Z" }, - { url = "https://files.pythonhosted.org/packages/49/f4/e081522473671c97b2687d380e9e4c26f748a86363ce5af48b4a28e48d06/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08e77738ed7538f036cd1170cbed942ef749137b1311fa2bbe2a7fda2f6bf3cc", size = 1413517, upload-time = "2024-12-24T18:29:53.941Z" }, - { url = "https://files.pythonhosted.org/packages/8f/e9/6a7d025d8da8c4931522922cd706105aa32b3291d1add8c5427cdcd66e63/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5ce1e481a74b44dd5e92ff03ea0cb371ae7a0268318e202be06c8f04f4f1246", size = 1474952, upload-time = "2024-12-24T18:29:56.523Z" }, - { url = "https://files.pythonhosted.org/packages/82/13/13fa685ae167bee5d94b415991c4fc7bb0a1b6ebea6e753a87044b209678/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:fc2ace710ba7c1dfd1a3b42530b62b9ceed115f19a1656adefce7b1782a37794", size = 2269132, upload-time = "2024-12-24T18:29:57.989Z" }, - { url = "https://files.pythonhosted.org/packages/ef/92/bb7c9395489b99a6cb41d502d3686bac692586db2045adc19e45ee64ed23/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:3452046c37c7692bd52b0e752b87954ef86ee2224e624ef7ce6cb21e8c41cc1b", size = 2425997, upload-time = "2024-12-24T18:29:59.393Z" }, - { url = "https://files.pythonhosted.org/packages/ed/12/87f0e9271e2b63d35d0d8524954145837dd1a6c15b62a2d8c1ebe0f182b4/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:7e9a60b50fe8b2ec6f448fe8d81b07e40141bfced7f896309df271a0b92f80f3", size = 2376060, upload-time = "2024-12-24T18:30:01.338Z" }, - { url = "https://files.pythonhosted.org/packages/02/6e/c8af39288edbce8bf0fa35dee427b082758a4b71e9c91ef18fa667782138/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:918139571133f366e8362fa4a297aeba86c7816b7ecf0bc79168080e2bd79957", size = 2520471, upload-time = "2024-12-24T18:30:04.574Z" }, - { url = "https://files.pythonhosted.org/packages/13/78/df381bc7b26e535c91469f77f16adcd073beb3e2dd25042efd064af82323/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e063ef9f89885a1d68dd8b2e18f5ead48653176d10a0e324e3b0030e3a69adeb", size = 2338793, upload-time = "2024-12-24T18:30:06.25Z" }, - { url = "https://files.pythonhosted.org/packages/d0/dc/c1abe38c37c071d0fc71c9a474fd0b9ede05d42f5a458d584619cfd2371a/kiwisolver-1.4.8-cp313-cp313-win_amd64.whl", hash = "sha256:a17b7c4f5b2c51bb68ed379defd608a03954a1845dfed7cc0117f1cc8a9b7fd2", size = 71855, upload-time = "2024-12-24T18:30:07.535Z" }, - { url = "https://files.pythonhosted.org/packages/a0/b6/21529d595b126ac298fdd90b705d87d4c5693de60023e0efcb4f387ed99e/kiwisolver-1.4.8-cp313-cp313-win_arm64.whl", hash = "sha256:3cd3bc628b25f74aedc6d374d5babf0166a92ff1317f46267f12d2ed54bc1d30", size = 65430, upload-time = "2024-12-24T18:30:08.504Z" }, - { url = "https://files.pythonhosted.org/packages/34/bd/b89380b7298e3af9b39f49334e3e2a4af0e04819789f04b43d560516c0c8/kiwisolver-1.4.8-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:370fd2df41660ed4e26b8c9d6bbcad668fbe2560462cba151a721d49e5b6628c", size = 126294, upload-time = "2024-12-24T18:30:09.508Z" }, - { url = "https://files.pythonhosted.org/packages/83/41/5857dc72e5e4148eaac5aa76e0703e594e4465f8ab7ec0fc60e3a9bb8fea/kiwisolver-1.4.8-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:84a2f830d42707de1d191b9490ac186bf7997a9495d4e9072210a1296345f7dc", size = 67736, upload-time = "2024-12-24T18:30:11.039Z" }, - { url = "https://files.pythonhosted.org/packages/e1/d1/be059b8db56ac270489fb0b3297fd1e53d195ba76e9bbb30e5401fa6b759/kiwisolver-1.4.8-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7a3ad337add5148cf51ce0b55642dc551c0b9d6248458a757f98796ca7348712", size = 66194, upload-time = "2024-12-24T18:30:14.886Z" }, - { url = "https://files.pythonhosted.org/packages/e1/83/4b73975f149819eb7dcf9299ed467eba068ecb16439a98990dcb12e63fdd/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7506488470f41169b86d8c9aeff587293f530a23a23a49d6bc64dab66bedc71e", size = 1465942, upload-time = "2024-12-24T18:30:18.927Z" }, - { url = "https://files.pythonhosted.org/packages/c7/2c/30a5cdde5102958e602c07466bce058b9d7cb48734aa7a4327261ac8e002/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f0121b07b356a22fb0414cec4666bbe36fd6d0d759db3d37228f496ed67c880", size = 1595341, upload-time = "2024-12-24T18:30:22.102Z" }, - { url = "https://files.pythonhosted.org/packages/ff/9b/1e71db1c000385aa069704f5990574b8244cce854ecd83119c19e83c9586/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d6d6bd87df62c27d4185de7c511c6248040afae67028a8a22012b010bc7ad062", size = 1598455, upload-time = "2024-12-24T18:30:24.947Z" }, - { url = "https://files.pythonhosted.org/packages/85/92/c8fec52ddf06231b31cbb779af77e99b8253cd96bd135250b9498144c78b/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:291331973c64bb9cce50bbe871fb2e675c4331dab4f31abe89f175ad7679a4d7", size = 1522138, upload-time = "2024-12-24T18:30:26.286Z" }, - { url = "https://files.pythonhosted.org/packages/0b/51/9eb7e2cd07a15d8bdd976f6190c0164f92ce1904e5c0c79198c4972926b7/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:893f5525bb92d3d735878ec00f781b2de998333659507d29ea4466208df37bed", size = 1582857, upload-time = "2024-12-24T18:30:28.86Z" }, - { url = "https://files.pythonhosted.org/packages/0f/95/c5a00387a5405e68ba32cc64af65ce881a39b98d73cc394b24143bebc5b8/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b47a465040146981dc9db8647981b8cb96366fbc8d452b031e4f8fdffec3f26d", size = 2293129, upload-time = "2024-12-24T18:30:30.34Z" }, - { url = "https://files.pythonhosted.org/packages/44/83/eeb7af7d706b8347548313fa3a3a15931f404533cc54fe01f39e830dd231/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:99cea8b9dd34ff80c521aef46a1dddb0dcc0283cf18bde6d756f1e6f31772165", size = 2421538, upload-time = "2024-12-24T18:30:33.334Z" }, - { url = "https://files.pythonhosted.org/packages/05/f9/27e94c1b3eb29e6933b6986ffc5fa1177d2cd1f0c8efc5f02c91c9ac61de/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:151dffc4865e5fe6dafce5480fab84f950d14566c480c08a53c663a0020504b6", size = 2390661, upload-time = "2024-12-24T18:30:34.939Z" }, - { url = "https://files.pythonhosted.org/packages/d9/d4/3c9735faa36ac591a4afcc2980d2691000506050b7a7e80bcfe44048daa7/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:577facaa411c10421314598b50413aa1ebcf5126f704f1e5d72d7e4e9f020d90", size = 2546710, upload-time = "2024-12-24T18:30:37.281Z" }, - { url = "https://files.pythonhosted.org/packages/4c/fa/be89a49c640930180657482a74970cdcf6f7072c8d2471e1babe17a222dc/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:be4816dc51c8a471749d664161b434912eee82f2ea66bd7628bd14583a833e85", size = 2349213, upload-time = "2024-12-24T18:30:40.019Z" }, - { url = "https://files.pythonhosted.org/packages/1f/f9/ae81c47a43e33b93b0a9819cac6723257f5da2a5a60daf46aa5c7226ea85/kiwisolver-1.4.8-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e7a019419b7b510f0f7c9dceff8c5eae2392037eae483a7f9162625233802b0a", size = 60403, upload-time = "2024-12-24T18:30:41.372Z" }, - { url = "https://files.pythonhosted.org/packages/58/ca/f92b5cb6f4ce0c1ebfcfe3e2e42b96917e16f7090e45b21102941924f18f/kiwisolver-1.4.8-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:286b18e86682fd2217a48fc6be6b0f20c1d0ed10958d8dc53453ad58d7be0bf8", size = 58657, upload-time = "2024-12-24T18:30:42.392Z" }, - { url = "https://files.pythonhosted.org/packages/80/28/ae0240f732f0484d3a4dc885d055653c47144bdf59b670aae0ec3c65a7c8/kiwisolver-1.4.8-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4191ee8dfd0be1c3666ccbac178c5a05d5f8d689bbe3fc92f3c4abec817f8fe0", size = 84948, upload-time = "2024-12-24T18:30:44.703Z" }, - { url = "https://files.pythonhosted.org/packages/5d/eb/78d50346c51db22c7203c1611f9b513075f35c4e0e4877c5dde378d66043/kiwisolver-1.4.8-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7cd2785b9391f2873ad46088ed7599a6a71e762e1ea33e87514b1a441ed1da1c", size = 81186, upload-time = "2024-12-24T18:30:45.654Z" }, - { url = "https://files.pythonhosted.org/packages/43/f8/7259f18c77adca88d5f64f9a522792e178b2691f3748817a8750c2d216ef/kiwisolver-1.4.8-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c07b29089b7ba090b6f1a669f1411f27221c3662b3a1b7010e67b59bb5a6f10b", size = 80279, upload-time = "2024-12-24T18:30:47.951Z" }, - { url = "https://files.pythonhosted.org/packages/3a/1d/50ad811d1c5dae091e4cf046beba925bcae0a610e79ae4c538f996f63ed5/kiwisolver-1.4.8-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:65ea09a5a3faadd59c2ce96dc7bf0f364986a315949dc6374f04396b0d60e09b", size = 71762, upload-time = "2024-12-24T18:30:48.903Z" }, +version = "1.4.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5c/3c/85844f1b0feb11ee581ac23fe5fce65cd049a200c1446708cc1b7f922875/kiwisolver-1.4.9.tar.gz", hash = "sha256:c3b22c26c6fd6811b0ae8363b95ca8ce4ea3c202d3d0975b2914310ceb1bcc4d", size = 97564, upload-time = "2025-08-10T21:27:49.279Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/5d/8ce64e36d4e3aac5ca96996457dcf33e34e6051492399a3f1fec5657f30b/kiwisolver-1.4.9-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b4b4d74bda2b8ebf4da5bd42af11d02d04428b2c32846e4c2c93219df8a7987b", size = 124159, upload-time = "2025-08-10T21:25:35.472Z" }, + { url = "https://files.pythonhosted.org/packages/96/1e/22f63ec454874378175a5f435d6ea1363dd33fb2af832c6643e4ccea0dc8/kiwisolver-1.4.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:fb3b8132019ea572f4611d770991000d7f58127560c4889729248eb5852a102f", size = 66578, upload-time = "2025-08-10T21:25:36.73Z" }, + { url = "https://files.pythonhosted.org/packages/41/4c/1925dcfff47a02d465121967b95151c82d11027d5ec5242771e580e731bd/kiwisolver-1.4.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:84fd60810829c27ae375114cd379da1fa65e6918e1da405f356a775d49a62bcf", size = 65312, upload-time = "2025-08-10T21:25:37.658Z" }, + { url = "https://files.pythonhosted.org/packages/d4/42/0f333164e6307a0687d1eb9ad256215aae2f4bd5d28f4653d6cd319a3ba3/kiwisolver-1.4.9-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b78efa4c6e804ecdf727e580dbb9cba85624d2e1c6b5cb059c66290063bd99a9", size = 1628458, upload-time = "2025-08-10T21:25:39.067Z" }, + { url = "https://files.pythonhosted.org/packages/86/b6/2dccb977d651943995a90bfe3495c2ab2ba5cd77093d9f2318a20c9a6f59/kiwisolver-1.4.9-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d4efec7bcf21671db6a3294ff301d2fc861c31faa3c8740d1a94689234d1b415", size = 1225640, upload-time = "2025-08-10T21:25:40.489Z" }, + { url = "https://files.pythonhosted.org/packages/50/2b/362ebd3eec46c850ccf2bfe3e30f2fc4c008750011f38a850f088c56a1c6/kiwisolver-1.4.9-cp310-cp310-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:90f47e70293fc3688b71271100a1a5453aa9944a81d27ff779c108372cf5567b", size = 1244074, upload-time = "2025-08-10T21:25:42.221Z" }, + { url = "https://files.pythonhosted.org/packages/6f/bb/f09a1e66dab8984773d13184a10a29fe67125337649d26bdef547024ed6b/kiwisolver-1.4.9-cp310-cp310-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8fdca1def57a2e88ef339de1737a1449d6dbf5fab184c54a1fca01d541317154", size = 1293036, upload-time = "2025-08-10T21:25:43.801Z" }, + { url = "https://files.pythonhosted.org/packages/ea/01/11ecf892f201cafda0f68fa59212edaea93e96c37884b747c181303fccd1/kiwisolver-1.4.9-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:9cf554f21be770f5111a1690d42313e140355e687e05cf82cb23d0a721a64a48", size = 2175310, upload-time = "2025-08-10T21:25:45.045Z" }, + { url = "https://files.pythonhosted.org/packages/7f/5f/bfe11d5b934f500cc004314819ea92427e6e5462706a498c1d4fc052e08f/kiwisolver-1.4.9-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fc1795ac5cd0510207482c3d1d3ed781143383b8cfd36f5c645f3897ce066220", size = 2270943, upload-time = "2025-08-10T21:25:46.393Z" }, + { url = "https://files.pythonhosted.org/packages/3d/de/259f786bf71f1e03e73d87e2db1a9a3bcab64d7b4fd780167123161630ad/kiwisolver-1.4.9-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:ccd09f20ccdbbd341b21a67ab50a119b64a403b09288c27481575105283c1586", size = 2440488, upload-time = "2025-08-10T21:25:48.074Z" }, + { url = "https://files.pythonhosted.org/packages/1b/76/c989c278faf037c4d3421ec07a5c452cd3e09545d6dae7f87c15f54e4edf/kiwisolver-1.4.9-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:540c7c72324d864406a009d72f5d6856f49693db95d1fbb46cf86febef873634", size = 2246787, upload-time = "2025-08-10T21:25:49.442Z" }, + { url = "https://files.pythonhosted.org/packages/a2/55/c2898d84ca440852e560ca9f2a0d28e6e931ac0849b896d77231929900e7/kiwisolver-1.4.9-cp310-cp310-win_amd64.whl", hash = "sha256:ede8c6d533bc6601a47ad4046080d36b8fc99f81e6f1c17b0ac3c2dc91ac7611", size = 73730, upload-time = "2025-08-10T21:25:51.102Z" }, + { url = "https://files.pythonhosted.org/packages/e8/09/486d6ac523dd33b80b368247f238125d027964cfacb45c654841e88fb2ae/kiwisolver-1.4.9-cp310-cp310-win_arm64.whl", hash = "sha256:7b4da0d01ac866a57dd61ac258c5607b4cd677f63abaec7b148354d2b2cdd536", size = 65036, upload-time = "2025-08-10T21:25:52.063Z" }, + { url = "https://files.pythonhosted.org/packages/6f/ab/c80b0d5a9d8a1a65f4f815f2afff9798b12c3b9f31f1d304dd233dd920e2/kiwisolver-1.4.9-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:eb14a5da6dc7642b0f3a18f13654847cd8b7a2550e2645a5bda677862b03ba16", size = 124167, upload-time = "2025-08-10T21:25:53.403Z" }, + { url = "https://files.pythonhosted.org/packages/a0/c0/27fe1a68a39cf62472a300e2879ffc13c0538546c359b86f149cc19f6ac3/kiwisolver-1.4.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:39a219e1c81ae3b103643d2aedb90f1ef22650deb266ff12a19e7773f3e5f089", size = 66579, upload-time = "2025-08-10T21:25:54.79Z" }, + { url = "https://files.pythonhosted.org/packages/31/a2/a12a503ac1fd4943c50f9822678e8015a790a13b5490354c68afb8489814/kiwisolver-1.4.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2405a7d98604b87f3fc28b1716783534b1b4b8510d8142adca34ee0bc3c87543", size = 65309, upload-time = "2025-08-10T21:25:55.76Z" }, + { url = "https://files.pythonhosted.org/packages/66/e1/e533435c0be77c3f64040d68d7a657771194a63c279f55573188161e81ca/kiwisolver-1.4.9-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:dc1ae486f9abcef254b5618dfb4113dd49f94c68e3e027d03cf0143f3f772b61", size = 1435596, upload-time = "2025-08-10T21:25:56.861Z" }, + { url = "https://files.pythonhosted.org/packages/67/1e/51b73c7347f9aabdc7215aa79e8b15299097dc2f8e67dee2b095faca9cb0/kiwisolver-1.4.9-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8a1f570ce4d62d718dce3f179ee78dac3b545ac16c0c04bb363b7607a949c0d1", size = 1246548, upload-time = "2025-08-10T21:25:58.246Z" }, + { url = "https://files.pythonhosted.org/packages/21/aa/72a1c5d1e430294f2d32adb9542719cfb441b5da368d09d268c7757af46c/kiwisolver-1.4.9-cp311-cp311-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:cb27e7b78d716c591e88e0a09a2139c6577865d7f2e152488c2cc6257f460872", size = 1263618, upload-time = "2025-08-10T21:25:59.857Z" }, + { url = "https://files.pythonhosted.org/packages/a3/af/db1509a9e79dbf4c260ce0cfa3903ea8945f6240e9e59d1e4deb731b1a40/kiwisolver-1.4.9-cp311-cp311-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:15163165efc2f627eb9687ea5f3a28137217d217ac4024893d753f46bce9de26", size = 1317437, upload-time = "2025-08-10T21:26:01.105Z" }, + { url = "https://files.pythonhosted.org/packages/e0/f2/3ea5ee5d52abacdd12013a94130436e19969fa183faa1e7c7fbc89e9a42f/kiwisolver-1.4.9-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bdee92c56a71d2b24c33a7d4c2856bd6419d017e08caa7802d2963870e315028", size = 2195742, upload-time = "2025-08-10T21:26:02.675Z" }, + { url = "https://files.pythonhosted.org/packages/6f/9b/1efdd3013c2d9a2566aa6a337e9923a00590c516add9a1e89a768a3eb2fc/kiwisolver-1.4.9-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:412f287c55a6f54b0650bd9b6dce5aceddb95864a1a90c87af16979d37c89771", size = 2290810, upload-time = "2025-08-10T21:26:04.009Z" }, + { url = "https://files.pythonhosted.org/packages/fb/e5/cfdc36109ae4e67361f9bc5b41323648cb24a01b9ade18784657e022e65f/kiwisolver-1.4.9-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2c93f00dcba2eea70af2be5f11a830a742fe6b579a1d4e00f47760ef13be247a", size = 2461579, upload-time = "2025-08-10T21:26:05.317Z" }, + { url = "https://files.pythonhosted.org/packages/62/86/b589e5e86c7610842213994cdea5add00960076bef4ae290c5fa68589cac/kiwisolver-1.4.9-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f117e1a089d9411663a3207ba874f31be9ac8eaa5b533787024dc07aeb74f464", size = 2268071, upload-time = "2025-08-10T21:26:06.686Z" }, + { url = "https://files.pythonhosted.org/packages/3b/c6/f8df8509fd1eee6c622febe54384a96cfaf4d43bf2ccec7a0cc17e4715c9/kiwisolver-1.4.9-cp311-cp311-win_amd64.whl", hash = "sha256:be6a04e6c79819c9a8c2373317d19a96048e5a3f90bec587787e86a1153883c2", size = 73840, upload-time = "2025-08-10T21:26:07.94Z" }, + { url = "https://files.pythonhosted.org/packages/e2/2d/16e0581daafd147bc11ac53f032a2b45eabac897f42a338d0a13c1e5c436/kiwisolver-1.4.9-cp311-cp311-win_arm64.whl", hash = "sha256:0ae37737256ba2de764ddc12aed4956460277f00c4996d51a197e72f62f5eec7", size = 65159, upload-time = "2025-08-10T21:26:09.048Z" }, + { url = "https://files.pythonhosted.org/packages/86/c9/13573a747838aeb1c76e3267620daa054f4152444d1f3d1a2324b78255b5/kiwisolver-1.4.9-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ac5a486ac389dddcc5bef4f365b6ae3ffff2c433324fb38dd35e3fab7c957999", size = 123686, upload-time = "2025-08-10T21:26:10.034Z" }, + { url = "https://files.pythonhosted.org/packages/51/ea/2ecf727927f103ffd1739271ca19c424d0e65ea473fbaeea1c014aea93f6/kiwisolver-1.4.9-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f2ba92255faa7309d06fe44c3a4a97efe1c8d640c2a79a5ef728b685762a6fd2", size = 66460, upload-time = "2025-08-10T21:26:11.083Z" }, + { url = "https://files.pythonhosted.org/packages/5b/5a/51f5464373ce2aeb5194508298a508b6f21d3867f499556263c64c621914/kiwisolver-1.4.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a2899935e724dd1074cb568ce7ac0dce28b2cd6ab539c8e001a8578eb106d14", size = 64952, upload-time = "2025-08-10T21:26:12.058Z" }, + { url = "https://files.pythonhosted.org/packages/70/90/6d240beb0f24b74371762873e9b7f499f1e02166a2d9c5801f4dbf8fa12e/kiwisolver-1.4.9-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f6008a4919fdbc0b0097089f67a1eb55d950ed7e90ce2cc3e640abadd2757a04", size = 1474756, upload-time = "2025-08-10T21:26:13.096Z" }, + { url = "https://files.pythonhosted.org/packages/12/42/f36816eaf465220f683fb711efdd1bbf7a7005a2473d0e4ed421389bd26c/kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:67bb8b474b4181770f926f7b7d2f8c0248cbcb78b660fdd41a47054b28d2a752", size = 1276404, upload-time = "2025-08-10T21:26:14.457Z" }, + { url = "https://files.pythonhosted.org/packages/2e/64/bc2de94800adc830c476dce44e9b40fd0809cddeef1fde9fcf0f73da301f/kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2327a4a30d3ee07d2fbe2e7933e8a37c591663b96ce42a00bc67461a87d7df77", size = 1294410, upload-time = "2025-08-10T21:26:15.73Z" }, + { url = "https://files.pythonhosted.org/packages/5f/42/2dc82330a70aa8e55b6d395b11018045e58d0bb00834502bf11509f79091/kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7a08b491ec91b1d5053ac177afe5290adacf1f0f6307d771ccac5de30592d198", size = 1343631, upload-time = "2025-08-10T21:26:17.045Z" }, + { url = "https://files.pythonhosted.org/packages/22/fd/f4c67a6ed1aab149ec5a8a401c323cee7a1cbe364381bb6c9c0d564e0e20/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d8fc5c867c22b828001b6a38d2eaeb88160bf5783c6cb4a5e440efc981ce286d", size = 2224963, upload-time = "2025-08-10T21:26:18.737Z" }, + { url = "https://files.pythonhosted.org/packages/45/aa/76720bd4cb3713314677d9ec94dcc21ced3f1baf4830adde5bb9b2430a5f/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:3b3115b2581ea35bb6d1f24a4c90af37e5d9b49dcff267eeed14c3893c5b86ab", size = 2321295, upload-time = "2025-08-10T21:26:20.11Z" }, + { url = "https://files.pythonhosted.org/packages/80/19/d3ec0d9ab711242f56ae0dc2fc5d70e298bb4a1f9dfab44c027668c673a1/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858e4c22fb075920b96a291928cb7dea5644e94c0ee4fcd5af7e865655e4ccf2", size = 2487987, upload-time = "2025-08-10T21:26:21.49Z" }, + { url = "https://files.pythonhosted.org/packages/39/e9/61e4813b2c97e86b6fdbd4dd824bf72d28bcd8d4849b8084a357bc0dd64d/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ed0fecd28cc62c54b262e3736f8bb2512d8dcfdc2bcf08be5f47f96bf405b145", size = 2291817, upload-time = "2025-08-10T21:26:22.812Z" }, + { url = "https://files.pythonhosted.org/packages/a0/41/85d82b0291db7504da3c2defe35c9a8a5c9803a730f297bd823d11d5fb77/kiwisolver-1.4.9-cp312-cp312-win_amd64.whl", hash = "sha256:f68208a520c3d86ea51acf688a3e3002615a7f0238002cccc17affecc86a8a54", size = 73895, upload-time = "2025-08-10T21:26:24.37Z" }, + { url = "https://files.pythonhosted.org/packages/e2/92/5f3068cf15ee5cb624a0c7596e67e2a0bb2adee33f71c379054a491d07da/kiwisolver-1.4.9-cp312-cp312-win_arm64.whl", hash = "sha256:2c1a4f57df73965f3f14df20b80ee29e6a7930a57d2d9e8491a25f676e197c60", size = 64992, upload-time = "2025-08-10T21:26:25.732Z" }, + { url = "https://files.pythonhosted.org/packages/31/c1/c2686cda909742ab66c7388e9a1a8521a59eb89f8bcfbee28fc980d07e24/kiwisolver-1.4.9-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a5d0432ccf1c7ab14f9949eec60c5d1f924f17c037e9f8b33352fa05799359b8", size = 123681, upload-time = "2025-08-10T21:26:26.725Z" }, + { url = "https://files.pythonhosted.org/packages/ca/f0/f44f50c9f5b1a1860261092e3bc91ecdc9acda848a8b8c6abfda4a24dd5c/kiwisolver-1.4.9-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efb3a45b35622bb6c16dbfab491a8f5a391fe0e9d45ef32f4df85658232ca0e2", size = 66464, upload-time = "2025-08-10T21:26:27.733Z" }, + { url = "https://files.pythonhosted.org/packages/2d/7a/9d90a151f558e29c3936b8a47ac770235f436f2120aca41a6d5f3d62ae8d/kiwisolver-1.4.9-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1a12cf6398e8a0a001a059747a1cbf24705e18fe413bc22de7b3d15c67cffe3f", size = 64961, upload-time = "2025-08-10T21:26:28.729Z" }, + { url = "https://files.pythonhosted.org/packages/e9/e9/f218a2cb3a9ffbe324ca29a9e399fa2d2866d7f348ec3a88df87fc248fc5/kiwisolver-1.4.9-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b67e6efbf68e077dd71d1a6b37e43e1a99d0bff1a3d51867d45ee8908b931098", size = 1474607, upload-time = "2025-08-10T21:26:29.798Z" }, + { url = "https://files.pythonhosted.org/packages/d9/28/aac26d4c882f14de59041636292bc838db8961373825df23b8eeb807e198/kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5656aa670507437af0207645273ccdfee4f14bacd7f7c67a4306d0dcaeaf6eed", size = 1276546, upload-time = "2025-08-10T21:26:31.401Z" }, + { url = "https://files.pythonhosted.org/packages/8b/ad/8bfc1c93d4cc565e5069162f610ba2f48ff39b7de4b5b8d93f69f30c4bed/kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:bfc08add558155345129c7803b3671cf195e6a56e7a12f3dde7c57d9b417f525", size = 1294482, upload-time = "2025-08-10T21:26:32.721Z" }, + { url = "https://files.pythonhosted.org/packages/da/f1/6aca55ff798901d8ce403206d00e033191f63d82dd708a186e0ed2067e9c/kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:40092754720b174e6ccf9e845d0d8c7d8e12c3d71e7fc35f55f3813e96376f78", size = 1343720, upload-time = "2025-08-10T21:26:34.032Z" }, + { url = "https://files.pythonhosted.org/packages/d1/91/eed031876c595c81d90d0f6fc681ece250e14bf6998c3d7c419466b523b7/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:497d05f29a1300d14e02e6441cf0f5ee81c1ff5a304b0d9fb77423974684e08b", size = 2224907, upload-time = "2025-08-10T21:26:35.824Z" }, + { url = "https://files.pythonhosted.org/packages/e9/ec/4d1925f2e49617b9cca9c34bfa11adefad49d00db038e692a559454dfb2e/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:bdd1a81a1860476eb41ac4bc1e07b3f07259e6d55bbf739b79c8aaedcf512799", size = 2321334, upload-time = "2025-08-10T21:26:37.534Z" }, + { url = "https://files.pythonhosted.org/packages/43/cb/450cd4499356f68802750c6ddc18647b8ea01ffa28f50d20598e0befe6e9/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:e6b93f13371d341afee3be9f7c5964e3fe61d5fa30f6a30eb49856935dfe4fc3", size = 2488313, upload-time = "2025-08-10T21:26:39.191Z" }, + { url = "https://files.pythonhosted.org/packages/71/67/fc76242bd99f885651128a5d4fa6083e5524694b7c88b489b1b55fdc491d/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d75aa530ccfaa593da12834b86a0724f58bff12706659baa9227c2ccaa06264c", size = 2291970, upload-time = "2025-08-10T21:26:40.828Z" }, + { url = "https://files.pythonhosted.org/packages/75/bd/f1a5d894000941739f2ae1b65a32892349423ad49c2e6d0771d0bad3fae4/kiwisolver-1.4.9-cp313-cp313-win_amd64.whl", hash = "sha256:dd0a578400839256df88c16abddf9ba14813ec5f21362e1fe65022e00c883d4d", size = 73894, upload-time = "2025-08-10T21:26:42.33Z" }, + { url = "https://files.pythonhosted.org/packages/95/38/dce480814d25b99a391abbddadc78f7c117c6da34be68ca8b02d5848b424/kiwisolver-1.4.9-cp313-cp313-win_arm64.whl", hash = "sha256:d4188e73af84ca82468f09cadc5ac4db578109e52acb4518d8154698d3a87ca2", size = 64995, upload-time = "2025-08-10T21:26:43.889Z" }, + { url = "https://files.pythonhosted.org/packages/e2/37/7d218ce5d92dadc5ebdd9070d903e0c7cf7edfe03f179433ac4d13ce659c/kiwisolver-1.4.9-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:5a0f2724dfd4e3b3ac5a82436a8e6fd16baa7d507117e4279b660fe8ca38a3a1", size = 126510, upload-time = "2025-08-10T21:26:44.915Z" }, + { url = "https://files.pythonhosted.org/packages/23/b0/e85a2b48233daef4b648fb657ebbb6f8367696a2d9548a00b4ee0eb67803/kiwisolver-1.4.9-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:1b11d6a633e4ed84fc0ddafd4ebfd8ea49b3f25082c04ad12b8315c11d504dc1", size = 67903, upload-time = "2025-08-10T21:26:45.934Z" }, + { url = "https://files.pythonhosted.org/packages/44/98/f2425bc0113ad7de24da6bb4dae1343476e95e1d738be7c04d31a5d037fd/kiwisolver-1.4.9-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61874cdb0a36016354853593cffc38e56fc9ca5aa97d2c05d3dcf6922cd55a11", size = 66402, upload-time = "2025-08-10T21:26:47.101Z" }, + { url = "https://files.pythonhosted.org/packages/98/d8/594657886df9f34c4177cc353cc28ca7e6e5eb562d37ccc233bff43bbe2a/kiwisolver-1.4.9-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:60c439763a969a6af93b4881db0eed8fadf93ee98e18cbc35bc8da868d0c4f0c", size = 1582135, upload-time = "2025-08-10T21:26:48.665Z" }, + { url = "https://files.pythonhosted.org/packages/5c/c6/38a115b7170f8b306fc929e166340c24958347308ea3012c2b44e7e295db/kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92a2f997387a1b79a75e7803aa7ded2cfbe2823852ccf1ba3bcf613b62ae3197", size = 1389409, upload-time = "2025-08-10T21:26:50.335Z" }, + { url = "https://files.pythonhosted.org/packages/bf/3b/e04883dace81f24a568bcee6eb3001da4ba05114afa622ec9b6fafdc1f5e/kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a31d512c812daea6d8b3be3b2bfcbeb091dbb09177706569bcfc6240dcf8b41c", size = 1401763, upload-time = "2025-08-10T21:26:51.867Z" }, + { url = "https://files.pythonhosted.org/packages/9f/80/20ace48e33408947af49d7d15c341eaee69e4e0304aab4b7660e234d6288/kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:52a15b0f35dad39862d376df10c5230155243a2c1a436e39eb55623ccbd68185", size = 1453643, upload-time = "2025-08-10T21:26:53.592Z" }, + { url = "https://files.pythonhosted.org/packages/64/31/6ce4380a4cd1f515bdda976a1e90e547ccd47b67a1546d63884463c92ca9/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a30fd6fdef1430fd9e1ba7b3398b5ee4e2887783917a687d86ba69985fb08748", size = 2330818, upload-time = "2025-08-10T21:26:55.051Z" }, + { url = "https://files.pythonhosted.org/packages/fa/e9/3f3fcba3bcc7432c795b82646306e822f3fd74df0ee81f0fa067a1f95668/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:cc9617b46837c6468197b5945e196ee9ca43057bb7d9d1ae688101e4e1dddf64", size = 2419963, upload-time = "2025-08-10T21:26:56.421Z" }, + { url = "https://files.pythonhosted.org/packages/99/43/7320c50e4133575c66e9f7dadead35ab22d7c012a3b09bb35647792b2a6d/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:0ab74e19f6a2b027ea4f845a78827969af45ce790e6cb3e1ebab71bdf9f215ff", size = 2594639, upload-time = "2025-08-10T21:26:57.882Z" }, + { url = "https://files.pythonhosted.org/packages/65/d6/17ae4a270d4a987ef8a385b906d2bdfc9fce502d6dc0d3aea865b47f548c/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dba5ee5d3981160c28d5490f0d1b7ed730c22470ff7f6cc26cfcfaacb9896a07", size = 2391741, upload-time = "2025-08-10T21:26:59.237Z" }, + { url = "https://files.pythonhosted.org/packages/2a/8f/8f6f491d595a9e5912971f3f863d81baddccc8a4d0c3749d6a0dd9ffc9df/kiwisolver-1.4.9-cp313-cp313t-win_arm64.whl", hash = "sha256:0749fd8f4218ad2e851e11cc4dc05c7cbc0cbc4267bdfdb31782e65aace4ee9c", size = 68646, upload-time = "2025-08-10T21:27:00.52Z" }, + { url = "https://files.pythonhosted.org/packages/6b/32/6cc0fbc9c54d06c2969faa9c1d29f5751a2e51809dd55c69055e62d9b426/kiwisolver-1.4.9-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:9928fe1eb816d11ae170885a74d074f57af3a0d65777ca47e9aeb854a1fba386", size = 123806, upload-time = "2025-08-10T21:27:01.537Z" }, + { url = "https://files.pythonhosted.org/packages/b2/dd/2bfb1d4a4823d92e8cbb420fe024b8d2167f72079b3bb941207c42570bdf/kiwisolver-1.4.9-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d0005b053977e7b43388ddec89fa567f43d4f6d5c2c0affe57de5ebf290dc552", size = 66605, upload-time = "2025-08-10T21:27:03.335Z" }, + { url = "https://files.pythonhosted.org/packages/f7/69/00aafdb4e4509c2ca6064646cba9cd4b37933898f426756adb2cb92ebbed/kiwisolver-1.4.9-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:2635d352d67458b66fd0667c14cb1d4145e9560d503219034a18a87e971ce4f3", size = 64925, upload-time = "2025-08-10T21:27:04.339Z" }, + { url = "https://files.pythonhosted.org/packages/43/dc/51acc6791aa14e5cb6d8a2e28cefb0dc2886d8862795449d021334c0df20/kiwisolver-1.4.9-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:767c23ad1c58c9e827b649a9ab7809fd5fd9db266a9cf02b0e926ddc2c680d58", size = 1472414, upload-time = "2025-08-10T21:27:05.437Z" }, + { url = "https://files.pythonhosted.org/packages/3d/bb/93fa64a81db304ac8a246f834d5094fae4b13baf53c839d6bb6e81177129/kiwisolver-1.4.9-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:72d0eb9fba308b8311685c2268cf7d0a0639a6cd027d8128659f72bdd8a024b4", size = 1281272, upload-time = "2025-08-10T21:27:07.063Z" }, + { url = "https://files.pythonhosted.org/packages/70/e6/6df102916960fb8d05069d4bd92d6d9a8202d5a3e2444494e7cd50f65b7a/kiwisolver-1.4.9-cp314-cp314-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f68e4f3eeca8fb22cc3d731f9715a13b652795ef657a13df1ad0c7dc0e9731df", size = 1298578, upload-time = "2025-08-10T21:27:08.452Z" }, + { url = "https://files.pythonhosted.org/packages/7c/47/e142aaa612f5343736b087864dbaebc53ea8831453fb47e7521fa8658f30/kiwisolver-1.4.9-cp314-cp314-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d84cd4061ae292d8ac367b2c3fa3aad11cb8625a95d135fe93f286f914f3f5a6", size = 1345607, upload-time = "2025-08-10T21:27:10.125Z" }, + { url = "https://files.pythonhosted.org/packages/54/89/d641a746194a0f4d1a3670fb900d0dbaa786fb98341056814bc3f058fa52/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:a60ea74330b91bd22a29638940d115df9dc00af5035a9a2a6ad9399ffb4ceca5", size = 2230150, upload-time = "2025-08-10T21:27:11.484Z" }, + { url = "https://files.pythonhosted.org/packages/aa/6b/5ee1207198febdf16ac11f78c5ae40861b809cbe0e6d2a8d5b0b3044b199/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:ce6a3a4e106cf35c2d9c4fa17c05ce0b180db622736845d4315519397a77beaf", size = 2325979, upload-time = "2025-08-10T21:27:12.917Z" }, + { url = "https://files.pythonhosted.org/packages/fc/ff/b269eefd90f4ae14dcc74973d5a0f6d28d3b9bb1afd8c0340513afe6b39a/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:77937e5e2a38a7b48eef0585114fe7930346993a88060d0bf886086d2aa49ef5", size = 2491456, upload-time = "2025-08-10T21:27:14.353Z" }, + { url = "https://files.pythonhosted.org/packages/fc/d4/10303190bd4d30de547534601e259a4fbf014eed94aae3e5521129215086/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:24c175051354f4a28c5d6a31c93906dc653e2bf234e8a4bbfb964892078898ce", size = 2294621, upload-time = "2025-08-10T21:27:15.808Z" }, + { url = "https://files.pythonhosted.org/packages/28/e0/a9a90416fce5c0be25742729c2ea52105d62eda6c4be4d803c2a7be1fa50/kiwisolver-1.4.9-cp314-cp314-win_amd64.whl", hash = "sha256:0763515d4df10edf6d06a3c19734e2566368980d21ebec439f33f9eb936c07b7", size = 75417, upload-time = "2025-08-10T21:27:17.436Z" }, + { url = "https://files.pythonhosted.org/packages/1f/10/6949958215b7a9a264299a7db195564e87900f709db9245e4ebdd3c70779/kiwisolver-1.4.9-cp314-cp314-win_arm64.whl", hash = "sha256:0e4e2bf29574a6a7b7f6cb5fa69293b9f96c928949ac4a53ba3f525dffb87f9c", size = 66582, upload-time = "2025-08-10T21:27:18.436Z" }, + { url = "https://files.pythonhosted.org/packages/ec/79/60e53067903d3bc5469b369fe0dfc6b3482e2133e85dae9daa9527535991/kiwisolver-1.4.9-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:d976bbb382b202f71c67f77b0ac11244021cfa3f7dfd9e562eefcea2df711548", size = 126514, upload-time = "2025-08-10T21:27:19.465Z" }, + { url = "https://files.pythonhosted.org/packages/25/d1/4843d3e8d46b072c12a38c97c57fab4608d36e13fe47d47ee96b4d61ba6f/kiwisolver-1.4.9-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:2489e4e5d7ef9a1c300a5e0196e43d9c739f066ef23270607d45aba368b91f2d", size = 67905, upload-time = "2025-08-10T21:27:20.51Z" }, + { url = "https://files.pythonhosted.org/packages/8c/ae/29ffcbd239aea8b93108de1278271ae764dfc0d803a5693914975f200596/kiwisolver-1.4.9-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:e2ea9f7ab7fbf18fffb1b5434ce7c69a07582f7acc7717720f1d69f3e806f90c", size = 66399, upload-time = "2025-08-10T21:27:21.496Z" }, + { url = "https://files.pythonhosted.org/packages/a1/ae/d7ba902aa604152c2ceba5d352d7b62106bedbccc8e95c3934d94472bfa3/kiwisolver-1.4.9-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b34e51affded8faee0dfdb705416153819d8ea9250bbbf7ea1b249bdeb5f1122", size = 1582197, upload-time = "2025-08-10T21:27:22.604Z" }, + { url = "https://files.pythonhosted.org/packages/f2/41/27c70d427eddb8bc7e4f16420a20fefc6f480312122a59a959fdfe0445ad/kiwisolver-1.4.9-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8aacd3d4b33b772542b2e01beb50187536967b514b00003bdda7589722d2a64", size = 1390125, upload-time = "2025-08-10T21:27:24.036Z" }, + { url = "https://files.pythonhosted.org/packages/41/42/b3799a12bafc76d962ad69083f8b43b12bf4fe78b097b12e105d75c9b8f1/kiwisolver-1.4.9-cp314-cp314t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7cf974dd4e35fa315563ac99d6287a1024e4dc2077b8a7d7cd3d2fb65d283134", size = 1402612, upload-time = "2025-08-10T21:27:25.773Z" }, + { url = "https://files.pythonhosted.org/packages/d2/b5/a210ea073ea1cfaca1bb5c55a62307d8252f531beb364e18aa1e0888b5a0/kiwisolver-1.4.9-cp314-cp314t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:85bd218b5ecfbee8c8a82e121802dcb519a86044c9c3b2e4aef02fa05c6da370", size = 1453990, upload-time = "2025-08-10T21:27:27.089Z" }, + { url = "https://files.pythonhosted.org/packages/5f/ce/a829eb8c033e977d7ea03ed32fb3c1781b4fa0433fbadfff29e39c676f32/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:0856e241c2d3df4efef7c04a1e46b1936b6120c9bcf36dd216e3acd84bc4fb21", size = 2331601, upload-time = "2025-08-10T21:27:29.343Z" }, + { url = "https://files.pythonhosted.org/packages/e0/4b/b5e97eb142eb9cd0072dacfcdcd31b1c66dc7352b0f7c7255d339c0edf00/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:9af39d6551f97d31a4deebeac6f45b156f9755ddc59c07b402c148f5dbb6482a", size = 2422041, upload-time = "2025-08-10T21:27:30.754Z" }, + { url = "https://files.pythonhosted.org/packages/40/be/8eb4cd53e1b85ba4edc3a9321666f12b83113a178845593307a3e7891f44/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:bb4ae2b57fc1d8cbd1cf7b1d9913803681ffa903e7488012be5b76dedf49297f", size = 2594897, upload-time = "2025-08-10T21:27:32.803Z" }, + { url = "https://files.pythonhosted.org/packages/99/dd/841e9a66c4715477ea0abc78da039832fbb09dac5c35c58dc4c41a407b8a/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:aedff62918805fb62d43a4aa2ecd4482c380dc76cd31bd7c8878588a61bd0369", size = 2391835, upload-time = "2025-08-10T21:27:34.23Z" }, + { url = "https://files.pythonhosted.org/packages/0c/28/4b2e5c47a0da96896fdfdb006340ade064afa1e63675d01ea5ac222b6d52/kiwisolver-1.4.9-cp314-cp314t-win_amd64.whl", hash = "sha256:1fa333e8b2ce4d9660f2cda9c0e1b6bafcfb2457a9d259faa82289e73ec24891", size = 79988, upload-time = "2025-08-10T21:27:35.587Z" }, + { url = "https://files.pythonhosted.org/packages/80/be/3578e8afd18c88cdf9cb4cffde75a96d2be38c5a903f1ed0ceec061bd09e/kiwisolver-1.4.9-cp314-cp314t-win_arm64.whl", hash = "sha256:4a48a2ce79d65d363597ef7b567ce3d14d68783d2b2263d98db3d9477805ba32", size = 70260, upload-time = "2025-08-10T21:27:36.606Z" }, + { url = "https://files.pythonhosted.org/packages/a2/63/fde392691690f55b38d5dd7b3710f5353bf7a8e52de93a22968801ab8978/kiwisolver-1.4.9-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4d1d9e582ad4d63062d34077a9a1e9f3c34088a2ec5135b1f7190c07cf366527", size = 60183, upload-time = "2025-08-10T21:27:37.669Z" }, + { url = "https://files.pythonhosted.org/packages/27/b1/6aad34edfdb7cced27f371866f211332bba215bfd918ad3322a58f480d8b/kiwisolver-1.4.9-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:deed0c7258ceb4c44ad5ec7d9918f9f14fd05b2be86378d86cf50e63d1e7b771", size = 58675, upload-time = "2025-08-10T21:27:39.031Z" }, + { url = "https://files.pythonhosted.org/packages/9d/1a/23d855a702bb35a76faed5ae2ba3de57d323f48b1f6b17ee2176c4849463/kiwisolver-1.4.9-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0a590506f303f512dff6b7f75fd2fd18e16943efee932008fe7140e5fa91d80e", size = 80277, upload-time = "2025-08-10T21:27:40.129Z" }, + { url = "https://files.pythonhosted.org/packages/5a/5b/5239e3c2b8fb5afa1e8508f721bb77325f740ab6994d963e61b2b7abcc1e/kiwisolver-1.4.9-pp310-pypy310_pp73-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e09c2279a4d01f099f52d5c4b3d9e208e91edcbd1a175c9662a8b16e000fece9", size = 77994, upload-time = "2025-08-10T21:27:41.181Z" }, + { url = "https://files.pythonhosted.org/packages/f9/1c/5d4d468fb16f8410e596ed0eac02d2c68752aa7dc92997fe9d60a7147665/kiwisolver-1.4.9-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c9e7cdf45d594ee04d5be1b24dd9d49f3d1590959b2271fb30b5ca2b262c00fb", size = 73744, upload-time = "2025-08-10T21:27:42.254Z" }, + { url = "https://files.pythonhosted.org/packages/a3/0f/36d89194b5a32c054ce93e586d4049b6c2c22887b0eb229c61c68afd3078/kiwisolver-1.4.9-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:720e05574713db64c356e86732c0f3c5252818d05f9df320f0ad8380641acea5", size = 60104, upload-time = "2025-08-10T21:27:43.287Z" }, + { url = "https://files.pythonhosted.org/packages/52/ba/4ed75f59e4658fd21fe7dde1fee0ac397c678ec3befba3fe6482d987af87/kiwisolver-1.4.9-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:17680d737d5335b552994a2008fab4c851bcd7de33094a82067ef3a576ff02fa", size = 58592, upload-time = "2025-08-10T21:27:44.314Z" }, + { url = "https://files.pythonhosted.org/packages/33/01/a8ea7c5ea32a9b45ceeaee051a04c8ed4320f5add3c51bfa20879b765b70/kiwisolver-1.4.9-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:85b5352f94e490c028926ea567fc569c52ec79ce131dadb968d3853e809518c2", size = 80281, upload-time = "2025-08-10T21:27:45.369Z" }, + { url = "https://files.pythonhosted.org/packages/da/e3/dbd2ecdce306f1d07a1aaf324817ee993aab7aee9db47ceac757deabafbe/kiwisolver-1.4.9-pp311-pypy311_pp73-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:464415881e4801295659462c49461a24fb107c140de781d55518c4b80cb6790f", size = 78009, upload-time = "2025-08-10T21:27:46.376Z" }, + { url = "https://files.pythonhosted.org/packages/da/e9/0d4add7873a73e462aeb45c036a2dead2562b825aa46ba326727b3f31016/kiwisolver-1.4.9-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:fb940820c63a9590d31d88b815e7a3aa5915cad3ce735ab45f0c730b39547de1", size = 73929, upload-time = "2025-08-10T21:27:48.236Z" }, ] [[package]] name = "larch" -version = "6.0.41" +version = "6.0.42" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "addicty" }, @@ -1870,26 +2334,36 @@ dependencies = [ { name = "numexpr" }, { name = "numpy" }, { name = "pandas", version = "2.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, - { name = "pandas", version = "2.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, + { name = "pandas", version = "2.3.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, { name = "pyarrow" }, { name = "rich" }, - { name = "scipy" }, + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "scipy", version = "1.16.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "sparse" }, { name = "xarray" }, { name = "xmle" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5c/d1/97530abd90733f7841f8c3ee33fc9439d5dbec941b91644290613ef2fe93/larch-6.0.41.tar.gz", hash = "sha256:e481b1aec37ee3e9f7e83f1333b85d12bca71bba8abd2843bddf0dc92d0c7118", size = 2152956, upload-time = "2025-05-31T01:18:19.389Z" } +sdist = { url = "https://files.pythonhosted.org/packages/41/3c/0db11f6fbe7dcf2edf2c2843f4b74f03d42f3f607a20e774bf3ec74d3467/larch-6.0.42.tar.gz", hash = "sha256:09c76404a3a91505acd04902743a156ad5b84697d3c69796452d3852a4b2f2dd", size = 2153168, upload-time = "2025-09-28T22:58:23.784Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/66/a9/2bd3ea4b0c4297b06db04553709bd7d3a01c0e8847a621832d3f1cec8fec/larch-6.0.42-py3-none-any.whl", hash = "sha256:5d9cf582c9c0b293eca15ddb1859e516ad89cdb33c9509b447f7c137b97c647c", size = 1851908, upload-time = "2025-09-28T22:58:21.644Z" }, +] + +[[package]] +name = "lark" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/37/a13baf0135f348af608c667633cbe5d13aa2c5c15a56ae9ad3e6cba45ae3/lark-1.3.0.tar.gz", hash = "sha256:9a3839d0ca5e1faf7cfa3460e420e859b66bcbde05b634e73c369c8244c5fa48", size = 259551, upload-time = "2025-09-22T13:45:05.072Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/55/91/651748855bd1fccf2fccab59e7f6082f92944f383b3d5640bb54a4157a25/larch-6.0.41-py3-none-any.whl", hash = "sha256:51be8365cf083578d12582fe47d7f984d74c09b1998dae5770ae3a9b71d0746b", size = 1851748, upload-time = "2025-05-31T01:18:17.173Z" }, + { url = "https://files.pythonhosted.org/packages/a8/3e/1c6b43277de64fc3c0333b0e72ab7b52ddaaea205210d60d9b9f83c3d0c7/lark-1.3.0-py3-none-any.whl", hash = "sha256:80661f261fb2584a9828a097a2432efd575af27d20be0fd35d17f0fe37253831", size = 113002, upload-time = "2025-09-22T13:45:03.747Z" }, ] [[package]] name = "latexcodec" -version = "3.0.0" +version = "3.0.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/98/e7/ed339caf3662976949e4fdbfdf4a6db818b8d2aa1cf2b5f73af89e936bba/latexcodec-3.0.0.tar.gz", hash = "sha256:917dc5fe242762cc19d963e6548b42d63a118028cdd3361d62397e3b638b6bc5", size = 31023, upload-time = "2024-03-06T14:51:39.283Z" } +sdist = { url = "https://files.pythonhosted.org/packages/27/dd/4270b2c5e2ee49316c3859e62293bd2ea8e382339d63ab7bbe9f39c0ec3b/latexcodec-3.0.1.tar.gz", hash = "sha256:e78a6911cd72f9dec35031c6ec23584de6842bfbc4610a9678868d14cdfb0357", size = 31222, upload-time = "2025-06-17T18:47:34.051Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b0/bf/ea8887e9f31a8f93ca306699d11909c6140151393a4216f0d9f85a004077/latexcodec-3.0.0-py3-none-any.whl", hash = "sha256:6f3477ad5e61a0a99bd31a6a370c34e88733a6bad9c921a3ffcfacada12f41a7", size = 18150, upload-time = "2024-03-06T14:51:37.872Z" }, + { url = "https://files.pythonhosted.org/packages/b5/40/23569737873cc9637fd488606347e9dd92b9fa37ba4fcda1f98ee5219a97/latexcodec-3.0.1-py3-none-any.whl", hash = "sha256:a9eb8200bff693f0437a69581f7579eb6bca25c4193515c09900ce76451e452e", size = 18532, upload-time = "2025-06-17T18:47:30.726Z" }, ] [[package]] @@ -1906,30 +2380,30 @@ wheels = [ [[package]] name = "llvmlite" -version = "0.44.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/89/6a/95a3d3610d5c75293d5dbbb2a76480d5d4eeba641557b69fe90af6c5b84e/llvmlite-0.44.0.tar.gz", hash = "sha256:07667d66a5d150abed9157ab6c0b9393c9356f229784a4385c02f99e94fc94d4", size = 171880, upload-time = "2025-01-20T11:14:41.342Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/41/75/d4863ddfd8ab5f6e70f4504cf8cc37f4e986ec6910f4ef8502bb7d3c1c71/llvmlite-0.44.0-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:9fbadbfba8422123bab5535b293da1cf72f9f478a65645ecd73e781f962ca614", size = 28132306, upload-time = "2025-01-20T11:12:18.634Z" }, - { url = "https://files.pythonhosted.org/packages/37/d9/6e8943e1515d2f1003e8278819ec03e4e653e2eeb71e4d00de6cfe59424e/llvmlite-0.44.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cccf8eb28f24840f2689fb1a45f9c0f7e582dd24e088dcf96e424834af11f791", size = 26201096, upload-time = "2025-01-20T11:12:24.544Z" }, - { url = "https://files.pythonhosted.org/packages/aa/46/8ffbc114def88cc698906bf5acab54ca9fdf9214fe04aed0e71731fb3688/llvmlite-0.44.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7202b678cdf904823c764ee0fe2dfe38a76981f4c1e51715b4cb5abb6cf1d9e8", size = 42361859, upload-time = "2025-01-20T11:12:31.839Z" }, - { url = "https://files.pythonhosted.org/packages/30/1c/9366b29ab050a726af13ebaae8d0dff00c3c58562261c79c635ad4f5eb71/llvmlite-0.44.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:40526fb5e313d7b96bda4cbb2c85cd5374e04d80732dd36a282d72a560bb6408", size = 41184199, upload-time = "2025-01-20T11:12:40.049Z" }, - { url = "https://files.pythonhosted.org/packages/69/07/35e7c594b021ecb1938540f5bce543ddd8713cff97f71d81f021221edc1b/llvmlite-0.44.0-cp310-cp310-win_amd64.whl", hash = "sha256:41e3839150db4330e1b2716c0be3b5c4672525b4c9005e17c7597f835f351ce2", size = 30332381, upload-time = "2025-01-20T11:12:47.054Z" }, - { url = "https://files.pythonhosted.org/packages/b5/e2/86b245397052386595ad726f9742e5223d7aea999b18c518a50e96c3aca4/llvmlite-0.44.0-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:eed7d5f29136bda63b6d7804c279e2b72e08c952b7c5df61f45db408e0ee52f3", size = 28132305, upload-time = "2025-01-20T11:12:53.936Z" }, - { url = "https://files.pythonhosted.org/packages/ff/ec/506902dc6870249fbe2466d9cf66d531265d0f3a1157213c8f986250c033/llvmlite-0.44.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ace564d9fa44bb91eb6e6d8e7754977783c68e90a471ea7ce913bff30bd62427", size = 26201090, upload-time = "2025-01-20T11:12:59.847Z" }, - { url = "https://files.pythonhosted.org/packages/99/fe/d030f1849ebb1f394bb3f7adad5e729b634fb100515594aca25c354ffc62/llvmlite-0.44.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c5d22c3bfc842668168a786af4205ec8e3ad29fb1bc03fd11fd48460d0df64c1", size = 42361858, upload-time = "2025-01-20T11:13:07.623Z" }, - { url = "https://files.pythonhosted.org/packages/d7/7a/ce6174664b9077fc673d172e4c888cb0b128e707e306bc33fff8c2035f0d/llvmlite-0.44.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f01a394e9c9b7b1d4e63c327b096d10f6f0ed149ef53d38a09b3749dcf8c9610", size = 41184200, upload-time = "2025-01-20T11:13:20.058Z" }, - { url = "https://files.pythonhosted.org/packages/5f/c6/258801143975a6d09a373f2641237992496e15567b907a4d401839d671b8/llvmlite-0.44.0-cp311-cp311-win_amd64.whl", hash = "sha256:d8489634d43c20cd0ad71330dde1d5bc7b9966937a263ff1ec1cebb90dc50955", size = 30331193, upload-time = "2025-01-20T11:13:26.976Z" }, - { url = "https://files.pythonhosted.org/packages/15/86/e3c3195b92e6e492458f16d233e58a1a812aa2bfbef9bdd0fbafcec85c60/llvmlite-0.44.0-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:1d671a56acf725bf1b531d5ef76b86660a5ab8ef19bb6a46064a705c6ca80aad", size = 28132297, upload-time = "2025-01-20T11:13:32.57Z" }, - { url = "https://files.pythonhosted.org/packages/d6/53/373b6b8be67b9221d12b24125fd0ec56b1078b660eeae266ec388a6ac9a0/llvmlite-0.44.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5f79a728e0435493611c9f405168682bb75ffd1fbe6fc360733b850c80a026db", size = 26201105, upload-time = "2025-01-20T11:13:38.744Z" }, - { url = "https://files.pythonhosted.org/packages/cb/da/8341fd3056419441286c8e26bf436923021005ece0bff5f41906476ae514/llvmlite-0.44.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0143a5ef336da14deaa8ec26c5449ad5b6a2b564df82fcef4be040b9cacfea9", size = 42361901, upload-time = "2025-01-20T11:13:46.711Z" }, - { url = "https://files.pythonhosted.org/packages/53/ad/d79349dc07b8a395a99153d7ce8b01d6fcdc9f8231355a5df55ded649b61/llvmlite-0.44.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d752f89e31b66db6f8da06df8b39f9b91e78c5feea1bf9e8c1fba1d1c24c065d", size = 41184247, upload-time = "2025-01-20T11:13:56.159Z" }, - { url = "https://files.pythonhosted.org/packages/e2/3b/a9a17366af80127bd09decbe2a54d8974b6d8b274b39bf47fbaedeec6307/llvmlite-0.44.0-cp312-cp312-win_amd64.whl", hash = "sha256:eae7e2d4ca8f88f89d315b48c6b741dcb925d6a1042da694aa16ab3dd4cbd3a1", size = 30332380, upload-time = "2025-01-20T11:14:02.442Z" }, - { url = "https://files.pythonhosted.org/packages/89/24/4c0ca705a717514c2092b18476e7a12c74d34d875e05e4d742618ebbf449/llvmlite-0.44.0-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:319bddd44e5f71ae2689859b7203080716448a3cd1128fb144fe5c055219d516", size = 28132306, upload-time = "2025-01-20T11:14:09.035Z" }, - { url = "https://files.pythonhosted.org/packages/01/cf/1dd5a60ba6aee7122ab9243fd614abcf22f36b0437cbbe1ccf1e3391461c/llvmlite-0.44.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9c58867118bad04a0bb22a2e0068c693719658105e40009ffe95c7000fcde88e", size = 26201090, upload-time = "2025-01-20T11:14:15.401Z" }, - { url = "https://files.pythonhosted.org/packages/d2/1b/656f5a357de7135a3777bd735cc7c9b8f23b4d37465505bd0eaf4be9befe/llvmlite-0.44.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46224058b13c96af1365290bdfebe9a6264ae62fb79b2b55693deed11657a8bf", size = 42361904, upload-time = "2025-01-20T11:14:22.949Z" }, - { url = "https://files.pythonhosted.org/packages/d8/e1/12c5f20cb9168fb3464a34310411d5ad86e4163c8ff2d14a2b57e5cc6bac/llvmlite-0.44.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:aa0097052c32bf721a4efc03bd109d335dfa57d9bffb3d4c24cc680711b8b4fc", size = 41184245, upload-time = "2025-01-20T11:14:31.731Z" }, - { url = "https://files.pythonhosted.org/packages/d0/81/e66fc86539293282fd9cb7c9417438e897f369e79ffb62e1ae5e5154d4dd/llvmlite-0.44.0-cp313-cp313-win_amd64.whl", hash = "sha256:2fb7c4f2fb86cbae6dca3db9ab203eeea0e22d73b99bc2341cdf9de93612e930", size = 30331193, upload-time = "2025-01-20T11:14:38.578Z" }, +version = "0.45.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9d/73/4b29b502618766276816f2f2a7cf9017bd3889bc38a49319bee9ad492b75/llvmlite-0.45.0.tar.gz", hash = "sha256:ceb0bcd20da949178bd7ab78af8de73e9f3c483ac46b5bef39f06a4862aa8336", size = 185289, upload-time = "2025-09-18T17:47:14.293Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/02/4c/df303ed13c77ee022ad203c7ec697f96d863735ec76e293916837bb3f8e3/llvmlite-0.45.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:3018e5f8547c8b05e736281d5bd23ff86b88ab94697db2beeaa6f3bce9cfc721", size = 43043438, upload-time = "2025-09-18T17:40:14.292Z" }, + { url = "https://files.pythonhosted.org/packages/f8/b9/72d7612e54eda411952c2a2dd43b1ebd422b5cd66a1ff9fcd8a825160ab8/llvmlite-0.45.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ca7b15dc4422551f1b5fb1dbd734d5e8a9416028890d31d4e23a04fbc8a975c4", size = 37253034, upload-time = "2025-09-18T17:42:12.866Z" }, + { url = "https://files.pythonhosted.org/packages/6a/3d/2c0cf2c63107bc4550eb92d830dac85d4b518aea2fe3774a253ffb9aa7c5/llvmlite-0.45.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a9c7343bec403a79248859df75c7945768de70bf547eac8c1cc8b8840e0336ba", size = 56288125, upload-time = "2025-09-18T17:35:06.252Z" }, + { url = "https://files.pythonhosted.org/packages/5c/f3/bddaa88371fa8c2f2361790eba661ba49d0496f00b8bbf9a74c5cd11a7b0/llvmlite-0.45.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:56713a25bf81081fc818aa36cbffb70533b3c23291ce0efc17ac8a3b684b8be3", size = 55140875, upload-time = "2025-09-18T17:38:08.277Z" }, + { url = "https://files.pythonhosted.org/packages/55/8a/ac08bfbe0f3ba6080a2cfe74a5f57cede55261c90dba8850f18e95bde1db/llvmlite-0.45.0-cp310-cp310-win_amd64.whl", hash = "sha256:849ba7de7153d8d92bc66577bb951c9baf8d9f67f2521c4f39c78718d471362e", size = 37946101, upload-time = "2025-09-18T17:43:42.729Z" }, + { url = "https://files.pythonhosted.org/packages/03/a4/6a9f9745c80639eee5a6e112de7811ba0a2e9d7f2a6cef226ce54d00d63a/llvmlite-0.45.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:9b1b37e00b553e9420d9a2e327e84c5ac65a5690dcacf7fc153014780d97532a", size = 43043438, upload-time = "2025-09-18T17:40:48.769Z" }, + { url = "https://files.pythonhosted.org/packages/9b/8b/1d7d8f5daaaff4eb8e1673f304fbae24ad4b02e15ce1f47602c163486ac0/llvmlite-0.45.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:cd039b8da5514db2729b7c9ae7526cae8da748a540fa3ab721b50c54651d2362", size = 37253033, upload-time = "2025-09-18T17:42:33.206Z" }, + { url = "https://files.pythonhosted.org/packages/e6/95/a13362fe71d1e88bea9e3cc58a3337b3302a3e4af68391df10389f3b7f78/llvmlite-0.45.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c6815d0d3f96de34491d3dc192e11e933e3448ceff0b58572a53f39795996e01", size = 56288124, upload-time = "2025-09-18T17:35:45.017Z" }, + { url = "https://files.pythonhosted.org/packages/2d/cf/4ab3677e11aff8f32573d4bbc617b7707454d47125c86263e189ef576bb1/llvmlite-0.45.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ba79cc2cbdd0f61632ca8e9235fef3657a8aacd636d5775cd13807ceb8265f63", size = 55140874, upload-time = "2025-09-18T17:38:40.018Z" }, + { url = "https://files.pythonhosted.org/packages/92/31/63bbf92c51f49ed2f50c6097ffa11b831246dacd30f9476b8516bde70771/llvmlite-0.45.0-cp311-cp311-win_amd64.whl", hash = "sha256:6188da8e9e3906b167fb64bc84a05e6bf98095d982f45f323bed5def2ba7db1c", size = 37946103, upload-time = "2025-09-18T17:44:08.348Z" }, + { url = "https://files.pythonhosted.org/packages/af/b0/81419371eb6154b7ad5c4ded693fa6c9bbfbc8920f9c3ebacc0747e8bf0b/llvmlite-0.45.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:3928119253849e7c9aad4f881feb3e886370bb7ac6eccbc728b35a1be89064cc", size = 43043441, upload-time = "2025-09-18T17:41:21.519Z" }, + { url = "https://files.pythonhosted.org/packages/49/0a/0a2c2cedfbf4bbf61be2db83fe4d7416f234ba2f0e564375f9f45ff7ed7a/llvmlite-0.45.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a3e9b5dad694edb9e43904ede037458ee73a18b4e2f227e44fc0f808aceab824", size = 37253035, upload-time = "2025-09-18T17:42:55.189Z" }, + { url = "https://files.pythonhosted.org/packages/d1/ee/6584480d0dcd101bc8800de4d3bfef93cea92161b43903719825f4497449/llvmlite-0.45.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4955635f316e3ffc0271ee7a3da586ae92cd3e70709b6cd59df641e980636d4c", size = 56288125, upload-time = "2025-09-18T17:36:32.038Z" }, + { url = "https://files.pythonhosted.org/packages/10/7b/81c72824f5197154236589cbd4fabd04ae59c57be80b0b401b168deef952/llvmlite-0.45.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5e7497f1b75d741e568bf4a2dfccd5c702d6b5f3d232dd4a59ed851a82e587bd", size = 55140873, upload-time = "2025-09-18T17:39:07.152Z" }, + { url = "https://files.pythonhosted.org/packages/b4/b5/acc977fcd891c0fb155c9edcf3fa8c6cded1d5163625137ef696c5e725e3/llvmlite-0.45.0-cp312-cp312-win_amd64.whl", hash = "sha256:6404f5363986efbe1c7c1afd19da495534e46180466d593ace5a5c042b2f3f94", size = 37946104, upload-time = "2025-09-18T17:44:30.299Z" }, + { url = "https://files.pythonhosted.org/packages/d2/1e/dd09f15cf59eb528101917916291a6021148c356908e34c726e139a95687/llvmlite-0.45.0-cp313-cp313-macosx_10_15_x86_64.whl", hash = "sha256:f719f98e4f3a6292b1a6495500b2cf668d3604907499c483b326da5ce2ff9f01", size = 43043440, upload-time = "2025-09-18T17:41:46.947Z" }, + { url = "https://files.pythonhosted.org/packages/cd/e3/5d43a20dec7561a34f81081612eb860b8ee26233cf44cce7fc39c3aff4e9/llvmlite-0.45.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:4ffa899f7584ef48f1037308d92cb19460a0afb834aa1fe9db9d3e52d0e81a79", size = 37253036, upload-time = "2025-09-18T17:43:18.15Z" }, + { url = "https://files.pythonhosted.org/packages/00/c4/c2e5ade9354908630aec2eeeeacbfe341a96d07e080dc0cd25cbbb9c8c82/llvmlite-0.45.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2c12fde908967e464b265554143c030ba4dcc2b981a815582d7708a30295018e", size = 56288125, upload-time = "2025-09-18T17:37:32.215Z" }, + { url = "https://files.pythonhosted.org/packages/95/d5/d5aefc379e189d83483d7263efe794f5ee0783ad90be1b09f58b98c738ee/llvmlite-0.45.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:83567cbbf598eb57f108222dfc3dfee065c20a2aa004391360949f2e8ff2b8b4", size = 55140873, upload-time = "2025-09-18T17:39:44.928Z" }, + { url = "https://files.pythonhosted.org/packages/21/16/bac6a35ae77d6f881d2c6b54cbb2df2b07e030e1a66da8041359d09b0d87/llvmlite-0.45.0-cp313-cp313-win_amd64.whl", hash = "sha256:f68890ceb662e874933103e91e239389ff7275c4befba8e43ccd46ae3231b89e", size = 37946102, upload-time = "2025-09-18T17:44:56.051Z" }, ] [[package]] @@ -1955,68 +2429,96 @@ wheels = [ [[package]] name = "markupsafe" -version = "3.0.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537, upload-time = "2024-10-18T15:21:54.129Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/04/90/d08277ce111dd22f77149fd1a5d4653eeb3b3eaacbdfcbae5afb2600eebd/MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8", size = 14357, upload-time = "2024-10-18T15:20:51.44Z" }, - { url = "https://files.pythonhosted.org/packages/04/e1/6e2194baeae0bca1fae6629dc0cbbb968d4d941469cbab11a3872edff374/MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158", size = 12393, upload-time = "2024-10-18T15:20:52.426Z" }, - { url = "https://files.pythonhosted.org/packages/1d/69/35fa85a8ece0a437493dc61ce0bb6d459dcba482c34197e3efc829aa357f/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579", size = 21732, upload-time = "2024-10-18T15:20:53.578Z" }, - { url = "https://files.pythonhosted.org/packages/22/35/137da042dfb4720b638d2937c38a9c2df83fe32d20e8c8f3185dbfef05f7/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d", size = 20866, upload-time = "2024-10-18T15:20:55.06Z" }, - { url = "https://files.pythonhosted.org/packages/29/28/6d029a903727a1b62edb51863232152fd335d602def598dade38996887f0/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb", size = 20964, upload-time = "2024-10-18T15:20:55.906Z" }, - { url = "https://files.pythonhosted.org/packages/cc/cd/07438f95f83e8bc028279909d9c9bd39e24149b0d60053a97b2bc4f8aa51/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b", size = 21977, upload-time = "2024-10-18T15:20:57.189Z" }, - { url = "https://files.pythonhosted.org/packages/29/01/84b57395b4cc062f9c4c55ce0df7d3108ca32397299d9df00fedd9117d3d/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c", size = 21366, upload-time = "2024-10-18T15:20:58.235Z" }, - { url = "https://files.pythonhosted.org/packages/bd/6e/61ebf08d8940553afff20d1fb1ba7294b6f8d279df9fd0c0db911b4bbcfd/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171", size = 21091, upload-time = "2024-10-18T15:20:59.235Z" }, - { url = "https://files.pythonhosted.org/packages/11/23/ffbf53694e8c94ebd1e7e491de185124277964344733c45481f32ede2499/MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50", size = 15065, upload-time = "2024-10-18T15:21:00.307Z" }, - { url = "https://files.pythonhosted.org/packages/44/06/e7175d06dd6e9172d4a69a72592cb3f7a996a9c396eee29082826449bbc3/MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a", size = 15514, upload-time = "2024-10-18T15:21:01.122Z" }, - { url = "https://files.pythonhosted.org/packages/6b/28/bbf83e3f76936960b850435576dd5e67034e200469571be53f69174a2dfd/MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d", size = 14353, upload-time = "2024-10-18T15:21:02.187Z" }, - { url = "https://files.pythonhosted.org/packages/6c/30/316d194b093cde57d448a4c3209f22e3046c5bb2fb0820b118292b334be7/MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93", size = 12392, upload-time = "2024-10-18T15:21:02.941Z" }, - { url = "https://files.pythonhosted.org/packages/f2/96/9cdafba8445d3a53cae530aaf83c38ec64c4d5427d975c974084af5bc5d2/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832", size = 23984, upload-time = "2024-10-18T15:21:03.953Z" }, - { url = "https://files.pythonhosted.org/packages/f1/a4/aefb044a2cd8d7334c8a47d3fb2c9f328ac48cb349468cc31c20b539305f/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84", size = 23120, upload-time = "2024-10-18T15:21:06.495Z" }, - { url = "https://files.pythonhosted.org/packages/8d/21/5e4851379f88f3fad1de30361db501300d4f07bcad047d3cb0449fc51f8c/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca", size = 23032, upload-time = "2024-10-18T15:21:07.295Z" }, - { url = "https://files.pythonhosted.org/packages/00/7b/e92c64e079b2d0d7ddf69899c98842f3f9a60a1ae72657c89ce2655c999d/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798", size = 24057, upload-time = "2024-10-18T15:21:08.073Z" }, - { url = "https://files.pythonhosted.org/packages/f9/ac/46f960ca323037caa0a10662ef97d0a4728e890334fc156b9f9e52bcc4ca/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e", size = 23359, upload-time = "2024-10-18T15:21:09.318Z" }, - { url = "https://files.pythonhosted.org/packages/69/84/83439e16197337b8b14b6a5b9c2105fff81d42c2a7c5b58ac7b62ee2c3b1/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4", size = 23306, upload-time = "2024-10-18T15:21:10.185Z" }, - { url = "https://files.pythonhosted.org/packages/9a/34/a15aa69f01e2181ed8d2b685c0d2f6655d5cca2c4db0ddea775e631918cd/MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d", size = 15094, upload-time = "2024-10-18T15:21:11.005Z" }, - { url = "https://files.pythonhosted.org/packages/da/b8/3a3bd761922d416f3dc5d00bfbed11f66b1ab89a0c2b6e887240a30b0f6b/MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b", size = 15521, upload-time = "2024-10-18T15:21:12.911Z" }, - { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274, upload-time = "2024-10-18T15:21:13.777Z" }, - { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348, upload-time = "2024-10-18T15:21:14.822Z" }, - { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149, upload-time = "2024-10-18T15:21:15.642Z" }, - { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118, upload-time = "2024-10-18T15:21:17.133Z" }, - { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993, upload-time = "2024-10-18T15:21:18.064Z" }, - { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178, upload-time = "2024-10-18T15:21:18.859Z" }, - { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319, upload-time = "2024-10-18T15:21:19.671Z" }, - { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352, upload-time = "2024-10-18T15:21:20.971Z" }, - { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097, upload-time = "2024-10-18T15:21:22.646Z" }, - { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601, upload-time = "2024-10-18T15:21:23.499Z" }, - { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274, upload-time = "2024-10-18T15:21:24.577Z" }, - { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352, upload-time = "2024-10-18T15:21:25.382Z" }, - { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122, upload-time = "2024-10-18T15:21:26.199Z" }, - { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085, upload-time = "2024-10-18T15:21:27.029Z" }, - { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978, upload-time = "2024-10-18T15:21:27.846Z" }, - { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208, upload-time = "2024-10-18T15:21:28.744Z" }, - { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357, upload-time = "2024-10-18T15:21:29.545Z" }, - { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344, upload-time = "2024-10-18T15:21:30.366Z" }, - { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101, upload-time = "2024-10-18T15:21:31.207Z" }, - { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603, upload-time = "2024-10-18T15:21:32.032Z" }, - { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510, upload-time = "2024-10-18T15:21:33.625Z" }, - { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486, upload-time = "2024-10-18T15:21:34.611Z" }, - { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480, upload-time = "2024-10-18T15:21:35.398Z" }, - { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914, upload-time = "2024-10-18T15:21:36.231Z" }, - { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796, upload-time = "2024-10-18T15:21:37.073Z" }, - { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473, upload-time = "2024-10-18T15:21:37.932Z" }, - { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114, upload-time = "2024-10-18T15:21:39.799Z" }, - { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098, upload-time = "2024-10-18T15:21:40.813Z" }, - { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208, upload-time = "2024-10-18T15:21:41.814Z" }, - { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739, upload-time = "2024-10-18T15:21:42.784Z" }, +version = "3.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", size = 80313, upload-time = "2025-09-27T18:37:40.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/4b/3541d44f3937ba468b75da9eebcae497dcf67adb65caa16760b0a6807ebb/markupsafe-3.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2f981d352f04553a7171b8e44369f2af4055f888dfb147d55e42d29e29e74559", size = 11631, upload-time = "2025-09-27T18:36:05.558Z" }, + { url = "https://files.pythonhosted.org/packages/98/1b/fbd8eed11021cabd9226c37342fa6ca4e8a98d8188a8d9b66740494960e4/markupsafe-3.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e1c1493fb6e50ab01d20a22826e57520f1284df32f2d8601fdd90b6304601419", size = 12057, upload-time = "2025-09-27T18:36:07.165Z" }, + { url = "https://files.pythonhosted.org/packages/40/01/e560d658dc0bb8ab762670ece35281dec7b6c1b33f5fbc09ebb57a185519/markupsafe-3.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ba88449deb3de88bd40044603fafffb7bc2b055d626a330323a9ed736661695", size = 22050, upload-time = "2025-09-27T18:36:08.005Z" }, + { url = "https://files.pythonhosted.org/packages/af/cd/ce6e848bbf2c32314c9b237839119c5a564a59725b53157c856e90937b7a/markupsafe-3.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f42d0984e947b8adf7dd6dde396e720934d12c506ce84eea8476409563607591", size = 20681, upload-time = "2025-09-27T18:36:08.881Z" }, + { url = "https://files.pythonhosted.org/packages/c9/2a/b5c12c809f1c3045c4d580b035a743d12fcde53cf685dbc44660826308da/markupsafe-3.0.3-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c0c0b3ade1c0b13b936d7970b1d37a57acde9199dc2aecc4c336773e1d86049c", size = 20705, upload-time = "2025-09-27T18:36:10.131Z" }, + { url = "https://files.pythonhosted.org/packages/cf/e3/9427a68c82728d0a88c50f890d0fc072a1484de2f3ac1ad0bfc1a7214fd5/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0303439a41979d9e74d18ff5e2dd8c43ed6c6001fd40e5bf2e43f7bd9bbc523f", size = 21524, upload-time = "2025-09-27T18:36:11.324Z" }, + { url = "https://files.pythonhosted.org/packages/bc/36/23578f29e9e582a4d0278e009b38081dbe363c5e7165113fad546918a232/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:d2ee202e79d8ed691ceebae8e0486bd9a2cd4794cec4824e1c99b6f5009502f6", size = 20282, upload-time = "2025-09-27T18:36:12.573Z" }, + { url = "https://files.pythonhosted.org/packages/56/21/dca11354e756ebd03e036bd8ad58d6d7168c80ce1fe5e75218e4945cbab7/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:177b5253b2834fe3678cb4a5f0059808258584c559193998be2601324fdeafb1", size = 20745, upload-time = "2025-09-27T18:36:13.504Z" }, + { url = "https://files.pythonhosted.org/packages/87/99/faba9369a7ad6e4d10b6a5fbf71fa2a188fe4a593b15f0963b73859a1bbd/markupsafe-3.0.3-cp310-cp310-win32.whl", hash = "sha256:2a15a08b17dd94c53a1da0438822d70ebcd13f8c3a95abe3a9ef9f11a94830aa", size = 14571, upload-time = "2025-09-27T18:36:14.779Z" }, + { url = "https://files.pythonhosted.org/packages/d6/25/55dc3ab959917602c96985cb1253efaa4ff42f71194bddeb61eb7278b8be/markupsafe-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:c4ffb7ebf07cfe8931028e3e4c85f0357459a3f9f9490886198848f4fa002ec8", size = 15056, upload-time = "2025-09-27T18:36:16.125Z" }, + { url = "https://files.pythonhosted.org/packages/d0/9e/0a02226640c255d1da0b8d12e24ac2aa6734da68bff14c05dd53b94a0fc3/markupsafe-3.0.3-cp310-cp310-win_arm64.whl", hash = "sha256:e2103a929dfa2fcaf9bb4e7c091983a49c9ac3b19c9061b6d5427dd7d14d81a1", size = 13932, upload-time = "2025-09-27T18:36:17.311Z" }, + { url = "https://files.pythonhosted.org/packages/08/db/fefacb2136439fc8dd20e797950e749aa1f4997ed584c62cfb8ef7c2be0e/markupsafe-3.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1cc7ea17a6824959616c525620e387f6dd30fec8cb44f649e31712db02123dad", size = 11631, upload-time = "2025-09-27T18:36:18.185Z" }, + { url = "https://files.pythonhosted.org/packages/e1/2e/5898933336b61975ce9dc04decbc0a7f2fee78c30353c5efba7f2d6ff27a/markupsafe-3.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4bd4cd07944443f5a265608cc6aab442e4f74dff8088b0dfc8238647b8f6ae9a", size = 12058, upload-time = "2025-09-27T18:36:19.444Z" }, + { url = "https://files.pythonhosted.org/packages/1d/09/adf2df3699d87d1d8184038df46a9c80d78c0148492323f4693df54e17bb/markupsafe-3.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b5420a1d9450023228968e7e6a9ce57f65d148ab56d2313fcd589eee96a7a50", size = 24287, upload-time = "2025-09-27T18:36:20.768Z" }, + { url = "https://files.pythonhosted.org/packages/30/ac/0273f6fcb5f42e314c6d8cd99effae6a5354604d461b8d392b5ec9530a54/markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0bf2a864d67e76e5c9a34dc26ec616a66b9888e25e7b9460e1c76d3293bd9dbf", size = 22940, upload-time = "2025-09-27T18:36:22.249Z" }, + { url = "https://files.pythonhosted.org/packages/19/ae/31c1be199ef767124c042c6c3e904da327a2f7f0cd63a0337e1eca2967a8/markupsafe-3.0.3-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc51efed119bc9cfdf792cdeaa4d67e8f6fcccab66ed4bfdd6bde3e59bfcbb2f", size = 21887, upload-time = "2025-09-27T18:36:23.535Z" }, + { url = "https://files.pythonhosted.org/packages/b2/76/7edcab99d5349a4532a459e1fe64f0b0467a3365056ae550d3bcf3f79e1e/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:068f375c472b3e7acbe2d5318dea141359e6900156b5b2ba06a30b169086b91a", size = 23692, upload-time = "2025-09-27T18:36:24.823Z" }, + { url = "https://files.pythonhosted.org/packages/a4/28/6e74cdd26d7514849143d69f0bf2399f929c37dc2b31e6829fd2045b2765/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:7be7b61bb172e1ed687f1754f8e7484f1c8019780f6f6b0786e76bb01c2ae115", size = 21471, upload-time = "2025-09-27T18:36:25.95Z" }, + { url = "https://files.pythonhosted.org/packages/62/7e/a145f36a5c2945673e590850a6f8014318d5577ed7e5920a4b3448e0865d/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f9e130248f4462aaa8e2552d547f36ddadbeaa573879158d721bbd33dfe4743a", size = 22923, upload-time = "2025-09-27T18:36:27.109Z" }, + { url = "https://files.pythonhosted.org/packages/0f/62/d9c46a7f5c9adbeeeda52f5b8d802e1094e9717705a645efc71b0913a0a8/markupsafe-3.0.3-cp311-cp311-win32.whl", hash = "sha256:0db14f5dafddbb6d9208827849fad01f1a2609380add406671a26386cdf15a19", size = 14572, upload-time = "2025-09-27T18:36:28.045Z" }, + { url = "https://files.pythonhosted.org/packages/83/8a/4414c03d3f891739326e1783338e48fb49781cc915b2e0ee052aa490d586/markupsafe-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:de8a88e63464af587c950061a5e6a67d3632e36df62b986892331d4620a35c01", size = 15077, upload-time = "2025-09-27T18:36:29.025Z" }, + { url = "https://files.pythonhosted.org/packages/35/73/893072b42e6862f319b5207adc9ae06070f095b358655f077f69a35601f0/markupsafe-3.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:3b562dd9e9ea93f13d53989d23a7e775fdfd1066c33494ff43f5418bc8c58a5c", size = 13876, upload-time = "2025-09-27T18:36:29.954Z" }, + { url = "https://files.pythonhosted.org/packages/5a/72/147da192e38635ada20e0a2e1a51cf8823d2119ce8883f7053879c2199b5/markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e", size = 11615, upload-time = "2025-09-27T18:36:30.854Z" }, + { url = "https://files.pythonhosted.org/packages/9a/81/7e4e08678a1f98521201c3079f77db69fb552acd56067661f8c2f534a718/markupsafe-3.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce", size = 12020, upload-time = "2025-09-27T18:36:31.971Z" }, + { url = "https://files.pythonhosted.org/packages/1e/2c/799f4742efc39633a1b54a92eec4082e4f815314869865d876824c257c1e/markupsafe-3.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d", size = 24332, upload-time = "2025-09-27T18:36:32.813Z" }, + { url = "https://files.pythonhosted.org/packages/3c/2e/8d0c2ab90a8c1d9a24f0399058ab8519a3279d1bd4289511d74e909f060e/markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d", size = 22947, upload-time = "2025-09-27T18:36:33.86Z" }, + { url = "https://files.pythonhosted.org/packages/2c/54/887f3092a85238093a0b2154bd629c89444f395618842e8b0c41783898ea/markupsafe-3.0.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a", size = 21962, upload-time = "2025-09-27T18:36:35.099Z" }, + { url = "https://files.pythonhosted.org/packages/c9/2f/336b8c7b6f4a4d95e91119dc8521402461b74a485558d8f238a68312f11c/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b", size = 23760, upload-time = "2025-09-27T18:36:36.001Z" }, + { url = "https://files.pythonhosted.org/packages/32/43/67935f2b7e4982ffb50a4d169b724d74b62a3964bc1a9a527f5ac4f1ee2b/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f", size = 21529, upload-time = "2025-09-27T18:36:36.906Z" }, + { url = "https://files.pythonhosted.org/packages/89/e0/4486f11e51bbba8b0c041098859e869e304d1c261e59244baa3d295d47b7/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b", size = 23015, upload-time = "2025-09-27T18:36:37.868Z" }, + { url = "https://files.pythonhosted.org/packages/2f/e1/78ee7a023dac597a5825441ebd17170785a9dab23de95d2c7508ade94e0e/markupsafe-3.0.3-cp312-cp312-win32.whl", hash = "sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d", size = 14540, upload-time = "2025-09-27T18:36:38.761Z" }, + { url = "https://files.pythonhosted.org/packages/aa/5b/bec5aa9bbbb2c946ca2733ef9c4ca91c91b6a24580193e891b5f7dbe8e1e/markupsafe-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c", size = 15105, upload-time = "2025-09-27T18:36:39.701Z" }, + { url = "https://files.pythonhosted.org/packages/e5/f1/216fc1bbfd74011693a4fd837e7026152e89c4bcf3e77b6692fba9923123/markupsafe-3.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f", size = 13906, upload-time = "2025-09-27T18:36:40.689Z" }, + { url = "https://files.pythonhosted.org/packages/38/2f/907b9c7bbba283e68f20259574b13d005c121a0fa4c175f9bed27c4597ff/markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795", size = 11622, upload-time = "2025-09-27T18:36:41.777Z" }, + { url = "https://files.pythonhosted.org/packages/9c/d9/5f7756922cdd676869eca1c4e3c0cd0df60ed30199ffd775e319089cb3ed/markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219", size = 12029, upload-time = "2025-09-27T18:36:43.257Z" }, + { url = "https://files.pythonhosted.org/packages/00/07/575a68c754943058c78f30db02ee03a64b3c638586fba6a6dd56830b30a3/markupsafe-3.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6", size = 24374, upload-time = "2025-09-27T18:36:44.508Z" }, + { url = "https://files.pythonhosted.org/packages/a9/21/9b05698b46f218fc0e118e1f8168395c65c8a2c750ae2bab54fc4bd4e0e8/markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676", size = 22980, upload-time = "2025-09-27T18:36:45.385Z" }, + { url = "https://files.pythonhosted.org/packages/7f/71/544260864f893f18b6827315b988c146b559391e6e7e8f7252839b1b846a/markupsafe-3.0.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9", size = 21990, upload-time = "2025-09-27T18:36:46.916Z" }, + { url = "https://files.pythonhosted.org/packages/c2/28/b50fc2f74d1ad761af2f5dcce7492648b983d00a65b8c0e0cb457c82ebbe/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1", size = 23784, upload-time = "2025-09-27T18:36:47.884Z" }, + { url = "https://files.pythonhosted.org/packages/ed/76/104b2aa106a208da8b17a2fb72e033a5a9d7073c68f7e508b94916ed47a9/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc", size = 21588, upload-time = "2025-09-27T18:36:48.82Z" }, + { url = "https://files.pythonhosted.org/packages/b5/99/16a5eb2d140087ebd97180d95249b00a03aa87e29cc224056274f2e45fd6/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12", size = 23041, upload-time = "2025-09-27T18:36:49.797Z" }, + { url = "https://files.pythonhosted.org/packages/19/bc/e7140ed90c5d61d77cea142eed9f9c303f4c4806f60a1044c13e3f1471d0/markupsafe-3.0.3-cp313-cp313-win32.whl", hash = "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed", size = 14543, upload-time = "2025-09-27T18:36:51.584Z" }, + { url = "https://files.pythonhosted.org/packages/05/73/c4abe620b841b6b791f2edc248f556900667a5a1cf023a6646967ae98335/markupsafe-3.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5", size = 15113, upload-time = "2025-09-27T18:36:52.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/3a/fa34a0f7cfef23cf9500d68cb7c32dd64ffd58a12b09225fb03dd37d5b80/markupsafe-3.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485", size = 13911, upload-time = "2025-09-27T18:36:53.513Z" }, + { url = "https://files.pythonhosted.org/packages/e4/d7/e05cd7efe43a88a17a37b3ae96e79a19e846f3f456fe79c57ca61356ef01/markupsafe-3.0.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73", size = 11658, upload-time = "2025-09-27T18:36:54.819Z" }, + { url = "https://files.pythonhosted.org/packages/99/9e/e412117548182ce2148bdeacdda3bb494260c0b0184360fe0d56389b523b/markupsafe-3.0.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37", size = 12066, upload-time = "2025-09-27T18:36:55.714Z" }, + { url = "https://files.pythonhosted.org/packages/bc/e6/fa0ffcda717ef64a5108eaa7b4f5ed28d56122c9a6d70ab8b72f9f715c80/markupsafe-3.0.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19", size = 25639, upload-time = "2025-09-27T18:36:56.908Z" }, + { url = "https://files.pythonhosted.org/packages/96/ec/2102e881fe9d25fc16cb4b25d5f5cde50970967ffa5dddafdb771237062d/markupsafe-3.0.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025", size = 23569, upload-time = "2025-09-27T18:36:57.913Z" }, + { url = "https://files.pythonhosted.org/packages/4b/30/6f2fce1f1f205fc9323255b216ca8a235b15860c34b6798f810f05828e32/markupsafe-3.0.3-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6", size = 23284, upload-time = "2025-09-27T18:36:58.833Z" }, + { url = "https://files.pythonhosted.org/packages/58/47/4a0ccea4ab9f5dcb6f79c0236d954acb382202721e704223a8aafa38b5c8/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f", size = 24801, upload-time = "2025-09-27T18:36:59.739Z" }, + { url = "https://files.pythonhosted.org/packages/6a/70/3780e9b72180b6fecb83a4814d84c3bf4b4ae4bf0b19c27196104149734c/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb", size = 22769, upload-time = "2025-09-27T18:37:00.719Z" }, + { url = "https://files.pythonhosted.org/packages/98/c5/c03c7f4125180fc215220c035beac6b9cb684bc7a067c84fc69414d315f5/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009", size = 23642, upload-time = "2025-09-27T18:37:01.673Z" }, + { url = "https://files.pythonhosted.org/packages/80/d6/2d1b89f6ca4bff1036499b1e29a1d02d282259f3681540e16563f27ebc23/markupsafe-3.0.3-cp313-cp313t-win32.whl", hash = "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354", size = 14612, upload-time = "2025-09-27T18:37:02.639Z" }, + { url = "https://files.pythonhosted.org/packages/2b/98/e48a4bfba0a0ffcf9925fe2d69240bfaa19c6f7507b8cd09c70684a53c1e/markupsafe-3.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218", size = 15200, upload-time = "2025-09-27T18:37:03.582Z" }, + { url = "https://files.pythonhosted.org/packages/0e/72/e3cc540f351f316e9ed0f092757459afbc595824ca724cbc5a5d4263713f/markupsafe-3.0.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287", size = 13973, upload-time = "2025-09-27T18:37:04.929Z" }, + { url = "https://files.pythonhosted.org/packages/33/8a/8e42d4838cd89b7dde187011e97fe6c3af66d8c044997d2183fbd6d31352/markupsafe-3.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe", size = 11619, upload-time = "2025-09-27T18:37:06.342Z" }, + { url = "https://files.pythonhosted.org/packages/b5/64/7660f8a4a8e53c924d0fa05dc3a55c9cee10bbd82b11c5afb27d44b096ce/markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026", size = 12029, upload-time = "2025-09-27T18:37:07.213Z" }, + { url = "https://files.pythonhosted.org/packages/da/ef/e648bfd021127bef5fa12e1720ffed0c6cbb8310c8d9bea7266337ff06de/markupsafe-3.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737", size = 24408, upload-time = "2025-09-27T18:37:09.572Z" }, + { url = "https://files.pythonhosted.org/packages/41/3c/a36c2450754618e62008bf7435ccb0f88053e07592e6028a34776213d877/markupsafe-3.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97", size = 23005, upload-time = "2025-09-27T18:37:10.58Z" }, + { url = "https://files.pythonhosted.org/packages/bc/20/b7fdf89a8456b099837cd1dc21974632a02a999ec9bf7ca3e490aacd98e7/markupsafe-3.0.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d", size = 22048, upload-time = "2025-09-27T18:37:11.547Z" }, + { url = "https://files.pythonhosted.org/packages/9a/a7/591f592afdc734f47db08a75793a55d7fbcc6902a723ae4cfbab61010cc5/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda", size = 23821, upload-time = "2025-09-27T18:37:12.48Z" }, + { url = "https://files.pythonhosted.org/packages/7d/33/45b24e4f44195b26521bc6f1a82197118f74df348556594bd2262bda1038/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf", size = 21606, upload-time = "2025-09-27T18:37:13.485Z" }, + { url = "https://files.pythonhosted.org/packages/ff/0e/53dfaca23a69fbfbbf17a4b64072090e70717344c52eaaaa9c5ddff1e5f0/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe", size = 23043, upload-time = "2025-09-27T18:37:14.408Z" }, + { url = "https://files.pythonhosted.org/packages/46/11/f333a06fc16236d5238bfe74daccbca41459dcd8d1fa952e8fbd5dccfb70/markupsafe-3.0.3-cp314-cp314-win32.whl", hash = "sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9", size = 14747, upload-time = "2025-09-27T18:37:15.36Z" }, + { url = "https://files.pythonhosted.org/packages/28/52/182836104b33b444e400b14f797212f720cbc9ed6ba34c800639d154e821/markupsafe-3.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581", size = 15341, upload-time = "2025-09-27T18:37:16.496Z" }, + { url = "https://files.pythonhosted.org/packages/6f/18/acf23e91bd94fd7b3031558b1f013adfa21a8e407a3fdb32745538730382/markupsafe-3.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4", size = 14073, upload-time = "2025-09-27T18:37:17.476Z" }, + { url = "https://files.pythonhosted.org/packages/3c/f0/57689aa4076e1b43b15fdfa646b04653969d50cf30c32a102762be2485da/markupsafe-3.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab", size = 11661, upload-time = "2025-09-27T18:37:18.453Z" }, + { url = "https://files.pythonhosted.org/packages/89/c3/2e67a7ca217c6912985ec766c6393b636fb0c2344443ff9d91404dc4c79f/markupsafe-3.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175", size = 12069, upload-time = "2025-09-27T18:37:19.332Z" }, + { url = "https://files.pythonhosted.org/packages/f0/00/be561dce4e6ca66b15276e184ce4b8aec61fe83662cce2f7d72bd3249d28/markupsafe-3.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634", size = 25670, upload-time = "2025-09-27T18:37:20.245Z" }, + { url = "https://files.pythonhosted.org/packages/50/09/c419f6f5a92e5fadde27efd190eca90f05e1261b10dbd8cbcb39cd8ea1dc/markupsafe-3.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50", size = 23598, upload-time = "2025-09-27T18:37:21.177Z" }, + { url = "https://files.pythonhosted.org/packages/22/44/a0681611106e0b2921b3033fc19bc53323e0b50bc70cffdd19f7d679bb66/markupsafe-3.0.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e", size = 23261, upload-time = "2025-09-27T18:37:22.167Z" }, + { url = "https://files.pythonhosted.org/packages/5f/57/1b0b3f100259dc9fffe780cfb60d4be71375510e435efec3d116b6436d43/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5", size = 24835, upload-time = "2025-09-27T18:37:23.296Z" }, + { url = "https://files.pythonhosted.org/packages/26/6a/4bf6d0c97c4920f1597cc14dd720705eca0bf7c787aebc6bb4d1bead5388/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523", size = 22733, upload-time = "2025-09-27T18:37:24.237Z" }, + { url = "https://files.pythonhosted.org/packages/14/c7/ca723101509b518797fedc2fdf79ba57f886b4aca8a7d31857ba3ee8281f/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc", size = 23672, upload-time = "2025-09-27T18:37:25.271Z" }, + { url = "https://files.pythonhosted.org/packages/fb/df/5bd7a48c256faecd1d36edc13133e51397e41b73bb77e1a69deab746ebac/markupsafe-3.0.3-cp314-cp314t-win32.whl", hash = "sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d", size = 14819, upload-time = "2025-09-27T18:37:26.285Z" }, + { url = "https://files.pythonhosted.org/packages/1a/8a/0402ba61a2f16038b48b39bccca271134be00c5c9f0f623208399333c448/markupsafe-3.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9", size = 15426, upload-time = "2025-09-27T18:37:27.316Z" }, + { url = "https://files.pythonhosted.org/packages/70/bc/6f1c2f612465f5fa89b95bead1f44dcb607670fd42891d8fdcd5d039f4f4/markupsafe-3.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa", size = 14146, upload-time = "2025-09-27T18:37:28.327Z" }, ] [[package]] name = "matplotlib" -version = "3.10.3" +version = "3.10.6" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "contourpy" }, + { name = "contourpy", version = "1.3.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "contourpy", version = "1.3.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "cycler" }, { name = "fonttools" }, { name = "kiwisolver" }, @@ -2026,41 +2528,62 @@ dependencies = [ { name = "pyparsing" }, { name = "python-dateutil" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/26/91/d49359a21893183ed2a5b6c76bec40e0b1dcbf8ca148f864d134897cfc75/matplotlib-3.10.3.tar.gz", hash = "sha256:2f82d2c5bb7ae93aaaa4cd42aca65d76ce6376f83304fa3a630b569aca274df0", size = 34799811, upload-time = "2025-05-08T19:10:54.39Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d0/ea/2bba25d289d389c7451f331ecd593944b3705f06ddf593fa7be75037d308/matplotlib-3.10.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:213fadd6348d106ca7db99e113f1bea1e65e383c3ba76e8556ba4a3054b65ae7", size = 8167862, upload-time = "2025-05-08T19:09:39.563Z" }, - { url = "https://files.pythonhosted.org/packages/41/81/cc70b5138c926604e8c9ed810ed4c79e8116ba72e02230852f5c12c87ba2/matplotlib-3.10.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d3bec61cb8221f0ca6313889308326e7bb303d0d302c5cc9e523b2f2e6c73deb", size = 8042149, upload-time = "2025-05-08T19:09:42.413Z" }, - { url = "https://files.pythonhosted.org/packages/4a/9a/0ff45b6bfa42bb16de597e6058edf2361c298ad5ef93b327728145161bbf/matplotlib-3.10.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c21ae75651c0231b3ba014b6d5e08fb969c40cdb5a011e33e99ed0c9ea86ecb", size = 8453719, upload-time = "2025-05-08T19:09:44.901Z" }, - { url = "https://files.pythonhosted.org/packages/85/c7/1866e972fed6d71ef136efbc980d4d1854ab7ef1ea8152bbd995ca231c81/matplotlib-3.10.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a49e39755580b08e30e3620efc659330eac5d6534ab7eae50fa5e31f53ee4e30", size = 8590801, upload-time = "2025-05-08T19:09:47.404Z" }, - { url = "https://files.pythonhosted.org/packages/5d/b9/748f6626d534ab7e255bdc39dc22634d337cf3ce200f261b5d65742044a1/matplotlib-3.10.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cf4636203e1190871d3a73664dea03d26fb019b66692cbfd642faafdad6208e8", size = 9402111, upload-time = "2025-05-08T19:09:49.474Z" }, - { url = "https://files.pythonhosted.org/packages/1f/78/8bf07bd8fb67ea5665a6af188e70b57fcb2ab67057daa06b85a08e59160a/matplotlib-3.10.3-cp310-cp310-win_amd64.whl", hash = "sha256:fd5641a9bb9d55f4dd2afe897a53b537c834b9012684c8444cc105895c8c16fd", size = 8057213, upload-time = "2025-05-08T19:09:51.489Z" }, - { url = "https://files.pythonhosted.org/packages/f5/bd/af9f655456f60fe1d575f54fb14704ee299b16e999704817a7645dfce6b0/matplotlib-3.10.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:0ef061f74cd488586f552d0c336b2f078d43bc00dc473d2c3e7bfee2272f3fa8", size = 8178873, upload-time = "2025-05-08T19:09:53.857Z" }, - { url = "https://files.pythonhosted.org/packages/c2/86/e1c86690610661cd716eda5f9d0b35eaf606ae6c9b6736687cfc8f2d0cd8/matplotlib-3.10.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d96985d14dc5f4a736bbea4b9de9afaa735f8a0fc2ca75be2fa9e96b2097369d", size = 8052205, upload-time = "2025-05-08T19:09:55.684Z" }, - { url = "https://files.pythonhosted.org/packages/54/51/a9f8e49af3883dacddb2da1af5fca1f7468677f1188936452dd9aaaeb9ed/matplotlib-3.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c5f0283da91e9522bdba4d6583ed9d5521566f63729ffb68334f86d0bb98049", size = 8465823, upload-time = "2025-05-08T19:09:57.442Z" }, - { url = "https://files.pythonhosted.org/packages/e7/e3/c82963a3b86d6e6d5874cbeaa390166458a7f1961bab9feb14d3d1a10f02/matplotlib-3.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdfa07c0ec58035242bc8b2c8aae37037c9a886370eef6850703d7583e19964b", size = 8606464, upload-time = "2025-05-08T19:09:59.471Z" }, - { url = "https://files.pythonhosted.org/packages/0e/34/24da1027e7fcdd9e82da3194c470143c551852757a4b473a09a012f5b945/matplotlib-3.10.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c0b9849a17bce080a16ebcb80a7b714b5677d0ec32161a2cc0a8e5a6030ae220", size = 9413103, upload-time = "2025-05-08T19:10:03.208Z" }, - { url = "https://files.pythonhosted.org/packages/a6/da/948a017c3ea13fd4a97afad5fdebe2f5bbc4d28c0654510ce6fd6b06b7bd/matplotlib-3.10.3-cp311-cp311-win_amd64.whl", hash = "sha256:eef6ed6c03717083bc6d69c2d7ee8624205c29a8e6ea5a31cd3492ecdbaee1e1", size = 8065492, upload-time = "2025-05-08T19:10:05.271Z" }, - { url = "https://files.pythonhosted.org/packages/eb/43/6b80eb47d1071f234ef0c96ca370c2ca621f91c12045f1401b5c9b28a639/matplotlib-3.10.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0ab1affc11d1f495ab9e6362b8174a25afc19c081ba5b0775ef00533a4236eea", size = 8179689, upload-time = "2025-05-08T19:10:07.602Z" }, - { url = "https://files.pythonhosted.org/packages/0f/70/d61a591958325c357204870b5e7b164f93f2a8cca1dc6ce940f563909a13/matplotlib-3.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2a818d8bdcafa7ed2eed74487fdb071c09c1ae24152d403952adad11fa3c65b4", size = 8050466, upload-time = "2025-05-08T19:10:09.383Z" }, - { url = "https://files.pythonhosted.org/packages/e7/75/70c9d2306203148cc7902a961240c5927dd8728afedf35e6a77e105a2985/matplotlib-3.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748ebc3470c253e770b17d8b0557f0aa85cf8c63fd52f1a61af5b27ec0b7ffee", size = 8456252, upload-time = "2025-05-08T19:10:11.958Z" }, - { url = "https://files.pythonhosted.org/packages/c4/91/ba0ae1ff4b3f30972ad01cd4a8029e70a0ec3b8ea5be04764b128b66f763/matplotlib-3.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed70453fd99733293ace1aec568255bc51c6361cb0da94fa5ebf0649fdb2150a", size = 8601321, upload-time = "2025-05-08T19:10:14.47Z" }, - { url = "https://files.pythonhosted.org/packages/d2/88/d636041eb54a84b889e11872d91f7cbf036b3b0e194a70fa064eb8b04f7a/matplotlib-3.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dbed9917b44070e55640bd13419de83b4c918e52d97561544814ba463811cbc7", size = 9406972, upload-time = "2025-05-08T19:10:16.569Z" }, - { url = "https://files.pythonhosted.org/packages/b1/79/0d1c165eac44405a86478082e225fce87874f7198300bbebc55faaf6d28d/matplotlib-3.10.3-cp312-cp312-win_amd64.whl", hash = "sha256:cf37d8c6ef1a48829443e8ba5227b44236d7fcaf7647caa3178a4ff9f7a5be05", size = 8067954, upload-time = "2025-05-08T19:10:18.663Z" }, - { url = "https://files.pythonhosted.org/packages/3b/c1/23cfb566a74c696a3b338d8955c549900d18fe2b898b6e94d682ca21e7c2/matplotlib-3.10.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9f2efccc8dcf2b86fc4ee849eea5dcaecedd0773b30f47980dc0cbeabf26ec84", size = 8180318, upload-time = "2025-05-08T19:10:20.426Z" }, - { url = "https://files.pythonhosted.org/packages/6c/0c/02f1c3b66b30da9ee343c343acbb6251bef5b01d34fad732446eaadcd108/matplotlib-3.10.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3ddbba06a6c126e3301c3d272a99dcbe7f6c24c14024e80307ff03791a5f294e", size = 8051132, upload-time = "2025-05-08T19:10:22.569Z" }, - { url = "https://files.pythonhosted.org/packages/b4/ab/8db1a5ac9b3a7352fb914133001dae889f9fcecb3146541be46bed41339c/matplotlib-3.10.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748302b33ae9326995b238f606e9ed840bf5886ebafcb233775d946aa8107a15", size = 8457633, upload-time = "2025-05-08T19:10:24.749Z" }, - { url = "https://files.pythonhosted.org/packages/f5/64/41c4367bcaecbc03ef0d2a3ecee58a7065d0a36ae1aa817fe573a2da66d4/matplotlib-3.10.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a80fcccbef63302c0efd78042ea3c2436104c5b1a4d3ae20f864593696364ac7", size = 8601031, upload-time = "2025-05-08T19:10:27.03Z" }, - { url = "https://files.pythonhosted.org/packages/12/6f/6cc79e9e5ab89d13ed64da28898e40fe5b105a9ab9c98f83abd24e46d7d7/matplotlib-3.10.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:55e46cbfe1f8586adb34f7587c3e4f7dedc59d5226719faf6cb54fc24f2fd52d", size = 9406988, upload-time = "2025-05-08T19:10:29.056Z" }, - { url = "https://files.pythonhosted.org/packages/b1/0f/eed564407bd4d935ffabf561ed31099ed609e19287409a27b6d336848653/matplotlib-3.10.3-cp313-cp313-win_amd64.whl", hash = "sha256:151d89cb8d33cb23345cd12490c76fd5d18a56581a16d950b48c6ff19bb2ab93", size = 8068034, upload-time = "2025-05-08T19:10:31.221Z" }, - { url = "https://files.pythonhosted.org/packages/3e/e5/2f14791ff69b12b09e9975e1d116d9578ac684460860ce542c2588cb7a1c/matplotlib-3.10.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:c26dd9834e74d164d06433dc7be5d75a1e9890b926b3e57e74fa446e1a62c3e2", size = 8218223, upload-time = "2025-05-08T19:10:33.114Z" }, - { url = "https://files.pythonhosted.org/packages/5c/08/30a94afd828b6e02d0a52cae4a29d6e9ccfcf4c8b56cc28b021d3588873e/matplotlib-3.10.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:24853dad5b8c84c8c2390fc31ce4858b6df504156893292ce8092d190ef8151d", size = 8094985, upload-time = "2025-05-08T19:10:35.337Z" }, - { url = "https://files.pythonhosted.org/packages/89/44/f3bc6b53066c889d7a1a3ea8094c13af6a667c5ca6220ec60ecceec2dabe/matplotlib-3.10.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68f7878214d369d7d4215e2a9075fef743be38fa401d32e6020bab2dfabaa566", size = 8483109, upload-time = "2025-05-08T19:10:37.611Z" }, - { url = "https://files.pythonhosted.org/packages/ba/c7/473bc559beec08ebee9f86ca77a844b65747e1a6c2691e8c92e40b9f42a8/matplotlib-3.10.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6929fc618cb6db9cb75086f73b3219bbb25920cb24cee2ea7a12b04971a4158", size = 8618082, upload-time = "2025-05-08T19:10:39.892Z" }, - { url = "https://files.pythonhosted.org/packages/d8/e9/6ce8edd264c8819e37bbed8172e0ccdc7107fe86999b76ab5752276357a4/matplotlib-3.10.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6c7818292a5cc372a2dc4c795e5c356942eb8350b98ef913f7fda51fe175ac5d", size = 9413699, upload-time = "2025-05-08T19:10:42.376Z" }, - { url = "https://files.pythonhosted.org/packages/1b/92/9a45c91089c3cf690b5badd4be81e392ff086ccca8a1d4e3a08463d8a966/matplotlib-3.10.3-cp313-cp313t-win_amd64.whl", hash = "sha256:4f23ffe95c5667ef8a2b56eea9b53db7f43910fa4a2d5472ae0f72b64deab4d5", size = 8139044, upload-time = "2025-05-08T19:10:44.551Z" }, - { url = "https://files.pythonhosted.org/packages/3d/d1/f54d43e95384b312ffa4a74a4326c722f3b8187aaaa12e9a84cdf3037131/matplotlib-3.10.3-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:86ab63d66bbc83fdb6733471d3bff40897c1e9921cba112accd748eee4bce5e4", size = 8162896, upload-time = "2025-05-08T19:10:46.432Z" }, - { url = "https://files.pythonhosted.org/packages/24/a4/fbfc00c2346177c95b353dcf9b5a004106abe8730a62cb6f27e79df0a698/matplotlib-3.10.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:a48f9c08bf7444b5d2391a83e75edb464ccda3c380384b36532a0962593a1751", size = 8039702, upload-time = "2025-05-08T19:10:49.634Z" }, - { url = "https://files.pythonhosted.org/packages/6a/b9/59e120d24a2ec5fc2d30646adb2efb4621aab3c6d83d66fb2a7a182db032/matplotlib-3.10.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb73d8aa75a237457988f9765e4dfe1c0d2453c5ca4eabc897d4309672c8e014", size = 8594298, upload-time = "2025-05-08T19:10:51.738Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/a0/59/c3e6453a9676ffba145309a73c462bb407f4400de7de3f2b41af70720a3c/matplotlib-3.10.6.tar.gz", hash = "sha256:ec01b645840dd1996df21ee37f208cd8ba57644779fa20464010638013d3203c", size = 34804264, upload-time = "2025-08-30T00:14:25.137Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/dc/ab89f7a5efd0cbaaebf2c3cf1881f4cba20c8925bb43f64511059df76895/matplotlib-3.10.6-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:bc7316c306d97463a9866b89d5cc217824e799fa0de346c8f68f4f3d27c8693d", size = 8247159, upload-time = "2025-08-30T00:12:30.507Z" }, + { url = "https://files.pythonhosted.org/packages/30/a5/ddaee1a383ab28174093644fff7438eddb87bf8dbd58f7b85f5cdd6b2485/matplotlib-3.10.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d00932b0d160ef03f59f9c0e16d1e3ac89646f7785165ce6ad40c842db16cc2e", size = 8108011, upload-time = "2025-08-30T00:12:32.771Z" }, + { url = "https://files.pythonhosted.org/packages/75/5b/a53f69bb0522db352b1135bb57cd9fe00fd7252072409392d991d3a755d0/matplotlib-3.10.6-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8fa4c43d6bfdbfec09c733bca8667de11bfa4970e8324c471f3a3632a0301c15", size = 8680518, upload-time = "2025-08-30T00:12:34.387Z" }, + { url = "https://files.pythonhosted.org/packages/5f/31/e059ddce95f68819b005a2d6820b2d6ed0307827a04598891f00649bed2d/matplotlib-3.10.6-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ea117a9c1627acaa04dbf36265691921b999cbf515a015298e54e1a12c3af837", size = 9514997, upload-time = "2025-08-30T00:12:36.272Z" }, + { url = "https://files.pythonhosted.org/packages/66/d5/28b408a7c0f07b41577ee27e4454fe329e78ca21fe46ae7a27d279165fb5/matplotlib-3.10.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:08fc803293b4e1694ee325896030de97f74c141ccff0be886bb5915269247676", size = 9566440, upload-time = "2025-08-30T00:12:41.675Z" }, + { url = "https://files.pythonhosted.org/packages/2d/99/8325b3386b479b1d182ab1a7fd588fd393ff00a99dc04b7cf7d06668cf0f/matplotlib-3.10.6-cp310-cp310-win_amd64.whl", hash = "sha256:2adf92d9b7527fbfb8818e050260f0ebaa460f79d61546374ce73506c9421d09", size = 8108186, upload-time = "2025-08-30T00:12:43.621Z" }, + { url = "https://files.pythonhosted.org/packages/80/d6/5d3665aa44c49005aaacaa68ddea6fcb27345961cd538a98bb0177934ede/matplotlib-3.10.6-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:905b60d1cb0ee604ce65b297b61cf8be9f4e6cfecf95a3fe1c388b5266bc8f4f", size = 8257527, upload-time = "2025-08-30T00:12:45.31Z" }, + { url = "https://files.pythonhosted.org/packages/8c/af/30ddefe19ca67eebd70047dabf50f899eaff6f3c5e6a1a7edaecaf63f794/matplotlib-3.10.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7bac38d816637343e53d7185d0c66677ff30ffb131044a81898b5792c956ba76", size = 8119583, upload-time = "2025-08-30T00:12:47.236Z" }, + { url = "https://files.pythonhosted.org/packages/d3/29/4a8650a3dcae97fa4f375d46efcb25920d67b512186f8a6788b896062a81/matplotlib-3.10.6-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:942a8de2b5bfff1de31d95722f702e2966b8a7e31f4e68f7cd963c7cd8861cf6", size = 8692682, upload-time = "2025-08-30T00:12:48.781Z" }, + { url = "https://files.pythonhosted.org/packages/aa/d3/b793b9cb061cfd5d42ff0f69d1822f8d5dbc94e004618e48a97a8373179a/matplotlib-3.10.6-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a3276c85370bc0dfca051ec65c5817d1e0f8f5ce1b7787528ec8ed2d524bbc2f", size = 9521065, upload-time = "2025-08-30T00:12:50.602Z" }, + { url = "https://files.pythonhosted.org/packages/f7/c5/53de5629f223c1c66668d46ac2621961970d21916a4bc3862b174eb2a88f/matplotlib-3.10.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9df5851b219225731f564e4b9e7f2ac1e13c9e6481f941b5631a0f8e2d9387ce", size = 9576888, upload-time = "2025-08-30T00:12:52.92Z" }, + { url = "https://files.pythonhosted.org/packages/fc/8e/0a18d6d7d2d0a2e66585032a760d13662e5250c784d53ad50434e9560991/matplotlib-3.10.6-cp311-cp311-win_amd64.whl", hash = "sha256:abb5d9478625dd9c9eb51a06d39aae71eda749ae9b3138afb23eb38824026c7e", size = 8115158, upload-time = "2025-08-30T00:12:54.863Z" }, + { url = "https://files.pythonhosted.org/packages/07/b3/1a5107bb66c261e23b9338070702597a2d374e5aa7004b7adfc754fbed02/matplotlib-3.10.6-cp311-cp311-win_arm64.whl", hash = "sha256:886f989ccfae63659183173bb3fced7fd65e9eb793c3cc21c273add368536951", size = 7992444, upload-time = "2025-08-30T00:12:57.067Z" }, + { url = "https://files.pythonhosted.org/packages/ea/1a/7042f7430055d567cc3257ac409fcf608599ab27459457f13772c2d9778b/matplotlib-3.10.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:31ca662df6a80bd426f871105fdd69db7543e28e73a9f2afe80de7e531eb2347", size = 8272404, upload-time = "2025-08-30T00:12:59.112Z" }, + { url = "https://files.pythonhosted.org/packages/a9/5d/1d5f33f5b43f4f9e69e6a5fe1fb9090936ae7bc8e2ff6158e7a76542633b/matplotlib-3.10.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1678bb61d897bb4ac4757b5ecfb02bfb3fddf7f808000fb81e09c510712fda75", size = 8128262, upload-time = "2025-08-30T00:13:01.141Z" }, + { url = "https://files.pythonhosted.org/packages/67/c3/135fdbbbf84e0979712df58e5e22b4f257b3f5e52a3c4aacf1b8abec0d09/matplotlib-3.10.6-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:56cd2d20842f58c03d2d6e6c1f1cf5548ad6f66b91e1e48f814e4fb5abd1cb95", size = 8697008, upload-time = "2025-08-30T00:13:03.24Z" }, + { url = "https://files.pythonhosted.org/packages/9c/be/c443ea428fb2488a3ea7608714b1bd85a82738c45da21b447dc49e2f8e5d/matplotlib-3.10.6-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:662df55604a2f9a45435566d6e2660e41efe83cd94f4288dfbf1e6d1eae4b0bb", size = 9530166, upload-time = "2025-08-30T00:13:05.951Z" }, + { url = "https://files.pythonhosted.org/packages/a9/35/48441422b044d74034aea2a3e0d1a49023f12150ebc58f16600132b9bbaf/matplotlib-3.10.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:08f141d55148cd1fc870c3387d70ca4df16dee10e909b3b038782bd4bda6ea07", size = 9593105, upload-time = "2025-08-30T00:13:08.356Z" }, + { url = "https://files.pythonhosted.org/packages/45/c3/994ef20eb4154ab84cc08d033834555319e4af970165e6c8894050af0b3c/matplotlib-3.10.6-cp312-cp312-win_amd64.whl", hash = "sha256:590f5925c2d650b5c9d813c5b3b5fc53f2929c3f8ef463e4ecfa7e052044fb2b", size = 8122784, upload-time = "2025-08-30T00:13:10.367Z" }, + { url = "https://files.pythonhosted.org/packages/57/b8/5c85d9ae0e40f04e71bedb053aada5d6bab1f9b5399a0937afb5d6b02d98/matplotlib-3.10.6-cp312-cp312-win_arm64.whl", hash = "sha256:f44c8d264a71609c79a78d50349e724f5d5fc3684ead7c2a473665ee63d868aa", size = 7992823, upload-time = "2025-08-30T00:13:12.24Z" }, + { url = "https://files.pythonhosted.org/packages/a0/db/18380e788bb837e724358287b08e223b32bc8dccb3b0c12fa8ca20bc7f3b/matplotlib-3.10.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:819e409653c1106c8deaf62e6de6b8611449c2cd9939acb0d7d4e57a3d95cc7a", size = 8273231, upload-time = "2025-08-30T00:13:13.881Z" }, + { url = "https://files.pythonhosted.org/packages/d3/0f/38dd49445b297e0d4f12a322c30779df0d43cb5873c7847df8a82e82ec67/matplotlib-3.10.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:59c8ac8382fefb9cb71308dde16a7c487432f5255d8f1fd32473523abecfecdf", size = 8128730, upload-time = "2025-08-30T00:13:15.556Z" }, + { url = "https://files.pythonhosted.org/packages/e5/b8/9eea6630198cb303d131d95d285a024b3b8645b1763a2916fddb44ca8760/matplotlib-3.10.6-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:84e82d9e0fd70c70bc55739defbd8055c54300750cbacf4740c9673a24d6933a", size = 8698539, upload-time = "2025-08-30T00:13:17.297Z" }, + { url = "https://files.pythonhosted.org/packages/71/34/44c7b1f075e1ea398f88aeabcc2907c01b9cc99e2afd560c1d49845a1227/matplotlib-3.10.6-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:25f7a3eb42d6c1c56e89eacd495661fc815ffc08d9da750bca766771c0fd9110", size = 9529702, upload-time = "2025-08-30T00:13:19.248Z" }, + { url = "https://files.pythonhosted.org/packages/b5/7f/e5c2dc9950c7facaf8b461858d1b92c09dd0cf174fe14e21953b3dda06f7/matplotlib-3.10.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f9c862d91ec0b7842920a4cfdaaec29662195301914ea54c33e01f1a28d014b2", size = 9593742, upload-time = "2025-08-30T00:13:21.181Z" }, + { url = "https://files.pythonhosted.org/packages/ff/1d/70c28528794f6410ee2856cd729fa1f1756498b8d3126443b0a94e1a8695/matplotlib-3.10.6-cp313-cp313-win_amd64.whl", hash = "sha256:1b53bd6337eba483e2e7d29c5ab10eee644bc3a2491ec67cc55f7b44583ffb18", size = 8122753, upload-time = "2025-08-30T00:13:23.44Z" }, + { url = "https://files.pythonhosted.org/packages/e8/74/0e1670501fc7d02d981564caf7c4df42974464625935424ca9654040077c/matplotlib-3.10.6-cp313-cp313-win_arm64.whl", hash = "sha256:cbd5eb50b7058b2892ce45c2f4e92557f395c9991f5c886d1bb74a1582e70fd6", size = 7992973, upload-time = "2025-08-30T00:13:26.632Z" }, + { url = "https://files.pythonhosted.org/packages/b1/4e/60780e631d73b6b02bd7239f89c451a72970e5e7ec34f621eda55cd9a445/matplotlib-3.10.6-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:acc86dd6e0e695c095001a7fccff158c49e45e0758fdf5dcdbb0103318b59c9f", size = 8316869, upload-time = "2025-08-30T00:13:28.262Z" }, + { url = "https://files.pythonhosted.org/packages/f8/15/baa662374a579413210fc2115d40c503b7360a08e9cc254aa0d97d34b0c1/matplotlib-3.10.6-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e228cd2ffb8f88b7d0b29e37f68ca9aaf83e33821f24a5ccc4f082dd8396bc27", size = 8178240, upload-time = "2025-08-30T00:13:30.007Z" }, + { url = "https://files.pythonhosted.org/packages/c6/3f/3c38e78d2aafdb8829fcd0857d25aaf9e7dd2dfcf7ec742765b585774931/matplotlib-3.10.6-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:658bc91894adeab669cf4bb4a186d049948262987e80f0857216387d7435d833", size = 8711719, upload-time = "2025-08-30T00:13:31.72Z" }, + { url = "https://files.pythonhosted.org/packages/96/4b/2ec2bbf8cefaa53207cc56118d1fa8a0f9b80642713ea9390235d331ede4/matplotlib-3.10.6-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8913b7474f6dd83ac444c9459c91f7f0f2859e839f41d642691b104e0af056aa", size = 9541422, upload-time = "2025-08-30T00:13:33.611Z" }, + { url = "https://files.pythonhosted.org/packages/83/7d/40255e89b3ef11c7871020563b2dd85f6cb1b4eff17c0f62b6eb14c8fa80/matplotlib-3.10.6-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:091cea22e059b89f6d7d1a18e2c33a7376c26eee60e401d92a4d6726c4e12706", size = 9594068, upload-time = "2025-08-30T00:13:35.833Z" }, + { url = "https://files.pythonhosted.org/packages/f0/a9/0213748d69dc842537a113493e1c27daf9f96bd7cc316f933dc8ec4de985/matplotlib-3.10.6-cp313-cp313t-win_amd64.whl", hash = "sha256:491e25e02a23d7207629d942c666924a6b61e007a48177fdd231a0097b7f507e", size = 8200100, upload-time = "2025-08-30T00:13:37.668Z" }, + { url = "https://files.pythonhosted.org/packages/be/15/79f9988066ce40b8a6f1759a934ea0cde8dc4adc2262255ee1bc98de6ad0/matplotlib-3.10.6-cp313-cp313t-win_arm64.whl", hash = "sha256:3d80d60d4e54cda462e2cd9a086d85cd9f20943ead92f575ce86885a43a565d5", size = 8042142, upload-time = "2025-08-30T00:13:39.426Z" }, + { url = "https://files.pythonhosted.org/packages/7c/58/e7b6d292beae6fb4283ca6fb7fa47d7c944a68062d6238c07b497dd35493/matplotlib-3.10.6-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:70aaf890ce1d0efd482df969b28a5b30ea0b891224bb315810a3940f67182899", size = 8273802, upload-time = "2025-08-30T00:13:41.006Z" }, + { url = "https://files.pythonhosted.org/packages/9f/f6/7882d05aba16a8cdd594fb9a03a9d3cca751dbb6816adf7b102945522ee9/matplotlib-3.10.6-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1565aae810ab79cb72e402b22facfa6501365e73ebab70a0fdfb98488d2c3c0c", size = 8131365, upload-time = "2025-08-30T00:13:42.664Z" }, + { url = "https://files.pythonhosted.org/packages/94/bf/ff32f6ed76e78514e98775a53715eca4804b12bdcf35902cdd1cf759d324/matplotlib-3.10.6-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f3b23315a01981689aa4e1a179dbf6ef9fbd17143c3eea77548c2ecfb0499438", size = 9533961, upload-time = "2025-08-30T00:13:44.372Z" }, + { url = "https://files.pythonhosted.org/packages/fe/c3/6bf88c2fc2da7708a2ff8d2eeb5d68943130f50e636d5d3dcf9d4252e971/matplotlib-3.10.6-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:30fdd37edf41a4e6785f9b37969de57aea770696cb637d9946eb37470c94a453", size = 9804262, upload-time = "2025-08-30T00:13:46.614Z" }, + { url = "https://files.pythonhosted.org/packages/0f/7a/e05e6d9446d2d577b459427ad060cd2de5742d0e435db3191fea4fcc7e8b/matplotlib-3.10.6-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:bc31e693da1c08012c764b053e702c1855378e04102238e6a5ee6a7117c53a47", size = 9595508, upload-time = "2025-08-30T00:13:48.731Z" }, + { url = "https://files.pythonhosted.org/packages/39/fb/af09c463ced80b801629fd73b96f726c9f6124c3603aa2e480a061d6705b/matplotlib-3.10.6-cp314-cp314-win_amd64.whl", hash = "sha256:05be9bdaa8b242bc6ff96330d18c52f1fc59c6fb3a4dd411d953d67e7e1baf98", size = 8252742, upload-time = "2025-08-30T00:13:50.539Z" }, + { url = "https://files.pythonhosted.org/packages/b1/f9/b682f6db9396d9ab8f050c0a3bfbb5f14fb0f6518f08507c04cc02f8f229/matplotlib-3.10.6-cp314-cp314-win_arm64.whl", hash = "sha256:f56a0d1ab05d34c628592435781d185cd99630bdfd76822cd686fb5a0aecd43a", size = 8124237, upload-time = "2025-08-30T00:13:54.3Z" }, + { url = "https://files.pythonhosted.org/packages/b5/d2/b69b4a0923a3c05ab90527c60fdec899ee21ca23ede7f0fb818e6620d6f2/matplotlib-3.10.6-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:94f0b4cacb23763b64b5dace50d5b7bfe98710fed5f0cef5c08135a03399d98b", size = 8316956, upload-time = "2025-08-30T00:13:55.932Z" }, + { url = "https://files.pythonhosted.org/packages/28/e9/dc427b6f16457ffaeecb2fc4abf91e5adb8827861b869c7a7a6d1836fa73/matplotlib-3.10.6-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:cc332891306b9fb39462673d8225d1b824c89783fee82840a709f96714f17a5c", size = 8178260, upload-time = "2025-08-30T00:14:00.942Z" }, + { url = "https://files.pythonhosted.org/packages/c4/89/1fbd5ad611802c34d1c7ad04607e64a1350b7fb9c567c4ec2c19e066ed35/matplotlib-3.10.6-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee1d607b3fb1590deb04b69f02ea1d53ed0b0bf75b2b1a5745f269afcbd3cdd3", size = 9541422, upload-time = "2025-08-30T00:14:02.664Z" }, + { url = "https://files.pythonhosted.org/packages/b0/3b/65fec8716025b22c1d72d5a82ea079934c76a547696eaa55be6866bc89b1/matplotlib-3.10.6-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:376a624a218116461696b27b2bbf7a8945053e6d799f6502fc03226d077807bf", size = 9803678, upload-time = "2025-08-30T00:14:04.741Z" }, + { url = "https://files.pythonhosted.org/packages/c7/b0/40fb2b3a1ab9381bb39a952e8390357c8be3bdadcf6d5055d9c31e1b35ae/matplotlib-3.10.6-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:83847b47f6524c34b4f2d3ce726bb0541c48c8e7692729865c3df75bfa0f495a", size = 9594077, upload-time = "2025-08-30T00:14:07.012Z" }, + { url = "https://files.pythonhosted.org/packages/76/34/c4b71b69edf5b06e635eee1ed10bfc73cf8df058b66e63e30e6a55e231d5/matplotlib-3.10.6-cp314-cp314t-win_amd64.whl", hash = "sha256:c7e0518e0d223683532a07f4b512e2e0729b62674f1b3a1a69869f98e6b1c7e3", size = 8342822, upload-time = "2025-08-30T00:14:09.041Z" }, + { url = "https://files.pythonhosted.org/packages/e8/62/aeabeef1a842b6226a30d49dd13e8a7a1e81e9ec98212c0b5169f0a12d83/matplotlib-3.10.6-cp314-cp314t-win_arm64.whl", hash = "sha256:4dd83e029f5b4801eeb87c64efd80e732452781c16a9cf7415b7b63ec8f374d7", size = 8172588, upload-time = "2025-08-30T00:14:11.166Z" }, + { url = "https://files.pythonhosted.org/packages/17/6f/2551e45bea2938e0363ccdd54fa08dae7605ce782d4332497d31a7b97672/matplotlib-3.10.6-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:13fcd07ccf17e354398358e0307a1f53f5325dca22982556ddb9c52837b5af41", size = 8241220, upload-time = "2025-08-30T00:14:12.888Z" }, + { url = "https://files.pythonhosted.org/packages/54/7e/0f4c6e8b98105fdb162a4efde011af204ca47d7c05d735aff480ebfead1b/matplotlib-3.10.6-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:470fc846d59d1406e34fa4c32ba371039cd12c2fe86801159a965956f2575bd1", size = 8104624, upload-time = "2025-08-30T00:14:14.511Z" }, + { url = "https://files.pythonhosted.org/packages/27/27/c29696702b9317a6ade1ba6f8861e02d7423f18501729203d7a80b686f23/matplotlib-3.10.6-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f7173f8551b88f4ef810a94adae3128c2530e0d07529f7141be7f8d8c365f051", size = 8682271, upload-time = "2025-08-30T00:14:17.273Z" }, + { url = "https://files.pythonhosted.org/packages/12/bb/02c35a51484aae5f49bd29f091286e7af5f3f677a9736c58a92b3c78baeb/matplotlib-3.10.6-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:f2d684c3204fa62421bbf770ddfebc6b50130f9cad65531eeba19236d73bb488", size = 8252296, upload-time = "2025-08-30T00:14:19.49Z" }, + { url = "https://files.pythonhosted.org/packages/7d/85/41701e3092005aee9a2445f5ee3904d9dbd4a7df7a45905ffef29b7ef098/matplotlib-3.10.6-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:6f4a69196e663a41d12a728fab8751177215357906436804217d6d9cf0d4d6cf", size = 8116749, upload-time = "2025-08-30T00:14:21.344Z" }, + { url = "https://files.pythonhosted.org/packages/16/53/8d8fa0ea32a8c8239e04d022f6c059ee5e1b77517769feccd50f1df43d6d/matplotlib-3.10.6-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4d6ca6ef03dfd269f4ead566ec6f3fb9becf8dab146fb999022ed85ee9f6b3eb", size = 8693933, upload-time = "2025-08-30T00:14:22.942Z" }, ] [[package]] @@ -2098,66 +2621,62 @@ wheels = [ [[package]] name = "mistune" -version = "3.1.3" +version = "3.1.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c4/79/bda47f7dd7c3c55770478d6d02c9960c430b0cf1773b72366ff89126ea31/mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0", size = 94347, upload-time = "2025-03-19T14:27:24.955Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/02/a7fb8b21d4d55ac93cdcde9d3638da5dd0ebdd3a4fed76c7725e10b81cbe/mistune-3.1.4.tar.gz", hash = "sha256:b5a7f801d389f724ec702840c11d8fc48f2b33519102fc7ee739e8177b672164", size = 94588, upload-time = "2025-08-29T07:20:43.594Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/01/4d/23c4e4f09da849e127e9f123241946c23c1e30f45a88366879e064211815/mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9", size = 53410, upload-time = "2025-03-19T14:27:23.451Z" }, + { url = "https://files.pythonhosted.org/packages/7a/f0/8282d9641415e9e33df173516226b404d367a0fc55e1a60424a152913abc/mistune-3.1.4-py3-none-any.whl", hash = "sha256:93691da911e5d9d2e23bc54472892aff676df27a75274962ff9edc210364266d", size = 53481, upload-time = "2025-08-29T07:20:42.218Z" }, ] [[package]] name = "msgpack" -version = "1.1.0" +version = "1.1.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cb/d0/7555686ae7ff5731205df1012ede15dd9d927f6227ea151e901c7406af4f/msgpack-1.1.0.tar.gz", hash = "sha256:dd432ccc2c72b914e4cb77afce64aab761c1137cc698be3984eee260bcb2896e", size = 167260, upload-time = "2024-09-10T04:25:52.197Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4b/f9/a892a6038c861fa849b11a2bb0502c07bc698ab6ea53359e5771397d883b/msgpack-1.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7ad442d527a7e358a469faf43fda45aaf4ac3249c8310a82f0ccff9164e5dccd", size = 150428, upload-time = "2024-09-10T04:25:43.089Z" }, - { url = "https://files.pythonhosted.org/packages/df/7a/d174cc6a3b6bb85556e6a046d3193294a92f9a8e583cdbd46dc8a1d7e7f4/msgpack-1.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:74bed8f63f8f14d75eec75cf3d04ad581da6b914001b474a5d3cd3372c8cc27d", size = 84131, upload-time = "2024-09-10T04:25:30.22Z" }, - { url = "https://files.pythonhosted.org/packages/08/52/bf4fbf72f897a23a56b822997a72c16de07d8d56d7bf273242f884055682/msgpack-1.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:914571a2a5b4e7606997e169f64ce53a8b1e06f2cf2c3a7273aa106236d43dd5", size = 81215, upload-time = "2024-09-10T04:24:54.329Z" }, - { url = "https://files.pythonhosted.org/packages/02/95/dc0044b439b518236aaf012da4677c1b8183ce388411ad1b1e63c32d8979/msgpack-1.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c921af52214dcbb75e6bdf6a661b23c3e6417f00c603dd2070bccb5c3ef499f5", size = 371229, upload-time = "2024-09-10T04:25:50.907Z" }, - { url = "https://files.pythonhosted.org/packages/ff/75/09081792db60470bef19d9c2be89f024d366b1e1973c197bb59e6aabc647/msgpack-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8ce0b22b890be5d252de90d0e0d119f363012027cf256185fc3d474c44b1b9e", size = 378034, upload-time = "2024-09-10T04:25:22.097Z" }, - { url = "https://files.pythonhosted.org/packages/32/d3/c152e0c55fead87dd948d4b29879b0f14feeeec92ef1fd2ec21b107c3f49/msgpack-1.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:73322a6cc57fcee3c0c57c4463d828e9428275fb85a27aa2aa1a92fdc42afd7b", size = 363070, upload-time = "2024-09-10T04:24:43.957Z" }, - { url = "https://files.pythonhosted.org/packages/d9/2c/82e73506dd55f9e43ac8aa007c9dd088c6f0de2aa19e8f7330e6a65879fc/msgpack-1.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e1f3c3d21f7cf67bcf2da8e494d30a75e4cf60041d98b3f79875afb5b96f3a3f", size = 359863, upload-time = "2024-09-10T04:24:51.535Z" }, - { url = "https://files.pythonhosted.org/packages/cb/a0/3d093b248837094220e1edc9ec4337de3443b1cfeeb6e0896af8ccc4cc7a/msgpack-1.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:64fc9068d701233effd61b19efb1485587560b66fe57b3e50d29c5d78e7fef68", size = 368166, upload-time = "2024-09-10T04:24:19.907Z" }, - { url = "https://files.pythonhosted.org/packages/e4/13/7646f14f06838b406cf5a6ddbb7e8dc78b4996d891ab3b93c33d1ccc8678/msgpack-1.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:42f754515e0f683f9c79210a5d1cad631ec3d06cea5172214d2176a42e67e19b", size = 370105, upload-time = "2024-09-10T04:25:35.141Z" }, - { url = "https://files.pythonhosted.org/packages/67/fa/dbbd2443e4578e165192dabbc6a22c0812cda2649261b1264ff515f19f15/msgpack-1.1.0-cp310-cp310-win32.whl", hash = "sha256:3df7e6b05571b3814361e8464f9304c42d2196808e0119f55d0d3e62cd5ea044", size = 68513, upload-time = "2024-09-10T04:24:36.099Z" }, - { url = "https://files.pythonhosted.org/packages/24/ce/c2c8fbf0ded750cb63cbcbb61bc1f2dfd69e16dca30a8af8ba80ec182dcd/msgpack-1.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:685ec345eefc757a7c8af44a3032734a739f8c45d1b0ac45efc5d8977aa4720f", size = 74687, upload-time = "2024-09-10T04:24:23.394Z" }, - { url = "https://files.pythonhosted.org/packages/b7/5e/a4c7154ba65d93be91f2f1e55f90e76c5f91ccadc7efc4341e6f04c8647f/msgpack-1.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3d364a55082fb2a7416f6c63ae383fbd903adb5a6cf78c5b96cc6316dc1cedc7", size = 150803, upload-time = "2024-09-10T04:24:40.911Z" }, - { url = "https://files.pythonhosted.org/packages/60/c2/687684164698f1d51c41778c838d854965dd284a4b9d3a44beba9265c931/msgpack-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:79ec007767b9b56860e0372085f8504db5d06bd6a327a335449508bbee9648fa", size = 84343, upload-time = "2024-09-10T04:24:50.283Z" }, - { url = "https://files.pythonhosted.org/packages/42/ae/d3adea9bb4a1342763556078b5765e666f8fdf242e00f3f6657380920972/msgpack-1.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6ad622bf7756d5a497d5b6836e7fc3752e2dd6f4c648e24b1803f6048596f701", size = 81408, upload-time = "2024-09-10T04:25:12.774Z" }, - { url = "https://files.pythonhosted.org/packages/dc/17/6313325a6ff40ce9c3207293aee3ba50104aed6c2c1559d20d09e5c1ff54/msgpack-1.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e59bca908d9ca0de3dc8684f21ebf9a690fe47b6be93236eb40b99af28b6ea6", size = 396096, upload-time = "2024-09-10T04:24:37.245Z" }, - { url = "https://files.pythonhosted.org/packages/a8/a1/ad7b84b91ab5a324e707f4c9761633e357820b011a01e34ce658c1dda7cc/msgpack-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e1da8f11a3dd397f0a32c76165cf0c4eb95b31013a94f6ecc0b280c05c91b59", size = 403671, upload-time = "2024-09-10T04:25:10.201Z" }, - { url = "https://files.pythonhosted.org/packages/bb/0b/fd5b7c0b308bbf1831df0ca04ec76fe2f5bf6319833646b0a4bd5e9dc76d/msgpack-1.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:452aff037287acb1d70a804ffd022b21fa2bb7c46bee884dbc864cc9024128a0", size = 387414, upload-time = "2024-09-10T04:25:27.552Z" }, - { url = "https://files.pythonhosted.org/packages/f0/03/ff8233b7c6e9929a1f5da3c7860eccd847e2523ca2de0d8ef4878d354cfa/msgpack-1.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8da4bf6d54ceed70e8861f833f83ce0814a2b72102e890cbdfe4b34764cdd66e", size = 383759, upload-time = "2024-09-10T04:25:03.366Z" }, - { url = "https://files.pythonhosted.org/packages/1f/1b/eb82e1fed5a16dddd9bc75f0854b6e2fe86c0259c4353666d7fab37d39f4/msgpack-1.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:41c991beebf175faf352fb940bf2af9ad1fb77fd25f38d9142053914947cdbf6", size = 394405, upload-time = "2024-09-10T04:25:07.348Z" }, - { url = "https://files.pythonhosted.org/packages/90/2e/962c6004e373d54ecf33d695fb1402f99b51832631e37c49273cc564ffc5/msgpack-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a52a1f3a5af7ba1c9ace055b659189f6c669cf3657095b50f9602af3a3ba0fe5", size = 396041, upload-time = "2024-09-10T04:25:48.311Z" }, - { url = "https://files.pythonhosted.org/packages/f8/20/6e03342f629474414860c48aeffcc2f7f50ddaf351d95f20c3f1c67399a8/msgpack-1.1.0-cp311-cp311-win32.whl", hash = "sha256:58638690ebd0a06427c5fe1a227bb6b8b9fdc2bd07701bec13c2335c82131a88", size = 68538, upload-time = "2024-09-10T04:24:29.953Z" }, - { url = "https://files.pythonhosted.org/packages/aa/c4/5a582fc9a87991a3e6f6800e9bb2f3c82972912235eb9539954f3e9997c7/msgpack-1.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:fd2906780f25c8ed5d7b323379f6138524ba793428db5d0e9d226d3fa6aa1788", size = 74871, upload-time = "2024-09-10T04:25:44.823Z" }, - { url = "https://files.pythonhosted.org/packages/e1/d6/716b7ca1dbde63290d2973d22bbef1b5032ca634c3ff4384a958ec3f093a/msgpack-1.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d46cf9e3705ea9485687aa4001a76e44748b609d260af21c4ceea7f2212a501d", size = 152421, upload-time = "2024-09-10T04:25:49.63Z" }, - { url = "https://files.pythonhosted.org/packages/70/da/5312b067f6773429cec2f8f08b021c06af416bba340c912c2ec778539ed6/msgpack-1.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5dbad74103df937e1325cc4bfeaf57713be0b4f15e1c2da43ccdd836393e2ea2", size = 85277, upload-time = "2024-09-10T04:24:48.562Z" }, - { url = "https://files.pythonhosted.org/packages/28/51/da7f3ae4462e8bb98af0d5bdf2707f1b8c65a0d4f496e46b6afb06cbc286/msgpack-1.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:58dfc47f8b102da61e8949708b3eafc3504509a5728f8b4ddef84bd9e16ad420", size = 82222, upload-time = "2024-09-10T04:25:36.49Z" }, - { url = "https://files.pythonhosted.org/packages/33/af/dc95c4b2a49cff17ce47611ca9ba218198806cad7796c0b01d1e332c86bb/msgpack-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4676e5be1b472909b2ee6356ff425ebedf5142427842aa06b4dfd5117d1ca8a2", size = 392971, upload-time = "2024-09-10T04:24:58.129Z" }, - { url = "https://files.pythonhosted.org/packages/f1/54/65af8de681fa8255402c80eda2a501ba467921d5a7a028c9c22a2c2eedb5/msgpack-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17fb65dd0bec285907f68b15734a993ad3fc94332b5bb21b0435846228de1f39", size = 401403, upload-time = "2024-09-10T04:25:40.428Z" }, - { url = "https://files.pythonhosted.org/packages/97/8c/e333690777bd33919ab7024269dc3c41c76ef5137b211d776fbb404bfead/msgpack-1.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a51abd48c6d8ac89e0cfd4fe177c61481aca2d5e7ba42044fd218cfd8ea9899f", size = 385356, upload-time = "2024-09-10T04:25:31.406Z" }, - { url = "https://files.pythonhosted.org/packages/57/52/406795ba478dc1c890559dd4e89280fa86506608a28ccf3a72fbf45df9f5/msgpack-1.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2137773500afa5494a61b1208619e3871f75f27b03bcfca7b3a7023284140247", size = 383028, upload-time = "2024-09-10T04:25:17.08Z" }, - { url = "https://files.pythonhosted.org/packages/e7/69/053b6549bf90a3acadcd8232eae03e2fefc87f066a5b9fbb37e2e608859f/msgpack-1.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:398b713459fea610861c8a7b62a6fec1882759f308ae0795b5413ff6a160cf3c", size = 391100, upload-time = "2024-09-10T04:25:08.993Z" }, - { url = "https://files.pythonhosted.org/packages/23/f0/d4101d4da054f04274995ddc4086c2715d9b93111eb9ed49686c0f7ccc8a/msgpack-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:06f5fd2f6bb2a7914922d935d3b8bb4a7fff3a9a91cfce6d06c13bc42bec975b", size = 394254, upload-time = "2024-09-10T04:25:06.048Z" }, - { url = "https://files.pythonhosted.org/packages/1c/12/cf07458f35d0d775ff3a2dc5559fa2e1fcd06c46f1ef510e594ebefdca01/msgpack-1.1.0-cp312-cp312-win32.whl", hash = "sha256:ad33e8400e4ec17ba782f7b9cf868977d867ed784a1f5f2ab46e7ba53b6e1e1b", size = 69085, upload-time = "2024-09-10T04:25:01.494Z" }, - { url = "https://files.pythonhosted.org/packages/73/80/2708a4641f7d553a63bc934a3eb7214806b5b39d200133ca7f7afb0a53e8/msgpack-1.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:115a7af8ee9e8cddc10f87636767857e7e3717b7a2e97379dc2054712693e90f", size = 75347, upload-time = "2024-09-10T04:25:33.106Z" }, - { url = "https://files.pythonhosted.org/packages/c8/b0/380f5f639543a4ac413e969109978feb1f3c66e931068f91ab6ab0f8be00/msgpack-1.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:071603e2f0771c45ad9bc65719291c568d4edf120b44eb36324dcb02a13bfddf", size = 151142, upload-time = "2024-09-10T04:24:59.656Z" }, - { url = "https://files.pythonhosted.org/packages/c8/ee/be57e9702400a6cb2606883d55b05784fada898dfc7fd12608ab1fdb054e/msgpack-1.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0f92a83b84e7c0749e3f12821949d79485971f087604178026085f60ce109330", size = 84523, upload-time = "2024-09-10T04:25:37.924Z" }, - { url = "https://files.pythonhosted.org/packages/7e/3a/2919f63acca3c119565449681ad08a2f84b2171ddfcff1dba6959db2cceb/msgpack-1.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4a1964df7b81285d00a84da4e70cb1383f2e665e0f1f2a7027e683956d04b734", size = 81556, upload-time = "2024-09-10T04:24:28.296Z" }, - { url = "https://files.pythonhosted.org/packages/7c/43/a11113d9e5c1498c145a8925768ea2d5fce7cbab15c99cda655aa09947ed/msgpack-1.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59caf6a4ed0d164055ccff8fe31eddc0ebc07cf7326a2aaa0dbf7a4001cd823e", size = 392105, upload-time = "2024-09-10T04:25:20.153Z" }, - { url = "https://files.pythonhosted.org/packages/2d/7b/2c1d74ca6c94f70a1add74a8393a0138172207dc5de6fc6269483519d048/msgpack-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0907e1a7119b337971a689153665764adc34e89175f9a34793307d9def08e6ca", size = 399979, upload-time = "2024-09-10T04:25:41.75Z" }, - { url = "https://files.pythonhosted.org/packages/82/8c/cf64ae518c7b8efc763ca1f1348a96f0e37150061e777a8ea5430b413a74/msgpack-1.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65553c9b6da8166e819a6aa90ad15288599b340f91d18f60b2061f402b9a4915", size = 383816, upload-time = "2024-09-10T04:24:45.826Z" }, - { url = "https://files.pythonhosted.org/packages/69/86/a847ef7a0f5ef3fa94ae20f52a4cacf596a4e4a010197fbcc27744eb9a83/msgpack-1.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7a946a8992941fea80ed4beae6bff74ffd7ee129a90b4dd5cf9c476a30e9708d", size = 380973, upload-time = "2024-09-10T04:25:04.689Z" }, - { url = "https://files.pythonhosted.org/packages/aa/90/c74cf6e1126faa93185d3b830ee97246ecc4fe12cf9d2d31318ee4246994/msgpack-1.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4b51405e36e075193bc051315dbf29168d6141ae2500ba8cd80a522964e31434", size = 387435, upload-time = "2024-09-10T04:24:17.879Z" }, - { url = "https://files.pythonhosted.org/packages/7a/40/631c238f1f338eb09f4acb0f34ab5862c4e9d7eda11c1b685471a4c5ea37/msgpack-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b4c01941fd2ff87c2a934ee6055bda4ed353a7846b8d4f341c428109e9fcde8c", size = 399082, upload-time = "2024-09-10T04:25:18.398Z" }, - { url = "https://files.pythonhosted.org/packages/e9/1b/fa8a952be252a1555ed39f97c06778e3aeb9123aa4cccc0fd2acd0b4e315/msgpack-1.1.0-cp313-cp313-win32.whl", hash = "sha256:7c9a35ce2c2573bada929e0b7b3576de647b0defbd25f5139dcdaba0ae35a4cc", size = 69037, upload-time = "2024-09-10T04:24:52.798Z" }, - { url = "https://files.pythonhosted.org/packages/b6/bc/8bd826dd03e022153bfa1766dcdec4976d6c818865ed54223d71f07862b3/msgpack-1.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:bce7d9e614a04d0883af0b3d4d501171fbfca038f12c77fa838d9f198147a23f", size = 75140, upload-time = "2024-09-10T04:24:31.288Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/45/b1/ea4f68038a18c77c9467400d166d74c4ffa536f34761f7983a104357e614/msgpack-1.1.1.tar.gz", hash = "sha256:77b79ce34a2bdab2594f490c8e80dd62a02d650b91a75159a63ec413b8d104cd", size = 173555, upload-time = "2025-06-13T06:52:51.324Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/33/52/f30da112c1dc92cf64f57d08a273ac771e7b29dea10b4b30369b2d7e8546/msgpack-1.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:353b6fc0c36fde68b661a12949d7d49f8f51ff5fa019c1e47c87c4ff34b080ed", size = 81799, upload-time = "2025-06-13T06:51:37.228Z" }, + { url = "https://files.pythonhosted.org/packages/e4/35/7bfc0def2f04ab4145f7f108e3563f9b4abae4ab0ed78a61f350518cc4d2/msgpack-1.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:79c408fcf76a958491b4e3b103d1c417044544b68e96d06432a189b43d1215c8", size = 78278, upload-time = "2025-06-13T06:51:38.534Z" }, + { url = "https://files.pythonhosted.org/packages/e8/c5/df5d6c1c39856bc55f800bf82778fd4c11370667f9b9e9d51b2f5da88f20/msgpack-1.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78426096939c2c7482bf31ef15ca219a9e24460289c00dd0b94411040bb73ad2", size = 402805, upload-time = "2025-06-13T06:51:39.538Z" }, + { url = "https://files.pythonhosted.org/packages/20/8e/0bb8c977efecfe6ea7116e2ed73a78a8d32a947f94d272586cf02a9757db/msgpack-1.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b17ba27727a36cb73aabacaa44b13090feb88a01d012c0f4be70c00f75048b4", size = 408642, upload-time = "2025-06-13T06:51:41.092Z" }, + { url = "https://files.pythonhosted.org/packages/59/a1/731d52c1aeec52006be6d1f8027c49fdc2cfc3ab7cbe7c28335b2910d7b6/msgpack-1.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7a17ac1ea6ec3c7687d70201cfda3b1e8061466f28f686c24f627cae4ea8efd0", size = 395143, upload-time = "2025-06-13T06:51:42.575Z" }, + { url = "https://files.pythonhosted.org/packages/2b/92/b42911c52cda2ba67a6418ffa7d08969edf2e760b09015593c8a8a27a97d/msgpack-1.1.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:88d1e966c9235c1d4e2afac21ca83933ba59537e2e2727a999bf3f515ca2af26", size = 395986, upload-time = "2025-06-13T06:51:43.807Z" }, + { url = "https://files.pythonhosted.org/packages/61/dc/8ae165337e70118d4dab651b8b562dd5066dd1e6dd57b038f32ebc3e2f07/msgpack-1.1.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:f6d58656842e1b2ddbe07f43f56b10a60f2ba5826164910968f5933e5178af75", size = 402682, upload-time = "2025-06-13T06:51:45.534Z" }, + { url = "https://files.pythonhosted.org/packages/58/27/555851cb98dcbd6ce041df1eacb25ac30646575e9cd125681aa2f4b1b6f1/msgpack-1.1.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:96decdfc4adcbc087f5ea7ebdcfd3dee9a13358cae6e81d54be962efc38f6338", size = 406368, upload-time = "2025-06-13T06:51:46.97Z" }, + { url = "https://files.pythonhosted.org/packages/d4/64/39a26add4ce16f24e99eabb9005e44c663db00e3fce17d4ae1ae9d61df99/msgpack-1.1.1-cp310-cp310-win32.whl", hash = "sha256:6640fd979ca9a212e4bcdf6eb74051ade2c690b862b679bfcb60ae46e6dc4bfd", size = 65004, upload-time = "2025-06-13T06:51:48.582Z" }, + { url = "https://files.pythonhosted.org/packages/7d/18/73dfa3e9d5d7450d39debde5b0d848139f7de23bd637a4506e36c9800fd6/msgpack-1.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:8b65b53204fe1bd037c40c4148d00ef918eb2108d24c9aaa20bc31f9810ce0a8", size = 71548, upload-time = "2025-06-13T06:51:49.558Z" }, + { url = "https://files.pythonhosted.org/packages/7f/83/97f24bf9848af23fe2ba04380388216defc49a8af6da0c28cc636d722502/msgpack-1.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:71ef05c1726884e44f8b1d1773604ab5d4d17729d8491403a705e649116c9558", size = 82728, upload-time = "2025-06-13T06:51:50.68Z" }, + { url = "https://files.pythonhosted.org/packages/aa/7f/2eaa388267a78401f6e182662b08a588ef4f3de6f0eab1ec09736a7aaa2b/msgpack-1.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:36043272c6aede309d29d56851f8841ba907a1a3d04435e43e8a19928e243c1d", size = 79279, upload-time = "2025-06-13T06:51:51.72Z" }, + { url = "https://files.pythonhosted.org/packages/f8/46/31eb60f4452c96161e4dfd26dbca562b4ec68c72e4ad07d9566d7ea35e8a/msgpack-1.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a32747b1b39c3ac27d0670122b57e6e57f28eefb725e0b625618d1b59bf9d1e0", size = 423859, upload-time = "2025-06-13T06:51:52.749Z" }, + { url = "https://files.pythonhosted.org/packages/45/16/a20fa8c32825cc7ae8457fab45670c7a8996d7746ce80ce41cc51e3b2bd7/msgpack-1.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a8b10fdb84a43e50d38057b06901ec9da52baac6983d3f709d8507f3889d43f", size = 429975, upload-time = "2025-06-13T06:51:53.97Z" }, + { url = "https://files.pythonhosted.org/packages/86/ea/6c958e07692367feeb1a1594d35e22b62f7f476f3c568b002a5ea09d443d/msgpack-1.1.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba0c325c3f485dc54ec298d8b024e134acf07c10d494ffa24373bea729acf704", size = 413528, upload-time = "2025-06-13T06:51:55.507Z" }, + { url = "https://files.pythonhosted.org/packages/75/05/ac84063c5dae79722bda9f68b878dc31fc3059adb8633c79f1e82c2cd946/msgpack-1.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:88daaf7d146e48ec71212ce21109b66e06a98e5e44dca47d853cbfe171d6c8d2", size = 413338, upload-time = "2025-06-13T06:51:57.023Z" }, + { url = "https://files.pythonhosted.org/packages/69/e8/fe86b082c781d3e1c09ca0f4dacd457ede60a13119b6ce939efe2ea77b76/msgpack-1.1.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d8b55ea20dc59b181d3f47103f113e6f28a5e1c89fd5b67b9140edb442ab67f2", size = 422658, upload-time = "2025-06-13T06:51:58.419Z" }, + { url = "https://files.pythonhosted.org/packages/3b/2b/bafc9924df52d8f3bb7c00d24e57be477f4d0f967c0a31ef5e2225e035c7/msgpack-1.1.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4a28e8072ae9779f20427af07f53bbb8b4aa81151054e882aee333b158da8752", size = 427124, upload-time = "2025-06-13T06:51:59.969Z" }, + { url = "https://files.pythonhosted.org/packages/a2/3b/1f717e17e53e0ed0b68fa59e9188f3f610c79d7151f0e52ff3cd8eb6b2dc/msgpack-1.1.1-cp311-cp311-win32.whl", hash = "sha256:7da8831f9a0fdb526621ba09a281fadc58ea12701bc709e7b8cbc362feabc295", size = 65016, upload-time = "2025-06-13T06:52:01.294Z" }, + { url = "https://files.pythonhosted.org/packages/48/45/9d1780768d3b249accecc5a38c725eb1e203d44a191f7b7ff1941f7df60c/msgpack-1.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:5fd1b58e1431008a57247d6e7cc4faa41c3607e8e7d4aaf81f7c29ea013cb458", size = 72267, upload-time = "2025-06-13T06:52:02.568Z" }, + { url = "https://files.pythonhosted.org/packages/e3/26/389b9c593eda2b8551b2e7126ad3a06af6f9b44274eb3a4f054d48ff7e47/msgpack-1.1.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ae497b11f4c21558d95de9f64fff7053544f4d1a17731c866143ed6bb4591238", size = 82359, upload-time = "2025-06-13T06:52:03.909Z" }, + { url = "https://files.pythonhosted.org/packages/ab/65/7d1de38c8a22cf8b1551469159d4b6cf49be2126adc2482de50976084d78/msgpack-1.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:33be9ab121df9b6b461ff91baac6f2731f83d9b27ed948c5b9d1978ae28bf157", size = 79172, upload-time = "2025-06-13T06:52:05.246Z" }, + { url = "https://files.pythonhosted.org/packages/0f/bd/cacf208b64d9577a62c74b677e1ada005caa9b69a05a599889d6fc2ab20a/msgpack-1.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f64ae8fe7ffba251fecb8408540c34ee9df1c26674c50c4544d72dbf792e5ce", size = 425013, upload-time = "2025-06-13T06:52:06.341Z" }, + { url = "https://files.pythonhosted.org/packages/4d/ec/fd869e2567cc9c01278a736cfd1697941ba0d4b81a43e0aa2e8d71dab208/msgpack-1.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a494554874691720ba5891c9b0b39474ba43ffb1aaf32a5dac874effb1619e1a", size = 426905, upload-time = "2025-06-13T06:52:07.501Z" }, + { url = "https://files.pythonhosted.org/packages/55/2a/35860f33229075bce803a5593d046d8b489d7ba2fc85701e714fc1aaf898/msgpack-1.1.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cb643284ab0ed26f6957d969fe0dd8bb17beb567beb8998140b5e38a90974f6c", size = 407336, upload-time = "2025-06-13T06:52:09.047Z" }, + { url = "https://files.pythonhosted.org/packages/8c/16/69ed8f3ada150bf92745fb4921bd621fd2cdf5a42e25eb50bcc57a5328f0/msgpack-1.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d275a9e3c81b1093c060c3837e580c37f47c51eca031f7b5fb76f7b8470f5f9b", size = 409485, upload-time = "2025-06-13T06:52:10.382Z" }, + { url = "https://files.pythonhosted.org/packages/c6/b6/0c398039e4c6d0b2e37c61d7e0e9d13439f91f780686deb8ee64ecf1ae71/msgpack-1.1.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4fd6b577e4541676e0cc9ddc1709d25014d3ad9a66caa19962c4f5de30fc09ef", size = 412182, upload-time = "2025-06-13T06:52:11.644Z" }, + { url = "https://files.pythonhosted.org/packages/b8/d0/0cf4a6ecb9bc960d624c93effaeaae75cbf00b3bc4a54f35c8507273cda1/msgpack-1.1.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bb29aaa613c0a1c40d1af111abf025f1732cab333f96f285d6a93b934738a68a", size = 419883, upload-time = "2025-06-13T06:52:12.806Z" }, + { url = "https://files.pythonhosted.org/packages/62/83/9697c211720fa71a2dfb632cad6196a8af3abea56eece220fde4674dc44b/msgpack-1.1.1-cp312-cp312-win32.whl", hash = "sha256:870b9a626280c86cff9c576ec0d9cbcc54a1e5ebda9cd26dab12baf41fee218c", size = 65406, upload-time = "2025-06-13T06:52:14.271Z" }, + { url = "https://files.pythonhosted.org/packages/c0/23/0abb886e80eab08f5e8c485d6f13924028602829f63b8f5fa25a06636628/msgpack-1.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:5692095123007180dca3e788bb4c399cc26626da51629a31d40207cb262e67f4", size = 72558, upload-time = "2025-06-13T06:52:15.252Z" }, + { url = "https://files.pythonhosted.org/packages/a1/38/561f01cf3577430b59b340b51329803d3a5bf6a45864a55f4ef308ac11e3/msgpack-1.1.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:3765afa6bd4832fc11c3749be4ba4b69a0e8d7b728f78e68120a157a4c5d41f0", size = 81677, upload-time = "2025-06-13T06:52:16.64Z" }, + { url = "https://files.pythonhosted.org/packages/09/48/54a89579ea36b6ae0ee001cba8c61f776451fad3c9306cd80f5b5c55be87/msgpack-1.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8ddb2bcfd1a8b9e431c8d6f4f7db0773084e107730ecf3472f1dfe9ad583f3d9", size = 78603, upload-time = "2025-06-13T06:52:17.843Z" }, + { url = "https://files.pythonhosted.org/packages/a0/60/daba2699b308e95ae792cdc2ef092a38eb5ee422f9d2fbd4101526d8a210/msgpack-1.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:196a736f0526a03653d829d7d4c5500a97eea3648aebfd4b6743875f28aa2af8", size = 420504, upload-time = "2025-06-13T06:52:18.982Z" }, + { url = "https://files.pythonhosted.org/packages/20/22/2ebae7ae43cd8f2debc35c631172ddf14e2a87ffcc04cf43ff9df9fff0d3/msgpack-1.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d592d06e3cc2f537ceeeb23d38799c6ad83255289bb84c2e5792e5a8dea268a", size = 423749, upload-time = "2025-06-13T06:52:20.211Z" }, + { url = "https://files.pythonhosted.org/packages/40/1b/54c08dd5452427e1179a40b4b607e37e2664bca1c790c60c442c8e972e47/msgpack-1.1.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4df2311b0ce24f06ba253fda361f938dfecd7b961576f9be3f3fbd60e87130ac", size = 404458, upload-time = "2025-06-13T06:52:21.429Z" }, + { url = "https://files.pythonhosted.org/packages/2e/60/6bb17e9ffb080616a51f09928fdd5cac1353c9becc6c4a8abd4e57269a16/msgpack-1.1.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e4141c5a32b5e37905b5940aacbc59739f036930367d7acce7a64e4dec1f5e0b", size = 405976, upload-time = "2025-06-13T06:52:22.995Z" }, + { url = "https://files.pythonhosted.org/packages/ee/97/88983e266572e8707c1f4b99c8fd04f9eb97b43f2db40e3172d87d8642db/msgpack-1.1.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b1ce7f41670c5a69e1389420436f41385b1aa2504c3b0c30620764b15dded2e7", size = 408607, upload-time = "2025-06-13T06:52:24.152Z" }, + { url = "https://files.pythonhosted.org/packages/bc/66/36c78af2efaffcc15a5a61ae0df53a1d025f2680122e2a9eb8442fed3ae4/msgpack-1.1.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4147151acabb9caed4e474c3344181e91ff7a388b888f1e19ea04f7e73dc7ad5", size = 424172, upload-time = "2025-06-13T06:52:25.704Z" }, + { url = "https://files.pythonhosted.org/packages/8c/87/a75eb622b555708fe0427fab96056d39d4c9892b0c784b3a721088c7ee37/msgpack-1.1.1-cp313-cp313-win32.whl", hash = "sha256:500e85823a27d6d9bba1d057c871b4210c1dd6fb01fbb764e37e4e8847376323", size = 65347, upload-time = "2025-06-13T06:52:26.846Z" }, + { url = "https://files.pythonhosted.org/packages/ca/91/7dc28d5e2a11a5ad804cf2b7f7a5fcb1eb5a4966d66a5d2b41aee6376543/msgpack-1.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:6d489fba546295983abd142812bda76b57e33d0b9f5d5b71c09a583285506f69", size = 72341, upload-time = "2025-06-13T06:52:27.835Z" }, ] [[package]] @@ -2180,13 +2699,13 @@ wheels = [ [[package]] name = "myst-nb" -version = "1.2.0" +version = "1.3.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "importlib-metadata" }, { name = "ipykernel" }, { name = "ipython", version = "8.37.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "ipython", version = "9.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "ipython", version = "9.5.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "jupyter-cache" }, { name = "myst-parser" }, { name = "nbclient" }, @@ -2195,9 +2714,9 @@ dependencies = [ { name = "sphinx" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ae/8f/71d983ed85b1aff17db25e447a9beb67b50a9116c7cff5cde26796d1ffd0/myst_nb-1.2.0.tar.gz", hash = "sha256:af459ec753b341952182b45b0a80b4776cebf80c9ee6aaca2a3f4027b440c9de", size = 79446, upload-time = "2025-02-07T18:27:02.176Z" } +sdist = { url = "https://files.pythonhosted.org/packages/21/83/a894bd8dea7a6e9f053502ee8413484dcbf75a219013d6a72e971c0fecfd/myst_nb-1.3.0.tar.gz", hash = "sha256:df3cd4680f51a5af673fd46b38b562be3559aef1475e906ed0f2e66e4587ce4b", size = 81963, upload-time = "2025-07-13T22:49:38.493Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/40/98/fa9dee0caf4e1f2e895d047952bf84a64eb95102df14c82c20594c0afa5f/myst_nb-1.2.0-py3-none-any.whl", hash = "sha256:0e09909877848c0cf45e1aecee97481512efa29a0c4caa37870a03bba11c56c1", size = 80303, upload-time = "2025-02-07T18:27:00.088Z" }, + { url = "https://files.pythonhosted.org/packages/69/a6/03d410c114b8c4856579b3d294dafc27626a7690a552625eec42b16dfa41/myst_nb-1.3.0-py3-none-any.whl", hash = "sha256:1f36af3c19964960ec4e51ac30949b6ed6df220356ffa8d60dd410885e132d7d", size = 82396, upload-time = "2025-07-13T22:49:37.019Z" }, ] [[package]] @@ -2219,11 +2738,11 @@ wheels = [ [[package]] name = "narwhals" -version = "1.42.0" +version = "2.5.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/7e/9484c2427453bd0024fd36cf7923de4367d749f0b216b9ca56b9dfc3c516/narwhals-1.42.0.tar.gz", hash = "sha256:a5e554782446d1197593312651352cd39b2025e995053d8e6bdfaa01a70a91d3", size = 490671, upload-time = "2025-06-09T09:20:27.794Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7b/b8/3cb005704866f1cc19e8d6b15d0467255821ba12d82f20ea15912672e54c/narwhals-2.5.0.tar.gz", hash = "sha256:8ae0b6f39597f14c0dc52afc98949d6f8be89b5af402d2d98101d2f7d3561418", size = 558573, upload-time = "2025-09-12T10:04:24.436Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8d/0f/f9ae7c8c55f9078c852b13ea4a6e92e5f4d6d4c8fc0781ec2882957006bb/narwhals-1.42.0-py3-none-any.whl", hash = "sha256:ef6cedf7700dc22c09d17973b9ede11b53e25331e238b24ac73884a8c5e27c19", size = 359033, upload-time = "2025-06-09T09:20:25.668Z" }, + { url = "https://files.pythonhosted.org/packages/f8/5a/22741c5c0e5f6e8050242bfc2052ba68bc94b1735ed5bca35404d136d6ec/narwhals-2.5.0-py3-none-any.whl", hash = "sha256:7e213f9ca7db3f8bf6f7eff35eaee6a1cf80902997e1b78d49b7755775d8f423", size = 407296, upload-time = "2025-09-12T10:04:22.524Z" }, ] [[package]] @@ -2379,7 +2898,8 @@ name = "networkx" version = "3.5" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.12'", + "python_full_version >= '3.14'", + "python_full_version >= '3.12' and python_full_version < '3.14'", "python_full_version == '3.11.*'", ] sdist = { url = "https://files.pythonhosted.org/packages/6c/4f/ccdb8ad3a38e583f214547fd2f7ff1fc160c43a75af88e6aec213404b96a/networkx-3.5.tar.gz", hash = "sha256:d4c6f9cf81f52d69230866796b82afbccdec3db7ae4fbd1b65ea750feed50037", size = 2471065, upload-time = "2025-05-29T11:35:07.804Z" } @@ -2425,34 +2945,34 @@ wheels = [ [[package]] name = "numba" -version = "0.61.2" +version = "0.62.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "llvmlite" }, { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/1c/a0/e21f57604304aa03ebb8e098429222722ad99176a4f979d34af1d1ee80da/numba-0.61.2.tar.gz", hash = "sha256:8750ee147940a6637b80ecf7f95062185ad8726c8c28a2295b8ec1160a196f7d", size = 2820615, upload-time = "2025-04-09T02:58:07.659Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/eb/ca/f470be59552ccbf9531d2d383b67ae0b9b524d435fb4a0d229fef135116e/numba-0.61.2-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:cf9f9fc00d6eca0c23fc840817ce9f439b9f03c8f03d6246c0e7f0cb15b7162a", size = 2775663, upload-time = "2025-04-09T02:57:34.143Z" }, - { url = "https://files.pythonhosted.org/packages/f5/13/3bdf52609c80d460a3b4acfb9fdb3817e392875c0d6270cf3fd9546f138b/numba-0.61.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ea0247617edcb5dd61f6106a56255baab031acc4257bddaeddb3a1003b4ca3fd", size = 2778344, upload-time = "2025-04-09T02:57:36.609Z" }, - { url = "https://files.pythonhosted.org/packages/e2/7d/bfb2805bcfbd479f04f835241ecf28519f6e3609912e3a985aed45e21370/numba-0.61.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ae8c7a522c26215d5f62ebec436e3d341f7f590079245a2f1008dfd498cc1642", size = 3824054, upload-time = "2025-04-09T02:57:38.162Z" }, - { url = "https://files.pythonhosted.org/packages/e3/27/797b2004745c92955470c73c82f0e300cf033c791f45bdecb4b33b12bdea/numba-0.61.2-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:bd1e74609855aa43661edffca37346e4e8462f6903889917e9f41db40907daa2", size = 3518531, upload-time = "2025-04-09T02:57:39.709Z" }, - { url = "https://files.pythonhosted.org/packages/b1/c6/c2fb11e50482cb310afae87a997707f6c7d8a48967b9696271347441f650/numba-0.61.2-cp310-cp310-win_amd64.whl", hash = "sha256:ae45830b129c6137294093b269ef0a22998ccc27bf7cf096ab8dcf7bca8946f9", size = 2831612, upload-time = "2025-04-09T02:57:41.559Z" }, - { url = "https://files.pythonhosted.org/packages/3f/97/c99d1056aed767503c228f7099dc11c402906b42a4757fec2819329abb98/numba-0.61.2-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:efd3db391df53aaa5cfbee189b6c910a5b471488749fd6606c3f33fc984c2ae2", size = 2775825, upload-time = "2025-04-09T02:57:43.442Z" }, - { url = "https://files.pythonhosted.org/packages/95/9e/63c549f37136e892f006260c3e2613d09d5120672378191f2dc387ba65a2/numba-0.61.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:49c980e4171948ffebf6b9a2520ea81feed113c1f4890747ba7f59e74be84b1b", size = 2778695, upload-time = "2025-04-09T02:57:44.968Z" }, - { url = "https://files.pythonhosted.org/packages/97/c8/8740616c8436c86c1b9a62e72cb891177d2c34c2d24ddcde4c390371bf4c/numba-0.61.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3945615cd73c2c7eba2a85ccc9c1730c21cd3958bfcf5a44302abae0fb07bb60", size = 3829227, upload-time = "2025-04-09T02:57:46.63Z" }, - { url = "https://files.pythonhosted.org/packages/fc/06/66e99ae06507c31d15ff3ecd1f108f2f59e18b6e08662cd5f8a5853fbd18/numba-0.61.2-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:bbfdf4eca202cebade0b7d43896978e146f39398909a42941c9303f82f403a18", size = 3523422, upload-time = "2025-04-09T02:57:48.222Z" }, - { url = "https://files.pythonhosted.org/packages/0f/a4/2b309a6a9f6d4d8cfba583401c7c2f9ff887adb5d54d8e2e130274c0973f/numba-0.61.2-cp311-cp311-win_amd64.whl", hash = "sha256:76bcec9f46259cedf888041b9886e257ae101c6268261b19fda8cfbc52bec9d1", size = 2831505, upload-time = "2025-04-09T02:57:50.108Z" }, - { url = "https://files.pythonhosted.org/packages/b4/a0/c6b7b9c615cfa3b98c4c63f4316e3f6b3bbe2387740277006551784218cd/numba-0.61.2-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:34fba9406078bac7ab052efbf0d13939426c753ad72946baaa5bf9ae0ebb8dd2", size = 2776626, upload-time = "2025-04-09T02:57:51.857Z" }, - { url = "https://files.pythonhosted.org/packages/92/4a/fe4e3c2ecad72d88f5f8cd04e7f7cff49e718398a2fac02d2947480a00ca/numba-0.61.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4ddce10009bc097b080fc96876d14c051cc0c7679e99de3e0af59014dab7dfe8", size = 2779287, upload-time = "2025-04-09T02:57:53.658Z" }, - { url = "https://files.pythonhosted.org/packages/9a/2d/e518df036feab381c23a624dac47f8445ac55686ec7f11083655eb707da3/numba-0.61.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5b1bb509d01f23d70325d3a5a0e237cbc9544dd50e50588bc581ba860c213546", size = 3885928, upload-time = "2025-04-09T02:57:55.206Z" }, - { url = "https://files.pythonhosted.org/packages/10/0f/23cced68ead67b75d77cfcca3df4991d1855c897ee0ff3fe25a56ed82108/numba-0.61.2-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:48a53a3de8f8793526cbe330f2a39fe9a6638efcbf11bd63f3d2f9757ae345cd", size = 3577115, upload-time = "2025-04-09T02:57:56.818Z" }, - { url = "https://files.pythonhosted.org/packages/68/1d/ddb3e704c5a8fb90142bf9dc195c27db02a08a99f037395503bfbc1d14b3/numba-0.61.2-cp312-cp312-win_amd64.whl", hash = "sha256:97cf4f12c728cf77c9c1d7c23707e4d8fb4632b46275f8f3397de33e5877af18", size = 2831929, upload-time = "2025-04-09T02:57:58.45Z" }, - { url = "https://files.pythonhosted.org/packages/0b/f3/0fe4c1b1f2569e8a18ad90c159298d862f96c3964392a20d74fc628aee44/numba-0.61.2-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:3a10a8fc9afac40b1eac55717cece1b8b1ac0b946f5065c89e00bde646b5b154", size = 2771785, upload-time = "2025-04-09T02:57:59.96Z" }, - { url = "https://files.pythonhosted.org/packages/e9/71/91b277d712e46bd5059f8a5866862ed1116091a7cb03bd2704ba8ebe015f/numba-0.61.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7d3bcada3c9afba3bed413fba45845f2fb9cd0d2b27dd58a1be90257e293d140", size = 2773289, upload-time = "2025-04-09T02:58:01.435Z" }, - { url = "https://files.pythonhosted.org/packages/0d/e0/5ea04e7ad2c39288c0f0f9e8d47638ad70f28e275d092733b5817cf243c9/numba-0.61.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bdbca73ad81fa196bd53dc12e3aaf1564ae036e0c125f237c7644fe64a4928ab", size = 3893918, upload-time = "2025-04-09T02:58:02.933Z" }, - { url = "https://files.pythonhosted.org/packages/17/58/064f4dcb7d7e9412f16ecf80ed753f92297e39f399c905389688cf950b81/numba-0.61.2-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:5f154aaea625fb32cfbe3b80c5456d514d416fcdf79733dd69c0df3a11348e9e", size = 3584056, upload-time = "2025-04-09T02:58:04.538Z" }, - { url = "https://files.pythonhosted.org/packages/af/a4/6d3a0f2d3989e62a18749e1e9913d5fa4910bbb3e3311a035baea6caf26d/numba-0.61.2-cp313-cp313-win_amd64.whl", hash = "sha256:59321215e2e0ac5fa928a8020ab00b8e57cda8a97384963ac0dfa4d4e6aa54e7", size = 2831846, upload-time = "2025-04-09T02:58:06.125Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/e5/96/66dae7911cb331e99bf9afe35703317d8da0fad81ff49fed77f4855e4b60/numba-0.62.0.tar.gz", hash = "sha256:2afcc7899dc93fefecbb274a19c592170bc2dbfae02b00f83e305332a9857a5a", size = 2749680, upload-time = "2025-09-18T17:58:11.394Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/74/b3/f60339dda8bfb972aaeb70ccd455d9d66e02b45fa9c7f8464a35710ffeb2/numba-0.62.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:3e7eaff7ce35799de4dda09a4cfcf1bb204ad59be5fa29a1efc080c0a72eb6d6", size = 2684282, upload-time = "2025-09-18T17:59:10.448Z" }, + { url = "https://files.pythonhosted.org/packages/df/8a/b89cd39902760f76ddd13b21174686ef07a9930b158033c6963345e9ad2e/numba-0.62.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a7694c45ddfe5c9a26d05cd2bf378e214ae2d5332601a3c89c94207eb4661166", size = 2687314, upload-time = "2025-09-18T17:59:24.431Z" }, + { url = "https://files.pythonhosted.org/packages/44/45/b8a1582f811e3be786d241126263e9428c1a049cd7ff484b3dbafc8e9561/numba-0.62.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c2f07c6e67e8f54dba62a46a3b72294c5f4333ff703eb8966576ef731cc8ecd7", size = 3444905, upload-time = "2025-09-18T17:58:36.697Z" }, + { url = "https://files.pythonhosted.org/packages/11/92/590568cc0c3268cbebd55b5d8d5a5a73764c58623a4b3d91fa0392da9cf1/numba-0.62.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7f77fadaa6592d2a6b9c35bcddc710b22dceca0af9a7037dbc61ff209eaddfa8", size = 3441233, upload-time = "2025-09-18T17:58:55.223Z" }, + { url = "https://files.pythonhosted.org/packages/96/1f/40535d58807177829864a482cfa1a85b3de10068865076fe54f8fce255be/numba-0.62.0-cp310-cp310-win_amd64.whl", hash = "sha256:77050a79f6bc19324c2f6f456c074a49d3de35c8124c91668054e9d62243ac99", size = 2745650, upload-time = "2025-09-18T17:59:37.856Z" }, + { url = "https://files.pythonhosted.org/packages/4d/ba/691508c81c3e8ff6c4a131755556a39a6f73f8aec3750ff8ba7bb9b23585/numba-0.62.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:1370708a54281e1dd3e4b73f423f88d3b34b64cf3f5fa0e460a1fbe6bd4e0f3f", size = 2684281, upload-time = "2025-09-18T17:59:14.333Z" }, + { url = "https://files.pythonhosted.org/packages/ae/f0/9c1b0a23e09297e292f1f2deea0b7bbe52b112fb6d9fb46beb1f7016f6d6/numba-0.62.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6bd7032d6c1e771967fc1d07a499bb10ce1639662451fc0a86089fa8efc420e7", size = 2687331, upload-time = "2025-09-18T17:59:28.232Z" }, + { url = "https://files.pythonhosted.org/packages/ee/77/b497d480abf9c3547b8374e58794532a7e3600a378408e0ff8fbf2532dc9/numba-0.62.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:87cdc476ea1b2feefb7f893a648be2f1e7a04f671f355ac9bbeb007eaf039f8c", size = 3450243, upload-time = "2025-09-18T17:58:41.724Z" }, + { url = "https://files.pythonhosted.org/packages/a4/42/68bcb890bc5e8c254145f4a5f2c7e90ec653b27271780e3eef36086522a4/numba-0.62.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:144a57e504a5423acfc91fcd3be4e6481cb0667ce0bcc6cd3e8bd43a735b58a4", size = 3445595, upload-time = "2025-09-18T17:58:58.989Z" }, + { url = "https://files.pythonhosted.org/packages/5e/8c/889b895f5daafc44cbd7b798f748fd9b9555cb0604fa03004dc535bd8b5c/numba-0.62.0-cp311-cp311-win_amd64.whl", hash = "sha256:499b00e0bd95c83fedf1cbf349b7132a432a90292cbe2014eeaf482ce7c3b9f8", size = 2745535, upload-time = "2025-09-18T17:59:42.001Z" }, + { url = "https://files.pythonhosted.org/packages/5f/cc/8c519b15d51647bd092a3b935e92681c0ec983647bb7ec1b48ca05094eb5/numba-0.62.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:82edb589c9607ec2dbe0b2d34793d8c5104daf766277acc49ad7e179f8634fd2", size = 2685349, upload-time = "2025-09-18T17:59:17.651Z" }, + { url = "https://files.pythonhosted.org/packages/b1/0f/992aa8b62b23ebc56db97ac29fa6c8e5b097e30d575745048de4e99364b8/numba-0.62.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:469e042750d5a6aa6847dc89d64de5f0bfaf2208b6d442e4634de3318b7043de", size = 2688140, upload-time = "2025-09-18T17:59:31.191Z" }, + { url = "https://files.pythonhosted.org/packages/0b/1f/a67f3a94f42a3bc90c052f446e4fa1089b513129b8dbf61df74b25ab24ea/numba-0.62.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2ad2dc2b3583f8f24f35c8ade7e215c44590c9aa757ccba640dd293297cb15bb", size = 3506358, upload-time = "2025-09-18T17:58:46.296Z" }, + { url = "https://files.pythonhosted.org/packages/e0/8a/0c451c2626cbaf6a1c3f3665bd5859671e9f065b9ee9a101fb08659a46e2/numba-0.62.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0266998a842074fc91bfc406dd91c8ee12c196ea834375af6174f62647ffd9b1", size = 3496571, upload-time = "2025-09-18T17:59:03.009Z" }, + { url = "https://files.pythonhosted.org/packages/16/9a/40e66e5992d5365f4f2f636148e3a333eb012e1690cbc0b5d7d296e5d11c/numba-0.62.0-cp312-cp312-win_amd64.whl", hash = "sha256:cbc84e030548a5aad74971eb1a579f69edc7da961d89ef09a5ee1fe01c207795", size = 2745542, upload-time = "2025-09-18T17:59:44.942Z" }, + { url = "https://files.pythonhosted.org/packages/33/ff/dd3047eb05e9bcf5c986885a645d8dd1df509ebf1f9b0091c143b1ebc6b4/numba-0.62.0-cp313-cp313-macosx_10_15_x86_64.whl", hash = "sha256:07e76ac7bcd47156a758df52e9752fdfb94ff5f80b78c4710cabc568d8d3d6ad", size = 2685768, upload-time = "2025-09-18T17:59:21.128Z" }, + { url = "https://files.pythonhosted.org/packages/b9/57/bdc50e30b8fcf387cfe596e42ec4d9b8b3e2121cc1171ecbb990535a9aa9/numba-0.62.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:a972689dad64a7047f555d93ce829fe05ca2519ad0cf7af0071a64145c571039", size = 2688742, upload-time = "2025-09-18T17:59:34.674Z" }, + { url = "https://files.pythonhosted.org/packages/45/1e/e4e3fe4bcd971ea8e5f22f58f4dcce4b9f69c1299ff81f5740e3a007e817/numba-0.62.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f789b1f2997fc34b1b88fcc4481886dcd44afcffbd3e28affedce54aec7fdcc1", size = 3514481, upload-time = "2025-09-18T17:58:51.201Z" }, + { url = "https://files.pythonhosted.org/packages/f0/ac/98205cb536b756a3b9d2d198df8deee32cb4ec01740af77715c67f84c402/numba-0.62.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:516525981f19f36d3a0bada0fb7479cf0bf925b5e389d03aac87f3758c5cfb9e", size = 3503501, upload-time = "2025-09-18T17:59:06.568Z" }, + { url = "https://files.pythonhosted.org/packages/98/a2/3a9eb747d77693054504540e9da0640c169dd97e3e268c1150bf55a22b97/numba-0.62.0-cp313-cp313-win_amd64.whl", hash = "sha256:591a9c485904f219a129b0493f89d27de24286fb66dd5a577b11edc62fc78db4", size = 2745529, upload-time = "2025-09-18T17:59:47.496Z" }, ] [[package]] @@ -2490,7 +3010,8 @@ name = "numcodecs" version = "0.15.1" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.12'", + "python_full_version >= '3.14'", + "python_full_version >= '3.12' and python_full_version < '3.14'", "python_full_version == '3.11.*'", ] dependencies = [ @@ -2515,41 +3036,69 @@ wheels = [ [[package]] name = "numexpr" -version = "2.10.2" +version = "2.13.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/21/67/c7415cf04ebe418193cfd6595ae03e3a64d76dac7b9c010098b39cc7992e/numexpr-2.10.2.tar.gz", hash = "sha256:b0aff6b48ebc99d2f54f27b5f73a58cb92fde650aeff1b397c71c8788b4fff1a", size = 106787, upload-time = "2024-11-23T13:34:23.127Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fd/dc/bd84219318826d138b7e729ac3ffce3c706ab9d810ce74326a55c7252dd1/numexpr-2.10.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5b0e82d2109c1d9e63fcd5ea177d80a11b881157ab61178ddbdebd4c561ea46", size = 145011, upload-time = "2024-11-23T13:33:24.846Z" }, - { url = "https://files.pythonhosted.org/packages/31/6a/b1f08141283327478a57490c0ab3f26a634d4741ff33b9e22f760a7cedb0/numexpr-2.10.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3fc2b8035a0c2cdc352e58c3875cb668836018065cbf5752cb531015d9a568d8", size = 134777, upload-time = "2024-11-23T13:33:26.693Z" }, - { url = "https://files.pythonhosted.org/packages/7c/d6/6641864b0446ce472330de7644c78f90bd7e55d902046b44161f92721279/numexpr-2.10.2-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0db5ff5183935d1612653559c319922143e8fa3019007696571b13135f216458", size = 408893, upload-time = "2024-11-23T13:33:28.44Z" }, - { url = "https://files.pythonhosted.org/packages/25/ab/cb5809cb1f66431632d63dc028c58cb91492725c74dddc4b97ba62e88a92/numexpr-2.10.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:15f59655458056fdb3a621b1bb8e071581ccf7e823916c7568bb7c9a3e393025", size = 397305, upload-time = "2024-11-23T13:33:30.181Z" }, - { url = "https://files.pythonhosted.org/packages/9c/a0/29bcb31a9debb743e3dc46bacd55f4f6ee6a77d95eda5c8dca19a29c0627/numexpr-2.10.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ce8cccf944339051e44a49a124a06287fe3066d0acbff33d1aa5aee10a96abb7", size = 1378789, upload-time = "2024-11-23T13:33:32.263Z" }, - { url = "https://files.pythonhosted.org/packages/cc/72/415262a7bdda706c41bf8254311a5ca13d3b8532341ab478be4583d7061a/numexpr-2.10.2-cp310-cp310-win32.whl", hash = "sha256:ba85371c9a8d03e115f4dfb6d25dfbce05387002b9bc85016af939a1da9624f0", size = 151935, upload-time = "2024-11-23T13:33:33.653Z" }, - { url = "https://files.pythonhosted.org/packages/71/fa/0124f0c2a502a0bac4553c8a171c551f154cf80a83a15e40d30c43e48a7e/numexpr-2.10.2-cp310-cp310-win_amd64.whl", hash = "sha256:deb64235af9eeba59fcefa67e82fa80cfc0662e1b0aa373b7118a28da124d51d", size = 144961, upload-time = "2024-11-23T13:33:34.883Z" }, - { url = "https://files.pythonhosted.org/packages/de/b7/f25d6166f92ef23737c1c90416144492a664f0a56510d90f7c6577c2cd14/numexpr-2.10.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6b360eb8d392483410fe6a3d5a7144afa298c9a0aa3e9fe193e89590b47dd477", size = 145055, upload-time = "2024-11-23T13:33:36.154Z" }, - { url = "https://files.pythonhosted.org/packages/66/64/428361ea6415826332f38ef2dd5c3abf4e7e601f033bfc9be68b680cb765/numexpr-2.10.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d9a42f5c24880350d88933c4efee91b857c378aaea7e8b86221fff569069841e", size = 134743, upload-time = "2024-11-23T13:33:37.273Z" }, - { url = "https://files.pythonhosted.org/packages/3f/fb/639ec91d2ea7b4a5d66e26e8ef8e06b020c8e9b9ebaf3bab7b0a9bee472e/numexpr-2.10.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:83fcb11988b57cc25b028a36d285287d706d1f536ebf2662ea30bd990e0de8b9", size = 410397, upload-time = "2024-11-23T13:33:38.474Z" }, - { url = "https://files.pythonhosted.org/packages/89/5a/0f5c5b8a3a6d34eeecb30d0e2f722d50b9b38c0e175937e7c6268ffab997/numexpr-2.10.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4213a92efa9770bc28e3792134e27c7e5c7e97068bdfb8ba395baebbd12f991b", size = 398902, upload-time = "2024-11-23T13:33:39.802Z" }, - { url = "https://files.pythonhosted.org/packages/a2/d5/ec734e735eba5a753efed5be3707ee7447ebd371772f8081b65a4153fb97/numexpr-2.10.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ebdbef5763ca057eea0c2b5698e4439d084a0505d9d6e94f4804f26e8890c45e", size = 1380354, upload-time = "2024-11-23T13:33:41.68Z" }, - { url = "https://files.pythonhosted.org/packages/30/51/406e572531d817480bd612ee08239a36ee82865fea02fce569f15631f4ee/numexpr-2.10.2-cp311-cp311-win32.whl", hash = "sha256:3bf01ec502d89944e49e9c1b5cc7c7085be8ca2eb9dd46a0eafd218afbdbd5f5", size = 151938, upload-time = "2024-11-23T13:33:43.998Z" }, - { url = "https://files.pythonhosted.org/packages/04/32/5882ed1dbd96234f327a73316a481add151ff827cfaf2ea24fb4d5ad04db/numexpr-2.10.2-cp311-cp311-win_amd64.whl", hash = "sha256:e2d0ae24b0728e4bc3f1d3f33310340d67321d36d6043f7ce26897f4f1042db0", size = 144961, upload-time = "2024-11-23T13:33:45.329Z" }, - { url = "https://files.pythonhosted.org/packages/2b/96/d5053dea06d8298ae8052b4b049cbf8ef74998e28d57166cc27b8ae909e2/numexpr-2.10.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b5323a46e75832334f1af86da1ef6ff0add00fbacdd266250be872b438bdf2be", size = 145029, upload-time = "2024-11-23T13:33:46.892Z" }, - { url = "https://files.pythonhosted.org/packages/3e/3c/fcd5a812ed5dda757b2d9ef2764a3e1cca6f6d1f02dbf113dc23a2c7702a/numexpr-2.10.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a42963bd4c62d8afa4f51e7974debfa39a048383f653544ab54f50a2f7ec6c42", size = 134851, upload-time = "2024-11-23T13:33:47.986Z" }, - { url = "https://files.pythonhosted.org/packages/0a/52/0ed3b306d8c9944129bce97fec73a2caff13adbd7e1df148d546d7eb2d4d/numexpr-2.10.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5191ba8f2975cb9703afc04ae845a929e193498c0e8bcd408ecb147b35978470", size = 411837, upload-time = "2024-11-23T13:33:49.223Z" }, - { url = "https://files.pythonhosted.org/packages/7d/9c/6b671dd3fb67d7e7da93cb76b7c5277743f310a216b7856bb18776bb3371/numexpr-2.10.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:97298b14f0105a794bea06fd9fbc5c423bd3ff4d88cbc618860b83eb7a436ad6", size = 400577, upload-time = "2024-11-23T13:33:50.559Z" }, - { url = "https://files.pythonhosted.org/packages/ea/4d/a167d1a215fe10ce58c45109f2869fd13aa0eef66f7e8c69af68be45d436/numexpr-2.10.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f9d7805ccb6be2d3b0f7f6fad3707a09ac537811e8e9964f4074d28cb35543db", size = 1381735, upload-time = "2024-11-23T13:33:51.918Z" }, - { url = "https://files.pythonhosted.org/packages/c1/d4/17e4434f989e4917d31cbd88a043e1c9c16958149cf43fa622987111392b/numexpr-2.10.2-cp312-cp312-win32.whl", hash = "sha256:cb845b2d4f9f8ef0eb1c9884f2b64780a85d3b5ae4eeb26ae2b0019f489cd35e", size = 152102, upload-time = "2024-11-23T13:33:53.93Z" }, - { url = "https://files.pythonhosted.org/packages/b8/25/9ae599994076ef2a42d35ff6b0430da002647f212567851336a6c7b132d6/numexpr-2.10.2-cp312-cp312-win_amd64.whl", hash = "sha256:57b59cbb5dcce4edf09cd6ce0b57ff60312479930099ca8d944c2fac896a1ead", size = 145061, upload-time = "2024-11-23T13:33:55.161Z" }, - { url = "https://files.pythonhosted.org/packages/8c/cb/2ea1848c46e4d75073c038dd75628d1aa442975303264ed230bf90f74f44/numexpr-2.10.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a37d6a51ec328c561b2ca8a2bef07025642eca995b8553a5267d0018c732976d", size = 145035, upload-time = "2024-11-23T13:33:56.778Z" }, - { url = "https://files.pythonhosted.org/packages/ec/cf/bb2bcd81d6f3243590e19ac3e7795a1a370f3ebcd8ecec1f46dcd5333f37/numexpr-2.10.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:81d1dde7dd6166d8ff5727bb46ab42a6b0048db0e97ceb84a121334a404a800f", size = 134858, upload-time = "2024-11-23T13:33:57.953Z" }, - { url = "https://files.pythonhosted.org/packages/48/9b/c9128ffb453205c2a4c84a3abed35447c7591c2c2812e77e34fd238cb2bb/numexpr-2.10.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5b3f814437d5a10797f8d89d2037cca2c9d9fa578520fc911f894edafed6ea3e", size = 415517, upload-time = "2024-11-23T13:33:59.163Z" }, - { url = "https://files.pythonhosted.org/packages/7e/b0/64c04c9f8b4a563218d00daa1ec4563364961b79025162c5276ab2c7c407/numexpr-2.10.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9309f2e43fe6e4560699ef5c27d7a848b3ff38549b6b57194207cf0e88900527", size = 403846, upload-time = "2024-11-23T13:34:01.006Z" }, - { url = "https://files.pythonhosted.org/packages/80/35/60e9041fd709fe98dd3109d73a03cdffaeb6ee2089179155f5c3754e9934/numexpr-2.10.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ebb73b93f5c4d6994f357fa5a47a9f7a5485577e633b3c46a603cb01445bbb19", size = 1381659, upload-time = "2024-11-23T13:34:02.979Z" }, - { url = "https://files.pythonhosted.org/packages/bd/5a/955bf5b5cf8f3de7b044a999e36327e14191fa073ed0e329456ed0f8161d/numexpr-2.10.2-cp313-cp313-win32.whl", hash = "sha256:ec04c9a3c050c175348801e27c18c68d28673b7bfb865ef88ce333be523bbc01", size = 152105, upload-time = "2024-11-23T13:34:04.374Z" }, - { url = "https://files.pythonhosted.org/packages/be/7a/8ce360a1848bb5bcc30a414493371678f43790ece397f8652d5f65757e57/numexpr-2.10.2-cp313-cp313-win_amd64.whl", hash = "sha256:d7a3fc83c959288544db3adc70612475d8ad53a66c69198105c74036182d10dd", size = 145060, upload-time = "2024-11-23T13:34:06.112Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/45/6e/8164bc96108991fcd74e9d3eda4a4bf5752c394dde5b2408ecbefeaa339f/numexpr-2.13.0.tar.gz", hash = "sha256:3363d804f202437586447a49b5c83b01322e8be72279d49e0bf524720edc01b6", size = 118688, upload-time = "2025-09-24T12:18:17.621Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f6/ef/99dcb44a8bd952fcec90a6badbeb597d7cbbf6563095ab3293767f035804/numexpr-2.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6c6e48c86698a7b372ef5b60da30603472940e77a6ab852256843913c2da4578", size = 162295, upload-time = "2025-09-24T12:16:55.681Z" }, + { url = "https://files.pythonhosted.org/packages/a8/df/f9e1adf3addfaf9bb52eb98a976e1daaa1fc50157e95707b81f2c43f0779/numexpr-2.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:62e9818a212d9fc36ed2fe7d99c5899b4801980294bb4499056f3530ba05ce69", size = 151214, upload-time = "2025-09-24T12:16:57.601Z" }, + { url = "https://files.pythonhosted.org/packages/54/b3/36dd4ffde70a441d9b135121cab7d8284edb8ad647317addc508b9a18462/numexpr-2.13.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:df7d70882129b0fff0f2cf2ee7271388f310ae31fee5aee07da66190c1e25eaf", size = 448341, upload-time = "2025-09-24T12:16:59.099Z" }, + { url = "https://files.pythonhosted.org/packages/65/32/4630716afc68ca73a08c79d2beac11109c7f1c59fe16aaa483ee680b4e06/numexpr-2.13.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:010104a05f8b4d1a04b81e7e5dfa17c6b54e62c138014b898ac8749829f97da1", size = 438797, upload-time = "2025-09-24T12:17:00.377Z" }, + { url = "https://files.pythonhosted.org/packages/e6/24/7d59be60b2ea9ad50bb64c89b289d8699dcda8a1f80e43a222fa048460eb/numexpr-2.13.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7c19054b9fd01bd2873d60c11e888e4470abdffab26765fbb33ac9bb33e00f31", size = 1413121, upload-time = "2025-09-24T12:17:01.754Z" }, + { url = "https://files.pythonhosted.org/packages/a2/73/ce5c8a95d9e17e431d644adf6be84f3b41abcebca1eb96ad021bcd50bb36/numexpr-2.13.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9bbf7652dd15fa4e910a0e8c51e7c77210c0764dc07a8c25cc8f9049d300df4a", size = 1461850, upload-time = "2025-09-24T12:17:03.19Z" }, + { url = "https://files.pythonhosted.org/packages/86/64/49169ff539d4d7acce2925b0406f5fcf279a137506ec43b4adf27a6de2c7/numexpr-2.13.0-cp310-cp310-win32.whl", hash = "sha256:c2d1e1681b103d497e5ea60ebfdbf92c911807ebe664eb70e5783bfe7fe0c9c4", size = 166084, upload-time = "2025-09-24T12:17:04.94Z" }, + { url = "https://files.pythonhosted.org/packages/6c/7d/9f59ca71ea7914b8dd59f0b82bbef4a27abedaaed04c644bfe3b933604c5/numexpr-2.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:0465213327dc6402f7157405b3d49ab267ea32bded943e3643ab1b4c603dd73c", size = 159237, upload-time = "2025-09-24T12:17:05.996Z" }, + { url = "https://files.pythonhosted.org/packages/07/8c/ff21f96c51fcb400025fe63ae74552a6de93bddd534ab327a21a7a36475b/numexpr-2.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4215568b42c37b8f1821e7058bc44afd475722adebbaf7f41482c94221758c29", size = 162292, upload-time = "2025-09-24T12:17:06.979Z" }, + { url = "https://files.pythonhosted.org/packages/8a/f5/3629ac387d6d8a7df885c2aef26e8dcb62ecfa120983745eaab9e8186d98/numexpr-2.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e6ca00488e3dc367d36f44db291fe2830085599f5d385f9656875494446d1693", size = 151215, upload-time = "2025-09-24T12:17:08.386Z" }, + { url = "https://files.pythonhosted.org/packages/d8/db/21fbfa02334ffbca8a70437a558ba1e21b191eb046c576b8bba00f716bb3/numexpr-2.13.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1e718d6175064a4218b400e4a48d0743a49f43de13dd124572a0e05003e5a15f", size = 449941, upload-time = "2025-09-24T12:17:09.384Z" }, + { url = "https://files.pythonhosted.org/packages/ef/b6/f3c9305b2d9870ca7fe4068a23c05db1664bde3feb8ce156dcd0d46f79a9/numexpr-2.13.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f41d5ca0a241155e67d4ba232d2418350fcced70010ad0a3836fb3b7240daf00", size = 440562, upload-time = "2025-09-24T12:17:10.628Z" }, + { url = "https://files.pythonhosted.org/packages/db/2e/c8d14899b75a6bdcbc46bf49b06acb34f192bc6a9b33099984497f84c34f/numexpr-2.13.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:da78ae6ac87904ec742e6f0f4476f647f5e65ca59d42ab11a9b340ea35f286b5", size = 1414911, upload-time = "2025-09-24T12:17:11.744Z" }, + { url = "https://files.pythonhosted.org/packages/8d/ea/5d6547261c52826b4954cc6021183e28e22ee2890127e4617c86585235c1/numexpr-2.13.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:611a69cb4f178808639bf2c7c06c3d11575554313faeb9375cdfbe1c68c370db", size = 1463483, upload-time = "2025-09-24T12:17:16.095Z" }, + { url = "https://files.pythonhosted.org/packages/a9/3d/54c580dde897c44349dbc3c1a8919046974841da596e319ceebe06fda45b/numexpr-2.13.0-cp311-cp311-win32.whl", hash = "sha256:fb7535c7e5dbbe1b8288a5c9e1c3187c97687bb7da6f8937b1a062d636e17655", size = 166086, upload-time = "2025-09-24T12:17:17.295Z" }, + { url = "https://files.pythonhosted.org/packages/6a/eb/e6a2782958f5ce05c96e5c514247ce5d2e85f4c2db52235b454d2920bc61/numexpr-2.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:55ce79de1085f5cd198904ad4bd8d8e827b331215488a6ec1fddadf6f44ee782", size = 159234, upload-time = "2025-09-24T12:17:18.27Z" }, + { url = "https://files.pythonhosted.org/packages/60/86/1ae249bbe54d4fe22838160df8803ac60c526a7c80df6dc47ed901d23440/numexpr-2.13.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c52c565db28f5185f326fb10f502c74ff8651aa8f7f0c6e18e9622847d3be9e1", size = 161897, upload-time = "2025-09-24T12:17:19.271Z" }, + { url = "https://files.pythonhosted.org/packages/8a/58/ece67627a3f2f37699c0ee2492b2e8f875db70ef63885061da83f04b04b0/numexpr-2.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:beefd3e7277ef1822ddeed5ab6c4f158f10446e8a2e98bed261b65791da81d31", size = 151361, upload-time = "2025-09-24T12:17:20.243Z" }, + { url = "https://files.pythonhosted.org/packages/f0/62/6ca59d476d46b5ab91f9de8bc299a071a259ea4b3f51764ea0b7d59ff5fd/numexpr-2.13.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:19465d90bc0188c2310da5be080aff12d7e3ac470d38889dc8fdedac80bb321d", size = 451297, upload-time = "2025-09-24T12:17:21.504Z" }, + { url = "https://files.pythonhosted.org/packages/17/c8/b517a09563e8f2b18baec72b7a8d8a6807e5e140457524134b606637fc5e/numexpr-2.13.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:52aaea06f1a43e5e89319590cec0912214fddadb6a3cd9116c91adf37cf31d91", size = 442182, upload-time = "2025-09-24T12:17:22.557Z" }, + { url = "https://files.pythonhosted.org/packages/de/f5/c97b6e1a7e4dbce115b580b729bb07e9a5b882aa330b7ad9f561336b22d1/numexpr-2.13.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a1541906a2c1e51e4f2404f966ca1d654ce5a84b2c2eaf471f3ce733f1900310", size = 1416391, upload-time = "2025-09-24T12:17:23.744Z" }, + { url = "https://files.pythonhosted.org/packages/40/b0/49c7ac6e3e63c4a8fa0942a5bfa7766ac9a63bdf4250f56e483482a3ae89/numexpr-2.13.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:afb519bd173f341703d0beadcefac35237d4bea66e61323acbdfc7fd090f4b88", size = 1465049, upload-time = "2025-09-24T12:17:25.029Z" }, + { url = "https://files.pythonhosted.org/packages/fd/28/748a43c48838ddf0a7008fb88ddad0d9a387d5c9a2f67ec646002824961f/numexpr-2.13.0-cp312-cp312-win32.whl", hash = "sha256:9784f9cac598621aa1fa6ff21f06b8675c1cbbe85cff2e0a696a046ba525196b", size = 166252, upload-time = "2025-09-24T12:17:26.272Z" }, + { url = "https://files.pythonhosted.org/packages/f9/8b/e9caea2198951c7ebd9c69dfbcffff740254f34c137faa0115265fc8fe24/numexpr-2.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:c1b4a7b24811950d7c6f5506de665ebc94673f0042e6e7d3256eb1bb5a654233", size = 159338, upload-time = "2025-09-24T12:17:27.311Z" }, + { url = "https://files.pythonhosted.org/packages/78/b3/642ddcd4c497a988d419c87f6e19c852fa76237530d6fa3531dae5be57d7/numexpr-2.13.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:071e7dd7d3722c58736fb8713827582b0eb6e752dc54b7db7ad81375c5717409", size = 161905, upload-time = "2025-09-24T12:17:28.577Z" }, + { url = "https://files.pythonhosted.org/packages/b8/8e/ade15c0aad2057923b115a76ba5a96a8b5058daa5056962ec0b20efaa2ab/numexpr-2.13.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c0c9d82c1cc8a4fbaf98ca7184997d3d4a96d8f5950a7cac7b63c7c88f0d7364", size = 151359, upload-time = "2025-09-24T12:17:29.608Z" }, + { url = "https://files.pythonhosted.org/packages/1f/26/8e315939b2c27880ad87dc2db66bad3aef3789448b099d06496e492e0b70/numexpr-2.13.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:22ee0c6bd4b9f591793a1fd8b823e693851ace86e4fddf4ab51b71cbae59a0fc", size = 454648, upload-time = "2025-09-24T12:17:30.604Z" }, + { url = "https://files.pythonhosted.org/packages/cf/be/c6bf7d74fb716cd8d25edee004e8f06918d4cb0f1471a10a2085c741a55d/numexpr-2.13.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:450206905604486c3841b1041e21a8126cadc34da73456aa3e10bf10c6549c6a", size = 445196, upload-time = "2025-09-24T12:17:32.723Z" }, + { url = "https://files.pythonhosted.org/packages/62/42/f947150b9b6281c656cdfef375534bcda0b79e0e799c2dfa6b436e68b5be/numexpr-2.13.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1d485687f016ce2385817a584fe5f9e007817dbe12ce6dcdeaefae91e8abc78e", size = 1416376, upload-time = "2025-09-24T12:17:34.426Z" }, + { url = "https://files.pythonhosted.org/packages/c5/9d/8824d24b500c52fef2143bfb5a78ede273dc9418ad4cb12a976584b47beb/numexpr-2.13.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a21ac5bac1752ffb22e71cf7b65087ccc4fd211a06f4a358ce78c4652d44ebc0", size = 1464991, upload-time = "2025-09-24T12:17:36.066Z" }, + { url = "https://files.pythonhosted.org/packages/8d/43/32af1d8c1c7b8bfe3d9067c7610e8bffddea2f352adc24190b8be214e7ab/numexpr-2.13.0-cp313-cp313-win32.whl", hash = "sha256:8ce807751cbaa0aa6eb2a82388096eee350e8d1b8f7ee8e0452be762bda6e929", size = 166254, upload-time = "2025-09-24T12:17:37.631Z" }, + { url = "https://files.pythonhosted.org/packages/6b/88/bcf6ada80b557e19ebf6ce154a62afcb0f594ce58b9393b4fb5b8c620529/numexpr-2.13.0-cp313-cp313-win_amd64.whl", hash = "sha256:9858c7cc4436c03bd2d305a6b7f0bb3db2782e18c4428068a9e0427e20f5e111", size = 159343, upload-time = "2025-09-24T12:17:38.812Z" }, + { url = "https://files.pythonhosted.org/packages/63/dc/21fb87fa099def2cab8d27935ad2f0f715f9877d73be34a76fd4e8a9dfa3/numexpr-2.13.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:c00310a9b06f18ddd9b02993044a6b8cae354d0c416828bd620f48e428274e1f", size = 162668, upload-time = "2025-09-24T12:17:40.109Z" }, + { url = "https://files.pythonhosted.org/packages/8c/66/5201b25039302291123fdefdc9aa2d88ce5c0d16ede979d6a8745e6c777c/numexpr-2.13.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:d7e1ff76e7452d58e780435bdb8f1940c0c350c9b49cb2b7cdb0b0cda00c9701", size = 152036, upload-time = "2025-09-24T12:17:41.345Z" }, + { url = "https://files.pythonhosted.org/packages/86/92/c6b0257d014bbf8c81237ebff3c8ca3fc7186cfd613f21a28b725e8e608c/numexpr-2.13.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bd9c3ec61407abcd42c36a59bd9e107ec1f64de18072ffca5d6f3f6897b9e4ad", size = 464918, upload-time = "2025-09-24T12:17:42.75Z" }, + { url = "https://files.pythonhosted.org/packages/3c/d9/34afe53caab8040a2a280d1348da88b0277cc555f45b17a60a5eca4624d6/numexpr-2.13.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7e638c40fb68b5e6c396d719b769b75c05d49aa92aa81426d5e9e3e2be886819", size = 455538, upload-time = "2025-09-24T12:17:43.876Z" }, + { url = "https://files.pythonhosted.org/packages/72/ee/1fbf99f1b492ae9f500d0cde20152b877f796bab4491be495020e4aef5eb/numexpr-2.13.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d5d2b40d8de3579f5409707dc30dfaa49f3dcbea41b3c1ccbc902e0d4012a792", size = 1425090, upload-time = "2025-09-24T12:17:45.049Z" }, + { url = "https://files.pythonhosted.org/packages/9e/d5/1bb752f3cb8e2cd6610dec637bb20877082765de23a5d805d52d4a279a42/numexpr-2.13.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8bbf064c3886eda9b2ef2d9090093bd92a45a4b9eaa7ed704952a84bb212de49", size = 1473044, upload-time = "2025-09-24T12:17:46.449Z" }, + { url = "https://files.pythonhosted.org/packages/57/db/408043accb22a7585a4c5353234b547c2f38125da8719516cce7679a465f/numexpr-2.13.0-cp313-cp313t-win32.whl", hash = "sha256:7ba92383aeac47a3c8f26d214b6ed11bd10e70b74efdd53e7defe9d1a67ca591", size = 166897, upload-time = "2025-09-24T12:17:47.779Z" }, + { url = "https://files.pythonhosted.org/packages/9a/6f/6483c3400d20a8522480480561b417dbe7b0856ba771b2efa8361f89c44b/numexpr-2.13.0-cp313-cp313t-win_amd64.whl", hash = "sha256:435336e014c81866da481e2a03417e30b4f3159260c1d2a6de87191ba2fb77d8", size = 160270, upload-time = "2025-09-24T12:17:48.769Z" }, + { url = "https://files.pythonhosted.org/packages/de/45/1e952d230a034584f563416cfda5fb28a496147c2108fe180f711542ea1c/numexpr-2.13.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fec119ba261b110beeac49b905ce0cde233a5d14ef27bc26b98f2a578c30c35b", size = 161949, upload-time = "2025-09-24T12:17:49.761Z" }, + { url = "https://files.pythonhosted.org/packages/04/b2/6e42abd6edb9e3260e2e09485adc9edd59267fbacd94f20621ea43727595/numexpr-2.13.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c1aa845393b812f104e821ba7837c2a205a143ec02b6b384434acb2dd57682f3", size = 151412, upload-time = "2025-09-24T12:17:50.704Z" }, + { url = "https://files.pythonhosted.org/packages/5c/30/929ae24625bc8af1bf63542b3525c256b27ec8aa56a08e73163841fe07e6/numexpr-2.13.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:801a25e1d1832dc6f4134ea89d47edae3298b9c994dac25c5a7f290ebac5e4a5", size = 454817, upload-time = "2025-09-24T12:17:51.712Z" }, + { url = "https://files.pythonhosted.org/packages/6a/01/55c51aa4aa7a9f69a349d23d6db0b1edc96506f39e6d4ab2ad7dd1b2a689/numexpr-2.13.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3c95d1fbd7e45ef87f9d7f7a2d714dcae01fa65317bf50e63cf4c3f24f0d6c20", size = 445128, upload-time = "2025-09-24T12:17:52.882Z" }, + { url = "https://files.pythonhosted.org/packages/fe/fc/c49f76632c0fe6c9ae6b56ccf3ee3a43194c7ae0e9b7b2a2b9a62e904679/numexpr-2.13.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:fa462b876a6b678b788a28a3fa2841c23074f26bd3659af59244c3138fa0087b", size = 1416567, upload-time = "2025-09-24T12:17:54.076Z" }, + { url = "https://files.pythonhosted.org/packages/a3/81/8dc19e400d0e347997f83a820e33637d7378f2513414386012abd65c91a0/numexpr-2.13.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:c5331e75881a0be7ec3097f61a0ad90ded288e8916b90545f1aa67f293079521", size = 1465018, upload-time = "2025-09-24T12:17:55.255Z" }, + { url = "https://files.pythonhosted.org/packages/39/5d/5b1ae53bb1d22f87fafb69b16f77b2cfe76c5f85127bc3b8981fd7c866b8/numexpr-2.13.0-cp314-cp314-win32.whl", hash = "sha256:89a288c4dd25c12394685b0b105e85a4beddb632b3ef52e3e383f25d46d7d86f", size = 168096, upload-time = "2025-09-24T12:17:56.441Z" }, + { url = "https://files.pythonhosted.org/packages/93/2f/07b5a3f0bf3ffa3314210abac1069560344e8cde0028c385a49e08a27f51/numexpr-2.13.0-cp314-cp314-win_amd64.whl", hash = "sha256:ae6068310da1532072bccb6c87870d0f1b584bdae3de528d577e67319b78f56c", size = 161712, upload-time = "2025-09-24T12:17:57.779Z" }, + { url = "https://files.pythonhosted.org/packages/49/86/753a9634b22c7202d02d0c5e33792bc7f8daac1865de8239383732e96f5d/numexpr-2.13.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:08173e867548e0ad251d9024c0539cb121b2f2b3a09205014cdc11c99bad4517", size = 162666, upload-time = "2025-09-24T12:17:59.169Z" }, + { url = "https://files.pythonhosted.org/packages/90/68/f4f9fbf80fca5bcf656f353b899732a56fcf192e32483bbada201bac48c5/numexpr-2.13.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ffd42f1631d009f0b405e3fe195f2b2551d1ac293d3147bfd4d8835c1ee91a1e", size = 152028, upload-time = "2025-09-24T12:18:00.156Z" }, + { url = "https://files.pythonhosted.org/packages/a9/d3/1df5b69265162448af4e0688c55d4483e856ae2e98d338690a707900f718/numexpr-2.13.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b6160eda53c48e0aa1b3ee02f27dfbe375f28a21d1ace1e151ec5c09011bfa4a", size = 465112, upload-time = "2025-09-24T12:18:01.184Z" }, + { url = "https://files.pythonhosted.org/packages/75/ee/de8cac0ff21c795106d0ac84418035a611f5a4acd0318e83b8a0b9815271/numexpr-2.13.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ce3dc0f3f3dcf05c372a624c0e048f159849b0689e4d91a655ab4f2c5ba5a7f6", size = 455809, upload-time = "2025-09-24T12:18:02.396Z" }, + { url = "https://files.pythonhosted.org/packages/04/5b/6e812264d08f440a429e6dd0d0e8fd3709d06c5089c4ead29f14a46ff4d3/numexpr-2.13.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:d017db23f4be18e00d96053f16af93ff77f8b1027d47a2cee78a980393007bc0", size = 1425342, upload-time = "2025-09-24T12:18:03.707Z" }, + { url = "https://files.pythonhosted.org/packages/fd/75/73a7b7ed28550eada9b1aacded71a6941ad28b4026c75de93f87353b7d49/numexpr-2.13.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:15e51cc76ea2e7f2b3bfb08d2d01bc84f48ba6b2e2b27a9ce645edb06293b91b", size = 1473175, upload-time = "2025-09-24T12:18:04.977Z" }, + { url = "https://files.pythonhosted.org/packages/b8/67/914ab2261130ac0f210a26187d7c0bd9c0c4e3be5ba56f889aa7eec59c3f/numexpr-2.13.0-cp314-cp314t-win32.whl", hash = "sha256:3ae41249afc233e12f186149da1d80ac1ffcfb0ee65ebbd590bdc81f16a5fa77", size = 168768, upload-time = "2025-09-24T12:18:06.215Z" }, + { url = "https://files.pythonhosted.org/packages/29/62/dab5c5e41eef490b3ee759ee5aa6c36b1af4bb43733515bea32c87dd9deb/numexpr-2.13.0-cp314-cp314t-win_amd64.whl", hash = "sha256:43d0fe73398e4d3b9ff548d6bda3d37b3569539b1d8cabe3023727b690b4f118", size = 162765, upload-time = "2025-09-24T12:18:07.338Z" }, ] [[package]] @@ -2576,16 +3125,15 @@ wheels = [ [[package]] name = "numpydoc" -version = "1.8.0" +version = "1.9.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "sphinx" }, - { name = "tabulate" }, { name = "tomli", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ee/59/5d1d1afb0b9598e21e7cda477935188e39ef845bcf59cb65ac20845bfd45/numpydoc-1.8.0.tar.gz", hash = "sha256:022390ab7464a44f8737f79f8b31ce1d3cfa4b4af79ccaa1aac5e8368db587fb", size = 90445, upload-time = "2024-08-09T15:52:38.679Z" } +sdist = { url = "https://files.pythonhosted.org/packages/2f/19/7721093e25804cc82c7c1cdab0cce6b9343451828fc2ce249cee10646db5/numpydoc-1.9.0.tar.gz", hash = "sha256:5fec64908fe041acc4b3afc2a32c49aab1540cf581876f5563d68bb129e27c5b", size = 91451, upload-time = "2025-06-24T12:22:55.283Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6c/45/56d99ba9366476cd8548527667f01869279cedb9e66b28eb4dfb27701679/numpydoc-1.8.0-py3-none-any.whl", hash = "sha256:72024c7fd5e17375dec3608a27c03303e8ad00c81292667955c6fea7a3ccf541", size = 64003, upload-time = "2024-08-09T15:52:37.276Z" }, + { url = "https://files.pythonhosted.org/packages/26/62/5783d8924fca72529defb2c7dbe2070d49224d2dba03a85b20b37adb24d8/numpydoc-1.9.0-py3-none-any.whl", hash = "sha256:8a2983b2d62bfd0a8c470c7caa25e7e0c3d163875cdec12a8a1034020a9d1135", size = 64871, upload-time = "2025-06-24T12:22:53.701Z" }, ] [[package]] @@ -2625,7 +3173,8 @@ name = "pandas" version = "2.1.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.12'", + "python_full_version >= '3.14'", + "python_full_version >= '3.12' and python_full_version < '3.14'", ] dependencies = [ { name = "numpy", marker = "python_full_version >= '3.12'" }, @@ -2651,7 +3200,7 @@ wheels = [ [[package]] name = "pandas" -version = "2.3.0" +version = "2.3.2" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version == '3.11.*'", @@ -2663,42 +3212,42 @@ dependencies = [ { name = "pytz", marker = "python_full_version < '3.12'" }, { name = "tzdata", marker = "python_full_version < '3.12'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/72/51/48f713c4c728d7c55ef7444ba5ea027c26998d96d1a40953b346438602fc/pandas-2.3.0.tar.gz", hash = "sha256:34600ab34ebf1131a7613a260a61dbe8b62c188ec0ea4c296da7c9a06b004133", size = 4484490, upload-time = "2025-06-05T03:27:54.133Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e2/2d/df6b98c736ba51b8eaa71229e8fcd91233a831ec00ab520e1e23090cc072/pandas-2.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:625466edd01d43b75b1883a64d859168e4556261a5035b32f9d743b67ef44634", size = 11527531, upload-time = "2025-06-05T03:25:48.648Z" }, - { url = "https://files.pythonhosted.org/packages/77/1c/3f8c331d223f86ba1d0ed7d3ed7fcf1501c6f250882489cc820d2567ddbf/pandas-2.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a6872d695c896f00df46b71648eea332279ef4077a409e2fe94220208b6bb675", size = 10774764, upload-time = "2025-06-05T03:25:53.228Z" }, - { url = "https://files.pythonhosted.org/packages/1b/45/d2599400fad7fe06b849bd40b52c65684bc88fbe5f0a474d0513d057a377/pandas-2.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4dd97c19bd06bc557ad787a15b6489d2614ddaab5d104a0310eb314c724b2d2", size = 11711963, upload-time = "2025-06-05T03:25:56.855Z" }, - { url = "https://files.pythonhosted.org/packages/66/f8/5508bc45e994e698dbc93607ee6b9b6eb67df978dc10ee2b09df80103d9e/pandas-2.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:034abd6f3db8b9880aaee98f4f5d4dbec7c4829938463ec046517220b2f8574e", size = 12349446, upload-time = "2025-06-05T03:26:01.292Z" }, - { url = "https://files.pythonhosted.org/packages/f7/fc/17851e1b1ea0c8456ba90a2f514c35134dd56d981cf30ccdc501a0adeac4/pandas-2.3.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:23c2b2dc5213810208ca0b80b8666670eb4660bbfd9d45f58592cc4ddcfd62e1", size = 12920002, upload-time = "2025-06-06T00:00:07.925Z" }, - { url = "https://files.pythonhosted.org/packages/a1/9b/8743be105989c81fa33f8e2a4e9822ac0ad4aaf812c00fee6bb09fc814f9/pandas-2.3.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:39ff73ec07be5e90330cc6ff5705c651ace83374189dcdcb46e6ff54b4a72cd6", size = 13651218, upload-time = "2025-06-05T03:26:09.731Z" }, - { url = "https://files.pythonhosted.org/packages/26/fa/8eeb2353f6d40974a6a9fd4081ad1700e2386cf4264a8f28542fd10b3e38/pandas-2.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:40cecc4ea5abd2921682b57532baea5588cc5f80f0231c624056b146887274d2", size = 11082485, upload-time = "2025-06-05T03:26:17.572Z" }, - { url = "https://files.pythonhosted.org/packages/96/1e/ba313812a699fe37bf62e6194265a4621be11833f5fce46d9eae22acb5d7/pandas-2.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8adff9f138fc614347ff33812046787f7d43b3cef7c0f0171b3340cae333f6ca", size = 11551836, upload-time = "2025-06-05T03:26:22.784Z" }, - { url = "https://files.pythonhosted.org/packages/1b/cc/0af9c07f8d714ea563b12383a7e5bde9479cf32413ee2f346a9c5a801f22/pandas-2.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e5f08eb9a445d07720776df6e641975665c9ea12c9d8a331e0f6890f2dcd76ef", size = 10807977, upload-time = "2025-06-05T16:50:11.109Z" }, - { url = "https://files.pythonhosted.org/packages/ee/3e/8c0fb7e2cf4a55198466ced1ca6a9054ae3b7e7630df7757031df10001fd/pandas-2.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fa35c266c8cd1a67d75971a1912b185b492d257092bdd2709bbdebe574ed228d", size = 11788230, upload-time = "2025-06-05T03:26:27.417Z" }, - { url = "https://files.pythonhosted.org/packages/14/22/b493ec614582307faf3f94989be0f7f0a71932ed6f56c9a80c0bb4a3b51e/pandas-2.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14a0cc77b0f089d2d2ffe3007db58f170dae9b9f54e569b299db871a3ab5bf46", size = 12370423, upload-time = "2025-06-05T03:26:34.142Z" }, - { url = "https://files.pythonhosted.org/packages/9f/74/b012addb34cda5ce855218a37b258c4e056a0b9b334d116e518d72638737/pandas-2.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c06f6f144ad0a1bf84699aeea7eff6068ca5c63ceb404798198af7eb86082e33", size = 12990594, upload-time = "2025-06-06T00:00:13.934Z" }, - { url = "https://files.pythonhosted.org/packages/95/81/b310e60d033ab64b08e66c635b94076488f0b6ce6a674379dd5b224fc51c/pandas-2.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ed16339bc354a73e0a609df36d256672c7d296f3f767ac07257801aa064ff73c", size = 13745952, upload-time = "2025-06-05T03:26:39.475Z" }, - { url = "https://files.pythonhosted.org/packages/25/ac/f6ee5250a8881b55bd3aecde9b8cfddea2f2b43e3588bca68a4e9aaf46c8/pandas-2.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:fa07e138b3f6c04addfeaf56cc7fdb96c3b68a3fe5e5401251f231fce40a0d7a", size = 11094534, upload-time = "2025-06-05T03:26:43.23Z" }, - { url = "https://files.pythonhosted.org/packages/94/46/24192607058dd607dbfacdd060a2370f6afb19c2ccb617406469b9aeb8e7/pandas-2.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2eb4728a18dcd2908c7fccf74a982e241b467d178724545a48d0caf534b38ebf", size = 11573865, upload-time = "2025-06-05T03:26:46.774Z" }, - { url = "https://files.pythonhosted.org/packages/9f/cc/ae8ea3b800757a70c9fdccc68b67dc0280a6e814efcf74e4211fd5dea1ca/pandas-2.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b9d8c3187be7479ea5c3d30c32a5d73d62a621166675063b2edd21bc47614027", size = 10702154, upload-time = "2025-06-05T16:50:14.439Z" }, - { url = "https://files.pythonhosted.org/packages/d8/ba/a7883d7aab3d24c6540a2768f679e7414582cc389876d469b40ec749d78b/pandas-2.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ff730713d4c4f2f1c860e36c005c7cefc1c7c80c21c0688fd605aa43c9fcf09", size = 11262180, upload-time = "2025-06-05T16:50:17.453Z" }, - { url = "https://files.pythonhosted.org/packages/01/a5/931fc3ad333d9d87b10107d948d757d67ebcfc33b1988d5faccc39c6845c/pandas-2.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba24af48643b12ffe49b27065d3babd52702d95ab70f50e1b34f71ca703e2c0d", size = 11991493, upload-time = "2025-06-05T03:26:51.813Z" }, - { url = "https://files.pythonhosted.org/packages/d7/bf/0213986830a92d44d55153c1d69b509431a972eb73f204242988c4e66e86/pandas-2.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:404d681c698e3c8a40a61d0cd9412cc7364ab9a9cc6e144ae2992e11a2e77a20", size = 12470733, upload-time = "2025-06-06T00:00:18.651Z" }, - { url = "https://files.pythonhosted.org/packages/a4/0e/21eb48a3a34a7d4bac982afc2c4eb5ab09f2d988bdf29d92ba9ae8e90a79/pandas-2.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6021910b086b3ca756755e86ddc64e0ddafd5e58e076c72cb1585162e5ad259b", size = 13212406, upload-time = "2025-06-05T03:26:55.992Z" }, - { url = "https://files.pythonhosted.org/packages/1f/d9/74017c4eec7a28892d8d6e31ae9de3baef71f5a5286e74e6b7aad7f8c837/pandas-2.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:094e271a15b579650ebf4c5155c05dcd2a14fd4fdd72cf4854b2f7ad31ea30be", size = 10976199, upload-time = "2025-06-05T03:26:59.594Z" }, - { url = "https://files.pythonhosted.org/packages/d3/57/5cb75a56a4842bbd0511c3d1c79186d8315b82dac802118322b2de1194fe/pandas-2.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2c7e2fc25f89a49a11599ec1e76821322439d90820108309bf42130d2f36c983", size = 11518913, upload-time = "2025-06-05T03:27:02.757Z" }, - { url = "https://files.pythonhosted.org/packages/05/01/0c8785610e465e4948a01a059562176e4c8088aa257e2e074db868f86d4e/pandas-2.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c6da97aeb6a6d233fb6b17986234cc723b396b50a3c6804776351994f2a658fd", size = 10655249, upload-time = "2025-06-05T16:50:20.17Z" }, - { url = "https://files.pythonhosted.org/packages/e8/6a/47fd7517cd8abe72a58706aab2b99e9438360d36dcdb052cf917b7bf3bdc/pandas-2.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb32dc743b52467d488e7a7c8039b821da2826a9ba4f85b89ea95274f863280f", size = 11328359, upload-time = "2025-06-05T03:27:06.431Z" }, - { url = "https://files.pythonhosted.org/packages/2a/b3/463bfe819ed60fb7e7ddffb4ae2ee04b887b3444feee6c19437b8f834837/pandas-2.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:213cd63c43263dbb522c1f8a7c9d072e25900f6975596f883f4bebd77295d4f3", size = 12024789, upload-time = "2025-06-05T03:27:09.875Z" }, - { url = "https://files.pythonhosted.org/packages/04/0c/e0704ccdb0ac40aeb3434d1c641c43d05f75c92e67525df39575ace35468/pandas-2.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1d2b33e68d0ce64e26a4acc2e72d747292084f4e8db4c847c6f5f6cbe56ed6d8", size = 12480734, upload-time = "2025-06-06T00:00:22.246Z" }, - { url = "https://files.pythonhosted.org/packages/e9/df/815d6583967001153bb27f5cf075653d69d51ad887ebbf4cfe1173a1ac58/pandas-2.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:430a63bae10b5086995db1b02694996336e5a8ac9a96b4200572b413dfdfccb9", size = 13223381, upload-time = "2025-06-05T03:27:15.641Z" }, - { url = "https://files.pythonhosted.org/packages/79/88/ca5973ed07b7f484c493e941dbff990861ca55291ff7ac67c815ce347395/pandas-2.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:4930255e28ff5545e2ca404637bcc56f031893142773b3468dc021c6c32a1390", size = 10970135, upload-time = "2025-06-05T03:27:24.131Z" }, - { url = "https://files.pythonhosted.org/packages/24/fb/0994c14d1f7909ce83f0b1fb27958135513c4f3f2528bde216180aa73bfc/pandas-2.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:f925f1ef673b4bd0271b1809b72b3270384f2b7d9d14a189b12b7fc02574d575", size = 12141356, upload-time = "2025-06-05T03:27:34.547Z" }, - { url = "https://files.pythonhosted.org/packages/9d/a2/9b903e5962134497ac4f8a96f862ee3081cb2506f69f8e4778ce3d9c9d82/pandas-2.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e78ad363ddb873a631e92a3c063ade1ecfb34cae71e9a2be6ad100f875ac1042", size = 11474674, upload-time = "2025-06-05T03:27:39.448Z" }, - { url = "https://files.pythonhosted.org/packages/81/3a/3806d041bce032f8de44380f866059437fb79e36d6b22c82c187e65f765b/pandas-2.3.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:951805d146922aed8357e4cc5671b8b0b9be1027f0619cea132a9f3f65f2f09c", size = 11439876, upload-time = "2025-06-05T03:27:43.652Z" }, - { url = "https://files.pythonhosted.org/packages/15/aa/3fc3181d12b95da71f5c2537c3e3b3af6ab3a8c392ab41ebb766e0929bc6/pandas-2.3.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a881bc1309f3fce34696d07b00f13335c41f5f5a8770a33b09ebe23261cfc67", size = 11966182, upload-time = "2025-06-05T03:27:47.652Z" }, - { url = "https://files.pythonhosted.org/packages/37/e7/e12f2d9b0a2c4a2cc86e2aabff7ccfd24f03e597d770abfa2acd313ee46b/pandas-2.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e1991bbb96f4050b09b5f811253c4f3cf05ee89a589379aa36cd623f21a31d6f", size = 12547686, upload-time = "2025-06-06T00:00:26.142Z" }, - { url = "https://files.pythonhosted.org/packages/39/c2/646d2e93e0af70f4e5359d870a63584dacbc324b54d73e6b3267920ff117/pandas-2.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:bb3be958022198531eb7ec2008cfc78c5b1eed51af8600c6c5d9160d89d8d249", size = 13231847, upload-time = "2025-06-05T03:27:51.465Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/79/8e/0e90233ac205ad182bd6b422532695d2b9414944a280488105d598c70023/pandas-2.3.2.tar.gz", hash = "sha256:ab7b58f8f82706890924ccdfb5f48002b83d2b5a3845976a9fb705d36c34dcdb", size = 4488684, upload-time = "2025-08-21T10:28:29.257Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2e/16/a8eeb70aad84ccbf14076793f90e0031eded63c1899aeae9fdfbf37881f4/pandas-2.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:52bc29a946304c360561974c6542d1dd628ddafa69134a7131fdfd6a5d7a1a35", size = 11539648, upload-time = "2025-08-21T10:26:36.236Z" }, + { url = "https://files.pythonhosted.org/packages/47/f1/c5bdaea13bf3708554d93e948b7ea74121ce6e0d59537ca4c4f77731072b/pandas-2.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:220cc5c35ffaa764dd5bb17cf42df283b5cb7fdf49e10a7b053a06c9cb48ee2b", size = 10786923, upload-time = "2025-08-21T10:26:40.518Z" }, + { url = "https://files.pythonhosted.org/packages/bb/10/811fa01476d29ffed692e735825516ad0e56d925961819e6126b4ba32147/pandas-2.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42c05e15111221384019897df20c6fe893b2f697d03c811ee67ec9e0bb5a3424", size = 11726241, upload-time = "2025-08-21T10:26:43.175Z" }, + { url = "https://files.pythonhosted.org/packages/c4/6a/40b043b06e08df1ea1b6d20f0e0c2f2c4ec8c4f07d1c92948273d943a50b/pandas-2.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc03acc273c5515ab69f898df99d9d4f12c4d70dbfc24c3acc6203751d0804cf", size = 12349533, upload-time = "2025-08-21T10:26:46.611Z" }, + { url = "https://files.pythonhosted.org/packages/e2/ea/2e081a2302e41a9bca7056659fdd2b85ef94923723e41665b42d65afd347/pandas-2.3.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d25c20a03e8870f6339bcf67281b946bd20b86f1a544ebbebb87e66a8d642cba", size = 13202407, upload-time = "2025-08-21T10:26:49.068Z" }, + { url = "https://files.pythonhosted.org/packages/f4/12/7ff9f6a79e2ee8869dcf70741ef998b97ea20050fe25f83dc759764c1e32/pandas-2.3.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:21bb612d148bb5860b7eb2c10faacf1a810799245afd342cf297d7551513fbb6", size = 13837212, upload-time = "2025-08-21T10:26:51.832Z" }, + { url = "https://files.pythonhosted.org/packages/d8/df/5ab92fcd76455a632b3db34a746e1074d432c0cdbbd28d7cd1daba46a75d/pandas-2.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:b62d586eb25cb8cb70a5746a378fc3194cb7f11ea77170d59f889f5dfe3cec7a", size = 11338099, upload-time = "2025-08-21T10:26:54.382Z" }, + { url = "https://files.pythonhosted.org/packages/7a/59/f3e010879f118c2d400902d2d871c2226cef29b08c09fb8dc41111730400/pandas-2.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1333e9c299adcbb68ee89a9bb568fc3f20f9cbb419f1dd5225071e6cddb2a743", size = 11563308, upload-time = "2025-08-21T10:26:56.656Z" }, + { url = "https://files.pythonhosted.org/packages/38/18/48f10f1cc5c397af59571d638d211f494dba481f449c19adbd282aa8f4ca/pandas-2.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:76972bcbd7de8e91ad5f0ca884a9f2c477a2125354af624e022c49e5bd0dfff4", size = 10820319, upload-time = "2025-08-21T10:26:59.162Z" }, + { url = "https://files.pythonhosted.org/packages/95/3b/1e9b69632898b048e223834cd9702052bcf06b15e1ae716eda3196fb972e/pandas-2.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b98bdd7c456a05eef7cd21fd6b29e3ca243591fe531c62be94a2cc987efb5ac2", size = 11790097, upload-time = "2025-08-21T10:27:02.204Z" }, + { url = "https://files.pythonhosted.org/packages/8b/ef/0e2ffb30b1f7fbc9a588bd01e3c14a0d96854d09a887e15e30cc19961227/pandas-2.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d81573b3f7db40d020983f78721e9bfc425f411e616ef019a10ebf597aedb2e", size = 12397958, upload-time = "2025-08-21T10:27:05.409Z" }, + { url = "https://files.pythonhosted.org/packages/23/82/e6b85f0d92e9afb0e7f705a51d1399b79c7380c19687bfbf3d2837743249/pandas-2.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e190b738675a73b581736cc8ec71ae113d6c3768d0bd18bffa5b9a0927b0b6ea", size = 13225600, upload-time = "2025-08-21T10:27:07.791Z" }, + { url = "https://files.pythonhosted.org/packages/e8/f1/f682015893d9ed51611948bd83683670842286a8edd4f68c2c1c3b231eef/pandas-2.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c253828cb08f47488d60f43c5fc95114c771bbfff085da54bfc79cb4f9e3a372", size = 13879433, upload-time = "2025-08-21T10:27:10.347Z" }, + { url = "https://files.pythonhosted.org/packages/a7/e7/ae86261695b6c8a36d6a4c8d5f9b9ede8248510d689a2f379a18354b37d7/pandas-2.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:9467697b8083f9667b212633ad6aa4ab32436dcbaf4cd57325debb0ddef2012f", size = 11336557, upload-time = "2025-08-21T10:27:12.983Z" }, + { url = "https://files.pythonhosted.org/packages/ec/db/614c20fb7a85a14828edd23f1c02db58a30abf3ce76f38806155d160313c/pandas-2.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fbb977f802156e7a3f829e9d1d5398f6192375a3e2d1a9ee0803e35fe70a2b9", size = 11587652, upload-time = "2025-08-21T10:27:15.888Z" }, + { url = "https://files.pythonhosted.org/packages/99/b0/756e52f6582cade5e746f19bad0517ff27ba9c73404607c0306585c201b3/pandas-2.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1b9b52693123dd234b7c985c68b709b0b009f4521000d0525f2b95c22f15944b", size = 10717686, upload-time = "2025-08-21T10:27:18.486Z" }, + { url = "https://files.pythonhosted.org/packages/37/4c/dd5ccc1e357abfeee8353123282de17997f90ff67855f86154e5a13b81e5/pandas-2.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bd281310d4f412733f319a5bc552f86d62cddc5f51d2e392c8787335c994175", size = 11278722, upload-time = "2025-08-21T10:27:21.149Z" }, + { url = "https://files.pythonhosted.org/packages/d3/a4/f7edcfa47e0a88cda0be8b068a5bae710bf264f867edfdf7b71584ace362/pandas-2.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96d31a6b4354e3b9b8a2c848af75d31da390657e3ac6f30c05c82068b9ed79b9", size = 11987803, upload-time = "2025-08-21T10:27:23.767Z" }, + { url = "https://files.pythonhosted.org/packages/f6/61/1bce4129f93ab66f1c68b7ed1c12bac6a70b1b56c5dab359c6bbcd480b52/pandas-2.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:df4df0b9d02bb873a106971bb85d448378ef14b86ba96f035f50bbd3688456b4", size = 12766345, upload-time = "2025-08-21T10:27:26.6Z" }, + { url = "https://files.pythonhosted.org/packages/8e/46/80d53de70fee835531da3a1dae827a1e76e77a43ad22a8cd0f8142b61587/pandas-2.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:213a5adf93d020b74327cb2c1b842884dbdd37f895f42dcc2f09d451d949f811", size = 13439314, upload-time = "2025-08-21T10:27:29.213Z" }, + { url = "https://files.pythonhosted.org/packages/28/30/8114832daff7489f179971dbc1d854109b7f4365a546e3ea75b6516cea95/pandas-2.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:8c13b81a9347eb8c7548f53fd9a4f08d4dfe996836543f805c987bafa03317ae", size = 10983326, upload-time = "2025-08-21T10:27:31.901Z" }, + { url = "https://files.pythonhosted.org/packages/27/64/a2f7bf678af502e16b472527735d168b22b7824e45a4d7e96a4fbb634b59/pandas-2.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0c6ecbac99a354a051ef21c5307601093cb9e0f4b1855984a084bfec9302699e", size = 11531061, upload-time = "2025-08-21T10:27:34.647Z" }, + { url = "https://files.pythonhosted.org/packages/54/4c/c3d21b2b7769ef2f4c2b9299fcadd601efa6729f1357a8dbce8dd949ed70/pandas-2.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c6f048aa0fd080d6a06cc7e7537c09b53be6642d330ac6f54a600c3ace857ee9", size = 10668666, upload-time = "2025-08-21T10:27:37.203Z" }, + { url = "https://files.pythonhosted.org/packages/50/e2/f775ba76ecfb3424d7f5862620841cf0edb592e9abd2d2a5387d305fe7a8/pandas-2.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0064187b80a5be6f2f9c9d6bdde29372468751dfa89f4211a3c5871854cfbf7a", size = 11332835, upload-time = "2025-08-21T10:27:40.188Z" }, + { url = "https://files.pythonhosted.org/packages/8f/52/0634adaace9be2d8cac9ef78f05c47f3a675882e068438b9d7ec7ef0c13f/pandas-2.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ac8c320bded4718b298281339c1a50fb00a6ba78cb2a63521c39bec95b0209b", size = 12057211, upload-time = "2025-08-21T10:27:43.117Z" }, + { url = "https://files.pythonhosted.org/packages/0b/9d/2df913f14b2deb9c748975fdb2491da1a78773debb25abbc7cbc67c6b549/pandas-2.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:114c2fe4f4328cf98ce5716d1532f3ab79c5919f95a9cfee81d9140064a2e4d6", size = 12749277, upload-time = "2025-08-21T10:27:45.474Z" }, + { url = "https://files.pythonhosted.org/packages/87/af/da1a2417026bd14d98c236dba88e39837182459d29dcfcea510b2ac9e8a1/pandas-2.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:48fa91c4dfb3b2b9bfdb5c24cd3567575f4e13f9636810462ffed8925352be5a", size = 13415256, upload-time = "2025-08-21T10:27:49.885Z" }, + { url = "https://files.pythonhosted.org/packages/22/3c/f2af1ce8840ef648584a6156489636b5692c162771918aa95707c165ad2b/pandas-2.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:12d039facec710f7ba305786837d0225a3444af7bbd9c15c32ca2d40d157ed8b", size = 10982579, upload-time = "2025-08-21T10:28:08.435Z" }, + { url = "https://files.pythonhosted.org/packages/f3/98/8df69c4097a6719e357dc249bf437b8efbde808038268e584421696cbddf/pandas-2.3.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:c624b615ce97864eb588779ed4046186f967374185c047070545253a52ab2d57", size = 12028163, upload-time = "2025-08-21T10:27:52.232Z" }, + { url = "https://files.pythonhosted.org/packages/0e/23/f95cbcbea319f349e10ff90db488b905c6883f03cbabd34f6b03cbc3c044/pandas-2.3.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:0cee69d583b9b128823d9514171cabb6861e09409af805b54459bd0c821a35c2", size = 11391860, upload-time = "2025-08-21T10:27:54.673Z" }, + { url = "https://files.pythonhosted.org/packages/ad/1b/6a984e98c4abee22058aa75bfb8eb90dce58cf8d7296f8bc56c14bc330b0/pandas-2.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2319656ed81124982900b4c37f0e0c58c015af9a7bbc62342ba5ad07ace82ba9", size = 11309830, upload-time = "2025-08-21T10:27:56.957Z" }, + { url = "https://files.pythonhosted.org/packages/15/d5/f0486090eb18dd8710bf60afeaf638ba6817047c0c8ae5c6a25598665609/pandas-2.3.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b37205ad6f00d52f16b6d09f406434ba928c1a1966e2771006a9033c736d30d2", size = 11883216, upload-time = "2025-08-21T10:27:59.302Z" }, + { url = "https://files.pythonhosted.org/packages/10/86/692050c119696da19e20245bbd650d8dfca6ceb577da027c3a73c62a047e/pandas-2.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:837248b4fc3a9b83b9c6214699a13f069dc13510a6a6d7f9ba33145d2841a012", size = 12699743, upload-time = "2025-08-21T10:28:02.447Z" }, + { url = "https://files.pythonhosted.org/packages/cd/d7/612123674d7b17cf345aad0a10289b2a384bff404e0463a83c4a3a59d205/pandas-2.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:d2c3554bd31b731cd6490d94a28f3abb8dd770634a9e06eb6d2911b9827db370", size = 13186141, upload-time = "2025-08-21T10:28:05.377Z" }, ] [[package]] @@ -2710,7 +3259,7 @@ dependencies = [ { name = "numpy" }, { name = "packaging" }, { name = "pandas", version = "2.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, - { name = "pandas", version = "2.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, + { name = "pandas", version = "2.3.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, { name = "pydantic" }, { name = "typeguard" }, { name = "typing-inspect" }, @@ -2732,11 +3281,11 @@ wheels = [ [[package]] name = "parso" -version = "0.8.4" +version = "0.8.5" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/66/94/68e2e17afaa9169cf6412ab0f28623903be73d1b32e208d9e8e541bb086d/parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d", size = 400609, upload-time = "2024-04-05T09:43:55.897Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d4/de/53e0bcf53d13e005bd8c92e7855142494f41171b34c2536b86187474184d/parso-0.8.5.tar.gz", hash = "sha256:034d7354a9a018bdce352f48b2a8a450f05e9d6ee85db84764e9b6bd96dafe5a", size = 401205, upload-time = "2025-08-23T15:15:28.028Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18", size = 103650, upload-time = "2024-04-05T09:43:53.299Z" }, + { url = "https://files.pythonhosted.org/packages/16/32/f8e3c85d1d5250232a5d3477a2a28cc291968ff175caeadaf3cc19ce0e4a/parso-0.8.5-py2.py3-none-any.whl", hash = "sha256:646204b5ee239c396d040b90f9e272e9a8017c630092bf59980beb62fd033887", size = 106668, upload-time = "2025-08-23T15:15:25.663Z" }, ] [[package]] @@ -2775,88 +3324,113 @@ wheels = [ [[package]] name = "pillow" -version = "11.2.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/af/cb/bb5c01fcd2a69335b86c22142b2bccfc3464087efb7fd382eee5ffc7fdf7/pillow-11.2.1.tar.gz", hash = "sha256:a64dd61998416367b7ef979b73d3a85853ba9bec4c2925f74e588879a58716b6", size = 47026707, upload-time = "2025-04-12T17:50:03.289Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0d/8b/b158ad57ed44d3cc54db8d68ad7c0a58b8fc0e4c7a3f995f9d62d5b464a1/pillow-11.2.1-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:d57a75d53922fc20c165016a20d9c44f73305e67c351bbc60d1adaf662e74047", size = 3198442, upload-time = "2025-04-12T17:47:10.666Z" }, - { url = "https://files.pythonhosted.org/packages/b1/f8/bb5d956142f86c2d6cc36704943fa761f2d2e4c48b7436fd0a85c20f1713/pillow-11.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:127bf6ac4a5b58b3d32fc8289656f77f80567d65660bc46f72c0d77e6600cc95", size = 3030553, upload-time = "2025-04-12T17:47:13.153Z" }, - { url = "https://files.pythonhosted.org/packages/22/7f/0e413bb3e2aa797b9ca2c5c38cb2e2e45d88654e5b12da91ad446964cfae/pillow-11.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4ba4be812c7a40280629e55ae0b14a0aafa150dd6451297562e1764808bbe61", size = 4405503, upload-time = "2025-04-12T17:47:15.36Z" }, - { url = "https://files.pythonhosted.org/packages/f3/b4/cc647f4d13f3eb837d3065824aa58b9bcf10821f029dc79955ee43f793bd/pillow-11.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8bd62331e5032bc396a93609982a9ab6b411c05078a52f5fe3cc59234a3abd1", size = 4490648, upload-time = "2025-04-12T17:47:17.37Z" }, - { url = "https://files.pythonhosted.org/packages/c2/6f/240b772a3b35cdd7384166461567aa6713799b4e78d180c555bd284844ea/pillow-11.2.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:562d11134c97a62fe3af29581f083033179f7ff435f78392565a1ad2d1c2c45c", size = 4508937, upload-time = "2025-04-12T17:47:19.066Z" }, - { url = "https://files.pythonhosted.org/packages/f3/5e/7ca9c815ade5fdca18853db86d812f2f188212792780208bdb37a0a6aef4/pillow-11.2.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:c97209e85b5be259994eb5b69ff50c5d20cca0f458ef9abd835e262d9d88b39d", size = 4599802, upload-time = "2025-04-12T17:47:21.404Z" }, - { url = "https://files.pythonhosted.org/packages/02/81/c3d9d38ce0c4878a77245d4cf2c46d45a4ad0f93000227910a46caff52f3/pillow-11.2.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0c3e6d0f59171dfa2e25d7116217543310908dfa2770aa64b8f87605f8cacc97", size = 4576717, upload-time = "2025-04-12T17:47:23.571Z" }, - { url = "https://files.pythonhosted.org/packages/42/49/52b719b89ac7da3185b8d29c94d0e6aec8140059e3d8adcaa46da3751180/pillow-11.2.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cc1c3bc53befb6096b84165956e886b1729634a799e9d6329a0c512ab651e579", size = 4654874, upload-time = "2025-04-12T17:47:25.783Z" }, - { url = "https://files.pythonhosted.org/packages/5b/0b/ede75063ba6023798267023dc0d0401f13695d228194d2242d5a7ba2f964/pillow-11.2.1-cp310-cp310-win32.whl", hash = "sha256:312c77b7f07ab2139924d2639860e084ec2a13e72af54d4f08ac843a5fc9c79d", size = 2331717, upload-time = "2025-04-12T17:47:28.922Z" }, - { url = "https://files.pythonhosted.org/packages/ed/3c/9831da3edea527c2ed9a09f31a2c04e77cd705847f13b69ca60269eec370/pillow-11.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:9bc7ae48b8057a611e5fe9f853baa88093b9a76303937449397899385da06fad", size = 2676204, upload-time = "2025-04-12T17:47:31.283Z" }, - { url = "https://files.pythonhosted.org/packages/01/97/1f66ff8a1503d8cbfc5bae4dc99d54c6ec1e22ad2b946241365320caabc2/pillow-11.2.1-cp310-cp310-win_arm64.whl", hash = "sha256:2728567e249cdd939f6cc3d1f049595c66e4187f3c34078cbc0a7d21c47482d2", size = 2414767, upload-time = "2025-04-12T17:47:34.655Z" }, - { url = "https://files.pythonhosted.org/packages/68/08/3fbf4b98924c73037a8e8b4c2c774784805e0fb4ebca6c5bb60795c40125/pillow-11.2.1-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35ca289f712ccfc699508c4658a1d14652e8033e9b69839edf83cbdd0ba39e70", size = 3198450, upload-time = "2025-04-12T17:47:37.135Z" }, - { url = "https://files.pythonhosted.org/packages/84/92/6505b1af3d2849d5e714fc75ba9e69b7255c05ee42383a35a4d58f576b16/pillow-11.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0409af9f829f87a2dfb7e259f78f317a5351f2045158be321fd135973fff7bf", size = 3030550, upload-time = "2025-04-12T17:47:39.345Z" }, - { url = "https://files.pythonhosted.org/packages/3c/8c/ac2f99d2a70ff966bc7eb13dacacfaab57c0549b2ffb351b6537c7840b12/pillow-11.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4e5c5edee874dce4f653dbe59db7c73a600119fbea8d31f53423586ee2aafd7", size = 4415018, upload-time = "2025-04-12T17:47:41.128Z" }, - { url = "https://files.pythonhosted.org/packages/1f/e3/0a58b5d838687f40891fff9cbaf8669f90c96b64dc8f91f87894413856c6/pillow-11.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b93a07e76d13bff9444f1a029e0af2964e654bfc2e2c2d46bfd080df5ad5f3d8", size = 4498006, upload-time = "2025-04-12T17:47:42.912Z" }, - { url = "https://files.pythonhosted.org/packages/21/f5/6ba14718135f08fbfa33308efe027dd02b781d3f1d5c471444a395933aac/pillow-11.2.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:e6def7eed9e7fa90fde255afaf08060dc4b343bbe524a8f69bdd2a2f0018f600", size = 4517773, upload-time = "2025-04-12T17:47:44.611Z" }, - { url = "https://files.pythonhosted.org/packages/20/f2/805ad600fc59ebe4f1ba6129cd3a75fb0da126975c8579b8f57abeb61e80/pillow-11.2.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8f4f3724c068be008c08257207210c138d5f3731af6c155a81c2b09a9eb3a788", size = 4607069, upload-time = "2025-04-12T17:47:46.46Z" }, - { url = "https://files.pythonhosted.org/packages/71/6b/4ef8a288b4bb2e0180cba13ca0a519fa27aa982875882392b65131401099/pillow-11.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a0a6709b47019dff32e678bc12c63008311b82b9327613f534e496dacaefb71e", size = 4583460, upload-time = "2025-04-12T17:47:49.255Z" }, - { url = "https://files.pythonhosted.org/packages/62/ae/f29c705a09cbc9e2a456590816e5c234382ae5d32584f451c3eb41a62062/pillow-11.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f6b0c664ccb879109ee3ca702a9272d877f4fcd21e5eb63c26422fd6e415365e", size = 4661304, upload-time = "2025-04-12T17:47:51.067Z" }, - { url = "https://files.pythonhosted.org/packages/6e/1a/c8217b6f2f73794a5e219fbad087701f412337ae6dbb956db37d69a9bc43/pillow-11.2.1-cp311-cp311-win32.whl", hash = "sha256:cc5d875d56e49f112b6def6813c4e3d3036d269c008bf8aef72cd08d20ca6df6", size = 2331809, upload-time = "2025-04-12T17:47:54.425Z" }, - { url = "https://files.pythonhosted.org/packages/e2/72/25a8f40170dc262e86e90f37cb72cb3de5e307f75bf4b02535a61afcd519/pillow-11.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:0f5c7eda47bf8e3c8a283762cab94e496ba977a420868cb819159980b6709193", size = 2676338, upload-time = "2025-04-12T17:47:56.535Z" }, - { url = "https://files.pythonhosted.org/packages/06/9e/76825e39efee61efea258b479391ca77d64dbd9e5804e4ad0fa453b4ba55/pillow-11.2.1-cp311-cp311-win_arm64.whl", hash = "sha256:4d375eb838755f2528ac8cbc926c3e31cc49ca4ad0cf79cff48b20e30634a4a7", size = 2414918, upload-time = "2025-04-12T17:47:58.217Z" }, - { url = "https://files.pythonhosted.org/packages/c7/40/052610b15a1b8961f52537cc8326ca6a881408bc2bdad0d852edeb6ed33b/pillow-11.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:78afba22027b4accef10dbd5eed84425930ba41b3ea0a86fa8d20baaf19d807f", size = 3190185, upload-time = "2025-04-12T17:48:00.417Z" }, - { url = "https://files.pythonhosted.org/packages/e5/7e/b86dbd35a5f938632093dc40d1682874c33dcfe832558fc80ca56bfcb774/pillow-11.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:78092232a4ab376a35d68c4e6d5e00dfd73454bd12b230420025fbe178ee3b0b", size = 3030306, upload-time = "2025-04-12T17:48:02.391Z" }, - { url = "https://files.pythonhosted.org/packages/a4/5c/467a161f9ed53e5eab51a42923c33051bf8d1a2af4626ac04f5166e58e0c/pillow-11.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25a5f306095c6780c52e6bbb6109624b95c5b18e40aab1c3041da3e9e0cd3e2d", size = 4416121, upload-time = "2025-04-12T17:48:04.554Z" }, - { url = "https://files.pythonhosted.org/packages/62/73/972b7742e38ae0e2ac76ab137ca6005dcf877480da0d9d61d93b613065b4/pillow-11.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c7b29dbd4281923a2bfe562acb734cee96bbb129e96e6972d315ed9f232bef4", size = 4501707, upload-time = "2025-04-12T17:48:06.831Z" }, - { url = "https://files.pythonhosted.org/packages/e4/3a/427e4cb0b9e177efbc1a84798ed20498c4f233abde003c06d2650a6d60cb/pillow-11.2.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:3e645b020f3209a0181a418bffe7b4a93171eef6c4ef6cc20980b30bebf17b7d", size = 4522921, upload-time = "2025-04-12T17:48:09.229Z" }, - { url = "https://files.pythonhosted.org/packages/fe/7c/d8b1330458e4d2f3f45d9508796d7caf0c0d3764c00c823d10f6f1a3b76d/pillow-11.2.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b2dbea1012ccb784a65349f57bbc93730b96e85b42e9bf7b01ef40443db720b4", size = 4612523, upload-time = "2025-04-12T17:48:11.631Z" }, - { url = "https://files.pythonhosted.org/packages/b3/2f/65738384e0b1acf451de5a573d8153fe84103772d139e1e0bdf1596be2ea/pillow-11.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:da3104c57bbd72948d75f6a9389e6727d2ab6333c3617f0a89d72d4940aa0443", size = 4587836, upload-time = "2025-04-12T17:48:13.592Z" }, - { url = "https://files.pythonhosted.org/packages/6a/c5/e795c9f2ddf3debb2dedd0df889f2fe4b053308bb59a3cc02a0cd144d641/pillow-11.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:598174aef4589af795f66f9caab87ba4ff860ce08cd5bb447c6fc553ffee603c", size = 4669390, upload-time = "2025-04-12T17:48:15.938Z" }, - { url = "https://files.pythonhosted.org/packages/96/ae/ca0099a3995976a9fce2f423166f7bff9b12244afdc7520f6ed38911539a/pillow-11.2.1-cp312-cp312-win32.whl", hash = "sha256:1d535df14716e7f8776b9e7fee118576d65572b4aad3ed639be9e4fa88a1cad3", size = 2332309, upload-time = "2025-04-12T17:48:17.885Z" }, - { url = "https://files.pythonhosted.org/packages/7c/18/24bff2ad716257fc03da964c5e8f05d9790a779a8895d6566e493ccf0189/pillow-11.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:14e33b28bf17c7a38eede290f77db7c664e4eb01f7869e37fa98a5aa95978941", size = 2676768, upload-time = "2025-04-12T17:48:19.655Z" }, - { url = "https://files.pythonhosted.org/packages/da/bb/e8d656c9543276517ee40184aaa39dcb41e683bca121022f9323ae11b39d/pillow-11.2.1-cp312-cp312-win_arm64.whl", hash = "sha256:21e1470ac9e5739ff880c211fc3af01e3ae505859392bf65458c224d0bf283eb", size = 2415087, upload-time = "2025-04-12T17:48:21.991Z" }, - { url = "https://files.pythonhosted.org/packages/36/9c/447528ee3776e7ab8897fe33697a7ff3f0475bb490c5ac1456a03dc57956/pillow-11.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:fdec757fea0b793056419bca3e9932eb2b0ceec90ef4813ea4c1e072c389eb28", size = 3190098, upload-time = "2025-04-12T17:48:23.915Z" }, - { url = "https://files.pythonhosted.org/packages/b5/09/29d5cd052f7566a63e5b506fac9c60526e9ecc553825551333e1e18a4858/pillow-11.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b0e130705d568e2f43a17bcbe74d90958e8a16263868a12c3e0d9c8162690830", size = 3030166, upload-time = "2025-04-12T17:48:25.738Z" }, - { url = "https://files.pythonhosted.org/packages/71/5d/446ee132ad35e7600652133f9c2840b4799bbd8e4adba881284860da0a36/pillow-11.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bdb5e09068332578214cadd9c05e3d64d99e0e87591be22a324bdbc18925be0", size = 4408674, upload-time = "2025-04-12T17:48:27.908Z" }, - { url = "https://files.pythonhosted.org/packages/69/5f/cbe509c0ddf91cc3a03bbacf40e5c2339c4912d16458fcb797bb47bcb269/pillow-11.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d189ba1bebfbc0c0e529159631ec72bb9e9bc041f01ec6d3233d6d82eb823bc1", size = 4496005, upload-time = "2025-04-12T17:48:29.888Z" }, - { url = "https://files.pythonhosted.org/packages/f9/b3/dd4338d8fb8a5f312021f2977fb8198a1184893f9b00b02b75d565c33b51/pillow-11.2.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:191955c55d8a712fab8934a42bfefbf99dd0b5875078240943f913bb66d46d9f", size = 4518707, upload-time = "2025-04-12T17:48:31.874Z" }, - { url = "https://files.pythonhosted.org/packages/13/eb/2552ecebc0b887f539111c2cd241f538b8ff5891b8903dfe672e997529be/pillow-11.2.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:ad275964d52e2243430472fc5d2c2334b4fc3ff9c16cb0a19254e25efa03a155", size = 4610008, upload-time = "2025-04-12T17:48:34.422Z" }, - { url = "https://files.pythonhosted.org/packages/72/d1/924ce51bea494cb6e7959522d69d7b1c7e74f6821d84c63c3dc430cbbf3b/pillow-11.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:750f96efe0597382660d8b53e90dd1dd44568a8edb51cb7f9d5d918b80d4de14", size = 4585420, upload-time = "2025-04-12T17:48:37.641Z" }, - { url = "https://files.pythonhosted.org/packages/43/ab/8f81312d255d713b99ca37479a4cb4b0f48195e530cdc1611990eb8fd04b/pillow-11.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fe15238d3798788d00716637b3d4e7bb6bde18b26e5d08335a96e88564a36b6b", size = 4667655, upload-time = "2025-04-12T17:48:39.652Z" }, - { url = "https://files.pythonhosted.org/packages/94/86/8f2e9d2dc3d308dfd137a07fe1cc478df0a23d42a6c4093b087e738e4827/pillow-11.2.1-cp313-cp313-win32.whl", hash = "sha256:3fe735ced9a607fee4f481423a9c36701a39719252a9bb251679635f99d0f7d2", size = 2332329, upload-time = "2025-04-12T17:48:41.765Z" }, - { url = "https://files.pythonhosted.org/packages/6d/ec/1179083b8d6067a613e4d595359b5fdea65d0a3b7ad623fee906e1b3c4d2/pillow-11.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:74ee3d7ecb3f3c05459ba95eed5efa28d6092d751ce9bf20e3e253a4e497e691", size = 2676388, upload-time = "2025-04-12T17:48:43.625Z" }, - { url = "https://files.pythonhosted.org/packages/23/f1/2fc1e1e294de897df39fa8622d829b8828ddad938b0eaea256d65b84dd72/pillow-11.2.1-cp313-cp313-win_arm64.whl", hash = "sha256:5119225c622403afb4b44bad4c1ca6c1f98eed79db8d3bc6e4e160fc6339d66c", size = 2414950, upload-time = "2025-04-12T17:48:45.475Z" }, - { url = "https://files.pythonhosted.org/packages/c4/3e/c328c48b3f0ead7bab765a84b4977acb29f101d10e4ef57a5e3400447c03/pillow-11.2.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8ce2e8411c7aaef53e6bb29fe98f28cd4fbd9a1d9be2eeea434331aac0536b22", size = 3192759, upload-time = "2025-04-12T17:48:47.866Z" }, - { url = "https://files.pythonhosted.org/packages/18/0e/1c68532d833fc8b9f404d3a642991441d9058eccd5606eab31617f29b6d4/pillow-11.2.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:9ee66787e095127116d91dea2143db65c7bb1e232f617aa5957c0d9d2a3f23a7", size = 3033284, upload-time = "2025-04-12T17:48:50.189Z" }, - { url = "https://files.pythonhosted.org/packages/b7/cb/6faf3fb1e7705fd2db74e070f3bf6f88693601b0ed8e81049a8266de4754/pillow-11.2.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9622e3b6c1d8b551b6e6f21873bdcc55762b4b2126633014cea1803368a9aa16", size = 4445826, upload-time = "2025-04-12T17:48:52.346Z" }, - { url = "https://files.pythonhosted.org/packages/07/94/8be03d50b70ca47fb434a358919d6a8d6580f282bbb7af7e4aa40103461d/pillow-11.2.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63b5dff3a68f371ea06025a1a6966c9a1e1ee452fc8020c2cd0ea41b83e9037b", size = 4527329, upload-time = "2025-04-12T17:48:54.403Z" }, - { url = "https://files.pythonhosted.org/packages/fd/a4/bfe78777076dc405e3bd2080bc32da5ab3945b5a25dc5d8acaa9de64a162/pillow-11.2.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:31df6e2d3d8fc99f993fd253e97fae451a8db2e7207acf97859732273e108406", size = 4549049, upload-time = "2025-04-12T17:48:56.383Z" }, - { url = "https://files.pythonhosted.org/packages/65/4d/eaf9068dc687c24979e977ce5677e253624bd8b616b286f543f0c1b91662/pillow-11.2.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:062b7a42d672c45a70fa1f8b43d1d38ff76b63421cbbe7f88146b39e8a558d91", size = 4635408, upload-time = "2025-04-12T17:48:58.782Z" }, - { url = "https://files.pythonhosted.org/packages/1d/26/0fd443365d9c63bc79feb219f97d935cd4b93af28353cba78d8e77b61719/pillow-11.2.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4eb92eca2711ef8be42fd3f67533765d9fd043b8c80db204f16c8ea62ee1a751", size = 4614863, upload-time = "2025-04-12T17:49:00.709Z" }, - { url = "https://files.pythonhosted.org/packages/49/65/dca4d2506be482c2c6641cacdba5c602bc76d8ceb618fd37de855653a419/pillow-11.2.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f91ebf30830a48c825590aede79376cb40f110b387c17ee9bd59932c961044f9", size = 4692938, upload-time = "2025-04-12T17:49:02.946Z" }, - { url = "https://files.pythonhosted.org/packages/b3/92/1ca0c3f09233bd7decf8f7105a1c4e3162fb9142128c74adad0fb361b7eb/pillow-11.2.1-cp313-cp313t-win32.whl", hash = "sha256:e0b55f27f584ed623221cfe995c912c61606be8513bfa0e07d2c674b4516d9dd", size = 2335774, upload-time = "2025-04-12T17:49:04.889Z" }, - { url = "https://files.pythonhosted.org/packages/a5/ac/77525347cb43b83ae905ffe257bbe2cc6fd23acb9796639a1f56aa59d191/pillow-11.2.1-cp313-cp313t-win_amd64.whl", hash = "sha256:36d6b82164c39ce5482f649b437382c0fb2395eabc1e2b1702a6deb8ad647d6e", size = 2681895, upload-time = "2025-04-12T17:49:06.635Z" }, - { url = "https://files.pythonhosted.org/packages/67/32/32dc030cfa91ca0fc52baebbba2e009bb001122a1daa8b6a79ad830b38d3/pillow-11.2.1-cp313-cp313t-win_arm64.whl", hash = "sha256:225c832a13326e34f212d2072982bb1adb210e0cc0b153e688743018c94a2681", size = 2417234, upload-time = "2025-04-12T17:49:08.399Z" }, - { url = "https://files.pythonhosted.org/packages/33/49/c8c21e4255b4f4a2c0c68ac18125d7f5460b109acc6dfdef1a24f9b960ef/pillow-11.2.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:9b7b0d4fd2635f54ad82785d56bc0d94f147096493a79985d0ab57aedd563156", size = 3181727, upload-time = "2025-04-12T17:49:31.898Z" }, - { url = "https://files.pythonhosted.org/packages/6d/f1/f7255c0838f8c1ef6d55b625cfb286835c17e8136ce4351c5577d02c443b/pillow-11.2.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:aa442755e31c64037aa7c1cb186e0b369f8416c567381852c63444dd666fb772", size = 2999833, upload-time = "2025-04-12T17:49:34.2Z" }, - { url = "https://files.pythonhosted.org/packages/e2/57/9968114457bd131063da98d87790d080366218f64fa2943b65ac6739abb3/pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0d3348c95b766f54b76116d53d4cb171b52992a1027e7ca50c81b43b9d9e363", size = 3437472, upload-time = "2025-04-12T17:49:36.294Z" }, - { url = "https://files.pythonhosted.org/packages/b2/1b/e35d8a158e21372ecc48aac9c453518cfe23907bb82f950d6e1c72811eb0/pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85d27ea4c889342f7e35f6d56e7e1cb345632ad592e8c51b693d7b7556043ce0", size = 3459976, upload-time = "2025-04-12T17:49:38.988Z" }, - { url = "https://files.pythonhosted.org/packages/26/da/2c11d03b765efff0ccc473f1c4186dc2770110464f2177efaed9cf6fae01/pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:bf2c33d6791c598142f00c9c4c7d47f6476731c31081331664eb26d6ab583e01", size = 3527133, upload-time = "2025-04-12T17:49:40.985Z" }, - { url = "https://files.pythonhosted.org/packages/79/1a/4e85bd7cadf78412c2a3069249a09c32ef3323650fd3005c97cca7aa21df/pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e616e7154c37669fc1dfc14584f11e284e05d1c650e1c0f972f281c4ccc53193", size = 3571555, upload-time = "2025-04-12T17:49:42.964Z" }, - { url = "https://files.pythonhosted.org/packages/69/03/239939915216de1e95e0ce2334bf17a7870ae185eb390fab6d706aadbfc0/pillow-11.2.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:39ad2e0f424394e3aebc40168845fee52df1394a4673a6ee512d840d14ab3013", size = 2674713, upload-time = "2025-04-12T17:49:44.944Z" }, - { url = "https://files.pythonhosted.org/packages/a4/ad/2613c04633c7257d9481ab21d6b5364b59fc5d75faafd7cb8693523945a3/pillow-11.2.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:80f1df8dbe9572b4b7abdfa17eb5d78dd620b1d55d9e25f834efdbee872d3aed", size = 3181734, upload-time = "2025-04-12T17:49:46.789Z" }, - { url = "https://files.pythonhosted.org/packages/a4/fd/dcdda4471ed667de57bb5405bb42d751e6cfdd4011a12c248b455c778e03/pillow-11.2.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ea926cfbc3957090becbcbbb65ad177161a2ff2ad578b5a6ec9bb1e1cd78753c", size = 2999841, upload-time = "2025-04-12T17:49:48.812Z" }, - { url = "https://files.pythonhosted.org/packages/ac/89/8a2536e95e77432833f0db6fd72a8d310c8e4272a04461fb833eb021bf94/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:738db0e0941ca0376804d4de6a782c005245264edaa253ffce24e5a15cbdc7bd", size = 3437470, upload-time = "2025-04-12T17:49:50.831Z" }, - { url = "https://files.pythonhosted.org/packages/9d/8f/abd47b73c60712f88e9eda32baced7bfc3e9bd6a7619bb64b93acff28c3e/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9db98ab6565c69082ec9b0d4e40dd9f6181dab0dd236d26f7a50b8b9bfbd5076", size = 3460013, upload-time = "2025-04-12T17:49:53.278Z" }, - { url = "https://files.pythonhosted.org/packages/f6/20/5c0a0aa83b213b7a07ec01e71a3d6ea2cf4ad1d2c686cc0168173b6089e7/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:036e53f4170e270ddb8797d4c590e6dd14d28e15c7da375c18978045f7e6c37b", size = 3527165, upload-time = "2025-04-12T17:49:55.164Z" }, - { url = "https://files.pythonhosted.org/packages/58/0e/2abab98a72202d91146abc839e10c14f7cf36166f12838ea0c4db3ca6ecb/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:14f73f7c291279bd65fda51ee87affd7c1e097709f7fdd0188957a16c264601f", size = 3571586, upload-time = "2025-04-12T17:49:57.171Z" }, - { url = "https://files.pythonhosted.org/packages/21/2c/5e05f58658cf49b6667762cca03d6e7d85cededde2caf2ab37b81f80e574/pillow-11.2.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:208653868d5c9ecc2b327f9b9ef34e0e42a4cdd172c2988fd81d62d2bc9bc044", size = 2674751, upload-time = "2025-04-12T17:49:59.628Z" }, +version = "11.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/d0d6dea55cd152ce3d6767bb38a8fc10e33796ba4ba210cbab9354b6d238/pillow-11.3.0.tar.gz", hash = "sha256:3828ee7586cd0b2091b6209e5ad53e20d0649bbe87164a459d0676e035e8f523", size = 47113069, upload-time = "2025-07-01T09:16:30.666Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4c/5d/45a3553a253ac8763f3561371432a90bdbe6000fbdcf1397ffe502aa206c/pillow-11.3.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:1b9c17fd4ace828b3003dfd1e30bff24863e0eb59b535e8f80194d9cc7ecf860", size = 5316554, upload-time = "2025-07-01T09:13:39.342Z" }, + { url = "https://files.pythonhosted.org/packages/7c/c8/67c12ab069ef586a25a4a79ced553586748fad100c77c0ce59bb4983ac98/pillow-11.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:65dc69160114cdd0ca0f35cb434633c75e8e7fad4cf855177a05bf38678f73ad", size = 4686548, upload-time = "2025-07-01T09:13:41.835Z" }, + { url = "https://files.pythonhosted.org/packages/2f/bd/6741ebd56263390b382ae4c5de02979af7f8bd9807346d068700dd6d5cf9/pillow-11.3.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7107195ddc914f656c7fc8e4a5e1c25f32e9236ea3ea860f257b0436011fddd0", size = 5859742, upload-time = "2025-07-03T13:09:47.439Z" }, + { url = "https://files.pythonhosted.org/packages/ca/0b/c412a9e27e1e6a829e6ab6c2dca52dd563efbedf4c9c6aa453d9a9b77359/pillow-11.3.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cc3e831b563b3114baac7ec2ee86819eb03caa1a2cef0b481a5675b59c4fe23b", size = 7633087, upload-time = "2025-07-03T13:09:51.796Z" }, + { url = "https://files.pythonhosted.org/packages/59/9d/9b7076aaf30f5dd17e5e5589b2d2f5a5d7e30ff67a171eb686e4eecc2adf/pillow-11.3.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f1f182ebd2303acf8c380a54f615ec883322593320a9b00438eb842c1f37ae50", size = 5963350, upload-time = "2025-07-01T09:13:43.865Z" }, + { url = "https://files.pythonhosted.org/packages/f0/16/1a6bf01fb622fb9cf5c91683823f073f053005c849b1f52ed613afcf8dae/pillow-11.3.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4445fa62e15936a028672fd48c4c11a66d641d2c05726c7ec1f8ba6a572036ae", size = 6631840, upload-time = "2025-07-01T09:13:46.161Z" }, + { url = "https://files.pythonhosted.org/packages/7b/e6/6ff7077077eb47fde78739e7d570bdcd7c10495666b6afcd23ab56b19a43/pillow-11.3.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:71f511f6b3b91dd543282477be45a033e4845a40278fa8dcdbfdb07109bf18f9", size = 6074005, upload-time = "2025-07-01T09:13:47.829Z" }, + { url = "https://files.pythonhosted.org/packages/c3/3a/b13f36832ea6d279a697231658199e0a03cd87ef12048016bdcc84131601/pillow-11.3.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:040a5b691b0713e1f6cbe222e0f4f74cd233421e105850ae3b3c0ceda520f42e", size = 6708372, upload-time = "2025-07-01T09:13:52.145Z" }, + { url = "https://files.pythonhosted.org/packages/6c/e4/61b2e1a7528740efbc70b3d581f33937e38e98ef3d50b05007267a55bcb2/pillow-11.3.0-cp310-cp310-win32.whl", hash = "sha256:89bd777bc6624fe4115e9fac3352c79ed60f3bb18651420635f26e643e3dd1f6", size = 6277090, upload-time = "2025-07-01T09:13:53.915Z" }, + { url = "https://files.pythonhosted.org/packages/a9/d3/60c781c83a785d6afbd6a326ed4d759d141de43aa7365725cbcd65ce5e54/pillow-11.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:19d2ff547c75b8e3ff46f4d9ef969a06c30ab2d4263a9e287733aa8b2429ce8f", size = 6985988, upload-time = "2025-07-01T09:13:55.699Z" }, + { url = "https://files.pythonhosted.org/packages/9f/28/4f4a0203165eefb3763939c6789ba31013a2e90adffb456610f30f613850/pillow-11.3.0-cp310-cp310-win_arm64.whl", hash = "sha256:819931d25e57b513242859ce1876c58c59dc31587847bf74cfe06b2e0cb22d2f", size = 2422899, upload-time = "2025-07-01T09:13:57.497Z" }, + { url = "https://files.pythonhosted.org/packages/db/26/77f8ed17ca4ffd60e1dcd220a6ec6d71210ba398cfa33a13a1cd614c5613/pillow-11.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:1cd110edf822773368b396281a2293aeb91c90a2db00d78ea43e7e861631b722", size = 5316531, upload-time = "2025-07-01T09:13:59.203Z" }, + { url = "https://files.pythonhosted.org/packages/cb/39/ee475903197ce709322a17a866892efb560f57900d9af2e55f86db51b0a5/pillow-11.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c412fddd1b77a75aa904615ebaa6001f169b26fd467b4be93aded278266b288", size = 4686560, upload-time = "2025-07-01T09:14:01.101Z" }, + { url = "https://files.pythonhosted.org/packages/d5/90/442068a160fd179938ba55ec8c97050a612426fae5ec0a764e345839f76d/pillow-11.3.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7d1aa4de119a0ecac0a34a9c8bde33f34022e2e8f99104e47a3ca392fd60e37d", size = 5870978, upload-time = "2025-07-03T13:09:55.638Z" }, + { url = "https://files.pythonhosted.org/packages/13/92/dcdd147ab02daf405387f0218dcf792dc6dd5b14d2573d40b4caeef01059/pillow-11.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:91da1d88226663594e3f6b4b8c3c8d85bd504117d043740a8e0ec449087cc494", size = 7641168, upload-time = "2025-07-03T13:10:00.37Z" }, + { url = "https://files.pythonhosted.org/packages/6e/db/839d6ba7fd38b51af641aa904e2960e7a5644d60ec754c046b7d2aee00e5/pillow-11.3.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:643f189248837533073c405ec2f0bb250ba54598cf80e8c1e043381a60632f58", size = 5973053, upload-time = "2025-07-01T09:14:04.491Z" }, + { url = "https://files.pythonhosted.org/packages/f2/2f/d7675ecae6c43e9f12aa8d58b6012683b20b6edfbdac7abcb4e6af7a3784/pillow-11.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:106064daa23a745510dabce1d84f29137a37224831d88eb4ce94bb187b1d7e5f", size = 6640273, upload-time = "2025-07-01T09:14:06.235Z" }, + { url = "https://files.pythonhosted.org/packages/45/ad/931694675ede172e15b2ff03c8144a0ddaea1d87adb72bb07655eaffb654/pillow-11.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cd8ff254faf15591e724dc7c4ddb6bf4793efcbe13802a4ae3e863cd300b493e", size = 6082043, upload-time = "2025-07-01T09:14:07.978Z" }, + { url = "https://files.pythonhosted.org/packages/3a/04/ba8f2b11fc80d2dd462d7abec16351b45ec99cbbaea4387648a44190351a/pillow-11.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:932c754c2d51ad2b2271fd01c3d121daaa35e27efae2a616f77bf164bc0b3e94", size = 6715516, upload-time = "2025-07-01T09:14:10.233Z" }, + { url = "https://files.pythonhosted.org/packages/48/59/8cd06d7f3944cc7d892e8533c56b0acb68399f640786313275faec1e3b6f/pillow-11.3.0-cp311-cp311-win32.whl", hash = "sha256:b4b8f3efc8d530a1544e5962bd6b403d5f7fe8b9e08227c6b255f98ad82b4ba0", size = 6274768, upload-time = "2025-07-01T09:14:11.921Z" }, + { url = "https://files.pythonhosted.org/packages/f1/cc/29c0f5d64ab8eae20f3232da8f8571660aa0ab4b8f1331da5c2f5f9a938e/pillow-11.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:1a992e86b0dd7aeb1f053cd506508c0999d710a8f07b4c791c63843fc6a807ac", size = 6986055, upload-time = "2025-07-01T09:14:13.623Z" }, + { url = "https://files.pythonhosted.org/packages/c6/df/90bd886fabd544c25addd63e5ca6932c86f2b701d5da6c7839387a076b4a/pillow-11.3.0-cp311-cp311-win_arm64.whl", hash = "sha256:30807c931ff7c095620fe04448e2c2fc673fcbb1ffe2a7da3fb39613489b1ddd", size = 2423079, upload-time = "2025-07-01T09:14:15.268Z" }, + { url = "https://files.pythonhosted.org/packages/40/fe/1bc9b3ee13f68487a99ac9529968035cca2f0a51ec36892060edcc51d06a/pillow-11.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdae223722da47b024b867c1ea0be64e0df702c5e0a60e27daad39bf960dd1e4", size = 5278800, upload-time = "2025-07-01T09:14:17.648Z" }, + { url = "https://files.pythonhosted.org/packages/2c/32/7e2ac19b5713657384cec55f89065fb306b06af008cfd87e572035b27119/pillow-11.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:921bd305b10e82b4d1f5e802b6850677f965d8394203d182f078873851dada69", size = 4686296, upload-time = "2025-07-01T09:14:19.828Z" }, + { url = "https://files.pythonhosted.org/packages/8e/1e/b9e12bbe6e4c2220effebc09ea0923a07a6da1e1f1bfbc8d7d29a01ce32b/pillow-11.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:eb76541cba2f958032d79d143b98a3a6b3ea87f0959bbe256c0b5e416599fd5d", size = 5871726, upload-time = "2025-07-03T13:10:04.448Z" }, + { url = "https://files.pythonhosted.org/packages/8d/33/e9200d2bd7ba00dc3ddb78df1198a6e80d7669cce6c2bdbeb2530a74ec58/pillow-11.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:67172f2944ebba3d4a7b54f2e95c786a3a50c21b88456329314caaa28cda70f6", size = 7644652, upload-time = "2025-07-03T13:10:10.391Z" }, + { url = "https://files.pythonhosted.org/packages/41/f1/6f2427a26fc683e00d985bc391bdd76d8dd4e92fac33d841127eb8fb2313/pillow-11.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97f07ed9f56a3b9b5f49d3661dc9607484e85c67e27f3e8be2c7d28ca032fec7", size = 5977787, upload-time = "2025-07-01T09:14:21.63Z" }, + { url = "https://files.pythonhosted.org/packages/e4/c9/06dd4a38974e24f932ff5f98ea3c546ce3f8c995d3f0985f8e5ba48bba19/pillow-11.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:676b2815362456b5b3216b4fd5bd89d362100dc6f4945154ff172e206a22c024", size = 6645236, upload-time = "2025-07-01T09:14:23.321Z" }, + { url = "https://files.pythonhosted.org/packages/40/e7/848f69fb79843b3d91241bad658e9c14f39a32f71a301bcd1d139416d1be/pillow-11.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3e184b2f26ff146363dd07bde8b711833d7b0202e27d13540bfe2e35a323a809", size = 6086950, upload-time = "2025-07-01T09:14:25.237Z" }, + { url = "https://files.pythonhosted.org/packages/0b/1a/7cff92e695a2a29ac1958c2a0fe4c0b2393b60aac13b04a4fe2735cad52d/pillow-11.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6be31e3fc9a621e071bc17bb7de63b85cbe0bfae91bb0363c893cbe67247780d", size = 6723358, upload-time = "2025-07-01T09:14:27.053Z" }, + { url = "https://files.pythonhosted.org/packages/26/7d/73699ad77895f69edff76b0f332acc3d497f22f5d75e5360f78cbcaff248/pillow-11.3.0-cp312-cp312-win32.whl", hash = "sha256:7b161756381f0918e05e7cb8a371fff367e807770f8fe92ecb20d905d0e1c149", size = 6275079, upload-time = "2025-07-01T09:14:30.104Z" }, + { url = "https://files.pythonhosted.org/packages/8c/ce/e7dfc873bdd9828f3b6e5c2bbb74e47a98ec23cc5c74fc4e54462f0d9204/pillow-11.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:a6444696fce635783440b7f7a9fc24b3ad10a9ea3f0ab66c5905be1c19ccf17d", size = 6986324, upload-time = "2025-07-01T09:14:31.899Z" }, + { url = "https://files.pythonhosted.org/packages/16/8f/b13447d1bf0b1f7467ce7d86f6e6edf66c0ad7cf44cf5c87a37f9bed9936/pillow-11.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:2aceea54f957dd4448264f9bf40875da0415c83eb85f55069d89c0ed436e3542", size = 2423067, upload-time = "2025-07-01T09:14:33.709Z" }, + { url = "https://files.pythonhosted.org/packages/1e/93/0952f2ed8db3a5a4c7a11f91965d6184ebc8cd7cbb7941a260d5f018cd2d/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:1c627742b539bba4309df89171356fcb3cc5a9178355b2727d1b74a6cf155fbd", size = 2128328, upload-time = "2025-07-01T09:14:35.276Z" }, + { url = "https://files.pythonhosted.org/packages/4b/e8/100c3d114b1a0bf4042f27e0f87d2f25e857e838034e98ca98fe7b8c0a9c/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:30b7c02f3899d10f13d7a48163c8969e4e653f8b43416d23d13d1bbfdc93b9f8", size = 2170652, upload-time = "2025-07-01T09:14:37.203Z" }, + { url = "https://files.pythonhosted.org/packages/aa/86/3f758a28a6e381758545f7cdb4942e1cb79abd271bea932998fc0db93cb6/pillow-11.3.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:7859a4cc7c9295f5838015d8cc0a9c215b77e43d07a25e460f35cf516df8626f", size = 2227443, upload-time = "2025-07-01T09:14:39.344Z" }, + { url = "https://files.pythonhosted.org/packages/01/f4/91d5b3ffa718df2f53b0dc109877993e511f4fd055d7e9508682e8aba092/pillow-11.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ec1ee50470b0d050984394423d96325b744d55c701a439d2bd66089bff963d3c", size = 5278474, upload-time = "2025-07-01T09:14:41.843Z" }, + { url = "https://files.pythonhosted.org/packages/f9/0e/37d7d3eca6c879fbd9dba21268427dffda1ab00d4eb05b32923d4fbe3b12/pillow-11.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7db51d222548ccfd274e4572fdbf3e810a5e66b00608862f947b163e613b67dd", size = 4686038, upload-time = "2025-07-01T09:14:44.008Z" }, + { url = "https://files.pythonhosted.org/packages/ff/b0/3426e5c7f6565e752d81221af9d3676fdbb4f352317ceafd42899aaf5d8a/pillow-11.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2d6fcc902a24ac74495df63faad1884282239265c6839a0a6416d33faedfae7e", size = 5864407, upload-time = "2025-07-03T13:10:15.628Z" }, + { url = "https://files.pythonhosted.org/packages/fc/c1/c6c423134229f2a221ee53f838d4be9d82bab86f7e2f8e75e47b6bf6cd77/pillow-11.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f0f5d8f4a08090c6d6d578351a2b91acf519a54986c055af27e7a93feae6d3f1", size = 7639094, upload-time = "2025-07-03T13:10:21.857Z" }, + { url = "https://files.pythonhosted.org/packages/ba/c9/09e6746630fe6372c67c648ff9deae52a2bc20897d51fa293571977ceb5d/pillow-11.3.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c37d8ba9411d6003bba9e518db0db0c58a680ab9fe5179f040b0463644bc9805", size = 5973503, upload-time = "2025-07-01T09:14:45.698Z" }, + { url = "https://files.pythonhosted.org/packages/d5/1c/a2a29649c0b1983d3ef57ee87a66487fdeb45132df66ab30dd37f7dbe162/pillow-11.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:13f87d581e71d9189ab21fe0efb5a23e9f28552d5be6979e84001d3b8505abe8", size = 6642574, upload-time = "2025-07-01T09:14:47.415Z" }, + { url = "https://files.pythonhosted.org/packages/36/de/d5cc31cc4b055b6c6fd990e3e7f0f8aaf36229a2698501bcb0cdf67c7146/pillow-11.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:023f6d2d11784a465f09fd09a34b150ea4672e85fb3d05931d89f373ab14abb2", size = 6084060, upload-time = "2025-07-01T09:14:49.636Z" }, + { url = "https://files.pythonhosted.org/packages/d5/ea/502d938cbaeec836ac28a9b730193716f0114c41325db428e6b280513f09/pillow-11.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:45dfc51ac5975b938e9809451c51734124e73b04d0f0ac621649821a63852e7b", size = 6721407, upload-time = "2025-07-01T09:14:51.962Z" }, + { url = "https://files.pythonhosted.org/packages/45/9c/9c5e2a73f125f6cbc59cc7087c8f2d649a7ae453f83bd0362ff7c9e2aee2/pillow-11.3.0-cp313-cp313-win32.whl", hash = "sha256:a4d336baed65d50d37b88ca5b60c0fa9d81e3a87d4a7930d3880d1624d5b31f3", size = 6273841, upload-time = "2025-07-01T09:14:54.142Z" }, + { url = "https://files.pythonhosted.org/packages/23/85/397c73524e0cd212067e0c969aa245b01d50183439550d24d9f55781b776/pillow-11.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:0bce5c4fd0921f99d2e858dc4d4d64193407e1b99478bc5cacecba2311abde51", size = 6978450, upload-time = "2025-07-01T09:14:56.436Z" }, + { url = "https://files.pythonhosted.org/packages/17/d2/622f4547f69cd173955194b78e4d19ca4935a1b0f03a302d655c9f6aae65/pillow-11.3.0-cp313-cp313-win_arm64.whl", hash = "sha256:1904e1264881f682f02b7f8167935cce37bc97db457f8e7849dc3a6a52b99580", size = 2423055, upload-time = "2025-07-01T09:14:58.072Z" }, + { url = "https://files.pythonhosted.org/packages/dd/80/a8a2ac21dda2e82480852978416cfacd439a4b490a501a288ecf4fe2532d/pillow-11.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4c834a3921375c48ee6b9624061076bc0a32a60b5532b322cc0ea64e639dd50e", size = 5281110, upload-time = "2025-07-01T09:14:59.79Z" }, + { url = "https://files.pythonhosted.org/packages/44/d6/b79754ca790f315918732e18f82a8146d33bcd7f4494380457ea89eb883d/pillow-11.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5e05688ccef30ea69b9317a9ead994b93975104a677a36a8ed8106be9260aa6d", size = 4689547, upload-time = "2025-07-01T09:15:01.648Z" }, + { url = "https://files.pythonhosted.org/packages/49/20/716b8717d331150cb00f7fdd78169c01e8e0c219732a78b0e59b6bdb2fd6/pillow-11.3.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1019b04af07fc0163e2810167918cb5add8d74674b6267616021ab558dc98ced", size = 5901554, upload-time = "2025-07-03T13:10:27.018Z" }, + { url = "https://files.pythonhosted.org/packages/74/cf/a9f3a2514a65bb071075063a96f0a5cf949c2f2fce683c15ccc83b1c1cab/pillow-11.3.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f944255db153ebb2b19c51fe85dd99ef0ce494123f21b9db4877ffdfc5590c7c", size = 7669132, upload-time = "2025-07-03T13:10:33.01Z" }, + { url = "https://files.pythonhosted.org/packages/98/3c/da78805cbdbee9cb43efe8261dd7cc0b4b93f2ac79b676c03159e9db2187/pillow-11.3.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1f85acb69adf2aaee8b7da124efebbdb959a104db34d3a2cb0f3793dbae422a8", size = 6005001, upload-time = "2025-07-01T09:15:03.365Z" }, + { url = "https://files.pythonhosted.org/packages/6c/fa/ce044b91faecf30e635321351bba32bab5a7e034c60187fe9698191aef4f/pillow-11.3.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:05f6ecbeff5005399bb48d198f098a9b4b6bdf27b8487c7f38ca16eeb070cd59", size = 6668814, upload-time = "2025-07-01T09:15:05.655Z" }, + { url = "https://files.pythonhosted.org/packages/7b/51/90f9291406d09bf93686434f9183aba27b831c10c87746ff49f127ee80cb/pillow-11.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a7bc6e6fd0395bc052f16b1a8670859964dbd7003bd0af2ff08342eb6e442cfe", size = 6113124, upload-time = "2025-07-01T09:15:07.358Z" }, + { url = "https://files.pythonhosted.org/packages/cd/5a/6fec59b1dfb619234f7636d4157d11fb4e196caeee220232a8d2ec48488d/pillow-11.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:83e1b0161c9d148125083a35c1c5a89db5b7054834fd4387499e06552035236c", size = 6747186, upload-time = "2025-07-01T09:15:09.317Z" }, + { url = "https://files.pythonhosted.org/packages/49/6b/00187a044f98255225f172de653941e61da37104a9ea60e4f6887717e2b5/pillow-11.3.0-cp313-cp313t-win32.whl", hash = "sha256:2a3117c06b8fb646639dce83694f2f9eac405472713fcb1ae887469c0d4f6788", size = 6277546, upload-time = "2025-07-01T09:15:11.311Z" }, + { url = "https://files.pythonhosted.org/packages/e8/5c/6caaba7e261c0d75bab23be79f1d06b5ad2a2ae49f028ccec801b0e853d6/pillow-11.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:857844335c95bea93fb39e0fa2726b4d9d758850b34075a7e3ff4f4fa3aa3b31", size = 6985102, upload-time = "2025-07-01T09:15:13.164Z" }, + { url = "https://files.pythonhosted.org/packages/f3/7e/b623008460c09a0cb38263c93b828c666493caee2eb34ff67f778b87e58c/pillow-11.3.0-cp313-cp313t-win_arm64.whl", hash = "sha256:8797edc41f3e8536ae4b10897ee2f637235c94f27404cac7297f7b607dd0716e", size = 2424803, upload-time = "2025-07-01T09:15:15.695Z" }, + { url = "https://files.pythonhosted.org/packages/73/f4/04905af42837292ed86cb1b1dabe03dce1edc008ef14c473c5c7e1443c5d/pillow-11.3.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d9da3df5f9ea2a89b81bb6087177fb1f4d1c7146d583a3fe5c672c0d94e55e12", size = 5278520, upload-time = "2025-07-01T09:15:17.429Z" }, + { url = "https://files.pythonhosted.org/packages/41/b0/33d79e377a336247df6348a54e6d2a2b85d644ca202555e3faa0cf811ecc/pillow-11.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0b275ff9b04df7b640c59ec5a3cb113eefd3795a8df80bac69646ef699c6981a", size = 4686116, upload-time = "2025-07-01T09:15:19.423Z" }, + { url = "https://files.pythonhosted.org/packages/49/2d/ed8bc0ab219ae8768f529597d9509d184fe8a6c4741a6864fea334d25f3f/pillow-11.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0743841cabd3dba6a83f38a92672cccbd69af56e3e91777b0ee7f4dba4385632", size = 5864597, upload-time = "2025-07-03T13:10:38.404Z" }, + { url = "https://files.pythonhosted.org/packages/b5/3d/b932bb4225c80b58dfadaca9d42d08d0b7064d2d1791b6a237f87f661834/pillow-11.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2465a69cf967b8b49ee1b96d76718cd98c4e925414ead59fdf75cf0fd07df673", size = 7638246, upload-time = "2025-07-03T13:10:44.987Z" }, + { url = "https://files.pythonhosted.org/packages/09/b5/0487044b7c096f1b48f0d7ad416472c02e0e4bf6919541b111efd3cae690/pillow-11.3.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41742638139424703b4d01665b807c6468e23e699e8e90cffefe291c5832b027", size = 5973336, upload-time = "2025-07-01T09:15:21.237Z" }, + { url = "https://files.pythonhosted.org/packages/a8/2d/524f9318f6cbfcc79fbc004801ea6b607ec3f843977652fdee4857a7568b/pillow-11.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93efb0b4de7e340d99057415c749175e24c8864302369e05914682ba642e5d77", size = 6642699, upload-time = "2025-07-01T09:15:23.186Z" }, + { url = "https://files.pythonhosted.org/packages/6f/d2/a9a4f280c6aefedce1e8f615baaa5474e0701d86dd6f1dede66726462bbd/pillow-11.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7966e38dcd0fa11ca390aed7c6f20454443581d758242023cf36fcb319b1a874", size = 6083789, upload-time = "2025-07-01T09:15:25.1Z" }, + { url = "https://files.pythonhosted.org/packages/fe/54/86b0cd9dbb683a9d5e960b66c7379e821a19be4ac5810e2e5a715c09a0c0/pillow-11.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:98a9afa7b9007c67ed84c57c9e0ad86a6000da96eaa638e4f8abe5b65ff83f0a", size = 6720386, upload-time = "2025-07-01T09:15:27.378Z" }, + { url = "https://files.pythonhosted.org/packages/e7/95/88efcaf384c3588e24259c4203b909cbe3e3c2d887af9e938c2022c9dd48/pillow-11.3.0-cp314-cp314-win32.whl", hash = "sha256:02a723e6bf909e7cea0dac1b0e0310be9d7650cd66222a5f1c571455c0a45214", size = 6370911, upload-time = "2025-07-01T09:15:29.294Z" }, + { url = "https://files.pythonhosted.org/packages/2e/cc/934e5820850ec5eb107e7b1a72dd278140731c669f396110ebc326f2a503/pillow-11.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:a418486160228f64dd9e9efcd132679b7a02a5f22c982c78b6fc7dab3fefb635", size = 7117383, upload-time = "2025-07-01T09:15:31.128Z" }, + { url = "https://files.pythonhosted.org/packages/d6/e9/9c0a616a71da2a5d163aa37405e8aced9a906d574b4a214bede134e731bc/pillow-11.3.0-cp314-cp314-win_arm64.whl", hash = "sha256:155658efb5e044669c08896c0c44231c5e9abcaadbc5cd3648df2f7c0b96b9a6", size = 2511385, upload-time = "2025-07-01T09:15:33.328Z" }, + { url = "https://files.pythonhosted.org/packages/1a/33/c88376898aff369658b225262cd4f2659b13e8178e7534df9e6e1fa289f6/pillow-11.3.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:59a03cdf019efbfeeed910bf79c7c93255c3d54bc45898ac2a4140071b02b4ae", size = 5281129, upload-time = "2025-07-01T09:15:35.194Z" }, + { url = "https://files.pythonhosted.org/packages/1f/70/d376247fb36f1844b42910911c83a02d5544ebd2a8bad9efcc0f707ea774/pillow-11.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f8a5827f84d973d8636e9dc5764af4f0cf2318d26744b3d902931701b0d46653", size = 4689580, upload-time = "2025-07-01T09:15:37.114Z" }, + { url = "https://files.pythonhosted.org/packages/eb/1c/537e930496149fbac69efd2fc4329035bbe2e5475b4165439e3be9cb183b/pillow-11.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ee92f2fd10f4adc4b43d07ec5e779932b4eb3dbfbc34790ada5a6669bc095aa6", size = 5902860, upload-time = "2025-07-03T13:10:50.248Z" }, + { url = "https://files.pythonhosted.org/packages/bd/57/80f53264954dcefeebcf9dae6e3eb1daea1b488f0be8b8fef12f79a3eb10/pillow-11.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c96d333dcf42d01f47b37e0979b6bd73ec91eae18614864622d9b87bbd5bbf36", size = 7670694, upload-time = "2025-07-03T13:10:56.432Z" }, + { url = "https://files.pythonhosted.org/packages/70/ff/4727d3b71a8578b4587d9c276e90efad2d6fe0335fd76742a6da08132e8c/pillow-11.3.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c96f993ab8c98460cd0c001447bff6194403e8b1d7e149ade5f00594918128b", size = 6005888, upload-time = "2025-07-01T09:15:39.436Z" }, + { url = "https://files.pythonhosted.org/packages/05/ae/716592277934f85d3be51d7256f3636672d7b1abfafdc42cf3f8cbd4b4c8/pillow-11.3.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41342b64afeba938edb034d122b2dda5db2139b9a4af999729ba8818e0056477", size = 6670330, upload-time = "2025-07-01T09:15:41.269Z" }, + { url = "https://files.pythonhosted.org/packages/e7/bb/7fe6cddcc8827b01b1a9766f5fdeb7418680744f9082035bdbabecf1d57f/pillow-11.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:068d9c39a2d1b358eb9f245ce7ab1b5c3246c7c8c7d9ba58cfa5b43146c06e50", size = 6114089, upload-time = "2025-07-01T09:15:43.13Z" }, + { url = "https://files.pythonhosted.org/packages/8b/f5/06bfaa444c8e80f1a8e4bff98da9c83b37b5be3b1deaa43d27a0db37ef84/pillow-11.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a1bc6ba083b145187f648b667e05a2534ecc4b9f2784c2cbe3089e44868f2b9b", size = 6748206, upload-time = "2025-07-01T09:15:44.937Z" }, + { url = "https://files.pythonhosted.org/packages/f0/77/bc6f92a3e8e6e46c0ca78abfffec0037845800ea38c73483760362804c41/pillow-11.3.0-cp314-cp314t-win32.whl", hash = "sha256:118ca10c0d60b06d006be10a501fd6bbdfef559251ed31b794668ed569c87e12", size = 6377370, upload-time = "2025-07-01T09:15:46.673Z" }, + { url = "https://files.pythonhosted.org/packages/4a/82/3a721f7d69dca802befb8af08b7c79ebcab461007ce1c18bd91a5d5896f9/pillow-11.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:8924748b688aa210d79883357d102cd64690e56b923a186f35a82cbc10f997db", size = 7121500, upload-time = "2025-07-01T09:15:48.512Z" }, + { url = "https://files.pythonhosted.org/packages/89/c7/5572fa4a3f45740eaab6ae86fcdf7195b55beac1371ac8c619d880cfe948/pillow-11.3.0-cp314-cp314t-win_arm64.whl", hash = "sha256:79ea0d14d3ebad43ec77ad5272e6ff9bba5b679ef73375ea760261207fa8e0aa", size = 2512835, upload-time = "2025-07-01T09:15:50.399Z" }, + { url = "https://files.pythonhosted.org/packages/6f/8b/209bd6b62ce8367f47e68a218bffac88888fdf2c9fcf1ecadc6c3ec1ebc7/pillow-11.3.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:3cee80663f29e3843b68199b9d6f4f54bd1d4a6b59bdd91bceefc51238bcb967", size = 5270556, upload-time = "2025-07-01T09:16:09.961Z" }, + { url = "https://files.pythonhosted.org/packages/2e/e6/231a0b76070c2cfd9e260a7a5b504fb72da0a95279410fa7afd99d9751d6/pillow-11.3.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b5f56c3f344f2ccaf0dd875d3e180f631dc60a51b314295a3e681fe8cf851fbe", size = 4654625, upload-time = "2025-07-01T09:16:11.913Z" }, + { url = "https://files.pythonhosted.org/packages/13/f4/10cf94fda33cb12765f2397fc285fa6d8eb9c29de7f3185165b702fc7386/pillow-11.3.0-pp310-pypy310_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e67d793d180c9df62f1f40aee3accca4829d3794c95098887edc18af4b8b780c", size = 4874207, upload-time = "2025-07-03T13:11:10.201Z" }, + { url = "https://files.pythonhosted.org/packages/72/c9/583821097dc691880c92892e8e2d41fe0a5a3d6021f4963371d2f6d57250/pillow-11.3.0-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d000f46e2917c705e9fb93a3606ee4a819d1e3aa7a9b442f6444f07e77cf5e25", size = 6583939, upload-time = "2025-07-03T13:11:15.68Z" }, + { url = "https://files.pythonhosted.org/packages/3b/8e/5c9d410f9217b12320efc7c413e72693f48468979a013ad17fd690397b9a/pillow-11.3.0-pp310-pypy310_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:527b37216b6ac3a12d7838dc3bd75208ec57c1c6d11ef01902266a5a0c14fc27", size = 4957166, upload-time = "2025-07-01T09:16:13.74Z" }, + { url = "https://files.pythonhosted.org/packages/62/bb/78347dbe13219991877ffb3a91bf09da8317fbfcd4b5f9140aeae020ad71/pillow-11.3.0-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:be5463ac478b623b9dd3937afd7fb7ab3d79dd290a28e2b6df292dc75063eb8a", size = 5581482, upload-time = "2025-07-01T09:16:16.107Z" }, + { url = "https://files.pythonhosted.org/packages/d9/28/1000353d5e61498aaeaaf7f1e4b49ddb05f2c6575f9d4f9f914a3538b6e1/pillow-11.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:8dc70ca24c110503e16918a658b869019126ecfe03109b754c402daff12b3d9f", size = 6984596, upload-time = "2025-07-01T09:16:18.07Z" }, + { url = "https://files.pythonhosted.org/packages/9e/e3/6fa84033758276fb31da12e5fb66ad747ae83b93c67af17f8c6ff4cc8f34/pillow-11.3.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7c8ec7a017ad1bd562f93dbd8505763e688d388cde6e4a010ae1486916e713e6", size = 5270566, upload-time = "2025-07-01T09:16:19.801Z" }, + { url = "https://files.pythonhosted.org/packages/5b/ee/e8d2e1ab4892970b561e1ba96cbd59c0d28cf66737fc44abb2aec3795a4e/pillow-11.3.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:9ab6ae226de48019caa8074894544af5b53a117ccb9d3b3dcb2871464c829438", size = 4654618, upload-time = "2025-07-01T09:16:21.818Z" }, + { url = "https://files.pythonhosted.org/packages/f2/6d/17f80f4e1f0761f02160fc433abd4109fa1548dcfdca46cfdadaf9efa565/pillow-11.3.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fe27fb049cdcca11f11a7bfda64043c37b30e6b91f10cb5bab275806c32f6ab3", size = 4874248, upload-time = "2025-07-03T13:11:20.738Z" }, + { url = "https://files.pythonhosted.org/packages/de/5f/c22340acd61cef960130585bbe2120e2fd8434c214802f07e8c03596b17e/pillow-11.3.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:465b9e8844e3c3519a983d58b80be3f668e2a7a5db97f2784e7079fbc9f9822c", size = 6583963, upload-time = "2025-07-03T13:11:26.283Z" }, + { url = "https://files.pythonhosted.org/packages/31/5e/03966aedfbfcbb4d5f8aa042452d3361f325b963ebbadddac05b122e47dd/pillow-11.3.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5418b53c0d59b3824d05e029669efa023bbef0f3e92e75ec8428f3799487f361", size = 4957170, upload-time = "2025-07-01T09:16:23.762Z" }, + { url = "https://files.pythonhosted.org/packages/cc/2d/e082982aacc927fc2cab48e1e731bdb1643a1406acace8bed0900a61464e/pillow-11.3.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:504b6f59505f08ae014f724b6207ff6222662aab5cc9542577fb084ed0676ac7", size = 5581505, upload-time = "2025-07-01T09:16:25.593Z" }, + { url = "https://files.pythonhosted.org/packages/34/e7/ae39f538fd6844e982063c3a5e4598b8ced43b9633baa3a85ef33af8c05c/pillow-11.3.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:c84d689db21a1c397d001aa08241044aa2069e7587b398c8cc63020390b1c1b8", size = 6984598, upload-time = "2025-07-01T09:16:27.732Z" }, ] [[package]] name = "platformdirs" -version = "4.3.8" +version = "4.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fe/8b/3c73abc9c759ecd3f1f7ceff6685840859e8070c4d947c93fae71f6a0bf2/platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", size = 21362, upload-time = "2025-05-07T22:47:42.121Z" } +sdist = { url = "https://files.pythonhosted.org/packages/23/e8/21db9c9987b0e728855bd57bff6984f67952bea55d6f75e055c46b5383e8/platformdirs-4.4.0.tar.gz", hash = "sha256:ca753cf4d81dc309bc67b0ea38fd15dc97bc30ce419a7f58d13eb3bf14c4febf", size = 21634, upload-time = "2025-08-26T14:32:04.268Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4", size = 18567, upload-time = "2025-05-07T22:47:40.376Z" }, + { url = "https://files.pythonhosted.org/packages/40/4b/2028861e724d3bd36227adfa20d3fd24c3fc6d52032f4a93c133be5d17ce/platformdirs-4.4.0-py3-none-any.whl", hash = "sha256:abd01743f24e5287cd7a5db3752faf1a2d65353f38ec26d98e25a6db65958c85", size = 18654, upload-time = "2025-08-26T14:32:02.735Z" }, ] [[package]] @@ -2870,7 +3444,7 @@ wheels = [ [[package]] name = "pre-commit" -version = "4.2.0" +version = "4.3.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cfgv" }, @@ -2879,45 +3453,46 @@ dependencies = [ { name = "pyyaml" }, { name = "virtualenv" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/08/39/679ca9b26c7bb2999ff122d50faa301e49af82ca9c066ec061cfbc0c6784/pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146", size = 193424, upload-time = "2025-03-18T21:35:20.987Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ff/29/7cf5bbc236333876e4b41f56e06857a87937ce4bf91e117a6991a2dbb02a/pre_commit-4.3.0.tar.gz", hash = "sha256:499fe450cc9d42e9d58e606262795ecb64dd05438943c62b66f6a8673da30b16", size = 193792, upload-time = "2025-08-09T18:56:14.651Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/88/74/a88bf1b1efeae488a0c0b7bdf71429c313722d1fc0f377537fbe554e6180/pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd", size = 220707, upload-time = "2025-03-18T21:35:19.343Z" }, + { url = "https://files.pythonhosted.org/packages/5b/a5/987a405322d78a73b66e39e4a90e4ef156fd7141bf71df987e50717c321b/pre_commit-4.3.0-py2.py3-none-any.whl", hash = "sha256:2b0747ad7e6e967169136edffee14c16e148a778a54e4f967921aa1ebf2308d8", size = 220965, upload-time = "2025-08-09T18:56:13.192Z" }, ] [[package]] name = "prometheus-client" -version = "0.22.1" +version = "0.23.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5e/cf/40dde0a2be27cc1eb41e333d1a674a74ce8b8b0457269cc640fd42b07cf7/prometheus_client-0.22.1.tar.gz", hash = "sha256:190f1331e783cf21eb60bca559354e0a4d4378facecf78f5428c39b675d20d28", size = 69746, upload-time = "2025-06-02T14:29:01.152Z" } +sdist = { url = "https://files.pythonhosted.org/packages/23/53/3edb5d68ecf6b38fcbcc1ad28391117d2a322d9a1a3eff04bfdb184d8c3b/prometheus_client-0.23.1.tar.gz", hash = "sha256:6ae8f9081eaaaf153a2e959d2e6c4f4fb57b12ef76c8c7980202f1e57b48b2ce", size = 80481, upload-time = "2025-09-18T20:47:25.043Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/32/ae/ec06af4fe3ee72d16973474f122541746196aaa16cea6f66d18b963c6177/prometheus_client-0.22.1-py3-none-any.whl", hash = "sha256:cca895342e308174341b2cbf99a56bef291fbc0ef7b9e5412a0f26d653ba7094", size = 58694, upload-time = "2025-06-02T14:29:00.068Z" }, + { url = "https://files.pythonhosted.org/packages/b8/db/14bafcb4af2139e046d03fd00dea7873e48eafe18b7d2797e73d6681f210/prometheus_client-0.23.1-py3-none-any.whl", hash = "sha256:dd1913e6e76b59cfe44e7a4b83e01afc9873c1bdfd2ed8739f1e76aeca115f99", size = 61145, upload-time = "2025-09-18T20:47:23.875Z" }, ] [[package]] name = "prompt-toolkit" -version = "3.0.51" +version = "3.0.52" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "wcwidth" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bb/6e/9d084c929dfe9e3bfe0c6a47e31f78a25c54627d64a66e884a8bf5474f1c/prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed", size = 428940, upload-time = "2025-04-15T09:18:47.731Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/96/06e01a7b38dce6fe1db213e061a4602dd6032a8a97ef6c1a862537732421/prompt_toolkit-3.0.52.tar.gz", hash = "sha256:28cde192929c8e7321de85de1ddbe736f1375148b02f2e17edd840042b1be855", size = 434198, upload-time = "2025-08-27T15:24:02.057Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07", size = 387810, upload-time = "2025-04-15T09:18:44.753Z" }, + { url = "https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl", hash = "sha256:9aac639a3bbd33284347de5ad8d68ecc044b91a762dc39b7c21095fcd6a19955", size = 391431, upload-time = "2025-08-27T15:23:59.498Z" }, ] [[package]] name = "psutil" -version = "7.0.0" +version = "7.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2a/80/336820c1ad9286a4ded7e845b2eccfcb27851ab8ac6abece774a6ff4d3de/psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456", size = 497003, upload-time = "2025-02-13T21:54:07.946Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b3/31/4723d756b59344b643542936e37a31d1d3204bcdc42a7daa8ee9eb06fb50/psutil-7.1.0.tar.gz", hash = "sha256:655708b3c069387c8b77b072fc429a57d0e214221d01c0a772df7dfedcb3bcd2", size = 497660, upload-time = "2025-09-17T20:14:52.902Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ed/e6/2d26234410f8b8abdbf891c9da62bee396583f713fb9f3325a4760875d22/psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25", size = 238051, upload-time = "2025-02-13T21:54:12.36Z" }, - { url = "https://files.pythonhosted.org/packages/04/8b/30f930733afe425e3cbfc0e1468a30a18942350c1a8816acfade80c005c4/psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da", size = 239535, upload-time = "2025-02-13T21:54:16.07Z" }, - { url = "https://files.pythonhosted.org/packages/2a/ed/d362e84620dd22876b55389248e522338ed1bf134a5edd3b8231d7207f6d/psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91", size = 275004, upload-time = "2025-02-13T21:54:18.662Z" }, - { url = "https://files.pythonhosted.org/packages/bf/b9/b0eb3f3cbcb734d930fdf839431606844a825b23eaf9a6ab371edac8162c/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b1388a4f6875d7e2aff5c4ca1cc16c545ed41dd8bb596cefea80111db353a34", size = 277986, upload-time = "2025-02-13T21:54:21.811Z" }, - { url = "https://files.pythonhosted.org/packages/eb/a2/709e0fe2f093556c17fbafda93ac032257242cabcc7ff3369e2cb76a97aa/psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993", size = 279544, upload-time = "2025-02-13T21:54:24.68Z" }, - { url = "https://files.pythonhosted.org/packages/50/e6/eecf58810b9d12e6427369784efe814a1eec0f492084ce8eb8f4d89d6d61/psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99", size = 241053, upload-time = "2025-02-13T21:54:34.31Z" }, - { url = "https://files.pythonhosted.org/packages/50/1b/6921afe68c74868b4c9fa424dad3be35b095e16687989ebbb50ce4fceb7c/psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553", size = 244885, upload-time = "2025-02-13T21:54:37.486Z" }, + { url = "https://files.pythonhosted.org/packages/46/62/ce4051019ee20ce0ed74432dd73a5bb087a6704284a470bb8adff69a0932/psutil-7.1.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:76168cef4397494250e9f4e73eb3752b146de1dd950040b29186d0cce1d5ca13", size = 245242, upload-time = "2025-09-17T20:14:56.126Z" }, + { url = "https://files.pythonhosted.org/packages/38/61/f76959fba841bf5b61123fbf4b650886dc4094c6858008b5bf73d9057216/psutil-7.1.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:5d007560c8c372efdff9e4579c2846d71de737e4605f611437255e81efcca2c5", size = 246682, upload-time = "2025-09-17T20:14:58.25Z" }, + { url = "https://files.pythonhosted.org/packages/88/7a/37c99d2e77ec30d63398ffa6a660450b8a62517cabe44b3e9bae97696e8d/psutil-7.1.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22e4454970b32472ce7deaa45d045b34d3648ce478e26a04c7e858a0a6e75ff3", size = 287994, upload-time = "2025-09-17T20:14:59.901Z" }, + { url = "https://files.pythonhosted.org/packages/9d/de/04c8c61232f7244aa0a4b9a9fbd63a89d5aeaf94b2fc9d1d16e2faa5cbb0/psutil-7.1.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c70e113920d51e89f212dd7be06219a9b88014e63a4cec69b684c327bc474e3", size = 291163, upload-time = "2025-09-17T20:15:01.481Z" }, + { url = "https://files.pythonhosted.org/packages/f4/58/c4f976234bf6d4737bc8c02a81192f045c307b72cf39c9e5c5a2d78927f6/psutil-7.1.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7d4a113425c037300de3ac8b331637293da9be9713855c4fc9d2d97436d7259d", size = 293625, upload-time = "2025-09-17T20:15:04.492Z" }, + { url = "https://files.pythonhosted.org/packages/79/87/157c8e7959ec39ced1b11cc93c730c4fb7f9d408569a6c59dbd92ceb35db/psutil-7.1.0-cp37-abi3-win32.whl", hash = "sha256:09ad740870c8d219ed8daae0ad3b726d3bf9a028a198e7f3080f6a1888b99bca", size = 244812, upload-time = "2025-09-17T20:15:07.462Z" }, + { url = "https://files.pythonhosted.org/packages/bf/e9/b44c4f697276a7a95b8e94d0e320a7bf7f3318521b23de69035540b39838/psutil-7.1.0-cp37-abi3-win_amd64.whl", hash = "sha256:57f5e987c36d3146c0dd2528cd42151cf96cd359b9d67cfff836995cc5df9a3d", size = 247965, upload-time = "2025-09-17T20:15:09.673Z" }, + { url = "https://files.pythonhosted.org/packages/26/65/1070a6e3c036f39142c2820c4b52e9243246fcfc3f96239ac84472ba361e/psutil-7.1.0-cp37-abi3-win_arm64.whl", hash = "sha256:6937cb68133e7c97b6cc9649a570c9a18ba0efebed46d8c5dae4c07fa1b67a07", size = 244971, upload-time = "2025-09-17T20:15:12.262Z" }, ] [[package]] @@ -2949,69 +3524,58 @@ wheels = [ [[package]] name = "pyarrow" -version = "20.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/ee/a7810cb9f3d6e9238e61d312076a9859bf3668fd21c69744de9532383912/pyarrow-20.0.0.tar.gz", hash = "sha256:febc4a913592573c8d5805091a6c2b5064c8bd6e002131f01061797d91c783c1", size = 1125187, upload-time = "2025-04-27T12:34:23.264Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5b/23/77094eb8ee0dbe88441689cb6afc40ac312a1e15d3a7acc0586999518222/pyarrow-20.0.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:c7dd06fd7d7b410ca5dc839cc9d485d2bc4ae5240851bcd45d85105cc90a47d7", size = 30832591, upload-time = "2025-04-27T12:27:27.89Z" }, - { url = "https://files.pythonhosted.org/packages/c3/d5/48cc573aff00d62913701d9fac478518f693b30c25f2c157550b0b2565cb/pyarrow-20.0.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:d5382de8dc34c943249b01c19110783d0d64b207167c728461add1ecc2db88e4", size = 32273686, upload-time = "2025-04-27T12:27:36.816Z" }, - { url = "https://files.pythonhosted.org/packages/37/df/4099b69a432b5cb412dd18adc2629975544d656df3d7fda6d73c5dba935d/pyarrow-20.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6415a0d0174487456ddc9beaead703d0ded5966129fa4fd3114d76b5d1c5ceae", size = 41337051, upload-time = "2025-04-27T12:27:44.4Z" }, - { url = "https://files.pythonhosted.org/packages/4c/27/99922a9ac1c9226f346e3a1e15e63dee6f623ed757ff2893f9d6994a69d3/pyarrow-20.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15aa1b3b2587e74328a730457068dc6c89e6dcbf438d4369f572af9d320a25ee", size = 42404659, upload-time = "2025-04-27T12:27:51.715Z" }, - { url = "https://files.pythonhosted.org/packages/21/d1/71d91b2791b829c9e98f1e0d85be66ed93aff399f80abb99678511847eaa/pyarrow-20.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:5605919fbe67a7948c1f03b9f3727d82846c053cd2ce9303ace791855923fd20", size = 40695446, upload-time = "2025-04-27T12:27:59.643Z" }, - { url = "https://files.pythonhosted.org/packages/f1/ca/ae10fba419a6e94329707487835ec721f5a95f3ac9168500bcf7aa3813c7/pyarrow-20.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a5704f29a74b81673d266e5ec1fe376f060627c2e42c5c7651288ed4b0db29e9", size = 42278528, upload-time = "2025-04-27T12:28:07.297Z" }, - { url = "https://files.pythonhosted.org/packages/7a/a6/aba40a2bf01b5d00cf9cd16d427a5da1fad0fb69b514ce8c8292ab80e968/pyarrow-20.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:00138f79ee1b5aca81e2bdedb91e3739b987245e11fa3c826f9e57c5d102fb75", size = 42918162, upload-time = "2025-04-27T12:28:15.716Z" }, - { url = "https://files.pythonhosted.org/packages/93/6b/98b39650cd64f32bf2ec6d627a9bd24fcb3e4e6ea1873c5e1ea8a83b1a18/pyarrow-20.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f2d67ac28f57a362f1a2c1e6fa98bfe2f03230f7e15927aecd067433b1e70ce8", size = 44550319, upload-time = "2025-04-27T12:28:27.026Z" }, - { url = "https://files.pythonhosted.org/packages/ab/32/340238be1eb5037e7b5de7e640ee22334417239bc347eadefaf8c373936d/pyarrow-20.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:4a8b029a07956b8d7bd742ffca25374dd3f634b35e46cc7a7c3fa4c75b297191", size = 25770759, upload-time = "2025-04-27T12:28:33.702Z" }, - { url = "https://files.pythonhosted.org/packages/47/a2/b7930824181ceadd0c63c1042d01fa4ef63eee233934826a7a2a9af6e463/pyarrow-20.0.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:24ca380585444cb2a31324c546a9a56abbe87e26069189e14bdba19c86c049f0", size = 30856035, upload-time = "2025-04-27T12:28:40.78Z" }, - { url = "https://files.pythonhosted.org/packages/9b/18/c765770227d7f5bdfa8a69f64b49194352325c66a5c3bb5e332dfd5867d9/pyarrow-20.0.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:95b330059ddfdc591a3225f2d272123be26c8fa76e8c9ee1a77aad507361cfdb", size = 32309552, upload-time = "2025-04-27T12:28:47.051Z" }, - { url = "https://files.pythonhosted.org/packages/44/fb/dfb2dfdd3e488bb14f822d7335653092dde150cffc2da97de6e7500681f9/pyarrow-20.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f0fb1041267e9968c6d0d2ce3ff92e3928b243e2b6d11eeb84d9ac547308232", size = 41334704, upload-time = "2025-04-27T12:28:55.064Z" }, - { url = "https://files.pythonhosted.org/packages/58/0d/08a95878d38808051a953e887332d4a76bc06c6ee04351918ee1155407eb/pyarrow-20.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8ff87cc837601532cc8242d2f7e09b4e02404de1b797aee747dd4ba4bd6313f", size = 42399836, upload-time = "2025-04-27T12:29:02.13Z" }, - { url = "https://files.pythonhosted.org/packages/f3/cd/efa271234dfe38f0271561086eedcad7bc0f2ddd1efba423916ff0883684/pyarrow-20.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:7a3a5dcf54286e6141d5114522cf31dd67a9e7c9133d150799f30ee302a7a1ab", size = 40711789, upload-time = "2025-04-27T12:29:09.951Z" }, - { url = "https://files.pythonhosted.org/packages/46/1f/7f02009bc7fc8955c391defee5348f510e589a020e4b40ca05edcb847854/pyarrow-20.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a6ad3e7758ecf559900261a4df985662df54fb7fdb55e8e3b3aa99b23d526b62", size = 42301124, upload-time = "2025-04-27T12:29:17.187Z" }, - { url = "https://files.pythonhosted.org/packages/4f/92/692c562be4504c262089e86757a9048739fe1acb4024f92d39615e7bab3f/pyarrow-20.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6bb830757103a6cb300a04610e08d9636f0cd223d32f388418ea893a3e655f1c", size = 42916060, upload-time = "2025-04-27T12:29:24.253Z" }, - { url = "https://files.pythonhosted.org/packages/a4/ec/9f5c7e7c828d8e0a3c7ef50ee62eca38a7de2fa6eb1b8fa43685c9414fef/pyarrow-20.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:96e37f0766ecb4514a899d9a3554fadda770fb57ddf42b63d80f14bc20aa7db3", size = 44547640, upload-time = "2025-04-27T12:29:32.782Z" }, - { url = "https://files.pythonhosted.org/packages/54/96/46613131b4727f10fd2ffa6d0d6f02efcc09a0e7374eff3b5771548aa95b/pyarrow-20.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:3346babb516f4b6fd790da99b98bed9708e3f02e734c84971faccb20736848dc", size = 25781491, upload-time = "2025-04-27T12:29:38.464Z" }, - { url = "https://files.pythonhosted.org/packages/a1/d6/0c10e0d54f6c13eb464ee9b67a68b8c71bcf2f67760ef5b6fbcddd2ab05f/pyarrow-20.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:75a51a5b0eef32727a247707d4755322cb970be7e935172b6a3a9f9ae98404ba", size = 30815067, upload-time = "2025-04-27T12:29:44.384Z" }, - { url = "https://files.pythonhosted.org/packages/7e/e2/04e9874abe4094a06fd8b0cbb0f1312d8dd7d707f144c2ec1e5e8f452ffa/pyarrow-20.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:211d5e84cecc640c7a3ab900f930aaff5cd2702177e0d562d426fb7c4f737781", size = 32297128, upload-time = "2025-04-27T12:29:52.038Z" }, - { url = "https://files.pythonhosted.org/packages/31/fd/c565e5dcc906a3b471a83273039cb75cb79aad4a2d4a12f76cc5ae90a4b8/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ba3cf4182828be7a896cbd232aa8dd6a31bd1f9e32776cc3796c012855e1199", size = 41334890, upload-time = "2025-04-27T12:29:59.452Z" }, - { url = "https://files.pythonhosted.org/packages/af/a9/3bdd799e2c9b20c1ea6dc6fa8e83f29480a97711cf806e823f808c2316ac/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c3a01f313ffe27ac4126f4c2e5ea0f36a5fc6ab51f8726cf41fee4b256680bd", size = 42421775, upload-time = "2025-04-27T12:30:06.875Z" }, - { url = "https://files.pythonhosted.org/packages/10/f7/da98ccd86354c332f593218101ae56568d5dcedb460e342000bd89c49cc1/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:a2791f69ad72addd33510fec7bb14ee06c2a448e06b649e264c094c5b5f7ce28", size = 40687231, upload-time = "2025-04-27T12:30:13.954Z" }, - { url = "https://files.pythonhosted.org/packages/bb/1b/2168d6050e52ff1e6cefc61d600723870bf569cbf41d13db939c8cf97a16/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:4250e28a22302ce8692d3a0e8ec9d9dde54ec00d237cff4dfa9c1fbf79e472a8", size = 42295639, upload-time = "2025-04-27T12:30:21.949Z" }, - { url = "https://files.pythonhosted.org/packages/b2/66/2d976c0c7158fd25591c8ca55aee026e6d5745a021915a1835578707feb3/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:89e030dc58fc760e4010148e6ff164d2f44441490280ef1e97a542375e41058e", size = 42908549, upload-time = "2025-04-27T12:30:29.551Z" }, - { url = "https://files.pythonhosted.org/packages/31/a9/dfb999c2fc6911201dcbf348247f9cc382a8990f9ab45c12eabfd7243a38/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6102b4864d77102dbbb72965618e204e550135a940c2534711d5ffa787df2a5a", size = 44557216, upload-time = "2025-04-27T12:30:36.977Z" }, - { url = "https://files.pythonhosted.org/packages/a0/8e/9adee63dfa3911be2382fb4d92e4b2e7d82610f9d9f668493bebaa2af50f/pyarrow-20.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:96d6a0a37d9c98be08f5ed6a10831d88d52cac7b13f5287f1e0f625a0de8062b", size = 25660496, upload-time = "2025-04-27T12:30:42.809Z" }, - { url = "https://files.pythonhosted.org/packages/9b/aa/daa413b81446d20d4dad2944110dcf4cf4f4179ef7f685dd5a6d7570dc8e/pyarrow-20.0.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:a15532e77b94c61efadde86d10957950392999503b3616b2ffcef7621a002893", size = 30798501, upload-time = "2025-04-27T12:30:48.351Z" }, - { url = "https://files.pythonhosted.org/packages/ff/75/2303d1caa410925de902d32ac215dc80a7ce7dd8dfe95358c165f2adf107/pyarrow-20.0.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:dd43f58037443af715f34f1322c782ec463a3c8a94a85fdb2d987ceb5658e061", size = 32277895, upload-time = "2025-04-27T12:30:55.238Z" }, - { url = "https://files.pythonhosted.org/packages/92/41/fe18c7c0b38b20811b73d1bdd54b1fccba0dab0e51d2048878042d84afa8/pyarrow-20.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa0d288143a8585806e3cc7c39566407aab646fb9ece164609dac1cfff45f6ae", size = 41327322, upload-time = "2025-04-27T12:31:05.587Z" }, - { url = "https://files.pythonhosted.org/packages/da/ab/7dbf3d11db67c72dbf36ae63dcbc9f30b866c153b3a22ef728523943eee6/pyarrow-20.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6953f0114f8d6f3d905d98e987d0924dabce59c3cda380bdfaa25a6201563b4", size = 42411441, upload-time = "2025-04-27T12:31:15.675Z" }, - { url = "https://files.pythonhosted.org/packages/90/c3/0c7da7b6dac863af75b64e2f827e4742161128c350bfe7955b426484e226/pyarrow-20.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:991f85b48a8a5e839b2128590ce07611fae48a904cae6cab1f089c5955b57eb5", size = 40677027, upload-time = "2025-04-27T12:31:24.631Z" }, - { url = "https://files.pythonhosted.org/packages/be/27/43a47fa0ff9053ab5203bb3faeec435d43c0d8bfa40179bfd076cdbd4e1c/pyarrow-20.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:97c8dc984ed09cb07d618d57d8d4b67a5100a30c3818c2fb0b04599f0da2de7b", size = 42281473, upload-time = "2025-04-27T12:31:31.311Z" }, - { url = "https://files.pythonhosted.org/packages/bc/0b/d56c63b078876da81bbb9ba695a596eabee9b085555ed12bf6eb3b7cab0e/pyarrow-20.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9b71daf534f4745818f96c214dbc1e6124d7daf059167330b610fc69b6f3d3e3", size = 42893897, upload-time = "2025-04-27T12:31:39.406Z" }, - { url = "https://files.pythonhosted.org/packages/92/ac/7d4bd020ba9145f354012838692d48300c1b8fe5634bfda886abcada67ed/pyarrow-20.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e8b88758f9303fa5a83d6c90e176714b2fd3852e776fc2d7e42a22dd6c2fb368", size = 44543847, upload-time = "2025-04-27T12:31:45.997Z" }, - { url = "https://files.pythonhosted.org/packages/9d/07/290f4abf9ca702c5df7b47739c1b2c83588641ddfa2cc75e34a301d42e55/pyarrow-20.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:30b3051b7975801c1e1d387e17c588d8ab05ced9b1e14eec57915f79869b5031", size = 25653219, upload-time = "2025-04-27T12:31:54.11Z" }, - { url = "https://files.pythonhosted.org/packages/95/df/720bb17704b10bd69dde086e1400b8eefb8f58df3f8ac9cff6c425bf57f1/pyarrow-20.0.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:ca151afa4f9b7bc45bcc791eb9a89e90a9eb2772767d0b1e5389609c7d03db63", size = 30853957, upload-time = "2025-04-27T12:31:59.215Z" }, - { url = "https://files.pythonhosted.org/packages/d9/72/0d5f875efc31baef742ba55a00a25213a19ea64d7176e0fe001c5d8b6e9a/pyarrow-20.0.0-cp313-cp313t-macosx_12_0_x86_64.whl", hash = "sha256:4680f01ecd86e0dd63e39eb5cd59ef9ff24a9d166db328679e36c108dc993d4c", size = 32247972, upload-time = "2025-04-27T12:32:05.369Z" }, - { url = "https://files.pythonhosted.org/packages/d5/bc/e48b4fa544d2eea72f7844180eb77f83f2030b84c8dad860f199f94307ed/pyarrow-20.0.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f4c8534e2ff059765647aa69b75d6543f9fef59e2cd4c6d18015192565d2b70", size = 41256434, upload-time = "2025-04-27T12:32:11.814Z" }, - { url = "https://files.pythonhosted.org/packages/c3/01/974043a29874aa2cf4f87fb07fd108828fc7362300265a2a64a94965e35b/pyarrow-20.0.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e1f8a47f4b4ae4c69c4d702cfbdfe4d41e18e5c7ef6f1bb1c50918c1e81c57b", size = 42353648, upload-time = "2025-04-27T12:32:20.766Z" }, - { url = "https://files.pythonhosted.org/packages/68/95/cc0d3634cde9ca69b0e51cbe830d8915ea32dda2157560dda27ff3b3337b/pyarrow-20.0.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:a1f60dc14658efaa927f8214734f6a01a806d7690be4b3232ba526836d216122", size = 40619853, upload-time = "2025-04-27T12:32:28.1Z" }, - { url = "https://files.pythonhosted.org/packages/29/c2/3ad40e07e96a3e74e7ed7cc8285aadfa84eb848a798c98ec0ad009eb6bcc/pyarrow-20.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:204a846dca751428991346976b914d6d2a82ae5b8316a6ed99789ebf976551e6", size = 42241743, upload-time = "2025-04-27T12:32:35.792Z" }, - { url = "https://files.pythonhosted.org/packages/eb/cb/65fa110b483339add6a9bc7b6373614166b14e20375d4daa73483755f830/pyarrow-20.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:f3b117b922af5e4c6b9a9115825726cac7d8b1421c37c2b5e24fbacc8930612c", size = 42839441, upload-time = "2025-04-27T12:32:46.64Z" }, - { url = "https://files.pythonhosted.org/packages/98/7b/f30b1954589243207d7a0fbc9997401044bf9a033eec78f6cb50da3f304a/pyarrow-20.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e724a3fd23ae5b9c010e7be857f4405ed5e679db5c93e66204db1a69f733936a", size = 44503279, upload-time = "2025-04-27T12:32:56.503Z" }, - { url = "https://files.pythonhosted.org/packages/37/40/ad395740cd641869a13bcf60851296c89624662575621968dcfafabaa7f6/pyarrow-20.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:82f1ee5133bd8f49d31be1299dc07f585136679666b502540db854968576faf9", size = 25944982, upload-time = "2025-04-27T12:33:04.72Z" }, +version = "21.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ef/c2/ea068b8f00905c06329a3dfcd40d0fcc2b7d0f2e355bdb25b65e0a0e4cd4/pyarrow-21.0.0.tar.gz", hash = "sha256:5051f2dccf0e283ff56335760cbc8622cf52264d67e359d5569541ac11b6d5bc", size = 1133487, upload-time = "2025-07-18T00:57:31.761Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/17/d9/110de31880016e2afc52d8580b397dbe47615defbf09ca8cf55f56c62165/pyarrow-21.0.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:e563271e2c5ff4d4a4cbeb2c83d5cf0d4938b891518e676025f7268c6fe5fe26", size = 31196837, upload-time = "2025-07-18T00:54:34.755Z" }, + { url = "https://files.pythonhosted.org/packages/df/5f/c1c1997613abf24fceb087e79432d24c19bc6f7259cab57c2c8e5e545fab/pyarrow-21.0.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:fee33b0ca46f4c85443d6c450357101e47d53e6c3f008d658c27a2d020d44c79", size = 32659470, upload-time = "2025-07-18T00:54:38.329Z" }, + { url = "https://files.pythonhosted.org/packages/3e/ed/b1589a777816ee33ba123ba1e4f8f02243a844fed0deec97bde9fb21a5cf/pyarrow-21.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:7be45519b830f7c24b21d630a31d48bcebfd5d4d7f9d3bdb49da9cdf6d764edb", size = 41055619, upload-time = "2025-07-18T00:54:42.172Z" }, + { url = "https://files.pythonhosted.org/packages/44/28/b6672962639e85dc0ac36f71ab3a8f5f38e01b51343d7aa372a6b56fa3f3/pyarrow-21.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:26bfd95f6bff443ceae63c65dc7e048670b7e98bc892210acba7e4995d3d4b51", size = 42733488, upload-time = "2025-07-18T00:54:47.132Z" }, + { url = "https://files.pythonhosted.org/packages/f8/cc/de02c3614874b9089c94eac093f90ca5dfa6d5afe45de3ba847fd950fdf1/pyarrow-21.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:bd04ec08f7f8bd113c55868bd3fc442a9db67c27af098c5f814a3091e71cc61a", size = 43329159, upload-time = "2025-07-18T00:54:51.686Z" }, + { url = "https://files.pythonhosted.org/packages/a6/3e/99473332ac40278f196e105ce30b79ab8affab12f6194802f2593d6b0be2/pyarrow-21.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9b0b14b49ac10654332a805aedfc0147fb3469cbf8ea951b3d040dab12372594", size = 45050567, upload-time = "2025-07-18T00:54:56.679Z" }, + { url = "https://files.pythonhosted.org/packages/7b/f5/c372ef60593d713e8bfbb7e0c743501605f0ad00719146dc075faf11172b/pyarrow-21.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:9d9f8bcb4c3be7738add259738abdeddc363de1b80e3310e04067aa1ca596634", size = 26217959, upload-time = "2025-07-18T00:55:00.482Z" }, + { url = "https://files.pythonhosted.org/packages/94/dc/80564a3071a57c20b7c32575e4a0120e8a330ef487c319b122942d665960/pyarrow-21.0.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:c077f48aab61738c237802836fc3844f85409a46015635198761b0d6a688f87b", size = 31243234, upload-time = "2025-07-18T00:55:03.812Z" }, + { url = "https://files.pythonhosted.org/packages/ea/cc/3b51cb2db26fe535d14f74cab4c79b191ed9a8cd4cbba45e2379b5ca2746/pyarrow-21.0.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:689f448066781856237eca8d1975b98cace19b8dd2ab6145bf49475478bcaa10", size = 32714370, upload-time = "2025-07-18T00:55:07.495Z" }, + { url = "https://files.pythonhosted.org/packages/24/11/a4431f36d5ad7d83b87146f515c063e4d07ef0b7240876ddb885e6b44f2e/pyarrow-21.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:479ee41399fcddc46159a551705b89c05f11e8b8cb8e968f7fec64f62d91985e", size = 41135424, upload-time = "2025-07-18T00:55:11.461Z" }, + { url = "https://files.pythonhosted.org/packages/74/dc/035d54638fc5d2971cbf1e987ccd45f1091c83bcf747281cf6cc25e72c88/pyarrow-21.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:40ebfcb54a4f11bcde86bc586cbd0272bac0d516cfa539c799c2453768477569", size = 42823810, upload-time = "2025-07-18T00:55:16.301Z" }, + { url = "https://files.pythonhosted.org/packages/2e/3b/89fced102448a9e3e0d4dded1f37fa3ce4700f02cdb8665457fcc8015f5b/pyarrow-21.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8d58d8497814274d3d20214fbb24abcad2f7e351474357d552a8d53bce70c70e", size = 43391538, upload-time = "2025-07-18T00:55:23.82Z" }, + { url = "https://files.pythonhosted.org/packages/fb/bb/ea7f1bd08978d39debd3b23611c293f64a642557e8141c80635d501e6d53/pyarrow-21.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:585e7224f21124dd57836b1530ac8f2df2afc43c861d7bf3d58a4870c42ae36c", size = 45120056, upload-time = "2025-07-18T00:55:28.231Z" }, + { url = "https://files.pythonhosted.org/packages/6e/0b/77ea0600009842b30ceebc3337639a7380cd946061b620ac1a2f3cb541e2/pyarrow-21.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:555ca6935b2cbca2c0e932bedd853e9bc523098c39636de9ad4693b5b1df86d6", size = 26220568, upload-time = "2025-07-18T00:55:32.122Z" }, + { url = "https://files.pythonhosted.org/packages/ca/d4/d4f817b21aacc30195cf6a46ba041dd1be827efa4a623cc8bf39a1c2a0c0/pyarrow-21.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:3a302f0e0963db37e0a24a70c56cf91a4faa0bca51c23812279ca2e23481fccd", size = 31160305, upload-time = "2025-07-18T00:55:35.373Z" }, + { url = "https://files.pythonhosted.org/packages/a2/9c/dcd38ce6e4b4d9a19e1d36914cb8e2b1da4e6003dd075474c4cfcdfe0601/pyarrow-21.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:b6b27cf01e243871390474a211a7922bfbe3bda21e39bc9160daf0da3fe48876", size = 32684264, upload-time = "2025-07-18T00:55:39.303Z" }, + { url = "https://files.pythonhosted.org/packages/4f/74/2a2d9f8d7a59b639523454bec12dba35ae3d0a07d8ab529dc0809f74b23c/pyarrow-21.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:e72a8ec6b868e258a2cd2672d91f2860ad532d590ce94cdf7d5e7ec674ccf03d", size = 41108099, upload-time = "2025-07-18T00:55:42.889Z" }, + { url = "https://files.pythonhosted.org/packages/ad/90/2660332eeb31303c13b653ea566a9918484b6e4d6b9d2d46879a33ab0622/pyarrow-21.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b7ae0bbdc8c6674259b25bef5d2a1d6af5d39d7200c819cf99e07f7dfef1c51e", size = 42829529, upload-time = "2025-07-18T00:55:47.069Z" }, + { url = "https://files.pythonhosted.org/packages/33/27/1a93a25c92717f6aa0fca06eb4700860577d016cd3ae51aad0e0488ac899/pyarrow-21.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:58c30a1729f82d201627c173d91bd431db88ea74dcaa3885855bc6203e433b82", size = 43367883, upload-time = "2025-07-18T00:55:53.069Z" }, + { url = "https://files.pythonhosted.org/packages/05/d9/4d09d919f35d599bc05c6950095e358c3e15148ead26292dfca1fb659b0c/pyarrow-21.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:072116f65604b822a7f22945a7a6e581cfa28e3454fdcc6939d4ff6090126623", size = 45133802, upload-time = "2025-07-18T00:55:57.714Z" }, + { url = "https://files.pythonhosted.org/packages/71/30/f3795b6e192c3ab881325ffe172e526499eb3780e306a15103a2764916a2/pyarrow-21.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:cf56ec8b0a5c8c9d7021d6fd754e688104f9ebebf1bf4449613c9531f5346a18", size = 26203175, upload-time = "2025-07-18T00:56:01.364Z" }, + { url = "https://files.pythonhosted.org/packages/16/ca/c7eaa8e62db8fb37ce942b1ea0c6d7abfe3786ca193957afa25e71b81b66/pyarrow-21.0.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:e99310a4ebd4479bcd1964dff9e14af33746300cb014aa4a3781738ac63baf4a", size = 31154306, upload-time = "2025-07-18T00:56:04.42Z" }, + { url = "https://files.pythonhosted.org/packages/ce/e8/e87d9e3b2489302b3a1aea709aaca4b781c5252fcb812a17ab6275a9a484/pyarrow-21.0.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:d2fe8e7f3ce329a71b7ddd7498b3cfac0eeb200c2789bd840234f0dc271a8efe", size = 32680622, upload-time = "2025-07-18T00:56:07.505Z" }, + { url = "https://files.pythonhosted.org/packages/84/52/79095d73a742aa0aba370c7942b1b655f598069489ab387fe47261a849e1/pyarrow-21.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:f522e5709379d72fb3da7785aa489ff0bb87448a9dc5a75f45763a795a089ebd", size = 41104094, upload-time = "2025-07-18T00:56:10.994Z" }, + { url = "https://files.pythonhosted.org/packages/89/4b/7782438b551dbb0468892a276b8c789b8bbdb25ea5c5eb27faadd753e037/pyarrow-21.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:69cbbdf0631396e9925e048cfa5bce4e8c3d3b41562bbd70c685a8eb53a91e61", size = 42825576, upload-time = "2025-07-18T00:56:15.569Z" }, + { url = "https://files.pythonhosted.org/packages/b3/62/0f29de6e0a1e33518dec92c65be0351d32d7ca351e51ec5f4f837a9aab91/pyarrow-21.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:731c7022587006b755d0bdb27626a1a3bb004bb56b11fb30d98b6c1b4718579d", size = 43368342, upload-time = "2025-07-18T00:56:19.531Z" }, + { url = "https://files.pythonhosted.org/packages/90/c7/0fa1f3f29cf75f339768cc698c8ad4ddd2481c1742e9741459911c9ac477/pyarrow-21.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:dc56bc708f2d8ac71bd1dcb927e458c93cec10b98eb4120206a4091db7b67b99", size = 45131218, upload-time = "2025-07-18T00:56:23.347Z" }, + { url = "https://files.pythonhosted.org/packages/01/63/581f2076465e67b23bc5a37d4a2abff8362d389d29d8105832e82c9c811c/pyarrow-21.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:186aa00bca62139f75b7de8420f745f2af12941595bbbfa7ed3870ff63e25636", size = 26087551, upload-time = "2025-07-18T00:56:26.758Z" }, + { url = "https://files.pythonhosted.org/packages/c9/ab/357d0d9648bb8241ee7348e564f2479d206ebe6e1c47ac5027c2e31ecd39/pyarrow-21.0.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:a7a102574faa3f421141a64c10216e078df467ab9576684d5cd696952546e2da", size = 31290064, upload-time = "2025-07-18T00:56:30.214Z" }, + { url = "https://files.pythonhosted.org/packages/3f/8a/5685d62a990e4cac2043fc76b4661bf38d06efed55cf45a334b455bd2759/pyarrow-21.0.0-cp313-cp313t-macosx_12_0_x86_64.whl", hash = "sha256:1e005378c4a2c6db3ada3ad4c217b381f6c886f0a80d6a316fe586b90f77efd7", size = 32727837, upload-time = "2025-07-18T00:56:33.935Z" }, + { url = "https://files.pythonhosted.org/packages/fc/de/c0828ee09525c2bafefd3e736a248ebe764d07d0fd762d4f0929dbc516c9/pyarrow-21.0.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:65f8e85f79031449ec8706b74504a316805217b35b6099155dd7e227eef0d4b6", size = 41014158, upload-time = "2025-07-18T00:56:37.528Z" }, + { url = "https://files.pythonhosted.org/packages/6e/26/a2865c420c50b7a3748320b614f3484bfcde8347b2639b2b903b21ce6a72/pyarrow-21.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:3a81486adc665c7eb1a2bde0224cfca6ceaba344a82a971ef059678417880eb8", size = 42667885, upload-time = "2025-07-18T00:56:41.483Z" }, + { url = "https://files.pythonhosted.org/packages/0a/f9/4ee798dc902533159250fb4321267730bc0a107d8c6889e07c3add4fe3a5/pyarrow-21.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:fc0d2f88b81dcf3ccf9a6ae17f89183762c8a94a5bdcfa09e05cfe413acf0503", size = 43276625, upload-time = "2025-07-18T00:56:48.002Z" }, + { url = "https://files.pythonhosted.org/packages/5a/da/e02544d6997037a4b0d22d8e5f66bc9315c3671371a8b18c79ade1cefe14/pyarrow-21.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6299449adf89df38537837487a4f8d3bd91ec94354fdd2a7d30bc11c48ef6e79", size = 44951890, upload-time = "2025-07-18T00:56:52.568Z" }, + { url = "https://files.pythonhosted.org/packages/e5/4e/519c1bc1876625fe6b71e9a28287c43ec2f20f73c658b9ae1d485c0c206e/pyarrow-21.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:222c39e2c70113543982c6b34f3077962b44fca38c0bd9e68bb6781534425c10", size = 26371006, upload-time = "2025-07-18T00:56:56.379Z" }, ] [[package]] name = "pybtex" -version = "0.24.0" +version = "0.25.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "latexcodec" }, { name = "pyyaml" }, - { name = "six" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/46/9b/fd39836a6397fb363446d83075a7b9c2cc562f4c449292e039ed36084376/pybtex-0.24.0.tar.gz", hash = "sha256:818eae35b61733e5c007c3fcd2cfb75ed1bc8b4173c1f70b56cc4c0802d34755", size = 402879, upload-time = "2021-01-17T20:02:27.328Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5f/bc/c2be05ca72f8c103670e983df8be26d1e288bc6556f487fa8cccaa27779f/pybtex-0.25.1.tar.gz", hash = "sha256:9eaf90267c7e83e225af89fea65c370afbf65f458220d3946a9e3049e1eca491", size = 406157, upload-time = "2025-06-26T13:27:41.903Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ad/5f/40d8e90f985a05133a8895fc454c6127ecec3de8b095dd35bba91382f803/pybtex-0.24.0-py2.py3-none-any.whl", hash = "sha256:e1e0c8c69998452fea90e9179aa2a98ab103f3eed894405b7264e517cc2fcc0f", size = 561354, upload-time = "2021-01-17T20:02:23.696Z" }, + { url = "https://files.pythonhosted.org/packages/25/68/ceb5d6679baa326261f5d3e5113d9cfed6efef2810afd9f18bffb8ed312b/pybtex-0.25.1-py2.py3-none-any.whl", hash = "sha256:9053b0d619409a0a83f38abad5d9921de5f7b3ede00742beafcd9f10ad0d8c5c", size = 127437, upload-time = "2025-06-26T13:27:43.585Z" }, ] [[package]] @@ -3029,104 +3593,136 @@ wheels = [ [[package]] name = "pycodestyle" -version = "2.13.0" +version = "2.14.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/04/6e/1f4a62078e4d95d82367f24e685aef3a672abfd27d1a868068fed4ed2254/pycodestyle-2.13.0.tar.gz", hash = "sha256:c8415bf09abe81d9c7f872502a6eee881fbe85d8763dd5b9924bb0a01d67efae", size = 39312, upload-time = "2025-03-29T17:33:30.669Z" } +sdist = { url = "https://files.pythonhosted.org/packages/11/e0/abfd2a0d2efe47670df87f3e3a0e2edda42f055053c85361f19c0e2c1ca8/pycodestyle-2.14.0.tar.gz", hash = "sha256:c4b5b517d278089ff9d0abdec919cd97262a3367449ea1c8b49b91529167b783", size = 39472, upload-time = "2025-06-20T18:49:48.75Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/07/be/b00116df1bfb3e0bb5b45e29d604799f7b91dd861637e4d448b4e09e6a3e/pycodestyle-2.13.0-py2.py3-none-any.whl", hash = "sha256:35863c5974a271c7a726ed228a14a4f6daf49df369d8c50cd9a6f58a5e143ba9", size = 31424, upload-time = "2025-03-29T17:33:29.405Z" }, + { url = "https://files.pythonhosted.org/packages/d7/27/a58ddaf8c588a3ef080db9d0b7e0b97215cee3a45df74f3a94dbbf5c893a/pycodestyle-2.14.0-py2.py3-none-any.whl", hash = "sha256:dd6bf7cb4ee77f8e016f9c8e74a35ddd9f67e1d5fd4184d86c3b98e07099f42d", size = 31594, upload-time = "2025-06-20T18:49:47.491Z" }, ] [[package]] name = "pycparser" -version = "2.22" +version = "2.23" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736, upload-time = "2024-03-30T13:22:22.564Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/cf/d2d3b9f5699fb1e4615c8e32ff220203e43b248e1dfcc6736ad9057731ca/pycparser-2.23.tar.gz", hash = "sha256:78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2", size = 173734, upload-time = "2025-09-09T13:23:47.91Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552, upload-time = "2024-03-30T13:22:20.476Z" }, + { url = "https://files.pythonhosted.org/packages/a0/e3/59cd50310fc9b59512193629e1984c1f95e5c8ae6e5d8c69532ccc65a7fe/pycparser-2.23-py3-none-any.whl", hash = "sha256:e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934", size = 118140, upload-time = "2025-09-09T13:23:46.651Z" }, ] [[package]] name = "pydantic" -version = "2.6.0" +version = "2.11.9" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "annotated-types" }, { name = "pydantic-core" }, { name = "typing-extensions" }, + { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/78/6c/87e7c6e46206e27b3037acdf637906c4be500a0b1dd7ccbb805a72b9f494/pydantic-2.6.0.tar.gz", hash = "sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf", size = 677208, upload-time = "2024-01-29T14:39:05.927Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ff/5d/09a551ba512d7ca404d785072700d3f6727a02f6f3c24ecfd081c7cf0aa8/pydantic-2.11.9.tar.gz", hash = "sha256:6b8ffda597a14812a7975c90b82a8a2e777d9257aba3453f973acd3c032a18e2", size = 788495, upload-time = "2025-09-13T11:26:39.325Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e4/37/3ffe6e7daa1ea1b4bf5228807a92ccbae538cf57c0c50b93564c310c11a8/pydantic-2.6.0-py3-none-any.whl", hash = "sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae", size = 394201, upload-time = "2024-01-29T14:39:01.673Z" }, + { url = "https://files.pythonhosted.org/packages/3e/d3/108f2006987c58e76691d5ae5d200dd3e0f532cb4e5fa3560751c3a1feba/pydantic-2.11.9-py3-none-any.whl", hash = "sha256:c42dd626f5cfc1c6950ce6205ea58c93efa406da65f479dcb4029d5934857da2", size = 444855, upload-time = "2025-09-13T11:26:36.909Z" }, ] [[package]] name = "pydantic-core" -version = "2.16.1" +version = "2.33.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a0/a7/61d013c73773bb03d02de9de8e4e5b2ed2c100dc98ae7046d54485ecf5d4/pydantic_core-2.16.1.tar.gz", hash = "sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34", size = 368201, upload-time = "2024-01-19T13:13:18.107Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/eb/7c/72819fce116e969f45497206cb84966d99d0b2a8be0173cc3d57b29ee0ff/pydantic_core-2.16.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948", size = 1903838, upload-time = "2024-01-19T13:09:53.921Z" }, - { url = "https://files.pythonhosted.org/packages/a2/a3/142ef9bb5417a67dab782ca5add911fa76a3bef21a5b77ad343683e8c584/pydantic_core-2.16.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f", size = 1745896, upload-time = "2024-01-19T13:09:57.839Z" }, - { url = "https://files.pythonhosted.org/packages/57/08/a6c8392e7d7d08dca77d7cd8531349eeba779b10a0648520ebb23f48fcbf/pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f", size = 1900593, upload-time = "2024-01-19T13:10:03.791Z" }, - { url = "https://files.pythonhosted.org/packages/14/03/3f67a97640dd7b252dfecc7f9ba0e4c84cb520885af2f219c40b54e4a297/pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8", size = 1915761, upload-time = "2024-01-19T13:10:05.856Z" }, - { url = "https://files.pythonhosted.org/packages/f2/49/0f7e0aad58a2620306e190064d316430d455bda1bc40ce35be96252c1346/pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48", size = 2065743, upload-time = "2024-01-19T13:10:07.828Z" }, - { url = "https://files.pythonhosted.org/packages/3f/b6/eb8f5511810d8d7d2c18228ee2a414fe200678a897e938186189dc128b05/pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f", size = 3259998, upload-time = "2024-01-19T13:10:10.346Z" }, - { url = "https://files.pythonhosted.org/packages/a0/7e/96bd9a40f6d5edc3b4566951acac7a8f26e423c77001a7dc065d6200052a/pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798", size = 2180287, upload-time = "2024-01-19T13:10:12.942Z" }, - { url = "https://files.pythonhosted.org/packages/1e/2a/2fd602af15a12dddf0d5b931639ce1a190ca5256e93e68fae209bcb05118/pydantic_core-2.16.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17", size = 1973184, upload-time = "2024-01-19T13:10:15.399Z" }, - { url = "https://files.pythonhosted.org/packages/8b/84/8f2ec2a6e961236c202a9ef36f9f498d19ae9305cfbbd4135dab4a8273ed/pydantic_core-2.16.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388", size = 2071546, upload-time = "2024-01-19T13:10:17.09Z" }, - { url = "https://files.pythonhosted.org/packages/8e/d3/abdf35c0fad643b82cba7cec1d5875b8ffdaf2d775ee12f916c301edcbad/pydantic_core-2.16.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7", size = 2212439, upload-time = "2024-01-19T13:10:18.867Z" }, - { url = "https://files.pythonhosted.org/packages/85/60/d78c76282beec6260c449331f428e17a228836895a24a8648cbe95aead59/pydantic_core-2.16.1-cp310-none-win32.whl", hash = "sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4", size = 1761095, upload-time = "2024-01-19T13:10:24.711Z" }, - { url = "https://files.pythonhosted.org/packages/71/1a/e6a75d2768b8e53eebdc6146a839c0d5629b1f985b3a44d39e4829c8d39e/pydantic_core-2.16.1-cp310-none-win_amd64.whl", hash = "sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c", size = 1927450, upload-time = "2024-01-19T13:10:26.49Z" }, - { url = "https://files.pythonhosted.org/packages/25/95/1357b15051f458a15eeaf03d35d0f7466ec8979eb69061dacc6d8f7924d9/pydantic_core-2.16.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da", size = 1900014, upload-time = "2024-01-19T13:10:28.366Z" }, - { url = "https://files.pythonhosted.org/packages/3d/98/11b5400a80f527f5d6c5bdb71a77f4cf3754bef5d512d94471ecbc32e2ff/pydantic_core-2.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e", size = 1745364, upload-time = "2024-01-19T13:10:30.127Z" }, - { url = "https://files.pythonhosted.org/packages/20/25/55f41724bd64954fba6e661d6afa3d5a1b3561c0611f5c4e523fee3da640/pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4", size = 1899615, upload-time = "2024-01-19T13:10:32.623Z" }, - { url = "https://files.pythonhosted.org/packages/54/5e/6fcf81f868f634f8a163867df89303033cc18985daf693f34475f40117aa/pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f", size = 1914379, upload-time = "2024-01-19T13:10:34.879Z" }, - { url = "https://files.pythonhosted.org/packages/2c/8b/930c415a0c1f24ceb602f208b698c21ab80b869a416803ac2a45fdecc006/pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91", size = 2064696, upload-time = "2024-01-19T13:10:44.581Z" }, - { url = "https://files.pythonhosted.org/packages/ac/ef/4a84325e7734d8f0b29295b99498ef4c78c8b7ba4b2db51a2b27b6627a17/pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c", size = 3258963, upload-time = "2024-01-19T13:10:47.071Z" }, - { url = "https://files.pythonhosted.org/packages/98/19/955b83b6e33b7ac27914860069a918fe49b29c13bc149dc7bb7c60954812/pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d", size = 2179513, upload-time = "2024-01-19T13:10:49.529Z" }, - { url = "https://files.pythonhosted.org/packages/a2/14/70e69bcca582a02b939c4eb2ba6df5f474aa0e9c41103986952d3a05da27/pydantic_core-2.16.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864", size = 1972273, upload-time = "2024-01-19T13:10:51.363Z" }, - { url = "https://files.pythonhosted.org/packages/fc/35/994e7001bacfc117d22c64b87426b2fd7539ee9963f7159e7ec60f100720/pydantic_core-2.16.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7", size = 2070589, upload-time = "2024-01-19T13:10:53.382Z" }, - { url = "https://files.pythonhosted.org/packages/e3/e1/7a47532a6046636af04c58710517bc7dc9a76bface7a74edb7913a98950f/pydantic_core-2.16.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae", size = 2211305, upload-time = "2024-01-19T13:10:56.601Z" }, - { url = "https://files.pythonhosted.org/packages/77/e9/d05dc5c8e7c5698026f01de6affe04015eb719e216a4c4b70cd7946c2785/pydantic_core-2.16.1-cp311-none-win32.whl", hash = "sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1", size = 1760415, upload-time = "2024-01-19T13:10:58.616Z" }, - { url = "https://files.pythonhosted.org/packages/b2/47/14bf2397a5daa0cc1b99306499a39525966b73aba4d31b17e373e229f07e/pydantic_core-2.16.1-cp311-none-win_amd64.whl", hash = "sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c", size = 1926977, upload-time = "2024-01-19T13:11:00.94Z" }, - { url = "https://files.pythonhosted.org/packages/df/e0/0b108193cb405c21bdb3a6d95fdf4d0ae65accd187d9df5b8011c484f275/pydantic_core-2.16.1-cp311-none-win_arm64.whl", hash = "sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b", size = 1844114, upload-time = "2024-01-19T13:11:02.813Z" }, - { url = "https://files.pythonhosted.org/packages/82/8f/d83953f652b0048fd8be62b6eabed7e3397008b6d050bd080ab78d3e6d14/pydantic_core-2.16.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51", size = 1868275, upload-time = "2024-01-19T13:11:05.114Z" }, - { url = "https://files.pythonhosted.org/packages/c1/33/f627f1d31f7986ade7396237a8b5904c629837878978e9eeb400f85b3e29/pydantic_core-2.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66", size = 1718240, upload-time = "2024-01-19T13:11:07.22Z" }, - { url = "https://files.pythonhosted.org/packages/f5/7e/1bcd8ce164868c40d841528f92e5f1f5a1a6cb705a063c425cd00f8b1eef/pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13", size = 1873433, upload-time = "2024-01-19T13:11:09.345Z" }, - { url = "https://files.pythonhosted.org/packages/32/aa/f5d9139609e30a6f174c6d6c8f3f64aafaf6f43dab7974b8642a10d08758/pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49", size = 1875493, upload-time = "2024-01-19T13:11:11.167Z" }, - { url = "https://files.pythonhosted.org/packages/39/25/46cef345a191d8d6c6458420029ce25edfbe96833075d3a474ae2aeae106/pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137", size = 2046585, upload-time = "2024-01-19T13:11:13.134Z" }, - { url = "https://files.pythonhosted.org/packages/62/2d/2c9af3e66486b7159ab2f05712e2d46fc7ee29e2cbd7f4e5e1feaac48e12/pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253", size = 3077749, upload-time = "2024-01-19T13:11:15.1Z" }, - { url = "https://files.pythonhosted.org/packages/86/61/55607ffc05fc1caac9b6754552bc907c4af469f5585cb3599aa855865923/pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54", size = 2179456, upload-time = "2024-01-19T13:11:17.806Z" }, - { url = "https://files.pythonhosted.org/packages/2b/64/383663f04e58333fe15b30da863fe28a76f00b676dded6f4b6f1c23fc9c5/pydantic_core-2.16.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e", size = 1953184, upload-time = "2024-01-19T13:11:20.052Z" }, - { url = "https://files.pythonhosted.org/packages/be/cd/3a975ba2bd4493a5bae904891d5239fa3e8dd59be39b1845d3361e1a412e/pydantic_core-2.16.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8", size = 2052616, upload-time = "2024-01-19T13:11:22.547Z" }, - { url = "https://files.pythonhosted.org/packages/ac/5e/b26ef5ba2266b4dd6fd93964c1923f32032034100cfed167f2f85df7a3da/pydantic_core-2.16.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f", size = 2172342, upload-time = "2024-01-19T13:11:24.491Z" }, - { url = "https://files.pythonhosted.org/packages/39/81/fce7fcd7f877ab56c2e677366da41abdd3071dcc6592354bc96f0135c43a/pydantic_core-2.16.1-cp312-none-win32.whl", hash = "sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212", size = 1764252, upload-time = "2024-01-19T13:11:26.369Z" }, - { url = "https://files.pythonhosted.org/packages/ab/de/32c35c9d84652da17673357295d19016cc4768fea0dd071d8c09ca4cacbb/pydantic_core-2.16.1-cp312-none-win_amd64.whl", hash = "sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f", size = 1881165, upload-time = "2024-01-19T13:11:28.259Z" }, - { url = "https://files.pythonhosted.org/packages/61/db/78cafc630e4b3193c5a702ae20916349f5f0ef5bdaa918565549f3160059/pydantic_core-2.16.1-cp312-none-win_arm64.whl", hash = "sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd", size = 1853531, upload-time = "2024-01-19T13:11:30.057Z" }, - { url = "https://files.pythonhosted.org/packages/5f/06/f92cb6971b2163488f2d908095a35bdc38a8b30970674abb1473d407e07e/pydantic_core-2.16.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76", size = 1906426, upload-time = "2024-01-19T13:12:38.384Z" }, - { url = "https://files.pythonhosted.org/packages/18/f1/f4d89d38dc82c2f973e2487504bb3cd30d62340a249e64871f1fe6293049/pydantic_core-2.16.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394", size = 1766939, upload-time = "2024-01-19T13:12:40.661Z" }, - { url = "https://files.pythonhosted.org/packages/4c/10/e714042114547b25a2c792ad72251447407eef9449501573b3fc20b8d02c/pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0", size = 1911451, upload-time = "2024-01-19T13:12:43.499Z" }, - { url = "https://files.pythonhosted.org/packages/30/e3/802b56e1207ae8c581bdfb838340c4bd404a7a924a5c26ea3fe615db116e/pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c", size = 2036878, upload-time = "2024-01-19T13:12:46.24Z" }, - { url = "https://files.pythonhosted.org/packages/6c/dd/572df4ced42416411c19d427b37e247cbeddbc8c05f5586aea62cce6b753/pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05", size = 1968197, upload-time = "2024-01-19T13:12:48.227Z" }, - { url = "https://files.pythonhosted.org/packages/87/53/af8141c6ca8b8e2a8e73314bcd313554fc9d01e063f02e13386dff3000b8/pydantic_core-2.16.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0", size = 2083060, upload-time = "2024-01-19T13:12:50.407Z" }, - { url = "https://files.pythonhosted.org/packages/c8/71/6459ce68d47a30a932b97b49f1c6f66743821c4a410dd10c41b0e347d264/pydantic_core-2.16.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc", size = 2216609, upload-time = "2024-01-19T13:12:52.511Z" }, - { url = "https://files.pythonhosted.org/packages/ec/20/b76edaec257bf631929dcbefaaa7a7c621ede570a99140f404b6278a433b/pydantic_core-2.16.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2", size = 2027647, upload-time = "2024-01-19T13:12:55.22Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195, upload-time = "2025-04-23T18:33:52.104Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/92/b31726561b5dae176c2d2c2dc43a9c5bfba5d32f96f8b4c0a600dd492447/pydantic_core-2.33.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2b3d326aaef0c0399d9afffeb6367d5e26ddc24d351dbc9c636840ac355dc5d8", size = 2028817, upload-time = "2025-04-23T18:30:43.919Z" }, + { url = "https://files.pythonhosted.org/packages/a3/44/3f0b95fafdaca04a483c4e685fe437c6891001bf3ce8b2fded82b9ea3aa1/pydantic_core-2.33.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e5b2671f05ba48b94cb90ce55d8bdcaaedb8ba00cc5359f6810fc918713983d", size = 1861357, upload-time = "2025-04-23T18:30:46.372Z" }, + { url = "https://files.pythonhosted.org/packages/30/97/e8f13b55766234caae05372826e8e4b3b96e7b248be3157f53237682e43c/pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0069c9acc3f3981b9ff4cdfaf088e98d83440a4c7ea1bc07460af3d4dc22e72d", size = 1898011, upload-time = "2025-04-23T18:30:47.591Z" }, + { url = "https://files.pythonhosted.org/packages/9b/a3/99c48cf7bafc991cc3ee66fd544c0aae8dc907b752f1dad2d79b1b5a471f/pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d53b22f2032c42eaaf025f7c40c2e3b94568ae077a606f006d206a463bc69572", size = 1982730, upload-time = "2025-04-23T18:30:49.328Z" }, + { url = "https://files.pythonhosted.org/packages/de/8e/a5b882ec4307010a840fb8b58bd9bf65d1840c92eae7534c7441709bf54b/pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0405262705a123b7ce9f0b92f123334d67b70fd1f20a9372b907ce1080c7ba02", size = 2136178, upload-time = "2025-04-23T18:30:50.907Z" }, + { url = "https://files.pythonhosted.org/packages/e4/bb/71e35fc3ed05af6834e890edb75968e2802fe98778971ab5cba20a162315/pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4b25d91e288e2c4e0662b8038a28c6a07eaac3e196cfc4ff69de4ea3db992a1b", size = 2736462, upload-time = "2025-04-23T18:30:52.083Z" }, + { url = "https://files.pythonhosted.org/packages/31/0d/c8f7593e6bc7066289bbc366f2235701dcbebcd1ff0ef8e64f6f239fb47d/pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bdfe4b3789761f3bcb4b1ddf33355a71079858958e3a552f16d5af19768fef2", size = 2005652, upload-time = "2025-04-23T18:30:53.389Z" }, + { url = "https://files.pythonhosted.org/packages/d2/7a/996d8bd75f3eda405e3dd219ff5ff0a283cd8e34add39d8ef9157e722867/pydantic_core-2.33.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:efec8db3266b76ef9607c2c4c419bdb06bf335ae433b80816089ea7585816f6a", size = 2113306, upload-time = "2025-04-23T18:30:54.661Z" }, + { url = "https://files.pythonhosted.org/packages/ff/84/daf2a6fb2db40ffda6578a7e8c5a6e9c8affb251a05c233ae37098118788/pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:031c57d67ca86902726e0fae2214ce6770bbe2f710dc33063187a68744a5ecac", size = 2073720, upload-time = "2025-04-23T18:30:56.11Z" }, + { url = "https://files.pythonhosted.org/packages/77/fb/2258da019f4825128445ae79456a5499c032b55849dbd5bed78c95ccf163/pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:f8de619080e944347f5f20de29a975c2d815d9ddd8be9b9b7268e2e3ef68605a", size = 2244915, upload-time = "2025-04-23T18:30:57.501Z" }, + { url = "https://files.pythonhosted.org/packages/d8/7a/925ff73756031289468326e355b6fa8316960d0d65f8b5d6b3a3e7866de7/pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:73662edf539e72a9440129f231ed3757faab89630d291b784ca99237fb94db2b", size = 2241884, upload-time = "2025-04-23T18:30:58.867Z" }, + { url = "https://files.pythonhosted.org/packages/0b/b0/249ee6d2646f1cdadcb813805fe76265745c4010cf20a8eba7b0e639d9b2/pydantic_core-2.33.2-cp310-cp310-win32.whl", hash = "sha256:0a39979dcbb70998b0e505fb1556a1d550a0781463ce84ebf915ba293ccb7e22", size = 1910496, upload-time = "2025-04-23T18:31:00.078Z" }, + { url = "https://files.pythonhosted.org/packages/66/ff/172ba8f12a42d4b552917aa65d1f2328990d3ccfc01d5b7c943ec084299f/pydantic_core-2.33.2-cp310-cp310-win_amd64.whl", hash = "sha256:b0379a2b24882fef529ec3b4987cb5d003b9cda32256024e6fe1586ac45fc640", size = 1955019, upload-time = "2025-04-23T18:31:01.335Z" }, + { url = "https://files.pythonhosted.org/packages/3f/8d/71db63483d518cbbf290261a1fc2839d17ff89fce7089e08cad07ccfce67/pydantic_core-2.33.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4c5b0a576fb381edd6d27f0a85915c6daf2f8138dc5c267a57c08a62900758c7", size = 2028584, upload-time = "2025-04-23T18:31:03.106Z" }, + { url = "https://files.pythonhosted.org/packages/24/2f/3cfa7244ae292dd850989f328722d2aef313f74ffc471184dc509e1e4e5a/pydantic_core-2.33.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e799c050df38a639db758c617ec771fd8fb7a5f8eaaa4b27b101f266b216a246", size = 1855071, upload-time = "2025-04-23T18:31:04.621Z" }, + { url = "https://files.pythonhosted.org/packages/b3/d3/4ae42d33f5e3f50dd467761304be2fa0a9417fbf09735bc2cce003480f2a/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc46a01bf8d62f227d5ecee74178ffc448ff4e5197c756331f71efcc66dc980f", size = 1897823, upload-time = "2025-04-23T18:31:06.377Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f3/aa5976e8352b7695ff808599794b1fba2a9ae2ee954a3426855935799488/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a144d4f717285c6d9234a66778059f33a89096dfb9b39117663fd8413d582dcc", size = 1983792, upload-time = "2025-04-23T18:31:07.93Z" }, + { url = "https://files.pythonhosted.org/packages/d5/7a/cda9b5a23c552037717f2b2a5257e9b2bfe45e687386df9591eff7b46d28/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cf6373c21bc80b2e0dc88444f41ae60b2f070ed02095754eb5a01df12256de", size = 2136338, upload-time = "2025-04-23T18:31:09.283Z" }, + { url = "https://files.pythonhosted.org/packages/2b/9f/b8f9ec8dd1417eb9da784e91e1667d58a2a4a7b7b34cf4af765ef663a7e5/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dc625f4aa79713512d1976fe9f0bc99f706a9dee21dfd1810b4bbbf228d0e8a", size = 2730998, upload-time = "2025-04-23T18:31:11.7Z" }, + { url = "https://files.pythonhosted.org/packages/47/bc/cd720e078576bdb8255d5032c5d63ee5c0bf4b7173dd955185a1d658c456/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b21b5549499972441da4758d662aeea93f1923f953e9cbaff14b8b9565aef", size = 2003200, upload-time = "2025-04-23T18:31:13.536Z" }, + { url = "https://files.pythonhosted.org/packages/ca/22/3602b895ee2cd29d11a2b349372446ae9727c32e78a94b3d588a40fdf187/pydantic_core-2.33.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bdc25f3681f7b78572699569514036afe3c243bc3059d3942624e936ec93450e", size = 2113890, upload-time = "2025-04-23T18:31:15.011Z" }, + { url = "https://files.pythonhosted.org/packages/ff/e6/e3c5908c03cf00d629eb38393a98fccc38ee0ce8ecce32f69fc7d7b558a7/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fe5b32187cbc0c862ee201ad66c30cf218e5ed468ec8dc1cf49dec66e160cc4d", size = 2073359, upload-time = "2025-04-23T18:31:16.393Z" }, + { url = "https://files.pythonhosted.org/packages/12/e7/6a36a07c59ebefc8777d1ffdaf5ae71b06b21952582e4b07eba88a421c79/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:bc7aee6f634a6f4a95676fcb5d6559a2c2a390330098dba5e5a5f28a2e4ada30", size = 2245883, upload-time = "2025-04-23T18:31:17.892Z" }, + { url = "https://files.pythonhosted.org/packages/16/3f/59b3187aaa6cc0c1e6616e8045b284de2b6a87b027cce2ffcea073adf1d2/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:235f45e5dbcccf6bd99f9f472858849f73d11120d76ea8707115415f8e5ebebf", size = 2241074, upload-time = "2025-04-23T18:31:19.205Z" }, + { url = "https://files.pythonhosted.org/packages/e0/ed/55532bb88f674d5d8f67ab121a2a13c385df382de2a1677f30ad385f7438/pydantic_core-2.33.2-cp311-cp311-win32.whl", hash = "sha256:6368900c2d3ef09b69cb0b913f9f8263b03786e5b2a387706c5afb66800efd51", size = 1910538, upload-time = "2025-04-23T18:31:20.541Z" }, + { url = "https://files.pythonhosted.org/packages/fe/1b/25b7cccd4519c0b23c2dd636ad39d381abf113085ce4f7bec2b0dc755eb1/pydantic_core-2.33.2-cp311-cp311-win_amd64.whl", hash = "sha256:1e063337ef9e9820c77acc768546325ebe04ee38b08703244c1309cccc4f1bab", size = 1952909, upload-time = "2025-04-23T18:31:22.371Z" }, + { url = "https://files.pythonhosted.org/packages/49/a9/d809358e49126438055884c4366a1f6227f0f84f635a9014e2deb9b9de54/pydantic_core-2.33.2-cp311-cp311-win_arm64.whl", hash = "sha256:6b99022f1d19bc32a4c2a0d544fc9a76e3be90f0b3f4af413f87d38749300e65", size = 1897786, upload-time = "2025-04-23T18:31:24.161Z" }, + { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000, upload-time = "2025-04-23T18:31:25.863Z" }, + { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996, upload-time = "2025-04-23T18:31:27.341Z" }, + { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957, upload-time = "2025-04-23T18:31:28.956Z" }, + { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199, upload-time = "2025-04-23T18:31:31.025Z" }, + { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296, upload-time = "2025-04-23T18:31:32.514Z" }, + { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109, upload-time = "2025-04-23T18:31:33.958Z" }, + { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028, upload-time = "2025-04-23T18:31:39.095Z" }, + { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044, upload-time = "2025-04-23T18:31:41.034Z" }, + { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881, upload-time = "2025-04-23T18:31:42.757Z" }, + { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034, upload-time = "2025-04-23T18:31:44.304Z" }, + { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187, upload-time = "2025-04-23T18:31:45.891Z" }, + { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628, upload-time = "2025-04-23T18:31:47.819Z" }, + { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866, upload-time = "2025-04-23T18:31:49.635Z" }, + { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894, upload-time = "2025-04-23T18:31:51.609Z" }, + { url = "https://files.pythonhosted.org/packages/46/8c/99040727b41f56616573a28771b1bfa08a3d3fe74d3d513f01251f79f172/pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f", size = 2015688, upload-time = "2025-04-23T18:31:53.175Z" }, + { url = "https://files.pythonhosted.org/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6", size = 1844808, upload-time = "2025-04-23T18:31:54.79Z" }, + { url = "https://files.pythonhosted.org/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef", size = 1885580, upload-time = "2025-04-23T18:31:57.393Z" }, + { url = "https://files.pythonhosted.org/packages/3b/2a/953581f343c7d11a304581156618c3f592435523dd9d79865903272c256a/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a", size = 1973859, upload-time = "2025-04-23T18:31:59.065Z" }, + { url = "https://files.pythonhosted.org/packages/e6/55/f1a813904771c03a3f97f676c62cca0c0a4138654107c1b61f19c644868b/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916", size = 2120810, upload-time = "2025-04-23T18:32:00.78Z" }, + { url = "https://files.pythonhosted.org/packages/aa/c3/053389835a996e18853ba107a63caae0b9deb4a276c6b472931ea9ae6e48/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a", size = 2676498, upload-time = "2025-04-23T18:32:02.418Z" }, + { url = "https://files.pythonhosted.org/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d", size = 2000611, upload-time = "2025-04-23T18:32:04.152Z" }, + { url = "https://files.pythonhosted.org/packages/59/a7/63ef2fed1837d1121a894d0ce88439fe3e3b3e48c7543b2a4479eb99c2bd/pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56", size = 2107924, upload-time = "2025-04-23T18:32:06.129Z" }, + { url = "https://files.pythonhosted.org/packages/04/8f/2551964ef045669801675f1cfc3b0d74147f4901c3ffa42be2ddb1f0efc4/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5", size = 2063196, upload-time = "2025-04-23T18:32:08.178Z" }, + { url = "https://files.pythonhosted.org/packages/26/bd/d9602777e77fc6dbb0c7db9ad356e9a985825547dce5ad1d30ee04903918/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e", size = 2236389, upload-time = "2025-04-23T18:32:10.242Z" }, + { url = "https://files.pythonhosted.org/packages/42/db/0e950daa7e2230423ab342ae918a794964b053bec24ba8af013fc7c94846/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162", size = 2239223, upload-time = "2025-04-23T18:32:12.382Z" }, + { url = "https://files.pythonhosted.org/packages/58/4d/4f937099c545a8a17eb52cb67fe0447fd9a373b348ccfa9a87f141eeb00f/pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849", size = 1900473, upload-time = "2025-04-23T18:32:14.034Z" }, + { url = "https://files.pythonhosted.org/packages/a0/75/4a0a9bac998d78d889def5e4ef2b065acba8cae8c93696906c3a91f310ca/pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9", size = 1955269, upload-time = "2025-04-23T18:32:15.783Z" }, + { url = "https://files.pythonhosted.org/packages/f9/86/1beda0576969592f1497b4ce8e7bc8cbdf614c352426271b1b10d5f0aa64/pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9", size = 1893921, upload-time = "2025-04-23T18:32:18.473Z" }, + { url = "https://files.pythonhosted.org/packages/a4/7d/e09391c2eebeab681df2b74bfe6c43422fffede8dc74187b2b0bf6fd7571/pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac", size = 1806162, upload-time = "2025-04-23T18:32:20.188Z" }, + { url = "https://files.pythonhosted.org/packages/f1/3d/847b6b1fed9f8ed3bb95a9ad04fbd0b212e832d4f0f50ff4d9ee5a9f15cf/pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5", size = 1981560, upload-time = "2025-04-23T18:32:22.354Z" }, + { url = "https://files.pythonhosted.org/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9", size = 1935777, upload-time = "2025-04-23T18:32:25.088Z" }, + { url = "https://files.pythonhosted.org/packages/30/68/373d55e58b7e83ce371691f6eaa7175e3a24b956c44628eb25d7da007917/pydantic_core-2.33.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5c4aa4e82353f65e548c476b37e64189783aa5384903bfea4f41580f255fddfa", size = 2023982, upload-time = "2025-04-23T18:32:53.14Z" }, + { url = "https://files.pythonhosted.org/packages/a4/16/145f54ac08c96a63d8ed6442f9dec17b2773d19920b627b18d4f10a061ea/pydantic_core-2.33.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d946c8bf0d5c24bf4fe333af284c59a19358aa3ec18cb3dc4370080da1e8ad29", size = 1858412, upload-time = "2025-04-23T18:32:55.52Z" }, + { url = "https://files.pythonhosted.org/packages/41/b1/c6dc6c3e2de4516c0bb2c46f6a373b91b5660312342a0cf5826e38ad82fa/pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87b31b6846e361ef83fedb187bb5b4372d0da3f7e28d85415efa92d6125d6e6d", size = 1892749, upload-time = "2025-04-23T18:32:57.546Z" }, + { url = "https://files.pythonhosted.org/packages/12/73/8cd57e20afba760b21b742106f9dbdfa6697f1570b189c7457a1af4cd8a0/pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa9d91b338f2df0508606f7009fde642391425189bba6d8c653afd80fd6bb64e", size = 2067527, upload-time = "2025-04-23T18:32:59.771Z" }, + { url = "https://files.pythonhosted.org/packages/e3/d5/0bb5d988cc019b3cba4a78f2d4b3854427fc47ee8ec8e9eaabf787da239c/pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2058a32994f1fde4ca0480ab9d1e75a0e8c87c22b53a3ae66554f9af78f2fe8c", size = 2108225, upload-time = "2025-04-23T18:33:04.51Z" }, + { url = "https://files.pythonhosted.org/packages/f1/c5/00c02d1571913d496aabf146106ad8239dc132485ee22efe08085084ff7c/pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:0e03262ab796d986f978f79c943fc5f620381be7287148b8010b4097f79a39ec", size = 2069490, upload-time = "2025-04-23T18:33:06.391Z" }, + { url = "https://files.pythonhosted.org/packages/22/a8/dccc38768274d3ed3a59b5d06f59ccb845778687652daa71df0cab4040d7/pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:1a8695a8d00c73e50bff9dfda4d540b7dee29ff9b8053e38380426a85ef10052", size = 2237525, upload-time = "2025-04-23T18:33:08.44Z" }, + { url = "https://files.pythonhosted.org/packages/d4/e7/4f98c0b125dda7cf7ccd14ba936218397b44f50a56dd8c16a3091df116c3/pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:fa754d1850735a0b0e03bcffd9d4b4343eb417e47196e4485d9cca326073a42c", size = 2238446, upload-time = "2025-04-23T18:33:10.313Z" }, + { url = "https://files.pythonhosted.org/packages/ce/91/2ec36480fdb0b783cd9ef6795753c1dea13882f2e68e73bce76ae8c21e6a/pydantic_core-2.33.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a11c8d26a50bfab49002947d3d237abe4d9e4b5bdc8846a63537b6488e197808", size = 2066678, upload-time = "2025-04-23T18:33:12.224Z" }, + { url = "https://files.pythonhosted.org/packages/7b/27/d4ae6487d73948d6f20dddcd94be4ea43e74349b56eba82e9bdee2d7494c/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:dd14041875d09cc0f9308e37a6f8b65f5585cf2598a53aa0123df8b129d481f8", size = 2025200, upload-time = "2025-04-23T18:33:14.199Z" }, + { url = "https://files.pythonhosted.org/packages/f1/b8/b3cb95375f05d33801024079b9392a5ab45267a63400bf1866e7ce0f0de4/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d87c561733f66531dced0da6e864f44ebf89a8fba55f31407b00c2f7f9449593", size = 1859123, upload-time = "2025-04-23T18:33:16.555Z" }, + { url = "https://files.pythonhosted.org/packages/05/bc/0d0b5adeda59a261cd30a1235a445bf55c7e46ae44aea28f7bd6ed46e091/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f82865531efd18d6e07a04a17331af02cb7a651583c418df8266f17a63c6612", size = 1892852, upload-time = "2025-04-23T18:33:18.513Z" }, + { url = "https://files.pythonhosted.org/packages/3e/11/d37bdebbda2e449cb3f519f6ce950927b56d62f0b84fd9cb9e372a26a3d5/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bfb5112df54209d820d7bf9317c7a6c9025ea52e49f46b6a2060104bba37de7", size = 2067484, upload-time = "2025-04-23T18:33:20.475Z" }, + { url = "https://files.pythonhosted.org/packages/8c/55/1f95f0a05ce72ecb02a8a8a1c3be0579bbc29b1d5ab68f1378b7bebc5057/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:64632ff9d614e5eecfb495796ad51b0ed98c453e447a76bcbeeb69615079fc7e", size = 2108896, upload-time = "2025-04-23T18:33:22.501Z" }, + { url = "https://files.pythonhosted.org/packages/53/89/2b2de6c81fa131f423246a9109d7b2a375e83968ad0800d6e57d0574629b/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f889f7a40498cc077332c7ab6b4608d296d852182211787d4f3ee377aaae66e8", size = 2069475, upload-time = "2025-04-23T18:33:24.528Z" }, + { url = "https://files.pythonhosted.org/packages/b8/e9/1f7efbe20d0b2b10f6718944b5d8ece9152390904f29a78e68d4e7961159/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:de4b83bb311557e439b9e186f733f6c645b9417c84e2eb8203f3f820a4b988bf", size = 2239013, upload-time = "2025-04-23T18:33:26.621Z" }, + { url = "https://files.pythonhosted.org/packages/3c/b2/5309c905a93811524a49b4e031e9851a6b00ff0fb668794472ea7746b448/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:82f68293f055f51b51ea42fafc74b6aad03e70e191799430b90c13d643059ebb", size = 2238715, upload-time = "2025-04-23T18:33:28.656Z" }, + { url = "https://files.pythonhosted.org/packages/32/56/8a7ca5d2cd2cda1d245d34b1c9a942920a718082ae8e54e5f3e5a58b7add/pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1", size = 2066757, upload-time = "2025-04-23T18:33:30.645Z" }, ] [[package]] name = "pydantic-settings" -version = "2.2.1" +version = "2.11.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pydantic" }, { name = "python-dotenv" }, + { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/00/a4/89191c3cce6e6f79b734bfe81d3a8f176d21b57b034689cfbdc57d61c412/pydantic_settings-2.2.1.tar.gz", hash = "sha256:00b9f6a5e95553590434c0fa01ead0b216c3e10bc54ae02e37f359948643c5ed", size = 35495, upload-time = "2024-02-19T19:50:21.398Z" } +sdist = { url = "https://files.pythonhosted.org/packages/20/c5/dbbc27b814c71676593d1c3f718e6cd7d4f00652cefa24b75f7aa3efb25e/pydantic_settings-2.11.0.tar.gz", hash = "sha256:d0e87a1c7d33593beb7194adb8470fc426e95ba02af83a0f23474a04c9a08180", size = 188394, upload-time = "2025-09-24T14:19:11.764Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/99/ee/24ec87e3a91426497c5a2b9880662d19cfd640342d477334ebc60fc2c276/pydantic_settings-2.2.1-py3-none-any.whl", hash = "sha256:0235391d26db4d2190cb9b31051c4b46882d28a51533f97440867f012d4da091", size = 13150, upload-time = "2024-02-19T19:50:19.747Z" }, + { url = "https://files.pythonhosted.org/packages/83/d6/887a1ff844e64aa823fb4905978d882a633cfe295c32eacad582b78a7d8b/pydantic_settings-2.11.0-py3-none-any.whl", hash = "sha256:fe2cea3413b9530d10f3a5875adffb17ada5c1e1bab0b2885546d7310415207c", size = 48608, upload-time = "2025-09-24T14:19:10.015Z" }, ] [[package]] @@ -3161,11 +3757,11 @@ wheels = [ [[package]] name = "pygments" -version = "2.19.1" +version = "2.19.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", size = 4968581, upload-time = "2025-01-06T17:26:30.443Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293, upload-time = "2025-01-06T17:26:25.553Z" }, + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, ] [[package]] @@ -3210,56 +3806,68 @@ wheels = [ [[package]] name = "pyogrio" -version = "0.11.0" +version = "0.11.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi" }, { name = "numpy" }, { name = "packaging" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/54/c3/5e30f913ad8a975abe6f6582a2d3cf321bdf40fd696940d9283c63880c7a/pyogrio-0.11.0.tar.gz", hash = "sha256:a7e0a97bc10c0d7204f6bf52e1b928cba0554c35a907c32b23065aed1ed97b3f", size = 286915, upload-time = "2025-05-08T15:20:17.843Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/37/9e/813389a76caeb1068af64c39bf66eaa466a2551bdf1399a9a6464cd811b1/pyogrio-0.11.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:47e7aa1e2f345a08009a38c14db16ccdadb31313919efe0903228265df3e1962", size = 19492014, upload-time = "2025-05-08T15:18:32.563Z" }, - { url = "https://files.pythonhosted.org/packages/93/db/91466f22c0973039cc6f672875c937ad9ecb5c251c2a7166b2b8343dde50/pyogrio-0.11.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:ad9734da7c95cb272f311c1a8ea61181f3ae0f539d5da5af5c88acee0fd6b707", size = 20678459, upload-time = "2025-05-08T15:18:36.072Z" }, - { url = "https://files.pythonhosted.org/packages/ea/f9/bfd6a466cb5e91d8ebac03c18af7ac45f88ac9261d02a579691813db2c89/pyogrio-0.11.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1784372868fb20ba32422ce803ad464b39ec26b41587576122b3884ba7533f2c", size = 26860694, upload-time = "2025-05-08T15:18:39.6Z" }, - { url = "https://files.pythonhosted.org/packages/2d/78/080530eeb256f4f435bf3e920d493484fe1ce218f3b8f5c57766079a16b6/pyogrio-0.11.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:c307b54b939a1ade5caf737c9297d4c0f8af314c455bc79228fe9bee2fe2e183", size = 26367627, upload-time = "2025-05-08T15:18:43.188Z" }, - { url = "https://files.pythonhosted.org/packages/76/04/5e5fd9ab3f84c030785de7f572c5a526f6bb3b261efe769ee911e04d98ff/pyogrio-0.11.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:6013501408a0f676ffb9758e83b4e06ef869885d6315417e098c4d3737ba1e39", size = 27551023, upload-time = "2025-05-08T15:18:46.576Z" }, - { url = "https://files.pythonhosted.org/packages/13/6d/88a501f8a2481a6c8d825d91705e74df018614c8a13040af3b3f02503ddc/pyogrio-0.11.0-cp310-cp310-win_amd64.whl", hash = "sha256:2b6f2c56f01ea552480e6f7d3deb1228e3babd35a0f314aa076505e2c4f55711", size = 19176301, upload-time = "2025-05-08T15:18:49.455Z" }, - { url = "https://files.pythonhosted.org/packages/a0/d1/035667f23d8e7066471c500636e9ee77b159a9d92f32b5e4944d541aad69/pyogrio-0.11.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:862b79d36d39c1f755739bde00cfd82fd1034fd287084d9202b14e3a85576f5c", size = 19492247, upload-time = "2025-05-08T15:18:52.632Z" }, - { url = "https://files.pythonhosted.org/packages/0b/da/558be674dbbf18b9cb2f31b8c9d5691e1a42100bdbd159b4771f608f01e2/pyogrio-0.11.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:21b1924c02513185e3df1301dfc9d313f1450d7c366f8629e26757f51ba31003", size = 20678449, upload-time = "2025-05-08T15:18:55.461Z" }, - { url = "https://files.pythonhosted.org/packages/c4/78/3761a80818a148ba9544abaf9c41bef5353054054c5ed16872e65cbf9dd6/pyogrio-0.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:103313202414ffa7378016791d287442541af60ac57b78536f0c67f3a82904a4", size = 27068276, upload-time = "2025-05-08T15:18:59.217Z" }, - { url = "https://files.pythonhosted.org/packages/ad/6c/9a6faa094b33054957b4eef389106aa4f94e9dbdd384c9db5f03d6a4d379/pyogrio-0.11.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:2e48956e68c41a17cbf3df32d979553de2839a082a7a9b0beef14948aa4ca5df", size = 26571289, upload-time = "2025-05-08T15:19:02.592Z" }, - { url = "https://files.pythonhosted.org/packages/25/19/6a24c2052f2f99190482c83dcf8ecdc02bde9c8dbc2d604f088f9bbb5dbb/pyogrio-0.11.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:ec5666cc8bf97aef9993c998198f85fe209b8a9ad4737696d3d2ab573b3e9a5b", size = 27769581, upload-time = "2025-05-08T15:19:05.843Z" }, - { url = "https://files.pythonhosted.org/packages/3d/ad/afc1cdea5dac6afb95d561c9ec73c27722d494d8faab7e0452cf71fba71f/pyogrio-0.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:8ad3744e679de2a31b1a885dc5ea260e3482f0d5e71461a88f431cda8d536b17", size = 19178064, upload-time = "2025-05-08T15:19:09.446Z" }, - { url = "https://files.pythonhosted.org/packages/22/39/927036db0c550d35efb4d998dfe90c56515bc14d6ed0166b6c01ca28be24/pyogrio-0.11.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:a6f114d32c5c8a157c6fbf74e3ecfe69be7efb29363102f2aad14c9813de637a", size = 19491944, upload-time = "2025-05-08T15:19:12.359Z" }, - { url = "https://files.pythonhosted.org/packages/49/78/92db6ca3650996ca80287e59b799aa303ccecd4f1cd677f15832e466d9e2/pyogrio-0.11.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:596e3f26e792882e35f25715634c12c1d6658a3d8d178c0089a9462c56b48be5", size = 20674571, upload-time = "2025-05-08T15:19:16.541Z" }, - { url = "https://files.pythonhosted.org/packages/c8/a4/bc37ddcee3f47c79197887d6386d31d97182a94cff6a5093cad37d873bc5/pyogrio-0.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11d693ca24e80bd7ede7b27ea3598593be5b41fb7cec315a57f5bb24d15faef8", size = 27033355, upload-time = "2025-05-08T15:19:20.449Z" }, - { url = "https://files.pythonhosted.org/packages/5c/6f/984a513d5deab8ca94dde440084cab3eda5684825d70395a3bd21c2a9e5d/pyogrio-0.11.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:961100786ae44e2f27b4049b5262e378a3cba07872fc22051905fed8b4ce42db", size = 26528521, upload-time = "2025-05-08T15:19:23.863Z" }, - { url = "https://files.pythonhosted.org/packages/39/d6/6026ef8903aef2a15b7ba5ad84c74ca2ce67d29fc6d99e07262a65061619/pyogrio-0.11.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:334563d24defc5d706bd2a1fa7d7433e33140e64b0fb9cb4afc715e4f6035c2b", size = 27734210, upload-time = "2025-05-08T15:19:32.185Z" }, - { url = "https://files.pythonhosted.org/packages/94/81/232d4808e54e026b9059f966bc2a4a5de7e42f42e4bd4e3897e1b31ea87f/pyogrio-0.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:bf1f9128136abcbd1605d6fc6bf8c529c2092558246d8046ee6fbc383c550074", size = 19165401, upload-time = "2025-05-08T15:19:35.482Z" }, - { url = "https://files.pythonhosted.org/packages/ba/2b/098692d9be9defb5d40327af50ffdc0c5486a4724c06b3d1f757cd5abd6d/pyogrio-0.11.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:0b39e34199460dcd6a606db184094e69bcba89d1babb9a76cee74a134b53b232", size = 19485661, upload-time = "2025-05-08T15:19:38.915Z" }, - { url = "https://files.pythonhosted.org/packages/00/06/5c197d76ea33d4667f427309b108281e7a3a0224e9a32c3fdb3c54e47133/pyogrio-0.11.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:5a952ef7a68fdfaf796a91b88c706108cb50ddd0a74096418e84aab7ac8a38be", size = 20667327, upload-time = "2025-05-08T15:19:41.847Z" }, - { url = "https://files.pythonhosted.org/packages/9d/24/08715971846562624e1f185fc6f93d0a305950cc9167ac0b761f571c3c62/pyogrio-0.11.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4527abcac23bdac5781f9be9a7dd55fccd9967c7241a8e53de8ea1a06ea0cc2b", size = 27007054, upload-time = "2025-05-08T15:19:45.723Z" }, - { url = "https://files.pythonhosted.org/packages/0d/07/c6c6d33e5b052b6bb785904477e906ed880509bc3748862ef59ed017739a/pyogrio-0.11.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:373a29d56a9016978aff57b88a640b5a8c3024dba7be1c059ad5af4ba932b59e", size = 26493010, upload-time = "2025-05-08T15:19:49.379Z" }, - { url = "https://files.pythonhosted.org/packages/9f/bb/e12bebcf2668bcb83736cc76177f36ee300ac8069880fca3a73f8753fc70/pyogrio-0.11.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:ea2a131369ae8e62e30fa4f7e1442074d4828417d05ded660acea04a6a1d199b", size = 27710440, upload-time = "2025-05-08T15:19:53.204Z" }, - { url = "https://files.pythonhosted.org/packages/46/8f/a9d134fbbf213db259b79f5bd5bbe7e3de1ff34fbe2a0b0be9d7d2919323/pyogrio-0.11.0-cp313-cp313-win_amd64.whl", hash = "sha256:bf041d65bd1e89a4bb61845579c2963f2cca1bb33cde79f4ec2c0e0dc6f93afb", size = 19163300, upload-time = "2025-05-08T15:19:56.67Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/bf/1d/ae0340237207664e2da1b77f2cdbcb5f81fd0fc9f3200a48ca993a5e12ef/pyogrio-0.11.1.tar.gz", hash = "sha256:e1441dc9c866f10d8e6ae7ea9249a10c1f57ea921b1f19a5b0977ab91ef8082c", size = 287267, upload-time = "2025-08-02T20:19:20.167Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/37/c4d114514dd5508356f67601320cdcb8743800a8bdd1f3fe6bfa4021a2f0/pyogrio-0.11.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:838ead7df8388d938ce848354e384ae5aa46fe7c5f74f9da2d58f064bda053f7", size = 19455667, upload-time = "2025-08-02T20:18:02.931Z" }, + { url = "https://files.pythonhosted.org/packages/a4/d8/929745fb3dc0f00ff8d0202f69cfe8c2f42b9b99b1ded601a17a71904463/pyogrio-0.11.1-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:6f51aa9fc3632e6dcb3dd5562b4a56a3a31850c3f630aef3587d5889a1f65275", size = 20642769, upload-time = "2025-08-02T20:18:05.413Z" }, + { url = "https://files.pythonhosted.org/packages/c5/9b/c2b51051be2152c7dd278ead47b5221912090c5802eadc7966c6005704b0/pyogrio-0.11.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4982107653ce30de395678b50a1ee00299a4cfcb41043778f1b66c5911b8adbe", size = 26845241, upload-time = "2025-08-02T20:18:07.841Z" }, + { url = "https://files.pythonhosted.org/packages/7d/7c/cea8b75f409670ed2526dbf0cf74fd5efd2f7536ada6459646371989187b/pyogrio-0.11.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:7b20ffbf72013d464012d8f0f69322459a6528bef08c85f85b8a42b056f730b0", size = 26376340, upload-time = "2025-08-02T20:18:10.402Z" }, + { url = "https://files.pythonhosted.org/packages/15/87/7a180f3fadb9a388312e789feee023cd20d1d589724ef093ebee4d784b9a/pyogrio-0.11.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:5b8d60ead740b366cdc2f3b076d21349e5a5d4b9a0e6726922c5a031206b93b2", size = 27519685, upload-time = "2025-08-02T20:18:13.159Z" }, + { url = "https://files.pythonhosted.org/packages/f5/15/fb6ed944f76aff08a98618f1ff184ad4dc3eb026b4a74d7e5cc01125be43/pyogrio-0.11.1-cp310-cp310-win_amd64.whl", hash = "sha256:1948027b2809f2248f69b069ab9833d56b53658f182a3b418d12d3d3eb9959d7", size = 19224975, upload-time = "2025-08-02T20:18:15.844Z" }, + { url = "https://files.pythonhosted.org/packages/d0/81/50441f029609bcb883ee2738bdee3f81a998a11e4052b6ad0ef0ae4c0ae5/pyogrio-0.11.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:d36162ddc1a309bb941a3cfb550b8f88c862c67ef2f52df6460100e5e958bbc6", size = 19459279, upload-time = "2025-08-02T20:18:18.955Z" }, + { url = "https://files.pythonhosted.org/packages/0d/4a/a3a2fae13e42ee98574b18591ddb66bca88bc1fa812c017437b42c85569f/pyogrio-0.11.1-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:845c78d5e7c9ec1c7d00250c07e144e5fe504fdb4ccdc141d9413f85b8c55c91", size = 20646364, upload-time = "2025-08-02T20:18:21.171Z" }, + { url = "https://files.pythonhosted.org/packages/7d/f2/1dd5795f8cccf8f97d5ac7f28fee31fc1afc5f6bce9fab2ac4486ed3af44/pyogrio-0.11.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50aa869509f189fa1bff4d90d2d4c7860b963e693af85f2957646306e882b631", size = 26999659, upload-time = "2025-08-02T20:18:25.482Z" }, + { url = "https://files.pythonhosted.org/packages/ea/ef/4f8d61afb6798edde8bd6d2721032e868ff78a25395d9512f7e5e50b23c4/pyogrio-0.11.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:dd0f44dd2d849d32aea3f73647c74083996917e446479645bf93de6656160f2d", size = 26523036, upload-time = "2025-08-02T20:18:28.761Z" }, + { url = "https://files.pythonhosted.org/packages/e7/99/81d9a441ac7709407750f359813889b9a3f6076999cb9ae8893d5ba7c707/pyogrio-0.11.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:36b910d4037694b2935b5b1c1eb757dcc2906dca05cb2992cbdaf1291b54ff97", size = 27678041, upload-time = "2025-08-02T20:18:31.103Z" }, + { url = "https://files.pythonhosted.org/packages/74/4e/a5d00c30e5ca3f4133a425fe41531b219139ad4451ea8edc3520f221f9dd/pyogrio-0.11.1-cp311-cp311-win_amd64.whl", hash = "sha256:cb744097f302f19dcc5c93ee5e9cfd707b864c9a418e399f0908406a60003728", size = 19226619, upload-time = "2025-08-02T20:18:34.261Z" }, + { url = "https://files.pythonhosted.org/packages/72/d3/2ba967ca4255cdfa130a6d8b437826488567b4bc1bb417c442bb43d62611/pyogrio-0.11.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:f186456ebe5d5f61e7bd883bad25a59d43d6304178d4f0d3e03273f42b40a4cc", size = 19450110, upload-time = "2025-08-02T20:18:36.643Z" }, + { url = "https://files.pythonhosted.org/packages/5a/e1/3bc29ae71d24a91cf91f7413541e50acb7de2ce609587168ce2f4b405d3b/pyogrio-0.11.1-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:b8a199bc0e421eac444af96942b7553268e43d0cadf30d0d6d41017de05b7e9e", size = 20635348, upload-time = "2025-08-02T20:18:38.714Z" }, + { url = "https://files.pythonhosted.org/packages/8c/b2/ec453e544370a90b4e8b2c6afa72501963ddc33afe883f0e5ba34af6a80f/pyogrio-0.11.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afce80b4b32f043fcf76a50e8572e3ad8d9d3e6abbbfa6137f0975ba55c4eeb8", size = 26980190, upload-time = "2025-08-02T20:18:41.197Z" }, + { url = "https://files.pythonhosted.org/packages/b1/f6/337f122b58f697f807bf9093b606b33b3ef52fe06a21e88d8a9230844cc3/pyogrio-0.11.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:0cfd79caf0b8cb7bbf30b419dff7f21509169efcf4d431172c61b44fe1029dba", size = 26474852, upload-time = "2025-08-02T20:18:43.74Z" }, + { url = "https://files.pythonhosted.org/packages/e6/0f/8193a4a879f1284d693793e59a2e185c8fd3c47cb562b0e5daf7289997ea/pyogrio-0.11.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ab3aa6dbf2441d2407ce052233f2966324a3cff752bd43d99e4c779ea54e0a16", size = 27659721, upload-time = "2025-08-02T20:18:46.398Z" }, + { url = "https://files.pythonhosted.org/packages/5f/7d/3e818625a435fcc196ea441a6ca8495f87dd1f1eebeb95760eb401ea425d/pyogrio-0.11.1-cp312-cp312-win_amd64.whl", hash = "sha256:cd10035eb3b5e5a43bdafbd777339d2274e9b75972658364f0ce31c4d3400d1e", size = 19219350, upload-time = "2025-08-02T20:18:48.866Z" }, + { url = "https://files.pythonhosted.org/packages/f2/68/86328e36d010ee565ce0c65cdf9b830afcb1fb5972f537fe1cc561a49247/pyogrio-0.11.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:3b368c597357ff262f3b46591ded86409462ee594ef42556708b090d121f873c", size = 19445347, upload-time = "2025-08-02T20:18:51.088Z" }, + { url = "https://files.pythonhosted.org/packages/20/bc/34bd87641fc2ecc6d842d6d758bbaa8d58aea4d36aa6a1111cbc9d450e74/pyogrio-0.11.1-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:1cb82cfd3493f32396e9c3f9255e17885610f62a323870947f4e04dd59bc3595", size = 20630594, upload-time = "2025-08-02T20:18:53.176Z" }, + { url = "https://files.pythonhosted.org/packages/68/9a/41b72ffa3e21354eb9afbbae855c86b94dbf06b22e89c16a807cc8b22bd2/pyogrio-0.11.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d61aae22e67030fd354f03e21c6462537bf56160134dd8663709335a5a46b28", size = 26929440, upload-time = "2025-08-02T20:18:55.614Z" }, + { url = "https://files.pythonhosted.org/packages/42/dd/c968c49a2e9b7c219eac0cc504241c21ef789f1f1b34d33780508cea9764/pyogrio-0.11.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:76150a3cd787c31628191c7abc6f8c796660125852fb65ae15dd7be1e9196816", size = 26433178, upload-time = "2025-08-02T20:18:58.274Z" }, + { url = "https://files.pythonhosted.org/packages/89/a9/79eca15094f7806a3adcf0bb976ab4346b0fb1bd87956c1933df44546c14/pyogrio-0.11.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e929452f6988c0365dd32ff2485d9488160a709fee28743abbbc18d663169ed0", size = 27616835, upload-time = "2025-08-02T20:19:01.112Z" }, + { url = "https://files.pythonhosted.org/packages/2b/f3/7722bc81e9eee39b528c1cbc6289a26d2d3b1b187491ed8493457d6a3a0e/pyogrio-0.11.1-cp313-cp313-win_amd64.whl", hash = "sha256:d6d56862b89a05fccd7211171c88806b6ec9b5effb79bf807cce0a57c1f2a606", size = 19219088, upload-time = "2025-08-02T20:19:03.732Z" }, ] [[package]] name = "pyparsing" -version = "3.2.3" +version = "3.2.5" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bb/22/f1129e69d94ffff626bdb5c835506b3a5b4f3d070f17ea295e12c2c6f60f/pyparsing-3.2.3.tar.gz", hash = "sha256:b9c13f1ab8b3b542f72e28f634bad4de758ab3ce4546e4301970ad6fa77c38be", size = 1088608, upload-time = "2025-03-25T05:01:28.114Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/a5/181488fc2b9d093e3972d2a472855aae8a03f000592dbfce716a512b3359/pyparsing-3.2.5.tar.gz", hash = "sha256:2df8d5b7b2802ef88e8d016a2eb9c7aeaa923529cd251ed0fe4608275d4105b6", size = 1099274, upload-time = "2025-09-21T04:11:06.277Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/05/e7/df2285f3d08fee213f2d041540fa4fc9ca6c2d44cf36d3a035bf2a8d2bcc/pyparsing-3.2.3-py3-none-any.whl", hash = "sha256:a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf", size = 111120, upload-time = "2025-03-25T05:01:24.908Z" }, + { url = "https://files.pythonhosted.org/packages/10/5e/1aa9a93198c6b64513c9d7752de7422c06402de6600a8767da1524f9570b/pyparsing-3.2.5-py3-none-any.whl", hash = "sha256:e38a4f02064cf41fe6593d328d0512495ad1f3d8a91c4f73fc401b3079a59a5e", size = 113890, upload-time = "2025-09-21T04:11:04.117Z" }, ] +[[package]] +name = "pypatch" +version = "1.0.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7e/1c/6379e3feb25bd1cc70320ffa2f6410f799a8348b0e385d04b3bbdc19246f/pypatch-1.0.2.tar.gz", hash = "sha256:13e8c40a6e6ae9dbd84bba73f1e15a13c078f153e771f7c8c43429ce5062dc93", size = 16499, upload-time = "2024-10-08T14:12:01.352Z" } + [[package]] name = "pyproj" version = "3.7.1" source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11'", +] dependencies = [ - { name = "certifi" }, + { name = "certifi", marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/67/10/a8480ea27ea4bbe896c168808854d00f2a9b49f95c0319ddcbba693c8a90/pyproj-3.7.1.tar.gz", hash = "sha256:60d72facd7b6b79853f19744779abcd3f804c4e0d4fa8815469db20c9f640a47", size = 226339, upload-time = "2025-02-16T04:28:46.621Z" } wheels = [ @@ -3297,6 +3905,76 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/98/df/68a2b7f5fb6400c64aad82d72bcc4bc531775e62eedff993a77c780defd0/pyproj-3.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:d3caac7473be22b6d6e102dde6c46de73b96bc98334e577dfaee9886f102ea2e", size = 6266573, upload-time = "2025-02-16T04:28:44.727Z" }, ] +[[package]] +name = "pyproj" +version = "3.7.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14'", + "python_full_version >= '3.12' and python_full_version < '3.14'", + "python_full_version == '3.11.*'", +] +dependencies = [ + { name = "certifi", marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/04/90/67bd7260b4ea9b8b20b4f58afef6c223ecb3abf368eb4ec5bc2cdef81b49/pyproj-3.7.2.tar.gz", hash = "sha256:39a0cf1ecc7e282d1d30f36594ebd55c9fae1fda8a2622cee5d100430628f88c", size = 226279, upload-time = "2025-08-14T12:05:42.18Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a6/bd/f205552cd1713b08f93b09e39a3ec99edef0b3ebbbca67b486fdf1abe2de/pyproj-3.7.2-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:2514d61f24c4e0bb9913e2c51487ecdaeca5f8748d8313c933693416ca41d4d5", size = 6227022, upload-time = "2025-08-14T12:03:51.474Z" }, + { url = "https://files.pythonhosted.org/packages/75/4c/9a937e659b8b418ab573c6d340d27e68716928953273e0837e7922fcac34/pyproj-3.7.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:8693ca3892d82e70de077701ee76dd13d7bca4ae1c9d1e739d72004df015923a", size = 4625810, upload-time = "2025-08-14T12:03:53.808Z" }, + { url = "https://files.pythonhosted.org/packages/c0/7d/a9f41e814dc4d1dc54e95b2ccaf0b3ebe3eb18b1740df05fe334724c3d89/pyproj-3.7.2-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:5e26484d80fea56273ed1555abaea161e9661d81a6c07815d54b8e883d4ceb25", size = 9638694, upload-time = "2025-08-14T12:03:55.669Z" }, + { url = "https://files.pythonhosted.org/packages/ad/ab/9bdb4a6216b712a1f9aab1c0fcbee5d3726f34a366f29c3e8c08a78d6b70/pyproj-3.7.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:281cb92847814e8018010c48b4069ff858a30236638631c1a91dd7bfa68f8a8a", size = 9493977, upload-time = "2025-08-14T12:03:57.937Z" }, + { url = "https://files.pythonhosted.org/packages/c9/db/2db75b1b6190f1137b1c4e8ef6a22e1c338e46320f6329bfac819143e063/pyproj-3.7.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9c8577f0b7bb09118ec2e57e3babdc977127dd66326d6c5d755c76b063e6d9dc", size = 10841151, upload-time = "2025-08-14T12:04:00.271Z" }, + { url = "https://files.pythonhosted.org/packages/89/f7/989643394ba23a286e9b7b3f09981496172f9e0d4512457ffea7dc47ffc7/pyproj-3.7.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a23f59904fac3a5e7364b3aa44d288234af267ca041adb2c2b14a903cd5d3ac5", size = 10751585, upload-time = "2025-08-14T12:04:02.228Z" }, + { url = "https://files.pythonhosted.org/packages/53/6d/ad928fe975a6c14a093c92e6a319ca18f479f3336bb353a740bdba335681/pyproj-3.7.2-cp311-cp311-win32.whl", hash = "sha256:f2af4ed34b2cf3e031a2d85b067a3ecbd38df073c567e04b52fa7a0202afde8a", size = 5908533, upload-time = "2025-08-14T12:04:04.821Z" }, + { url = "https://files.pythonhosted.org/packages/79/e0/b95584605cec9ed50b7ebaf7975d1c4ddeec5a86b7a20554ed8b60042bd7/pyproj-3.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:0b7cb633565129677b2a183c4d807c727d1c736fcb0568a12299383056e67433", size = 6320742, upload-time = "2025-08-14T12:04:06.357Z" }, + { url = "https://files.pythonhosted.org/packages/b7/4d/536e8f93bca808175c2d0a5ac9fdf69b960d8ab6b14f25030dccb07464d7/pyproj-3.7.2-cp311-cp311-win_arm64.whl", hash = "sha256:38b08d85e3a38e455625b80e9eb9f78027c8e2649a21dec4df1f9c3525460c71", size = 6245772, upload-time = "2025-08-14T12:04:08.365Z" }, + { url = "https://files.pythonhosted.org/packages/8d/ab/9893ea9fb066be70ed9074ae543914a618c131ed8dff2da1e08b3a4df4db/pyproj-3.7.2-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:0a9bb26a6356fb5b033433a6d1b4542158fb71e3c51de49b4c318a1dff3aeaab", size = 6219832, upload-time = "2025-08-14T12:04:10.264Z" }, + { url = "https://files.pythonhosted.org/packages/53/78/4c64199146eed7184eb0e85bedec60a4aa8853b6ffe1ab1f3a8b962e70a0/pyproj-3.7.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:567caa03021178861fad27fabde87500ec6d2ee173dd32f3e2d9871e40eebd68", size = 4620650, upload-time = "2025-08-14T12:04:11.978Z" }, + { url = "https://files.pythonhosted.org/packages/b6/ac/14a78d17943898a93ef4f8c6a9d4169911c994e3161e54a7cedeba9d8dde/pyproj-3.7.2-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:c203101d1dc3c038a56cff0447acc515dd29d6e14811406ac539c21eed422b2a", size = 9667087, upload-time = "2025-08-14T12:04:13.964Z" }, + { url = "https://files.pythonhosted.org/packages/b8/be/212882c450bba74fc8d7d35cbd57e4af84792f0a56194819d98106b075af/pyproj-3.7.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:1edc34266c0c23ced85f95a1ee8b47c9035eae6aca5b6b340327250e8e281630", size = 9552797, upload-time = "2025-08-14T12:04:16.624Z" }, + { url = "https://files.pythonhosted.org/packages/ba/c0/c0f25c87b5d2a8686341c53c1792a222a480d6c9caf60311fec12c99ec26/pyproj-3.7.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:aa9f26c21bc0e2dc3d224cb1eb4020cf23e76af179a7c66fea49b828611e4260", size = 10837036, upload-time = "2025-08-14T12:04:18.733Z" }, + { url = "https://files.pythonhosted.org/packages/5d/37/5cbd6772addde2090c91113332623a86e8c7d583eccb2ad02ea634c4a89f/pyproj-3.7.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f9428b318530625cb389b9ddc9c51251e172808a4af79b82809376daaeabe5e9", size = 10775952, upload-time = "2025-08-14T12:04:20.709Z" }, + { url = "https://files.pythonhosted.org/packages/69/a1/dc250e3cf83eb4b3b9a2cf86fdb5e25288bd40037ae449695550f9e96b2f/pyproj-3.7.2-cp312-cp312-win32.whl", hash = "sha256:b3d99ed57d319da042f175f4554fc7038aa4bcecc4ac89e217e350346b742c9d", size = 5898872, upload-time = "2025-08-14T12:04:22.485Z" }, + { url = "https://files.pythonhosted.org/packages/4a/a6/6fe724b72b70f2b00152d77282e14964d60ab092ec225e67c196c9b463e5/pyproj-3.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:11614a054cd86a2ed968a657d00987a86eeb91fdcbd9ad3310478685dc14a128", size = 6312176, upload-time = "2025-08-14T12:04:24.736Z" }, + { url = "https://files.pythonhosted.org/packages/5d/68/915cc32c02a91e76d02c8f55d5a138d6ef9e47a0d96d259df98f4842e558/pyproj-3.7.2-cp312-cp312-win_arm64.whl", hash = "sha256:509a146d1398bafe4f53273398c3bb0b4732535065fa995270e52a9d3676bca3", size = 6233452, upload-time = "2025-08-14T12:04:27.287Z" }, + { url = "https://files.pythonhosted.org/packages/be/14/faf1b90d267cea68d7e70662e7f88cefdb1bc890bd596c74b959e0517a72/pyproj-3.7.2-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:19466e529b1b15eeefdf8ff26b06fa745856c044f2f77bf0edbae94078c1dfa1", size = 6214580, upload-time = "2025-08-14T12:04:28.804Z" }, + { url = "https://files.pythonhosted.org/packages/35/48/da9a45b184d375f62667f62eba0ca68569b0bd980a0bb7ffcc1d50440520/pyproj-3.7.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:c79b9b84c4a626c5dc324c0d666be0bfcebd99f7538d66e8898c2444221b3da7", size = 4615388, upload-time = "2025-08-14T12:04:30.553Z" }, + { url = "https://files.pythonhosted.org/packages/5e/e7/d2b459a4a64bca328b712c1b544e109df88e5c800f7c143cfbc404d39bfb/pyproj-3.7.2-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:ceecf374cacca317bc09e165db38ac548ee3cad07c3609442bd70311c59c21aa", size = 9628455, upload-time = "2025-08-14T12:04:32.435Z" }, + { url = "https://files.pythonhosted.org/packages/f8/85/c2b1706e51942de19076eff082f8495e57d5151364e78b5bef4af4a1d94a/pyproj-3.7.2-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5141a538ffdbe4bfd157421828bb2e07123a90a7a2d6f30fa1462abcfb5ce681", size = 9514269, upload-time = "2025-08-14T12:04:34.599Z" }, + { url = "https://files.pythonhosted.org/packages/34/38/07a9b89ae7467872f9a476883a5bad9e4f4d1219d31060f0f2b282276cbe/pyproj-3.7.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f000841e98ea99acbb7b8ca168d67773b0191de95187228a16110245c5d954d5", size = 10808437, upload-time = "2025-08-14T12:04:36.485Z" }, + { url = "https://files.pythonhosted.org/packages/12/56/fda1daeabbd39dec5b07f67233d09f31facb762587b498e6fc4572be9837/pyproj-3.7.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8115faf2597f281a42ab608ceac346b4eb1383d3b45ab474fd37341c4bf82a67", size = 10745540, upload-time = "2025-08-14T12:04:38.568Z" }, + { url = "https://files.pythonhosted.org/packages/0d/90/c793182cbba65a39a11db2ac6b479fe76c59e6509ae75e5744c344a0da9d/pyproj-3.7.2-cp313-cp313-win32.whl", hash = "sha256:f18c0579dd6be00b970cb1a6719197fceecc407515bab37da0066f0184aafdf3", size = 5896506, upload-time = "2025-08-14T12:04:41.059Z" }, + { url = "https://files.pythonhosted.org/packages/be/0f/747974129cf0d800906f81cd25efd098c96509026e454d4b66868779ab04/pyproj-3.7.2-cp313-cp313-win_amd64.whl", hash = "sha256:bb41c29d5f60854b1075853fe80c58950b398d4ebb404eb532536ac8d2834ed7", size = 6310195, upload-time = "2025-08-14T12:04:42.974Z" }, + { url = "https://files.pythonhosted.org/packages/82/64/fc7598a53172c4931ec6edf5228280663063150625d3f6423b4c20f9daff/pyproj-3.7.2-cp313-cp313-win_arm64.whl", hash = "sha256:2b617d573be4118c11cd96b8891a0b7f65778fa7733ed8ecdb297a447d439100", size = 6230748, upload-time = "2025-08-14T12:04:44.491Z" }, + { url = "https://files.pythonhosted.org/packages/aa/f0/611dd5cddb0d277f94b7af12981f56e1441bf8d22695065d4f0df5218498/pyproj-3.7.2-cp313-cp313t-macosx_13_0_x86_64.whl", hash = "sha256:d27b48f0e81beeaa2b4d60c516c3a1cfbb0c7ff6ef71256d8e9c07792f735279", size = 6241729, upload-time = "2025-08-14T12:04:46.274Z" }, + { url = "https://files.pythonhosted.org/packages/15/93/40bd4a6c523ff9965e480870611aed7eda5aa2c6128c6537345a2b77b542/pyproj-3.7.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:55a3610d75023c7b1c6e583e48ef8f62918e85a2ae81300569d9f104d6684bb6", size = 4652497, upload-time = "2025-08-14T12:04:48.203Z" }, + { url = "https://files.pythonhosted.org/packages/1b/ae/7150ead53c117880b35e0d37960d3138fe640a235feb9605cb9386f50bb0/pyproj-3.7.2-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:8d7349182fa622696787cc9e195508d2a41a64765da9b8a6bee846702b9e6220", size = 9942610, upload-time = "2025-08-14T12:04:49.652Z" }, + { url = "https://files.pythonhosted.org/packages/d8/17/7a4a7eafecf2b46ab64e5c08176c20ceb5844b503eaa551bf12ccac77322/pyproj-3.7.2-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:d230b186eb876ed4f29a7c5ee310144c3a0e44e89e55f65fb3607e13f6db337c", size = 9692390, upload-time = "2025-08-14T12:04:51.731Z" }, + { url = "https://files.pythonhosted.org/packages/c3/55/ae18f040f6410f0ea547a21ada7ef3e26e6c82befa125b303b02759c0e9d/pyproj-3.7.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:237499c7862c578d0369e2b8ac56eec550e391a025ff70e2af8417139dabb41c", size = 11047596, upload-time = "2025-08-14T12:04:53.748Z" }, + { url = "https://files.pythonhosted.org/packages/e6/2e/d3fff4d2909473f26ae799f9dda04caa322c417a51ff3b25763f7d03b233/pyproj-3.7.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8c225f5978abd506fd9a78eaaf794435e823c9156091cabaab5374efb29d7f69", size = 10896975, upload-time = "2025-08-14T12:04:55.875Z" }, + { url = "https://files.pythonhosted.org/packages/f2/bc/8fc7d3963d87057b7b51ebe68c1e7c51c23129eee5072ba6b86558544a46/pyproj-3.7.2-cp313-cp313t-win32.whl", hash = "sha256:2da731876d27639ff9d2d81c151f6ab90a1546455fabd93368e753047be344a2", size = 5953057, upload-time = "2025-08-14T12:04:58.466Z" }, + { url = "https://files.pythonhosted.org/packages/cc/27/ea9809966cc47d2d51e6d5ae631ea895f7c7c7b9b3c29718f900a8f7d197/pyproj-3.7.2-cp313-cp313t-win_amd64.whl", hash = "sha256:f54d91ae18dd23b6c0ab48126d446820e725419da10617d86a1b69ada6d881d3", size = 6375414, upload-time = "2025-08-14T12:04:59.861Z" }, + { url = "https://files.pythonhosted.org/packages/5b/f8/1ef0129fba9a555c658e22af68989f35e7ba7b9136f25758809efec0cd6e/pyproj-3.7.2-cp313-cp313t-win_arm64.whl", hash = "sha256:fc52ba896cfc3214dc9f9ca3c0677a623e8fdd096b257c14a31e719d21ff3fdd", size = 6262501, upload-time = "2025-08-14T12:05:01.39Z" }, + { url = "https://files.pythonhosted.org/packages/42/17/c2b050d3f5b71b6edd0d96ae16c990fdc42a5f1366464a5c2772146de33a/pyproj-3.7.2-cp314-cp314-macosx_13_0_x86_64.whl", hash = "sha256:2aaa328605ace41db050d06bac1adc11f01b71fe95c18661497763116c3a0f02", size = 6214541, upload-time = "2025-08-14T12:05:03.166Z" }, + { url = "https://files.pythonhosted.org/packages/03/68/68ada9c8aea96ded09a66cfd9bf87aa6db8c2edebe93f5bf9b66b0143fbc/pyproj-3.7.2-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:35dccbce8201313c596a970fde90e33605248b66272595c061b511c8100ccc08", size = 4617456, upload-time = "2025-08-14T12:05:04.563Z" }, + { url = "https://files.pythonhosted.org/packages/81/e4/4c50ceca7d0e937977866b02cb64e6ccf4df979a5871e521f9e255df6073/pyproj-3.7.2-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:25b0b7cb0042444c29a164b993c45c1b8013d6c48baa61dc1160d834a277e83b", size = 9615590, upload-time = "2025-08-14T12:05:06.094Z" }, + { url = "https://files.pythonhosted.org/packages/05/1e/ada6fb15a1d75b5bd9b554355a69a798c55a7dcc93b8d41596265c1772e3/pyproj-3.7.2-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:85def3a6388e9ba51f964619aa002a9d2098e77c6454ff47773bb68871024281", size = 9474960, upload-time = "2025-08-14T12:05:07.973Z" }, + { url = "https://files.pythonhosted.org/packages/51/07/9d48ad0a8db36e16f842f2c8a694c1d9d7dcf9137264846bef77585a71f3/pyproj-3.7.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b1bccefec3875ab81eabf49059e2b2ea77362c178b66fd3528c3e4df242f1516", size = 10799478, upload-time = "2025-08-14T12:05:14.102Z" }, + { url = "https://files.pythonhosted.org/packages/85/cf/2f812b529079f72f51ff2d6456b7fef06c01735e5cfd62d54ffb2b548028/pyproj-3.7.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d5371ca114d6990b675247355a801925814eca53e6c4b2f1b5c0a956336ee36e", size = 10710030, upload-time = "2025-08-14T12:05:16.317Z" }, + { url = "https://files.pythonhosted.org/packages/99/9b/4626a19e1f03eba4c0e77b91a6cf0f73aa9cb5d51a22ee385c22812bcc2c/pyproj-3.7.2-cp314-cp314-win32.whl", hash = "sha256:77f066626030f41be543274f5ac79f2a511fe89860ecd0914f22131b40a0ec25", size = 5991181, upload-time = "2025-08-14T12:05:19.492Z" }, + { url = "https://files.pythonhosted.org/packages/04/b2/5a6610554306a83a563080c2cf2c57565563eadd280e15388efa00fb5b33/pyproj-3.7.2-cp314-cp314-win_amd64.whl", hash = "sha256:5a964da1696b8522806f4276ab04ccfff8f9eb95133a92a25900697609d40112", size = 6434721, upload-time = "2025-08-14T12:05:21.022Z" }, + { url = "https://files.pythonhosted.org/packages/ae/ce/6c910ea2e1c74ef673c5d48c482564b8a7824a44c4e35cca2e765b68cfcc/pyproj-3.7.2-cp314-cp314-win_arm64.whl", hash = "sha256:e258ab4dbd3cf627809067c0ba8f9884ea76c8e5999d039fb37a1619c6c3e1f6", size = 6363821, upload-time = "2025-08-14T12:05:22.627Z" }, + { url = "https://files.pythonhosted.org/packages/e4/e4/5532f6f7491812ba782a2177fe9de73fd8e2912b59f46a1d056b84b9b8f2/pyproj-3.7.2-cp314-cp314t-macosx_13_0_x86_64.whl", hash = "sha256:bbbac2f930c6d266f70ec75df35ef851d96fdb3701c674f42fd23a9314573b37", size = 6241773, upload-time = "2025-08-14T12:05:24.577Z" }, + { url = "https://files.pythonhosted.org/packages/20/1f/0938c3f2bbbef1789132d1726d9b0e662f10cfc22522743937f421ad664e/pyproj-3.7.2-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:b7544e0a3d6339dc9151e9c8f3ea62a936ab7cc446a806ec448bbe86aebb979b", size = 4652537, upload-time = "2025-08-14T12:05:26.391Z" }, + { url = "https://files.pythonhosted.org/packages/c7/a8/488b1ed47d25972f33874f91f09ca8f2227902f05f63a2b80dc73e7b1c97/pyproj-3.7.2-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:f7f5133dca4c703e8acadf6f30bc567d39a42c6af321e7f81975c2518f3ed357", size = 9940864, upload-time = "2025-08-14T12:05:27.985Z" }, + { url = "https://files.pythonhosted.org/packages/c7/cc/7f4c895d0cb98e47b6a85a6d79eaca03eb266129eed2f845125c09cf31ff/pyproj-3.7.2-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:5aff3343038d7426aa5076f07feb88065f50e0502d1b0d7c22ddfdd2c75a3f81", size = 9688868, upload-time = "2025-08-14T12:05:30.425Z" }, + { url = "https://files.pythonhosted.org/packages/b2/b7/c7e306b8bb0f071d9825b753ee4920f066c40fbfcce9372c4f3cfb2fc4ed/pyproj-3.7.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:b0552178c61f2ac1c820d087e8ba6e62b29442debddbb09d51c4bf8acc84d888", size = 11045910, upload-time = "2025-08-14T12:05:32.507Z" }, + { url = "https://files.pythonhosted.org/packages/42/fb/538a4d2df695980e2dde5c04d965fbdd1fe8c20a3194dc4aaa3952a4d1be/pyproj-3.7.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:47d87db2d2c436c5fd0409b34d70bb6cdb875cca2ebe7a9d1c442367b0ab8d59", size = 10895724, upload-time = "2025-08-14T12:05:35.465Z" }, + { url = "https://files.pythonhosted.org/packages/e8/8b/a3f0618b03957de9db5489a04558a8826f43906628bb0b766033aa3b5548/pyproj-3.7.2-cp314-cp314t-win32.whl", hash = "sha256:c9b6f1d8ad3e80a0ee0903a778b6ece7dca1d1d40f6d114ae01bc8ddbad971aa", size = 6056848, upload-time = "2025-08-14T12:05:37.553Z" }, + { url = "https://files.pythonhosted.org/packages/bc/56/413240dd5149dd3291eda55aa55a659da4431244a2fd1319d0ae89407cfb/pyproj-3.7.2-cp314-cp314t-win_amd64.whl", hash = "sha256:1914e29e27933ba6f9822663ee0600f169014a2859f851c054c88cf5ea8a333c", size = 6517676, upload-time = "2025-08-14T12:05:39.126Z" }, + { url = "https://files.pythonhosted.org/packages/15/73/a7141a1a0559bf1a7aa42a11c879ceb19f02f5c6c371c6d57fd86cefd4d1/pyproj-3.7.2-cp314-cp314t-win_arm64.whl", hash = "sha256:d9d25bae416a24397e0d85739f84d323b55f6511e45a522dd7d7eae70d10c7e4", size = 6391844, upload-time = "2025-08-14T12:05:40.745Z" }, +] + [[package]] name = "pyproject-hooks" version = "1.2.0" @@ -3341,41 +4019,42 @@ wheels = [ [[package]] name = "pytest-cov" -version = "5.0.0" +version = "7.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "coverage", extra = ["toml"] }, + { name = "pluggy" }, { name = "pytest" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/74/67/00efc8d11b630c56f15f4ad9c7f9223f1e5ec275aaae3fa9118c6a223ad2/pytest-cov-5.0.0.tar.gz", hash = "sha256:5837b58e9f6ebd335b0f8060eecce69b662415b16dc503883a02f45dfeb14857", size = 63042, upload-time = "2024-03-24T20:16:34.856Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/f7/c933acc76f5208b3b00089573cf6a2bc26dc80a8aece8f52bb7d6b1855ca/pytest_cov-7.0.0.tar.gz", hash = "sha256:33c97eda2e049a0c5298e91f519302a1334c26ac65c1a483d6206fd458361af1", size = 54328, upload-time = "2025-09-09T10:57:02.113Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/78/3a/af5b4fa5961d9a1e6237b530eb87dd04aea6eb83da09d2a4073d81b54ccf/pytest_cov-5.0.0-py3-none-any.whl", hash = "sha256:4f0764a1219df53214206bf1feea4633c3b558a2925c8b59f144f682861ce652", size = 21990, upload-time = "2024-03-24T20:16:32.444Z" }, + { url = "https://files.pythonhosted.org/packages/ee/49/1377b49de7d0c1ce41292161ea0f721913fa8722c19fb9c1e3aa0367eecb/pytest_cov-7.0.0-py3-none-any.whl", hash = "sha256:3b8e9558b16cc1479da72058bdecf8073661c7f57f7d3c5f22a1c23507f2d861", size = 22424, upload-time = "2025-09-09T10:57:00.695Z" }, ] [[package]] name = "pytest-datadir" -version = "1.7.2" +version = "1.8.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pytest" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2f/16/7701db071caf7d8f7226b76323de40a09d2a391c7d064cda072d45a87c7b/pytest_datadir-1.7.2.tar.gz", hash = "sha256:15f5228a35d0a3205e4968e75d3b9cca91762424e1eafc21eb637d380a48443e", size = 11265, upload-time = "2025-06-06T11:24:18.075Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b4/46/db060b291999ca048edd06d6fa9ee95945d088edc38b1172c59eeb46ec45/pytest_datadir-1.8.0.tar.gz", hash = "sha256:7a15faed76cebe87cc91941dd1920a9a38eba56a09c11e9ddf1434d28a0f78eb", size = 11848, upload-time = "2025-07-30T13:52:12.518Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d3/61/a06f3406852534e186413c75f544c90251db00fd8eb9625ee3ac239499f3/pytest_datadir-1.7.2-py3-none-any.whl", hash = "sha256:8392ba0e9eaf37030e663dcd91cc5123dec99c44300f0c5eac44f35f13f0e086", size = 6273, upload-time = "2025-06-06T11:24:16.388Z" }, + { url = "https://files.pythonhosted.org/packages/8f/7a/33895863aec26ac3bb5068a73583f935680d6ab6af2a9567d409430c3ee1/pytest_datadir-1.8.0-py3-none-any.whl", hash = "sha256:5c677bc097d907ac71ca418109adc3abe34cf0bddfe6cf78aecfbabd96a15cf0", size = 6512, upload-time = "2025-07-30T13:52:11.525Z" }, ] [[package]] name = "pytest-regressions" -version = "2.8.0" +version = "2.8.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pytest" }, { name = "pytest-datadir" }, { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c5/ef/48083b093c1291fac24d0556b8ddb88310977c5b7d6c7abe73cc87647901/pytest_regressions-2.8.0.tar.gz", hash = "sha256:775044e17117f5427df2caad3ab1c66889abe770a0ce2bc3f24fdeac99af76fe", size = 116454, upload-time = "2025-05-30T17:46:21.498Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3a/63/cdb0ee15012a538fa07de21ec0a5c8eb113db9f28378f67b538d1c0b6d04/pytest_regressions-2.8.3.tar.gz", hash = "sha256:1ad90708bee02a3d36c78ef0b6f9692a9a30d312dd828680fd6d2a7235fcd221", size = 117168, upload-time = "2025-09-05T12:51:32.319Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7f/6a/cf0a9929a94912e7123dd3ab23658fce5c3bdef12cb270da84348282feda/pytest_regressions-2.8.0-py3-none-any.whl", hash = "sha256:2926f37efa5fd6793806b10352e274c5284a5469a845aeab6243e86f9214766f", size = 24859, upload-time = "2025-05-30T17:46:19.722Z" }, + { url = "https://files.pythonhosted.org/packages/55/b9/7b2fe8407744cc37a74e29bed833256a305133505ea4979564911a98338b/pytest_regressions-2.8.3-py3-none-any.whl", hash = "sha256:72500dd95bde418c850f290a3108dacb56427067f364f7112cb5b16f6d6cc29c", size = 24894, upload-time = "2025-09-05T12:51:31.1Z" }, ] [[package]] @@ -3392,11 +4071,11 @@ wheels = [ [[package]] name = "python-dotenv" -version = "1.1.0" +version = "1.1.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/88/2c/7bb1416c5620485aa793f2de31d3df393d3686aa8a8506d11e10e13c5baf/python_dotenv-1.1.0.tar.gz", hash = "sha256:41f90bc6f5f177fb41f53e87666db362025010eb28f60a01c9143bfa33a2b2d5", size = 39920, upload-time = "2025-03-25T10:14:56.835Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/b0/4bc07ccd3572a2f9df7e6782f52b0c6c90dcbb803ac4a167702d7d0dfe1e/python_dotenv-1.1.1.tar.gz", hash = "sha256:a8a6399716257f45be6a007360200409fce5cda2661e3dec71d23dc15f6189ab", size = 41978, upload-time = "2025-06-24T04:21:07.341Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/18/98a99ad95133c6a6e2005fe89faedf294a748bd5dc803008059409ac9b1e/python_dotenv-1.1.0-py3-none-any.whl", hash = "sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d", size = 20256, upload-time = "2025-03-25T10:14:55.034Z" }, + { url = "https://files.pythonhosted.org/packages/5f/ed/539768cf28c661b5b068d66d96a2f155c4971a5d55684a514c1a0e0dec2f/python_dotenv-1.1.1-py3-none-any.whl", hash = "sha256:31f23644fe2602f88ff55e1f5c79ba497e01224ee7737937930c448e4d0e24dc", size = 20556, upload-time = "2025-06-24T04:21:06.073Z" }, ] [[package]] @@ -3419,151 +4098,257 @@ wheels = [ [[package]] name = "pywin32" -version = "310" +version = "311" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/95/da/a5f38fffbba2fb99aa4aa905480ac4b8e83ca486659ac8c95bce47fb5276/pywin32-310-cp310-cp310-win32.whl", hash = "sha256:6dd97011efc8bf51d6793a82292419eba2c71cf8e7250cfac03bba284454abc1", size = 8848240, upload-time = "2025-03-17T00:55:46.783Z" }, - { url = "https://files.pythonhosted.org/packages/aa/fe/d873a773324fa565619ba555a82c9dabd677301720f3660a731a5d07e49a/pywin32-310-cp310-cp310-win_amd64.whl", hash = "sha256:c3e78706e4229b915a0821941a84e7ef420bf2b77e08c9dae3c76fd03fd2ae3d", size = 9601854, upload-time = "2025-03-17T00:55:48.783Z" }, - { url = "https://files.pythonhosted.org/packages/3c/84/1a8e3d7a15490d28a5d816efa229ecb4999cdc51a7c30dd8914f669093b8/pywin32-310-cp310-cp310-win_arm64.whl", hash = "sha256:33babed0cf0c92a6f94cc6cc13546ab24ee13e3e800e61ed87609ab91e4c8213", size = 8522963, upload-time = "2025-03-17T00:55:50.969Z" }, - { url = "https://files.pythonhosted.org/packages/f7/b1/68aa2986129fb1011dabbe95f0136f44509afaf072b12b8f815905a39f33/pywin32-310-cp311-cp311-win32.whl", hash = "sha256:1e765f9564e83011a63321bb9d27ec456a0ed90d3732c4b2e312b855365ed8bd", size = 8784284, upload-time = "2025-03-17T00:55:53.124Z" }, - { url = "https://files.pythonhosted.org/packages/b3/bd/d1592635992dd8db5bb8ace0551bc3a769de1ac8850200cfa517e72739fb/pywin32-310-cp311-cp311-win_amd64.whl", hash = "sha256:126298077a9d7c95c53823934f000599f66ec9296b09167810eb24875f32689c", size = 9520748, upload-time = "2025-03-17T00:55:55.203Z" }, - { url = "https://files.pythonhosted.org/packages/90/b1/ac8b1ffce6603849eb45a91cf126c0fa5431f186c2e768bf56889c46f51c/pywin32-310-cp311-cp311-win_arm64.whl", hash = "sha256:19ec5fc9b1d51c4350be7bb00760ffce46e6c95eaf2f0b2f1150657b1a43c582", size = 8455941, upload-time = "2025-03-17T00:55:57.048Z" }, - { url = "https://files.pythonhosted.org/packages/6b/ec/4fdbe47932f671d6e348474ea35ed94227fb5df56a7c30cbbb42cd396ed0/pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d", size = 8796239, upload-time = "2025-03-17T00:55:58.807Z" }, - { url = "https://files.pythonhosted.org/packages/e3/e5/b0627f8bb84e06991bea89ad8153a9e50ace40b2e1195d68e9dff6b03d0f/pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060", size = 9503839, upload-time = "2025-03-17T00:56:00.8Z" }, - { url = "https://files.pythonhosted.org/packages/1f/32/9ccf53748df72301a89713936645a664ec001abd35ecc8578beda593d37d/pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966", size = 8459470, upload-time = "2025-03-17T00:56:02.601Z" }, - { url = "https://files.pythonhosted.org/packages/1c/09/9c1b978ffc4ae53999e89c19c77ba882d9fce476729f23ef55211ea1c034/pywin32-310-cp313-cp313-win32.whl", hash = "sha256:5d241a659c496ada3253cd01cfaa779b048e90ce4b2b38cd44168ad555ce74ab", size = 8794384, upload-time = "2025-03-17T00:56:04.383Z" }, - { url = "https://files.pythonhosted.org/packages/45/3c/b4640f740ffebadd5d34df35fecba0e1cfef8fde9f3e594df91c28ad9b50/pywin32-310-cp313-cp313-win_amd64.whl", hash = "sha256:667827eb3a90208ddbdcc9e860c81bde63a135710e21e4cb3348968e4bd5249e", size = 9503039, upload-time = "2025-03-17T00:56:06.207Z" }, - { url = "https://files.pythonhosted.org/packages/b4/f4/f785020090fb050e7fb6d34b780f2231f302609dc964672f72bfaeb59a28/pywin32-310-cp313-cp313-win_arm64.whl", hash = "sha256:e308f831de771482b7cf692a1f308f8fca701b2d8f9dde6cc440c7da17e47b33", size = 8458152, upload-time = "2025-03-17T00:56:07.819Z" }, + { url = "https://files.pythonhosted.org/packages/7b/40/44efbb0dfbd33aca6a6483191dae0716070ed99e2ecb0c53683f400a0b4f/pywin32-311-cp310-cp310-win32.whl", hash = "sha256:d03ff496d2a0cd4a5893504789d4a15399133fe82517455e78bad62efbb7f0a3", size = 8760432, upload-time = "2025-07-14T20:13:05.9Z" }, + { url = "https://files.pythonhosted.org/packages/5e/bf/360243b1e953bd254a82f12653974be395ba880e7ec23e3731d9f73921cc/pywin32-311-cp310-cp310-win_amd64.whl", hash = "sha256:797c2772017851984b97180b0bebe4b620bb86328e8a884bb626156295a63b3b", size = 9590103, upload-time = "2025-07-14T20:13:07.698Z" }, + { url = "https://files.pythonhosted.org/packages/57/38/d290720e6f138086fb3d5ffe0b6caa019a791dd57866940c82e4eeaf2012/pywin32-311-cp310-cp310-win_arm64.whl", hash = "sha256:0502d1facf1fed4839a9a51ccbcc63d952cf318f78ffc00a7e78528ac27d7a2b", size = 8778557, upload-time = "2025-07-14T20:13:11.11Z" }, + { url = "https://files.pythonhosted.org/packages/7c/af/449a6a91e5d6db51420875c54f6aff7c97a86a3b13a0b4f1a5c13b988de3/pywin32-311-cp311-cp311-win32.whl", hash = "sha256:184eb5e436dea364dcd3d2316d577d625c0351bf237c4e9a5fabbcfa5a58b151", size = 8697031, upload-time = "2025-07-14T20:13:13.266Z" }, + { url = "https://files.pythonhosted.org/packages/51/8f/9bb81dd5bb77d22243d33c8397f09377056d5c687aa6d4042bea7fbf8364/pywin32-311-cp311-cp311-win_amd64.whl", hash = "sha256:3ce80b34b22b17ccbd937a6e78e7225d80c52f5ab9940fe0506a1a16f3dab503", size = 9508308, upload-time = "2025-07-14T20:13:15.147Z" }, + { url = "https://files.pythonhosted.org/packages/44/7b/9c2ab54f74a138c491aba1b1cd0795ba61f144c711daea84a88b63dc0f6c/pywin32-311-cp311-cp311-win_arm64.whl", hash = "sha256:a733f1388e1a842abb67ffa8e7aad0e70ac519e09b0f6a784e65a136ec7cefd2", size = 8703930, upload-time = "2025-07-14T20:13:16.945Z" }, + { url = "https://files.pythonhosted.org/packages/e7/ab/01ea1943d4eba0f850c3c61e78e8dd59757ff815ff3ccd0a84de5f541f42/pywin32-311-cp312-cp312-win32.whl", hash = "sha256:750ec6e621af2b948540032557b10a2d43b0cee2ae9758c54154d711cc852d31", size = 8706543, upload-time = "2025-07-14T20:13:20.765Z" }, + { url = "https://files.pythonhosted.org/packages/d1/a8/a0e8d07d4d051ec7502cd58b291ec98dcc0c3fff027caad0470b72cfcc2f/pywin32-311-cp312-cp312-win_amd64.whl", hash = "sha256:b8c095edad5c211ff31c05223658e71bf7116daa0ecf3ad85f3201ea3190d067", size = 9495040, upload-time = "2025-07-14T20:13:22.543Z" }, + { url = "https://files.pythonhosted.org/packages/ba/3a/2ae996277b4b50f17d61f0603efd8253cb2d79cc7ae159468007b586396d/pywin32-311-cp312-cp312-win_arm64.whl", hash = "sha256:e286f46a9a39c4a18b319c28f59b61de793654af2f395c102b4f819e584b5852", size = 8710102, upload-time = "2025-07-14T20:13:24.682Z" }, + { url = "https://files.pythonhosted.org/packages/a5/be/3fd5de0979fcb3994bfee0d65ed8ca9506a8a1260651b86174f6a86f52b3/pywin32-311-cp313-cp313-win32.whl", hash = "sha256:f95ba5a847cba10dd8c4d8fefa9f2a6cf283b8b88ed6178fa8a6c1ab16054d0d", size = 8705700, upload-time = "2025-07-14T20:13:26.471Z" }, + { url = "https://files.pythonhosted.org/packages/e3/28/e0a1909523c6890208295a29e05c2adb2126364e289826c0a8bc7297bd5c/pywin32-311-cp313-cp313-win_amd64.whl", hash = "sha256:718a38f7e5b058e76aee1c56ddd06908116d35147e133427e59a3983f703a20d", size = 9494700, upload-time = "2025-07-14T20:13:28.243Z" }, + { url = "https://files.pythonhosted.org/packages/04/bf/90339ac0f55726dce7d794e6d79a18a91265bdf3aa70b6b9ca52f35e022a/pywin32-311-cp313-cp313-win_arm64.whl", hash = "sha256:7b4075d959648406202d92a2310cb990fea19b535c7f4a78d3f5e10b926eeb8a", size = 8709318, upload-time = "2025-07-14T20:13:30.348Z" }, + { url = "https://files.pythonhosted.org/packages/c9/31/097f2e132c4f16d99a22bfb777e0fd88bd8e1c634304e102f313af69ace5/pywin32-311-cp314-cp314-win32.whl", hash = "sha256:b7a2c10b93f8986666d0c803ee19b5990885872a7de910fc460f9b0c2fbf92ee", size = 8840714, upload-time = "2025-07-14T20:13:32.449Z" }, + { url = "https://files.pythonhosted.org/packages/90/4b/07c77d8ba0e01349358082713400435347df8426208171ce297da32c313d/pywin32-311-cp314-cp314-win_amd64.whl", hash = "sha256:3aca44c046bd2ed8c90de9cb8427f581c479e594e99b5c0bb19b29c10fd6cb87", size = 9656800, upload-time = "2025-07-14T20:13:34.312Z" }, + { url = "https://files.pythonhosted.org/packages/c0/d2/21af5c535501a7233e734b8af901574572da66fcc254cb35d0609c9080dd/pywin32-311-cp314-cp314-win_arm64.whl", hash = "sha256:a508e2d9025764a8270f93111a970e1d0fbfc33f4153b388bb649b7eec4f9b42", size = 8932540, upload-time = "2025-07-14T20:13:36.379Z" }, ] [[package]] name = "pywinpty" -version = "2.0.15" +version = "3.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2d/7c/917f9c4681bb8d34bfbe0b79d36bbcd902651aeab48790df3d30ba0202fb/pywinpty-2.0.15.tar.gz", hash = "sha256:312cf39153a8736c617d45ce8b6ad6cd2107de121df91c455b10ce6bba7a39b2", size = 29017, upload-time = "2025-02-03T21:53:23.265Z" } +sdist = { url = "https://files.pythonhosted.org/packages/06/df/429cc505dc5f77ab0612c4b60bca2e3dcc81f6c321844ee017d6dc0f4a95/pywinpty-3.0.0.tar.gz", hash = "sha256:68f70e68a9f0766ffdea3fc500351cb7b9b012bcb8239a411f7ff0fc8f86dcb1", size = 28551, upload-time = "2025-08-12T20:33:46.506Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a6/b7/855db919ae526d2628f3f2e6c281c4cdff7a9a8af51bb84659a9f07b1861/pywinpty-2.0.15-cp310-cp310-win_amd64.whl", hash = "sha256:8e7f5de756a615a38b96cd86fa3cd65f901ce54ce147a3179c45907fa11b4c4e", size = 1405161, upload-time = "2025-02-03T21:56:25.008Z" }, - { url = "https://files.pythonhosted.org/packages/5e/ac/6884dcb7108af66ad53f73ef4dad096e768c9203a6e6ce5e6b0c4a46e238/pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca", size = 1405249, upload-time = "2025-02-03T21:55:47.114Z" }, - { url = "https://files.pythonhosted.org/packages/88/e5/9714def18c3a411809771a3fbcec70bffa764b9675afb00048a620fca604/pywinpty-2.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:83a8f20b430bbc5d8957249f875341a60219a4e971580f2ba694fbfb54a45ebc", size = 1405243, upload-time = "2025-02-03T21:56:52.476Z" }, - { url = "https://files.pythonhosted.org/packages/fb/16/2ab7b3b7f55f3c6929e5f629e1a68362981e4e5fed592a2ed1cb4b4914a5/pywinpty-2.0.15-cp313-cp313-win_amd64.whl", hash = "sha256:ab5920877dd632c124b4ed17bc6dd6ef3b9f86cd492b963ffdb1a67b85b0f408", size = 1405020, upload-time = "2025-02-03T21:56:04.753Z" }, - { url = "https://files.pythonhosted.org/packages/7c/16/edef3515dd2030db2795dbfbe392232c7a0f3dc41b98e92b38b42ba497c7/pywinpty-2.0.15-cp313-cp313t-win_amd64.whl", hash = "sha256:a4560ad8c01e537708d2790dbe7da7d986791de805d89dd0d3697ca59e9e4901", size = 1404151, upload-time = "2025-02-03T21:55:53.628Z" }, + { url = "https://files.pythonhosted.org/packages/15/f9/13d62974debb0c74ce3fa3d96b32cee6fce4f2d634789217e67aebf339f6/pywinpty-3.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:327b6034e0dc38352c1c99a7c0b3e54941b4e506a5f21acce63609cd2ab6cce2", size = 2050843, upload-time = "2025-08-12T20:36:11.134Z" }, + { url = "https://files.pythonhosted.org/packages/d6/34/30727e8a97709f5033277457df9a293ccddf34d6eb7528e6a1e910265307/pywinpty-3.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:29daa71ac5dcbe1496ef99f4cde85a732b1f0a3b71405d42177dbcf9ee405e5a", size = 2051048, upload-time = "2025-08-12T20:37:18.488Z" }, + { url = "https://files.pythonhosted.org/packages/76/d9/bd2249815c305ef8f879b326db1fe1effc8e5f22bd88e522b4b55231aa6f/pywinpty-3.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:1e0c4b01e5b03b1531d7c5d0e044b8c66dd0288c6d2b661820849f2a8d91aec3", size = 2051564, upload-time = "2025-08-12T20:37:09.128Z" }, + { url = "https://files.pythonhosted.org/packages/e2/77/358b1a97c1d0714f288949372ec64a70884a7eceb3f887042b9ae0bea388/pywinpty-3.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:828cbe756b7e3d25d886fbd5691a1d523cd59c5fb79286bb32bb75c5221e7ba1", size = 2050856, upload-time = "2025-08-12T20:36:09.117Z" }, + { url = "https://files.pythonhosted.org/packages/8f/6c/4249cfb4eb4fdad2c76bc96db0642a40111847c375b92e5b9f4bf289ddd6/pywinpty-3.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:de0cbe27b96e5a2cebd86c4a6b8b4139f978d9c169d44a8edc7e30e88e5d7a69", size = 2050082, upload-time = "2025-08-12T20:36:28.591Z" }, ] [[package]] name = "pyyaml" -version = "6.0.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631, upload-time = "2024-08-06T20:33:50.674Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9b/95/a3fac87cb7158e231b5a6012e438c647e1a87f09f8e0d123acec8ab8bf71/PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086", size = 184199, upload-time = "2024-08-06T20:31:40.178Z" }, - { url = "https://files.pythonhosted.org/packages/c7/7a/68bd47624dab8fd4afbfd3c48e3b79efe09098ae941de5b58abcbadff5cb/PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf", size = 171758, upload-time = "2024-08-06T20:31:42.173Z" }, - { url = "https://files.pythonhosted.org/packages/49/ee/14c54df452143b9ee9f0f29074d7ca5516a36edb0b4cc40c3f280131656f/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237", size = 718463, upload-time = "2024-08-06T20:31:44.263Z" }, - { url = "https://files.pythonhosted.org/packages/4d/61/de363a97476e766574650d742205be468921a7b532aa2499fcd886b62530/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b", size = 719280, upload-time = "2024-08-06T20:31:50.199Z" }, - { url = "https://files.pythonhosted.org/packages/6b/4e/1523cb902fd98355e2e9ea5e5eb237cbc5f3ad5f3075fa65087aa0ecb669/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed", size = 751239, upload-time = "2024-08-06T20:31:52.292Z" }, - { url = "https://files.pythonhosted.org/packages/b7/33/5504b3a9a4464893c32f118a9cc045190a91637b119a9c881da1cf6b7a72/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180", size = 695802, upload-time = "2024-08-06T20:31:53.836Z" }, - { url = "https://files.pythonhosted.org/packages/5c/20/8347dcabd41ef3a3cdc4f7b7a2aff3d06598c8779faa189cdbf878b626a4/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68", size = 720527, upload-time = "2024-08-06T20:31:55.565Z" }, - { url = "https://files.pythonhosted.org/packages/be/aa/5afe99233fb360d0ff37377145a949ae258aaab831bde4792b32650a4378/PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99", size = 144052, upload-time = "2024-08-06T20:31:56.914Z" }, - { url = "https://files.pythonhosted.org/packages/b5/84/0fa4b06f6d6c958d207620fc60005e241ecedceee58931bb20138e1e5776/PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e", size = 161774, upload-time = "2024-08-06T20:31:58.304Z" }, - { url = "https://files.pythonhosted.org/packages/f8/aa/7af4e81f7acba21a4c6be026da38fd2b872ca46226673c89a758ebdc4fd2/PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774", size = 184612, upload-time = "2024-08-06T20:32:03.408Z" }, - { url = "https://files.pythonhosted.org/packages/8b/62/b9faa998fd185f65c1371643678e4d58254add437edb764a08c5a98fb986/PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee", size = 172040, upload-time = "2024-08-06T20:32:04.926Z" }, - { url = "https://files.pythonhosted.org/packages/ad/0c/c804f5f922a9a6563bab712d8dcc70251e8af811fce4524d57c2c0fd49a4/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c", size = 736829, upload-time = "2024-08-06T20:32:06.459Z" }, - { url = "https://files.pythonhosted.org/packages/51/16/6af8d6a6b210c8e54f1406a6b9481febf9c64a3109c541567e35a49aa2e7/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317", size = 764167, upload-time = "2024-08-06T20:32:08.338Z" }, - { url = "https://files.pythonhosted.org/packages/75/e4/2c27590dfc9992f73aabbeb9241ae20220bd9452df27483b6e56d3975cc5/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85", size = 762952, upload-time = "2024-08-06T20:32:14.124Z" }, - { url = "https://files.pythonhosted.org/packages/9b/97/ecc1abf4a823f5ac61941a9c00fe501b02ac3ab0e373c3857f7d4b83e2b6/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4", size = 735301, upload-time = "2024-08-06T20:32:16.17Z" }, - { url = "https://files.pythonhosted.org/packages/45/73/0f49dacd6e82c9430e46f4a027baa4ca205e8b0a9dce1397f44edc23559d/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e", size = 756638, upload-time = "2024-08-06T20:32:18.555Z" }, - { url = "https://files.pythonhosted.org/packages/22/5f/956f0f9fc65223a58fbc14459bf34b4cc48dec52e00535c79b8db361aabd/PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5", size = 143850, upload-time = "2024-08-06T20:32:19.889Z" }, - { url = "https://files.pythonhosted.org/packages/ed/23/8da0bbe2ab9dcdd11f4f4557ccaf95c10b9811b13ecced089d43ce59c3c8/PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44", size = 161980, upload-time = "2024-08-06T20:32:21.273Z" }, - { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873, upload-time = "2024-08-06T20:32:25.131Z" }, - { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302, upload-time = "2024-08-06T20:32:26.511Z" }, - { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154, upload-time = "2024-08-06T20:32:28.363Z" }, - { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223, upload-time = "2024-08-06T20:32:30.058Z" }, - { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542, upload-time = "2024-08-06T20:32:31.881Z" }, - { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164, upload-time = "2024-08-06T20:32:37.083Z" }, - { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611, upload-time = "2024-08-06T20:32:38.898Z" }, - { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591, upload-time = "2024-08-06T20:32:40.241Z" }, - { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338, upload-time = "2024-08-06T20:32:41.93Z" }, - { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309, upload-time = "2024-08-06T20:32:43.4Z" }, - { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679, upload-time = "2024-08-06T20:32:44.801Z" }, - { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428, upload-time = "2024-08-06T20:32:46.432Z" }, - { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361, upload-time = "2024-08-06T20:32:51.188Z" }, - { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523, upload-time = "2024-08-06T20:32:53.019Z" }, - { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660, upload-time = "2024-08-06T20:32:54.708Z" }, - { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597, upload-time = "2024-08-06T20:32:56.985Z" }, - { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527, upload-time = "2024-08-06T20:33:03.001Z" }, - { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446, upload-time = "2024-08-06T20:33:04.33Z" }, +version = "6.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/a0/39350dd17dd6d6c6507025c0e53aef67a9293a6d37d3511f23ea510d5800/pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", size = 184227, upload-time = "2025-09-25T21:31:46.04Z" }, + { url = "https://files.pythonhosted.org/packages/05/14/52d505b5c59ce73244f59c7a50ecf47093ce4765f116cdb98286a71eeca2/pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", size = 174019, upload-time = "2025-09-25T21:31:47.706Z" }, + { url = "https://files.pythonhosted.org/packages/43/f7/0e6a5ae5599c838c696adb4e6330a59f463265bfa1e116cfd1fbb0abaaae/pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", size = 740646, upload-time = "2025-09-25T21:31:49.21Z" }, + { url = "https://files.pythonhosted.org/packages/2f/3a/61b9db1d28f00f8fd0ae760459a5c4bf1b941baf714e207b6eb0657d2578/pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", size = 840793, upload-time = "2025-09-25T21:31:50.735Z" }, + { url = "https://files.pythonhosted.org/packages/7a/1e/7acc4f0e74c4b3d9531e24739e0ab832a5edf40e64fbae1a9c01941cabd7/pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", size = 770293, upload-time = "2025-09-25T21:31:51.828Z" }, + { url = "https://files.pythonhosted.org/packages/8b/ef/abd085f06853af0cd59fa5f913d61a8eab65d7639ff2a658d18a25d6a89d/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", size = 732872, upload-time = "2025-09-25T21:31:53.282Z" }, + { url = "https://files.pythonhosted.org/packages/1f/15/2bc9c8faf6450a8b3c9fc5448ed869c599c0a74ba2669772b1f3a0040180/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", size = 758828, upload-time = "2025-09-25T21:31:54.807Z" }, + { url = "https://files.pythonhosted.org/packages/a3/00/531e92e88c00f4333ce359e50c19b8d1de9fe8d581b1534e35ccfbc5f393/pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", size = 142415, upload-time = "2025-09-25T21:31:55.885Z" }, + { url = "https://files.pythonhosted.org/packages/2a/fa/926c003379b19fca39dd4634818b00dec6c62d87faf628d1394e137354d4/pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", size = 158561, upload-time = "2025-09-25T21:31:57.406Z" }, + { url = "https://files.pythonhosted.org/packages/6d/16/a95b6757765b7b031c9374925bb718d55e0a9ba8a1b6a12d25962ea44347/pyyaml-6.0.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e", size = 185826, upload-time = "2025-09-25T21:31:58.655Z" }, + { url = "https://files.pythonhosted.org/packages/16/19/13de8e4377ed53079ee996e1ab0a9c33ec2faf808a4647b7b4c0d46dd239/pyyaml-6.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824", size = 175577, upload-time = "2025-09-25T21:32:00.088Z" }, + { url = "https://files.pythonhosted.org/packages/0c/62/d2eb46264d4b157dae1275b573017abec435397aa59cbcdab6fc978a8af4/pyyaml-6.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c", size = 775556, upload-time = "2025-09-25T21:32:01.31Z" }, + { url = "https://files.pythonhosted.org/packages/10/cb/16c3f2cf3266edd25aaa00d6c4350381c8b012ed6f5276675b9eba8d9ff4/pyyaml-6.0.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:850774a7879607d3a6f50d36d04f00ee69e7fc816450e5f7e58d7f17f1ae5c00", size = 882114, upload-time = "2025-09-25T21:32:03.376Z" }, + { url = "https://files.pythonhosted.org/packages/71/60/917329f640924b18ff085ab889a11c763e0b573da888e8404ff486657602/pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d", size = 806638, upload-time = "2025-09-25T21:32:04.553Z" }, + { url = "https://files.pythonhosted.org/packages/dd/6f/529b0f316a9fd167281a6c3826b5583e6192dba792dd55e3203d3f8e655a/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37d57ad971609cf3c53ba6a7e365e40660e3be0e5175fa9f2365a379d6095a", size = 767463, upload-time = "2025-09-25T21:32:06.152Z" }, + { url = "https://files.pythonhosted.org/packages/f2/6a/b627b4e0c1dd03718543519ffb2f1deea4a1e6d42fbab8021936a4d22589/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:37503bfbfc9d2c40b344d06b2199cf0e96e97957ab1c1b546fd4f87e53e5d3e4", size = 794986, upload-time = "2025-09-25T21:32:07.367Z" }, + { url = "https://files.pythonhosted.org/packages/45/91/47a6e1c42d9ee337c4839208f30d9f09caa9f720ec7582917b264defc875/pyyaml-6.0.3-cp311-cp311-win32.whl", hash = "sha256:8098f252adfa6c80ab48096053f512f2321f0b998f98150cea9bd23d83e1467b", size = 142543, upload-time = "2025-09-25T21:32:08.95Z" }, + { url = "https://files.pythonhosted.org/packages/da/e3/ea007450a105ae919a72393cb06f122f288ef60bba2dc64b26e2646fa315/pyyaml-6.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:9f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf", size = 158763, upload-time = "2025-09-25T21:32:09.96Z" }, + { url = "https://files.pythonhosted.org/packages/d1/33/422b98d2195232ca1826284a76852ad5a86fe23e31b009c9886b2d0fb8b2/pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196", size = 182063, upload-time = "2025-09-25T21:32:11.445Z" }, + { url = "https://files.pythonhosted.org/packages/89/a0/6cf41a19a1f2f3feab0e9c0b74134aa2ce6849093d5517a0c550fe37a648/pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0", size = 173973, upload-time = "2025-09-25T21:32:12.492Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/7a778b6bd0b9a8039df8b1b1d80e2e2ad78aa04171592c8a5c43a56a6af4/pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28", size = 775116, upload-time = "2025-09-25T21:32:13.652Z" }, + { url = "https://files.pythonhosted.org/packages/65/30/d7353c338e12baef4ecc1b09e877c1970bd3382789c159b4f89d6a70dc09/pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c", size = 844011, upload-time = "2025-09-25T21:32:15.21Z" }, + { url = "https://files.pythonhosted.org/packages/8b/9d/b3589d3877982d4f2329302ef98a8026e7f4443c765c46cfecc8858c6b4b/pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc", size = 807870, upload-time = "2025-09-25T21:32:16.431Z" }, + { url = "https://files.pythonhosted.org/packages/05/c0/b3be26a015601b822b97d9149ff8cb5ead58c66f981e04fedf4e762f4bd4/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e", size = 761089, upload-time = "2025-09-25T21:32:17.56Z" }, + { url = "https://files.pythonhosted.org/packages/be/8e/98435a21d1d4b46590d5459a22d88128103f8da4c2d4cb8f14f2a96504e1/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea", size = 790181, upload-time = "2025-09-25T21:32:18.834Z" }, + { url = "https://files.pythonhosted.org/packages/74/93/7baea19427dcfbe1e5a372d81473250b379f04b1bd3c4c5ff825e2327202/pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5", size = 137658, upload-time = "2025-09-25T21:32:20.209Z" }, + { url = "https://files.pythonhosted.org/packages/86/bf/899e81e4cce32febab4fb42bb97dcdf66bc135272882d1987881a4b519e9/pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b", size = 154003, upload-time = "2025-09-25T21:32:21.167Z" }, + { url = "https://files.pythonhosted.org/packages/1a/08/67bd04656199bbb51dbed1439b7f27601dfb576fb864099c7ef0c3e55531/pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd", size = 140344, upload-time = "2025-09-25T21:32:22.617Z" }, + { url = "https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8", size = 181669, upload-time = "2025-09-25T21:32:23.673Z" }, + { url = "https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1", size = 173252, upload-time = "2025-09-25T21:32:25.149Z" }, + { url = "https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c", size = 767081, upload-time = "2025-09-25T21:32:26.575Z" }, + { url = "https://files.pythonhosted.org/packages/49/1e/a55ca81e949270d5d4432fbbd19dfea5321eda7c41a849d443dc92fd1ff7/pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5", size = 841159, upload-time = "2025-09-25T21:32:27.727Z" }, + { url = "https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6", size = 801626, upload-time = "2025-09-25T21:32:28.878Z" }, + { url = "https://files.pythonhosted.org/packages/f9/11/ba845c23988798f40e52ba45f34849aa8a1f2d4af4b798588010792ebad6/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6", size = 753613, upload-time = "2025-09-25T21:32:30.178Z" }, + { url = "https://files.pythonhosted.org/packages/3d/e0/7966e1a7bfc0a45bf0a7fb6b98ea03fc9b8d84fa7f2229e9659680b69ee3/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be", size = 794115, upload-time = "2025-09-25T21:32:31.353Z" }, + { url = "https://files.pythonhosted.org/packages/de/94/980b50a6531b3019e45ddeada0626d45fa85cbe22300844a7983285bed3b/pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26", size = 137427, upload-time = "2025-09-25T21:32:32.58Z" }, + { url = "https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c", size = 154090, upload-time = "2025-09-25T21:32:33.659Z" }, + { url = "https://files.pythonhosted.org/packages/73/e8/2bdf3ca2090f68bb3d75b44da7bbc71843b19c9f2b9cb9b0f4ab7a5a4329/pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb", size = 140246, upload-time = "2025-09-25T21:32:34.663Z" }, + { url = "https://files.pythonhosted.org/packages/9d/8c/f4bd7f6465179953d3ac9bc44ac1a8a3e6122cf8ada906b4f96c60172d43/pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac", size = 181814, upload-time = "2025-09-25T21:32:35.712Z" }, + { url = "https://files.pythonhosted.org/packages/bd/9c/4d95bb87eb2063d20db7b60faa3840c1b18025517ae857371c4dd55a6b3a/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310", size = 173809, upload-time = "2025-09-25T21:32:36.789Z" }, + { url = "https://files.pythonhosted.org/packages/92/b5/47e807c2623074914e29dabd16cbbdd4bf5e9b2db9f8090fa64411fc5382/pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7", size = 766454, upload-time = "2025-09-25T21:32:37.966Z" }, + { url = "https://files.pythonhosted.org/packages/02/9e/e5e9b168be58564121efb3de6859c452fccde0ab093d8438905899a3a483/pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788", size = 836355, upload-time = "2025-09-25T21:32:39.178Z" }, + { url = "https://files.pythonhosted.org/packages/88/f9/16491d7ed2a919954993e48aa941b200f38040928474c9e85ea9e64222c3/pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5", size = 794175, upload-time = "2025-09-25T21:32:40.865Z" }, + { url = "https://files.pythonhosted.org/packages/dd/3f/5989debef34dc6397317802b527dbbafb2b4760878a53d4166579111411e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764", size = 755228, upload-time = "2025-09-25T21:32:42.084Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ce/af88a49043cd2e265be63d083fc75b27b6ed062f5f9fd6cdc223ad62f03e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35", size = 789194, upload-time = "2025-09-25T21:32:43.362Z" }, + { url = "https://files.pythonhosted.org/packages/23/20/bb6982b26a40bb43951265ba29d4c246ef0ff59c9fdcdf0ed04e0687de4d/pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac", size = 156429, upload-time = "2025-09-25T21:32:57.844Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f4/a4541072bb9422c8a883ab55255f918fa378ecf083f5b85e87fc2b4eda1b/pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3", size = 143912, upload-time = "2025-09-25T21:32:59.247Z" }, + { url = "https://files.pythonhosted.org/packages/7c/f9/07dd09ae774e4616edf6cda684ee78f97777bdd15847253637a6f052a62f/pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3", size = 189108, upload-time = "2025-09-25T21:32:44.377Z" }, + { url = "https://files.pythonhosted.org/packages/4e/78/8d08c9fb7ce09ad8c38ad533c1191cf27f7ae1effe5bb9400a46d9437fcf/pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba", size = 183641, upload-time = "2025-09-25T21:32:45.407Z" }, + { url = "https://files.pythonhosted.org/packages/7b/5b/3babb19104a46945cf816d047db2788bcaf8c94527a805610b0289a01c6b/pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c", size = 831901, upload-time = "2025-09-25T21:32:48.83Z" }, + { url = "https://files.pythonhosted.org/packages/8b/cc/dff0684d8dc44da4d22a13f35f073d558c268780ce3c6ba1b87055bb0b87/pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702", size = 861132, upload-time = "2025-09-25T21:32:50.149Z" }, + { url = "https://files.pythonhosted.org/packages/b1/5e/f77dc6b9036943e285ba76b49e118d9ea929885becb0a29ba8a7c75e29fe/pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c", size = 839261, upload-time = "2025-09-25T21:32:51.808Z" }, + { url = "https://files.pythonhosted.org/packages/ce/88/a9db1376aa2a228197c58b37302f284b5617f56a5d959fd1763fb1675ce6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065", size = 805272, upload-time = "2025-09-25T21:32:52.941Z" }, + { url = "https://files.pythonhosted.org/packages/da/92/1446574745d74df0c92e6aa4a7b0b3130706a4142b2d1a5869f2eaa423c6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65", size = 829923, upload-time = "2025-09-25T21:32:54.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/7a/1c7270340330e575b92f397352af856a8c06f230aa3e76f86b39d01b416a/pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9", size = 174062, upload-time = "2025-09-25T21:32:55.767Z" }, + { url = "https://files.pythonhosted.org/packages/f1/12/de94a39c2ef588c7e6455cfbe7343d3b2dc9d6b6b2f40c4c6565744c873d/pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", size = 149341, upload-time = "2025-09-25T21:32:56.828Z" }, ] [[package]] name = "pyzmq" -version = "26.4.0" +version = "27.1.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "implementation_name == 'pypy'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b1/11/b9213d25230ac18a71b39b3723494e57adebe36e066397b961657b3b41c1/pyzmq-26.4.0.tar.gz", hash = "sha256:4bd13f85f80962f91a651a7356fe0472791a5f7a92f227822b5acf44795c626d", size = 278293, upload-time = "2025-04-04T12:05:44.049Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/38/b8/af1d814ffc3ff9730f9a970cbf216b6f078e5d251a25ef5201d7bc32a37c/pyzmq-26.4.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:0329bdf83e170ac133f44a233fc651f6ed66ef8e66693b5af7d54f45d1ef5918", size = 1339238, upload-time = "2025-04-04T12:03:07.022Z" }, - { url = "https://files.pythonhosted.org/packages/ee/e4/5aafed4886c264f2ea6064601ad39c5fc4e9b6539c6ebe598a859832eeee/pyzmq-26.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:398a825d2dea96227cf6460ce0a174cf7657d6f6827807d4d1ae9d0f9ae64315", size = 672848, upload-time = "2025-04-04T12:03:08.591Z" }, - { url = "https://files.pythonhosted.org/packages/79/39/026bf49c721cb42f1ef3ae0ee3d348212a7621d2adb739ba97599b6e4d50/pyzmq-26.4.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6d52d62edc96787f5c1dfa6c6ccff9b581cfae5a70d94ec4c8da157656c73b5b", size = 911299, upload-time = "2025-04-04T12:03:10Z" }, - { url = "https://files.pythonhosted.org/packages/03/23/b41f936a9403b8f92325c823c0f264c6102a0687a99c820f1aaeb99c1def/pyzmq-26.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1410c3a3705db68d11eb2424d75894d41cff2f64d948ffe245dd97a9debfebf4", size = 867920, upload-time = "2025-04-04T12:03:11.311Z" }, - { url = "https://files.pythonhosted.org/packages/c1/3e/2de5928cdadc2105e7c8f890cc5f404136b41ce5b6eae5902167f1d5641c/pyzmq-26.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:7dacb06a9c83b007cc01e8e5277f94c95c453c5851aac5e83efe93e72226353f", size = 862514, upload-time = "2025-04-04T12:03:13.013Z" }, - { url = "https://files.pythonhosted.org/packages/ce/57/109569514dd32e05a61d4382bc88980c95bfd2f02e58fea47ec0ccd96de1/pyzmq-26.4.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6bab961c8c9b3a4dc94d26e9b2cdf84de9918931d01d6ff38c721a83ab3c0ef5", size = 1204494, upload-time = "2025-04-04T12:03:14.795Z" }, - { url = "https://files.pythonhosted.org/packages/aa/02/dc51068ff2ca70350d1151833643a598625feac7b632372d229ceb4de3e1/pyzmq-26.4.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7a5c09413b924d96af2aa8b57e76b9b0058284d60e2fc3730ce0f979031d162a", size = 1514525, upload-time = "2025-04-04T12:03:16.246Z" }, - { url = "https://files.pythonhosted.org/packages/48/2a/a7d81873fff0645eb60afaec2b7c78a85a377af8f1d911aff045d8955bc7/pyzmq-26.4.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7d489ac234d38e57f458fdbd12a996bfe990ac028feaf6f3c1e81ff766513d3b", size = 1414659, upload-time = "2025-04-04T12:03:17.652Z" }, - { url = "https://files.pythonhosted.org/packages/ef/ea/813af9c42ae21845c1ccfe495bd29c067622a621e85d7cda6bc437de8101/pyzmq-26.4.0-cp310-cp310-win32.whl", hash = "sha256:dea1c8db78fb1b4b7dc9f8e213d0af3fc8ecd2c51a1d5a3ca1cde1bda034a980", size = 580348, upload-time = "2025-04-04T12:03:19.384Z" }, - { url = "https://files.pythonhosted.org/packages/20/68/318666a89a565252c81d3fed7f3b4c54bd80fd55c6095988dfa2cd04a62b/pyzmq-26.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:fa59e1f5a224b5e04dc6c101d7186058efa68288c2d714aa12d27603ae93318b", size = 643838, upload-time = "2025-04-04T12:03:20.795Z" }, - { url = "https://files.pythonhosted.org/packages/91/f8/fb1a15b5f4ecd3e588bfde40c17d32ed84b735195b5c7d1d7ce88301a16f/pyzmq-26.4.0-cp310-cp310-win_arm64.whl", hash = "sha256:a651fe2f447672f4a815e22e74630b6b1ec3a1ab670c95e5e5e28dcd4e69bbb5", size = 559565, upload-time = "2025-04-04T12:03:22.676Z" }, - { url = "https://files.pythonhosted.org/packages/32/6d/234e3b0aa82fd0290b1896e9992f56bdddf1f97266110be54d0177a9d2d9/pyzmq-26.4.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:bfcf82644c9b45ddd7cd2a041f3ff8dce4a0904429b74d73a439e8cab1bd9e54", size = 1339723, upload-time = "2025-04-04T12:03:24.358Z" }, - { url = "https://files.pythonhosted.org/packages/4f/11/6d561efe29ad83f7149a7cd48e498e539ed09019c6cd7ecc73f4cc725028/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9bcae3979b2654d5289d3490742378b2f3ce804b0b5fd42036074e2bf35b030", size = 672645, upload-time = "2025-04-04T12:03:25.693Z" }, - { url = "https://files.pythonhosted.org/packages/19/fd/81bfe3e23f418644660bad1a90f0d22f0b3eebe33dd65a79385530bceb3d/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ccdff8ac4246b6fb60dcf3982dfaeeff5dd04f36051fe0632748fc0aa0679c01", size = 910133, upload-time = "2025-04-04T12:03:27.625Z" }, - { url = "https://files.pythonhosted.org/packages/97/68/321b9c775595ea3df832a9516252b653fe32818db66fdc8fa31c9b9fce37/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4550af385b442dc2d55ab7717837812799d3674cb12f9a3aa897611839c18e9e", size = 867428, upload-time = "2025-04-04T12:03:29.004Z" }, - { url = "https://files.pythonhosted.org/packages/4e/6e/159cbf2055ef36aa2aa297e01b24523176e5b48ead283c23a94179fb2ba2/pyzmq-26.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:2f9f7ffe9db1187a253fca95191854b3fda24696f086e8789d1d449308a34b88", size = 862409, upload-time = "2025-04-04T12:03:31.032Z" }, - { url = "https://files.pythonhosted.org/packages/05/1c/45fb8db7be5a7d0cadea1070a9cbded5199a2d578de2208197e592f219bd/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3709c9ff7ba61589b7372923fd82b99a81932b592a5c7f1a24147c91da9a68d6", size = 1205007, upload-time = "2025-04-04T12:03:32.687Z" }, - { url = "https://files.pythonhosted.org/packages/f8/fa/658c7f583af6498b463f2fa600f34e298e1b330886f82f1feba0dc2dd6c3/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:f8f3c30fb2d26ae5ce36b59768ba60fb72507ea9efc72f8f69fa088450cff1df", size = 1514599, upload-time = "2025-04-04T12:03:34.084Z" }, - { url = "https://files.pythonhosted.org/packages/4d/d7/44d641522353ce0a2bbd150379cb5ec32f7120944e6bfba4846586945658/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:382a4a48c8080e273427fc692037e3f7d2851959ffe40864f2db32646eeb3cef", size = 1414546, upload-time = "2025-04-04T12:03:35.478Z" }, - { url = "https://files.pythonhosted.org/packages/72/76/c8ed7263218b3d1e9bce07b9058502024188bd52cc0b0a267a9513b431fc/pyzmq-26.4.0-cp311-cp311-win32.whl", hash = "sha256:d56aad0517d4c09e3b4f15adebba8f6372c5102c27742a5bdbfc74a7dceb8fca", size = 579247, upload-time = "2025-04-04T12:03:36.846Z" }, - { url = "https://files.pythonhosted.org/packages/c3/d0/2d9abfa2571a0b1a67c0ada79a8aa1ba1cce57992d80f771abcdf99bb32c/pyzmq-26.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:963977ac8baed7058c1e126014f3fe58b3773f45c78cce7af5c26c09b6823896", size = 644727, upload-time = "2025-04-04T12:03:38.578Z" }, - { url = "https://files.pythonhosted.org/packages/0d/d1/c8ad82393be6ccedfc3c9f3adb07f8f3976e3c4802640fe3f71441941e70/pyzmq-26.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:c0c8e8cadc81e44cc5088fcd53b9b3b4ce9344815f6c4a03aec653509296fae3", size = 559942, upload-time = "2025-04-04T12:03:40.143Z" }, - { url = "https://files.pythonhosted.org/packages/10/44/a778555ebfdf6c7fc00816aad12d185d10a74d975800341b1bc36bad1187/pyzmq-26.4.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:5227cb8da4b6f68acfd48d20c588197fd67745c278827d5238c707daf579227b", size = 1341586, upload-time = "2025-04-04T12:03:41.954Z" }, - { url = "https://files.pythonhosted.org/packages/9c/4f/f3a58dc69ac757e5103be3bd41fb78721a5e17da7cc617ddb56d973a365c/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1c07a7fa7f7ba86554a2b1bef198c9fed570c08ee062fd2fd6a4dcacd45f905", size = 665880, upload-time = "2025-04-04T12:03:43.45Z" }, - { url = "https://files.pythonhosted.org/packages/fe/45/50230bcfb3ae5cb98bee683b6edeba1919f2565d7cc1851d3c38e2260795/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae775fa83f52f52de73183f7ef5395186f7105d5ed65b1ae65ba27cb1260de2b", size = 902216, upload-time = "2025-04-04T12:03:45.572Z" }, - { url = "https://files.pythonhosted.org/packages/41/59/56bbdc5689be5e13727491ad2ba5efd7cd564365750514f9bc8f212eef82/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66c760d0226ebd52f1e6b644a9e839b5db1e107a23f2fcd46ec0569a4fdd4e63", size = 859814, upload-time = "2025-04-04T12:03:47.188Z" }, - { url = "https://files.pythonhosted.org/packages/81/b1/57db58cfc8af592ce94f40649bd1804369c05b2190e4cbc0a2dad572baeb/pyzmq-26.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ef8c6ecc1d520debc147173eaa3765d53f06cd8dbe7bd377064cdbc53ab456f5", size = 855889, upload-time = "2025-04-04T12:03:49.223Z" }, - { url = "https://files.pythonhosted.org/packages/e8/92/47542e629cbac8f221c230a6d0f38dd3d9cff9f6f589ed45fdf572ffd726/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3150ef4084e163dec29ae667b10d96aad309b668fac6810c9e8c27cf543d6e0b", size = 1197153, upload-time = "2025-04-04T12:03:50.591Z" }, - { url = "https://files.pythonhosted.org/packages/07/e5/b10a979d1d565d54410afc87499b16c96b4a181af46e7645ab4831b1088c/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4448c9e55bf8329fa1dcedd32f661bf611214fa70c8e02fee4347bc589d39a84", size = 1507352, upload-time = "2025-04-04T12:03:52.473Z" }, - { url = "https://files.pythonhosted.org/packages/ab/58/5a23db84507ab9c01c04b1232a7a763be66e992aa2e66498521bbbc72a71/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e07dde3647afb084d985310d067a3efa6efad0621ee10826f2cb2f9a31b89d2f", size = 1406834, upload-time = "2025-04-04T12:03:54Z" }, - { url = "https://files.pythonhosted.org/packages/22/74/aaa837b331580c13b79ac39396601fb361454ee184ca85e8861914769b99/pyzmq-26.4.0-cp312-cp312-win32.whl", hash = "sha256:ba034a32ecf9af72adfa5ee383ad0fd4f4e38cdb62b13624278ef768fe5b5b44", size = 577992, upload-time = "2025-04-04T12:03:55.815Z" }, - { url = "https://files.pythonhosted.org/packages/30/0f/55f8c02c182856743b82dde46b2dc3e314edda7f1098c12a8227eeda0833/pyzmq-26.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:056a97aab4064f526ecb32f4343917a4022a5d9efb6b9df990ff72e1879e40be", size = 640466, upload-time = "2025-04-04T12:03:57.231Z" }, - { url = "https://files.pythonhosted.org/packages/e4/29/073779afc3ef6f830b8de95026ef20b2d1ec22d0324d767748d806e57379/pyzmq-26.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:2f23c750e485ce1eb639dbd576d27d168595908aa2d60b149e2d9e34c9df40e0", size = 556342, upload-time = "2025-04-04T12:03:59.218Z" }, - { url = "https://files.pythonhosted.org/packages/d7/20/fb2c92542488db70f833b92893769a569458311a76474bda89dc4264bd18/pyzmq-26.4.0-cp313-cp313-macosx_10_15_universal2.whl", hash = "sha256:c43fac689880f5174d6fc864857d1247fe5cfa22b09ed058a344ca92bf5301e3", size = 1339484, upload-time = "2025-04-04T12:04:00.671Z" }, - { url = "https://files.pythonhosted.org/packages/58/29/2f06b9cabda3a6ea2c10f43e67ded3e47fc25c54822e2506dfb8325155d4/pyzmq-26.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:902aca7eba477657c5fb81c808318460328758e8367ecdd1964b6330c73cae43", size = 666106, upload-time = "2025-04-04T12:04:02.366Z" }, - { url = "https://files.pythonhosted.org/packages/77/e4/dcf62bd29e5e190bd21bfccaa4f3386e01bf40d948c239239c2f1e726729/pyzmq-26.4.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5e48a830bfd152fe17fbdeaf99ac5271aa4122521bf0d275b6b24e52ef35eb6", size = 902056, upload-time = "2025-04-04T12:04:03.919Z" }, - { url = "https://files.pythonhosted.org/packages/1a/cf/b36b3d7aea236087d20189bec1a87eeb2b66009731d7055e5c65f845cdba/pyzmq-26.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31be2b6de98c824c06f5574331f805707c667dc8f60cb18580b7de078479891e", size = 860148, upload-time = "2025-04-04T12:04:05.581Z" }, - { url = "https://files.pythonhosted.org/packages/18/a6/f048826bc87528c208e90604c3bf573801e54bd91e390cbd2dfa860e82dc/pyzmq-26.4.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:6332452034be001bbf3206ac59c0d2a7713de5f25bb38b06519fc6967b7cf771", size = 855983, upload-time = "2025-04-04T12:04:07.096Z" }, - { url = "https://files.pythonhosted.org/packages/0a/27/454d34ab6a1d9772a36add22f17f6b85baf7c16e14325fa29e7202ca8ee8/pyzmq-26.4.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:da8c0f5dd352136853e6a09b1b986ee5278dfddfebd30515e16eae425c872b30", size = 1197274, upload-time = "2025-04-04T12:04:08.523Z" }, - { url = "https://files.pythonhosted.org/packages/f4/3d/7abfeab6b83ad38aa34cbd57c6fc29752c391e3954fd12848bd8d2ec0df6/pyzmq-26.4.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:f4ccc1a0a2c9806dda2a2dd118a3b7b681e448f3bb354056cad44a65169f6d86", size = 1507120, upload-time = "2025-04-04T12:04:10.58Z" }, - { url = "https://files.pythonhosted.org/packages/13/ff/bc8d21dbb9bc8705126e875438a1969c4f77e03fc8565d6901c7933a3d01/pyzmq-26.4.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:1c0b5fceadbab461578daf8d1dcc918ebe7ddd2952f748cf30c7cf2de5d51101", size = 1406738, upload-time = "2025-04-04T12:04:12.509Z" }, - { url = "https://files.pythonhosted.org/packages/f5/5d/d4cd85b24de71d84d81229e3bbb13392b2698432cf8fdcea5afda253d587/pyzmq-26.4.0-cp313-cp313-win32.whl", hash = "sha256:28e2b0ff5ba4b3dd11062d905682bad33385cfa3cc03e81abd7f0822263e6637", size = 577826, upload-time = "2025-04-04T12:04:14.289Z" }, - { url = "https://files.pythonhosted.org/packages/c6/6c/f289c1789d7bb6e5a3b3bef7b2a55089b8561d17132be7d960d3ff33b14e/pyzmq-26.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:23ecc9d241004c10e8b4f49d12ac064cd7000e1643343944a10df98e57bc544b", size = 640406, upload-time = "2025-04-04T12:04:15.757Z" }, - { url = "https://files.pythonhosted.org/packages/b3/99/676b8851cb955eb5236a0c1e9ec679ea5ede092bf8bf2c8a68d7e965cac3/pyzmq-26.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:1edb0385c7f025045d6e0f759d4d3afe43c17a3d898914ec6582e6f464203c08", size = 556216, upload-time = "2025-04-04T12:04:17.212Z" }, - { url = "https://files.pythonhosted.org/packages/65/c2/1fac340de9d7df71efc59d9c50fc7a635a77b103392d1842898dd023afcb/pyzmq-26.4.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:93a29e882b2ba1db86ba5dd5e88e18e0ac6b627026c5cfbec9983422011b82d4", size = 1333769, upload-time = "2025-04-04T12:04:18.665Z" }, - { url = "https://files.pythonhosted.org/packages/5c/c7/6c03637e8d742c3b00bec4f5e4cd9d1c01b2f3694c6f140742e93ca637ed/pyzmq-26.4.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb45684f276f57110bb89e4300c00f1233ca631f08f5f42528a5c408a79efc4a", size = 658826, upload-time = "2025-04-04T12:04:20.405Z" }, - { url = "https://files.pythonhosted.org/packages/a5/97/a8dca65913c0f78e0545af2bb5078aebfc142ca7d91cdaffa1fbc73e5dbd/pyzmq-26.4.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f72073e75260cb301aad4258ad6150fa7f57c719b3f498cb91e31df16784d89b", size = 891650, upload-time = "2025-04-04T12:04:22.413Z" }, - { url = "https://files.pythonhosted.org/packages/7d/7e/f63af1031eb060bf02d033732b910fe48548dcfdbe9c785e9f74a6cc6ae4/pyzmq-26.4.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be37e24b13026cfedd233bcbbccd8c0bcd2fdd186216094d095f60076201538d", size = 849776, upload-time = "2025-04-04T12:04:23.959Z" }, - { url = "https://files.pythonhosted.org/packages/f6/fa/1a009ce582802a895c0d5fe9413f029c940a0a8ee828657a3bb0acffd88b/pyzmq-26.4.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:237b283044934d26f1eeff4075f751b05d2f3ed42a257fc44386d00df6a270cf", size = 842516, upload-time = "2025-04-04T12:04:25.449Z" }, - { url = "https://files.pythonhosted.org/packages/6e/bc/f88b0bad0f7a7f500547d71e99f10336f2314e525d4ebf576a1ea4a1d903/pyzmq-26.4.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:b30f862f6768b17040929a68432c8a8be77780317f45a353cb17e423127d250c", size = 1189183, upload-time = "2025-04-04T12:04:27.035Z" }, - { url = "https://files.pythonhosted.org/packages/d9/8c/db446a3dd9cf894406dec2e61eeffaa3c07c3abb783deaebb9812c4af6a5/pyzmq-26.4.0-cp313-cp313t-musllinux_1_1_i686.whl", hash = "sha256:c80fcd3504232f13617c6ab501124d373e4895424e65de8b72042333316f64a8", size = 1495501, upload-time = "2025-04-04T12:04:28.833Z" }, - { url = "https://files.pythonhosted.org/packages/05/4c/bf3cad0d64c3214ac881299c4562b815f05d503bccc513e3fd4fdc6f67e4/pyzmq-26.4.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:26a2a7451606b87f67cdeca2c2789d86f605da08b4bd616b1a9981605ca3a364", size = 1395540, upload-time = "2025-04-04T12:04:30.562Z" }, - { url = "https://files.pythonhosted.org/packages/47/03/96004704a84095f493be8d2b476641f5c967b269390173f85488a53c1c13/pyzmq-26.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:98d948288ce893a2edc5ec3c438fe8de2daa5bbbd6e2e865ec5f966e237084ba", size = 834408, upload-time = "2025-04-04T12:05:04.569Z" }, - { url = "https://files.pythonhosted.org/packages/e4/7f/68d8f3034a20505db7551cb2260248be28ca66d537a1ac9a257913d778e4/pyzmq-26.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9f34f5c9e0203ece706a1003f1492a56c06c0632d86cb77bcfe77b56aacf27b", size = 569580, upload-time = "2025-04-04T12:05:06.283Z" }, - { url = "https://files.pythonhosted.org/packages/9b/a6/2b0d6801ec33f2b2a19dd8d02e0a1e8701000fec72926e6787363567d30c/pyzmq-26.4.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:80c9b48aef586ff8b698359ce22f9508937c799cc1d2c9c2f7c95996f2300c94", size = 798250, upload-time = "2025-04-04T12:05:07.88Z" }, - { url = "https://files.pythonhosted.org/packages/96/2a/0322b3437de977dcac8a755d6d7ce6ec5238de78e2e2d9353730b297cf12/pyzmq-26.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3f2a5b74009fd50b53b26f65daff23e9853e79aa86e0aa08a53a7628d92d44a", size = 756758, upload-time = "2025-04-04T12:05:09.483Z" }, - { url = "https://files.pythonhosted.org/packages/c2/33/43704f066369416d65549ccee366cc19153911bec0154da7c6b41fca7e78/pyzmq-26.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:61c5f93d7622d84cb3092d7f6398ffc77654c346545313a3737e266fc11a3beb", size = 555371, upload-time = "2025-04-04T12:05:11.062Z" }, - { url = "https://files.pythonhosted.org/packages/04/52/a70fcd5592715702248306d8e1729c10742c2eac44529984413b05c68658/pyzmq-26.4.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4478b14cb54a805088299c25a79f27eaf530564a7a4f72bf432a040042b554eb", size = 834405, upload-time = "2025-04-04T12:05:13.3Z" }, - { url = "https://files.pythonhosted.org/packages/25/f9/1a03f1accff16b3af1a6fa22cbf7ced074776abbf688b2e9cb4629700c62/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a28ac29c60e4ba84b5f58605ace8ad495414a724fe7aceb7cf06cd0598d04e1", size = 569578, upload-time = "2025-04-04T12:05:15.36Z" }, - { url = "https://files.pythonhosted.org/packages/76/0c/3a633acd762aa6655fcb71fa841907eae0ab1e8582ff494b137266de341d/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43b03c1ceea27c6520124f4fb2ba9c647409b9abdf9a62388117148a90419494", size = 798248, upload-time = "2025-04-04T12:05:17.376Z" }, - { url = "https://files.pythonhosted.org/packages/cd/cc/6c99c84aa60ac1cc56747bed6be8ce6305b9b861d7475772e7a25ce019d3/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7731abd23a782851426d4e37deb2057bf9410848a4459b5ede4fe89342e687a9", size = 756757, upload-time = "2025-04-04T12:05:19.19Z" }, - { url = "https://files.pythonhosted.org/packages/13/9c/d8073bd898eb896e94c679abe82e47506e2b750eb261cf6010ced869797c/pyzmq-26.4.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:a222ad02fbe80166b0526c038776e8042cd4e5f0dec1489a006a1df47e9040e0", size = 555371, upload-time = "2025-04-04T12:05:20.702Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/04/0b/3c9baedbdf613ecaa7aa07027780b8867f57b6293b6ee50de316c9f3222b/pyzmq-27.1.0.tar.gz", hash = "sha256:ac0765e3d44455adb6ddbf4417dcce460fc40a05978c08efdf2948072f6db540", size = 281750, upload-time = "2025-09-08T23:10:18.157Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/67/b9/52aa9ec2867528b54f1e60846728d8b4d84726630874fee3a91e66c7df81/pyzmq-27.1.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:508e23ec9bc44c0005c4946ea013d9317ae00ac67778bd47519fdf5a0e930ff4", size = 1329850, upload-time = "2025-09-08T23:07:26.274Z" }, + { url = "https://files.pythonhosted.org/packages/99/64/5653e7b7425b169f994835a2b2abf9486264401fdef18df91ddae47ce2cc/pyzmq-27.1.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:507b6f430bdcf0ee48c0d30e734ea89ce5567fd7b8a0f0044a369c176aa44556", size = 906380, upload-time = "2025-09-08T23:07:29.78Z" }, + { url = "https://files.pythonhosted.org/packages/73/78/7d713284dbe022f6440e391bd1f3c48d9185673878034cfb3939cdf333b2/pyzmq-27.1.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bf7b38f9fd7b81cb6d9391b2946382c8237fd814075c6aa9c3b746d53076023b", size = 666421, upload-time = "2025-09-08T23:07:31.263Z" }, + { url = "https://files.pythonhosted.org/packages/30/76/8f099f9d6482450428b17c4d6b241281af7ce6a9de8149ca8c1c649f6792/pyzmq-27.1.0-cp310-cp310-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:03ff0b279b40d687691a6217c12242ee71f0fba28bf8626ff50e3ef0f4410e1e", size = 854149, upload-time = "2025-09-08T23:07:33.17Z" }, + { url = "https://files.pythonhosted.org/packages/59/f0/37fbfff06c68016019043897e4c969ceab18bde46cd2aca89821fcf4fb2e/pyzmq-27.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:677e744fee605753eac48198b15a2124016c009a11056f93807000ab11ce6526", size = 1655070, upload-time = "2025-09-08T23:07:35.205Z" }, + { url = "https://files.pythonhosted.org/packages/47/14/7254be73f7a8edc3587609554fcaa7bfd30649bf89cd260e4487ca70fdaa/pyzmq-27.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:dd2fec2b13137416a1c5648b7009499bcc8fea78154cd888855fa32514f3dad1", size = 2033441, upload-time = "2025-09-08T23:07:37.432Z" }, + { url = "https://files.pythonhosted.org/packages/22/dc/49f2be26c6f86f347e796a4d99b19167fc94503f0af3fd010ad262158822/pyzmq-27.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:08e90bb4b57603b84eab1d0ca05b3bbb10f60c1839dc471fc1c9e1507bef3386", size = 1891529, upload-time = "2025-09-08T23:07:39.047Z" }, + { url = "https://files.pythonhosted.org/packages/a3/3e/154fb963ae25be70c0064ce97776c937ecc7d8b0259f22858154a9999769/pyzmq-27.1.0-cp310-cp310-win32.whl", hash = "sha256:a5b42d7a0658b515319148875fcb782bbf118dd41c671b62dae33666c2213bda", size = 567276, upload-time = "2025-09-08T23:07:40.695Z" }, + { url = "https://files.pythonhosted.org/packages/62/b2/f4ab56c8c595abcb26b2be5fd9fa9e6899c1e5ad54964e93ae8bb35482be/pyzmq-27.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:c0bb87227430ee3aefcc0ade2088100e528d5d3298a0a715a64f3d04c60ba02f", size = 632208, upload-time = "2025-09-08T23:07:42.298Z" }, + { url = "https://files.pythonhosted.org/packages/3b/e3/be2cc7ab8332bdac0522fdb64c17b1b6241a795bee02e0196636ec5beb79/pyzmq-27.1.0-cp310-cp310-win_arm64.whl", hash = "sha256:9a916f76c2ab8d045b19f2286851a38e9ac94ea91faf65bd64735924522a8b32", size = 559766, upload-time = "2025-09-08T23:07:43.869Z" }, + { url = "https://files.pythonhosted.org/packages/06/5d/305323ba86b284e6fcb0d842d6adaa2999035f70f8c38a9b6d21ad28c3d4/pyzmq-27.1.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:226b091818d461a3bef763805e75685e478ac17e9008f49fce2d3e52b3d58b86", size = 1333328, upload-time = "2025-09-08T23:07:45.946Z" }, + { url = "https://files.pythonhosted.org/packages/bd/a0/fc7e78a23748ad5443ac3275943457e8452da67fda347e05260261108cbc/pyzmq-27.1.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:0790a0161c281ca9723f804871b4027f2e8b5a528d357c8952d08cd1a9c15581", size = 908803, upload-time = "2025-09-08T23:07:47.551Z" }, + { url = "https://files.pythonhosted.org/packages/7e/22/37d15eb05f3bdfa4abea6f6d96eb3bb58585fbd3e4e0ded4e743bc650c97/pyzmq-27.1.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c895a6f35476b0c3a54e3eb6ccf41bf3018de937016e6e18748317f25d4e925f", size = 668836, upload-time = "2025-09-08T23:07:49.436Z" }, + { url = "https://files.pythonhosted.org/packages/b1/c4/2a6fe5111a01005fc7af3878259ce17684fabb8852815eda6225620f3c59/pyzmq-27.1.0-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5bbf8d3630bf96550b3be8e1fc0fea5cbdc8d5466c1192887bd94869da17a63e", size = 857038, upload-time = "2025-09-08T23:07:51.234Z" }, + { url = "https://files.pythonhosted.org/packages/cb/eb/bfdcb41d0db9cd233d6fb22dc131583774135505ada800ebf14dfb0a7c40/pyzmq-27.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:15c8bd0fe0dabf808e2d7a681398c4e5ded70a551ab47482067a572c054c8e2e", size = 1657531, upload-time = "2025-09-08T23:07:52.795Z" }, + { url = "https://files.pythonhosted.org/packages/ab/21/e3180ca269ed4a0de5c34417dfe71a8ae80421198be83ee619a8a485b0c7/pyzmq-27.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:bafcb3dd171b4ae9f19ee6380dfc71ce0390fefaf26b504c0e5f628d7c8c54f2", size = 2034786, upload-time = "2025-09-08T23:07:55.047Z" }, + { url = "https://files.pythonhosted.org/packages/3b/b1/5e21d0b517434b7f33588ff76c177c5a167858cc38ef740608898cd329f2/pyzmq-27.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e829529fcaa09937189178115c49c504e69289abd39967cd8a4c215761373394", size = 1894220, upload-time = "2025-09-08T23:07:57.172Z" }, + { url = "https://files.pythonhosted.org/packages/03/f2/44913a6ff6941905efc24a1acf3d3cb6146b636c546c7406c38c49c403d4/pyzmq-27.1.0-cp311-cp311-win32.whl", hash = "sha256:6df079c47d5902af6db298ec92151db82ecb557af663098b92f2508c398bb54f", size = 567155, upload-time = "2025-09-08T23:07:59.05Z" }, + { url = "https://files.pythonhosted.org/packages/23/6d/d8d92a0eb270a925c9b4dd039c0b4dc10abc2fcbc48331788824ef113935/pyzmq-27.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:190cbf120fbc0fc4957b56866830def56628934a9d112aec0e2507aa6a032b97", size = 633428, upload-time = "2025-09-08T23:08:00.663Z" }, + { url = "https://files.pythonhosted.org/packages/ae/14/01afebc96c5abbbd713ecfc7469cfb1bc801c819a74ed5c9fad9a48801cb/pyzmq-27.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:eca6b47df11a132d1745eb3b5b5e557a7dae2c303277aa0e69c6ba91b8736e07", size = 559497, upload-time = "2025-09-08T23:08:02.15Z" }, + { url = "https://files.pythonhosted.org/packages/92/e7/038aab64a946d535901103da16b953c8c9cc9c961dadcbf3609ed6428d23/pyzmq-27.1.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:452631b640340c928fa343801b0d07eb0c3789a5ffa843f6e1a9cee0ba4eb4fc", size = 1306279, upload-time = "2025-09-08T23:08:03.807Z" }, + { url = "https://files.pythonhosted.org/packages/e8/5e/c3c49fdd0f535ef45eefcc16934648e9e59dace4a37ee88fc53f6cd8e641/pyzmq-27.1.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1c179799b118e554b66da67d88ed66cd37a169f1f23b5d9f0a231b4e8d44a113", size = 895645, upload-time = "2025-09-08T23:08:05.301Z" }, + { url = "https://files.pythonhosted.org/packages/f8/e5/b0b2504cb4e903a74dcf1ebae157f9e20ebb6ea76095f6cfffea28c42ecd/pyzmq-27.1.0-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3837439b7f99e60312f0c926a6ad437b067356dc2bc2ec96eb395fd0fe804233", size = 652574, upload-time = "2025-09-08T23:08:06.828Z" }, + { url = "https://files.pythonhosted.org/packages/f8/9b/c108cdb55560eaf253f0cbdb61b29971e9fb34d9c3499b0e96e4e60ed8a5/pyzmq-27.1.0-cp312-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:43ad9a73e3da1fab5b0e7e13402f0b2fb934ae1c876c51d0afff0e7c052eca31", size = 840995, upload-time = "2025-09-08T23:08:08.396Z" }, + { url = "https://files.pythonhosted.org/packages/c2/bb/b79798ca177b9eb0825b4c9998c6af8cd2a7f15a6a1a4272c1d1a21d382f/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:0de3028d69d4cdc475bfe47a6128eb38d8bc0e8f4d69646adfbcd840facbac28", size = 1642070, upload-time = "2025-09-08T23:08:09.989Z" }, + { url = "https://files.pythonhosted.org/packages/9c/80/2df2e7977c4ede24c79ae39dcef3899bfc5f34d1ca7a5b24f182c9b7a9ca/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:cf44a7763aea9298c0aa7dbf859f87ed7012de8bda0f3977b6fb1d96745df856", size = 2021121, upload-time = "2025-09-08T23:08:11.907Z" }, + { url = "https://files.pythonhosted.org/packages/46/bd/2d45ad24f5f5ae7e8d01525eb76786fa7557136555cac7d929880519e33a/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f30f395a9e6fbca195400ce833c731e7b64c3919aa481af4d88c3759e0cb7496", size = 1878550, upload-time = "2025-09-08T23:08:13.513Z" }, + { url = "https://files.pythonhosted.org/packages/e6/2f/104c0a3c778d7c2ab8190e9db4f62f0b6957b53c9d87db77c284b69f33ea/pyzmq-27.1.0-cp312-abi3-win32.whl", hash = "sha256:250e5436a4ba13885494412b3da5d518cd0d3a278a1ae640e113c073a5f88edd", size = 559184, upload-time = "2025-09-08T23:08:15.163Z" }, + { url = "https://files.pythonhosted.org/packages/fc/7f/a21b20d577e4100c6a41795842028235998a643b1ad406a6d4163ea8f53e/pyzmq-27.1.0-cp312-abi3-win_amd64.whl", hash = "sha256:9ce490cf1d2ca2ad84733aa1d69ce6855372cb5ce9223802450c9b2a7cba0ccf", size = 619480, upload-time = "2025-09-08T23:08:17.192Z" }, + { url = "https://files.pythonhosted.org/packages/78/c2/c012beae5f76b72f007a9e91ee9401cb88c51d0f83c6257a03e785c81cc2/pyzmq-27.1.0-cp312-abi3-win_arm64.whl", hash = "sha256:75a2f36223f0d535a0c919e23615fc85a1e23b71f40c7eb43d7b1dedb4d8f15f", size = 552993, upload-time = "2025-09-08T23:08:18.926Z" }, + { url = "https://files.pythonhosted.org/packages/60/cb/84a13459c51da6cec1b7b1dc1a47e6db6da50b77ad7fd9c145842750a011/pyzmq-27.1.0-cp313-cp313-android_24_arm64_v8a.whl", hash = "sha256:93ad4b0855a664229559e45c8d23797ceac03183c7b6f5b4428152a6b06684a5", size = 1122436, upload-time = "2025-09-08T23:08:20.801Z" }, + { url = "https://files.pythonhosted.org/packages/dc/b6/94414759a69a26c3dd674570a81813c46a078767d931a6c70ad29fc585cb/pyzmq-27.1.0-cp313-cp313-android_24_x86_64.whl", hash = "sha256:fbb4f2400bfda24f12f009cba62ad5734148569ff4949b1b6ec3b519444342e6", size = 1156301, upload-time = "2025-09-08T23:08:22.47Z" }, + { url = "https://files.pythonhosted.org/packages/a5/ad/15906493fd40c316377fd8a8f6b1f93104f97a752667763c9b9c1b71d42d/pyzmq-27.1.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:e343d067f7b151cfe4eb3bb796a7752c9d369eed007b91231e817071d2c2fec7", size = 1341197, upload-time = "2025-09-08T23:08:24.286Z" }, + { url = "https://files.pythonhosted.org/packages/14/1d/d343f3ce13db53a54cb8946594e567410b2125394dafcc0268d8dda027e0/pyzmq-27.1.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:08363b2011dec81c354d694bdecaef4770e0ae96b9afea70b3f47b973655cc05", size = 897275, upload-time = "2025-09-08T23:08:26.063Z" }, + { url = "https://files.pythonhosted.org/packages/69/2d/d83dd6d7ca929a2fc67d2c3005415cdf322af7751d773524809f9e585129/pyzmq-27.1.0-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d54530c8c8b5b8ddb3318f481297441af102517602b569146185fa10b63f4fa9", size = 660469, upload-time = "2025-09-08T23:08:27.623Z" }, + { url = "https://files.pythonhosted.org/packages/3e/cd/9822a7af117f4bc0f1952dbe9ef8358eb50a24928efd5edf54210b850259/pyzmq-27.1.0-cp313-cp313t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6f3afa12c392f0a44a2414056d730eebc33ec0926aae92b5ad5cf26ebb6cc128", size = 847961, upload-time = "2025-09-08T23:08:29.672Z" }, + { url = "https://files.pythonhosted.org/packages/9a/12/f003e824a19ed73be15542f172fd0ec4ad0b60cf37436652c93b9df7c585/pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c65047adafe573ff023b3187bb93faa583151627bc9c51fc4fb2c561ed689d39", size = 1650282, upload-time = "2025-09-08T23:08:31.349Z" }, + { url = "https://files.pythonhosted.org/packages/d5/4a/e82d788ed58e9a23995cee70dbc20c9aded3d13a92d30d57ec2291f1e8a3/pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:90e6e9441c946a8b0a667356f7078d96411391a3b8f80980315455574177ec97", size = 2024468, upload-time = "2025-09-08T23:08:33.543Z" }, + { url = "https://files.pythonhosted.org/packages/d9/94/2da0a60841f757481e402b34bf4c8bf57fa54a5466b965de791b1e6f747d/pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:add071b2d25f84e8189aaf0882d39a285b42fa3853016ebab234a5e78c7a43db", size = 1885394, upload-time = "2025-09-08T23:08:35.51Z" }, + { url = "https://files.pythonhosted.org/packages/4f/6f/55c10e2e49ad52d080dc24e37adb215e5b0d64990b57598abc2e3f01725b/pyzmq-27.1.0-cp313-cp313t-win32.whl", hash = "sha256:7ccc0700cfdf7bd487bea8d850ec38f204478681ea02a582a8da8171b7f90a1c", size = 574964, upload-time = "2025-09-08T23:08:37.178Z" }, + { url = "https://files.pythonhosted.org/packages/87/4d/2534970ba63dd7c522d8ca80fb92777f362c0f321900667c615e2067cb29/pyzmq-27.1.0-cp313-cp313t-win_amd64.whl", hash = "sha256:8085a9fba668216b9b4323be338ee5437a235fe275b9d1610e422ccc279733e2", size = 641029, upload-time = "2025-09-08T23:08:40.595Z" }, + { url = "https://files.pythonhosted.org/packages/f6/fa/f8aea7a28b0641f31d40dea42d7ef003fded31e184ef47db696bc74cd610/pyzmq-27.1.0-cp313-cp313t-win_arm64.whl", hash = "sha256:6bb54ca21bcfe361e445256c15eedf083f153811c37be87e0514934d6913061e", size = 561541, upload-time = "2025-09-08T23:08:42.668Z" }, + { url = "https://files.pythonhosted.org/packages/87/45/19efbb3000956e82d0331bafca5d9ac19ea2857722fa2caacefb6042f39d/pyzmq-27.1.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:ce980af330231615756acd5154f29813d553ea555485ae712c491cd483df6b7a", size = 1341197, upload-time = "2025-09-08T23:08:44.973Z" }, + { url = "https://files.pythonhosted.org/packages/48/43/d72ccdbf0d73d1343936296665826350cb1e825f92f2db9db3e61c2162a2/pyzmq-27.1.0-cp314-cp314t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1779be8c549e54a1c38f805e56d2a2e5c009d26de10921d7d51cfd1c8d4632ea", size = 897175, upload-time = "2025-09-08T23:08:46.601Z" }, + { url = "https://files.pythonhosted.org/packages/2f/2e/a483f73a10b65a9ef0161e817321d39a770b2acf8bcf3004a28d90d14a94/pyzmq-27.1.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7200bb0f03345515df50d99d3db206a0a6bee1955fbb8c453c76f5bf0e08fb96", size = 660427, upload-time = "2025-09-08T23:08:48.187Z" }, + { url = "https://files.pythonhosted.org/packages/f5/d2/5f36552c2d3e5685abe60dfa56f91169f7a2d99bbaf67c5271022ab40863/pyzmq-27.1.0-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01c0e07d558b06a60773744ea6251f769cd79a41a97d11b8bf4ab8f034b0424d", size = 847929, upload-time = "2025-09-08T23:08:49.76Z" }, + { url = "https://files.pythonhosted.org/packages/c4/2a/404b331f2b7bf3198e9945f75c4c521f0c6a3a23b51f7a4a401b94a13833/pyzmq-27.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:80d834abee71f65253c91540445d37c4c561e293ba6e741b992f20a105d69146", size = 1650193, upload-time = "2025-09-08T23:08:51.7Z" }, + { url = "https://files.pythonhosted.org/packages/1c/0b/f4107e33f62a5acf60e3ded67ed33d79b4ce18de432625ce2fc5093d6388/pyzmq-27.1.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:544b4e3b7198dde4a62b8ff6685e9802a9a1ebf47e77478a5eb88eca2a82f2fd", size = 2024388, upload-time = "2025-09-08T23:08:53.393Z" }, + { url = "https://files.pythonhosted.org/packages/0d/01/add31fe76512642fd6e40e3a3bd21f4b47e242c8ba33efb6809e37076d9b/pyzmq-27.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:cedc4c68178e59a4046f97eca31b148ddcf51e88677de1ef4e78cf06c5376c9a", size = 1885316, upload-time = "2025-09-08T23:08:55.702Z" }, + { url = "https://files.pythonhosted.org/packages/c4/59/a5f38970f9bf07cee96128de79590bb354917914a9be11272cfc7ff26af0/pyzmq-27.1.0-cp314-cp314t-win32.whl", hash = "sha256:1f0b2a577fd770aa6f053211a55d1c47901f4d537389a034c690291485e5fe92", size = 587472, upload-time = "2025-09-08T23:08:58.18Z" }, + { url = "https://files.pythonhosted.org/packages/70/d8/78b1bad170f93fcf5e3536e70e8fadac55030002275c9a29e8f5719185de/pyzmq-27.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:19c9468ae0437f8074af379e986c5d3d7d7bfe033506af442e8c879732bedbe0", size = 661401, upload-time = "2025-09-08T23:08:59.802Z" }, + { url = "https://files.pythonhosted.org/packages/81/d6/4bfbb40c9a0b42fc53c7cf442f6385db70b40f74a783130c5d0a5aa62228/pyzmq-27.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:dc5dbf68a7857b59473f7df42650c621d7e8923fb03fa74a526890f4d33cc4d7", size = 575170, upload-time = "2025-09-08T23:09:01.418Z" }, + { url = "https://files.pythonhosted.org/packages/f3/81/a65e71c1552f74dec9dff91d95bafb6e0d33338a8dfefbc88aa562a20c92/pyzmq-27.1.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c17e03cbc9312bee223864f1a2b13a99522e0dc9f7c5df0177cd45210ac286e6", size = 836266, upload-time = "2025-09-08T23:09:40.048Z" }, + { url = "https://files.pythonhosted.org/packages/58/ed/0202ca350f4f2b69faa95c6d931e3c05c3a397c184cacb84cb4f8f42f287/pyzmq-27.1.0-pp310-pypy310_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:f328d01128373cb6763823b2b4e7f73bdf767834268c565151eacb3b7a392f90", size = 800206, upload-time = "2025-09-08T23:09:41.902Z" }, + { url = "https://files.pythonhosted.org/packages/47/42/1ff831fa87fe8f0a840ddb399054ca0009605d820e2b44ea43114f5459f4/pyzmq-27.1.0-pp310-pypy310_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9c1790386614232e1b3a40a958454bdd42c6d1811837b15ddbb052a032a43f62", size = 567747, upload-time = "2025-09-08T23:09:43.741Z" }, + { url = "https://files.pythonhosted.org/packages/d1/db/5c4d6807434751e3f21231bee98109aa57b9b9b55e058e450d0aef59b70f/pyzmq-27.1.0-pp310-pypy310_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:448f9cb54eb0cee4732b46584f2710c8bc178b0e5371d9e4fc8125201e413a74", size = 747371, upload-time = "2025-09-08T23:09:45.575Z" }, + { url = "https://files.pythonhosted.org/packages/26/af/78ce193dbf03567eb8c0dc30e3df2b9e56f12a670bf7eb20f9fb532c7e8a/pyzmq-27.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:05b12f2d32112bf8c95ef2e74ec4f1d4beb01f8b5e703b38537f8849f92cb9ba", size = 544862, upload-time = "2025-09-08T23:09:47.448Z" }, + { url = "https://files.pythonhosted.org/packages/4c/c6/c4dcdecdbaa70969ee1fdced6d7b8f60cfabe64d25361f27ac4665a70620/pyzmq-27.1.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:18770c8d3563715387139060d37859c02ce40718d1faf299abddcdcc6a649066", size = 836265, upload-time = "2025-09-08T23:09:49.376Z" }, + { url = "https://files.pythonhosted.org/packages/3e/79/f38c92eeaeb03a2ccc2ba9866f0439593bb08c5e3b714ac1d553e5c96e25/pyzmq-27.1.0-pp311-pypy311_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:ac25465d42f92e990f8d8b0546b01c391ad431c3bf447683fdc40565941d0604", size = 800208, upload-time = "2025-09-08T23:09:51.073Z" }, + { url = "https://files.pythonhosted.org/packages/49/0e/3f0d0d335c6b3abb9b7b723776d0b21fa7f3a6c819a0db6097059aada160/pyzmq-27.1.0-pp311-pypy311_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53b40f8ae006f2734ee7608d59ed661419f087521edbfc2149c3932e9c14808c", size = 567747, upload-time = "2025-09-08T23:09:52.698Z" }, + { url = "https://files.pythonhosted.org/packages/a1/cf/f2b3784d536250ffd4be70e049f3b60981235d70c6e8ce7e3ef21e1adb25/pyzmq-27.1.0-pp311-pypy311_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f605d884e7c8be8fe1aa94e0a783bf3f591b84c24e4bc4f3e7564c82ac25e271", size = 747371, upload-time = "2025-09-08T23:09:54.563Z" }, + { url = "https://files.pythonhosted.org/packages/01/1b/5dbe84eefc86f48473947e2f41711aded97eecef1231f4558f1f02713c12/pyzmq-27.1.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:c9f7f6e13dff2e44a6afeaf2cf54cee5929ad64afaf4d40b50f93c58fc687355", size = 544862, upload-time = "2025-09-08T23:09:56.509Z" }, +] + +[[package]] +name = "pyzstd" +version = "0.17.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8f/a2/54d860ccbd07e3c67e4d0321d1c29fc7963ac82cf801a078debfc4ef7c15/pyzstd-0.17.0.tar.gz", hash = "sha256:d84271f8baa66c419204c1dd115a4dec8b266f8a2921da21b81764fa208c1db6", size = 1212160, upload-time = "2025-05-10T14:14:49.764Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ea/4f/fb1528fb8cc5c499d7d62953c6d0bce5e96260482abfba883f625c14d168/pyzstd-0.17.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8ac857abb4c4daea71f134e74af7fe16bcfeec40911d13cf9128ddc600d46d92", size = 377826, upload-time = "2025-05-10T14:12:30.195Z" }, + { url = "https://files.pythonhosted.org/packages/f3/60/eedb75628f905263baf4c552dc8255912c43f70784c8b18ef9dd52b186f6/pyzstd-0.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2d84e8d1cbecd3b661febf5ca8ce12c5e112cfeb8401ceedfb84ab44365298ac", size = 297580, upload-time = "2025-05-10T14:12:32.254Z" }, + { url = "https://files.pythonhosted.org/packages/82/32/b7e776da4724c740e6a186e639b57ff0cd0ac23fac14e5c55cbd4bfcbd00/pyzstd-0.17.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f829fa1e7daac2e45b46656bdee13923150f329e53554aeaef75cceec706dd8c", size = 443135, upload-time = "2025-05-10T14:12:34.084Z" }, + { url = "https://files.pythonhosted.org/packages/4c/0b/3223f74d7b09122a695eebb861d7d7020f351b0610065db53d7c6981e592/pyzstd-0.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:994de7a13bb683c190a1b2a0fb99fe0c542126946f0345360582d7d5e8ce8cda", size = 390643, upload-time = "2025-05-10T14:12:36.052Z" }, + { url = "https://files.pythonhosted.org/packages/32/44/c98f10f62cf69d261ed796a2affe1c4ee5bedc05b9690a4c870bc2a74589/pyzstd-0.17.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d3eb213a22823e2155aa252d9093c62ac12d7a9d698a4b37c5613f99cb9de327", size = 478067, upload-time = "2025-05-10T14:12:37.405Z" }, + { url = "https://files.pythonhosted.org/packages/5e/ec/78634376cec5de9e5648c92ca13efa350cab42acb48c72904652ac8a6b3e/pyzstd-0.17.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c451cfa31e70860334cc7dffe46e5178de1756642d972bc3a570fc6768673868", size = 421189, upload-time = "2025-05-10T14:12:38.728Z" }, + { url = "https://files.pythonhosted.org/packages/3f/d4/e7fd4b0bf3cb5d792e373c0002ac05b7b55ee8349dd80eb1c99c8d167973/pyzstd-0.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d66dc6f15249625e537ea4e5e64c195f50182556c3731f260b13c775b7888d6b", size = 412870, upload-time = "2025-05-10T14:12:40.038Z" }, + { url = "https://files.pythonhosted.org/packages/ea/65/1a5a8cb348349cef27326db169c61aa16f74cc8bc873b02ee1f8c0094b0e/pyzstd-0.17.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:308d4888083913fac2b7b6f4a88f67c0773d66db37e6060971c3f173cfa92d1e", size = 415555, upload-time = "2025-05-10T14:12:41.766Z" }, + { url = "https://files.pythonhosted.org/packages/8c/52/12c9402dce3dac85ae1e53bf5623deeb371221f1aa810c40f8b51f06ae40/pyzstd-0.17.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:a3b636f37af9de52efb7dd2d2f15deaeabdeeacf8e69c29bf3e7e731931e6d66", size = 445346, upload-time = "2025-05-10T14:12:43.121Z" }, + { url = "https://files.pythonhosted.org/packages/fa/93/1d1bf5f73fc5b891d880ff96f6e266a1fe84c0be5beffe872afdd11a5e6a/pyzstd-0.17.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4c07391c67b496d851b18aa29ff552a552438187900965df57f64d5cf2100c40", size = 518741, upload-time = "2025-05-10T14:12:44.854Z" }, + { url = "https://files.pythonhosted.org/packages/fa/88/c9882b07c9010014161b39d28784f793219f89c86c4ba7748b6b71818f43/pyzstd-0.17.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:e8bd12a13313ffa27347d7abe20840dcd2092852ab835a8e86008f38f11bd5ac", size = 562483, upload-time = "2025-05-10T14:12:46.508Z" }, + { url = "https://files.pythonhosted.org/packages/83/f7/8d34a9c424fed34353ebc9fcd93a42e9a289b13d651e9413ffd430d28874/pyzstd-0.17.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:2e27bfab45f9cdab0c336c747f493a00680a52a018a8bb7a1f787ddde4b29410", size = 432312, upload-time = "2025-05-10T14:12:48.248Z" }, + { url = "https://files.pythonhosted.org/packages/3f/0d/550003e5034383fa47741cb9991a0ec21fc373860eb4e145c6a2a4d06960/pyzstd-0.17.0-cp310-cp310-win32.whl", hash = "sha256:7370c0978edfcb679419f43ec504c128463858a7ea78cf6d0538c39dfb36fce3", size = 220017, upload-time = "2025-05-10T14:12:49.772Z" }, + { url = "https://files.pythonhosted.org/packages/c3/9a/09cb36576f9ce0699bf271dd6a6d60afa1c79b67dc0f156e1c1dc479ba64/pyzstd-0.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:564f7aa66cda4acd9b2a8461ff0c6a6e39a977be3e2e7317411a9f7860d7338d", size = 246139, upload-time = "2025-05-10T14:12:51.529Z" }, + { url = "https://files.pythonhosted.org/packages/03/d4/ba87ffe5128e6c7d97bf99a9966bd9a76206b28c5d6c244b9697addbf3fc/pyzstd-0.17.0-cp310-cp310-win_arm64.whl", hash = "sha256:fccff3a37fa4c513fe1ebf94cb9dc0369c714da22b5671f78ddcbc7ec8f581cc", size = 223057, upload-time = "2025-05-10T14:12:52.879Z" }, + { url = "https://files.pythonhosted.org/packages/29/4a/81ca9a6a759ae10a51cb72f002c149b602ec81b3a568ca6292b117f6da0d/pyzstd-0.17.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:06d1e7afafe86b90f3d763f83d2f6b6a437a8d75119fe1ff52b955eb9df04eaa", size = 377827, upload-time = "2025-05-10T14:12:54.102Z" }, + { url = "https://files.pythonhosted.org/packages/a1/09/584c12c8a918c9311a55be0c667e57a8ee73797367299e2a9f3fc3bf7a39/pyzstd-0.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:cc827657f644e4510211b49f5dab6b04913216bc316206d98f9a75214361f16e", size = 297579, upload-time = "2025-05-10T14:12:55.748Z" }, + { url = "https://files.pythonhosted.org/packages/e1/89/dc74cd83f30b97f95d42b028362e32032e61a8f8e6cc2a8e47b70976d99a/pyzstd-0.17.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ecffadaa2ee516ecea3e432ebf45348fa8c360017f03b88800dd312d62ecb063", size = 443132, upload-time = "2025-05-10T14:12:57.098Z" }, + { url = "https://files.pythonhosted.org/packages/a8/12/fe93441228a324fe75d10f5f13d5e5d5ed028068810dfdf9505d89d704a0/pyzstd-0.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:596de361948d3aad98a837c98fcee4598e51b608f7e0912e0e725f82e013f00f", size = 390644, upload-time = "2025-05-10T14:12:58.379Z" }, + { url = "https://files.pythonhosted.org/packages/9d/d1/aa7cdeb9bf8995d9df9936c71151be5f4e7b231561d553e73bbf340c2281/pyzstd-0.17.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd3a8d0389c103e93853bf794b9a35ac5d0d11ca3e7e9f87e3305a10f6dfa6b2", size = 478070, upload-time = "2025-05-10T14:12:59.706Z" }, + { url = "https://files.pythonhosted.org/packages/95/62/7e5c450790bfd3db954694d4d877446d0b6d192aae9c73df44511f17b75c/pyzstd-0.17.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1356f72c7b8bb99b942d582b61d1a93c5065e66b6df3914dac9f2823136c3228", size = 421240, upload-time = "2025-05-10T14:13:01.151Z" }, + { url = "https://files.pythonhosted.org/packages/3a/b5/d20c60678c0dfe2430f38241d118308f12516ccdb44f9edce27852ee2187/pyzstd-0.17.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f514c339b013b0b0a2ed8ea6e44684524223bd043267d7644d7c3a70e74a0dd", size = 412908, upload-time = "2025-05-10T14:13:02.904Z" }, + { url = "https://files.pythonhosted.org/packages/d2/a0/3ae0f1af2982b6cdeacc2a1e1cd20869d086d836ea43e0f14caee8664101/pyzstd-0.17.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d4de16306821021c2d82a45454b612e2a8683d99bfb98cff51a883af9334bea0", size = 415572, upload-time = "2025-05-10T14:13:04.828Z" }, + { url = "https://files.pythonhosted.org/packages/7d/84/cb0a10c3796f4cd5f09c112cbd72405ffd019f7c0d1e2e5e99ccc803c60c/pyzstd-0.17.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:aeb9759c04b6a45c1b56be21efb0a738e49b0b75c4d096a38707497a7ff2be82", size = 445334, upload-time = "2025-05-10T14:13:06.5Z" }, + { url = "https://files.pythonhosted.org/packages/d6/d6/8c5cf223067b69aa63f9ecf01846535d4ba82d98f8c9deadfc0092fa16ca/pyzstd-0.17.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:7a5b31ddeada0027e67464d99f09167cf08bab5f346c3c628b2d3c84e35e239a", size = 518748, upload-time = "2025-05-10T14:13:08.286Z" }, + { url = "https://files.pythonhosted.org/packages/bf/1c/dc7bab00a118d0ae931239b23e05bf703392005cf3bb16942b7b2286452a/pyzstd-0.17.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:8338e4e91c52af839abcf32f1f65f3b21e2597ffe411609bdbdaf10274991bd0", size = 562487, upload-time = "2025-05-10T14:13:09.714Z" }, + { url = "https://files.pythonhosted.org/packages/e0/a4/fca96c0af643e4de38bce0dc25dab60ea558c49444c30b9dbe8b7a1714be/pyzstd-0.17.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:628e93862feb372b4700085ec4d1d389f1283ac31900af29591ae01019910ff3", size = 432319, upload-time = "2025-05-10T14:13:11.296Z" }, + { url = "https://files.pythonhosted.org/packages/f1/a3/7c924478f6c14b369fec8c5cd807b069439c6ecbf98c4783c5791036d3ad/pyzstd-0.17.0-cp311-cp311-win32.whl", hash = "sha256:c27773f9c95ebc891cfcf1ef282584d38cde0a96cb8d64127953ad752592d3d7", size = 220005, upload-time = "2025-05-10T14:13:13.188Z" }, + { url = "https://files.pythonhosted.org/packages/d2/f6/d081b6b29cf00780c971b07f7889a19257dd884e64a842a5ebc406fd3992/pyzstd-0.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:c043a5766e00a2b7844705c8fa4563b7c195987120afee8f4cf594ecddf7e9ac", size = 246224, upload-time = "2025-05-10T14:13:14.478Z" }, + { url = "https://files.pythonhosted.org/packages/61/f3/f42c767cde8e3b94652baf85863c25476fd463f3bd61f73ed4a02c1db447/pyzstd-0.17.0-cp311-cp311-win_arm64.whl", hash = "sha256:efd371e41153ef55bf51f97e1ce4c1c0b05ceb59ed1d8972fc9aa1e9b20a790f", size = 223036, upload-time = "2025-05-10T14:13:15.752Z" }, + { url = "https://files.pythonhosted.org/packages/76/50/7fa47d0a13301b1ce20972aa0beb019c97f7ee8b0658d7ec66727b5967f9/pyzstd-0.17.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2ac330fc4f64f97a411b6f3fc179d2fe3050b86b79140e75a9a6dd9d6d82087f", size = 379056, upload-time = "2025-05-10T14:13:17.091Z" }, + { url = "https://files.pythonhosted.org/packages/9d/f2/67b03b1fa4e2a0b05e147cc30ac6d271d3d11017b47b30084cb4699451f4/pyzstd-0.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:725180c0c4eb2e643b7048ebfb45ddf43585b740535907f70ff6088f5eda5096", size = 298381, upload-time = "2025-05-10T14:13:18.812Z" }, + { url = "https://files.pythonhosted.org/packages/01/8b/807ff0a13cf3790fe5de85e18e10c22b96d92107d2ce88699cefd3f890cb/pyzstd-0.17.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9c20fe0a60019685fa1f7137cb284f09e3f64680a503d9c0d50be4dd0a3dc5ec", size = 443770, upload-time = "2025-05-10T14:13:20.495Z" }, + { url = "https://files.pythonhosted.org/packages/f0/88/832d8d8147691ee37736a89ea39eaf94ceac5f24a6ce2be316ff5276a1f8/pyzstd-0.17.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d97f7aaadc3b6e2f8e51bfa6aa203ead9c579db36d66602382534afaf296d0db", size = 391167, upload-time = "2025-05-10T14:13:22.236Z" }, + { url = "https://files.pythonhosted.org/packages/a8/a5/2e09bee398dfb0d94ca43f3655552a8770a6269881dc4710b8f29c7f71aa/pyzstd-0.17.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:42dcb34c5759b59721997036ff2d94210515d3ef47a9de84814f1c51a1e07e8a", size = 478960, upload-time = "2025-05-10T14:13:23.584Z" }, + { url = "https://files.pythonhosted.org/packages/da/b5/1f3b778ad1ccc395161fab7a3bf0dfbd85232234b6657c93213ed1ceda7e/pyzstd-0.17.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6bf05e18be6f6c003c7129e2878cffd76fcbebda4e7ebd7774e34ae140426cbf", size = 421891, upload-time = "2025-05-10T14:13:25.417Z" }, + { url = "https://files.pythonhosted.org/packages/83/c4/6bfb4725f4f38e9fe9735697060364fb36ee67546e7e8d78135044889619/pyzstd-0.17.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c40f7c3a5144aa4fbccf37c30411f6b1db4c0f2cb6ad4df470b37929bffe6ca0", size = 413608, upload-time = "2025-05-10T14:13:26.75Z" }, + { url = "https://files.pythonhosted.org/packages/95/a2/c48b543e3a482e758b648ea025b94efb1abe1f4859c5185ff02c29596035/pyzstd-0.17.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9efd4007f8369fd0890701a4fc77952a0a8c4cb3bd30f362a78a1adfb3c53c12", size = 416429, upload-time = "2025-05-10T14:13:28.096Z" }, + { url = "https://files.pythonhosted.org/packages/5c/62/2d039ee4dbc8116ca1f2a2729b88a1368f076f5dadad463f165993f7afa8/pyzstd-0.17.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5f8add139b5fd23b95daa844ca13118197f85bd35ce7507e92fcdce66286cc34", size = 446671, upload-time = "2025-05-10T14:13:29.772Z" }, + { url = "https://files.pythonhosted.org/packages/be/ec/9ec9f0957cf5b842c751103a2b75ecb0a73cf3d99fac57e0436aab6748e0/pyzstd-0.17.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:259a60e8ce9460367dcb4b34d8b66e44ca3d8c9c30d53ed59ae7037622b3bfc7", size = 520290, upload-time = "2025-05-10T14:13:31.585Z" }, + { url = "https://files.pythonhosted.org/packages/cc/42/2e2f4bb641c2a9ab693c31feebcffa1d7c24e946d8dde424bba371e4fcce/pyzstd-0.17.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:86011a93cc3455c5d2e35988feacffbf2fa106812a48e17eb32c2a52d25a95b3", size = 563785, upload-time = "2025-05-10T14:13:32.971Z" }, + { url = "https://files.pythonhosted.org/packages/4d/e4/25e198d382faa4d322f617d7a5ff82af4dc65749a10d90f1423af2d194f6/pyzstd-0.17.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:425c31bc3de80313054e600398e4f1bd229ee61327896d5d015e2cd0283c9012", size = 433390, upload-time = "2025-05-10T14:13:34.668Z" }, + { url = "https://files.pythonhosted.org/packages/ad/7c/1ab970f5404ace9d343a36a86f1bd0fcf2dc1adf1ef8886394cf0a58bd9e/pyzstd-0.17.0-cp312-cp312-win32.whl", hash = "sha256:7c4b88183bb36eb2cebbc0352e6e9fe8e2d594f15859ae1ef13b63ebc58be158", size = 220291, upload-time = "2025-05-10T14:13:36.005Z" }, + { url = "https://files.pythonhosted.org/packages/b2/52/d35bf3e4f0676a74359fccef015eabe3ceaba95da4ac2212f8be4dde16de/pyzstd-0.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:3c31947e0120468342d74e0fa936d43f7e1dad66a2262f939735715aa6c730e8", size = 246451, upload-time = "2025-05-10T14:13:37.712Z" }, + { url = "https://files.pythonhosted.org/packages/34/da/a44705fe44dd87e0f09861b062f93ebb114365640dbdd62cbe80da9b8306/pyzstd-0.17.0-cp312-cp312-win_arm64.whl", hash = "sha256:1d0346418abcef11507356a31bef5470520f6a5a786d4e2c69109408361b1020", size = 222967, upload-time = "2025-05-10T14:13:38.94Z" }, + { url = "https://files.pythonhosted.org/packages/7e/51/171f5aad999e3f99e664e8ef572bbf97cbd684c46891a99fe8767eb9b7f6/pyzstd-0.17.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6cd1a1d37a7abe9c01d180dad699e3ac3889e4f48ac5dcca145cc46b04e9abd2", size = 379051, upload-time = "2025-05-10T14:13:40.36Z" }, + { url = "https://files.pythonhosted.org/packages/83/1e/bdae9d1331a7fb60cdd9d3c75794ea4c0271d5e8408fbbe877353b730f99/pyzstd-0.17.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1a44fd596eda06b6265dc0358d5b309715a93f8e96e8a4b5292c2fe0e14575b3", size = 298384, upload-time = "2025-05-10T14:13:41.728Z" }, + { url = "https://files.pythonhosted.org/packages/80/3d/c0b61fc7994254b369aa5e96fcd02dbb3f8964482d51e098640802dd35e8/pyzstd-0.17.0-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a99b37453f92f0691b2454d0905bbf2f430522612f6f12bbc81133ad947eb97", size = 445950, upload-time = "2025-05-10T14:13:43.034Z" }, + { url = "https://files.pythonhosted.org/packages/78/62/318de78124d49fe3f7ae2b44726bdb85eef63c3f3338ec3673665326df25/pyzstd-0.17.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63d864e9f9e624a466070a121ace9d9cbf579eac4ed575dee3b203ab1b3cbeee", size = 392923, upload-time = "2025-05-10T14:13:44.443Z" }, + { url = "https://files.pythonhosted.org/packages/7a/24/21541ee45cae4fd7e3d15d67f67ad3e96e41e0ee0a95653006f8a0df2349/pyzstd-0.17.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e58bc02b055f96d1f83c791dd197d8c80253275a56cd84f917a006e9f528420d", size = 480524, upload-time = "2025-05-10T14:13:45.798Z" }, + { url = "https://files.pythonhosted.org/packages/ed/fd/6659504588f4cb53ac5f347bd75206072c4969eacf3ae6925f46ddb6dadb/pyzstd-0.17.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3e62df7c0ba74618481149c849bc3ed7d551b9147e1274b4b3170bbcc0bfcc0a", size = 423568, upload-time = "2025-05-10T14:13:47.624Z" }, + { url = "https://files.pythonhosted.org/packages/2a/50/1eefc03eb21745321893fbd52702245f85e9e1f7ad35411dff2606792100/pyzstd-0.17.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42ecdd7136294f1becb8e57441df00eaa6dfd7444a8b0c96a1dfba5c81b066e7", size = 415473, upload-time = "2025-05-10T14:13:48.994Z" }, + { url = "https://files.pythonhosted.org/packages/8a/27/f3da112795f9b9dc4db819f9f6e1b231a7adc03c609db1f2b33a4185be1d/pyzstd-0.17.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:be07a57af75f99fc39b8e2d35f8fb823ecd7ef099cd1f6203829a5094a991ae2", size = 418276, upload-time = "2025-05-10T14:13:50.316Z" }, + { url = "https://files.pythonhosted.org/packages/95/56/02b601d7198dc5138ceea6f2b978b3205b9fab05740957d1ef1c4ca59621/pyzstd-0.17.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:0d41e6f7ec2a70dab4982157a099562de35a6735c890945b4cebb12fb7eb0be0", size = 449285, upload-time = "2025-05-10T14:13:51.759Z" }, + { url = "https://files.pythonhosted.org/packages/f4/79/8a4c352f9dd5728402318f324930250ad40df8fd27fea33818cf0c9ac171/pyzstd-0.17.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f482d906426756e7cc9a43f500fee907e1b3b4e9c04d42d58fb1918c6758759b", size = 522190, upload-time = "2025-05-10T14:13:53.075Z" }, + { url = "https://files.pythonhosted.org/packages/55/4a/51385325e7b816365292078449a8007bc3ab3e05b7b29ab91d9d519edb01/pyzstd-0.17.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:827327b35605265e1d05a2f6100244415e8f2728bb75c951736c9288415908d7", size = 566488, upload-time = "2025-05-10T14:13:54.484Z" }, + { url = "https://files.pythonhosted.org/packages/26/68/da37fb4e6a79a3cff7de4a3ee006fb5f981230c59de79f6c8c426392a265/pyzstd-0.17.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6a55008f80e3390e4f37bd9353830f1675f271d13d6368d2f1dc413b7c6022b3", size = 432870, upload-time = "2025-05-10T14:13:55.86Z" }, + { url = "https://files.pythonhosted.org/packages/30/05/769d82f9708c4907512111a1de44bb77e5b08ad3862287c2e5fc5ead2df2/pyzstd-0.17.0-cp313-cp313-win32.whl", hash = "sha256:a4be186c0df86d4d95091c759a06582654f2b93690503b1c24d77f537d0cf5d0", size = 220290, upload-time = "2025-05-10T14:13:57.227Z" }, + { url = "https://files.pythonhosted.org/packages/62/92/f69eb8623f041c2656e27337ac08e69cd18a9eacb1557ab498d391f191bd/pyzstd-0.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:251a0b599bd224ec66f39165ddb2f959d0a523938e3bbfa82d8188dc03a271a2", size = 246450, upload-time = "2025-05-10T14:13:58.596Z" }, + { url = "https://files.pythonhosted.org/packages/ad/ef/5ae5445d5f675e9e8c868b2326597c5b396e41c5c9645daa45e8c1cd3d5c/pyzstd-0.17.0-cp313-cp313-win_arm64.whl", hash = "sha256:ce6d5fd908fd3ddec32d1c1a5a7a15b9d7737d0ef2ab20fe1e8261da61395017", size = 222966, upload-time = "2025-05-10T14:13:59.881Z" }, + { url = "https://files.pythonhosted.org/packages/c9/32/97505422bd403a4207587fc454eaa6497d353e6110fce234e1d2be780279/pyzstd-0.17.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1c56f99c697130f39702e07ab9fa0bb4c929c7bfe47c0a488dea732bd8a8752a", size = 368393, upload-time = "2025-05-10T14:14:24.909Z" }, + { url = "https://files.pythonhosted.org/packages/1d/db/963dd8a5f9e29581097a4f3a9f0deaa8a2cd516b2ce945fcb489e3c19e2a/pyzstd-0.17.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:152bae1b2197bcd41fc143f93acd23d474f590162547484ca04ce5874c4847de", size = 283560, upload-time = "2025-05-10T14:14:26.171Z" }, + { url = "https://files.pythonhosted.org/packages/66/14/a8868202b896538f1f1ecbf13f226722426b6d44a11a8d6ce23ce57a4370/pyzstd-0.17.0-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2ddbbd7614922e52018ba3e7bb4cbe6f25b230096831d97916b8b89be8cd0cb", size = 356913, upload-time = "2025-05-10T14:14:27.519Z" }, + { url = "https://files.pythonhosted.org/packages/35/a6/7198ab6abd0604eb7d71a8a36b69b66441258d9216bc2fa5f181dcd47c7a/pyzstd-0.17.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f6f3f152888825f71fd2cf2499f093fac252a5c1fa15ab8747110b3dc095f6b", size = 329418, upload-time = "2025-05-10T14:14:28.897Z" }, + { url = "https://files.pythonhosted.org/packages/c3/6b/9901ea929ea481428113a16530b26873615ae2ed184897ec92e15004cc07/pyzstd-0.17.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d00a2d2bddf51c7bf32c17dc47f0f49f47ebae07c2528b9ee8abf1f318ac193", size = 349449, upload-time = "2025-05-10T14:14:30.247Z" }, + { url = "https://files.pythonhosted.org/packages/11/30/fc8258499b9a556eaadc61f542aa930d2046d96125454add97b2bc8fb052/pyzstd-0.17.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d79e3eff07217707a92c1a6a9841c2466bfcca4d00fea0bea968f4034c27a256", size = 241666, upload-time = "2025-05-10T14:14:31.712Z" }, + { url = "https://files.pythonhosted.org/packages/b8/95/b1ae395968efdba92704c23f2f8e027d08e00d1407671e42f65ac914d211/pyzstd-0.17.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:3ce6bac0c4c032c5200647992a8efcb9801c918633ebe11cceba946afea152d9", size = 368391, upload-time = "2025-05-10T14:14:33.064Z" }, + { url = "https://files.pythonhosted.org/packages/c7/72/856831cacef58492878b8307353e28a3ba4326a85c3c82e4803a95ad0d14/pyzstd-0.17.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:a00998144b35be7c485a383f739fe0843a784cd96c3f1f2f53f1a249545ce49a", size = 283561, upload-time = "2025-05-10T14:14:34.469Z" }, + { url = "https://files.pythonhosted.org/packages/a4/a7/a86e55cd9f3e630a71c0bf78ac6da0c6b50dc428ca81aa7c5adbc66eb880/pyzstd-0.17.0-pp311-pypy311_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8521d7bbd00e0e1c1fd222c1369a7600fba94d24ba380618f9f75ee0c375c277", size = 356912, upload-time = "2025-05-10T14:14:35.722Z" }, + { url = "https://files.pythonhosted.org/packages/ad/b7/de2b42dd96dfdb1c0feb5f43d53db2d3a060607f878da7576f35dff68789/pyzstd-0.17.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da65158c877eac78dcc108861d607c02fb3703195c3a177f2687e0bcdfd519d0", size = 329417, upload-time = "2025-05-10T14:14:37.487Z" }, + { url = "https://files.pythonhosted.org/packages/52/65/d4e8196e068e6b430499fb2a5092380eb2cb7eecf459b9d4316cff7ecf6c/pyzstd-0.17.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:226ca0430e2357abae1ade802585231a2959b010ec9865600e416652121ba80b", size = 349448, upload-time = "2025-05-10T14:14:38.797Z" }, + { url = "https://files.pythonhosted.org/packages/9e/15/b5ed5ad8c8d2d80c5f5d51e6c61b2cc05f93aaf171164f67ccc7ade815cd/pyzstd-0.17.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:e3a19e8521c145a0e2cd87ca464bf83604000c5454f7e0746092834fd7de84d1", size = 241668, upload-time = "2025-05-10T14:14:40.18Z" }, ] [[package]] @@ -3582,76 +4367,114 @@ wheels = [ [[package]] name = "regex" -version = "2024.11.6" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8e/5f/bd69653fbfb76cf8604468d3b4ec4c403197144c7bfe0e6a5fc9e02a07cb/regex-2024.11.6.tar.gz", hash = "sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519", size = 399494, upload-time = "2024-11-06T20:12:31.635Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/95/3c/4651f6b130c6842a8f3df82461a8950f923925db8b6961063e82744bddcc/regex-2024.11.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff590880083d60acc0433f9c3f713c51f7ac6ebb9adf889c79a261ecf541aa91", size = 482674, upload-time = "2024-11-06T20:08:57.575Z" }, - { url = "https://files.pythonhosted.org/packages/15/51/9f35d12da8434b489c7b7bffc205c474a0a9432a889457026e9bc06a297a/regex-2024.11.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:658f90550f38270639e83ce492f27d2c8d2cd63805c65a13a14d36ca126753f0", size = 287684, upload-time = "2024-11-06T20:08:59.787Z" }, - { url = "https://files.pythonhosted.org/packages/bd/18/b731f5510d1b8fb63c6b6d3484bfa9a59b84cc578ac8b5172970e05ae07c/regex-2024.11.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:164d8b7b3b4bcb2068b97428060b2a53be050085ef94eca7f240e7947f1b080e", size = 284589, upload-time = "2024-11-06T20:09:01.896Z" }, - { url = "https://files.pythonhosted.org/packages/78/a2/6dd36e16341ab95e4c6073426561b9bfdeb1a9c9b63ab1b579c2e96cb105/regex-2024.11.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3660c82f209655a06b587d55e723f0b813d3a7db2e32e5e7dc64ac2a9e86fde", size = 782511, upload-time = "2024-11-06T20:09:04.062Z" }, - { url = "https://files.pythonhosted.org/packages/1b/2b/323e72d5d2fd8de0d9baa443e1ed70363ed7e7b2fb526f5950c5cb99c364/regex-2024.11.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d22326fcdef5e08c154280b71163ced384b428343ae16a5ab2b3354aed12436e", size = 821149, upload-time = "2024-11-06T20:09:06.237Z" }, - { url = "https://files.pythonhosted.org/packages/90/30/63373b9ea468fbef8a907fd273e5c329b8c9535fee36fc8dba5fecac475d/regex-2024.11.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1ac758ef6aebfc8943560194e9fd0fa18bcb34d89fd8bd2af18183afd8da3a2", size = 809707, upload-time = "2024-11-06T20:09:07.715Z" }, - { url = "https://files.pythonhosted.org/packages/f2/98/26d3830875b53071f1f0ae6d547f1d98e964dd29ad35cbf94439120bb67a/regex-2024.11.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:997d6a487ff00807ba810e0f8332c18b4eb8d29463cfb7c820dc4b6e7562d0cf", size = 781702, upload-time = "2024-11-06T20:09:10.101Z" }, - { url = "https://files.pythonhosted.org/packages/87/55/eb2a068334274db86208ab9d5599ffa63631b9f0f67ed70ea7c82a69bbc8/regex-2024.11.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:02a02d2bb04fec86ad61f3ea7f49c015a0681bf76abb9857f945d26159d2968c", size = 771976, upload-time = "2024-11-06T20:09:11.566Z" }, - { url = "https://files.pythonhosted.org/packages/74/c0/be707bcfe98254d8f9d2cff55d216e946f4ea48ad2fd8cf1428f8c5332ba/regex-2024.11.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f02f93b92358ee3f78660e43b4b0091229260c5d5c408d17d60bf26b6c900e86", size = 697397, upload-time = "2024-11-06T20:09:13.119Z" }, - { url = "https://files.pythonhosted.org/packages/49/dc/bb45572ceb49e0f6509f7596e4ba7031f6819ecb26bc7610979af5a77f45/regex-2024.11.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:06eb1be98df10e81ebaded73fcd51989dcf534e3c753466e4b60c4697a003b67", size = 768726, upload-time = "2024-11-06T20:09:14.85Z" }, - { url = "https://files.pythonhosted.org/packages/5a/db/f43fd75dc4c0c2d96d0881967897926942e935d700863666f3c844a72ce6/regex-2024.11.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:040df6fe1a5504eb0f04f048e6d09cd7c7110fef851d7c567a6b6e09942feb7d", size = 775098, upload-time = "2024-11-06T20:09:16.504Z" }, - { url = "https://files.pythonhosted.org/packages/99/d7/f94154db29ab5a89d69ff893159b19ada89e76b915c1293e98603d39838c/regex-2024.11.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabbfc59f2c6edba2a6622c647b716e34e8e3867e0ab975412c5c2f79b82da2", size = 839325, upload-time = "2024-11-06T20:09:18.698Z" }, - { url = "https://files.pythonhosted.org/packages/f7/17/3cbfab1f23356fbbf07708220ab438a7efa1e0f34195bf857433f79f1788/regex-2024.11.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8447d2d39b5abe381419319f942de20b7ecd60ce86f16a23b0698f22e1b70008", size = 843277, upload-time = "2024-11-06T20:09:21.725Z" }, - { url = "https://files.pythonhosted.org/packages/7e/f2/48b393b51900456155de3ad001900f94298965e1cad1c772b87f9cfea011/regex-2024.11.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:da8f5fc57d1933de22a9e23eec290a0d8a5927a5370d24bda9a6abe50683fe62", size = 773197, upload-time = "2024-11-06T20:09:24.092Z" }, - { url = "https://files.pythonhosted.org/packages/45/3f/ef9589aba93e084cd3f8471fded352826dcae8489b650d0b9b27bc5bba8a/regex-2024.11.6-cp310-cp310-win32.whl", hash = "sha256:b489578720afb782f6ccf2840920f3a32e31ba28a4b162e13900c3e6bd3f930e", size = 261714, upload-time = "2024-11-06T20:09:26.36Z" }, - { url = "https://files.pythonhosted.org/packages/42/7e/5f1b92c8468290c465fd50c5318da64319133231415a8aa6ea5ab995a815/regex-2024.11.6-cp310-cp310-win_amd64.whl", hash = "sha256:5071b2093e793357c9d8b2929dfc13ac5f0a6c650559503bb81189d0a3814519", size = 274042, upload-time = "2024-11-06T20:09:28.762Z" }, - { url = "https://files.pythonhosted.org/packages/58/58/7e4d9493a66c88a7da6d205768119f51af0f684fe7be7bac8328e217a52c/regex-2024.11.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5478c6962ad548b54a591778e93cd7c456a7a29f8eca9c49e4f9a806dcc5d638", size = 482669, upload-time = "2024-11-06T20:09:31.064Z" }, - { url = "https://files.pythonhosted.org/packages/34/4c/8f8e631fcdc2ff978609eaeef1d6994bf2f028b59d9ac67640ed051f1218/regex-2024.11.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c89a8cc122b25ce6945f0423dc1352cb9593c68abd19223eebbd4e56612c5b7", size = 287684, upload-time = "2024-11-06T20:09:32.915Z" }, - { url = "https://files.pythonhosted.org/packages/c5/1b/f0e4d13e6adf866ce9b069e191f303a30ab1277e037037a365c3aad5cc9c/regex-2024.11.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:94d87b689cdd831934fa3ce16cc15cd65748e6d689f5d2b8f4f4df2065c9fa20", size = 284589, upload-time = "2024-11-06T20:09:35.504Z" }, - { url = "https://files.pythonhosted.org/packages/25/4d/ab21047f446693887f25510887e6820b93f791992994f6498b0318904d4a/regex-2024.11.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1062b39a0a2b75a9c694f7a08e7183a80c63c0d62b301418ffd9c35f55aaa114", size = 792121, upload-time = "2024-11-06T20:09:37.701Z" }, - { url = "https://files.pythonhosted.org/packages/45/ee/c867e15cd894985cb32b731d89576c41a4642a57850c162490ea34b78c3b/regex-2024.11.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:167ed4852351d8a750da48712c3930b031f6efdaa0f22fa1933716bfcd6bf4a3", size = 831275, upload-time = "2024-11-06T20:09:40.371Z" }, - { url = "https://files.pythonhosted.org/packages/b3/12/b0f480726cf1c60f6536fa5e1c95275a77624f3ac8fdccf79e6727499e28/regex-2024.11.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d548dafee61f06ebdb584080621f3e0c23fff312f0de1afc776e2a2ba99a74f", size = 818257, upload-time = "2024-11-06T20:09:43.059Z" }, - { url = "https://files.pythonhosted.org/packages/bf/ce/0d0e61429f603bac433910d99ef1a02ce45a8967ffbe3cbee48599e62d88/regex-2024.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a19f302cd1ce5dd01a9099aaa19cae6173306d1302a43b627f62e21cf18ac0", size = 792727, upload-time = "2024-11-06T20:09:48.19Z" }, - { url = "https://files.pythonhosted.org/packages/e4/c1/243c83c53d4a419c1556f43777ccb552bccdf79d08fda3980e4e77dd9137/regex-2024.11.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bec9931dfb61ddd8ef2ebc05646293812cb6b16b60cf7c9511a832b6f1854b55", size = 780667, upload-time = "2024-11-06T20:09:49.828Z" }, - { url = "https://files.pythonhosted.org/packages/c5/f4/75eb0dd4ce4b37f04928987f1d22547ddaf6c4bae697623c1b05da67a8aa/regex-2024.11.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9714398225f299aa85267fd222f7142fcb5c769e73d7733344efc46f2ef5cf89", size = 776963, upload-time = "2024-11-06T20:09:51.819Z" }, - { url = "https://files.pythonhosted.org/packages/16/5d/95c568574e630e141a69ff8a254c2f188b4398e813c40d49228c9bbd9875/regex-2024.11.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:202eb32e89f60fc147a41e55cb086db2a3f8cb82f9a9a88440dcfc5d37faae8d", size = 784700, upload-time = "2024-11-06T20:09:53.982Z" }, - { url = "https://files.pythonhosted.org/packages/8e/b5/f8495c7917f15cc6fee1e7f395e324ec3e00ab3c665a7dc9d27562fd5290/regex-2024.11.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:4181b814e56078e9b00427ca358ec44333765f5ca1b45597ec7446d3a1ef6e34", size = 848592, upload-time = "2024-11-06T20:09:56.222Z" }, - { url = "https://files.pythonhosted.org/packages/1c/80/6dd7118e8cb212c3c60b191b932dc57db93fb2e36fb9e0e92f72a5909af9/regex-2024.11.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:068376da5a7e4da51968ce4c122a7cd31afaaec4fccc7856c92f63876e57b51d", size = 852929, upload-time = "2024-11-06T20:09:58.642Z" }, - { url = "https://files.pythonhosted.org/packages/11/9b/5a05d2040297d2d254baf95eeeb6df83554e5e1df03bc1a6687fc4ba1f66/regex-2024.11.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f2c4184420d881a3475fb2c6f4d95d53a8d50209a2500723d831036f7c45", size = 781213, upload-time = "2024-11-06T20:10:00.867Z" }, - { url = "https://files.pythonhosted.org/packages/26/b7/b14e2440156ab39e0177506c08c18accaf2b8932e39fb092074de733d868/regex-2024.11.6-cp311-cp311-win32.whl", hash = "sha256:c36f9b6f5f8649bb251a5f3f66564438977b7ef8386a52460ae77e6070d309d9", size = 261734, upload-time = "2024-11-06T20:10:03.361Z" }, - { url = "https://files.pythonhosted.org/packages/80/32/763a6cc01d21fb3819227a1cc3f60fd251c13c37c27a73b8ff4315433a8e/regex-2024.11.6-cp311-cp311-win_amd64.whl", hash = "sha256:02e28184be537f0e75c1f9b2f8847dc51e08e6e171c6bde130b2687e0c33cf60", size = 274052, upload-time = "2024-11-06T20:10:05.179Z" }, - { url = "https://files.pythonhosted.org/packages/ba/30/9a87ce8336b172cc232a0db89a3af97929d06c11ceaa19d97d84fa90a8f8/regex-2024.11.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:52fb28f528778f184f870b7cf8f225f5eef0a8f6e3778529bdd40c7b3920796a", size = 483781, upload-time = "2024-11-06T20:10:07.07Z" }, - { url = "https://files.pythonhosted.org/packages/01/e8/00008ad4ff4be8b1844786ba6636035f7ef926db5686e4c0f98093612add/regex-2024.11.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdd6028445d2460f33136c55eeb1f601ab06d74cb3347132e1c24250187500d9", size = 288455, upload-time = "2024-11-06T20:10:09.117Z" }, - { url = "https://files.pythonhosted.org/packages/60/85/cebcc0aff603ea0a201667b203f13ba75d9fc8668fab917ac5b2de3967bc/regex-2024.11.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805e6b60c54bf766b251e94526ebad60b7de0c70f70a4e6210ee2891acb70bf2", size = 284759, upload-time = "2024-11-06T20:10:11.155Z" }, - { url = "https://files.pythonhosted.org/packages/94/2b/701a4b0585cb05472a4da28ee28fdfe155f3638f5e1ec92306d924e5faf0/regex-2024.11.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b85c2530be953a890eaffde05485238f07029600e8f098cdf1848d414a8b45e4", size = 794976, upload-time = "2024-11-06T20:10:13.24Z" }, - { url = "https://files.pythonhosted.org/packages/4b/bf/fa87e563bf5fee75db8915f7352e1887b1249126a1be4813837f5dbec965/regex-2024.11.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb26437975da7dc36b7efad18aa9dd4ea569d2357ae6b783bf1118dabd9ea577", size = 833077, upload-time = "2024-11-06T20:10:15.37Z" }, - { url = "https://files.pythonhosted.org/packages/a1/56/7295e6bad94b047f4d0834e4779491b81216583c00c288252ef625c01d23/regex-2024.11.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abfa5080c374a76a251ba60683242bc17eeb2c9818d0d30117b4486be10c59d3", size = 823160, upload-time = "2024-11-06T20:10:19.027Z" }, - { url = "https://files.pythonhosted.org/packages/fb/13/e3b075031a738c9598c51cfbc4c7879e26729c53aa9cca59211c44235314/regex-2024.11.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b7fa6606c2881c1db9479b0eaa11ed5dfa11c8d60a474ff0e095099f39d98e", size = 796896, upload-time = "2024-11-06T20:10:21.85Z" }, - { url = "https://files.pythonhosted.org/packages/24/56/0b3f1b66d592be6efec23a795b37732682520b47c53da5a32c33ed7d84e3/regex-2024.11.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c32f75920cf99fe6b6c539c399a4a128452eaf1af27f39bce8909c9a3fd8cbe", size = 783997, upload-time = "2024-11-06T20:10:24.329Z" }, - { url = "https://files.pythonhosted.org/packages/f9/a1/eb378dada8b91c0e4c5f08ffb56f25fcae47bf52ad18f9b2f33b83e6d498/regex-2024.11.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:982e6d21414e78e1f51cf595d7f321dcd14de1f2881c5dc6a6e23bbbbd68435e", size = 781725, upload-time = "2024-11-06T20:10:28.067Z" }, - { url = "https://files.pythonhosted.org/packages/83/f2/033e7dec0cfd6dda93390089864732a3409246ffe8b042e9554afa9bff4e/regex-2024.11.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a7c2155f790e2fb448faed6dd241386719802296ec588a8b9051c1f5c481bc29", size = 789481, upload-time = "2024-11-06T20:10:31.612Z" }, - { url = "https://files.pythonhosted.org/packages/83/23/15d4552ea28990a74e7696780c438aadd73a20318c47e527b47a4a5a596d/regex-2024.11.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149f5008d286636e48cd0b1dd65018548944e495b0265b45e1bffecce1ef7f39", size = 852896, upload-time = "2024-11-06T20:10:34.054Z" }, - { url = "https://files.pythonhosted.org/packages/e3/39/ed4416bc90deedbfdada2568b2cb0bc1fdb98efe11f5378d9892b2a88f8f/regex-2024.11.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e5364a4502efca094731680e80009632ad6624084aff9a23ce8c8c6820de3e51", size = 860138, upload-time = "2024-11-06T20:10:36.142Z" }, - { url = "https://files.pythonhosted.org/packages/93/2d/dd56bb76bd8e95bbce684326302f287455b56242a4f9c61f1bc76e28360e/regex-2024.11.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0a86e7eeca091c09e021db8eb72d54751e527fa47b8d5787caf96d9831bd02ad", size = 787692, upload-time = "2024-11-06T20:10:38.394Z" }, - { url = "https://files.pythonhosted.org/packages/0b/55/31877a249ab7a5156758246b9c59539abbeba22461b7d8adc9e8475ff73e/regex-2024.11.6-cp312-cp312-win32.whl", hash = "sha256:32f9a4c643baad4efa81d549c2aadefaeba12249b2adc5af541759237eee1c54", size = 262135, upload-time = "2024-11-06T20:10:40.367Z" }, - { url = "https://files.pythonhosted.org/packages/38/ec/ad2d7de49a600cdb8dd78434a1aeffe28b9d6fc42eb36afab4a27ad23384/regex-2024.11.6-cp312-cp312-win_amd64.whl", hash = "sha256:a93c194e2df18f7d264092dc8539b8ffb86b45b899ab976aa15d48214138e81b", size = 273567, upload-time = "2024-11-06T20:10:43.467Z" }, - { url = "https://files.pythonhosted.org/packages/90/73/bcb0e36614601016552fa9344544a3a2ae1809dc1401b100eab02e772e1f/regex-2024.11.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a6ba92c0bcdf96cbf43a12c717eae4bc98325ca3730f6b130ffa2e3c3c723d84", size = 483525, upload-time = "2024-11-06T20:10:45.19Z" }, - { url = "https://files.pythonhosted.org/packages/0f/3f/f1a082a46b31e25291d830b369b6b0c5576a6f7fb89d3053a354c24b8a83/regex-2024.11.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:525eab0b789891ac3be914d36893bdf972d483fe66551f79d3e27146191a37d4", size = 288324, upload-time = "2024-11-06T20:10:47.177Z" }, - { url = "https://files.pythonhosted.org/packages/09/c9/4e68181a4a652fb3ef5099e077faf4fd2a694ea6e0f806a7737aff9e758a/regex-2024.11.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:086a27a0b4ca227941700e0b31425e7a28ef1ae8e5e05a33826e17e47fbfdba0", size = 284617, upload-time = "2024-11-06T20:10:49.312Z" }, - { url = "https://files.pythonhosted.org/packages/fc/fd/37868b75eaf63843165f1d2122ca6cb94bfc0271e4428cf58c0616786dce/regex-2024.11.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bde01f35767c4a7899b7eb6e823b125a64de314a8ee9791367c9a34d56af18d0", size = 795023, upload-time = "2024-11-06T20:10:51.102Z" }, - { url = "https://files.pythonhosted.org/packages/c4/7c/d4cd9c528502a3dedb5c13c146e7a7a539a3853dc20209c8e75d9ba9d1b2/regex-2024.11.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b583904576650166b3d920d2bcce13971f6f9e9a396c673187f49811b2769dc7", size = 833072, upload-time = "2024-11-06T20:10:52.926Z" }, - { url = "https://files.pythonhosted.org/packages/4f/db/46f563a08f969159c5a0f0e722260568425363bea43bb7ae370becb66a67/regex-2024.11.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c4de13f06a0d54fa0d5ab1b7138bfa0d883220965a29616e3ea61b35d5f5fc7", size = 823130, upload-time = "2024-11-06T20:10:54.828Z" }, - { url = "https://files.pythonhosted.org/packages/db/60/1eeca2074f5b87df394fccaa432ae3fc06c9c9bfa97c5051aed70e6e00c2/regex-2024.11.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cde6e9f2580eb1665965ce9bf17ff4952f34f5b126beb509fee8f4e994f143c", size = 796857, upload-time = "2024-11-06T20:10:56.634Z" }, - { url = "https://files.pythonhosted.org/packages/10/db/ac718a08fcee981554d2f7bb8402f1faa7e868c1345c16ab1ebec54b0d7b/regex-2024.11.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d7f453dca13f40a02b79636a339c5b62b670141e63efd511d3f8f73fba162b3", size = 784006, upload-time = "2024-11-06T20:10:59.369Z" }, - { url = "https://files.pythonhosted.org/packages/c2/41/7da3fe70216cea93144bf12da2b87367590bcf07db97604edeea55dac9ad/regex-2024.11.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:59dfe1ed21aea057a65c6b586afd2a945de04fc7db3de0a6e3ed5397ad491b07", size = 781650, upload-time = "2024-11-06T20:11:02.042Z" }, - { url = "https://files.pythonhosted.org/packages/a7/d5/880921ee4eec393a4752e6ab9f0fe28009435417c3102fc413f3fe81c4e5/regex-2024.11.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b97c1e0bd37c5cd7902e65f410779d39eeda155800b65fc4d04cc432efa9bc6e", size = 789545, upload-time = "2024-11-06T20:11:03.933Z" }, - { url = "https://files.pythonhosted.org/packages/dc/96/53770115e507081122beca8899ab7f5ae28ae790bfcc82b5e38976df6a77/regex-2024.11.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f9d1e379028e0fc2ae3654bac3cbbef81bf3fd571272a42d56c24007979bafb6", size = 853045, upload-time = "2024-11-06T20:11:06.497Z" }, - { url = "https://files.pythonhosted.org/packages/31/d3/1372add5251cc2d44b451bd94f43b2ec78e15a6e82bff6a290ef9fd8f00a/regex-2024.11.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:13291b39131e2d002a7940fb176e120bec5145f3aeb7621be6534e46251912c4", size = 860182, upload-time = "2024-11-06T20:11:09.06Z" }, - { url = "https://files.pythonhosted.org/packages/ed/e3/c446a64984ea9f69982ba1a69d4658d5014bc7a0ea468a07e1a1265db6e2/regex-2024.11.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f51f88c126370dcec4908576c5a627220da6c09d0bff31cfa89f2523843316d", size = 787733, upload-time = "2024-11-06T20:11:11.256Z" }, - { url = "https://files.pythonhosted.org/packages/2b/f1/e40c8373e3480e4f29f2692bd21b3e05f296d3afebc7e5dcf21b9756ca1c/regex-2024.11.6-cp313-cp313-win32.whl", hash = "sha256:63b13cfd72e9601125027202cad74995ab26921d8cd935c25f09c630436348ff", size = 262122, upload-time = "2024-11-06T20:11:13.161Z" }, - { url = "https://files.pythonhosted.org/packages/45/94/bc295babb3062a731f52621cdc992d123111282e291abaf23faa413443ea/regex-2024.11.6-cp313-cp313-win_amd64.whl", hash = "sha256:2b3361af3198667e99927da8b84c1b010752fa4b1115ee30beaa332cabc3ef1a", size = 273545, upload-time = "2024-11-06T20:11:15Z" }, +version = "2025.9.18" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/49/d3/eaa0d28aba6ad1827ad1e716d9a93e1ba963ada61887498297d3da715133/regex-2025.9.18.tar.gz", hash = "sha256:c5ba23274c61c6fef447ba6a39333297d0c247f53059dba0bca415cac511edc4", size = 400917, upload-time = "2025-09-19T00:38:35.79Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/d8/7e06171db8e55f917c5b8e89319cea2d86982e3fc46b677f40358223dece/regex-2025.9.18-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:12296202480c201c98a84aecc4d210592b2f55e200a1d193235c4db92b9f6788", size = 484829, upload-time = "2025-09-19T00:35:05.215Z" }, + { url = "https://files.pythonhosted.org/packages/8d/70/bf91bb39e5bedf75ce730ffbaa82ca585584d13335306d637458946b8b9f/regex-2025.9.18-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:220381f1464a581f2ea988f2220cf2a67927adcef107d47d6897ba5a2f6d51a4", size = 288993, upload-time = "2025-09-19T00:35:08.154Z" }, + { url = "https://files.pythonhosted.org/packages/fe/89/69f79b28365eda2c46e64c39d617d5f65a2aa451a4c94de7d9b34c2dc80f/regex-2025.9.18-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:87f681bfca84ebd265278b5daa1dcb57f4db315da3b5d044add7c30c10442e61", size = 286624, upload-time = "2025-09-19T00:35:09.717Z" }, + { url = "https://files.pythonhosted.org/packages/44/31/81e62955726c3a14fcc1049a80bc716765af6c055706869de5e880ddc783/regex-2025.9.18-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:34d674cbba70c9398074c8a1fcc1a79739d65d1105de2a3c695e2b05ea728251", size = 780473, upload-time = "2025-09-19T00:35:11.013Z" }, + { url = "https://files.pythonhosted.org/packages/fb/23/07072b7e191fbb6e213dc03b2f5b96f06d3c12d7deaded84679482926fc7/regex-2025.9.18-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:385c9b769655cb65ea40b6eea6ff763cbb6d69b3ffef0b0db8208e1833d4e746", size = 849290, upload-time = "2025-09-19T00:35:12.348Z" }, + { url = "https://files.pythonhosted.org/packages/b3/f0/aec7f6a01f2a112210424d77c6401b9015675fb887ced7e18926df4ae51e/regex-2025.9.18-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8900b3208e022570ae34328712bef6696de0804c122933414014bae791437ab2", size = 897335, upload-time = "2025-09-19T00:35:14.058Z" }, + { url = "https://files.pythonhosted.org/packages/cc/90/2e5f9da89d260de7d0417ead91a1bc897f19f0af05f4f9323313b76c47f2/regex-2025.9.18-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c204e93bf32cd7a77151d44b05eb36f469d0898e3fba141c026a26b79d9914a0", size = 789946, upload-time = "2025-09-19T00:35:15.403Z" }, + { url = "https://files.pythonhosted.org/packages/2b/d5/1c712c7362f2563d389be66bae131c8bab121a3fabfa04b0b5bfc9e73c51/regex-2025.9.18-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3acc471d1dd7e5ff82e6cacb3b286750decd949ecd4ae258696d04f019817ef8", size = 780787, upload-time = "2025-09-19T00:35:17.061Z" }, + { url = "https://files.pythonhosted.org/packages/4f/92/c54cdb4aa41009632e69817a5aa452673507f07e341076735a2f6c46a37c/regex-2025.9.18-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6479d5555122433728760e5f29edb4c2b79655a8deb681a141beb5c8a025baea", size = 773632, upload-time = "2025-09-19T00:35:18.57Z" }, + { url = "https://files.pythonhosted.org/packages/db/99/75c996dc6a2231a8652d7ad0bfbeaf8a8c77612d335580f520f3ec40e30b/regex-2025.9.18-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:431bd2a8726b000eb6f12429c9b438a24062a535d06783a93d2bcbad3698f8a8", size = 844104, upload-time = "2025-09-19T00:35:20.259Z" }, + { url = "https://files.pythonhosted.org/packages/1c/f7/25aba34cc130cb6844047dbfe9716c9b8f9629fee8b8bec331aa9241b97b/regex-2025.9.18-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:0cc3521060162d02bd36927e20690129200e5ac9d2c6d32b70368870b122db25", size = 834794, upload-time = "2025-09-19T00:35:22.002Z" }, + { url = "https://files.pythonhosted.org/packages/51/eb/64e671beafa0ae29712268421597596d781704973551312b2425831d4037/regex-2025.9.18-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:a021217b01be2d51632ce056d7a837d3fa37c543ede36e39d14063176a26ae29", size = 778535, upload-time = "2025-09-19T00:35:23.298Z" }, + { url = "https://files.pythonhosted.org/packages/26/33/c0ebc0b07bd0bf88f716cca240546b26235a07710ea58e271cfe390ae273/regex-2025.9.18-cp310-cp310-win32.whl", hash = "sha256:4a12a06c268a629cb67cc1d009b7bb0be43e289d00d5111f86a2efd3b1949444", size = 264115, upload-time = "2025-09-19T00:35:25.206Z" }, + { url = "https://files.pythonhosted.org/packages/59/39/aeb11a4ae68faaec2498512cadae09f2d8a91f1f65730fe62b9bffeea150/regex-2025.9.18-cp310-cp310-win_amd64.whl", hash = "sha256:47acd811589301298c49db2c56bde4f9308d6396da92daf99cba781fa74aa450", size = 276143, upload-time = "2025-09-19T00:35:26.785Z" }, + { url = "https://files.pythonhosted.org/packages/29/04/37f2d3fc334a1031fc2767c9d89cec13c2e72207c7e7f6feae8a47f4e149/regex-2025.9.18-cp310-cp310-win_arm64.whl", hash = "sha256:16bd2944e77522275e5ee36f867e19995bcaa533dcb516753a26726ac7285442", size = 268473, upload-time = "2025-09-19T00:35:28.39Z" }, + { url = "https://files.pythonhosted.org/packages/58/61/80eda662fc4eb32bfedc331f42390974c9e89c7eac1b79cd9eea4d7c458c/regex-2025.9.18-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:51076980cd08cd13c88eb7365427ae27f0d94e7cebe9ceb2bb9ffdae8fc4d82a", size = 484832, upload-time = "2025-09-19T00:35:30.011Z" }, + { url = "https://files.pythonhosted.org/packages/a6/d9/33833d9abddf3f07ad48504ddb53fe3b22f353214bbb878a72eee1e3ddbf/regex-2025.9.18-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:828446870bd7dee4e0cbeed767f07961aa07f0ea3129f38b3ccecebc9742e0b8", size = 288994, upload-time = "2025-09-19T00:35:31.733Z" }, + { url = "https://files.pythonhosted.org/packages/2a/b3/526ee96b0d70ea81980cbc20c3496fa582f775a52e001e2743cc33b2fa75/regex-2025.9.18-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c28821d5637866479ec4cc23b8c990f5bc6dd24e5e4384ba4a11d38a526e1414", size = 286619, upload-time = "2025-09-19T00:35:33.221Z" }, + { url = "https://files.pythonhosted.org/packages/65/4f/c2c096b02a351b33442aed5895cdd8bf87d372498d2100927c5a053d7ba3/regex-2025.9.18-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:726177ade8e481db669e76bf99de0b278783be8acd11cef71165327abd1f170a", size = 792454, upload-time = "2025-09-19T00:35:35.361Z" }, + { url = "https://files.pythonhosted.org/packages/24/15/b562c9d6e47c403c4b5deb744f8b4bf6e40684cf866c7b077960a925bdff/regex-2025.9.18-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f5cca697da89b9f8ea44115ce3130f6c54c22f541943ac8e9900461edc2b8bd4", size = 858723, upload-time = "2025-09-19T00:35:36.949Z" }, + { url = "https://files.pythonhosted.org/packages/f2/01/dba305409849e85b8a1a681eac4c03ed327d8de37895ddf9dc137f59c140/regex-2025.9.18-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:dfbde38f38004703c35666a1e1c088b778e35d55348da2b7b278914491698d6a", size = 905899, upload-time = "2025-09-19T00:35:38.723Z" }, + { url = "https://files.pythonhosted.org/packages/fe/d0/c51d1e6a80eab11ef96a4cbad17fc0310cf68994fb01a7283276b7e5bbd6/regex-2025.9.18-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f2f422214a03fab16bfa495cfec72bee4aaa5731843b771860a471282f1bf74f", size = 798981, upload-time = "2025-09-19T00:35:40.416Z" }, + { url = "https://files.pythonhosted.org/packages/c4/5e/72db90970887bbe02296612bd61b0fa31e6d88aa24f6a4853db3e96c575e/regex-2025.9.18-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a295916890f4df0902e4286bc7223ee7f9e925daa6dcdec4192364255b70561a", size = 781900, upload-time = "2025-09-19T00:35:42.077Z" }, + { url = "https://files.pythonhosted.org/packages/50/ff/596be45eea8e9bc31677fde243fa2904d00aad1b32c31bce26c3dbba0b9e/regex-2025.9.18-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:5db95ff632dbabc8c38c4e82bf545ab78d902e81160e6e455598014f0abe66b9", size = 852952, upload-time = "2025-09-19T00:35:43.751Z" }, + { url = "https://files.pythonhosted.org/packages/e5/1b/2dfa348fa551e900ed3f5f63f74185b6a08e8a76bc62bc9c106f4f92668b/regex-2025.9.18-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:fb967eb441b0f15ae610b7069bdb760b929f267efbf522e814bbbfffdf125ce2", size = 844355, upload-time = "2025-09-19T00:35:45.309Z" }, + { url = "https://files.pythonhosted.org/packages/f4/bf/aefb1def27fe33b8cbbb19c75c13aefccfbef1c6686f8e7f7095705969c7/regex-2025.9.18-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f04d2f20da4053d96c08f7fde6e1419b7ec9dbcee89c96e3d731fca77f411b95", size = 787254, upload-time = "2025-09-19T00:35:46.904Z" }, + { url = "https://files.pythonhosted.org/packages/e3/4e/8ef042e7cf0dbbb401e784e896acfc1b367b95dfbfc9ada94c2ed55a081f/regex-2025.9.18-cp311-cp311-win32.whl", hash = "sha256:895197241fccf18c0cea7550c80e75f185b8bd55b6924fcae269a1a92c614a07", size = 264129, upload-time = "2025-09-19T00:35:48.597Z" }, + { url = "https://files.pythonhosted.org/packages/b4/7d/c4fcabf80dcdd6821c0578ad9b451f8640b9110fb3dcb74793dd077069ff/regex-2025.9.18-cp311-cp311-win_amd64.whl", hash = "sha256:7e2b414deae99166e22c005e154a5513ac31493db178d8aec92b3269c9cce8c9", size = 276160, upload-time = "2025-09-19T00:36:00.45Z" }, + { url = "https://files.pythonhosted.org/packages/64/f8/0e13c8ae4d6df9d128afaba138342d532283d53a4c1e7a8c93d6756c8f4a/regex-2025.9.18-cp311-cp311-win_arm64.whl", hash = "sha256:fb137ec7c5c54f34a25ff9b31f6b7b0c2757be80176435bf367111e3f71d72df", size = 268471, upload-time = "2025-09-19T00:36:02.149Z" }, + { url = "https://files.pythonhosted.org/packages/b0/99/05859d87a66ae7098222d65748f11ef7f2dff51bfd7482a4e2256c90d72b/regex-2025.9.18-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:436e1b31d7efd4dcd52091d076482031c611dde58bf9c46ca6d0a26e33053a7e", size = 486335, upload-time = "2025-09-19T00:36:03.661Z" }, + { url = "https://files.pythonhosted.org/packages/97/7e/d43d4e8b978890932cf7b0957fce58c5b08c66f32698f695b0c2c24a48bf/regex-2025.9.18-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c190af81e5576b9c5fdc708f781a52ff20f8b96386c6e2e0557a78402b029f4a", size = 289720, upload-time = "2025-09-19T00:36:05.471Z" }, + { url = "https://files.pythonhosted.org/packages/bb/3b/ff80886089eb5dcf7e0d2040d9aaed539e25a94300403814bb24cc775058/regex-2025.9.18-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e4121f1ce2b2b5eec4b397cc1b277686e577e658d8f5870b7eb2d726bd2300ab", size = 287257, upload-time = "2025-09-19T00:36:07.072Z" }, + { url = "https://files.pythonhosted.org/packages/ee/66/243edf49dd8720cba8d5245dd4d6adcb03a1defab7238598c0c97cf549b8/regex-2025.9.18-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:300e25dbbf8299d87205e821a201057f2ef9aa3deb29caa01cd2cac669e508d5", size = 797463, upload-time = "2025-09-19T00:36:08.399Z" }, + { url = "https://files.pythonhosted.org/packages/df/71/c9d25a1142c70432e68bb03211d4a82299cd1c1fbc41db9409a394374ef5/regex-2025.9.18-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7b47fcf9f5316c0bdaf449e879407e1b9937a23c3b369135ca94ebc8d74b1742", size = 862670, upload-time = "2025-09-19T00:36:10.101Z" }, + { url = "https://files.pythonhosted.org/packages/f8/8f/329b1efc3a64375a294e3a92d43372bf1a351aa418e83c21f2f01cf6ec41/regex-2025.9.18-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:57a161bd3acaa4b513220b49949b07e252165e6b6dc910ee7617a37ff4f5b425", size = 910881, upload-time = "2025-09-19T00:36:12.223Z" }, + { url = "https://files.pythonhosted.org/packages/35/9e/a91b50332a9750519320ed30ec378b74c996f6befe282cfa6bb6cea7e9fd/regex-2025.9.18-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4f130c3a7845ba42de42f380fff3c8aebe89a810747d91bcf56d40a069f15352", size = 802011, upload-time = "2025-09-19T00:36:13.901Z" }, + { url = "https://files.pythonhosted.org/packages/a4/1d/6be3b8d7856b6e0d7ee7f942f437d0a76e0d5622983abbb6d21e21ab9a17/regex-2025.9.18-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5f96fa342b6f54dcba928dd452e8d8cb9f0d63e711d1721cd765bb9f73bb048d", size = 786668, upload-time = "2025-09-19T00:36:15.391Z" }, + { url = "https://files.pythonhosted.org/packages/cb/ce/4a60e53df58bd157c5156a1736d3636f9910bdcc271d067b32b7fcd0c3a8/regex-2025.9.18-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:0f0d676522d68c207828dcd01fb6f214f63f238c283d9f01d85fc664c7c85b56", size = 856578, upload-time = "2025-09-19T00:36:16.845Z" }, + { url = "https://files.pythonhosted.org/packages/86/e8/162c91bfe7217253afccde112868afb239f94703de6580fb235058d506a6/regex-2025.9.18-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:40532bff8a1a0621e7903ae57fce88feb2e8a9a9116d341701302c9302aef06e", size = 849017, upload-time = "2025-09-19T00:36:18.597Z" }, + { url = "https://files.pythonhosted.org/packages/35/34/42b165bc45289646ea0959a1bc7531733e90b47c56a72067adfe6b3251f6/regex-2025.9.18-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:039f11b618ce8d71a1c364fdee37da1012f5a3e79b1b2819a9f389cd82fd6282", size = 788150, upload-time = "2025-09-19T00:36:20.464Z" }, + { url = "https://files.pythonhosted.org/packages/79/5d/cdd13b1f3c53afa7191593a7ad2ee24092a5a46417725ffff7f64be8342d/regex-2025.9.18-cp312-cp312-win32.whl", hash = "sha256:e1dd06f981eb226edf87c55d523131ade7285137fbde837c34dc9d1bf309f459", size = 264536, upload-time = "2025-09-19T00:36:21.922Z" }, + { url = "https://files.pythonhosted.org/packages/e0/f5/4a7770c9a522e7d2dc1fa3ffc83ab2ab33b0b22b447e62cffef186805302/regex-2025.9.18-cp312-cp312-win_amd64.whl", hash = "sha256:3d86b5247bf25fa3715e385aa9ff272c307e0636ce0c9595f64568b41f0a9c77", size = 275501, upload-time = "2025-09-19T00:36:23.4Z" }, + { url = "https://files.pythonhosted.org/packages/df/05/9ce3e110e70d225ecbed455b966003a3afda5e58e8aec2964042363a18f4/regex-2025.9.18-cp312-cp312-win_arm64.whl", hash = "sha256:032720248cbeeae6444c269b78cb15664458b7bb9ed02401d3da59fe4d68c3a5", size = 268601, upload-time = "2025-09-19T00:36:25.092Z" }, + { url = "https://files.pythonhosted.org/packages/d2/c7/5c48206a60ce33711cf7dcaeaed10dd737733a3569dc7e1dce324dd48f30/regex-2025.9.18-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2a40f929cd907c7e8ac7566ac76225a77701a6221bca937bdb70d56cb61f57b2", size = 485955, upload-time = "2025-09-19T00:36:26.822Z" }, + { url = "https://files.pythonhosted.org/packages/e9/be/74fc6bb19a3c491ec1ace943e622b5a8539068771e8705e469b2da2306a7/regex-2025.9.18-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c90471671c2cdf914e58b6af62420ea9ecd06d1554d7474d50133ff26ae88feb", size = 289583, upload-time = "2025-09-19T00:36:28.577Z" }, + { url = "https://files.pythonhosted.org/packages/25/c4/9ceaa433cb5dc515765560f22a19578b95b92ff12526e5a259321c4fc1a0/regex-2025.9.18-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1a351aff9e07a2dabb5022ead6380cff17a4f10e4feb15f9100ee56c4d6d06af", size = 287000, upload-time = "2025-09-19T00:36:30.161Z" }, + { url = "https://files.pythonhosted.org/packages/7d/e6/68bc9393cb4dc68018456568c048ac035854b042bc7c33cb9b99b0680afa/regex-2025.9.18-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bc4b8e9d16e20ddfe16430c23468a8707ccad3365b06d4536142e71823f3ca29", size = 797535, upload-time = "2025-09-19T00:36:31.876Z" }, + { url = "https://files.pythonhosted.org/packages/6a/1c/ebae9032d34b78ecfe9bd4b5e6575b55351dc8513485bb92326613732b8c/regex-2025.9.18-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:4b8cdbddf2db1c5e80338ba2daa3cfa3dec73a46fff2a7dda087c8efbf12d62f", size = 862603, upload-time = "2025-09-19T00:36:33.344Z" }, + { url = "https://files.pythonhosted.org/packages/3b/74/12332c54b3882557a4bcd2b99f8be581f5c6a43cf1660a85b460dd8ff468/regex-2025.9.18-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a276937d9d75085b2c91fb48244349c6954f05ee97bba0963ce24a9d915b8b68", size = 910829, upload-time = "2025-09-19T00:36:34.826Z" }, + { url = "https://files.pythonhosted.org/packages/86/70/ba42d5ed606ee275f2465bfc0e2208755b06cdabd0f4c7c4b614d51b57ab/regex-2025.9.18-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:92a8e375ccdc1256401c90e9dc02b8642894443d549ff5e25e36d7cf8a80c783", size = 802059, upload-time = "2025-09-19T00:36:36.664Z" }, + { url = "https://files.pythonhosted.org/packages/da/c5/fcb017e56396a7f2f8357412638d7e2963440b131a3ca549be25774b3641/regex-2025.9.18-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0dc6893b1f502d73037cf807a321cdc9be29ef3d6219f7970f842475873712ac", size = 786781, upload-time = "2025-09-19T00:36:38.168Z" }, + { url = "https://files.pythonhosted.org/packages/c6/ee/21c4278b973f630adfb3bcb23d09d83625f3ab1ca6e40ebdffe69901c7a1/regex-2025.9.18-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:a61e85bfc63d232ac14b015af1261f826260c8deb19401c0597dbb87a864361e", size = 856578, upload-time = "2025-09-19T00:36:40.129Z" }, + { url = "https://files.pythonhosted.org/packages/87/0b/de51550dc7274324435c8f1539373ac63019b0525ad720132866fff4a16a/regex-2025.9.18-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:1ef86a9ebc53f379d921fb9a7e42b92059ad3ee800fcd9e0fe6181090e9f6c23", size = 849119, upload-time = "2025-09-19T00:36:41.651Z" }, + { url = "https://files.pythonhosted.org/packages/60/52/383d3044fc5154d9ffe4321696ee5b2ee4833a28c29b137c22c33f41885b/regex-2025.9.18-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d3bc882119764ba3a119fbf2bd4f1b47bc56c1da5d42df4ed54ae1e8e66fdf8f", size = 788219, upload-time = "2025-09-19T00:36:43.575Z" }, + { url = "https://files.pythonhosted.org/packages/20/bd/2614fc302671b7359972ea212f0e3a92df4414aaeacab054a8ce80a86073/regex-2025.9.18-cp313-cp313-win32.whl", hash = "sha256:3810a65675845c3bdfa58c3c7d88624356dd6ee2fc186628295e0969005f928d", size = 264517, upload-time = "2025-09-19T00:36:45.503Z" }, + { url = "https://files.pythonhosted.org/packages/07/0f/ab5c1581e6563a7bffdc1974fb2d25f05689b88e2d416525271f232b1946/regex-2025.9.18-cp313-cp313-win_amd64.whl", hash = "sha256:16eaf74b3c4180ede88f620f299e474913ab6924d5c4b89b3833bc2345d83b3d", size = 275481, upload-time = "2025-09-19T00:36:46.965Z" }, + { url = "https://files.pythonhosted.org/packages/49/22/ee47672bc7958f8c5667a587c2600a4fba8b6bab6e86bd6d3e2b5f7cac42/regex-2025.9.18-cp313-cp313-win_arm64.whl", hash = "sha256:4dc98ba7dd66bd1261927a9f49bd5ee2bcb3660f7962f1ec02617280fc00f5eb", size = 268598, upload-time = "2025-09-19T00:36:48.314Z" }, + { url = "https://files.pythonhosted.org/packages/e8/83/6887e16a187c6226cb85d8301e47d3b73ecc4505a3a13d8da2096b44fd76/regex-2025.9.18-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:fe5d50572bc885a0a799410a717c42b1a6b50e2f45872e2b40f4f288f9bce8a2", size = 489765, upload-time = "2025-09-19T00:36:49.996Z" }, + { url = "https://files.pythonhosted.org/packages/51/c5/e2f7325301ea2916ff301c8d963ba66b1b2c1b06694191df80a9c4fea5d0/regex-2025.9.18-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:1b9d9a2d6cda6621551ca8cf7a06f103adf72831153f3c0d982386110870c4d3", size = 291228, upload-time = "2025-09-19T00:36:51.654Z" }, + { url = "https://files.pythonhosted.org/packages/91/60/7d229d2bc6961289e864a3a3cfebf7d0d250e2e65323a8952cbb7e22d824/regex-2025.9.18-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:13202e4c4ac0ef9a317fff817674b293c8f7e8c68d3190377d8d8b749f566e12", size = 289270, upload-time = "2025-09-19T00:36:53.118Z" }, + { url = "https://files.pythonhosted.org/packages/3c/d7/b4f06868ee2958ff6430df89857fbf3d43014bbf35538b6ec96c2704e15d/regex-2025.9.18-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:874ff523b0fecffb090f80ae53dc93538f8db954c8bb5505f05b7787ab3402a0", size = 806326, upload-time = "2025-09-19T00:36:54.631Z" }, + { url = "https://files.pythonhosted.org/packages/d6/e4/bca99034a8f1b9b62ccf337402a8e5b959dd5ba0e5e5b2ead70273df3277/regex-2025.9.18-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d13ab0490128f2bb45d596f754148cd750411afc97e813e4b3a61cf278a23bb6", size = 871556, upload-time = "2025-09-19T00:36:56.208Z" }, + { url = "https://files.pythonhosted.org/packages/6d/df/e06ffaf078a162f6dd6b101a5ea9b44696dca860a48136b3ae4a9caf25e2/regex-2025.9.18-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:05440bc172bc4b4b37fb9667e796597419404dbba62e171e1f826d7d2a9ebcef", size = 913817, upload-time = "2025-09-19T00:36:57.807Z" }, + { url = "https://files.pythonhosted.org/packages/9e/05/25b05480b63292fd8e84800b1648e160ca778127b8d2367a0a258fa2e225/regex-2025.9.18-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5514b8e4031fdfaa3d27e92c75719cbe7f379e28cacd939807289bce76d0e35a", size = 811055, upload-time = "2025-09-19T00:36:59.762Z" }, + { url = "https://files.pythonhosted.org/packages/70/97/7bc7574655eb651ba3a916ed4b1be6798ae97af30104f655d8efd0cab24b/regex-2025.9.18-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:65d3c38c39efce73e0d9dc019697b39903ba25b1ad45ebbd730d2cf32741f40d", size = 794534, upload-time = "2025-09-19T00:37:01.405Z" }, + { url = "https://files.pythonhosted.org/packages/b4/c2/d5da49166a52dda879855ecdba0117f073583db2b39bb47ce9a3378a8e9e/regex-2025.9.18-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:ae77e447ebc144d5a26d50055c6ddba1d6ad4a865a560ec7200b8b06bc529368", size = 866684, upload-time = "2025-09-19T00:37:03.441Z" }, + { url = "https://files.pythonhosted.org/packages/bd/2d/0a5c4e6ec417de56b89ff4418ecc72f7e3feca806824c75ad0bbdae0516b/regex-2025.9.18-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:e3ef8cf53dc8df49d7e28a356cf824e3623764e9833348b655cfed4524ab8a90", size = 853282, upload-time = "2025-09-19T00:37:04.985Z" }, + { url = "https://files.pythonhosted.org/packages/f4/8e/d656af63e31a86572ec829665d6fa06eae7e144771e0330650a8bb865635/regex-2025.9.18-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:9feb29817df349c976da9a0debf775c5c33fc1c8ad7b9f025825da99374770b7", size = 797830, upload-time = "2025-09-19T00:37:06.697Z" }, + { url = "https://files.pythonhosted.org/packages/db/ce/06edc89df8f7b83ffd321b6071be4c54dc7332c0f77860edc40ce57d757b/regex-2025.9.18-cp313-cp313t-win32.whl", hash = "sha256:168be0d2f9b9d13076940b1ed774f98595b4e3c7fc54584bba81b3cc4181742e", size = 267281, upload-time = "2025-09-19T00:37:08.568Z" }, + { url = "https://files.pythonhosted.org/packages/83/9a/2b5d9c8b307a451fd17068719d971d3634ca29864b89ed5c18e499446d4a/regex-2025.9.18-cp313-cp313t-win_amd64.whl", hash = "sha256:d59ecf3bb549e491c8104fea7313f3563c7b048e01287db0a90485734a70a730", size = 278724, upload-time = "2025-09-19T00:37:10.023Z" }, + { url = "https://files.pythonhosted.org/packages/3d/70/177d31e8089a278a764f8ec9a3faac8d14a312d622a47385d4b43905806f/regex-2025.9.18-cp313-cp313t-win_arm64.whl", hash = "sha256:dbef80defe9fb21310948a2595420b36c6d641d9bea4c991175829b2cc4bc06a", size = 269771, upload-time = "2025-09-19T00:37:13.041Z" }, + { url = "https://files.pythonhosted.org/packages/44/b7/3b4663aa3b4af16819f2ab6a78c4111c7e9b066725d8107753c2257448a5/regex-2025.9.18-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:c6db75b51acf277997f3adcd0ad89045d856190d13359f15ab5dda21581d9129", size = 486130, upload-time = "2025-09-19T00:37:14.527Z" }, + { url = "https://files.pythonhosted.org/packages/80/5b/4533f5d7ac9c6a02a4725fe8883de2aebc713e67e842c04cf02626afb747/regex-2025.9.18-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8f9698b6f6895d6db810e0bda5364f9ceb9e5b11328700a90cae573574f61eea", size = 289539, upload-time = "2025-09-19T00:37:16.356Z" }, + { url = "https://files.pythonhosted.org/packages/b8/8d/5ab6797c2750985f79e9995fad3254caa4520846580f266ae3b56d1cae58/regex-2025.9.18-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:29cd86aa7cb13a37d0f0d7c21d8d949fe402ffa0ea697e635afedd97ab4b69f1", size = 287233, upload-time = "2025-09-19T00:37:18.025Z" }, + { url = "https://files.pythonhosted.org/packages/cb/1e/95afcb02ba8d3a64e6ffeb801718ce73471ad6440c55d993f65a4a5e7a92/regex-2025.9.18-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7c9f285a071ee55cd9583ba24dde006e53e17780bb309baa8e4289cd472bcc47", size = 797876, upload-time = "2025-09-19T00:37:19.609Z" }, + { url = "https://files.pythonhosted.org/packages/c8/fb/720b1f49cec1f3b5a9fea5b34cd22b88b5ebccc8c1b5de9cc6f65eed165a/regex-2025.9.18-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5adf266f730431e3be9021d3e5b8d5ee65e563fec2883ea8093944d21863b379", size = 863385, upload-time = "2025-09-19T00:37:21.65Z" }, + { url = "https://files.pythonhosted.org/packages/a9/ca/e0d07ecf701e1616f015a720dc13b84c582024cbfbb3fc5394ae204adbd7/regex-2025.9.18-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:1137cabc0f38807de79e28d3f6e3e3f2cc8cfb26bead754d02e6d1de5f679203", size = 910220, upload-time = "2025-09-19T00:37:23.723Z" }, + { url = "https://files.pythonhosted.org/packages/b6/45/bba86413b910b708eca705a5af62163d5d396d5f647ed9485580c7025209/regex-2025.9.18-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7cc9e5525cada99699ca9223cce2d52e88c52a3d2a0e842bd53de5497c604164", size = 801827, upload-time = "2025-09-19T00:37:25.684Z" }, + { url = "https://files.pythonhosted.org/packages/b8/a6/740fbd9fcac31a1305a8eed30b44bf0f7f1e042342be0a4722c0365ecfca/regex-2025.9.18-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:bbb9246568f72dce29bcd433517c2be22c7791784b223a810225af3b50d1aafb", size = 786843, upload-time = "2025-09-19T00:37:27.62Z" }, + { url = "https://files.pythonhosted.org/packages/80/a7/0579e8560682645906da640c9055506465d809cb0f5415d9976f417209a6/regex-2025.9.18-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:6a52219a93dd3d92c675383efff6ae18c982e2d7651c792b1e6d121055808743", size = 857430, upload-time = "2025-09-19T00:37:29.362Z" }, + { url = "https://files.pythonhosted.org/packages/8d/9b/4dc96b6c17b38900cc9fee254fc9271d0dde044e82c78c0811b58754fde5/regex-2025.9.18-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:ae9b3840c5bd456780e3ddf2f737ab55a79b790f6409182012718a35c6d43282", size = 848612, upload-time = "2025-09-19T00:37:31.42Z" }, + { url = "https://files.pythonhosted.org/packages/b3/6a/6f659f99bebb1775e5ac81a3fb837b85897c1a4ef5acffd0ff8ffe7e67fb/regex-2025.9.18-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d488c236ac497c46a5ac2005a952c1a0e22a07be9f10c3e735bc7d1209a34773", size = 787967, upload-time = "2025-09-19T00:37:34.019Z" }, + { url = "https://files.pythonhosted.org/packages/61/35/9e35665f097c07cf384a6b90a1ac11b0b1693084a0b7a675b06f760496c6/regex-2025.9.18-cp314-cp314-win32.whl", hash = "sha256:0c3506682ea19beefe627a38872d8da65cc01ffa25ed3f2e422dffa1474f0788", size = 269847, upload-time = "2025-09-19T00:37:35.759Z" }, + { url = "https://files.pythonhosted.org/packages/af/64/27594dbe0f1590b82de2821ebfe9a359b44dcb9b65524876cd12fabc447b/regex-2025.9.18-cp314-cp314-win_amd64.whl", hash = "sha256:57929d0f92bebb2d1a83af372cd0ffba2263f13f376e19b1e4fa32aec4efddc3", size = 278755, upload-time = "2025-09-19T00:37:37.367Z" }, + { url = "https://files.pythonhosted.org/packages/30/a3/0cd8d0d342886bd7d7f252d701b20ae1a3c72dc7f34ef4b2d17790280a09/regex-2025.9.18-cp314-cp314-win_arm64.whl", hash = "sha256:6a4b44df31d34fa51aa5c995d3aa3c999cec4d69b9bd414a8be51984d859f06d", size = 271873, upload-time = "2025-09-19T00:37:39.125Z" }, + { url = "https://files.pythonhosted.org/packages/99/cb/8a1ab05ecf404e18b54348e293d9b7a60ec2bd7aa59e637020c5eea852e8/regex-2025.9.18-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:b176326bcd544b5e9b17d6943f807697c0cb7351f6cfb45bf5637c95ff7e6306", size = 489773, upload-time = "2025-09-19T00:37:40.968Z" }, + { url = "https://files.pythonhosted.org/packages/93/3b/6543c9b7f7e734d2404fa2863d0d710c907bef99d4598760ed4563d634c3/regex-2025.9.18-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:0ffd9e230b826b15b369391bec167baed57c7ce39efc35835448618860995946", size = 291221, upload-time = "2025-09-19T00:37:42.901Z" }, + { url = "https://files.pythonhosted.org/packages/cd/91/e9fdee6ad6bf708d98c5d17fded423dcb0661795a49cba1b4ffb8358377a/regex-2025.9.18-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ec46332c41add73f2b57e2f5b642f991f6b15e50e9f86285e08ffe3a512ac39f", size = 289268, upload-time = "2025-09-19T00:37:44.823Z" }, + { url = "https://files.pythonhosted.org/packages/94/a6/bc3e8a918abe4741dadeaeb6c508e3a4ea847ff36030d820d89858f96a6c/regex-2025.9.18-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b80fa342ed1ea095168a3f116637bd1030d39c9ff38dc04e54ef7c521e01fc95", size = 806659, upload-time = "2025-09-19T00:37:46.684Z" }, + { url = "https://files.pythonhosted.org/packages/2b/71/ea62dbeb55d9e6905c7b5a49f75615ea1373afcad95830047e4e310db979/regex-2025.9.18-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f4d97071c0ba40f0cf2a93ed76e660654c399a0a04ab7d85472239460f3da84b", size = 871701, upload-time = "2025-09-19T00:37:48.882Z" }, + { url = "https://files.pythonhosted.org/packages/6a/90/fbe9dedb7dad24a3a4399c0bae64bfa932ec8922a0a9acf7bc88db30b161/regex-2025.9.18-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0ac936537ad87cef9e0e66c5144484206c1354224ee811ab1519a32373e411f3", size = 913742, upload-time = "2025-09-19T00:37:51.015Z" }, + { url = "https://files.pythonhosted.org/packages/f0/1c/47e4a8c0e73d41eb9eb9fdeba3b1b810110a5139a2526e82fd29c2d9f867/regex-2025.9.18-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dec57f96d4def58c422d212d414efe28218d58537b5445cf0c33afb1b4768571", size = 811117, upload-time = "2025-09-19T00:37:52.686Z" }, + { url = "https://files.pythonhosted.org/packages/2a/da/435f29fddfd015111523671e36d30af3342e8136a889159b05c1d9110480/regex-2025.9.18-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:48317233294648bf7cd068857f248e3a57222259a5304d32c7552e2284a1b2ad", size = 794647, upload-time = "2025-09-19T00:37:54.626Z" }, + { url = "https://files.pythonhosted.org/packages/23/66/df5e6dcca25c8bc57ce404eebc7342310a0d218db739d7882c9a2b5974a3/regex-2025.9.18-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:274687e62ea3cf54846a9b25fc48a04459de50af30a7bd0b61a9e38015983494", size = 866747, upload-time = "2025-09-19T00:37:56.367Z" }, + { url = "https://files.pythonhosted.org/packages/82/42/94392b39b531f2e469b2daa40acf454863733b674481fda17462a5ffadac/regex-2025.9.18-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:a78722c86a3e7e6aadf9579e3b0ad78d955f2d1f1a8ca4f67d7ca258e8719d4b", size = 853434, upload-time = "2025-09-19T00:37:58.39Z" }, + { url = "https://files.pythonhosted.org/packages/a8/f8/dcc64c7f7bbe58842a8f89622b50c58c3598fbbf4aad0a488d6df2c699f1/regex-2025.9.18-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:06104cd203cdef3ade989a1c45b6215bf42f8b9dd705ecc220c173233f7cba41", size = 798024, upload-time = "2025-09-19T00:38:00.397Z" }, + { url = "https://files.pythonhosted.org/packages/20/8d/edf1c5d5aa98f99a692313db813ec487732946784f8f93145e0153d910e5/regex-2025.9.18-cp314-cp314t-win32.whl", hash = "sha256:2e1eddc06eeaffd249c0adb6fafc19e2118e6308c60df9db27919e96b5656096", size = 273029, upload-time = "2025-09-19T00:38:02.383Z" }, + { url = "https://files.pythonhosted.org/packages/a7/24/02d4e4f88466f17b145f7ea2b2c11af3a942db6222429c2c146accf16054/regex-2025.9.18-cp314-cp314t-win_amd64.whl", hash = "sha256:8620d247fb8c0683ade51217b459cb4a1081c0405a3072235ba43a40d355c09a", size = 282680, upload-time = "2025-09-19T00:38:04.102Z" }, + { url = "https://files.pythonhosted.org/packages/1f/a3/c64894858aaaa454caa7cc47e2f225b04d3ed08ad649eacf58d45817fad2/regex-2025.9.18-cp314-cp314t-win_arm64.whl", hash = "sha256:b7531a8ef61de2c647cdf68b3229b071e46ec326b3138b2180acb4275f470b01", size = 273034, upload-time = "2025-09-19T00:38:05.807Z" }, ] [[package]] name = "requests" -version = "2.32.3" +version = "2.32.5" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi" }, @@ -3659,9 +4482,9 @@ dependencies = [ { name = "idna" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218, upload-time = "2024-05-29T15:37:49.536Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517, upload-time = "2025-08-18T20:46:02.573Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928, upload-time = "2024-05-29T15:37:47.027Z" }, + { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738, upload-time = "2025-08-18T20:46:00.542Z" }, ] [[package]] @@ -3685,6 +4508,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9", size = 4242, upload-time = "2019-10-28T16:00:13.976Z" }, ] +[[package]] +name = "rfc3987-syntax" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "lark" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2c/06/37c1a5557acf449e8e406a830a05bf885ac47d33270aec454ef78675008d/rfc3987_syntax-1.1.0.tar.gz", hash = "sha256:717a62cbf33cffdd16dfa3a497d81ce48a660ea691b1ddd7be710c22f00b4a0d", size = 14239, upload-time = "2025-07-18T01:05:05.015Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/71/44ce230e1b7fadd372515a97e32a83011f906ddded8d03e3c6aafbdedbb7/rfc3987_syntax-1.1.0-py3-none-any.whl", hash = "sha256:6c3d97604e4c5ce9f714898e05401a0445a641cfa276432b0a648c80856f6a3f", size = 8046, upload-time = "2025-07-18T01:05:03.843Z" }, +] + [[package]] name = "rich" version = "13.3.0" @@ -3700,157 +4535,201 @@ wheels = [ [[package]] name = "rpds-py" -version = "0.25.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8c/a6/60184b7fc00dd3ca80ac635dd5b8577d444c57e8e8742cecabfacb829921/rpds_py-0.25.1.tar.gz", hash = "sha256:8960b6dac09b62dac26e75d7e2c4a22efb835d827a7278c34f72b2b84fa160e3", size = 27304, upload-time = "2025-05-21T12:46:12.502Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cb/09/e1158988e50905b7f8306487a576b52d32aa9a87f79f7ab24ee8db8b6c05/rpds_py-0.25.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:f4ad628b5174d5315761b67f212774a32f5bad5e61396d38108bd801c0a8f5d9", size = 373140, upload-time = "2025-05-21T12:42:38.834Z" }, - { url = "https://files.pythonhosted.org/packages/e0/4b/a284321fb3c45c02fc74187171504702b2934bfe16abab89713eedfe672e/rpds_py-0.25.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8c742af695f7525e559c16f1562cf2323db0e3f0fbdcabdf6865b095256b2d40", size = 358860, upload-time = "2025-05-21T12:42:41.394Z" }, - { url = "https://files.pythonhosted.org/packages/4e/46/8ac9811150c75edeae9fc6fa0e70376c19bc80f8e1f7716981433905912b/rpds_py-0.25.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:605ffe7769e24b1800b4d024d24034405d9404f0bc2f55b6db3362cd34145a6f", size = 386179, upload-time = "2025-05-21T12:42:43.213Z" }, - { url = "https://files.pythonhosted.org/packages/f3/ec/87eb42d83e859bce91dcf763eb9f2ab117142a49c9c3d17285440edb5b69/rpds_py-0.25.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ccc6f3ddef93243538be76f8e47045b4aad7a66a212cd3a0f23e34469473d36b", size = 400282, upload-time = "2025-05-21T12:42:44.92Z" }, - { url = "https://files.pythonhosted.org/packages/68/c8/2a38e0707d7919c8c78e1d582ab15cf1255b380bcb086ca265b73ed6db23/rpds_py-0.25.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f70316f760174ca04492b5ab01be631a8ae30cadab1d1081035136ba12738cfa", size = 521824, upload-time = "2025-05-21T12:42:46.856Z" }, - { url = "https://files.pythonhosted.org/packages/5e/2c/6a92790243569784dde84d144bfd12bd45102f4a1c897d76375076d730ab/rpds_py-0.25.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e1dafef8df605fdb46edcc0bf1573dea0d6d7b01ba87f85cd04dc855b2b4479e", size = 411644, upload-time = "2025-05-21T12:42:48.838Z" }, - { url = "https://files.pythonhosted.org/packages/eb/76/66b523ffc84cf47db56efe13ae7cf368dee2bacdec9d89b9baca5e2e6301/rpds_py-0.25.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0701942049095741a8aeb298a31b203e735d1c61f4423511d2b1a41dcd8a16da", size = 386955, upload-time = "2025-05-21T12:42:50.835Z" }, - { url = "https://files.pythonhosted.org/packages/b6/b9/a362d7522feaa24dc2b79847c6175daa1c642817f4a19dcd5c91d3e2c316/rpds_py-0.25.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e87798852ae0b37c88babb7f7bbbb3e3fecc562a1c340195b44c7e24d403e380", size = 421039, upload-time = "2025-05-21T12:42:52.348Z" }, - { url = "https://files.pythonhosted.org/packages/0f/c4/b5b6f70b4d719b6584716889fd3413102acf9729540ee76708d56a76fa97/rpds_py-0.25.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3bcce0edc1488906c2d4c75c94c70a0417e83920dd4c88fec1078c94843a6ce9", size = 563290, upload-time = "2025-05-21T12:42:54.404Z" }, - { url = "https://files.pythonhosted.org/packages/87/a3/2e6e816615c12a8f8662c9d8583a12eb54c52557521ef218cbe3095a8afa/rpds_py-0.25.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e2f6a2347d3440ae789505693a02836383426249d5293541cd712e07e7aecf54", size = 592089, upload-time = "2025-05-21T12:42:55.976Z" }, - { url = "https://files.pythonhosted.org/packages/c0/08/9b8e1050e36ce266135994e2c7ec06e1841f1c64da739daeb8afe9cb77a4/rpds_py-0.25.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:4fd52d3455a0aa997734f3835cbc4c9f32571345143960e7d7ebfe7b5fbfa3b2", size = 558400, upload-time = "2025-05-21T12:42:58.032Z" }, - { url = "https://files.pythonhosted.org/packages/f2/df/b40b8215560b8584baccd839ff5c1056f3c57120d79ac41bd26df196da7e/rpds_py-0.25.1-cp310-cp310-win32.whl", hash = "sha256:3f0b1798cae2bbbc9b9db44ee068c556d4737911ad53a4e5093d09d04b3bbc24", size = 219741, upload-time = "2025-05-21T12:42:59.479Z" }, - { url = "https://files.pythonhosted.org/packages/10/99/e4c58be18cf5d8b40b8acb4122bc895486230b08f978831b16a3916bd24d/rpds_py-0.25.1-cp310-cp310-win_amd64.whl", hash = "sha256:3ebd879ab996537fc510a2be58c59915b5dd63bccb06d1ef514fee787e05984a", size = 231553, upload-time = "2025-05-21T12:43:01.425Z" }, - { url = "https://files.pythonhosted.org/packages/95/e1/df13fe3ddbbea43567e07437f097863b20c99318ae1f58a0fe389f763738/rpds_py-0.25.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:5f048bbf18b1f9120685c6d6bb70cc1a52c8cc11bdd04e643d28d3be0baf666d", size = 373341, upload-time = "2025-05-21T12:43:02.978Z" }, - { url = "https://files.pythonhosted.org/packages/7a/58/deef4d30fcbcbfef3b6d82d17c64490d5c94585a2310544ce8e2d3024f83/rpds_py-0.25.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4fbb0dbba559959fcb5d0735a0f87cdbca9e95dac87982e9b95c0f8f7ad10255", size = 359111, upload-time = "2025-05-21T12:43:05.128Z" }, - { url = "https://files.pythonhosted.org/packages/bb/7e/39f1f4431b03e96ebaf159e29a0f82a77259d8f38b2dd474721eb3a8ac9b/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4ca54b9cf9d80b4016a67a0193ebe0bcf29f6b0a96f09db942087e294d3d4c2", size = 386112, upload-time = "2025-05-21T12:43:07.13Z" }, - { url = "https://files.pythonhosted.org/packages/db/e7/847068a48d63aec2ae695a1646089620b3b03f8ccf9f02c122ebaf778f3c/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1ee3e26eb83d39b886d2cb6e06ea701bba82ef30a0de044d34626ede51ec98b0", size = 400362, upload-time = "2025-05-21T12:43:08.693Z" }, - { url = "https://files.pythonhosted.org/packages/3b/3d/9441d5db4343d0cee759a7ab4d67420a476cebb032081763de934719727b/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:89706d0683c73a26f76a5315d893c051324d771196ae8b13e6ffa1ffaf5e574f", size = 522214, upload-time = "2025-05-21T12:43:10.694Z" }, - { url = "https://files.pythonhosted.org/packages/a2/ec/2cc5b30d95f9f1a432c79c7a2f65d85e52812a8f6cbf8768724571710786/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2013ee878c76269c7b557a9a9c042335d732e89d482606990b70a839635feb7", size = 411491, upload-time = "2025-05-21T12:43:12.739Z" }, - { url = "https://files.pythonhosted.org/packages/dc/6c/44695c1f035077a017dd472b6a3253553780837af2fac9b6ac25f6a5cb4d/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45e484db65e5380804afbec784522de84fa95e6bb92ef1bd3325d33d13efaebd", size = 386978, upload-time = "2025-05-21T12:43:14.25Z" }, - { url = "https://files.pythonhosted.org/packages/b1/74/b4357090bb1096db5392157b4e7ed8bb2417dc7799200fcbaee633a032c9/rpds_py-0.25.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:48d64155d02127c249695abb87d39f0faf410733428d499867606be138161d65", size = 420662, upload-time = "2025-05-21T12:43:15.8Z" }, - { url = "https://files.pythonhosted.org/packages/26/dd/8cadbebf47b96e59dfe8b35868e5c38a42272699324e95ed522da09d3a40/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:048893e902132fd6548a2e661fb38bf4896a89eea95ac5816cf443524a85556f", size = 563385, upload-time = "2025-05-21T12:43:17.78Z" }, - { url = "https://files.pythonhosted.org/packages/c3/ea/92960bb7f0e7a57a5ab233662f12152085c7dc0d5468534c65991a3d48c9/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0317177b1e8691ab5879f4f33f4b6dc55ad3b344399e23df2e499de7b10a548d", size = 592047, upload-time = "2025-05-21T12:43:19.457Z" }, - { url = "https://files.pythonhosted.org/packages/61/ad/71aabc93df0d05dabcb4b0c749277881f8e74548582d96aa1bf24379493a/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bffcf57826d77a4151962bf1701374e0fc87f536e56ec46f1abdd6a903354042", size = 557863, upload-time = "2025-05-21T12:43:21.69Z" }, - { url = "https://files.pythonhosted.org/packages/93/0f/89df0067c41f122b90b76f3660028a466eb287cbe38efec3ea70e637ca78/rpds_py-0.25.1-cp311-cp311-win32.whl", hash = "sha256:cda776f1967cb304816173b30994faaf2fd5bcb37e73118a47964a02c348e1bc", size = 219627, upload-time = "2025-05-21T12:43:23.311Z" }, - { url = "https://files.pythonhosted.org/packages/7c/8d/93b1a4c1baa903d0229374d9e7aa3466d751f1d65e268c52e6039c6e338e/rpds_py-0.25.1-cp311-cp311-win_amd64.whl", hash = "sha256:dc3c1ff0abc91444cd20ec643d0f805df9a3661fcacf9c95000329f3ddf268a4", size = 231603, upload-time = "2025-05-21T12:43:25.145Z" }, - { url = "https://files.pythonhosted.org/packages/cb/11/392605e5247bead2f23e6888e77229fbd714ac241ebbebb39a1e822c8815/rpds_py-0.25.1-cp311-cp311-win_arm64.whl", hash = "sha256:5a3ddb74b0985c4387719fc536faced33cadf2172769540c62e2a94b7b9be1c4", size = 223967, upload-time = "2025-05-21T12:43:26.566Z" }, - { url = "https://files.pythonhosted.org/packages/7f/81/28ab0408391b1dc57393653b6a0cf2014cc282cc2909e4615e63e58262be/rpds_py-0.25.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b5ffe453cde61f73fea9430223c81d29e2fbf412a6073951102146c84e19e34c", size = 364647, upload-time = "2025-05-21T12:43:28.559Z" }, - { url = "https://files.pythonhosted.org/packages/2c/9a/7797f04cad0d5e56310e1238434f71fc6939d0bc517192a18bb99a72a95f/rpds_py-0.25.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:115874ae5e2fdcfc16b2aedc95b5eef4aebe91b28e7e21951eda8a5dc0d3461b", size = 350454, upload-time = "2025-05-21T12:43:30.615Z" }, - { url = "https://files.pythonhosted.org/packages/69/3c/93d2ef941b04898011e5d6eaa56a1acf46a3b4c9f4b3ad1bbcbafa0bee1f/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a714bf6e5e81b0e570d01f56e0c89c6375101b8463999ead3a93a5d2a4af91fa", size = 389665, upload-time = "2025-05-21T12:43:32.629Z" }, - { url = "https://files.pythonhosted.org/packages/c1/57/ad0e31e928751dde8903a11102559628d24173428a0f85e25e187defb2c1/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:35634369325906bcd01577da4c19e3b9541a15e99f31e91a02d010816b49bfda", size = 403873, upload-time = "2025-05-21T12:43:34.576Z" }, - { url = "https://files.pythonhosted.org/packages/16/ad/c0c652fa9bba778b4f54980a02962748479dc09632e1fd34e5282cf2556c/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4cb2b3ddc16710548801c6fcc0cfcdeeff9dafbc983f77265877793f2660309", size = 525866, upload-time = "2025-05-21T12:43:36.123Z" }, - { url = "https://files.pythonhosted.org/packages/2a/39/3e1839bc527e6fcf48d5fec4770070f872cdee6c6fbc9b259932f4e88a38/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9ceca1cf097ed77e1a51f1dbc8d174d10cb5931c188a4505ff9f3e119dfe519b", size = 416886, upload-time = "2025-05-21T12:43:38.034Z" }, - { url = "https://files.pythonhosted.org/packages/7a/95/dd6b91cd4560da41df9d7030a038298a67d24f8ca38e150562644c829c48/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c2cd1a4b0c2b8c5e31ffff50d09f39906fe351389ba143c195566056c13a7ea", size = 390666, upload-time = "2025-05-21T12:43:40.065Z" }, - { url = "https://files.pythonhosted.org/packages/64/48/1be88a820e7494ce0a15c2d390ccb7c52212370badabf128e6a7bb4cb802/rpds_py-0.25.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1de336a4b164c9188cb23f3703adb74a7623ab32d20090d0e9bf499a2203ad65", size = 425109, upload-time = "2025-05-21T12:43:42.263Z" }, - { url = "https://files.pythonhosted.org/packages/cf/07/3e2a17927ef6d7720b9949ec1b37d1e963b829ad0387f7af18d923d5cfa5/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9fca84a15333e925dd59ce01da0ffe2ffe0d6e5d29a9eeba2148916d1824948c", size = 567244, upload-time = "2025-05-21T12:43:43.846Z" }, - { url = "https://files.pythonhosted.org/packages/d2/e5/76cf010998deccc4f95305d827847e2eae9c568099c06b405cf96384762b/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:88ec04afe0c59fa64e2f6ea0dd9657e04fc83e38de90f6de201954b4d4eb59bd", size = 596023, upload-time = "2025-05-21T12:43:45.932Z" }, - { url = "https://files.pythonhosted.org/packages/52/9a/df55efd84403736ba37a5a6377b70aad0fd1cb469a9109ee8a1e21299a1c/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a8bd2f19e312ce3e1d2c635618e8a8d8132892bb746a7cf74780a489f0f6cdcb", size = 561634, upload-time = "2025-05-21T12:43:48.263Z" }, - { url = "https://files.pythonhosted.org/packages/ab/aa/dc3620dd8db84454aaf9374bd318f1aa02578bba5e567f5bf6b79492aca4/rpds_py-0.25.1-cp312-cp312-win32.whl", hash = "sha256:e5e2f7280d8d0d3ef06f3ec1b4fd598d386cc6f0721e54f09109a8132182fbfe", size = 222713, upload-time = "2025-05-21T12:43:49.897Z" }, - { url = "https://files.pythonhosted.org/packages/a3/7f/7cef485269a50ed5b4e9bae145f512d2a111ca638ae70cc101f661b4defd/rpds_py-0.25.1-cp312-cp312-win_amd64.whl", hash = "sha256:db58483f71c5db67d643857404da360dce3573031586034b7d59f245144cc192", size = 235280, upload-time = "2025-05-21T12:43:51.893Z" }, - { url = "https://files.pythonhosted.org/packages/99/f2/c2d64f6564f32af913bf5f3f7ae41c7c263c5ae4c4e8f1a17af8af66cd46/rpds_py-0.25.1-cp312-cp312-win_arm64.whl", hash = "sha256:6d50841c425d16faf3206ddbba44c21aa3310a0cebc3c1cdfc3e3f4f9f6f5728", size = 225399, upload-time = "2025-05-21T12:43:53.351Z" }, - { url = "https://files.pythonhosted.org/packages/2b/da/323848a2b62abe6a0fec16ebe199dc6889c5d0a332458da8985b2980dffe/rpds_py-0.25.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:659d87430a8c8c704d52d094f5ba6fa72ef13b4d385b7e542a08fc240cb4a559", size = 364498, upload-time = "2025-05-21T12:43:54.841Z" }, - { url = "https://files.pythonhosted.org/packages/1f/b4/4d3820f731c80fd0cd823b3e95b9963fec681ae45ba35b5281a42382c67d/rpds_py-0.25.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:68f6f060f0bbdfb0245267da014d3a6da9be127fe3e8cc4a68c6f833f8a23bb1", size = 350083, upload-time = "2025-05-21T12:43:56.428Z" }, - { url = "https://files.pythonhosted.org/packages/d5/b1/3a8ee1c9d480e8493619a437dec685d005f706b69253286f50f498cbdbcf/rpds_py-0.25.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:083a9513a33e0b92cf6e7a6366036c6bb43ea595332c1ab5c8ae329e4bcc0a9c", size = 389023, upload-time = "2025-05-21T12:43:57.995Z" }, - { url = "https://files.pythonhosted.org/packages/3b/31/17293edcfc934dc62c3bf74a0cb449ecd549531f956b72287203e6880b87/rpds_py-0.25.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:816568614ecb22b18a010c7a12559c19f6fe993526af88e95a76d5a60b8b75fb", size = 403283, upload-time = "2025-05-21T12:43:59.546Z" }, - { url = "https://files.pythonhosted.org/packages/d1/ca/e0f0bc1a75a8925024f343258c8ecbd8828f8997ea2ac71e02f67b6f5299/rpds_py-0.25.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3c6564c0947a7f52e4792983f8e6cf9bac140438ebf81f527a21d944f2fd0a40", size = 524634, upload-time = "2025-05-21T12:44:01.087Z" }, - { url = "https://files.pythonhosted.org/packages/3e/03/5d0be919037178fff33a6672ffc0afa04ea1cfcb61afd4119d1b5280ff0f/rpds_py-0.25.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c4a128527fe415d73cf1f70a9a688d06130d5810be69f3b553bf7b45e8acf79", size = 416233, upload-time = "2025-05-21T12:44:02.604Z" }, - { url = "https://files.pythonhosted.org/packages/05/7c/8abb70f9017a231c6c961a8941403ed6557664c0913e1bf413cbdc039e75/rpds_py-0.25.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a49e1d7a4978ed554f095430b89ecc23f42014a50ac385eb0c4d163ce213c325", size = 390375, upload-time = "2025-05-21T12:44:04.162Z" }, - { url = "https://files.pythonhosted.org/packages/7a/ac/a87f339f0e066b9535074a9f403b9313fd3892d4a164d5d5f5875ac9f29f/rpds_py-0.25.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d74ec9bc0e2feb81d3f16946b005748119c0f52a153f6db6a29e8cd68636f295", size = 424537, upload-time = "2025-05-21T12:44:06.175Z" }, - { url = "https://files.pythonhosted.org/packages/1f/8f/8d5c1567eaf8c8afe98a838dd24de5013ce6e8f53a01bd47fe8bb06b5533/rpds_py-0.25.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3af5b4cc10fa41e5bc64e5c198a1b2d2864337f8fcbb9a67e747e34002ce812b", size = 566425, upload-time = "2025-05-21T12:44:08.242Z" }, - { url = "https://files.pythonhosted.org/packages/95/33/03016a6be5663b389c8ab0bbbcca68d9e96af14faeff0a04affcb587e776/rpds_py-0.25.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:79dc317a5f1c51fd9c6a0c4f48209c6b8526d0524a6904fc1076476e79b00f98", size = 595197, upload-time = "2025-05-21T12:44:10.449Z" }, - { url = "https://files.pythonhosted.org/packages/33/8d/da9f4d3e208c82fda311bff0cf0a19579afceb77cf456e46c559a1c075ba/rpds_py-0.25.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1521031351865e0181bc585147624d66b3b00a84109b57fcb7a779c3ec3772cd", size = 561244, upload-time = "2025-05-21T12:44:12.387Z" }, - { url = "https://files.pythonhosted.org/packages/e2/b3/39d5dcf7c5f742ecd6dbc88f6f84ae54184b92f5f387a4053be2107b17f1/rpds_py-0.25.1-cp313-cp313-win32.whl", hash = "sha256:5d473be2b13600b93a5675d78f59e63b51b1ba2d0476893415dfbb5477e65b31", size = 222254, upload-time = "2025-05-21T12:44:14.261Z" }, - { url = "https://files.pythonhosted.org/packages/5f/19/2d6772c8eeb8302c5f834e6d0dfd83935a884e7c5ce16340c7eaf89ce925/rpds_py-0.25.1-cp313-cp313-win_amd64.whl", hash = "sha256:a7b74e92a3b212390bdce1d93da9f6488c3878c1d434c5e751cbc202c5e09500", size = 234741, upload-time = "2025-05-21T12:44:16.236Z" }, - { url = "https://files.pythonhosted.org/packages/5b/5a/145ada26cfaf86018d0eb304fe55eafdd4f0b6b84530246bb4a7c4fb5c4b/rpds_py-0.25.1-cp313-cp313-win_arm64.whl", hash = "sha256:dd326a81afe332ede08eb39ab75b301d5676802cdffd3a8f287a5f0b694dc3f5", size = 224830, upload-time = "2025-05-21T12:44:17.749Z" }, - { url = "https://files.pythonhosted.org/packages/4b/ca/d435844829c384fd2c22754ff65889c5c556a675d2ed9eb0e148435c6690/rpds_py-0.25.1-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:a58d1ed49a94d4183483a3ce0af22f20318d4a1434acee255d683ad90bf78129", size = 359668, upload-time = "2025-05-21T12:44:19.322Z" }, - { url = "https://files.pythonhosted.org/packages/1f/01/b056f21db3a09f89410d493d2f6614d87bb162499f98b649d1dbd2a81988/rpds_py-0.25.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f251bf23deb8332823aef1da169d5d89fa84c89f67bdfb566c49dea1fccfd50d", size = 345649, upload-time = "2025-05-21T12:44:20.962Z" }, - { url = "https://files.pythonhosted.org/packages/e0/0f/e0d00dc991e3d40e03ca36383b44995126c36b3eafa0ccbbd19664709c88/rpds_py-0.25.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8dbd586bfa270c1103ece2109314dd423df1fa3d9719928b5d09e4840cec0d72", size = 384776, upload-time = "2025-05-21T12:44:22.516Z" }, - { url = "https://files.pythonhosted.org/packages/9f/a2/59374837f105f2ca79bde3c3cd1065b2f8c01678900924949f6392eab66d/rpds_py-0.25.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6d273f136e912aa101a9274c3145dcbddbe4bac560e77e6d5b3c9f6e0ed06d34", size = 395131, upload-time = "2025-05-21T12:44:24.147Z" }, - { url = "https://files.pythonhosted.org/packages/9c/dc/48e8d84887627a0fe0bac53f0b4631e90976fd5d35fff8be66b8e4f3916b/rpds_py-0.25.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:666fa7b1bd0a3810a7f18f6d3a25ccd8866291fbbc3c9b912b917a6715874bb9", size = 520942, upload-time = "2025-05-21T12:44:25.915Z" }, - { url = "https://files.pythonhosted.org/packages/7c/f5/ee056966aeae401913d37befeeab57a4a43a4f00099e0a20297f17b8f00c/rpds_py-0.25.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:921954d7fbf3fccc7de8f717799304b14b6d9a45bbeec5a8d7408ccbf531faf5", size = 411330, upload-time = "2025-05-21T12:44:27.638Z" }, - { url = "https://files.pythonhosted.org/packages/ab/74/b2cffb46a097cefe5d17f94ede7a174184b9d158a0aeb195f39f2c0361e8/rpds_py-0.25.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3d86373ff19ca0441ebeb696ef64cb58b8b5cbacffcda5a0ec2f3911732a194", size = 387339, upload-time = "2025-05-21T12:44:29.292Z" }, - { url = "https://files.pythonhosted.org/packages/7f/9a/0ff0b375dcb5161c2b7054e7d0b7575f1680127505945f5cabaac890bc07/rpds_py-0.25.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c8980cde3bb8575e7c956a530f2c217c1d6aac453474bf3ea0f9c89868b531b6", size = 418077, upload-time = "2025-05-21T12:44:30.877Z" }, - { url = "https://files.pythonhosted.org/packages/0d/a1/fda629bf20d6b698ae84c7c840cfb0e9e4200f664fc96e1f456f00e4ad6e/rpds_py-0.25.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:8eb8c84ecea987a2523e057c0d950bcb3f789696c0499290b8d7b3107a719d78", size = 562441, upload-time = "2025-05-21T12:44:32.541Z" }, - { url = "https://files.pythonhosted.org/packages/20/15/ce4b5257f654132f326f4acd87268e1006cc071e2c59794c5bdf4bebbb51/rpds_py-0.25.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:e43a005671a9ed5a650f3bc39e4dbccd6d4326b24fb5ea8be5f3a43a6f576c72", size = 590750, upload-time = "2025-05-21T12:44:34.557Z" }, - { url = "https://files.pythonhosted.org/packages/fb/ab/e04bf58a8d375aeedb5268edcc835c6a660ebf79d4384d8e0889439448b0/rpds_py-0.25.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:58f77c60956501a4a627749a6dcb78dac522f249dd96b5c9f1c6af29bfacfb66", size = 558891, upload-time = "2025-05-21T12:44:37.358Z" }, - { url = "https://files.pythonhosted.org/packages/90/82/cb8c6028a6ef6cd2b7991e2e4ced01c854b6236ecf51e81b64b569c43d73/rpds_py-0.25.1-cp313-cp313t-win32.whl", hash = "sha256:2cb9e5b5e26fc02c8a4345048cd9998c2aca7c2712bd1b36da0c72ee969a3523", size = 218718, upload-time = "2025-05-21T12:44:38.969Z" }, - { url = "https://files.pythonhosted.org/packages/b6/97/5a4b59697111c89477d20ba8a44df9ca16b41e737fa569d5ae8bff99e650/rpds_py-0.25.1-cp313-cp313t-win_amd64.whl", hash = "sha256:401ca1c4a20cc0510d3435d89c069fe0a9ae2ee6495135ac46bdd49ec0495763", size = 232218, upload-time = "2025-05-21T12:44:40.512Z" }, - { url = "https://files.pythonhosted.org/packages/78/ff/566ce53529b12b4f10c0a348d316bd766970b7060b4fd50f888be3b3b281/rpds_py-0.25.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b24bf3cd93d5b6ecfbedec73b15f143596c88ee249fa98cefa9a9dc9d92c6f28", size = 373931, upload-time = "2025-05-21T12:45:05.01Z" }, - { url = "https://files.pythonhosted.org/packages/83/5d/deba18503f7c7878e26aa696e97f051175788e19d5336b3b0e76d3ef9256/rpds_py-0.25.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:0eb90e94f43e5085623932b68840b6f379f26db7b5c2e6bcef3179bd83c9330f", size = 359074, upload-time = "2025-05-21T12:45:06.714Z" }, - { url = "https://files.pythonhosted.org/packages/0d/74/313415c5627644eb114df49c56a27edba4d40cfd7c92bd90212b3604ca84/rpds_py-0.25.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d50e4864498a9ab639d6d8854b25e80642bd362ff104312d9770b05d66e5fb13", size = 387255, upload-time = "2025-05-21T12:45:08.669Z" }, - { url = "https://files.pythonhosted.org/packages/8c/c8/c723298ed6338963d94e05c0f12793acc9b91d04ed7c4ba7508e534b7385/rpds_py-0.25.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7c9409b47ba0650544b0bb3c188243b83654dfe55dcc173a86832314e1a6a35d", size = 400714, upload-time = "2025-05-21T12:45:10.39Z" }, - { url = "https://files.pythonhosted.org/packages/33/8a/51f1f6aa653c2e110ed482ef2ae94140d56c910378752a1b483af11019ee/rpds_py-0.25.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:796ad874c89127c91970652a4ee8b00d56368b7e00d3477f4415fe78164c8000", size = 523105, upload-time = "2025-05-21T12:45:12.273Z" }, - { url = "https://files.pythonhosted.org/packages/c7/a4/7873d15c088ad3bff36910b29ceb0f178e4b3232c2adbe9198de68a41e63/rpds_py-0.25.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:85608eb70a659bf4c1142b2781083d4b7c0c4e2c90eff11856a9754e965b2540", size = 411499, upload-time = "2025-05-21T12:45:13.95Z" }, - { url = "https://files.pythonhosted.org/packages/90/f3/0ce1437befe1410766d11d08239333ac1b2d940f8a64234ce48a7714669c/rpds_py-0.25.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4feb9211d15d9160bc85fa72fed46432cdc143eb9cf6d5ca377335a921ac37b", size = 387918, upload-time = "2025-05-21T12:45:15.649Z" }, - { url = "https://files.pythonhosted.org/packages/94/d4/5551247988b2a3566afb8a9dba3f1d4a3eea47793fd83000276c1a6c726e/rpds_py-0.25.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ccfa689b9246c48947d31dd9d8b16d89a0ecc8e0e26ea5253068efb6c542b76e", size = 421705, upload-time = "2025-05-21T12:45:17.788Z" }, - { url = "https://files.pythonhosted.org/packages/b0/25/5960f28f847bf736cc7ee3c545a7e1d2f3b5edaf82c96fb616c2f5ed52d0/rpds_py-0.25.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:3c5b317ecbd8226887994852e85de562f7177add602514d4ac40f87de3ae45a8", size = 564489, upload-time = "2025-05-21T12:45:19.466Z" }, - { url = "https://files.pythonhosted.org/packages/02/66/1c99884a0d44e8c2904d3c4ec302f995292d5dde892c3bf7685ac1930146/rpds_py-0.25.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:454601988aab2c6e8fd49e7634c65476b2b919647626208e376afcd22019eeb8", size = 592557, upload-time = "2025-05-21T12:45:21.362Z" }, - { url = "https://files.pythonhosted.org/packages/55/ae/4aeac84ebeffeac14abb05b3bb1d2f728d00adb55d3fb7b51c9fa772e760/rpds_py-0.25.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:1c0c434a53714358532d13539272db75a5ed9df75a4a090a753ac7173ec14e11", size = 558691, upload-time = "2025-05-21T12:45:23.084Z" }, - { url = "https://files.pythonhosted.org/packages/41/b3/728a08ff6f5e06fe3bb9af2e770e9d5fd20141af45cff8dfc62da4b2d0b3/rpds_py-0.25.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:f73ce1512e04fbe2bc97836e89830d6b4314c171587a99688082d090f934d20a", size = 231651, upload-time = "2025-05-21T12:45:24.72Z" }, - { url = "https://files.pythonhosted.org/packages/49/74/48f3df0715a585cbf5d34919c9c757a4c92c1a9eba059f2d334e72471f70/rpds_py-0.25.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ee86d81551ec68a5c25373c5643d343150cc54672b5e9a0cafc93c1870a53954", size = 374208, upload-time = "2025-05-21T12:45:26.306Z" }, - { url = "https://files.pythonhosted.org/packages/55/b0/9b01bb11ce01ec03d05e627249cc2c06039d6aa24ea5a22a39c312167c10/rpds_py-0.25.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:89c24300cd4a8e4a51e55c31a8ff3918e6651b241ee8876a42cc2b2a078533ba", size = 359262, upload-time = "2025-05-21T12:45:28.322Z" }, - { url = "https://files.pythonhosted.org/packages/a9/eb/5395621618f723ebd5116c53282052943a726dba111b49cd2071f785b665/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:771c16060ff4e79584dc48902a91ba79fd93eade3aa3a12d6d2a4aadaf7d542b", size = 387366, upload-time = "2025-05-21T12:45:30.42Z" }, - { url = "https://files.pythonhosted.org/packages/68/73/3d51442bdb246db619d75039a50ea1cf8b5b4ee250c3e5cd5c3af5981cd4/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:785ffacd0ee61c3e60bdfde93baa6d7c10d86f15655bd706c89da08068dc5038", size = 400759, upload-time = "2025-05-21T12:45:32.516Z" }, - { url = "https://files.pythonhosted.org/packages/b7/4c/3a32d5955d7e6cb117314597bc0f2224efc798428318b13073efe306512a/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2a40046a529cc15cef88ac5ab589f83f739e2d332cb4d7399072242400ed68c9", size = 523128, upload-time = "2025-05-21T12:45:34.396Z" }, - { url = "https://files.pythonhosted.org/packages/be/95/1ffccd3b0bb901ae60b1dd4b1be2ab98bb4eb834cd9b15199888f5702f7b/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:85fc223d9c76cabe5d0bff82214459189720dc135db45f9f66aa7cffbf9ff6c1", size = 411597, upload-time = "2025-05-21T12:45:36.164Z" }, - { url = "https://files.pythonhosted.org/packages/ef/6d/6e6cd310180689db8b0d2de7f7d1eabf3fb013f239e156ae0d5a1a85c27f/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0be9965f93c222fb9b4cc254235b3b2b215796c03ef5ee64f995b1b69af0762", size = 388053, upload-time = "2025-05-21T12:45:38.45Z" }, - { url = "https://files.pythonhosted.org/packages/4a/87/ec4186b1fe6365ced6fa470960e68fc7804bafbe7c0cf5a36237aa240efa/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8378fa4a940f3fb509c081e06cb7f7f2adae8cf46ef258b0e0ed7519facd573e", size = 421821, upload-time = "2025-05-21T12:45:40.732Z" }, - { url = "https://files.pythonhosted.org/packages/7a/60/84f821f6bf4e0e710acc5039d91f8f594fae0d93fc368704920d8971680d/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:33358883a4490287e67a2c391dfaea4d9359860281db3292b6886bf0be3d8692", size = 564534, upload-time = "2025-05-21T12:45:42.672Z" }, - { url = "https://files.pythonhosted.org/packages/41/3a/bc654eb15d3b38f9330fe0f545016ba154d89cdabc6177b0295910cd0ebe/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:1d1fadd539298e70cac2f2cb36f5b8a65f742b9b9f1014dd4ea1f7785e2470bf", size = 592674, upload-time = "2025-05-21T12:45:44.533Z" }, - { url = "https://files.pythonhosted.org/packages/2e/ba/31239736f29e4dfc7a58a45955c5db852864c306131fd6320aea214d5437/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9a46c2fb2545e21181445515960006e85d22025bd2fe6db23e76daec6eb689fe", size = 558781, upload-time = "2025-05-21T12:45:46.281Z" }, +version = "0.27.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e9/dd/2c0cbe774744272b0ae725f44032c77bdcab6e8bcf544bffa3b6e70c8dba/rpds_py-0.27.1.tar.gz", hash = "sha256:26a1c73171d10b7acccbded82bf6a586ab8203601e565badc74bbbf8bc5a10f8", size = 27479, upload-time = "2025-08-27T12:16:36.024Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a5/ed/3aef893e2dd30e77e35d20d4ddb45ca459db59cead748cad9796ad479411/rpds_py-0.27.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:68afeec26d42ab3b47e541b272166a0b4400313946871cba3ed3a4fc0cab1cef", size = 371606, upload-time = "2025-08-27T12:12:25.189Z" }, + { url = "https://files.pythonhosted.org/packages/6d/82/9818b443e5d3eb4c83c3994561387f116aae9833b35c484474769c4a8faf/rpds_py-0.27.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:74e5b2f7bb6fa38b1b10546d27acbacf2a022a8b5543efb06cfebc72a59c85be", size = 353452, upload-time = "2025-08-27T12:12:27.433Z" }, + { url = "https://files.pythonhosted.org/packages/99/c7/d2a110ffaaa397fc6793a83c7bd3545d9ab22658b7cdff05a24a4535cc45/rpds_py-0.27.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9024de74731df54546fab0bfbcdb49fae19159ecaecfc8f37c18d2c7e2c0bd61", size = 381519, upload-time = "2025-08-27T12:12:28.719Z" }, + { url = "https://files.pythonhosted.org/packages/5a/bc/e89581d1f9d1be7d0247eaef602566869fdc0d084008ba139e27e775366c/rpds_py-0.27.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:31d3ebadefcd73b73928ed0b2fd696f7fefda8629229f81929ac9c1854d0cffb", size = 394424, upload-time = "2025-08-27T12:12:30.207Z" }, + { url = "https://files.pythonhosted.org/packages/ac/2e/36a6861f797530e74bb6ed53495f8741f1ef95939eed01d761e73d559067/rpds_py-0.27.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b2e7f8f169d775dd9092a1743768d771f1d1300453ddfe6325ae3ab5332b4657", size = 523467, upload-time = "2025-08-27T12:12:31.808Z" }, + { url = "https://files.pythonhosted.org/packages/c4/59/c1bc2be32564fa499f988f0a5c6505c2f4746ef96e58e4d7de5cf923d77e/rpds_py-0.27.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d905d16f77eb6ab2e324e09bfa277b4c8e5e6b8a78a3e7ff8f3cdf773b4c013", size = 402660, upload-time = "2025-08-27T12:12:33.444Z" }, + { url = "https://files.pythonhosted.org/packages/0a/ec/ef8bf895f0628dd0a59e54d81caed6891663cb9c54a0f4bb7da918cb88cf/rpds_py-0.27.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50c946f048209e6362e22576baea09193809f87687a95a8db24e5fbdb307b93a", size = 384062, upload-time = "2025-08-27T12:12:34.857Z" }, + { url = "https://files.pythonhosted.org/packages/69/f7/f47ff154be8d9a5e691c083a920bba89cef88d5247c241c10b9898f595a1/rpds_py-0.27.1-cp310-cp310-manylinux_2_31_riscv64.whl", hash = "sha256:3deab27804d65cd8289eb814c2c0e807c4b9d9916c9225e363cb0cf875eb67c1", size = 401289, upload-time = "2025-08-27T12:12:36.085Z" }, + { url = "https://files.pythonhosted.org/packages/3b/d9/ca410363efd0615814ae579f6829cafb39225cd63e5ea5ed1404cb345293/rpds_py-0.27.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8b61097f7488de4be8244c89915da8ed212832ccf1e7c7753a25a394bf9b1f10", size = 417718, upload-time = "2025-08-27T12:12:37.401Z" }, + { url = "https://files.pythonhosted.org/packages/e3/a0/8cb5c2ff38340f221cc067cc093d1270e10658ba4e8d263df923daa18e86/rpds_py-0.27.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8a3f29aba6e2d7d90528d3c792555a93497fe6538aa65eb675b44505be747808", size = 558333, upload-time = "2025-08-27T12:12:38.672Z" }, + { url = "https://files.pythonhosted.org/packages/6f/8c/1b0de79177c5d5103843774ce12b84caa7164dfc6cd66378768d37db11bf/rpds_py-0.27.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:dd6cd0485b7d347304067153a6dc1d73f7d4fd995a396ef32a24d24b8ac63ac8", size = 589127, upload-time = "2025-08-27T12:12:41.48Z" }, + { url = "https://files.pythonhosted.org/packages/c8/5e/26abb098d5e01266b0f3a2488d299d19ccc26849735d9d2b95c39397e945/rpds_py-0.27.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:6f4461bf931108c9fa226ffb0e257c1b18dc2d44cd72b125bec50ee0ab1248a9", size = 554899, upload-time = "2025-08-27T12:12:42.925Z" }, + { url = "https://files.pythonhosted.org/packages/de/41/905cc90ced13550db017f8f20c6d8e8470066c5738ba480d7ba63e3d136b/rpds_py-0.27.1-cp310-cp310-win32.whl", hash = "sha256:ee5422d7fb21f6a00c1901bf6559c49fee13a5159d0288320737bbf6585bd3e4", size = 217450, upload-time = "2025-08-27T12:12:44.813Z" }, + { url = "https://files.pythonhosted.org/packages/75/3d/6bef47b0e253616ccdf67c283e25f2d16e18ccddd38f92af81d5a3420206/rpds_py-0.27.1-cp310-cp310-win_amd64.whl", hash = "sha256:3e039aabf6d5f83c745d5f9a0a381d031e9ed871967c0a5c38d201aca41f3ba1", size = 228447, upload-time = "2025-08-27T12:12:46.204Z" }, + { url = "https://files.pythonhosted.org/packages/b5/c1/7907329fbef97cbd49db6f7303893bd1dd5a4a3eae415839ffdfb0762cae/rpds_py-0.27.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:be898f271f851f68b318872ce6ebebbc62f303b654e43bf72683dbdc25b7c881", size = 371063, upload-time = "2025-08-27T12:12:47.856Z" }, + { url = "https://files.pythonhosted.org/packages/11/94/2aab4bc86228bcf7c48760990273653a4900de89c7537ffe1b0d6097ed39/rpds_py-0.27.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:62ac3d4e3e07b58ee0ddecd71d6ce3b1637de2d373501412df395a0ec5f9beb5", size = 353210, upload-time = "2025-08-27T12:12:49.187Z" }, + { url = "https://files.pythonhosted.org/packages/3a/57/f5eb3ecf434342f4f1a46009530e93fd201a0b5b83379034ebdb1d7c1a58/rpds_py-0.27.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4708c5c0ceb2d034f9991623631d3d23cb16e65c83736ea020cdbe28d57c0a0e", size = 381636, upload-time = "2025-08-27T12:12:50.492Z" }, + { url = "https://files.pythonhosted.org/packages/ae/f4/ef95c5945e2ceb5119571b184dd5a1cc4b8541bbdf67461998cfeac9cb1e/rpds_py-0.27.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:abfa1171a9952d2e0002aba2ad3780820b00cc3d9c98c6630f2e93271501f66c", size = 394341, upload-time = "2025-08-27T12:12:52.024Z" }, + { url = "https://files.pythonhosted.org/packages/5a/7e/4bd610754bf492d398b61725eb9598ddd5eb86b07d7d9483dbcd810e20bc/rpds_py-0.27.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b507d19f817ebaca79574b16eb2ae412e5c0835542c93fe9983f1e432aca195", size = 523428, upload-time = "2025-08-27T12:12:53.779Z" }, + { url = "https://files.pythonhosted.org/packages/9f/e5/059b9f65a8c9149361a8b75094864ab83b94718344db511fd6117936ed2a/rpds_py-0.27.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:168b025f8fd8d8d10957405f3fdcef3dc20f5982d398f90851f4abc58c566c52", size = 402923, upload-time = "2025-08-27T12:12:55.15Z" }, + { url = "https://files.pythonhosted.org/packages/f5/48/64cabb7daced2968dd08e8a1b7988bf358d7bd5bcd5dc89a652f4668543c/rpds_py-0.27.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb56c6210ef77caa58e16e8c17d35c63fe3f5b60fd9ba9d424470c3400bcf9ed", size = 384094, upload-time = "2025-08-27T12:12:57.194Z" }, + { url = "https://files.pythonhosted.org/packages/ae/e1/dc9094d6ff566bff87add8a510c89b9e158ad2ecd97ee26e677da29a9e1b/rpds_py-0.27.1-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:d252f2d8ca0195faa707f8eb9368955760880b2b42a8ee16d382bf5dd807f89a", size = 401093, upload-time = "2025-08-27T12:12:58.985Z" }, + { url = "https://files.pythonhosted.org/packages/37/8e/ac8577e3ecdd5593e283d46907d7011618994e1d7ab992711ae0f78b9937/rpds_py-0.27.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6e5e54da1e74b91dbc7996b56640f79b195d5925c2b78efaa8c5d53e1d88edde", size = 417969, upload-time = "2025-08-27T12:13:00.367Z" }, + { url = "https://files.pythonhosted.org/packages/66/6d/87507430a8f74a93556fe55c6485ba9c259949a853ce407b1e23fea5ba31/rpds_py-0.27.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ffce0481cc6e95e5b3f0a47ee17ffbd234399e6d532f394c8dce320c3b089c21", size = 558302, upload-time = "2025-08-27T12:13:01.737Z" }, + { url = "https://files.pythonhosted.org/packages/3a/bb/1db4781ce1dda3eecc735e3152659a27b90a02ca62bfeea17aee45cc0fbc/rpds_py-0.27.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:a205fdfe55c90c2cd8e540ca9ceba65cbe6629b443bc05db1f590a3db8189ff9", size = 589259, upload-time = "2025-08-27T12:13:03.127Z" }, + { url = "https://files.pythonhosted.org/packages/7b/0e/ae1c8943d11a814d01b482e1f8da903f88047a962dff9bbdadf3bd6e6fd1/rpds_py-0.27.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:689fb5200a749db0415b092972e8eba85847c23885c8543a8b0f5c009b1a5948", size = 554983, upload-time = "2025-08-27T12:13:04.516Z" }, + { url = "https://files.pythonhosted.org/packages/b2/d5/0b2a55415931db4f112bdab072443ff76131b5ac4f4dc98d10d2d357eb03/rpds_py-0.27.1-cp311-cp311-win32.whl", hash = "sha256:3182af66048c00a075010bc7f4860f33913528a4b6fc09094a6e7598e462fe39", size = 217154, upload-time = "2025-08-27T12:13:06.278Z" }, + { url = "https://files.pythonhosted.org/packages/24/75/3b7ffe0d50dc86a6a964af0d1cc3a4a2cdf437cb7b099a4747bbb96d1819/rpds_py-0.27.1-cp311-cp311-win_amd64.whl", hash = "sha256:b4938466c6b257b2f5c4ff98acd8128ec36b5059e5c8f8372d79316b1c36bb15", size = 228627, upload-time = "2025-08-27T12:13:07.625Z" }, + { url = "https://files.pythonhosted.org/packages/8d/3f/4fd04c32abc02c710f09a72a30c9a55ea3cc154ef8099078fd50a0596f8e/rpds_py-0.27.1-cp311-cp311-win_arm64.whl", hash = "sha256:2f57af9b4d0793e53266ee4325535a31ba48e2f875da81a9177c9926dfa60746", size = 220998, upload-time = "2025-08-27T12:13:08.972Z" }, + { url = "https://files.pythonhosted.org/packages/bd/fe/38de28dee5df58b8198c743fe2bea0c785c6d40941b9950bac4cdb71a014/rpds_py-0.27.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:ae2775c1973e3c30316892737b91f9283f9908e3cc7625b9331271eaaed7dc90", size = 361887, upload-time = "2025-08-27T12:13:10.233Z" }, + { url = "https://files.pythonhosted.org/packages/7c/9a/4b6c7eedc7dd90986bf0fab6ea2a091ec11c01b15f8ba0a14d3f80450468/rpds_py-0.27.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2643400120f55c8a96f7c9d858f7be0c88d383cd4653ae2cf0d0c88f668073e5", size = 345795, upload-time = "2025-08-27T12:13:11.65Z" }, + { url = "https://files.pythonhosted.org/packages/6f/0e/e650e1b81922847a09cca820237b0edee69416a01268b7754d506ade11ad/rpds_py-0.27.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16323f674c089b0360674a4abd28d5042947d54ba620f72514d69be4ff64845e", size = 385121, upload-time = "2025-08-27T12:13:13.008Z" }, + { url = "https://files.pythonhosted.org/packages/1b/ea/b306067a712988e2bff00dcc7c8f31d26c29b6d5931b461aa4b60a013e33/rpds_py-0.27.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9a1f4814b65eacac94a00fc9a526e3fdafd78e439469644032032d0d63de4881", size = 398976, upload-time = "2025-08-27T12:13:14.368Z" }, + { url = "https://files.pythonhosted.org/packages/2c/0a/26dc43c8840cb8fe239fe12dbc8d8de40f2365e838f3d395835dde72f0e5/rpds_py-0.27.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ba32c16b064267b22f1850a34051121d423b6f7338a12b9459550eb2096e7ec", size = 525953, upload-time = "2025-08-27T12:13:15.774Z" }, + { url = "https://files.pythonhosted.org/packages/22/14/c85e8127b573aaf3a0cbd7fbb8c9c99e735a4a02180c84da2a463b766e9e/rpds_py-0.27.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5c20f33fd10485b80f65e800bbe5f6785af510b9f4056c5a3c612ebc83ba6cb", size = 407915, upload-time = "2025-08-27T12:13:17.379Z" }, + { url = "https://files.pythonhosted.org/packages/ed/7b/8f4fee9ba1fb5ec856eb22d725a4efa3deb47f769597c809e03578b0f9d9/rpds_py-0.27.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:466bfe65bd932da36ff279ddd92de56b042f2266d752719beb97b08526268ec5", size = 386883, upload-time = "2025-08-27T12:13:18.704Z" }, + { url = "https://files.pythonhosted.org/packages/86/47/28fa6d60f8b74fcdceba81b272f8d9836ac0340570f68f5df6b41838547b/rpds_py-0.27.1-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:41e532bbdcb57c92ba3be62c42e9f096431b4cf478da9bc3bc6ce5c38ab7ba7a", size = 405699, upload-time = "2025-08-27T12:13:20.089Z" }, + { url = "https://files.pythonhosted.org/packages/d0/fd/c5987b5e054548df56953a21fe2ebed51fc1ec7c8f24fd41c067b68c4a0a/rpds_py-0.27.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f149826d742b406579466283769a8ea448eed82a789af0ed17b0cd5770433444", size = 423713, upload-time = "2025-08-27T12:13:21.436Z" }, + { url = "https://files.pythonhosted.org/packages/ac/ba/3c4978b54a73ed19a7d74531be37a8bcc542d917c770e14d372b8daea186/rpds_py-0.27.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:80c60cfb5310677bd67cb1e85a1e8eb52e12529545441b43e6f14d90b878775a", size = 562324, upload-time = "2025-08-27T12:13:22.789Z" }, + { url = "https://files.pythonhosted.org/packages/b5/6c/6943a91768fec16db09a42b08644b960cff540c66aab89b74be6d4a144ba/rpds_py-0.27.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:7ee6521b9baf06085f62ba9c7a3e5becffbc32480d2f1b351559c001c38ce4c1", size = 593646, upload-time = "2025-08-27T12:13:24.122Z" }, + { url = "https://files.pythonhosted.org/packages/11/73/9d7a8f4be5f4396f011a6bb7a19fe26303a0dac9064462f5651ced2f572f/rpds_py-0.27.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a512c8263249a9d68cac08b05dd59d2b3f2061d99b322813cbcc14c3c7421998", size = 558137, upload-time = "2025-08-27T12:13:25.557Z" }, + { url = "https://files.pythonhosted.org/packages/6e/96/6772cbfa0e2485bcceef8071de7821f81aeac8bb45fbfd5542a3e8108165/rpds_py-0.27.1-cp312-cp312-win32.whl", hash = "sha256:819064fa048ba01b6dadc5116f3ac48610435ac9a0058bbde98e569f9e785c39", size = 221343, upload-time = "2025-08-27T12:13:26.967Z" }, + { url = "https://files.pythonhosted.org/packages/67/b6/c82f0faa9af1c6a64669f73a17ee0eeef25aff30bb9a1c318509efe45d84/rpds_py-0.27.1-cp312-cp312-win_amd64.whl", hash = "sha256:d9199717881f13c32c4046a15f024971a3b78ad4ea029e8da6b86e5aa9cf4594", size = 232497, upload-time = "2025-08-27T12:13:28.326Z" }, + { url = "https://files.pythonhosted.org/packages/e1/96/2817b44bd2ed11aebacc9251da03689d56109b9aba5e311297b6902136e2/rpds_py-0.27.1-cp312-cp312-win_arm64.whl", hash = "sha256:33aa65b97826a0e885ef6e278fbd934e98cdcfed80b63946025f01e2f5b29502", size = 222790, upload-time = "2025-08-27T12:13:29.71Z" }, + { url = "https://files.pythonhosted.org/packages/cc/77/610aeee8d41e39080c7e14afa5387138e3c9fa9756ab893d09d99e7d8e98/rpds_py-0.27.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:e4b9fcfbc021633863a37e92571d6f91851fa656f0180246e84cbd8b3f6b329b", size = 361741, upload-time = "2025-08-27T12:13:31.039Z" }, + { url = "https://files.pythonhosted.org/packages/3a/fc/c43765f201c6a1c60be2043cbdb664013def52460a4c7adace89d6682bf4/rpds_py-0.27.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1441811a96eadca93c517d08df75de45e5ffe68aa3089924f963c782c4b898cf", size = 345574, upload-time = "2025-08-27T12:13:32.902Z" }, + { url = "https://files.pythonhosted.org/packages/20/42/ee2b2ca114294cd9847d0ef9c26d2b0851b2e7e00bf14cc4c0b581df0fc3/rpds_py-0.27.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55266dafa22e672f5a4f65019015f90336ed31c6383bd53f5e7826d21a0e0b83", size = 385051, upload-time = "2025-08-27T12:13:34.228Z" }, + { url = "https://files.pythonhosted.org/packages/fd/e8/1e430fe311e4799e02e2d1af7c765f024e95e17d651612425b226705f910/rpds_py-0.27.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d78827d7ac08627ea2c8e02c9e5b41180ea5ea1f747e9db0915e3adf36b62dcf", size = 398395, upload-time = "2025-08-27T12:13:36.132Z" }, + { url = "https://files.pythonhosted.org/packages/82/95/9dc227d441ff2670651c27a739acb2535ccaf8b351a88d78c088965e5996/rpds_py-0.27.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae92443798a40a92dc5f0b01d8a7c93adde0c4dc965310a29ae7c64d72b9fad2", size = 524334, upload-time = "2025-08-27T12:13:37.562Z" }, + { url = "https://files.pythonhosted.org/packages/87/01/a670c232f401d9ad461d9a332aa4080cd3cb1d1df18213dbd0d2a6a7ab51/rpds_py-0.27.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c46c9dd2403b66a2a3b9720ec4b74d4ab49d4fabf9f03dfdce2d42af913fe8d0", size = 407691, upload-time = "2025-08-27T12:13:38.94Z" }, + { url = "https://files.pythonhosted.org/packages/03/36/0a14aebbaa26fe7fab4780c76f2239e76cc95a0090bdb25e31d95c492fcd/rpds_py-0.27.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2efe4eb1d01b7f5f1939f4ef30ecea6c6b3521eec451fb93191bf84b2a522418", size = 386868, upload-time = "2025-08-27T12:13:40.192Z" }, + { url = "https://files.pythonhosted.org/packages/3b/03/8c897fb8b5347ff6c1cc31239b9611c5bf79d78c984430887a353e1409a1/rpds_py-0.27.1-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:15d3b4d83582d10c601f481eca29c3f138d44c92187d197aff663a269197c02d", size = 405469, upload-time = "2025-08-27T12:13:41.496Z" }, + { url = "https://files.pythonhosted.org/packages/da/07/88c60edc2df74850d496d78a1fdcdc7b54360a7f610a4d50008309d41b94/rpds_py-0.27.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4ed2e16abbc982a169d30d1a420274a709949e2cbdef119fe2ec9d870b42f274", size = 422125, upload-time = "2025-08-27T12:13:42.802Z" }, + { url = "https://files.pythonhosted.org/packages/6b/86/5f4c707603e41b05f191a749984f390dabcbc467cf833769b47bf14ba04f/rpds_py-0.27.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a75f305c9b013289121ec0f1181931975df78738cdf650093e6b86d74aa7d8dd", size = 562341, upload-time = "2025-08-27T12:13:44.472Z" }, + { url = "https://files.pythonhosted.org/packages/b2/92/3c0cb2492094e3cd9baf9e49bbb7befeceb584ea0c1a8b5939dca4da12e5/rpds_py-0.27.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:67ce7620704745881a3d4b0ada80ab4d99df390838839921f99e63c474f82cf2", size = 592511, upload-time = "2025-08-27T12:13:45.898Z" }, + { url = "https://files.pythonhosted.org/packages/10/bb/82e64fbb0047c46a168faa28d0d45a7851cd0582f850b966811d30f67ad8/rpds_py-0.27.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9d992ac10eb86d9b6f369647b6a3f412fc0075cfd5d799530e84d335e440a002", size = 557736, upload-time = "2025-08-27T12:13:47.408Z" }, + { url = "https://files.pythonhosted.org/packages/00/95/3c863973d409210da7fb41958172c6b7dbe7fc34e04d3cc1f10bb85e979f/rpds_py-0.27.1-cp313-cp313-win32.whl", hash = "sha256:4f75e4bd8ab8db624e02c8e2fc4063021b58becdbe6df793a8111d9343aec1e3", size = 221462, upload-time = "2025-08-27T12:13:48.742Z" }, + { url = "https://files.pythonhosted.org/packages/ce/2c/5867b14a81dc217b56d95a9f2a40fdbc56a1ab0181b80132beeecbd4b2d6/rpds_py-0.27.1-cp313-cp313-win_amd64.whl", hash = "sha256:f9025faafc62ed0b75a53e541895ca272815bec18abe2249ff6501c8f2e12b83", size = 232034, upload-time = "2025-08-27T12:13:50.11Z" }, + { url = "https://files.pythonhosted.org/packages/c7/78/3958f3f018c01923823f1e47f1cc338e398814b92d83cd278364446fac66/rpds_py-0.27.1-cp313-cp313-win_arm64.whl", hash = "sha256:ed10dc32829e7d222b7d3b93136d25a406ba9788f6a7ebf6809092da1f4d279d", size = 222392, upload-time = "2025-08-27T12:13:52.587Z" }, + { url = "https://files.pythonhosted.org/packages/01/76/1cdf1f91aed5c3a7bf2eba1f1c4e4d6f57832d73003919a20118870ea659/rpds_py-0.27.1-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:92022bbbad0d4426e616815b16bc4127f83c9a74940e1ccf3cfe0b387aba0228", size = 358355, upload-time = "2025-08-27T12:13:54.012Z" }, + { url = "https://files.pythonhosted.org/packages/c3/6f/bf142541229374287604caf3bb2a4ae17f0a580798fd72d3b009b532db4e/rpds_py-0.27.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:47162fdab9407ec3f160805ac3e154df042e577dd53341745fc7fb3f625e6d92", size = 342138, upload-time = "2025-08-27T12:13:55.791Z" }, + { url = "https://files.pythonhosted.org/packages/1a/77/355b1c041d6be40886c44ff5e798b4e2769e497b790f0f7fd1e78d17e9a8/rpds_py-0.27.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb89bec23fddc489e5d78b550a7b773557c9ab58b7946154a10a6f7a214a48b2", size = 380247, upload-time = "2025-08-27T12:13:57.683Z" }, + { url = "https://files.pythonhosted.org/packages/d6/a4/d9cef5c3946ea271ce2243c51481971cd6e34f21925af2783dd17b26e815/rpds_py-0.27.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e48af21883ded2b3e9eb48cb7880ad8598b31ab752ff3be6457001d78f416723", size = 390699, upload-time = "2025-08-27T12:13:59.137Z" }, + { url = "https://files.pythonhosted.org/packages/3a/06/005106a7b8c6c1a7e91b73169e49870f4af5256119d34a361ae5240a0c1d/rpds_py-0.27.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6f5b7bd8e219ed50299e58551a410b64daafb5017d54bbe822e003856f06a802", size = 521852, upload-time = "2025-08-27T12:14:00.583Z" }, + { url = "https://files.pythonhosted.org/packages/e5/3e/50fb1dac0948e17a02eb05c24510a8fe12d5ce8561c6b7b7d1339ab7ab9c/rpds_py-0.27.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08f1e20bccf73b08d12d804d6e1c22ca5530e71659e6673bce31a6bb71c1e73f", size = 402582, upload-time = "2025-08-27T12:14:02.034Z" }, + { url = "https://files.pythonhosted.org/packages/cb/b0/f4e224090dc5b0ec15f31a02d746ab24101dd430847c4d99123798661bfc/rpds_py-0.27.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0dc5dceeaefcc96dc192e3a80bbe1d6c410c469e97bdd47494a7d930987f18b2", size = 384126, upload-time = "2025-08-27T12:14:03.437Z" }, + { url = "https://files.pythonhosted.org/packages/54/77/ac339d5f82b6afff1df8f0fe0d2145cc827992cb5f8eeb90fc9f31ef7a63/rpds_py-0.27.1-cp313-cp313t-manylinux_2_31_riscv64.whl", hash = "sha256:d76f9cc8665acdc0c9177043746775aa7babbf479b5520b78ae4002d889f5c21", size = 399486, upload-time = "2025-08-27T12:14:05.443Z" }, + { url = "https://files.pythonhosted.org/packages/d6/29/3e1c255eee6ac358c056a57d6d6869baa00a62fa32eea5ee0632039c50a3/rpds_py-0.27.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:134fae0e36022edad8290a6661edf40c023562964efea0cc0ec7f5d392d2aaef", size = 414832, upload-time = "2025-08-27T12:14:06.902Z" }, + { url = "https://files.pythonhosted.org/packages/3f/db/6d498b844342deb3fa1d030598db93937a9964fcf5cb4da4feb5f17be34b/rpds_py-0.27.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:eb11a4f1b2b63337cfd3b4d110af778a59aae51c81d195768e353d8b52f88081", size = 557249, upload-time = "2025-08-27T12:14:08.37Z" }, + { url = "https://files.pythonhosted.org/packages/60/f3/690dd38e2310b6f68858a331399b4d6dbb9132c3e8ef8b4333b96caf403d/rpds_py-0.27.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:13e608ac9f50a0ed4faec0e90ece76ae33b34c0e8656e3dceb9a7db994c692cd", size = 587356, upload-time = "2025-08-27T12:14:10.034Z" }, + { url = "https://files.pythonhosted.org/packages/86/e3/84507781cccd0145f35b1dc32c72675200c5ce8d5b30f813e49424ef68fc/rpds_py-0.27.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dd2135527aa40f061350c3f8f89da2644de26cd73e4de458e79606384f4f68e7", size = 555300, upload-time = "2025-08-27T12:14:11.783Z" }, + { url = "https://files.pythonhosted.org/packages/e5/ee/375469849e6b429b3516206b4580a79e9ef3eb12920ddbd4492b56eaacbe/rpds_py-0.27.1-cp313-cp313t-win32.whl", hash = "sha256:3020724ade63fe320a972e2ffd93b5623227e684315adce194941167fee02688", size = 216714, upload-time = "2025-08-27T12:14:13.629Z" }, + { url = "https://files.pythonhosted.org/packages/21/87/3fc94e47c9bd0742660e84706c311a860dcae4374cf4a03c477e23ce605a/rpds_py-0.27.1-cp313-cp313t-win_amd64.whl", hash = "sha256:8ee50c3e41739886606388ba3ab3ee2aae9f35fb23f833091833255a31740797", size = 228943, upload-time = "2025-08-27T12:14:14.937Z" }, + { url = "https://files.pythonhosted.org/packages/70/36/b6e6066520a07cf029d385de869729a895917b411e777ab1cde878100a1d/rpds_py-0.27.1-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:acb9aafccaae278f449d9c713b64a9e68662e7799dbd5859e2c6b3c67b56d334", size = 362472, upload-time = "2025-08-27T12:14:16.333Z" }, + { url = "https://files.pythonhosted.org/packages/af/07/b4646032e0dcec0df9c73a3bd52f63bc6c5f9cda992f06bd0e73fe3fbebd/rpds_py-0.27.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:b7fb801aa7f845ddf601c49630deeeccde7ce10065561d92729bfe81bd21fb33", size = 345676, upload-time = "2025-08-27T12:14:17.764Z" }, + { url = "https://files.pythonhosted.org/packages/b0/16/2f1003ee5d0af4bcb13c0cf894957984c32a6751ed7206db2aee7379a55e/rpds_py-0.27.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe0dd05afb46597b9a2e11c351e5e4283c741237e7f617ffb3252780cca9336a", size = 385313, upload-time = "2025-08-27T12:14:19.829Z" }, + { url = "https://files.pythonhosted.org/packages/05/cd/7eb6dd7b232e7f2654d03fa07f1414d7dfc980e82ba71e40a7c46fd95484/rpds_py-0.27.1-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b6dfb0e058adb12d8b1d1b25f686e94ffa65d9995a5157afe99743bf7369d62b", size = 399080, upload-time = "2025-08-27T12:14:21.531Z" }, + { url = "https://files.pythonhosted.org/packages/20/51/5829afd5000ec1cb60f304711f02572d619040aa3ec033d8226817d1e571/rpds_py-0.27.1-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ed090ccd235f6fa8bb5861684567f0a83e04f52dfc2e5c05f2e4b1309fcf85e7", size = 523868, upload-time = "2025-08-27T12:14:23.485Z" }, + { url = "https://files.pythonhosted.org/packages/05/2c/30eebca20d5db95720ab4d2faec1b5e4c1025c473f703738c371241476a2/rpds_py-0.27.1-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf876e79763eecf3e7356f157540d6a093cef395b65514f17a356f62af6cc136", size = 408750, upload-time = "2025-08-27T12:14:24.924Z" }, + { url = "https://files.pythonhosted.org/packages/90/1a/cdb5083f043597c4d4276eae4e4c70c55ab5accec078da8611f24575a367/rpds_py-0.27.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:12ed005216a51b1d6e2b02a7bd31885fe317e45897de81d86dcce7d74618ffff", size = 387688, upload-time = "2025-08-27T12:14:27.537Z" }, + { url = "https://files.pythonhosted.org/packages/7c/92/cf786a15320e173f945d205ab31585cc43969743bb1a48b6888f7a2b0a2d/rpds_py-0.27.1-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:ee4308f409a40e50593c7e3bb8cbe0b4d4c66d1674a316324f0c2f5383b486f9", size = 407225, upload-time = "2025-08-27T12:14:28.981Z" }, + { url = "https://files.pythonhosted.org/packages/33/5c/85ee16df5b65063ef26017bef33096557a4c83fbe56218ac7cd8c235f16d/rpds_py-0.27.1-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0b08d152555acf1f455154d498ca855618c1378ec810646fcd7c76416ac6dc60", size = 423361, upload-time = "2025-08-27T12:14:30.469Z" }, + { url = "https://files.pythonhosted.org/packages/4b/8e/1c2741307fcabd1a334ecf008e92c4f47bb6f848712cf15c923becfe82bb/rpds_py-0.27.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:dce51c828941973a5684d458214d3a36fcd28da3e1875d659388f4f9f12cc33e", size = 562493, upload-time = "2025-08-27T12:14:31.987Z" }, + { url = "https://files.pythonhosted.org/packages/04/03/5159321baae9b2222442a70c1f988cbbd66b9be0675dd3936461269be360/rpds_py-0.27.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:c1476d6f29eb81aa4151c9a31219b03f1f798dc43d8af1250a870735516a1212", size = 592623, upload-time = "2025-08-27T12:14:33.543Z" }, + { url = "https://files.pythonhosted.org/packages/ff/39/c09fd1ad28b85bc1d4554a8710233c9f4cefd03d7717a1b8fbfd171d1167/rpds_py-0.27.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:3ce0cac322b0d69b63c9cdb895ee1b65805ec9ffad37639f291dd79467bee675", size = 558800, upload-time = "2025-08-27T12:14:35.436Z" }, + { url = "https://files.pythonhosted.org/packages/c5/d6/99228e6bbcf4baa764b18258f519a9035131d91b538d4e0e294313462a98/rpds_py-0.27.1-cp314-cp314-win32.whl", hash = "sha256:dfbfac137d2a3d0725758cd141f878bf4329ba25e34979797c89474a89a8a3a3", size = 221943, upload-time = "2025-08-27T12:14:36.898Z" }, + { url = "https://files.pythonhosted.org/packages/be/07/c802bc6b8e95be83b79bdf23d1aa61d68324cb1006e245d6c58e959e314d/rpds_py-0.27.1-cp314-cp314-win_amd64.whl", hash = "sha256:a6e57b0abfe7cc513450fcf529eb486b6e4d3f8aee83e92eb5f1ef848218d456", size = 233739, upload-time = "2025-08-27T12:14:38.386Z" }, + { url = "https://files.pythonhosted.org/packages/c8/89/3e1b1c16d4c2d547c5717377a8df99aee8099ff050f87c45cb4d5fa70891/rpds_py-0.27.1-cp314-cp314-win_arm64.whl", hash = "sha256:faf8d146f3d476abfee026c4ae3bdd9ca14236ae4e4c310cbd1cf75ba33d24a3", size = 223120, upload-time = "2025-08-27T12:14:39.82Z" }, + { url = "https://files.pythonhosted.org/packages/62/7e/dc7931dc2fa4a6e46b2a4fa744a9fe5c548efd70e0ba74f40b39fa4a8c10/rpds_py-0.27.1-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:ba81d2b56b6d4911ce735aad0a1d4495e808b8ee4dc58715998741a26874e7c2", size = 358944, upload-time = "2025-08-27T12:14:41.199Z" }, + { url = "https://files.pythonhosted.org/packages/e6/22/4af76ac4e9f336bfb1a5f240d18a33c6b2fcaadb7472ac7680576512b49a/rpds_py-0.27.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:84f7d509870098de0e864cad0102711c1e24e9b1a50ee713b65928adb22269e4", size = 342283, upload-time = "2025-08-27T12:14:42.699Z" }, + { url = "https://files.pythonhosted.org/packages/1c/15/2a7c619b3c2272ea9feb9ade67a45c40b3eeb500d503ad4c28c395dc51b4/rpds_py-0.27.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9e960fc78fecd1100539f14132425e1d5fe44ecb9239f8f27f079962021523e", size = 380320, upload-time = "2025-08-27T12:14:44.157Z" }, + { url = "https://files.pythonhosted.org/packages/a2/7d/4c6d243ba4a3057e994bb5bedd01b5c963c12fe38dde707a52acdb3849e7/rpds_py-0.27.1-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:62f85b665cedab1a503747617393573995dac4600ff51869d69ad2f39eb5e817", size = 391760, upload-time = "2025-08-27T12:14:45.845Z" }, + { url = "https://files.pythonhosted.org/packages/b4/71/b19401a909b83bcd67f90221330bc1ef11bc486fe4e04c24388d28a618ae/rpds_py-0.27.1-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fed467af29776f6556250c9ed85ea5a4dd121ab56a5f8b206e3e7a4c551e48ec", size = 522476, upload-time = "2025-08-27T12:14:47.364Z" }, + { url = "https://files.pythonhosted.org/packages/e4/44/1a3b9715c0455d2e2f0f6df5ee6d6f5afdc423d0773a8a682ed2b43c566c/rpds_py-0.27.1-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2729615f9d430af0ae6b36cf042cb55c0936408d543fb691e1a9e36648fd35a", size = 403418, upload-time = "2025-08-27T12:14:49.991Z" }, + { url = "https://files.pythonhosted.org/packages/1c/4b/fb6c4f14984eb56673bc868a66536f53417ddb13ed44b391998100a06a96/rpds_py-0.27.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b207d881a9aef7ba753d69c123a35d96ca7cb808056998f6b9e8747321f03b8", size = 384771, upload-time = "2025-08-27T12:14:52.159Z" }, + { url = "https://files.pythonhosted.org/packages/c0/56/d5265d2d28b7420d7b4d4d85cad8ef891760f5135102e60d5c970b976e41/rpds_py-0.27.1-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:639fd5efec029f99b79ae47e5d7e00ad8a773da899b6309f6786ecaf22948c48", size = 400022, upload-time = "2025-08-27T12:14:53.859Z" }, + { url = "https://files.pythonhosted.org/packages/8f/e9/9f5fc70164a569bdd6ed9046486c3568d6926e3a49bdefeeccfb18655875/rpds_py-0.27.1-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fecc80cb2a90e28af8a9b366edacf33d7a91cbfe4c2c4544ea1246e949cfebeb", size = 416787, upload-time = "2025-08-27T12:14:55.673Z" }, + { url = "https://files.pythonhosted.org/packages/d4/64/56dd03430ba491db943a81dcdef115a985aac5f44f565cd39a00c766d45c/rpds_py-0.27.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:42a89282d711711d0a62d6f57d81aa43a1368686c45bc1c46b7f079d55692734", size = 557538, upload-time = "2025-08-27T12:14:57.245Z" }, + { url = "https://files.pythonhosted.org/packages/3f/36/92cc885a3129993b1d963a2a42ecf64e6a8e129d2c7cc980dbeba84e55fb/rpds_py-0.27.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:cf9931f14223de59551ab9d38ed18d92f14f055a5f78c1d8ad6493f735021bbb", size = 588512, upload-time = "2025-08-27T12:14:58.728Z" }, + { url = "https://files.pythonhosted.org/packages/dd/10/6b283707780a81919f71625351182b4f98932ac89a09023cb61865136244/rpds_py-0.27.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:f39f58a27cc6e59f432b568ed8429c7e1641324fbe38131de852cd77b2d534b0", size = 555813, upload-time = "2025-08-27T12:15:00.334Z" }, + { url = "https://files.pythonhosted.org/packages/04/2e/30b5ea18c01379da6272a92825dd7e53dc9d15c88a19e97932d35d430ef7/rpds_py-0.27.1-cp314-cp314t-win32.whl", hash = "sha256:d5fa0ee122dc09e23607a28e6d7b150da16c662e66409bbe85230e4c85bb528a", size = 217385, upload-time = "2025-08-27T12:15:01.937Z" }, + { url = "https://files.pythonhosted.org/packages/32/7d/97119da51cb1dd3f2f3c0805f155a3aa4a95fa44fe7d78ae15e69edf4f34/rpds_py-0.27.1-cp314-cp314t-win_amd64.whl", hash = "sha256:6567d2bb951e21232c2f660c24cf3470bb96de56cdcb3f071a83feeaff8a2772", size = 230097, upload-time = "2025-08-27T12:15:03.961Z" }, + { url = "https://files.pythonhosted.org/packages/d5/63/b7cc415c345625d5e62f694ea356c58fb964861409008118f1245f8c3347/rpds_py-0.27.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7ba22cb9693df986033b91ae1d7a979bc399237d45fccf875b76f62bb9e52ddf", size = 371360, upload-time = "2025-08-27T12:15:29.218Z" }, + { url = "https://files.pythonhosted.org/packages/e5/8c/12e1b24b560cf378b8ffbdb9dc73abd529e1adcfcf82727dfd29c4a7b88d/rpds_py-0.27.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:5b640501be9288c77738b5492b3fd3abc4ba95c50c2e41273c8a1459f08298d3", size = 353933, upload-time = "2025-08-27T12:15:30.837Z" }, + { url = "https://files.pythonhosted.org/packages/9b/85/1bb2210c1f7a1b99e91fea486b9f0f894aa5da3a5ec7097cbad7dec6d40f/rpds_py-0.27.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb08b65b93e0c6dd70aac7f7890a9c0938d5ec71d5cb32d45cf844fb8ae47636", size = 382962, upload-time = "2025-08-27T12:15:32.348Z" }, + { url = "https://files.pythonhosted.org/packages/cc/c9/a839b9f219cf80ed65f27a7f5ddbb2809c1b85c966020ae2dff490e0b18e/rpds_py-0.27.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d7ff07d696a7a38152ebdb8212ca9e5baab56656749f3d6004b34ab726b550b8", size = 394412, upload-time = "2025-08-27T12:15:33.839Z" }, + { url = "https://files.pythonhosted.org/packages/02/2d/b1d7f928b0b1f4fc2e0133e8051d199b01d7384875adc63b6ddadf3de7e5/rpds_py-0.27.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fb7c72262deae25366e3b6c0c0ba46007967aea15d1eea746e44ddba8ec58dcc", size = 523972, upload-time = "2025-08-27T12:15:35.377Z" }, + { url = "https://files.pythonhosted.org/packages/a9/af/2cbf56edd2d07716df1aec8a726b3159deb47cb5c27e1e42b71d705a7c2f/rpds_py-0.27.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7b002cab05d6339716b03a4a3a2ce26737f6231d7b523f339fa061d53368c9d8", size = 403273, upload-time = "2025-08-27T12:15:37.051Z" }, + { url = "https://files.pythonhosted.org/packages/c0/93/425e32200158d44ff01da5d9612c3b6711fe69f606f06e3895511f17473b/rpds_py-0.27.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23f6b69d1c26c4704fec01311963a41d7de3ee0570a84ebde4d544e5a1859ffc", size = 385278, upload-time = "2025-08-27T12:15:38.571Z" }, + { url = "https://files.pythonhosted.org/packages/eb/1a/1a04a915ecd0551bfa9e77b7672d1937b4b72a0fc204a17deef76001cfb2/rpds_py-0.27.1-pp310-pypy310_pp73-manylinux_2_31_riscv64.whl", hash = "sha256:530064db9146b247351f2a0250b8f00b289accea4596a033e94be2389977de71", size = 402084, upload-time = "2025-08-27T12:15:40.529Z" }, + { url = "https://files.pythonhosted.org/packages/51/f7/66585c0fe5714368b62951d2513b684e5215beaceab2c6629549ddb15036/rpds_py-0.27.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7b90b0496570bd6b0321724a330d8b545827c4df2034b6ddfc5f5275f55da2ad", size = 419041, upload-time = "2025-08-27T12:15:42.191Z" }, + { url = "https://files.pythonhosted.org/packages/8e/7e/83a508f6b8e219bba2d4af077c35ba0e0cdd35a751a3be6a7cba5a55ad71/rpds_py-0.27.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:879b0e14a2da6a1102a3fc8af580fc1ead37e6d6692a781bd8c83da37429b5ab", size = 560084, upload-time = "2025-08-27T12:15:43.839Z" }, + { url = "https://files.pythonhosted.org/packages/66/66/bb945683b958a1b19eb0fe715594630d0f36396ebdef4d9b89c2fa09aa56/rpds_py-0.27.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:0d807710df3b5faa66c731afa162ea29717ab3be17bdc15f90f2d9f183da4059", size = 590115, upload-time = "2025-08-27T12:15:46.647Z" }, + { url = "https://files.pythonhosted.org/packages/12/00/ccfaafaf7db7e7adace915e5c2f2c2410e16402561801e9c7f96683002d3/rpds_py-0.27.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:3adc388fc3afb6540aec081fa59e6e0d3908722771aa1e37ffe22b220a436f0b", size = 556561, upload-time = "2025-08-27T12:15:48.219Z" }, + { url = "https://files.pythonhosted.org/packages/e1/b7/92b6ed9aad103bfe1c45df98453dfae40969eef2cb6c6239c58d7e96f1b3/rpds_py-0.27.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c796c0c1cc68cb08b0284db4229f5af76168172670c74908fdbd4b7d7f515819", size = 229125, upload-time = "2025-08-27T12:15:49.956Z" }, + { url = "https://files.pythonhosted.org/packages/0c/ed/e1fba02de17f4f76318b834425257c8ea297e415e12c68b4361f63e8ae92/rpds_py-0.27.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:cdfe4bb2f9fe7458b7453ad3c33e726d6d1c7c0a72960bcc23800d77384e42df", size = 371402, upload-time = "2025-08-27T12:15:51.561Z" }, + { url = "https://files.pythonhosted.org/packages/af/7c/e16b959b316048b55585a697e94add55a4ae0d984434d279ea83442e460d/rpds_py-0.27.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:8fabb8fd848a5f75a2324e4a84501ee3a5e3c78d8603f83475441866e60b94a3", size = 354084, upload-time = "2025-08-27T12:15:53.219Z" }, + { url = "https://files.pythonhosted.org/packages/de/c1/ade645f55de76799fdd08682d51ae6724cb46f318573f18be49b1e040428/rpds_py-0.27.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eda8719d598f2f7f3e0f885cba8646644b55a187762bec091fa14a2b819746a9", size = 383090, upload-time = "2025-08-27T12:15:55.158Z" }, + { url = "https://files.pythonhosted.org/packages/1f/27/89070ca9b856e52960da1472efcb6c20ba27cfe902f4f23ed095b9cfc61d/rpds_py-0.27.1-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3c64d07e95606ec402a0a1c511fe003873fa6af630bda59bac77fac8b4318ebc", size = 394519, upload-time = "2025-08-27T12:15:57.238Z" }, + { url = "https://files.pythonhosted.org/packages/b3/28/be120586874ef906aa5aeeae95ae8df4184bc757e5b6bd1c729ccff45ed5/rpds_py-0.27.1-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:93a2ed40de81bcff59aabebb626562d48332f3d028ca2036f1d23cbb52750be4", size = 523817, upload-time = "2025-08-27T12:15:59.237Z" }, + { url = "https://files.pythonhosted.org/packages/a8/ef/70cc197bc11cfcde02a86f36ac1eed15c56667c2ebddbdb76a47e90306da/rpds_py-0.27.1-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:387ce8c44ae94e0ec50532d9cb0edce17311024c9794eb196b90e1058aadeb66", size = 403240, upload-time = "2025-08-27T12:16:00.923Z" }, + { url = "https://files.pythonhosted.org/packages/cf/35/46936cca449f7f518f2f4996e0e8344db4b57e2081e752441154089d2a5f/rpds_py-0.27.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aaf94f812c95b5e60ebaf8bfb1898a7d7cb9c1af5744d4a67fa47796e0465d4e", size = 385194, upload-time = "2025-08-27T12:16:02.802Z" }, + { url = "https://files.pythonhosted.org/packages/e1/62/29c0d3e5125c3270b51415af7cbff1ec587379c84f55a5761cc9efa8cd06/rpds_py-0.27.1-pp311-pypy311_pp73-manylinux_2_31_riscv64.whl", hash = "sha256:4848ca84d6ded9b58e474dfdbad4b8bfb450344c0551ddc8d958bf4b36aa837c", size = 402086, upload-time = "2025-08-27T12:16:04.806Z" }, + { url = "https://files.pythonhosted.org/packages/8f/66/03e1087679227785474466fdd04157fb793b3b76e3fcf01cbf4c693c1949/rpds_py-0.27.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2bde09cbcf2248b73c7c323be49b280180ff39fadcfe04e7b6f54a678d02a7cf", size = 419272, upload-time = "2025-08-27T12:16:06.471Z" }, + { url = "https://files.pythonhosted.org/packages/6a/24/e3e72d265121e00b063aef3e3501e5b2473cf1b23511d56e529531acf01e/rpds_py-0.27.1-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:94c44ee01fd21c9058f124d2d4f0c9dc7634bec93cd4b38eefc385dabe71acbf", size = 560003, upload-time = "2025-08-27T12:16:08.06Z" }, + { url = "https://files.pythonhosted.org/packages/26/ca/f5a344c534214cc2d41118c0699fffbdc2c1bc7046f2a2b9609765ab9c92/rpds_py-0.27.1-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:df8b74962e35c9249425d90144e721eed198e6555a0e22a563d29fe4486b51f6", size = 590482, upload-time = "2025-08-27T12:16:10.137Z" }, + { url = "https://files.pythonhosted.org/packages/ce/08/4349bdd5c64d9d193c360aa9db89adeee6f6682ab8825dca0a3f535f434f/rpds_py-0.27.1-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:dc23e6820e3b40847e2f4a7726462ba0cf53089512abe9ee16318c366494c17a", size = 556523, upload-time = "2025-08-27T12:16:12.188Z" }, ] [[package]] name = "ruamel-yaml" -version = "0.18.13" +version = "0.18.15" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ruamel-yaml-clib", marker = "python_full_version < '3.14' and platform_python_implementation == 'CPython'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/aa/f9/0e3b3a678d087f8067249ecc9f2434428a93442004be86faed201ac7aeee/ruamel.yaml-0.18.13.tar.gz", hash = "sha256:b0d5ac0a2b0b4e39d87aed00ddff26e795de6750b064da364a8d009b97ce5f26", size = 145469, upload-time = "2025-06-06T14:22:43.83Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3e/db/f3950f5e5031b618aae9f423a39bf81a55c148aecd15a34527898e752cf4/ruamel.yaml-0.18.15.tar.gz", hash = "sha256:dbfca74b018c4c3fba0b9cc9ee33e53c371194a9000e694995e620490fd40700", size = 146865, upload-time = "2025-08-19T11:15:10.694Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a3/ce/409888a3f8421600d778f926768ee1353cfe61b4850bef3622701bd82dad/ruamel.yaml-0.18.13-py3-none-any.whl", hash = "sha256:cf9628cfdfe9d88b78429cd093aa766e9a4c69242f9f3c86ac1d9e56437e5572", size = 118588, upload-time = "2025-06-06T14:22:40.787Z" }, + { url = "https://files.pythonhosted.org/packages/d1/e5/f2a0621f1781b76a38194acae72f01e37b1941470407345b6e8653ad7640/ruamel.yaml-0.18.15-py3-none-any.whl", hash = "sha256:148f6488d698b7a5eded5ea793a025308b25eca97208181b6a026037f391f701", size = 119702, upload-time = "2025-08-19T11:15:07.696Z" }, ] [[package]] name = "ruamel-yaml-clib" -version = "0.2.12" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/20/84/80203abff8ea4993a87d823a5f632e4d92831ef75d404c9fc78d0176d2b5/ruamel.yaml.clib-0.2.12.tar.gz", hash = "sha256:6c8fbb13ec503f99a91901ab46e0b07ae7941cd527393187039aec586fdfd36f", size = 225315, upload-time = "2024-10-20T10:10:56.22Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/70/57/40a958e863e299f0c74ef32a3bde9f2d1ea8d69669368c0c502a0997f57f/ruamel.yaml.clib-0.2.12-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:11f891336688faf5156a36293a9c362bdc7c88f03a8a027c2c1d8e0bcde998e5", size = 131301, upload-time = "2024-10-20T10:12:35.876Z" }, - { url = "https://files.pythonhosted.org/packages/98/a8/29a3eb437b12b95f50a6bcc3d7d7214301c6c529d8fdc227247fa84162b5/ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:a606ef75a60ecf3d924613892cc603b154178ee25abb3055db5062da811fd969", size = 633728, upload-time = "2024-10-20T10:12:37.858Z" }, - { url = "https://files.pythonhosted.org/packages/35/6d/ae05a87a3ad540259c3ad88d71275cbd1c0f2d30ae04c65dcbfb6dcd4b9f/ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd5415dded15c3822597455bc02bcd66e81ef8b7a48cb71a33628fc9fdde39df", size = 722230, upload-time = "2024-10-20T10:12:39.457Z" }, - { url = "https://files.pythonhosted.org/packages/7f/b7/20c6f3c0b656fe609675d69bc135c03aac9e3865912444be6339207b6648/ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f66efbc1caa63c088dead1c4170d148eabc9b80d95fb75b6c92ac0aad2437d76", size = 686712, upload-time = "2024-10-20T10:12:41.119Z" }, - { url = "https://files.pythonhosted.org/packages/cd/11/d12dbf683471f888d354dac59593873c2b45feb193c5e3e0f2ebf85e68b9/ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:22353049ba4181685023b25b5b51a574bce33e7f51c759371a7422dcae5402a6", size = 663936, upload-time = "2024-10-21T11:26:37.419Z" }, - { url = "https://files.pythonhosted.org/packages/72/14/4c268f5077db5c83f743ee1daeb236269fa8577133a5cfa49f8b382baf13/ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:932205970b9f9991b34f55136be327501903f7c66830e9760a8ffb15b07f05cd", size = 696580, upload-time = "2024-10-21T11:26:39.503Z" }, - { url = "https://files.pythonhosted.org/packages/30/fc/8cd12f189c6405a4c1cf37bd633aa740a9538c8e40497c231072d0fef5cf/ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a52d48f4e7bf9005e8f0a89209bf9a73f7190ddf0489eee5eb51377385f59f2a", size = 663393, upload-time = "2024-12-11T19:58:13.873Z" }, - { url = "https://files.pythonhosted.org/packages/80/29/c0a017b704aaf3cbf704989785cd9c5d5b8ccec2dae6ac0c53833c84e677/ruamel.yaml.clib-0.2.12-cp310-cp310-win32.whl", hash = "sha256:3eac5a91891ceb88138c113f9db04f3cebdae277f5d44eaa3651a4f573e6a5da", size = 100326, upload-time = "2024-10-20T10:12:42.967Z" }, - { url = "https://files.pythonhosted.org/packages/3a/65/fa39d74db4e2d0cd252355732d966a460a41cd01c6353b820a0952432839/ruamel.yaml.clib-0.2.12-cp310-cp310-win_amd64.whl", hash = "sha256:ab007f2f5a87bd08ab1499bdf96f3d5c6ad4dcfa364884cb4549aa0154b13a28", size = 118079, upload-time = "2024-10-20T10:12:44.117Z" }, - { url = "https://files.pythonhosted.org/packages/fb/8f/683c6ad562f558cbc4f7c029abcd9599148c51c54b5ef0f24f2638da9fbb/ruamel.yaml.clib-0.2.12-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:4a6679521a58256a90b0d89e03992c15144c5f3858f40d7c18886023d7943db6", size = 132224, upload-time = "2024-10-20T10:12:45.162Z" }, - { url = "https://files.pythonhosted.org/packages/3c/d2/b79b7d695e2f21da020bd44c782490578f300dd44f0a4c57a92575758a76/ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:d84318609196d6bd6da0edfa25cedfbabd8dbde5140a0a23af29ad4b8f91fb1e", size = 641480, upload-time = "2024-10-20T10:12:46.758Z" }, - { url = "https://files.pythonhosted.org/packages/68/6e/264c50ce2a31473a9fdbf4fa66ca9b2b17c7455b31ef585462343818bd6c/ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb43a269eb827806502c7c8efb7ae7e9e9d0573257a46e8e952f4d4caba4f31e", size = 739068, upload-time = "2024-10-20T10:12:48.605Z" }, - { url = "https://files.pythonhosted.org/packages/86/29/88c2567bc893c84d88b4c48027367c3562ae69121d568e8a3f3a8d363f4d/ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:811ea1594b8a0fb466172c384267a4e5e367298af6b228931f273b111f17ef52", size = 703012, upload-time = "2024-10-20T10:12:51.124Z" }, - { url = "https://files.pythonhosted.org/packages/11/46/879763c619b5470820f0cd6ca97d134771e502776bc2b844d2adb6e37753/ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cf12567a7b565cbf65d438dec6cfbe2917d3c1bdddfce84a9930b7d35ea59642", size = 704352, upload-time = "2024-10-21T11:26:41.438Z" }, - { url = "https://files.pythonhosted.org/packages/02/80/ece7e6034256a4186bbe50dee28cd032d816974941a6abf6a9d65e4228a7/ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7dd5adc8b930b12c8fc5b99e2d535a09889941aa0d0bd06f4749e9a9397c71d2", size = 737344, upload-time = "2024-10-21T11:26:43.62Z" }, - { url = "https://files.pythonhosted.org/packages/f0/ca/e4106ac7e80efbabdf4bf91d3d32fc424e41418458251712f5672eada9ce/ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1492a6051dab8d912fc2adeef0e8c72216b24d57bd896ea607cb90bb0c4981d3", size = 714498, upload-time = "2024-12-11T19:58:15.592Z" }, - { url = "https://files.pythonhosted.org/packages/67/58/b1f60a1d591b771298ffa0428237afb092c7f29ae23bad93420b1eb10703/ruamel.yaml.clib-0.2.12-cp311-cp311-win32.whl", hash = "sha256:bd0a08f0bab19093c54e18a14a10b4322e1eacc5217056f3c063bd2f59853ce4", size = 100205, upload-time = "2024-10-20T10:12:52.865Z" }, - { url = "https://files.pythonhosted.org/packages/b4/4f/b52f634c9548a9291a70dfce26ca7ebce388235c93588a1068028ea23fcc/ruamel.yaml.clib-0.2.12-cp311-cp311-win_amd64.whl", hash = "sha256:a274fb2cb086c7a3dea4322ec27f4cb5cc4b6298adb583ab0e211a4682f241eb", size = 118185, upload-time = "2024-10-20T10:12:54.652Z" }, - { url = "https://files.pythonhosted.org/packages/48/41/e7a405afbdc26af961678474a55373e1b323605a4f5e2ddd4a80ea80f628/ruamel.yaml.clib-0.2.12-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:20b0f8dc160ba83b6dcc0e256846e1a02d044e13f7ea74a3d1d56ede4e48c632", size = 133433, upload-time = "2024-10-20T10:12:55.657Z" }, - { url = "https://files.pythonhosted.org/packages/ec/b0/b850385604334c2ce90e3ee1013bd911aedf058a934905863a6ea95e9eb4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:943f32bc9dedb3abff9879edc134901df92cfce2c3d5c9348f172f62eb2d771d", size = 647362, upload-time = "2024-10-20T10:12:57.155Z" }, - { url = "https://files.pythonhosted.org/packages/44/d0/3f68a86e006448fb6c005aee66565b9eb89014a70c491d70c08de597f8e4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95c3829bb364fdb8e0332c9931ecf57d9be3519241323c5274bd82f709cebc0c", size = 754118, upload-time = "2024-10-20T10:12:58.501Z" }, - { url = "https://files.pythonhosted.org/packages/52/a9/d39f3c5ada0a3bb2870d7db41901125dbe2434fa4f12ca8c5b83a42d7c53/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:749c16fcc4a2b09f28843cda5a193e0283e47454b63ec4b81eaa2242f50e4ccd", size = 706497, upload-time = "2024-10-20T10:13:00.211Z" }, - { url = "https://files.pythonhosted.org/packages/b0/fa/097e38135dadd9ac25aecf2a54be17ddf6e4c23e43d538492a90ab3d71c6/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bf165fef1f223beae7333275156ab2022cffe255dcc51c27f066b4370da81e31", size = 698042, upload-time = "2024-10-21T11:26:46.038Z" }, - { url = "https://files.pythonhosted.org/packages/ec/d5/a659ca6f503b9379b930f13bc6b130c9f176469b73b9834296822a83a132/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:32621c177bbf782ca5a18ba4d7af0f1082a3f6e517ac2a18b3974d4edf349680", size = 745831, upload-time = "2024-10-21T11:26:47.487Z" }, - { url = "https://files.pythonhosted.org/packages/db/5d/36619b61ffa2429eeaefaab4f3374666adf36ad8ac6330d855848d7d36fd/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b82a7c94a498853aa0b272fd5bc67f29008da798d4f93a2f9f289feb8426a58d", size = 715692, upload-time = "2024-12-11T19:58:17.252Z" }, - { url = "https://files.pythonhosted.org/packages/b1/82/85cb92f15a4231c89b95dfe08b09eb6adca929ef7df7e17ab59902b6f589/ruamel.yaml.clib-0.2.12-cp312-cp312-win32.whl", hash = "sha256:e8c4ebfcfd57177b572e2040777b8abc537cdef58a2120e830124946aa9b42c5", size = 98777, upload-time = "2024-10-20T10:13:01.395Z" }, - { url = "https://files.pythonhosted.org/packages/d7/8f/c3654f6f1ddb75daf3922c3d8fc6005b1ab56671ad56ffb874d908bfa668/ruamel.yaml.clib-0.2.12-cp312-cp312-win_amd64.whl", hash = "sha256:0467c5965282c62203273b838ae77c0d29d7638c8a4e3a1c8bdd3602c10904e4", size = 115523, upload-time = "2024-10-20T10:13:02.768Z" }, - { url = "https://files.pythonhosted.org/packages/29/00/4864119668d71a5fa45678f380b5923ff410701565821925c69780356ffa/ruamel.yaml.clib-0.2.12-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:4c8c5d82f50bb53986a5e02d1b3092b03622c02c2eb78e29bec33fd9593bae1a", size = 132011, upload-time = "2024-10-20T10:13:04.377Z" }, - { url = "https://files.pythonhosted.org/packages/7f/5e/212f473a93ae78c669ffa0cb051e3fee1139cb2d385d2ae1653d64281507/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:e7e3736715fbf53e9be2a79eb4db68e4ed857017344d697e8b9749444ae57475", size = 642488, upload-time = "2024-10-20T10:13:05.906Z" }, - { url = "https://files.pythonhosted.org/packages/1f/8f/ecfbe2123ade605c49ef769788f79c38ddb1c8fa81e01f4dbf5cf1a44b16/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7e75b4965e1d4690e93021adfcecccbca7d61c7bddd8e22406ef2ff20d74ef", size = 745066, upload-time = "2024-10-20T10:13:07.26Z" }, - { url = "https://files.pythonhosted.org/packages/e2/a9/28f60726d29dfc01b8decdb385de4ced2ced9faeb37a847bd5cf26836815/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96777d473c05ee3e5e3c3e999f5d23c6f4ec5b0c38c098b3a5229085f74236c6", size = 701785, upload-time = "2024-10-20T10:13:08.504Z" }, - { url = "https://files.pythonhosted.org/packages/84/7e/8e7ec45920daa7f76046578e4f677a3215fe8f18ee30a9cb7627a19d9b4c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:3bc2a80e6420ca8b7d3590791e2dfc709c88ab9152c00eeb511c9875ce5778bf", size = 693017, upload-time = "2024-10-21T11:26:48.866Z" }, - { url = "https://files.pythonhosted.org/packages/c5/b3/d650eaade4ca225f02a648321e1ab835b9d361c60d51150bac49063b83fa/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e188d2699864c11c36cdfdada94d781fd5d6b0071cd9c427bceb08ad3d7c70e1", size = 741270, upload-time = "2024-10-21T11:26:50.213Z" }, - { url = "https://files.pythonhosted.org/packages/87/b8/01c29b924dcbbed75cc45b30c30d565d763b9c4d540545a0eeecffb8f09c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4f6f3eac23941b32afccc23081e1f50612bdbe4e982012ef4f5797986828cd01", size = 709059, upload-time = "2024-12-11T19:58:18.846Z" }, - { url = "https://files.pythonhosted.org/packages/30/8c/ed73f047a73638257aa9377ad356bea4d96125b305c34a28766f4445cc0f/ruamel.yaml.clib-0.2.12-cp313-cp313-win32.whl", hash = "sha256:6442cb36270b3afb1b4951f060eccca1ce49f3d087ca1ca4563a6eb479cb3de6", size = 98583, upload-time = "2024-10-20T10:13:09.658Z" }, - { url = "https://files.pythonhosted.org/packages/b0/85/e8e751d8791564dd333d5d9a4eab0a7a115f7e349595417fd50ecae3395c/ruamel.yaml.clib-0.2.12-cp313-cp313-win_amd64.whl", hash = "sha256:e5b8daf27af0b90da7bb903a876477a9e6d7270be6146906b276605997c7e9a3", size = 115190, upload-time = "2024-10-20T10:13:10.66Z" }, +version = "0.2.14" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/e9/39ec4d4b3f91188fad1842748f67d4e749c77c37e353c4e545052ee8e893/ruamel.yaml.clib-0.2.14.tar.gz", hash = "sha256:803f5044b13602d58ea378576dd75aa759f52116a0232608e8fdada4da33752e", size = 225394, upload-time = "2025-09-22T19:51:23.753Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b4/56/35a0a752415ae01992c68f5a6513bdef0e1b6fbdb60d7619342ce12346a0/ruamel.yaml.clib-0.2.14-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f8b2acb0ffdd2ce8208accbec2dca4a06937d556fdcaefd6473ba1b5daa7e3c4", size = 269216, upload-time = "2025-09-23T14:24:09.742Z" }, + { url = "https://files.pythonhosted.org/packages/98/6a/9a68184ab93619f4607ff1675e4ef01e8accfcbff0d482f4ca44c10d8eab/ruamel.yaml.clib-0.2.14-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:aef953f3b8bd0b50bd52a2e52fb54a6a2171a1889d8dea4a5959d46c6624c451", size = 137092, upload-time = "2025-09-22T19:50:26.906Z" }, + { url = "https://files.pythonhosted.org/packages/2b/3f/cfed5f088628128a9ec66f46794fd4d165642155c7b78c26d83b16c6bf7b/ruamel.yaml.clib-0.2.14-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:a0ac90efbc7a77b0d796c03c8cc4e62fd710b3f1e4c32947713ef2ef52e09543", size = 633768, upload-time = "2025-09-22T19:50:31.228Z" }, + { url = "https://files.pythonhosted.org/packages/3a/d5/5ce2cc156c1da48160171968d91f066d305840fbf930ee955a509d025a44/ruamel.yaml.clib-0.2.14-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9bf6b699223afe6c7fe9f2ef76e0bfa6dd892c21e94ce8c957478987ade76cd8", size = 721253, upload-time = "2025-09-22T19:50:28.776Z" }, + { url = "https://files.pythonhosted.org/packages/2b/71/d0b56bc902b38ebe4be8e270f730f929eec4edaf8a0fa7028f4ef64fa950/ruamel.yaml.clib-0.2.14-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d73a0187718f6eec5b2f729b0f98e4603f7bd9c48aa65d01227d1a5dcdfbe9e8", size = 683823, upload-time = "2025-09-22T19:50:29.993Z" }, + { url = "https://files.pythonhosted.org/packages/4b/db/1f37449dd89c540218598316ccafc1a0aed60215e72efa315c5367cfd015/ruamel.yaml.clib-0.2.14-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:81f6d3b19bc703679a5705c6a16dabdc79823c71d791d73c65949be7f3012c02", size = 690370, upload-time = "2025-09-23T18:42:46.797Z" }, + { url = "https://files.pythonhosted.org/packages/5d/53/c498b30f35efcd9f47cb084d7ad9374f2b907470f73913dec6396b81397d/ruamel.yaml.clib-0.2.14-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b28caeaf3e670c08cb7e8de221266df8494c169bd6ed8875493fab45be9607a4", size = 703578, upload-time = "2025-09-22T19:50:32.531Z" }, + { url = "https://files.pythonhosted.org/packages/34/79/492cfad9baed68914840c39e5f3c1cc251f51a897ddb3f532601215cbb12/ruamel.yaml.clib-0.2.14-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:94f3efb718f8f49b031f2071ec7a27dd20cbfe511b4dfd54ecee54c956da2b31", size = 722544, upload-time = "2025-09-22T19:50:34.157Z" }, + { url = "https://files.pythonhosted.org/packages/ca/f5/479ebfd5ba396e209ade90f7282d84b90c57b3e07be8dc6fcd02a6df7ffc/ruamel.yaml.clib-0.2.14-cp310-cp310-win32.whl", hash = "sha256:27c070cf3888e90d992be75dd47292ff9aa17dafd36492812a6a304a1aedc182", size = 100375, upload-time = "2025-09-22T19:50:36.832Z" }, + { url = "https://files.pythonhosted.org/packages/57/31/a044520fdb3bd409889f67f1efebda0658033c7ab3f390cee37531cc9a9e/ruamel.yaml.clib-0.2.14-cp310-cp310-win_amd64.whl", hash = "sha256:4f4a150a737fccae13fb51234d41304ff2222e3b7d4c8e9428ed1a6ab48389b8", size = 118129, upload-time = "2025-09-22T19:50:35.545Z" }, + { url = "https://files.pythonhosted.org/packages/b3/9f/3c51e9578b8c36fcc4bdd271a1a5bb65963a74a4b6ad1a989768a22f6c2a/ruamel.yaml.clib-0.2.14-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5bae1a073ca4244620425cd3d3aa9746bde590992b98ee8c7c8be8c597ca0d4e", size = 270207, upload-time = "2025-09-23T14:24:11.445Z" }, + { url = "https://files.pythonhosted.org/packages/4a/16/cb02815bc2ae9c66760c0c061d23c7358f9ba51dae95ac85247662b7fbe2/ruamel.yaml.clib-0.2.14-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:0a54e5e40a7a691a426c2703b09b0d61a14294d25cfacc00631aa6f9c964df0d", size = 137780, upload-time = "2025-09-22T19:50:37.734Z" }, + { url = "https://files.pythonhosted.org/packages/31/c6/fc687cd1b93bff8e40861eea46d6dc1a6a778d9a085684e4045ff26a8e40/ruamel.yaml.clib-0.2.14-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:10d9595b6a19778f3269399eff6bab642608e5966183abc2adbe558a42d4efc9", size = 641590, upload-time = "2025-09-22T19:50:41.978Z" }, + { url = "https://files.pythonhosted.org/packages/45/5d/65a2bc08b709b08576b3f307bf63951ee68a8e047cbbda6f1c9864ecf9a7/ruamel.yaml.clib-0.2.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dba72975485f2b87b786075e18a6e5d07dc2b4d8973beb2732b9b2816f1bad70", size = 738090, upload-time = "2025-09-22T19:50:39.152Z" }, + { url = "https://files.pythonhosted.org/packages/fb/d0/a70a03614d9a6788a3661ab1538879ed2aae4e84d861f101243116308a37/ruamel.yaml.clib-0.2.14-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:29757bdb7c142f9595cc1b62ec49a3d1c83fab9cef92db52b0ccebaad4eafb98", size = 700744, upload-time = "2025-09-22T19:50:40.811Z" }, + { url = "https://files.pythonhosted.org/packages/77/30/c93fa457611f79946d5cb6cc97493ca5425f3f21891d7b1f9b44eaa1b38e/ruamel.yaml.clib-0.2.14-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:557df28dbccf79b152fe2d1b935f6063d9cc431199ea2b0e84892f35c03bb0ee", size = 742321, upload-time = "2025-09-23T18:42:48.916Z" }, + { url = "https://files.pythonhosted.org/packages/40/85/e2c54ad637117cd13244a4649946eaa00f32edcb882d1f92df90e079ab00/ruamel.yaml.clib-0.2.14-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:26a8de280ab0d22b6e3ec745b4a5a07151a0f74aad92dd76ab9c8d8d7087720d", size = 743805, upload-time = "2025-09-22T19:50:43.58Z" }, + { url = "https://files.pythonhosted.org/packages/81/50/f899072c38877d8ef5382e0b3d47f8c4346226c1f52d6945d6f64fec6a2f/ruamel.yaml.clib-0.2.14-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e501c096aa3889133d674605ebd018471bc404a59cbc17da3c5924421c54d97c", size = 769529, upload-time = "2025-09-22T19:50:45.707Z" }, + { url = "https://files.pythonhosted.org/packages/99/7c/96d4b5075e30c65ea2064e40c2d657c7c235d7b6ef18751cf89a935b9041/ruamel.yaml.clib-0.2.14-cp311-cp311-win32.whl", hash = "sha256:915748cfc25b8cfd81b14d00f4bfdb2ab227a30d6d43459034533f4d1c207a2a", size = 100256, upload-time = "2025-09-22T19:50:48.26Z" }, + { url = "https://files.pythonhosted.org/packages/7d/8c/73ee2babd04e8bfcf1fd5c20aa553d18bf0ebc24b592b4f831d12ae46cc0/ruamel.yaml.clib-0.2.14-cp311-cp311-win_amd64.whl", hash = "sha256:4ccba93c1e5a40af45b2f08e4591969fa4697eae951c708f3f83dcbf9f6c6bb1", size = 118234, upload-time = "2025-09-22T19:50:47.019Z" }, + { url = "https://files.pythonhosted.org/packages/b4/42/ccfb34a25289afbbc42017e4d3d4288e61d35b2e00cfc6b92974a6a1f94b/ruamel.yaml.clib-0.2.14-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:6aeadc170090ff1889f0d2c3057557f9cd71f975f17535c26a5d37af98f19c27", size = 271775, upload-time = "2025-09-23T14:24:12.771Z" }, + { url = "https://files.pythonhosted.org/packages/82/73/e628a92e80197ff6a79ab81ec3fa00d4cc082d58ab78d3337b7ba7043301/ruamel.yaml.clib-0.2.14-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:5e56ac47260c0eed992789fa0b8efe43404a9adb608608631a948cee4fc2b052", size = 138842, upload-time = "2025-09-22T19:50:49.156Z" }, + { url = "https://files.pythonhosted.org/packages/2b/c5/346c7094344a60419764b4b1334d9e0285031c961176ff88ffb652405b0c/ruamel.yaml.clib-0.2.14-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:a911aa73588d9a8b08d662b9484bc0567949529824a55d3885b77e8dd62a127a", size = 647404, upload-time = "2025-09-22T19:50:52.921Z" }, + { url = "https://files.pythonhosted.org/packages/df/99/65080c863eb06d4498de3d6c86f3e90595e02e159fd8529f1565f56cfe2c/ruamel.yaml.clib-0.2.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a05ba88adf3d7189a974b2de7a9d56731548d35dc0a822ec3dc669caa7019b29", size = 753141, upload-time = "2025-09-22T19:50:50.294Z" }, + { url = "https://files.pythonhosted.org/packages/3d/e3/0de85f3e3333f8e29e4b10244374a202a87665d1131798946ee22cf05c7c/ruamel.yaml.clib-0.2.14-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb04c5650de6668b853623eceadcdb1a9f2fee381f5d7b6bc842ee7c239eeec4", size = 703477, upload-time = "2025-09-22T19:50:51.508Z" }, + { url = "https://files.pythonhosted.org/packages/d9/25/0d2f09d8833c7fd77ab8efeff213093c16856479a9d293180a0d89f6bed9/ruamel.yaml.clib-0.2.14-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:df3ec9959241d07bc261f4983d25a1205ff37703faf42b474f15d54d88b4f8c9", size = 741157, upload-time = "2025-09-23T18:42:50.408Z" }, + { url = "https://files.pythonhosted.org/packages/d3/8c/959f10c2e2153cbdab834c46e6954b6dd9e3b109c8f8c0a3cf1618310985/ruamel.yaml.clib-0.2.14-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:fbc08c02e9b147a11dfcaa1ac8a83168b699863493e183f7c0c8b12850b7d259", size = 745859, upload-time = "2025-09-22T19:50:54.497Z" }, + { url = "https://files.pythonhosted.org/packages/ed/6b/e580a7c18b485e1a5f30a32cda96b20364b0ba649d9d2baaf72f8bd21f83/ruamel.yaml.clib-0.2.14-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c099cafc1834d3c5dac305865d04235f7c21c167c8dd31ebc3d6bbc357e2f023", size = 770200, upload-time = "2025-09-22T19:50:55.718Z" }, + { url = "https://files.pythonhosted.org/packages/ef/44/3455eebc761dc8e8fdced90f2b0a3fa61e32ba38b50de4130e2d57db0f21/ruamel.yaml.clib-0.2.14-cp312-cp312-win32.whl", hash = "sha256:b5b0f7e294700b615a3bcf6d28b26e6da94e8eba63b079f4ec92e9ba6c0d6b54", size = 98829, upload-time = "2025-09-22T19:50:58.895Z" }, + { url = "https://files.pythonhosted.org/packages/76/ab/5121f7f3b651db93de546f8c982c241397aad0a4765d793aca1dac5eadee/ruamel.yaml.clib-0.2.14-cp312-cp312-win_amd64.whl", hash = "sha256:a37f40a859b503304dd740686359fcf541d6fb3ff7fc10f539af7f7150917c68", size = 115570, upload-time = "2025-09-22T19:50:57.981Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ae/e3811f05415594025e96000349d3400978adaed88d8f98d494352d9761ee/ruamel.yaml.clib-0.2.14-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7e4f9da7e7549946e02a6122dcad00b7c1168513acb1f8a726b1aaf504a99d32", size = 269205, upload-time = "2025-09-23T14:24:15.06Z" }, + { url = "https://files.pythonhosted.org/packages/72/06/7d51f4688d6d72bb72fa74254e1593c4f5ebd0036be5b41fe39315b275e9/ruamel.yaml.clib-0.2.14-cp313-cp313-macosx_15_0_arm64.whl", hash = "sha256:dd7546c851e59c06197a7c651335755e74aa383a835878ca86d2c650c07a2f85", size = 137417, upload-time = "2025-09-22T19:50:59.82Z" }, + { url = "https://files.pythonhosted.org/packages/5a/08/b4499234a420ef42960eeb05585df5cc7eb25ccb8c980490b079e6367050/ruamel.yaml.clib-0.2.14-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:1c1acc3a0209ea9042cc3cfc0790edd2eddd431a2ec3f8283d081e4d5018571e", size = 642558, upload-time = "2025-09-22T19:51:03.388Z" }, + { url = "https://files.pythonhosted.org/packages/b6/ba/1975a27dedf1c4c33306ee67c948121be8710b19387aada29e2f139c43ee/ruamel.yaml.clib-0.2.14-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2070bf0ad1540d5c77a664de07ebcc45eebd1ddcab71a7a06f26936920692beb", size = 744087, upload-time = "2025-09-22T19:51:00.897Z" }, + { url = "https://files.pythonhosted.org/packages/20/15/8a19a13d27f3bd09fa18813add8380a29115a47b553845f08802959acbce/ruamel.yaml.clib-0.2.14-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bd8fe07f49c170e09d76773fb86ad9135e0beee44f36e1576a201b0676d3d1d", size = 699709, upload-time = "2025-09-22T19:51:02.075Z" }, + { url = "https://files.pythonhosted.org/packages/19/ee/8d6146a079ad21e534b5083c9ee4a4c8bec42f79cf87594b60978286b39a/ruamel.yaml.clib-0.2.14-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ff86876889ea478b1381089e55cf9e345707b312beda4986f823e1d95e8c0f59", size = 708926, upload-time = "2025-09-23T18:42:51.707Z" }, + { url = "https://files.pythonhosted.org/packages/a9/f5/426b714abdc222392e68f3b8ad323930d05a214a27c7e7a0f06c69126401/ruamel.yaml.clib-0.2.14-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:1f118b707eece8cf84ecbc3e3ec94d9db879d85ed608f95870d39b2d2efa5dca", size = 740202, upload-time = "2025-09-22T19:51:04.673Z" }, + { url = "https://files.pythonhosted.org/packages/3d/ac/3c5c2b27a183f4fda8a57c82211721c016bcb689a4a175865f7646db9f94/ruamel.yaml.clib-0.2.14-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b30110b29484adc597df6bd92a37b90e63a8c152ca8136aad100a02f8ba6d1b6", size = 765196, upload-time = "2025-09-22T19:51:05.916Z" }, + { url = "https://files.pythonhosted.org/packages/92/2e/06f56a71fd55021c993ed6e848c9b2e5e9cfce180a42179f0ddd28253f7c/ruamel.yaml.clib-0.2.14-cp313-cp313-win32.whl", hash = "sha256:f4e97a1cf0b7a30af9e1d9dad10a5671157b9acee790d9e26996391f49b965a2", size = 98635, upload-time = "2025-09-22T19:51:08.183Z" }, + { url = "https://files.pythonhosted.org/packages/51/79/76aba16a1689b50528224b182f71097ece338e7a4ab55e84c2e73443b78a/ruamel.yaml.clib-0.2.14-cp313-cp313-win_amd64.whl", hash = "sha256:090782b5fb9d98df96509eecdbcaffd037d47389a89492320280d52f91330d78", size = 115238, upload-time = "2025-09-22T19:51:07.081Z" }, + { url = "https://files.pythonhosted.org/packages/21/e2/a59ff65c26aaf21a24eb38df777cb9af5d87ba8fc8107c163c2da9d1e85e/ruamel.yaml.clib-0.2.14-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:7df6f6e9d0e33c7b1d435defb185095386c469109de723d514142632a7b9d07f", size = 271441, upload-time = "2025-09-23T14:24:16.498Z" }, + { url = "https://files.pythonhosted.org/packages/6b/fa/3234f913fe9a6525a7b97c6dad1f51e72b917e6872e051a5e2ffd8b16fbb/ruamel.yaml.clib-0.2.14-cp314-cp314-macosx_15_0_arm64.whl", hash = "sha256:70eda7703b8126f5e52fcf276e6c0f40b0d314674f896fc58c47b0aef2b9ae83", size = 137970, upload-time = "2025-09-22T19:51:09.472Z" }, + { url = "https://files.pythonhosted.org/packages/ef/ec/4edbf17ac2c87fa0845dd366ef8d5852b96eb58fcd65fc1ecf5fe27b4641/ruamel.yaml.clib-0.2.14-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:a0cb71ccc6ef9ce36eecb6272c81afdc2f565950cdcec33ae8e6cd8f7fc86f27", size = 739639, upload-time = "2025-09-22T19:51:10.566Z" }, + { url = "https://files.pythonhosted.org/packages/15/18/b0e1fafe59051de9e79cdd431863b03593ecfa8341c110affad7c8121efc/ruamel.yaml.clib-0.2.14-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:e7cb9ad1d525d40f7d87b6df7c0ff916a66bc52cb61b66ac1b2a16d0c1b07640", size = 764456, upload-time = "2025-09-22T19:51:11.736Z" }, ] [[package]] @@ -3867,59 +4746,84 @@ wheels = [ [[package]] name = "ruff" -version = "0.11.13" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ed/da/9c6f995903b4d9474b39da91d2d626659af3ff1eeb43e9ae7c119349dba6/ruff-0.11.13.tar.gz", hash = "sha256:26fa247dc68d1d4e72c179e08889a25ac0c7ba4d78aecfc835d49cbfd60bf514", size = 4282054, upload-time = "2025-06-05T21:00:15.721Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7d/ce/a11d381192966e0b4290842cc8d4fac7dc9214ddf627c11c1afff87da29b/ruff-0.11.13-py3-none-linux_armv6l.whl", hash = "sha256:4bdfbf1240533f40042ec00c9e09a3aade6f8c10b6414cf11b519488d2635d46", size = 10292516, upload-time = "2025-06-05T20:59:32.944Z" }, - { url = "https://files.pythonhosted.org/packages/78/db/87c3b59b0d4e753e40b6a3b4a2642dfd1dcaefbff121ddc64d6c8b47ba00/ruff-0.11.13-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:aef9c9ed1b5ca28bb15c7eac83b8670cf3b20b478195bd49c8d756ba0a36cf48", size = 11106083, upload-time = "2025-06-05T20:59:37.03Z" }, - { url = "https://files.pythonhosted.org/packages/77/79/d8cec175856ff810a19825d09ce700265f905c643c69f45d2b737e4a470a/ruff-0.11.13-py3-none-macosx_11_0_arm64.whl", hash = "sha256:53b15a9dfdce029c842e9a5aebc3855e9ab7771395979ff85b7c1dedb53ddc2b", size = 10436024, upload-time = "2025-06-05T20:59:39.741Z" }, - { url = "https://files.pythonhosted.org/packages/8b/5b/f6d94f2980fa1ee854b41568368a2e1252681b9238ab2895e133d303538f/ruff-0.11.13-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ab153241400789138d13f362c43f7edecc0edfffce2afa6a68434000ecd8f69a", size = 10646324, upload-time = "2025-06-05T20:59:42.185Z" }, - { url = "https://files.pythonhosted.org/packages/6c/9c/b4c2acf24ea4426016d511dfdc787f4ce1ceb835f3c5fbdbcb32b1c63bda/ruff-0.11.13-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6c51f93029d54a910d3d24f7dd0bb909e31b6cd989a5e4ac513f4eb41629f0dc", size = 10174416, upload-time = "2025-06-05T20:59:44.319Z" }, - { url = "https://files.pythonhosted.org/packages/f3/10/e2e62f77c65ede8cd032c2ca39c41f48feabedb6e282bfd6073d81bb671d/ruff-0.11.13-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1808b3ed53e1a777c2ef733aca9051dc9bf7c99b26ece15cb59a0320fbdbd629", size = 11724197, upload-time = "2025-06-05T20:59:46.935Z" }, - { url = "https://files.pythonhosted.org/packages/bb/f0/466fe8469b85c561e081d798c45f8a1d21e0b4a5ef795a1d7f1a9a9ec182/ruff-0.11.13-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:d28ce58b5ecf0f43c1b71edffabe6ed7f245d5336b17805803312ec9bc665933", size = 12511615, upload-time = "2025-06-05T20:59:49.534Z" }, - { url = "https://files.pythonhosted.org/packages/17/0e/cefe778b46dbd0cbcb03a839946c8f80a06f7968eb298aa4d1a4293f3448/ruff-0.11.13-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:55e4bc3a77842da33c16d55b32c6cac1ec5fb0fbec9c8c513bdce76c4f922165", size = 12117080, upload-time = "2025-06-05T20:59:51.654Z" }, - { url = "https://files.pythonhosted.org/packages/5d/2c/caaeda564cbe103bed145ea557cb86795b18651b0f6b3ff6a10e84e5a33f/ruff-0.11.13-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:633bf2c6f35678c56ec73189ba6fa19ff1c5e4807a78bf60ef487b9dd272cc71", size = 11326315, upload-time = "2025-06-05T20:59:54.469Z" }, - { url = "https://files.pythonhosted.org/packages/75/f0/782e7d681d660eda8c536962920c41309e6dd4ebcea9a2714ed5127d44bd/ruff-0.11.13-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ffbc82d70424b275b089166310448051afdc6e914fdab90e08df66c43bb5ca9", size = 11555640, upload-time = "2025-06-05T20:59:56.986Z" }, - { url = "https://files.pythonhosted.org/packages/5d/d4/3d580c616316c7f07fb3c99dbecfe01fbaea7b6fd9a82b801e72e5de742a/ruff-0.11.13-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:4a9ddd3ec62a9a89578c85842b836e4ac832d4a2e0bfaad3b02243f930ceafcc", size = 10507364, upload-time = "2025-06-05T20:59:59.154Z" }, - { url = "https://files.pythonhosted.org/packages/5a/dc/195e6f17d7b3ea6b12dc4f3e9de575db7983db187c378d44606e5d503319/ruff-0.11.13-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:d237a496e0778d719efb05058c64d28b757c77824e04ffe8796c7436e26712b7", size = 10141462, upload-time = "2025-06-05T21:00:01.481Z" }, - { url = "https://files.pythonhosted.org/packages/f4/8e/39a094af6967faa57ecdeacb91bedfb232474ff8c3d20f16a5514e6b3534/ruff-0.11.13-py3-none-musllinux_1_2_i686.whl", hash = "sha256:26816a218ca6ef02142343fd24c70f7cd8c5aa6c203bca284407adf675984432", size = 11121028, upload-time = "2025-06-05T21:00:04.06Z" }, - { url = "https://files.pythonhosted.org/packages/5a/c0/b0b508193b0e8a1654ec683ebab18d309861f8bd64e3a2f9648b80d392cb/ruff-0.11.13-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:51c3f95abd9331dc5b87c47ac7f376db5616041173826dfd556cfe3d4977f492", size = 11602992, upload-time = "2025-06-05T21:00:06.249Z" }, - { url = "https://files.pythonhosted.org/packages/7c/91/263e33ab93ab09ca06ce4f8f8547a858cc198072f873ebc9be7466790bae/ruff-0.11.13-py3-none-win32.whl", hash = "sha256:96c27935418e4e8e77a26bb05962817f28b8ef3843a6c6cc49d8783b5507f250", size = 10474944, upload-time = "2025-06-05T21:00:08.459Z" }, - { url = "https://files.pythonhosted.org/packages/46/f4/7c27734ac2073aae8efb0119cae6931b6fb48017adf048fdf85c19337afc/ruff-0.11.13-py3-none-win_amd64.whl", hash = "sha256:29c3189895a8a6a657b7af4e97d330c8a3afd2c9c8f46c81e2fc5a31866517e3", size = 11548669, upload-time = "2025-06-05T21:00:11.147Z" }, - { url = "https://files.pythonhosted.org/packages/ec/bf/b273dd11673fed8a6bd46032c0ea2a04b2ac9bfa9c628756a5856ba113b0/ruff-0.11.13-py3-none-win_arm64.whl", hash = "sha256:b4385285e9179d608ff1d2fb9922062663c658605819a6876d8beef0c30b7f3b", size = 10683928, upload-time = "2025-06-05T21:00:13.758Z" }, +version = "0.13.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/02/df/8d7d8c515d33adfc540e2edf6c6021ea1c5a58a678d8cfce9fae59aabcab/ruff-0.13.2.tar.gz", hash = "sha256:cb12fffd32fb16d32cef4ed16d8c7cdc27ed7c944eaa98d99d01ab7ab0b710ff", size = 5416417, upload-time = "2025-09-25T14:54:09.936Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6e/84/5716a7fa4758e41bf70e603e13637c42cfb9dbf7ceb07180211b9bbf75ef/ruff-0.13.2-py3-none-linux_armv6l.whl", hash = "sha256:3796345842b55f033a78285e4f1641078f902020d8450cade03aad01bffd81c3", size = 12343254, upload-time = "2025-09-25T14:53:27.784Z" }, + { url = "https://files.pythonhosted.org/packages/9b/77/c7042582401bb9ac8eff25360e9335e901d7a1c0749a2b28ba4ecb239991/ruff-0.13.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:ff7e4dda12e683e9709ac89e2dd436abf31a4d8a8fc3d89656231ed808e231d2", size = 13040891, upload-time = "2025-09-25T14:53:31.38Z" }, + { url = "https://files.pythonhosted.org/packages/c6/15/125a7f76eb295cb34d19c6778e3a82ace33730ad4e6f28d3427e134a02e0/ruff-0.13.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:c75e9d2a2fafd1fdd895d0e7e24b44355984affdde1c412a6f6d3f6e16b22d46", size = 12243588, upload-time = "2025-09-25T14:53:33.543Z" }, + { url = "https://files.pythonhosted.org/packages/9e/eb/0093ae04a70f81f8be7fd7ed6456e926b65d238fc122311293d033fdf91e/ruff-0.13.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cceac74e7bbc53ed7d15d1042ffe7b6577bf294611ad90393bf9b2a0f0ec7cb6", size = 12491359, upload-time = "2025-09-25T14:53:35.892Z" }, + { url = "https://files.pythonhosted.org/packages/43/fe/72b525948a6956f07dad4a6f122336b6a05f2e3fd27471cea612349fedb9/ruff-0.13.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6ae3f469b5465ba6d9721383ae9d49310c19b452a161b57507764d7ef15f4b07", size = 12162486, upload-time = "2025-09-25T14:53:38.171Z" }, + { url = "https://files.pythonhosted.org/packages/6a/e3/0fac422bbbfb2ea838023e0d9fcf1f30183d83ab2482800e2cb892d02dfe/ruff-0.13.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f8f9e3cd6714358238cd6626b9d43026ed19c0c018376ac1ef3c3a04ffb42d8", size = 13871203, upload-time = "2025-09-25T14:53:41.943Z" }, + { url = "https://files.pythonhosted.org/packages/6b/82/b721c8e3ec5df6d83ba0e45dcf00892c4f98b325256c42c38ef136496cbf/ruff-0.13.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:c6ed79584a8f6cbe2e5d7dbacf7cc1ee29cbdb5df1172e77fbdadc8bb85a1f89", size = 14929635, upload-time = "2025-09-25T14:53:43.953Z" }, + { url = "https://files.pythonhosted.org/packages/c4/a0/ad56faf6daa507b83079a1ad7a11694b87d61e6bf01c66bd82b466f21821/ruff-0.13.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aed130b2fde049cea2019f55deb939103123cdd191105f97a0599a3e753d61b0", size = 14338783, upload-time = "2025-09-25T14:53:46.205Z" }, + { url = "https://files.pythonhosted.org/packages/47/77/ad1d9156db8f99cd01ee7e29d74b34050e8075a8438e589121fcd25c4b08/ruff-0.13.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1887c230c2c9d65ed1b4e4cfe4d255577ea28b718ae226c348ae68df958191aa", size = 13355322, upload-time = "2025-09-25T14:53:48.164Z" }, + { url = "https://files.pythonhosted.org/packages/64/8b/e87cfca2be6f8b9f41f0bb12dc48c6455e2d66df46fe61bb441a226f1089/ruff-0.13.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5bcb10276b69b3cfea3a102ca119ffe5c6ba3901e20e60cf9efb53fa417633c3", size = 13354427, upload-time = "2025-09-25T14:53:50.486Z" }, + { url = "https://files.pythonhosted.org/packages/7f/df/bf382f3fbead082a575edb860897287f42b1b3c694bafa16bc9904c11ed3/ruff-0.13.2-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:afa721017aa55a555b2ff7944816587f1cb813c2c0a882d158f59b832da1660d", size = 13537637, upload-time = "2025-09-25T14:53:52.887Z" }, + { url = "https://files.pythonhosted.org/packages/51/70/1fb7a7c8a6fc8bd15636288a46e209e81913b87988f26e1913d0851e54f4/ruff-0.13.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:1dbc875cf3720c64b3990fef8939334e74cb0ca65b8dbc61d1f439201a38101b", size = 12340025, upload-time = "2025-09-25T14:53:54.88Z" }, + { url = "https://files.pythonhosted.org/packages/4c/27/1e5b3f1c23ca5dd4106d9d580e5c13d9acb70288bff614b3d7b638378cc9/ruff-0.13.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:5b939a1b2a960e9742e9a347e5bbc9b3c3d2c716f86c6ae273d9cbd64f193f22", size = 12133449, upload-time = "2025-09-25T14:53:57.089Z" }, + { url = "https://files.pythonhosted.org/packages/2d/09/b92a5ccee289f11ab128df57d5911224197d8d55ef3bd2043534ff72ca54/ruff-0.13.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:50e2d52acb8de3804fc5f6e2fa3ae9bdc6812410a9e46837e673ad1f90a18736", size = 13051369, upload-time = "2025-09-25T14:53:59.124Z" }, + { url = "https://files.pythonhosted.org/packages/89/99/26c9d1c7d8150f45e346dc045cc49f23e961efceb4a70c47dea0960dea9a/ruff-0.13.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:3196bc13ab2110c176b9a4ae5ff7ab676faaa1964b330a1383ba20e1e19645f2", size = 13523644, upload-time = "2025-09-25T14:54:01.622Z" }, + { url = "https://files.pythonhosted.org/packages/f7/00/e7f1501e81e8ec290e79527827af1d88f541d8d26151751b46108978dade/ruff-0.13.2-py3-none-win32.whl", hash = "sha256:7c2a0b7c1e87795fec3404a485096bcd790216c7c146a922d121d8b9c8f1aaac", size = 12245990, upload-time = "2025-09-25T14:54:03.647Z" }, + { url = "https://files.pythonhosted.org/packages/ee/bd/d9f33a73de84fafd0146c6fba4f497c4565fe8fa8b46874b8e438869abc2/ruff-0.13.2-py3-none-win_amd64.whl", hash = "sha256:17d95fb32218357c89355f6f6f9a804133e404fc1f65694372e02a557edf8585", size = 13324004, upload-time = "2025-09-25T14:54:06.05Z" }, + { url = "https://files.pythonhosted.org/packages/c3/12/28fa2f597a605884deb0f65c1b1ae05111051b2a7030f5d8a4ff7f4599ba/ruff-0.13.2-py3-none-win_arm64.whl", hash = "sha256:da711b14c530412c827219312b7d7fbb4877fb31150083add7e8c5336549cea7", size = 12484437, upload-time = "2025-09-25T14:54:08.022Z" }, ] [[package]] name = "scikit-learn" -version = "1.2.0" +version = "1.7.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "joblib" }, { name = "numpy" }, - { name = "scipy" }, + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "scipy", version = "1.16.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "threadpoolctl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/27/a0/95eae31ceabeb7710a694367816edfcc0ccb001c794c14b3b234c148ae50/scikit-learn-1.2.0.tar.gz", hash = "sha256:680b65b3caee469541385d2ca5b03ff70408f6c618c583948312f0d2125df680", size = 7208996, upload-time = "2022-12-08T14:12:26.381Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/49/2c/7baa1b58d0987b1c7559250d87ed072d4b883193a36333a3b722b5f11344/scikit_learn-1.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1beaa631434d1f17a20b1eef5d842e58c195875d2bc11901a1a70b5fe544745b", size = 9049536, upload-time = "2022-12-08T14:11:25.67Z" }, - { url = "https://files.pythonhosted.org/packages/6a/b1/bbedcbdae2c3f67b9b14af02178996e1305cf3d064fcd32d145394d17a3b/scikit_learn-1.2.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:d395730f26d8fc752321f1953ddf72647c892d8bed74fad4d7c816ec9b602dfa", size = 8338604, upload-time = "2022-12-08T14:11:29.994Z" }, - { url = "https://files.pythonhosted.org/packages/60/cf/d516a5aa2b35b6540693990452d366beec8001f37bd621c997631477c66b/scikit_learn-1.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd3480c982b9e616b9f76ad8587804d3f4e91b4e2a6752e7dafb8a2e1f541098", size = 9076072, upload-time = "2022-12-08T14:11:33.368Z" }, - { url = "https://files.pythonhosted.org/packages/ef/bb/b625922655b063f2c2cba49b8268dac332b78b9fa7738b9e59b04909d069/scikit_learn-1.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:184a42842a4e698ffa4d849b6019de50a77a0aa24d26afa28fa49c9190bb144b", size = 9523824, upload-time = "2022-12-08T14:11:36.972Z" }, - { url = "https://files.pythonhosted.org/packages/fb/bc/affe1a47dc4e29f734959a53be8ae910acb627b757403f52d9c5cc2c22e4/scikit_learn-1.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:867023a044fdfe59e5014a7fec7a3086a8928f10b5dce9382eedf4135f6709a2", size = 8240105, upload-time = "2022-12-08T14:11:40.446Z" }, - { url = "https://files.pythonhosted.org/packages/08/b4/c122c0e7225e438ff64867e5c9eb8ec246dcd2bfe5435a9a2adb3f7e160e/scikit_learn-1.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5546a8894a0616e92489ef995b39a0715829f3df96e801bb55cbf196be0d9649", size = 8951603, upload-time = "2022-12-08T14:11:43.015Z" }, - { url = "https://files.pythonhosted.org/packages/b0/73/8992b6647ca8753dbe194c3582423cd965e731e2828c3edc8de5fd64ebe6/scikit_learn-1.2.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:bc7073e025b62c1067cbfb76e69d08650c6b9d7a0e7afdfa20cb92d4afe516f6", size = 8263329, upload-time = "2022-12-08T14:11:45.667Z" }, - { url = "https://files.pythonhosted.org/packages/f0/1d/07b66497eb3797091944f1340698465ca4bd1a75a5a19b6bc6c865c8f40b/scikit_learn-1.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc0a72237f0c56780cf550df87201a702d3bdcbbb23c6ef7d54c19326fa23f19", size = 9051383, upload-time = "2022-12-08T14:11:49.028Z" }, - { url = "https://files.pythonhosted.org/packages/b4/56/4282c0f73a49009f30b8c60b348c71b136036f608320cfba9ea744214f71/scikit_learn-1.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e1ea0bc1706da45589bcf2490cde6276490a1b88f9af208dbb396fdc3a0babf", size = 9451431, upload-time = "2022-12-08T14:11:52.288Z" }, - { url = "https://files.pythonhosted.org/packages/b9/86/62738531b1db41defda03c8d065ec9f6282ec96b82309cba7715e0e263ce/scikit_learn-1.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:f17420a8e3f40129aeb7e0f5ee35822d6178617007bb8f69521a2cefc20d5f00", size = 8192711, upload-time = "2022-12-08T14:11:54.865Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/98/c2/a7855e41c9d285dfe86dc50b250978105dce513d6e459ea66a6aeb0e1e0c/scikit_learn-1.7.2.tar.gz", hash = "sha256:20e9e49ecd130598f1ca38a1d85090e1a600147b9c02fa6f15d69cb53d968fda", size = 7193136, upload-time = "2025-09-09T08:21:29.075Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ba/3e/daed796fd69cce768b8788401cc464ea90b306fb196ae1ffed0b98182859/scikit_learn-1.7.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b33579c10a3081d076ab403df4a4190da4f4432d443521674637677dc91e61f", size = 9336221, upload-time = "2025-09-09T08:20:19.328Z" }, + { url = "https://files.pythonhosted.org/packages/1c/ce/af9d99533b24c55ff4e18d9b7b4d9919bbc6cd8f22fe7a7be01519a347d5/scikit_learn-1.7.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:36749fb62b3d961b1ce4fedf08fa57a1986cd409eff2d783bca5d4b9b5fce51c", size = 8653834, upload-time = "2025-09-09T08:20:22.073Z" }, + { url = "https://files.pythonhosted.org/packages/58/0e/8c2a03d518fb6bd0b6b0d4b114c63d5f1db01ff0f9925d8eb10960d01c01/scikit_learn-1.7.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7a58814265dfc52b3295b1900cfb5701589d30a8bb026c7540f1e9d3499d5ec8", size = 9660938, upload-time = "2025-09-09T08:20:24.327Z" }, + { url = "https://files.pythonhosted.org/packages/2b/75/4311605069b5d220e7cf5adabb38535bd96f0079313cdbb04b291479b22a/scikit_learn-1.7.2-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4a847fea807e278f821a0406ca01e387f97653e284ecbd9750e3ee7c90347f18", size = 9477818, upload-time = "2025-09-09T08:20:26.845Z" }, + { url = "https://files.pythonhosted.org/packages/7f/9b/87961813c34adbca21a6b3f6b2bea344c43b30217a6d24cc437c6147f3e8/scikit_learn-1.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:ca250e6836d10e6f402436d6463d6c0e4d8e0234cfb6a9a47835bd392b852ce5", size = 8886969, upload-time = "2025-09-09T08:20:29.329Z" }, + { url = "https://files.pythonhosted.org/packages/43/83/564e141eef908a5863a54da8ca342a137f45a0bfb71d1d79704c9894c9d1/scikit_learn-1.7.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7509693451651cd7361d30ce4e86a1347493554f172b1c72a39300fa2aea79e", size = 9331967, upload-time = "2025-09-09T08:20:32.421Z" }, + { url = "https://files.pythonhosted.org/packages/18/d6/ba863a4171ac9d7314c4d3fc251f015704a2caeee41ced89f321c049ed83/scikit_learn-1.7.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:0486c8f827c2e7b64837c731c8feff72c0bd2b998067a8a9cbc10643c31f0fe1", size = 8648645, upload-time = "2025-09-09T08:20:34.436Z" }, + { url = "https://files.pythonhosted.org/packages/ef/0e/97dbca66347b8cf0ea8b529e6bb9367e337ba2e8be0ef5c1a545232abfde/scikit_learn-1.7.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:89877e19a80c7b11a2891a27c21c4894fb18e2c2e077815bcade10d34287b20d", size = 9715424, upload-time = "2025-09-09T08:20:36.776Z" }, + { url = "https://files.pythonhosted.org/packages/f7/32/1f3b22e3207e1d2c883a7e09abb956362e7d1bd2f14458c7de258a26ac15/scikit_learn-1.7.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8da8bf89d4d79aaec192d2bda62f9b56ae4e5b4ef93b6a56b5de4977e375c1f1", size = 9509234, upload-time = "2025-09-09T08:20:38.957Z" }, + { url = "https://files.pythonhosted.org/packages/9f/71/34ddbd21f1da67c7a768146968b4d0220ee6831e4bcbad3e03dd3eae88b6/scikit_learn-1.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:9b7ed8d58725030568523e937c43e56bc01cadb478fc43c042a9aca1dacb3ba1", size = 8894244, upload-time = "2025-09-09T08:20:41.166Z" }, + { url = "https://files.pythonhosted.org/packages/a7/aa/3996e2196075689afb9fce0410ebdb4a09099d7964d061d7213700204409/scikit_learn-1.7.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8d91a97fa2b706943822398ab943cde71858a50245e31bc71dba62aab1d60a96", size = 9259818, upload-time = "2025-09-09T08:20:43.19Z" }, + { url = "https://files.pythonhosted.org/packages/43/5d/779320063e88af9c4a7c2cf463ff11c21ac9c8bd730c4a294b0000b666c9/scikit_learn-1.7.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:acbc0f5fd2edd3432a22c69bed78e837c70cf896cd7993d71d51ba6708507476", size = 8636997, upload-time = "2025-09-09T08:20:45.468Z" }, + { url = "https://files.pythonhosted.org/packages/5c/d0/0c577d9325b05594fdd33aa970bf53fb673f051a45496842caee13cfd7fe/scikit_learn-1.7.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e5bf3d930aee75a65478df91ac1225ff89cd28e9ac7bd1196853a9229b6adb0b", size = 9478381, upload-time = "2025-09-09T08:20:47.982Z" }, + { url = "https://files.pythonhosted.org/packages/82/70/8bf44b933837ba8494ca0fc9a9ab60f1c13b062ad0197f60a56e2fc4c43e/scikit_learn-1.7.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b4d6e9deed1a47aca9fe2f267ab8e8fe82ee20b4526b2c0cd9e135cea10feb44", size = 9300296, upload-time = "2025-09-09T08:20:50.366Z" }, + { url = "https://files.pythonhosted.org/packages/c6/99/ed35197a158f1fdc2fe7c3680e9c70d0128f662e1fee4ed495f4b5e13db0/scikit_learn-1.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:6088aa475f0785e01bcf8529f55280a3d7d298679f50c0bb70a2364a82d0b290", size = 8731256, upload-time = "2025-09-09T08:20:52.627Z" }, + { url = "https://files.pythonhosted.org/packages/ae/93/a3038cb0293037fd335f77f31fe053b89c72f17b1c8908c576c29d953e84/scikit_learn-1.7.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0b7dacaa05e5d76759fb071558a8b5130f4845166d88654a0f9bdf3eb57851b7", size = 9212382, upload-time = "2025-09-09T08:20:54.731Z" }, + { url = "https://files.pythonhosted.org/packages/40/dd/9a88879b0c1104259136146e4742026b52df8540c39fec21a6383f8292c7/scikit_learn-1.7.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:abebbd61ad9e1deed54cca45caea8ad5f79e1b93173dece40bb8e0c658dbe6fe", size = 8592042, upload-time = "2025-09-09T08:20:57.313Z" }, + { url = "https://files.pythonhosted.org/packages/46/af/c5e286471b7d10871b811b72ae794ac5fe2989c0a2df07f0ec723030f5f5/scikit_learn-1.7.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:502c18e39849c0ea1a5d681af1dbcf15f6cce601aebb657aabbfe84133c1907f", size = 9434180, upload-time = "2025-09-09T08:20:59.671Z" }, + { url = "https://files.pythonhosted.org/packages/f1/fd/df59faa53312d585023b2da27e866524ffb8faf87a68516c23896c718320/scikit_learn-1.7.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7a4c328a71785382fe3fe676a9ecf2c86189249beff90bf85e22bdb7efaf9ae0", size = 9283660, upload-time = "2025-09-09T08:21:01.71Z" }, + { url = "https://files.pythonhosted.org/packages/a7/c7/03000262759d7b6f38c836ff9d512f438a70d8a8ddae68ee80de72dcfb63/scikit_learn-1.7.2-cp313-cp313-win_amd64.whl", hash = "sha256:63a9afd6f7b229aad94618c01c252ce9e6fa97918c5ca19c9a17a087d819440c", size = 8702057, upload-time = "2025-09-09T08:21:04.234Z" }, + { url = "https://files.pythonhosted.org/packages/55/87/ef5eb1f267084532c8e4aef98a28b6ffe7425acbfd64b5e2f2e066bc29b3/scikit_learn-1.7.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:9acb6c5e867447b4e1390930e3944a005e2cb115922e693c08a323421a6966e8", size = 9558731, upload-time = "2025-09-09T08:21:06.381Z" }, + { url = "https://files.pythonhosted.org/packages/93/f8/6c1e3fc14b10118068d7938878a9f3f4e6d7b74a8ddb1e5bed65159ccda8/scikit_learn-1.7.2-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:2a41e2a0ef45063e654152ec9d8bcfc39f7afce35b08902bfe290c2498a67a6a", size = 9038852, upload-time = "2025-09-09T08:21:08.628Z" }, + { url = "https://files.pythonhosted.org/packages/83/87/066cafc896ee540c34becf95d30375fe5cbe93c3b75a0ee9aa852cd60021/scikit_learn-1.7.2-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:98335fb98509b73385b3ab2bd0639b1f610541d3988ee675c670371d6a87aa7c", size = 9527094, upload-time = "2025-09-09T08:21:11.486Z" }, + { url = "https://files.pythonhosted.org/packages/9c/2b/4903e1ccafa1f6453b1ab78413938c8800633988c838aa0be386cbb33072/scikit_learn-1.7.2-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:191e5550980d45449126e23ed1d5e9e24b2c68329ee1f691a3987476e115e09c", size = 9367436, upload-time = "2025-09-09T08:21:13.602Z" }, + { url = "https://files.pythonhosted.org/packages/b5/aa/8444be3cfb10451617ff9d177b3c190288f4563e6c50ff02728be67ad094/scikit_learn-1.7.2-cp313-cp313t-win_amd64.whl", hash = "sha256:57dc4deb1d3762c75d685507fbd0bc17160144b2f2ba4ccea5dc285ab0d0e973", size = 9275749, upload-time = "2025-09-09T08:21:15.96Z" }, + { url = "https://files.pythonhosted.org/packages/d9/82/dee5acf66837852e8e68df6d8d3a6cb22d3df997b733b032f513d95205b7/scikit_learn-1.7.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fa8f63940e29c82d1e67a45d5297bdebbcb585f5a5a50c4914cc2e852ab77f33", size = 9208906, upload-time = "2025-09-09T08:21:18.557Z" }, + { url = "https://files.pythonhosted.org/packages/3c/30/9029e54e17b87cb7d50d51a5926429c683d5b4c1732f0507a6c3bed9bf65/scikit_learn-1.7.2-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:f95dc55b7902b91331fa4e5845dd5bde0580c9cd9612b1b2791b7e80c3d32615", size = 8627836, upload-time = "2025-09-09T08:21:20.695Z" }, + { url = "https://files.pythonhosted.org/packages/60/18/4a52c635c71b536879f4b971c2cedf32c35ee78f48367885ed8025d1f7ee/scikit_learn-1.7.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9656e4a53e54578ad10a434dc1f993330568cfee176dff07112b8785fb413106", size = 9426236, upload-time = "2025-09-09T08:21:22.645Z" }, + { url = "https://files.pythonhosted.org/packages/99/7e/290362f6ab582128c53445458a5befd471ed1ea37953d5bcf80604619250/scikit_learn-1.7.2-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:96dc05a854add0e50d3f47a1ef21a10a595016da5b007c7d9cd9d0bffd1fcc61", size = 9312593, upload-time = "2025-09-09T08:21:24.65Z" }, + { url = "https://files.pythonhosted.org/packages/8e/87/24f541b6d62b1794939ae6422f8023703bbf6900378b2b34e0b4384dfefd/scikit_learn-1.7.2-cp314-cp314-win_amd64.whl", hash = "sha256:bb24510ed3f9f61476181e4db51ce801e2ba37541def12dc9333b946fc7a9cf8", size = 8820007, upload-time = "2025-09-09T08:21:26.713Z" }, ] [[package]] name = "scipy" version = "1.15.3" source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11'", +] dependencies = [ - { name = "numpy" }, + { name = "numpy", marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/0f/37/6964b830433e654ec7485e45a00fc9a27cf868d622838f6b6d9c5ec0d532/scipy-1.15.3.tar.gz", hash = "sha256:eae3cf522bc7df64b42cad3925c876e1b0b6c35c1337c93e12c0f366f55b0eaf", size = 59419214, upload-time = "2025-05-08T16:13:05.955Z" } wheels = [ @@ -3970,6 +4874,82 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/81/06/0a5e5349474e1cbc5757975b21bd4fad0e72ebf138c5592f191646154e06/scipy-1.15.3-cp313-cp313t-win_amd64.whl", hash = "sha256:76ad1fb5f8752eabf0fa02e4cc0336b4e8f021e2d5f061ed37d6d264db35e3ca", size = 40308097, upload-time = "2025-05-08T16:08:27.627Z" }, ] +[[package]] +name = "scipy" +version = "1.16.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14'", + "python_full_version >= '3.12' and python_full_version < '3.14'", + "python_full_version == '3.11.*'", +] +dependencies = [ + { name = "numpy", marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4c/3b/546a6f0bfe791bbb7f8d591613454d15097e53f906308ec6f7c1ce588e8e/scipy-1.16.2.tar.gz", hash = "sha256:af029b153d243a80afb6eabe40b0a07f8e35c9adc269c019f364ad747f826a6b", size = 30580599, upload-time = "2025-09-11T17:48:08.271Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/ef/37ed4b213d64b48422df92560af7300e10fe30b5d665dd79932baebee0c6/scipy-1.16.2-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:6ab88ea43a57da1af33292ebd04b417e8e2eaf9d5aa05700be8d6e1b6501cd92", size = 36619956, upload-time = "2025-09-11T17:39:20.5Z" }, + { url = "https://files.pythonhosted.org/packages/85/ab/5c2eba89b9416961a982346a4d6a647d78c91ec96ab94ed522b3b6baf444/scipy-1.16.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:c95e96c7305c96ede73a7389f46ccd6c659c4da5ef1b2789466baeaed3622b6e", size = 28931117, upload-time = "2025-09-11T17:39:29.06Z" }, + { url = "https://files.pythonhosted.org/packages/80/d1/eed51ab64d227fe60229a2d57fb60ca5898cfa50ba27d4f573e9e5f0b430/scipy-1.16.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:87eb178db04ece7c698220d523c170125dbffebb7af0345e66c3554f6f60c173", size = 20921997, upload-time = "2025-09-11T17:39:34.892Z" }, + { url = "https://files.pythonhosted.org/packages/be/7c/33ea3e23bbadde96726edba6bf9111fb1969d14d9d477ffa202c67bec9da/scipy-1.16.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:4e409eac067dcee96a57fbcf424c13f428037827ec7ee3cb671ff525ca4fc34d", size = 23523374, upload-time = "2025-09-11T17:39:40.846Z" }, + { url = "https://files.pythonhosted.org/packages/96/0b/7399dc96e1e3f9a05e258c98d716196a34f528eef2ec55aad651ed136d03/scipy-1.16.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e574be127bb760f0dad24ff6e217c80213d153058372362ccb9555a10fc5e8d2", size = 33583702, upload-time = "2025-09-11T17:39:49.011Z" }, + { url = "https://files.pythonhosted.org/packages/1a/bc/a5c75095089b96ea72c1bd37a4497c24b581ec73db4ef58ebee142ad2d14/scipy-1.16.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f5db5ba6188d698ba7abab982ad6973265b74bb40a1efe1821b58c87f73892b9", size = 35883427, upload-time = "2025-09-11T17:39:57.406Z" }, + { url = "https://files.pythonhosted.org/packages/ab/66/e25705ca3d2b87b97fe0a278a24b7f477b4023a926847935a1a71488a6a6/scipy-1.16.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ec6e74c4e884104ae006d34110677bfe0098203a3fec2f3faf349f4cb05165e3", size = 36212940, upload-time = "2025-09-11T17:40:06.013Z" }, + { url = "https://files.pythonhosted.org/packages/d6/fd/0bb911585e12f3abdd603d721d83fc1c7492835e1401a0e6d498d7822b4b/scipy-1.16.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:912f46667d2d3834bc3d57361f854226475f695eb08c08a904aadb1c936b6a88", size = 38865092, upload-time = "2025-09-11T17:40:15.143Z" }, + { url = "https://files.pythonhosted.org/packages/d6/73/c449a7d56ba6e6f874183759f8483cde21f900a8be117d67ffbb670c2958/scipy-1.16.2-cp311-cp311-win_amd64.whl", hash = "sha256:91e9e8a37befa5a69e9cacbe0bcb79ae5afb4a0b130fd6db6ee6cc0d491695fa", size = 38687626, upload-time = "2025-09-11T17:40:24.041Z" }, + { url = "https://files.pythonhosted.org/packages/68/72/02f37316adf95307f5d9e579023c6899f89ff3a051fa079dbd6faafc48e5/scipy-1.16.2-cp311-cp311-win_arm64.whl", hash = "sha256:f3bf75a6dcecab62afde4d1f973f1692be013110cad5338007927db8da73249c", size = 25503506, upload-time = "2025-09-11T17:40:30.703Z" }, + { url = "https://files.pythonhosted.org/packages/b7/8d/6396e00db1282279a4ddd507c5f5e11f606812b608ee58517ce8abbf883f/scipy-1.16.2-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:89d6c100fa5c48472047632e06f0876b3c4931aac1f4291afc81a3644316bb0d", size = 36646259, upload-time = "2025-09-11T17:40:39.329Z" }, + { url = "https://files.pythonhosted.org/packages/3b/93/ea9edd7e193fceb8eef149804491890bde73fb169c896b61aa3e2d1e4e77/scipy-1.16.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:ca748936cd579d3f01928b30a17dc474550b01272d8046e3e1ee593f23620371", size = 28888976, upload-time = "2025-09-11T17:40:46.82Z" }, + { url = "https://files.pythonhosted.org/packages/91/4d/281fddc3d80fd738ba86fd3aed9202331180b01e2c78eaae0642f22f7e83/scipy-1.16.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:fac4f8ce2ddb40e2e3d0f7ec36d2a1e7f92559a2471e59aec37bd8d9de01fec0", size = 20879905, upload-time = "2025-09-11T17:40:52.545Z" }, + { url = "https://files.pythonhosted.org/packages/69/40/b33b74c84606fd301b2915f0062e45733c6ff5708d121dd0deaa8871e2d0/scipy-1.16.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:033570f1dcefd79547a88e18bccacff025c8c647a330381064f561d43b821232", size = 23553066, upload-time = "2025-09-11T17:40:59.014Z" }, + { url = "https://files.pythonhosted.org/packages/55/a7/22c739e2f21a42cc8f16bc76b47cff4ed54fbe0962832c589591c2abec34/scipy-1.16.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ea3421209bf00c8a5ef2227de496601087d8f638a2363ee09af059bd70976dc1", size = 33336407, upload-time = "2025-09-11T17:41:06.796Z" }, + { url = "https://files.pythonhosted.org/packages/53/11/a0160990b82999b45874dc60c0c183d3a3a969a563fffc476d5a9995c407/scipy-1.16.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f66bd07ba6f84cd4a380b41d1bf3c59ea488b590a2ff96744845163309ee8e2f", size = 35673281, upload-time = "2025-09-11T17:41:15.055Z" }, + { url = "https://files.pythonhosted.org/packages/96/53/7ef48a4cfcf243c3d0f1643f5887c81f29fdf76911c4e49331828e19fc0a/scipy-1.16.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5e9feab931bd2aea4a23388c962df6468af3d808ddf2d40f94a81c5dc38f32ef", size = 36004222, upload-time = "2025-09-11T17:41:23.868Z" }, + { url = "https://files.pythonhosted.org/packages/49/7f/71a69e0afd460049d41c65c630c919c537815277dfea214031005f474d78/scipy-1.16.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:03dfc75e52f72cf23ec2ced468645321407faad8f0fe7b1f5b49264adbc29cb1", size = 38664586, upload-time = "2025-09-11T17:41:31.021Z" }, + { url = "https://files.pythonhosted.org/packages/34/95/20e02ca66fb495a95fba0642fd48e0c390d0ece9b9b14c6e931a60a12dea/scipy-1.16.2-cp312-cp312-win_amd64.whl", hash = "sha256:0ce54e07bbb394b417457409a64fd015be623f36e330ac49306433ffe04bc97e", size = 38550641, upload-time = "2025-09-11T17:41:36.61Z" }, + { url = "https://files.pythonhosted.org/packages/92/ad/13646b9beb0a95528ca46d52b7babafbe115017814a611f2065ee4e61d20/scipy-1.16.2-cp312-cp312-win_arm64.whl", hash = "sha256:2a8ffaa4ac0df81a0b94577b18ee079f13fecdb924df3328fc44a7dc5ac46851", size = 25456070, upload-time = "2025-09-11T17:41:41.3Z" }, + { url = "https://files.pythonhosted.org/packages/c1/27/c5b52f1ee81727a9fc457f5ac1e9bf3d6eab311805ea615c83c27ba06400/scipy-1.16.2-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:84f7bf944b43e20b8a894f5fe593976926744f6c185bacfcbdfbb62736b5cc70", size = 36604856, upload-time = "2025-09-11T17:41:47.695Z" }, + { url = "https://files.pythonhosted.org/packages/32/a9/15c20d08e950b540184caa8ced675ba1128accb0e09c653780ba023a4110/scipy-1.16.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:5c39026d12edc826a1ef2ad35ad1e6d7f087f934bb868fc43fa3049c8b8508f9", size = 28864626, upload-time = "2025-09-11T17:41:52.642Z" }, + { url = "https://files.pythonhosted.org/packages/4c/fc/ea36098df653cca26062a627c1a94b0de659e97127c8491e18713ca0e3b9/scipy-1.16.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:e52729ffd45b68777c5319560014d6fd251294200625d9d70fd8626516fc49f5", size = 20855689, upload-time = "2025-09-11T17:41:57.886Z" }, + { url = "https://files.pythonhosted.org/packages/dc/6f/d0b53be55727f3e6d7c72687ec18ea6d0047cf95f1f77488b99a2bafaee1/scipy-1.16.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:024dd4a118cccec09ca3209b7e8e614931a6ffb804b2a601839499cb88bdf925", size = 23512151, upload-time = "2025-09-11T17:42:02.303Z" }, + { url = "https://files.pythonhosted.org/packages/11/85/bf7dab56e5c4b1d3d8eef92ca8ede788418ad38a7dc3ff50262f00808760/scipy-1.16.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7a5dc7ee9c33019973a470556081b0fd3c9f4c44019191039f9769183141a4d9", size = 33329824, upload-time = "2025-09-11T17:42:07.549Z" }, + { url = "https://files.pythonhosted.org/packages/da/6a/1a927b14ddc7714111ea51f4e568203b2bb6ed59bdd036d62127c1a360c8/scipy-1.16.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c2275ff105e508942f99d4e3bc56b6ef5e4b3c0af970386ca56b777608ce95b7", size = 35681881, upload-time = "2025-09-11T17:42:13.255Z" }, + { url = "https://files.pythonhosted.org/packages/c1/5f/331148ea5780b4fcc7007a4a6a6ee0a0c1507a796365cc642d4d226e1c3a/scipy-1.16.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:af80196eaa84f033e48444d2e0786ec47d328ba00c71e4299b602235ffef9acb", size = 36006219, upload-time = "2025-09-11T17:42:18.765Z" }, + { url = "https://files.pythonhosted.org/packages/46/3a/e991aa9d2aec723b4a8dcfbfc8365edec5d5e5f9f133888067f1cbb7dfc1/scipy-1.16.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9fb1eb735fe3d6ed1f89918224e3385fbf6f9e23757cacc35f9c78d3b712dd6e", size = 38682147, upload-time = "2025-09-11T17:42:25.177Z" }, + { url = "https://files.pythonhosted.org/packages/a1/57/0f38e396ad19e41b4c5db66130167eef8ee620a49bc7d0512e3bb67e0cab/scipy-1.16.2-cp313-cp313-win_amd64.whl", hash = "sha256:fda714cf45ba43c9d3bae8f2585c777f64e3f89a2e073b668b32ede412d8f52c", size = 38520766, upload-time = "2025-09-11T17:43:25.342Z" }, + { url = "https://files.pythonhosted.org/packages/1b/a5/85d3e867b6822d331e26c862a91375bb7746a0b458db5effa093d34cdb89/scipy-1.16.2-cp313-cp313-win_arm64.whl", hash = "sha256:2f5350da923ccfd0b00e07c3e5cfb316c1c0d6c1d864c07a72d092e9f20db104", size = 25451169, upload-time = "2025-09-11T17:43:30.198Z" }, + { url = "https://files.pythonhosted.org/packages/09/d9/60679189bcebda55992d1a45498de6d080dcaf21ce0c8f24f888117e0c2d/scipy-1.16.2-cp313-cp313t-macosx_10_14_x86_64.whl", hash = "sha256:53d8d2ee29b925344c13bda64ab51785f016b1b9617849dac10897f0701b20c1", size = 37012682, upload-time = "2025-09-11T17:42:30.677Z" }, + { url = "https://files.pythonhosted.org/packages/83/be/a99d13ee4d3b7887a96f8c71361b9659ba4ef34da0338f14891e102a127f/scipy-1.16.2-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:9e05e33657efb4c6a9d23bd8300101536abd99c85cca82da0bffff8d8764d08a", size = 29389926, upload-time = "2025-09-11T17:42:35.845Z" }, + { url = "https://files.pythonhosted.org/packages/bf/0a/130164a4881cec6ca8c00faf3b57926f28ed429cd6001a673f83c7c2a579/scipy-1.16.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:7fe65b36036357003b3ef9d37547abeefaa353b237e989c21027b8ed62b12d4f", size = 21381152, upload-time = "2025-09-11T17:42:40.07Z" }, + { url = "https://files.pythonhosted.org/packages/47/a6/503ffb0310ae77fba874e10cddfc4a1280bdcca1d13c3751b8c3c2996cf8/scipy-1.16.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:6406d2ac6d40b861cccf57f49592f9779071655e9f75cd4f977fa0bdd09cb2e4", size = 23914410, upload-time = "2025-09-11T17:42:44.313Z" }, + { url = "https://files.pythonhosted.org/packages/fa/c7/1147774bcea50d00c02600aadaa919facbd8537997a62496270133536ed6/scipy-1.16.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ff4dc42bd321991fbf611c23fc35912d690f731c9914bf3af8f417e64aca0f21", size = 33481880, upload-time = "2025-09-11T17:42:49.325Z" }, + { url = "https://files.pythonhosted.org/packages/6a/74/99d5415e4c3e46b2586f30cdbecb95e101c7192628a484a40dd0d163811a/scipy-1.16.2-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:654324826654d4d9133e10675325708fb954bc84dae6e9ad0a52e75c6b1a01d7", size = 35791425, upload-time = "2025-09-11T17:42:54.711Z" }, + { url = "https://files.pythonhosted.org/packages/1b/ee/a6559de7c1cc710e938c0355d9d4fbcd732dac4d0d131959d1f3b63eb29c/scipy-1.16.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:63870a84cd15c44e65220eaed2dac0e8f8b26bbb991456a033c1d9abfe8a94f8", size = 36178622, upload-time = "2025-09-11T17:43:00.375Z" }, + { url = "https://files.pythonhosted.org/packages/4e/7b/f127a5795d5ba8ece4e0dce7d4a9fb7cb9e4f4757137757d7a69ab7d4f1a/scipy-1.16.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:fa01f0f6a3050fa6a9771a95d5faccc8e2f5a92b4a2e5440a0fa7264a2398472", size = 38783985, upload-time = "2025-09-11T17:43:06.661Z" }, + { url = "https://files.pythonhosted.org/packages/3e/9f/bc81c1d1e033951eb5912cd3750cc005943afa3e65a725d2443a3b3c4347/scipy-1.16.2-cp313-cp313t-win_amd64.whl", hash = "sha256:116296e89fba96f76353a8579820c2512f6e55835d3fad7780fece04367de351", size = 38631367, upload-time = "2025-09-11T17:43:14.44Z" }, + { url = "https://files.pythonhosted.org/packages/d6/5e/2cc7555fd81d01814271412a1d59a289d25f8b63208a0a16c21069d55d3e/scipy-1.16.2-cp313-cp313t-win_arm64.whl", hash = "sha256:98e22834650be81d42982360382b43b17f7ba95e0e6993e2a4f5b9ad9283a94d", size = 25787992, upload-time = "2025-09-11T17:43:19.745Z" }, + { url = "https://files.pythonhosted.org/packages/8b/ac/ad8951250516db71619f0bd3b2eb2448db04b720a003dd98619b78b692c0/scipy-1.16.2-cp314-cp314-macosx_10_14_x86_64.whl", hash = "sha256:567e77755019bb7461513c87f02bb73fb65b11f049aaaa8ca17cfaa5a5c45d77", size = 36595109, upload-time = "2025-09-11T17:43:35.713Z" }, + { url = "https://files.pythonhosted.org/packages/ff/f6/5779049ed119c5b503b0f3dc6d6f3f68eefc3a9190d4ad4c276f854f051b/scipy-1.16.2-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:17d9bb346194e8967296621208fcdfd39b55498ef7d2f376884d5ac47cec1a70", size = 28859110, upload-time = "2025-09-11T17:43:40.814Z" }, + { url = "https://files.pythonhosted.org/packages/82/09/9986e410ae38bf0a0c737ff8189ac81a93b8e42349aac009891c054403d7/scipy-1.16.2-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:0a17541827a9b78b777d33b623a6dcfe2ef4a25806204d08ead0768f4e529a88", size = 20850110, upload-time = "2025-09-11T17:43:44.981Z" }, + { url = "https://files.pythonhosted.org/packages/0d/ad/485cdef2d9215e2a7df6d61b81d2ac073dfacf6ae24b9ae87274c4e936ae/scipy-1.16.2-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:d7d4c6ba016ffc0f9568d012f5f1eb77ddd99412aea121e6fa8b4c3b7cbad91f", size = 23497014, upload-time = "2025-09-11T17:43:49.074Z" }, + { url = "https://files.pythonhosted.org/packages/a7/74/f6a852e5d581122b8f0f831f1d1e32fb8987776ed3658e95c377d308ed86/scipy-1.16.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:9702c4c023227785c779cba2e1d6f7635dbb5b2e0936cdd3a4ecb98d78fd41eb", size = 33401155, upload-time = "2025-09-11T17:43:54.661Z" }, + { url = "https://files.pythonhosted.org/packages/d9/f5/61d243bbc7c6e5e4e13dde9887e84a5cbe9e0f75fd09843044af1590844e/scipy-1.16.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d1cdf0ac28948d225decdefcc45ad7dd91716c29ab56ef32f8e0d50657dffcc7", size = 35691174, upload-time = "2025-09-11T17:44:00.101Z" }, + { url = "https://files.pythonhosted.org/packages/03/99/59933956331f8cc57e406cdb7a483906c74706b156998f322913e789c7e1/scipy-1.16.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:70327d6aa572a17c2941cdfb20673f82e536e91850a2e4cb0c5b858b690e1548", size = 36070752, upload-time = "2025-09-11T17:44:05.619Z" }, + { url = "https://files.pythonhosted.org/packages/c6/7d/00f825cfb47ee19ef74ecf01244b43e95eae74e7e0ff796026ea7cd98456/scipy-1.16.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5221c0b2a4b58aa7c4ed0387d360fd90ee9086d383bb34d9f2789fafddc8a936", size = 38701010, upload-time = "2025-09-11T17:44:11.322Z" }, + { url = "https://files.pythonhosted.org/packages/e4/9f/b62587029980378304ba5a8563d376c96f40b1e133daacee76efdcae32de/scipy-1.16.2-cp314-cp314-win_amd64.whl", hash = "sha256:f5a85d7b2b708025af08f060a496dd261055b617d776fc05a1a1cc69e09fe9ff", size = 39360061, upload-time = "2025-09-11T17:45:09.814Z" }, + { url = "https://files.pythonhosted.org/packages/82/04/7a2f1609921352c7fbee0815811b5050582f67f19983096c4769867ca45f/scipy-1.16.2-cp314-cp314-win_arm64.whl", hash = "sha256:2cc73a33305b4b24556957d5857d6253ce1e2dcd67fa0ff46d87d1670b3e1e1d", size = 26126914, upload-time = "2025-09-11T17:45:14.73Z" }, + { url = "https://files.pythonhosted.org/packages/51/b9/60929ce350c16b221928725d2d1d7f86cf96b8bc07415547057d1196dc92/scipy-1.16.2-cp314-cp314t-macosx_10_14_x86_64.whl", hash = "sha256:9ea2a3fed83065d77367775d689401a703d0f697420719ee10c0780bcab594d8", size = 37013193, upload-time = "2025-09-11T17:44:16.757Z" }, + { url = "https://files.pythonhosted.org/packages/2a/41/ed80e67782d4bc5fc85a966bc356c601afddd175856ba7c7bb6d9490607e/scipy-1.16.2-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:7280d926f11ca945c3ef92ba960fa924e1465f8d07ce3a9923080363390624c4", size = 29390172, upload-time = "2025-09-11T17:44:21.783Z" }, + { url = "https://files.pythonhosted.org/packages/c4/a3/2f673ace4090452696ccded5f5f8efffb353b8f3628f823a110e0170b605/scipy-1.16.2-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:8afae1756f6a1fe04636407ef7dbece33d826a5d462b74f3d0eb82deabefd831", size = 21381326, upload-time = "2025-09-11T17:44:25.982Z" }, + { url = "https://files.pythonhosted.org/packages/42/bf/59df61c5d51395066c35836b78136accf506197617c8662e60ea209881e1/scipy-1.16.2-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:5c66511f29aa8d233388e7416a3f20d5cae7a2744d5cee2ecd38c081f4e861b3", size = 23915036, upload-time = "2025-09-11T17:44:30.527Z" }, + { url = "https://files.pythonhosted.org/packages/91/c3/edc7b300dc16847ad3672f1a6f3f7c5d13522b21b84b81c265f4f2760d4a/scipy-1.16.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:efe6305aeaa0e96b0ccca5ff647a43737d9a092064a3894e46c414db84bc54ac", size = 33484341, upload-time = "2025-09-11T17:44:35.981Z" }, + { url = "https://files.pythonhosted.org/packages/26/c7/24d1524e72f06ff141e8d04b833c20db3021020563272ccb1b83860082a9/scipy-1.16.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7f3a337d9ae06a1e8d655ee9d8ecb835ea5ddcdcbd8d23012afa055ab014f374", size = 35790840, upload-time = "2025-09-11T17:44:41.76Z" }, + { url = "https://files.pythonhosted.org/packages/aa/b7/5aaad984eeedd56858dc33d75efa59e8ce798d918e1033ef62d2708f2c3d/scipy-1.16.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:bab3605795d269067d8ce78a910220262711b753de8913d3deeaedb5dded3bb6", size = 36174716, upload-time = "2025-09-11T17:44:47.316Z" }, + { url = "https://files.pythonhosted.org/packages/fd/c2/e276a237acb09824822b0ada11b028ed4067fdc367a946730979feacb870/scipy-1.16.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:b0348d8ddb55be2a844c518cd8cc8deeeb8aeba707cf834db5758fc89b476a2c", size = 38790088, upload-time = "2025-09-11T17:44:53.011Z" }, + { url = "https://files.pythonhosted.org/packages/c6/b4/5c18a766e8353015439f3780f5fc473f36f9762edc1a2e45da3ff5a31b21/scipy-1.16.2-cp314-cp314t-win_amd64.whl", hash = "sha256:26284797e38b8a75e14ea6631d29bda11e76ceaa6ddb6fdebbfe4c4d90faf2f9", size = 39457455, upload-time = "2025-09-11T17:44:58.899Z" }, + { url = "https://files.pythonhosted.org/packages/97/30/2f9a5243008f76dfc5dee9a53dfb939d9b31e16ce4bd4f2e628bfc5d89d2/scipy-1.16.2-cp314-cp314t-win_arm64.whl", hash = "sha256:d2a4472c231328d4de38d5f1f68fdd6d28a615138f842580a8a321b5845cf779", size = 26448374, upload-time = "2025-09-11T17:45:03.45Z" }, +] + [[package]] name = "send2trash" version = "1.8.3" @@ -3990,67 +4970,83 @@ wheels = [ [[package]] name = "setuptools-scm" -version = "8.3.1" +version = "9.2.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "packaging" }, { name = "setuptools" }, { name = "tomli", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b9/19/7ae64b70b2429c48c3a7a4ed36f50f94687d3bfcd0ae2f152367b6410dff/setuptools_scm-8.3.1.tar.gz", hash = "sha256:3d555e92b75dacd037d32bafdf94f97af51ea29ae8c7b234cf94b7a5bd242a63", size = 78088, upload-time = "2025-04-23T11:53:19.739Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8f/8d/ffdcace33d0480d591057a30285b7c33f8dc431fed3fff7dbadf5f9f128f/setuptools_scm-9.2.0.tar.gz", hash = "sha256:6662c9b9497b6c9bf13bead9d7a9084756f68238302c5ed089fb4dbd29d102d7", size = 201229, upload-time = "2025-08-16T12:56:39.477Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ab/ac/8f96ba9b4cfe3e4ea201f23f4f97165862395e9331a424ed325ae37024a8/setuptools_scm-8.3.1-py3-none-any.whl", hash = "sha256:332ca0d43791b818b841213e76b1971b7711a960761c5bea5fc5cdb5196fbce3", size = 43935, upload-time = "2025-04-23T11:53:17.922Z" }, + { url = "https://files.pythonhosted.org/packages/f7/14/dd3a6053325e882fe191fb4b42289bbdfabf5f44307c302903a8a3236a0a/setuptools_scm-9.2.0-py3-none-any.whl", hash = "sha256:c551ef54e2270727ee17067881c9687ca2aedf179fa5b8f3fab9e8d73bdc421f", size = 62099, upload-time = "2025-08-16T12:56:37.912Z" }, ] [[package]] name = "shapely" -version = "2.1.1" +version = "2.1.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ca/3c/2da625233f4e605155926566c0e7ea8dda361877f48e8b1655e53456f252/shapely-2.1.1.tar.gz", hash = "sha256:500621967f2ffe9642454808009044c21e5b35db89ce69f8a2042c2ffd0e2772", size = 315422, upload-time = "2025-05-19T11:04:41.265Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/82/fa/f18025c95b86116dd8f1ec58cab078bd59ab51456b448136ca27463be533/shapely-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d8ccc872a632acb7bdcb69e5e78df27213f7efd195882668ffba5405497337c6", size = 1825117, upload-time = "2025-05-19T11:03:43.547Z" }, - { url = "https://files.pythonhosted.org/packages/c7/65/46b519555ee9fb851234288be7c78be11e6260995281071d13abf2c313d0/shapely-2.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f24f2ecda1e6c091da64bcbef8dd121380948074875bd1b247b3d17e99407099", size = 1628541, upload-time = "2025-05-19T11:03:45.162Z" }, - { url = "https://files.pythonhosted.org/packages/29/51/0b158a261df94e33505eadfe737db9531f346dfa60850945ad25fd4162f1/shapely-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45112a5be0b745b49e50f8829ce490eb67fefb0cea8d4f8ac5764bfedaa83d2d", size = 2948453, upload-time = "2025-05-19T11:03:46.681Z" }, - { url = "https://files.pythonhosted.org/packages/a9/4f/6c9bb4bd7b1a14d7051641b9b479ad2a643d5cbc382bcf5bd52fd0896974/shapely-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c10ce6f11904d65e9bbb3e41e774903c944e20b3f0b282559885302f52f224a", size = 3057029, upload-time = "2025-05-19T11:03:48.346Z" }, - { url = "https://files.pythonhosted.org/packages/89/0b/ad1b0af491d753a83ea93138eee12a4597f763ae12727968d05934fe7c78/shapely-2.1.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:61168010dfe4e45f956ffbbaf080c88afce199ea81eb1f0ac43230065df320bd", size = 3894342, upload-time = "2025-05-19T11:03:49.602Z" }, - { url = "https://files.pythonhosted.org/packages/7d/96/73232c5de0b9fdf0ec7ddfc95c43aaf928740e87d9f168bff0e928d78c6d/shapely-2.1.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cacf067cdff741cd5c56a21c52f54ece4e4dad9d311130493a791997da4a886b", size = 4056766, upload-time = "2025-05-19T11:03:51.252Z" }, - { url = "https://files.pythonhosted.org/packages/43/cc/eec3c01f754f5b3e0c47574b198f9deb70465579ad0dad0e1cef2ce9e103/shapely-2.1.1-cp310-cp310-win32.whl", hash = "sha256:23b8772c3b815e7790fb2eab75a0b3951f435bc0fce7bb146cb064f17d35ab4f", size = 1523744, upload-time = "2025-05-19T11:03:52.624Z" }, - { url = "https://files.pythonhosted.org/packages/50/fc/a7187e6dadb10b91e66a9e715d28105cde6489e1017cce476876185a43da/shapely-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:2c7b2b6143abf4fa77851cef8ef690e03feade9a0d48acd6dc41d9e0e78d7ca6", size = 1703061, upload-time = "2025-05-19T11:03:54.695Z" }, - { url = "https://files.pythonhosted.org/packages/19/97/2df985b1e03f90c503796ad5ecd3d9ed305123b64d4ccb54616b30295b29/shapely-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:587a1aa72bc858fab9b8c20427b5f6027b7cbc92743b8e2c73b9de55aa71c7a7", size = 1819368, upload-time = "2025-05-19T11:03:55.937Z" }, - { url = "https://files.pythonhosted.org/packages/56/17/504518860370f0a28908b18864f43d72f03581e2b6680540ca668f07aa42/shapely-2.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9fa5c53b0791a4b998f9ad84aad456c988600757a96b0a05e14bba10cebaaaea", size = 1625362, upload-time = "2025-05-19T11:03:57.06Z" }, - { url = "https://files.pythonhosted.org/packages/36/a1/9677337d729b79fce1ef3296aac6b8ef4743419086f669e8a8070eff8f40/shapely-2.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aabecd038841ab5310d23495253f01c2a82a3aedae5ab9ca489be214aa458aa7", size = 2999005, upload-time = "2025-05-19T11:03:58.692Z" }, - { url = "https://files.pythonhosted.org/packages/a2/17/e09357274699c6e012bbb5a8ea14765a4d5860bb658df1931c9f90d53bd3/shapely-2.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:586f6aee1edec04e16227517a866df3e9a2e43c1f635efc32978bb3dc9c63753", size = 3108489, upload-time = "2025-05-19T11:04:00.059Z" }, - { url = "https://files.pythonhosted.org/packages/17/5d/93a6c37c4b4e9955ad40834f42b17260ca74ecf36df2e81bb14d12221b90/shapely-2.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b9878b9e37ad26c72aada8de0c9cfe418d9e2ff36992a1693b7f65a075b28647", size = 3945727, upload-time = "2025-05-19T11:04:01.786Z" }, - { url = "https://files.pythonhosted.org/packages/a3/1a/ad696648f16fd82dd6bfcca0b3b8fbafa7aacc13431c7fc4c9b49e481681/shapely-2.1.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d9a531c48f289ba355e37b134e98e28c557ff13965d4653a5228d0f42a09aed0", size = 4109311, upload-time = "2025-05-19T11:04:03.134Z" }, - { url = "https://files.pythonhosted.org/packages/d4/38/150dd245beab179ec0d4472bf6799bf18f21b1efbef59ac87de3377dbf1c/shapely-2.1.1-cp311-cp311-win32.whl", hash = "sha256:4866de2673a971820c75c0167b1f1cd8fb76f2d641101c23d3ca021ad0449bab", size = 1522982, upload-time = "2025-05-19T11:04:05.217Z" }, - { url = "https://files.pythonhosted.org/packages/93/5b/842022c00fbb051083c1c85430f3bb55565b7fd2d775f4f398c0ba8052ce/shapely-2.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:20a9d79958b3d6c70d8a886b250047ea32ff40489d7abb47d01498c704557a93", size = 1703872, upload-time = "2025-05-19T11:04:06.791Z" }, - { url = "https://files.pythonhosted.org/packages/fb/64/9544dc07dfe80a2d489060791300827c941c451e2910f7364b19607ea352/shapely-2.1.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2827365b58bf98efb60affc94a8e01c56dd1995a80aabe4b701465d86dcbba43", size = 1833021, upload-time = "2025-05-19T11:04:08.022Z" }, - { url = "https://files.pythonhosted.org/packages/07/aa/fb5f545e72e89b6a0f04a0effda144f5be956c9c312c7d4e00dfddbddbcf/shapely-2.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a9c551f7fa7f1e917af2347fe983f21f212863f1d04f08eece01e9c275903fad", size = 1643018, upload-time = "2025-05-19T11:04:09.343Z" }, - { url = "https://files.pythonhosted.org/packages/03/46/61e03edba81de729f09d880ce7ae5c1af873a0814206bbfb4402ab5c3388/shapely-2.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78dec4d4fbe7b1db8dc36de3031767e7ece5911fb7782bc9e95c5cdec58fb1e9", size = 2986417, upload-time = "2025-05-19T11:04:10.56Z" }, - { url = "https://files.pythonhosted.org/packages/1f/1e/83ec268ab8254a446b4178b45616ab5822d7b9d2b7eb6e27cf0b82f45601/shapely-2.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:872d3c0a7b8b37da0e23d80496ec5973c4692920b90de9f502b5beb994bbaaef", size = 3098224, upload-time = "2025-05-19T11:04:11.903Z" }, - { url = "https://files.pythonhosted.org/packages/f1/44/0c21e7717c243e067c9ef8fa9126de24239f8345a5bba9280f7bb9935959/shapely-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2e2b9125ebfbc28ecf5353511de62f75a8515ae9470521c9a693e4bb9fbe0cf1", size = 3925982, upload-time = "2025-05-19T11:04:13.224Z" }, - { url = "https://files.pythonhosted.org/packages/15/50/d3b4e15fefc103a0eb13d83bad5f65cd6e07a5d8b2ae920e767932a247d1/shapely-2.1.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4b96cea171b3d7f6786976a0520f178c42792897653ecca0c5422fb1e6946e6d", size = 4089122, upload-time = "2025-05-19T11:04:14.477Z" }, - { url = "https://files.pythonhosted.org/packages/bd/05/9a68f27fc6110baeedeeebc14fd86e73fa38738c5b741302408fb6355577/shapely-2.1.1-cp312-cp312-win32.whl", hash = "sha256:39dca52201e02996df02e447f729da97cfb6ff41a03cb50f5547f19d02905af8", size = 1522437, upload-time = "2025-05-19T11:04:16.203Z" }, - { url = "https://files.pythonhosted.org/packages/bc/e9/a4560e12b9338842a1f82c9016d2543eaa084fce30a1ca11991143086b57/shapely-2.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:13d643256f81d55a50013eff6321142781cf777eb6a9e207c2c9e6315ba6044a", size = 1703479, upload-time = "2025-05-19T11:04:18.497Z" }, - { url = "https://files.pythonhosted.org/packages/71/8e/2bc836437f4b84d62efc1faddce0d4e023a5d990bbddd3c78b2004ebc246/shapely-2.1.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:3004a644d9e89e26c20286d5fdc10f41b1744c48ce910bd1867fdff963fe6c48", size = 1832107, upload-time = "2025-05-19T11:04:19.736Z" }, - { url = "https://files.pythonhosted.org/packages/12/a2/12c7cae5b62d5d851c2db836eadd0986f63918a91976495861f7c492f4a9/shapely-2.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1415146fa12d80a47d13cfad5310b3c8b9c2aa8c14a0c845c9d3d75e77cb54f6", size = 1642355, upload-time = "2025-05-19T11:04:21.035Z" }, - { url = "https://files.pythonhosted.org/packages/5b/7e/6d28b43d53fea56de69c744e34c2b999ed4042f7a811dc1bceb876071c95/shapely-2.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21fcab88b7520820ec16d09d6bea68652ca13993c84dffc6129dc3607c95594c", size = 2968871, upload-time = "2025-05-19T11:04:22.167Z" }, - { url = "https://files.pythonhosted.org/packages/dd/87/1017c31e52370b2b79e4d29e07cbb590ab9e5e58cf7e2bdfe363765d6251/shapely-2.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5ce6a5cc52c974b291237a96c08c5592e50f066871704fb5b12be2639d9026a", size = 3080830, upload-time = "2025-05-19T11:04:23.997Z" }, - { url = "https://files.pythonhosted.org/packages/1d/fe/f4a03d81abd96a6ce31c49cd8aaba970eaaa98e191bd1e4d43041e57ae5a/shapely-2.1.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:04e4c12a45a1d70aeb266618d8cf81a2de9c4df511b63e105b90bfdfb52146de", size = 3908961, upload-time = "2025-05-19T11:04:25.702Z" }, - { url = "https://files.pythonhosted.org/packages/ef/59/7605289a95a6844056a2017ab36d9b0cb9d6a3c3b5317c1f968c193031c9/shapely-2.1.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6ca74d851ca5264aae16c2b47e96735579686cb69fa93c4078070a0ec845b8d8", size = 4079623, upload-time = "2025-05-19T11:04:27.171Z" }, - { url = "https://files.pythonhosted.org/packages/bc/4d/9fea036eff2ef4059d30247128b2d67aaa5f0b25e9fc27e1d15cc1b84704/shapely-2.1.1-cp313-cp313-win32.whl", hash = "sha256:fd9130501bf42ffb7e0695b9ea17a27ae8ce68d50b56b6941c7f9b3d3453bc52", size = 1521916, upload-time = "2025-05-19T11:04:28.405Z" }, - { url = "https://files.pythonhosted.org/packages/12/d9/6d13b8957a17c95794f0c4dfb65ecd0957e6c7131a56ce18d135c1107a52/shapely-2.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:ab8d878687b438a2f4c138ed1a80941c6ab0029e0f4c785ecfe114413b498a97", size = 1702746, upload-time = "2025-05-19T11:04:29.643Z" }, - { url = "https://files.pythonhosted.org/packages/60/36/b1452e3e7f35f5f6454d96f3be6e2bb87082720ff6c9437ecc215fa79be0/shapely-2.1.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0c062384316a47f776305ed2fa22182717508ffdeb4a56d0ff4087a77b2a0f6d", size = 1833482, upload-time = "2025-05-19T11:04:30.852Z" }, - { url = "https://files.pythonhosted.org/packages/ce/ca/8e6f59be0718893eb3e478141285796a923636dc8f086f83e5b0ec0036d0/shapely-2.1.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:4ecf6c196b896e8f1360cc219ed4eee1c1e5f5883e505d449f263bd053fb8c05", size = 1642256, upload-time = "2025-05-19T11:04:32.068Z" }, - { url = "https://files.pythonhosted.org/packages/ab/78/0053aea449bb1d4503999525fec6232f049abcdc8df60d290416110de943/shapely-2.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb00070b4c4860f6743c600285109c273cca5241e970ad56bb87bef0be1ea3a0", size = 3016614, upload-time = "2025-05-19T11:04:33.7Z" }, - { url = "https://files.pythonhosted.org/packages/ee/53/36f1b1de1dfafd1b457dcbafa785b298ce1b8a3e7026b79619e708a245d5/shapely-2.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d14a9afa5fa980fbe7bf63706fdfb8ff588f638f145a1d9dbc18374b5b7de913", size = 3093542, upload-time = "2025-05-19T11:04:34.952Z" }, - { url = "https://files.pythonhosted.org/packages/b9/bf/0619f37ceec6b924d84427c88835b61f27f43560239936ff88915c37da19/shapely-2.1.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b640e390dabde790e3fb947198b466e63223e0a9ccd787da5f07bcb14756c28d", size = 3945961, upload-time = "2025-05-19T11:04:36.32Z" }, - { url = "https://files.pythonhosted.org/packages/93/c9/20ca4afeb572763b07a7997f00854cb9499df6af85929e93012b189d8917/shapely-2.1.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:69e08bf9697c1b73ec6aa70437db922bafcea7baca131c90c26d59491a9760f9", size = 4089514, upload-time = "2025-05-19T11:04:37.683Z" }, - { url = "https://files.pythonhosted.org/packages/33/6a/27036a5a560b80012a544366bceafd491e8abb94a8db14047b5346b5a749/shapely-2.1.1-cp313-cp313t-win32.whl", hash = "sha256:ef2d09d5a964cc90c2c18b03566cf918a61c248596998a0301d5b632beadb9db", size = 1540607, upload-time = "2025-05-19T11:04:38.925Z" }, - { url = "https://files.pythonhosted.org/packages/ea/f1/5e9b3ba5c7aa7ebfaf269657e728067d16a7c99401c7973ddf5f0cf121bd/shapely-2.1.1-cp313-cp313t-win_amd64.whl", hash = "sha256:8cb8f17c377260452e9d7720eeaf59082c5f8ea48cf104524d953e5d36d4bdb7", size = 1723061, upload-time = "2025-05-19T11:04:40.082Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/4d/bc/0989043118a27cccb4e906a46b7565ce36ca7b57f5a18b78f4f1b0f72d9d/shapely-2.1.2.tar.gz", hash = "sha256:2ed4ecb28320a433db18a5bf029986aa8afcfd740745e78847e330d5d94922a9", size = 315489, upload-time = "2025-09-24T13:51:41.432Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/89/c3548aa9b9812a5d143986764dededfa48d817714e947398bdda87c77a72/shapely-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7ae48c236c0324b4e139bea88a306a04ca630f49be66741b340729d380d8f52f", size = 1825959, upload-time = "2025-09-24T13:50:00.682Z" }, + { url = "https://files.pythonhosted.org/packages/ce/8a/7ebc947080442edd614ceebe0ce2cdbd00c25e832c240e1d1de61d0e6b38/shapely-2.1.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:eba6710407f1daa8e7602c347dfc94adc02205ec27ed956346190d66579eb9ea", size = 1629196, upload-time = "2025-09-24T13:50:03.447Z" }, + { url = "https://files.pythonhosted.org/packages/c8/86/c9c27881c20d00fc409e7e059de569d5ed0abfcec9c49548b124ebddea51/shapely-2.1.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ef4a456cc8b7b3d50ccec29642aa4aeda959e9da2fe9540a92754770d5f0cf1f", size = 2951065, upload-time = "2025-09-24T13:50:05.266Z" }, + { url = "https://files.pythonhosted.org/packages/50/8a/0ab1f7433a2a85d9e9aea5b1fbb333f3b09b309e7817309250b4b7b2cc7a/shapely-2.1.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e38a190442aacc67ff9f75ce60aec04893041f16f97d242209106d502486a142", size = 3058666, upload-time = "2025-09-24T13:50:06.872Z" }, + { url = "https://files.pythonhosted.org/packages/bb/c6/5a30ffac9c4f3ffd5b7113a7f5299ccec4713acd5ee44039778a7698224e/shapely-2.1.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:40d784101f5d06a1fd30b55fc11ea58a61be23f930d934d86f19a180909908a4", size = 3966905, upload-time = "2025-09-24T13:50:09.417Z" }, + { url = "https://files.pythonhosted.org/packages/9c/72/e92f3035ba43e53959007f928315a68fbcf2eeb4e5ededb6f0dc7ff1ecc3/shapely-2.1.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f6f6cd5819c50d9bcf921882784586aab34a4bd53e7553e175dece6db513a6f0", size = 4129260, upload-time = "2025-09-24T13:50:11.183Z" }, + { url = "https://files.pythonhosted.org/packages/42/24/605901b73a3d9f65fa958e63c9211f4be23d584da8a1a7487382fac7fdc5/shapely-2.1.2-cp310-cp310-win32.whl", hash = "sha256:fe9627c39c59e553c90f5bc3128252cb85dc3b3be8189710666d2f8bc3a5503e", size = 1544301, upload-time = "2025-09-24T13:50:12.521Z" }, + { url = "https://files.pythonhosted.org/packages/e1/89/6db795b8dd3919851856bd2ddd13ce434a748072f6fdee42ff30cbd3afa3/shapely-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:1d0bfb4b8f661b3b4ec3565fa36c340bfb1cda82087199711f86a88647d26b2f", size = 1722074, upload-time = "2025-09-24T13:50:13.909Z" }, + { url = "https://files.pythonhosted.org/packages/8f/8d/1ff672dea9ec6a7b5d422eb6d095ed886e2e523733329f75fdcb14ee1149/shapely-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:91121757b0a36c9aac3427a651a7e6567110a4a67c97edf04f8d55d4765f6618", size = 1820038, upload-time = "2025-09-24T13:50:15.628Z" }, + { url = "https://files.pythonhosted.org/packages/4f/ce/28fab8c772ce5db23a0d86bf0adaee0c4c79d5ad1db766055fa3dab442e2/shapely-2.1.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:16a9c722ba774cf50b5d4541242b4cce05aafd44a015290c82ba8a16931ff63d", size = 1626039, upload-time = "2025-09-24T13:50:16.881Z" }, + { url = "https://files.pythonhosted.org/packages/70/8b/868b7e3f4982f5006e9395c1e12343c66a8155c0374fdc07c0e6a1ab547d/shapely-2.1.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cc4f7397459b12c0b196c9efe1f9d7e92463cbba142632b4cc6d8bbbbd3e2b09", size = 3001519, upload-time = "2025-09-24T13:50:18.606Z" }, + { url = "https://files.pythonhosted.org/packages/13/02/58b0b8d9c17c93ab6340edd8b7308c0c5a5b81f94ce65705819b7416dba5/shapely-2.1.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:136ab87b17e733e22f0961504d05e77e7be8c9b5a8184f685b4a91a84efe3c26", size = 3110842, upload-time = "2025-09-24T13:50:21.77Z" }, + { url = "https://files.pythonhosted.org/packages/af/61/8e389c97994d5f331dcffb25e2fa761aeedfb52b3ad9bcdd7b8671f4810a/shapely-2.1.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:16c5d0fc45d3aa0a69074979f4f1928ca2734fb2e0dde8af9611e134e46774e7", size = 4021316, upload-time = "2025-09-24T13:50:23.626Z" }, + { url = "https://files.pythonhosted.org/packages/d3/d4/9b2a9fe6039f9e42ccf2cb3e84f219fd8364b0c3b8e7bbc857b5fbe9c14c/shapely-2.1.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6ddc759f72b5b2b0f54a7e7cde44acef680a55019eb52ac63a7af2cf17cb9cd2", size = 4178586, upload-time = "2025-09-24T13:50:25.443Z" }, + { url = "https://files.pythonhosted.org/packages/16/f6/9840f6963ed4decf76b08fd6d7fed14f8779fb7a62cb45c5617fa8ac6eab/shapely-2.1.2-cp311-cp311-win32.whl", hash = "sha256:2fa78b49485391224755a856ed3b3bd91c8455f6121fee0db0e71cefb07d0ef6", size = 1543961, upload-time = "2025-09-24T13:50:26.968Z" }, + { url = "https://files.pythonhosted.org/packages/38/1e/3f8ea46353c2a33c1669eb7327f9665103aa3a8dfe7f2e4ef714c210b2c2/shapely-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:c64d5c97b2f47e3cd9b712eaced3b061f2b71234b3fc263e0fcf7d889c6559dc", size = 1722856, upload-time = "2025-09-24T13:50:28.497Z" }, + { url = "https://files.pythonhosted.org/packages/24/c0/f3b6453cf2dfa99adc0ba6675f9aaff9e526d2224cbd7ff9c1a879238693/shapely-2.1.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fe2533caae6a91a543dec62e8360fe86ffcdc42a7c55f9dfd0128a977a896b94", size = 1833550, upload-time = "2025-09-24T13:50:30.019Z" }, + { url = "https://files.pythonhosted.org/packages/86/07/59dee0bc4b913b7ab59ab1086225baca5b8f19865e6101db9ebb7243e132/shapely-2.1.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ba4d1333cc0bc94381d6d4308d2e4e008e0bd128bdcff5573199742ee3634359", size = 1643556, upload-time = "2025-09-24T13:50:32.291Z" }, + { url = "https://files.pythonhosted.org/packages/26/29/a5397e75b435b9895cd53e165083faed5d12fd9626eadec15a83a2411f0f/shapely-2.1.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0bd308103340030feef6c111d3eb98d50dc13feea33affc8a6f9fa549e9458a3", size = 2988308, upload-time = "2025-09-24T13:50:33.862Z" }, + { url = "https://files.pythonhosted.org/packages/b9/37/e781683abac55dde9771e086b790e554811a71ed0b2b8a1e789b7430dd44/shapely-2.1.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1e7d4d7ad262a48bb44277ca12c7c78cb1b0f56b32c10734ec9a1d30c0b0c54b", size = 3099844, upload-time = "2025-09-24T13:50:35.459Z" }, + { url = "https://files.pythonhosted.org/packages/d8/f3/9876b64d4a5a321b9dc482c92bb6f061f2fa42131cba643c699f39317cb9/shapely-2.1.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e9eddfe513096a71896441a7c37db72da0687b34752c4e193577a145c71736fc", size = 3988842, upload-time = "2025-09-24T13:50:37.478Z" }, + { url = "https://files.pythonhosted.org/packages/d1/a0/704c7292f7014c7e74ec84eddb7b109e1fbae74a16deae9c1504b1d15565/shapely-2.1.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:980c777c612514c0cf99bc8a9de6d286f5e186dcaf9091252fcd444e5638193d", size = 4152714, upload-time = "2025-09-24T13:50:39.9Z" }, + { url = "https://files.pythonhosted.org/packages/53/46/319c9dc788884ad0785242543cdffac0e6530e4d0deb6c4862bc4143dcf3/shapely-2.1.2-cp312-cp312-win32.whl", hash = "sha256:9111274b88e4d7b54a95218e243282709b330ef52b7b86bc6aaf4f805306f454", size = 1542745, upload-time = "2025-09-24T13:50:41.414Z" }, + { url = "https://files.pythonhosted.org/packages/ec/bf/cb6c1c505cb31e818e900b9312d514f381fbfa5c4363edfce0fcc4f8c1a4/shapely-2.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:743044b4cfb34f9a67205cee9279feaf60ba7d02e69febc2afc609047cb49179", size = 1722861, upload-time = "2025-09-24T13:50:43.35Z" }, + { url = "https://files.pythonhosted.org/packages/c3/90/98ef257c23c46425dc4d1d31005ad7c8d649fe423a38b917db02c30f1f5a/shapely-2.1.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b510dda1a3672d6879beb319bc7c5fd302c6c354584690973c838f46ec3e0fa8", size = 1832644, upload-time = "2025-09-24T13:50:44.886Z" }, + { url = "https://files.pythonhosted.org/packages/6d/ab/0bee5a830d209adcd3a01f2d4b70e587cdd9fd7380d5198c064091005af8/shapely-2.1.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8cff473e81017594d20ec55d86b54bc635544897e13a7cfc12e36909c5309a2a", size = 1642887, upload-time = "2025-09-24T13:50:46.735Z" }, + { url = "https://files.pythonhosted.org/packages/2d/5e/7d7f54ba960c13302584c73704d8c4d15404a51024631adb60b126a4ae88/shapely-2.1.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fe7b77dc63d707c09726b7908f575fc04ff1d1ad0f3fb92aec212396bc6cfe5e", size = 2970931, upload-time = "2025-09-24T13:50:48.374Z" }, + { url = "https://files.pythonhosted.org/packages/f2/a2/83fc37e2a58090e3d2ff79175a95493c664bcd0b653dd75cb9134645a4e5/shapely-2.1.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7ed1a5bbfb386ee8332713bf7508bc24e32d24b74fc9a7b9f8529a55db9f4ee6", size = 3082855, upload-time = "2025-09-24T13:50:50.037Z" }, + { url = "https://files.pythonhosted.org/packages/44/2b/578faf235a5b09f16b5f02833c53822294d7f21b242f8e2d0cf03fb64321/shapely-2.1.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a84e0582858d841d54355246ddfcbd1fce3179f185da7470f41ce39d001ee1af", size = 3979960, upload-time = "2025-09-24T13:50:51.74Z" }, + { url = "https://files.pythonhosted.org/packages/4d/04/167f096386120f692cc4ca02f75a17b961858997a95e67a3cb6a7bbd6b53/shapely-2.1.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:dc3487447a43d42adcdf52d7ac73804f2312cbfa5d433a7d2c506dcab0033dfd", size = 4142851, upload-time = "2025-09-24T13:50:53.49Z" }, + { url = "https://files.pythonhosted.org/packages/48/74/fb402c5a6235d1c65a97348b48cdedb75fb19eca2b1d66d04969fc1c6091/shapely-2.1.2-cp313-cp313-win32.whl", hash = "sha256:9c3a3c648aedc9f99c09263b39f2d8252f199cb3ac154fadc173283d7d111350", size = 1541890, upload-time = "2025-09-24T13:50:55.337Z" }, + { url = "https://files.pythonhosted.org/packages/41/47/3647fe7ad990af60ad98b889657a976042c9988c2807cf322a9d6685f462/shapely-2.1.2-cp313-cp313-win_amd64.whl", hash = "sha256:ca2591bff6645c216695bdf1614fca9c82ea1144d4a7591a466fef64f28f0715", size = 1722151, upload-time = "2025-09-24T13:50:57.153Z" }, + { url = "https://files.pythonhosted.org/packages/3c/49/63953754faa51ffe7d8189bfbe9ca34def29f8c0e34c67cbe2a2795f269d/shapely-2.1.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2d93d23bdd2ed9dc157b46bc2f19b7da143ca8714464249bef6771c679d5ff40", size = 1834130, upload-time = "2025-09-24T13:50:58.49Z" }, + { url = "https://files.pythonhosted.org/packages/7f/ee/dce001c1984052970ff60eb4727164892fb2d08052c575042a47f5a9e88f/shapely-2.1.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:01d0d304b25634d60bd7cf291828119ab55a3bab87dc4af1e44b07fb225f188b", size = 1642802, upload-time = "2025-09-24T13:50:59.871Z" }, + { url = "https://files.pythonhosted.org/packages/da/e7/fc4e9a19929522877fa602f705706b96e78376afb7fad09cad5b9af1553c/shapely-2.1.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8d8382dd120d64b03698b7298b89611a6ea6f55ada9d39942838b79c9bc89801", size = 3018460, upload-time = "2025-09-24T13:51:02.08Z" }, + { url = "https://files.pythonhosted.org/packages/a1/18/7519a25db21847b525696883ddc8e6a0ecaa36159ea88e0fef11466384d0/shapely-2.1.2-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:19efa3611eef966e776183e338b2d7ea43569ae99ab34f8d17c2c054d3205cc0", size = 3095223, upload-time = "2025-09-24T13:51:04.472Z" }, + { url = "https://files.pythonhosted.org/packages/48/de/b59a620b1f3a129c3fecc2737104a0a7e04e79335bd3b0a1f1609744cf17/shapely-2.1.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:346ec0c1a0fcd32f57f00e4134d1200e14bf3f5ae12af87ba83ca275c502498c", size = 4030760, upload-time = "2025-09-24T13:51:06.455Z" }, + { url = "https://files.pythonhosted.org/packages/96/b3/c6655ee7232b417562bae192ae0d3ceaadb1cc0ffc2088a2ddf415456cc2/shapely-2.1.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6305993a35989391bd3476ee538a5c9a845861462327efe00dd11a5c8c709a99", size = 4170078, upload-time = "2025-09-24T13:51:08.584Z" }, + { url = "https://files.pythonhosted.org/packages/a0/8e/605c76808d73503c9333af8f6cbe7e1354d2d238bda5f88eea36bfe0f42a/shapely-2.1.2-cp313-cp313t-win32.whl", hash = "sha256:c8876673449f3401f278c86eb33224c5764582f72b653a415d0e6672fde887bf", size = 1559178, upload-time = "2025-09-24T13:51:10.73Z" }, + { url = "https://files.pythonhosted.org/packages/36/f7/d317eb232352a1f1444d11002d477e54514a4a6045536d49d0c59783c0da/shapely-2.1.2-cp313-cp313t-win_amd64.whl", hash = "sha256:4a44bc62a10d84c11a7a3d7c1c4fe857f7477c3506e24c9062da0db0ae0c449c", size = 1739756, upload-time = "2025-09-24T13:51:12.105Z" }, + { url = "https://files.pythonhosted.org/packages/fc/c4/3ce4c2d9b6aabd27d26ec988f08cb877ba9e6e96086eff81bfea93e688c7/shapely-2.1.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:9a522f460d28e2bf4e12396240a5fc1518788b2fcd73535166d748399ef0c223", size = 1831290, upload-time = "2025-09-24T13:51:13.56Z" }, + { url = "https://files.pythonhosted.org/packages/17/b9/f6ab8918fc15429f79cb04afa9f9913546212d7fb5e5196132a2af46676b/shapely-2.1.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1ff629e00818033b8d71139565527ced7d776c269a49bd78c9df84e8f852190c", size = 1641463, upload-time = "2025-09-24T13:51:14.972Z" }, + { url = "https://files.pythonhosted.org/packages/a5/57/91d59ae525ca641e7ac5551c04c9503aee6f29b92b392f31790fcb1a4358/shapely-2.1.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f67b34271dedc3c653eba4e3d7111aa421d5be9b4c4c7d38d30907f796cb30df", size = 2970145, upload-time = "2025-09-24T13:51:16.961Z" }, + { url = "https://files.pythonhosted.org/packages/8a/cb/4948be52ee1da6927831ab59e10d4c29baa2a714f599f1f0d1bc747f5777/shapely-2.1.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:21952dc00df38a2c28375659b07a3979d22641aeb104751e769c3ee825aadecf", size = 3073806, upload-time = "2025-09-24T13:51:18.712Z" }, + { url = "https://files.pythonhosted.org/packages/03/83/f768a54af775eb41ef2e7bec8a0a0dbe7d2431c3e78c0a8bdba7ab17e446/shapely-2.1.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1f2f33f486777456586948e333a56ae21f35ae273be99255a191f5c1fa302eb4", size = 3980803, upload-time = "2025-09-24T13:51:20.37Z" }, + { url = "https://files.pythonhosted.org/packages/9f/cb/559c7c195807c91c79d38a1f6901384a2878a76fbdf3f1048893a9b7534d/shapely-2.1.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:cf831a13e0d5a7eb519e96f58ec26e049b1fad411fc6fc23b162a7ce04d9cffc", size = 4133301, upload-time = "2025-09-24T13:51:21.887Z" }, + { url = "https://files.pythonhosted.org/packages/80/cd/60d5ae203241c53ef3abd2ef27c6800e21afd6c94e39db5315ea0cbafb4a/shapely-2.1.2-cp314-cp314-win32.whl", hash = "sha256:61edcd8d0d17dd99075d320a1dd39c0cb9616f7572f10ef91b4b5b00c4aeb566", size = 1583247, upload-time = "2025-09-24T13:51:23.401Z" }, + { url = "https://files.pythonhosted.org/packages/74/d4/135684f342e909330e50d31d441ace06bf83c7dc0777e11043f99167b123/shapely-2.1.2-cp314-cp314-win_amd64.whl", hash = "sha256:a444e7afccdb0999e203b976adb37ea633725333e5b119ad40b1ca291ecf311c", size = 1773019, upload-time = "2025-09-24T13:51:24.873Z" }, + { url = "https://files.pythonhosted.org/packages/a3/05/a44f3f9f695fa3ada22786dc9da33c933da1cbc4bfe876fe3a100bafe263/shapely-2.1.2-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:5ebe3f84c6112ad3d4632b1fd2290665aa75d4cef5f6c5d77c4c95b324527c6a", size = 1834137, upload-time = "2025-09-24T13:51:26.665Z" }, + { url = "https://files.pythonhosted.org/packages/52/7e/4d57db45bf314573427b0a70dfca15d912d108e6023f623947fa69f39b72/shapely-2.1.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5860eb9f00a1d49ebb14e881f5caf6c2cf472c7fd38bd7f253bbd34f934eb076", size = 1642884, upload-time = "2025-09-24T13:51:28.029Z" }, + { url = "https://files.pythonhosted.org/packages/5a/27/4e29c0a55d6d14ad7422bf86995d7ff3f54af0eba59617eb95caf84b9680/shapely-2.1.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b705c99c76695702656327b819c9660768ec33f5ce01fa32b2af62b56ba400a1", size = 3018320, upload-time = "2025-09-24T13:51:29.903Z" }, + { url = "https://files.pythonhosted.org/packages/9f/bb/992e6a3c463f4d29d4cd6ab8963b75b1b1040199edbd72beada4af46bde5/shapely-2.1.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a1fd0ea855b2cf7c9cddaf25543e914dd75af9de08785f20ca3085f2c9ca60b0", size = 3094931, upload-time = "2025-09-24T13:51:32.699Z" }, + { url = "https://files.pythonhosted.org/packages/9c/16/82e65e21070e473f0ed6451224ed9fa0be85033d17e0c6e7213a12f59d12/shapely-2.1.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:df90e2db118c3671a0754f38e36802db75fe0920d211a27481daf50a711fdf26", size = 4030406, upload-time = "2025-09-24T13:51:34.189Z" }, + { url = "https://files.pythonhosted.org/packages/7c/75/c24ed871c576d7e2b64b04b1fe3d075157f6eb54e59670d3f5ffb36e25c7/shapely-2.1.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:361b6d45030b4ac64ddd0a26046906c8202eb60d0f9f53085f5179f1d23021a0", size = 4169511, upload-time = "2025-09-24T13:51:36.297Z" }, + { url = "https://files.pythonhosted.org/packages/b1/f7/b3d1d6d18ebf55236eec1c681ce5e665742aab3c0b7b232720a7d43df7b6/shapely-2.1.2-cp314-cp314t-win32.whl", hash = "sha256:b54df60f1fbdecc8ebc2c5b11870461a6417b3d617f555e5033f1505d36e5735", size = 1602607, upload-time = "2025-09-24T13:51:37.757Z" }, + { url = "https://files.pythonhosted.org/packages/9a/f6/f09272a71976dfc138129b8faf435d064a811ae2f708cb147dccdf7aacdb/shapely-2.1.2-cp314-cp314t-win_amd64.whl", hash = "sha256:0036ac886e0923417932c2e6369b6c52e38e0ff5d9120b90eef5cd9a5fc5cae9", size = 1796682, upload-time = "2025-09-24T13:51:39.233Z" }, ] [[package]] @@ -4066,7 +5062,7 @@ dependencies = [ { name = "numexpr" }, { name = "numpy" }, { name = "pandas", version = "2.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, - { name = "pandas", version = "2.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, + { name = "pandas", version = "2.3.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, { name = "pyarrow" }, { name = "xarray" }, ] @@ -4077,14 +5073,27 @@ wheels = [ [[package]] name = "simwrapper" -version = "1.8.5" +version = "4.0.6" source = { registry = "https://pypi.org/simple" } dependencies = [ + { name = "blosc" }, + { name = "build" }, { name = "click" }, + { name = "flask" }, + { name = "flask-compress" }, + { name = "flask-cors" }, + { name = "flask-restful" }, + { name = "gunicorn" }, + { name = "openmatrix" }, + { name = "pypatch" }, + { name = "pyyaml" }, + { name = "tables", version = "3.10.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "tables", version = "3.10.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "waitress" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ad/be/2cdddc9db3f2a413cfa6c7e9094ecde5490477201c62d83aeaf7b1750bf4/simwrapper-1.8.5.tar.gz", hash = "sha256:3b6bc05214e48ac1c70128781bc1e7808cf7b53648c0ad4cf648aad2ec13deb1", size = 11626336, upload-time = "2022-10-25T09:45:18.779Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6f/ad/84ac6c6dc19bbd6a45d1461f5f5eb12bda9bdf277dd9ce70719a0764b327/simwrapper-4.0.6.tar.gz", hash = "sha256:7d85dae5814227736a89900e4d063cadadd074e1735b31edba25bf11e3942801", size = 27551095, upload-time = "2025-07-30T12:57:04.602Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/39/03/370fd6cb1f1ac01859628d8d0a0f9105b70199976c7904e9e99c420fbb48/simwrapper-1.8.5-py3-none-any.whl", hash = "sha256:f0caacac5119af009ab8cdec7175eefe7d99d86b968de0abf3cd0de2053f6f26", size = 11735795, upload-time = "2022-10-25T09:45:09.104Z" }, + { url = "https://files.pythonhosted.org/packages/9d/62/a4f6dcfee8f4353c91b608765c1e348a6ebd6bb7d5dd0571be39b4d8e1b4/simwrapper-4.0.6-py3-none-any.whl", hash = "sha256:7ca3a22a93da50c2ffdd7e920fcd2da1f554b3cca175cd77c5a4eb5d9dbbdd75", size = 27800831, upload-time = "2025-07-30T12:56:41.599Z" }, ] [[package]] @@ -4137,11 +5146,11 @@ wheels = [ [[package]] name = "soupsieve" -version = "2.7" +version = "2.8" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418, upload-time = "2025-04-20T18:50:08.518Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6d/e6/21ccce3262dd4889aa3332e5a119a3491a95e8f60939870a3a035aabac0d/soupsieve-2.8.tar.gz", hash = "sha256:e2dd4a40a628cb5f28f6d4b0db8800b8f581b65bb380b97de22ba5ca8d72572f", size = 103472, upload-time = "2025-08-27T15:39:51.78Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677, upload-time = "2025-04-20T18:50:07.196Z" }, + { url = "https://files.pythonhosted.org/packages/14/a0/bb38d3b76b8cae341dad93a2dd83ab7462e6dbcdd84d43f54ee60a8dc167/soupsieve-2.8-py3-none-any.whl", hash = "sha256:0cc76456a30e20f5d7f2e14a98a4ae2ee4e5abdc7c5ea0aafe795f344bc7984c", size = 36679, upload-time = "2025-08-27T15:39:50.179Z" }, ] [[package]] @@ -4433,47 +5442,47 @@ wheels = [ [[package]] name = "sqlalchemy" -version = "2.0.41" +version = "2.0.43" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "greenlet", marker = "(python_full_version < '3.14' and platform_machine == 'AMD64') or (python_full_version < '3.14' and platform_machine == 'WIN32') or (python_full_version < '3.14' and platform_machine == 'aarch64') or (python_full_version < '3.14' and platform_machine == 'amd64') or (python_full_version < '3.14' and platform_machine == 'ppc64le') or (python_full_version < '3.14' and platform_machine == 'win32') or (python_full_version < '3.14' and platform_machine == 'x86_64')" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/63/66/45b165c595ec89aa7dcc2c1cd222ab269bc753f1fc7a1e68f8481bd957bf/sqlalchemy-2.0.41.tar.gz", hash = "sha256:edba70118c4be3c2b1f90754d308d0b79c6fe2c0fdc52d8ddf603916f83f4db9", size = 9689424, upload-time = "2025-05-14T17:10:32.339Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e9/12/d7c445b1940276a828efce7331cb0cb09d6e5f049651db22f4ebb0922b77/sqlalchemy-2.0.41-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b1f09b6821406ea1f94053f346f28f8215e293344209129a9c0fcc3578598d7b", size = 2117967, upload-time = "2025-05-14T17:48:15.841Z" }, - { url = "https://files.pythonhosted.org/packages/6f/b8/cb90f23157e28946b27eb01ef401af80a1fab7553762e87df51507eaed61/sqlalchemy-2.0.41-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1936af879e3db023601196a1684d28e12f19ccf93af01bf3280a3262c4b6b4e5", size = 2107583, upload-time = "2025-05-14T17:48:18.688Z" }, - { url = "https://files.pythonhosted.org/packages/9e/c2/eef84283a1c8164a207d898e063edf193d36a24fb6a5bb3ce0634b92a1e8/sqlalchemy-2.0.41-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2ac41acfc8d965fb0c464eb8f44995770239668956dc4cdf502d1b1ffe0d747", size = 3186025, upload-time = "2025-05-14T17:51:51.226Z" }, - { url = "https://files.pythonhosted.org/packages/bd/72/49d52bd3c5e63a1d458fd6d289a1523a8015adedbddf2c07408ff556e772/sqlalchemy-2.0.41-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81c24e0c0fde47a9723c81d5806569cddef103aebbf79dbc9fcbb617153dea30", size = 3186259, upload-time = "2025-05-14T17:55:22.526Z" }, - { url = "https://files.pythonhosted.org/packages/4f/9e/e3ffc37d29a3679a50b6bbbba94b115f90e565a2b4545abb17924b94c52d/sqlalchemy-2.0.41-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:23a8825495d8b195c4aa9ff1c430c28f2c821e8c5e2d98089228af887e5d7e29", size = 3126803, upload-time = "2025-05-14T17:51:53.277Z" }, - { url = "https://files.pythonhosted.org/packages/8a/76/56b21e363f6039978ae0b72690237b38383e4657281285a09456f313dd77/sqlalchemy-2.0.41-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:60c578c45c949f909a4026b7807044e7e564adf793537fc762b2489d522f3d11", size = 3148566, upload-time = "2025-05-14T17:55:24.398Z" }, - { url = "https://files.pythonhosted.org/packages/3b/92/11b8e1b69bf191bc69e300a99badbbb5f2f1102f2b08b39d9eee2e21f565/sqlalchemy-2.0.41-cp310-cp310-win32.whl", hash = "sha256:118c16cd3f1b00c76d69343e38602006c9cfb9998fa4f798606d28d63f23beda", size = 2086696, upload-time = "2025-05-14T17:55:59.136Z" }, - { url = "https://files.pythonhosted.org/packages/5c/88/2d706c9cc4502654860f4576cd54f7db70487b66c3b619ba98e0be1a4642/sqlalchemy-2.0.41-cp310-cp310-win_amd64.whl", hash = "sha256:7492967c3386df69f80cf67efd665c0f667cee67032090fe01d7d74b0e19bb08", size = 2110200, upload-time = "2025-05-14T17:56:00.757Z" }, - { url = "https://files.pythonhosted.org/packages/37/4e/b00e3ffae32b74b5180e15d2ab4040531ee1bef4c19755fe7926622dc958/sqlalchemy-2.0.41-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6375cd674fe82d7aa9816d1cb96ec592bac1726c11e0cafbf40eeee9a4516b5f", size = 2121232, upload-time = "2025-05-14T17:48:20.444Z" }, - { url = "https://files.pythonhosted.org/packages/ef/30/6547ebb10875302074a37e1970a5dce7985240665778cfdee2323709f749/sqlalchemy-2.0.41-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9f8c9fdd15a55d9465e590a402f42082705d66b05afc3ffd2d2eb3c6ba919560", size = 2110897, upload-time = "2025-05-14T17:48:21.634Z" }, - { url = "https://files.pythonhosted.org/packages/9e/21/59df2b41b0f6c62da55cd64798232d7349a9378befa7f1bb18cf1dfd510a/sqlalchemy-2.0.41-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32f9dc8c44acdee06c8fc6440db9eae8b4af8b01e4b1aee7bdd7241c22edff4f", size = 3273313, upload-time = "2025-05-14T17:51:56.205Z" }, - { url = "https://files.pythonhosted.org/packages/62/e4/b9a7a0e5c6f79d49bcd6efb6e90d7536dc604dab64582a9dec220dab54b6/sqlalchemy-2.0.41-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90c11ceb9a1f482c752a71f203a81858625d8df5746d787a4786bca4ffdf71c6", size = 3273807, upload-time = "2025-05-14T17:55:26.928Z" }, - { url = "https://files.pythonhosted.org/packages/39/d8/79f2427251b44ddee18676c04eab038d043cff0e764d2d8bb08261d6135d/sqlalchemy-2.0.41-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:911cc493ebd60de5f285bcae0491a60b4f2a9f0f5c270edd1c4dbaef7a38fc04", size = 3209632, upload-time = "2025-05-14T17:51:59.384Z" }, - { url = "https://files.pythonhosted.org/packages/d4/16/730a82dda30765f63e0454918c982fb7193f6b398b31d63c7c3bd3652ae5/sqlalchemy-2.0.41-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:03968a349db483936c249f4d9cd14ff2c296adfa1290b660ba6516f973139582", size = 3233642, upload-time = "2025-05-14T17:55:29.901Z" }, - { url = "https://files.pythonhosted.org/packages/04/61/c0d4607f7799efa8b8ea3c49b4621e861c8f5c41fd4b5b636c534fcb7d73/sqlalchemy-2.0.41-cp311-cp311-win32.whl", hash = "sha256:293cd444d82b18da48c9f71cd7005844dbbd06ca19be1ccf6779154439eec0b8", size = 2086475, upload-time = "2025-05-14T17:56:02.095Z" }, - { url = "https://files.pythonhosted.org/packages/9d/8e/8344f8ae1cb6a479d0741c02cd4f666925b2bf02e2468ddaf5ce44111f30/sqlalchemy-2.0.41-cp311-cp311-win_amd64.whl", hash = "sha256:3d3549fc3e40667ec7199033a4e40a2f669898a00a7b18a931d3efb4c7900504", size = 2110903, upload-time = "2025-05-14T17:56:03.499Z" }, - { url = "https://files.pythonhosted.org/packages/3e/2a/f1f4e068b371154740dd10fb81afb5240d5af4aa0087b88d8b308b5429c2/sqlalchemy-2.0.41-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:81f413674d85cfd0dfcd6512e10e0f33c19c21860342a4890c3a2b59479929f9", size = 2119645, upload-time = "2025-05-14T17:55:24.854Z" }, - { url = "https://files.pythonhosted.org/packages/9b/e8/c664a7e73d36fbfc4730f8cf2bf930444ea87270f2825efbe17bf808b998/sqlalchemy-2.0.41-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:598d9ebc1e796431bbd068e41e4de4dc34312b7aa3292571bb3674a0cb415dd1", size = 2107399, upload-time = "2025-05-14T17:55:28.097Z" }, - { url = "https://files.pythonhosted.org/packages/5c/78/8a9cf6c5e7135540cb682128d091d6afa1b9e48bd049b0d691bf54114f70/sqlalchemy-2.0.41-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a104c5694dfd2d864a6f91b0956eb5d5883234119cb40010115fd45a16da5e70", size = 3293269, upload-time = "2025-05-14T17:50:38.227Z" }, - { url = "https://files.pythonhosted.org/packages/3c/35/f74add3978c20de6323fb11cb5162702670cc7a9420033befb43d8d5b7a4/sqlalchemy-2.0.41-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6145afea51ff0af7f2564a05fa95eb46f542919e6523729663a5d285ecb3cf5e", size = 3303364, upload-time = "2025-05-14T17:51:49.829Z" }, - { url = "https://files.pythonhosted.org/packages/6a/d4/c990f37f52c3f7748ebe98883e2a0f7d038108c2c5a82468d1ff3eec50b7/sqlalchemy-2.0.41-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b46fa6eae1cd1c20e6e6f44e19984d438b6b2d8616d21d783d150df714f44078", size = 3229072, upload-time = "2025-05-14T17:50:39.774Z" }, - { url = "https://files.pythonhosted.org/packages/15/69/cab11fecc7eb64bc561011be2bd03d065b762d87add52a4ca0aca2e12904/sqlalchemy-2.0.41-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41836fe661cc98abfae476e14ba1906220f92c4e528771a8a3ae6a151242d2ae", size = 3268074, upload-time = "2025-05-14T17:51:51.736Z" }, - { url = "https://files.pythonhosted.org/packages/5c/ca/0c19ec16858585d37767b167fc9602593f98998a68a798450558239fb04a/sqlalchemy-2.0.41-cp312-cp312-win32.whl", hash = "sha256:a8808d5cf866c781150d36a3c8eb3adccfa41a8105d031bf27e92c251e3969d6", size = 2084514, upload-time = "2025-05-14T17:55:49.915Z" }, - { url = "https://files.pythonhosted.org/packages/7f/23/4c2833d78ff3010a4e17f984c734f52b531a8c9060a50429c9d4b0211be6/sqlalchemy-2.0.41-cp312-cp312-win_amd64.whl", hash = "sha256:5b14e97886199c1f52c14629c11d90c11fbb09e9334fa7bb5f6d068d9ced0ce0", size = 2111557, upload-time = "2025-05-14T17:55:51.349Z" }, - { url = "https://files.pythonhosted.org/packages/d3/ad/2e1c6d4f235a97eeef52d0200d8ddda16f6c4dd70ae5ad88c46963440480/sqlalchemy-2.0.41-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4eeb195cdedaf17aab6b247894ff2734dcead6c08f748e617bfe05bd5a218443", size = 2115491, upload-time = "2025-05-14T17:55:31.177Z" }, - { url = "https://files.pythonhosted.org/packages/cf/8d/be490e5db8400dacc89056f78a52d44b04fbf75e8439569d5b879623a53b/sqlalchemy-2.0.41-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d4ae769b9c1c7757e4ccce94b0641bc203bbdf43ba7a2413ab2523d8d047d8dc", size = 2102827, upload-time = "2025-05-14T17:55:34.921Z" }, - { url = "https://files.pythonhosted.org/packages/a0/72/c97ad430f0b0e78efaf2791342e13ffeafcbb3c06242f01a3bb8fe44f65d/sqlalchemy-2.0.41-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a62448526dd9ed3e3beedc93df9bb6b55a436ed1474db31a2af13b313a70a7e1", size = 3225224, upload-time = "2025-05-14T17:50:41.418Z" }, - { url = "https://files.pythonhosted.org/packages/5e/51/5ba9ea3246ea068630acf35a6ba0d181e99f1af1afd17e159eac7e8bc2b8/sqlalchemy-2.0.41-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc56c9788617b8964ad02e8fcfeed4001c1f8ba91a9e1f31483c0dffb207002a", size = 3230045, upload-time = "2025-05-14T17:51:54.722Z" }, - { url = "https://files.pythonhosted.org/packages/78/2f/8c14443b2acea700c62f9b4a8bad9e49fc1b65cfb260edead71fd38e9f19/sqlalchemy-2.0.41-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c153265408d18de4cc5ded1941dcd8315894572cddd3c58df5d5b5705b3fa28d", size = 3159357, upload-time = "2025-05-14T17:50:43.483Z" }, - { url = "https://files.pythonhosted.org/packages/fc/b2/43eacbf6ccc5276d76cea18cb7c3d73e294d6fb21f9ff8b4eef9b42bbfd5/sqlalchemy-2.0.41-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f67766965996e63bb46cfbf2ce5355fc32d9dd3b8ad7e536a920ff9ee422e23", size = 3197511, upload-time = "2025-05-14T17:51:57.308Z" }, - { url = "https://files.pythonhosted.org/packages/fa/2e/677c17c5d6a004c3c45334ab1dbe7b7deb834430b282b8a0f75ae220c8eb/sqlalchemy-2.0.41-cp313-cp313-win32.whl", hash = "sha256:bfc9064f6658a3d1cadeaa0ba07570b83ce6801a1314985bf98ec9b95d74e15f", size = 2082420, upload-time = "2025-05-14T17:55:52.69Z" }, - { url = "https://files.pythonhosted.org/packages/e9/61/e8c1b9b6307c57157d328dd8b8348ddc4c47ffdf1279365a13b2b98b8049/sqlalchemy-2.0.41-cp313-cp313-win_amd64.whl", hash = "sha256:82ca366a844eb551daff9d2e6e7a9e5e76d2612c8564f58db6c19a726869c1df", size = 2108329, upload-time = "2025-05-14T17:55:54.495Z" }, - { url = "https://files.pythonhosted.org/packages/1c/fc/9ba22f01b5cdacc8f5ed0d22304718d2c758fce3fd49a5372b886a86f37c/sqlalchemy-2.0.41-py3-none-any.whl", hash = "sha256:57df5dc6fdb5ed1a88a1ed2195fd31927e705cad62dedd86b46972752a80f576", size = 1911224, upload-time = "2025-05-14T17:39:42.154Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/d7/bc/d59b5d97d27229b0e009bd9098cd81af71c2fa5549c580a0a67b9bed0496/sqlalchemy-2.0.43.tar.gz", hash = "sha256:788bfcef6787a7764169cfe9859fe425bf44559619e1d9f56f5bddf2ebf6f417", size = 9762949, upload-time = "2025-08-11T14:24:58.438Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8f/4e/985f7da36f09592c5ade99321c72c15101d23c0bb7eecfd1daaca5714422/sqlalchemy-2.0.43-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:70322986c0c699dca241418fcf18e637a4369e0ec50540a2b907b184c8bca069", size = 2133162, upload-time = "2025-08-11T15:52:17.854Z" }, + { url = "https://files.pythonhosted.org/packages/37/34/798af8db3cae069461e3bc0898a1610dc469386a97048471d364dc8aae1c/sqlalchemy-2.0.43-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:87accdbba88f33efa7b592dc2e8b2a9c2cdbca73db2f9d5c510790428c09c154", size = 2123082, upload-time = "2025-08-11T15:52:19.181Z" }, + { url = "https://files.pythonhosted.org/packages/fb/0f/79cf4d9dad42f61ec5af1e022c92f66c2d110b93bb1dc9b033892971abfa/sqlalchemy-2.0.43-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c00e7845d2f692ebfc7d5e4ec1a3fd87698e4337d09e58d6749a16aedfdf8612", size = 3208871, upload-time = "2025-08-11T15:50:30.656Z" }, + { url = "https://files.pythonhosted.org/packages/56/b3/59befa58fb0e1a9802c87df02344548e6d007e77e87e6084e2131c29e033/sqlalchemy-2.0.43-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:022e436a1cb39b13756cf93b48ecce7aa95382b9cfacceb80a7d263129dfd019", size = 3209583, upload-time = "2025-08-11T15:57:47.697Z" }, + { url = "https://files.pythonhosted.org/packages/29/d2/124b50c0eb8146e8f0fe16d01026c1a073844f0b454436d8544fe9b33bd7/sqlalchemy-2.0.43-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c5e73ba0d76eefc82ec0219d2301cb33bfe5205ed7a2602523111e2e56ccbd20", size = 3148177, upload-time = "2025-08-11T15:50:32.078Z" }, + { url = "https://files.pythonhosted.org/packages/83/f5/e369cd46aa84278107624617034a5825fedfc5c958b2836310ced4d2eadf/sqlalchemy-2.0.43-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9c2e02f06c68092b875d5cbe4824238ab93a7fa35d9c38052c033f7ca45daa18", size = 3172276, upload-time = "2025-08-11T15:57:49.477Z" }, + { url = "https://files.pythonhosted.org/packages/de/2b/4602bf4c3477fa4c837c9774e6dd22e0389fc52310c4c4dfb7e7ba05e90d/sqlalchemy-2.0.43-cp310-cp310-win32.whl", hash = "sha256:e7a903b5b45b0d9fa03ac6a331e1c1d6b7e0ab41c63b6217b3d10357b83c8b00", size = 2101491, upload-time = "2025-08-11T15:54:59.191Z" }, + { url = "https://files.pythonhosted.org/packages/38/2d/bfc6b6143adef553a08295490ddc52607ee435b9c751c714620c1b3dd44d/sqlalchemy-2.0.43-cp310-cp310-win_amd64.whl", hash = "sha256:4bf0edb24c128b7be0c61cd17eef432e4bef507013292415f3fb7023f02b7d4b", size = 2125148, upload-time = "2025-08-11T15:55:00.593Z" }, + { url = "https://files.pythonhosted.org/packages/9d/77/fa7189fe44114658002566c6fe443d3ed0ec1fa782feb72af6ef7fbe98e7/sqlalchemy-2.0.43-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:52d9b73b8fb3e9da34c2b31e6d99d60f5f99fd8c1225c9dad24aeb74a91e1d29", size = 2136472, upload-time = "2025-08-11T15:52:21.789Z" }, + { url = "https://files.pythonhosted.org/packages/99/ea/92ac27f2fbc2e6c1766bb807084ca455265707e041ba027c09c17d697867/sqlalchemy-2.0.43-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f42f23e152e4545157fa367b2435a1ace7571cab016ca26038867eb7df2c3631", size = 2126535, upload-time = "2025-08-11T15:52:23.109Z" }, + { url = "https://files.pythonhosted.org/packages/94/12/536ede80163e295dc57fff69724caf68f91bb40578b6ac6583a293534849/sqlalchemy-2.0.43-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4fb1a8c5438e0c5ea51afe9c6564f951525795cf432bed0c028c1cb081276685", size = 3297521, upload-time = "2025-08-11T15:50:33.536Z" }, + { url = "https://files.pythonhosted.org/packages/03/b5/cacf432e6f1fc9d156eca0560ac61d4355d2181e751ba8c0cd9cb232c8c1/sqlalchemy-2.0.43-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db691fa174e8f7036afefe3061bc40ac2b770718be2862bfb03aabae09051aca", size = 3297343, upload-time = "2025-08-11T15:57:51.186Z" }, + { url = "https://files.pythonhosted.org/packages/ca/ba/d4c9b526f18457667de4c024ffbc3a0920c34237b9e9dd298e44c7c00ee5/sqlalchemy-2.0.43-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:fe2b3b4927d0bc03d02ad883f402d5de201dbc8894ac87d2e981e7d87430e60d", size = 3232113, upload-time = "2025-08-11T15:50:34.949Z" }, + { url = "https://files.pythonhosted.org/packages/aa/79/c0121b12b1b114e2c8a10ea297a8a6d5367bc59081b2be896815154b1163/sqlalchemy-2.0.43-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4d3d9b904ad4a6b175a2de0738248822f5ac410f52c2fd389ada0b5262d6a1e3", size = 3258240, upload-time = "2025-08-11T15:57:52.983Z" }, + { url = "https://files.pythonhosted.org/packages/79/99/a2f9be96fb382f3ba027ad42f00dbe30fdb6ba28cda5f11412eee346bec5/sqlalchemy-2.0.43-cp311-cp311-win32.whl", hash = "sha256:5cda6b51faff2639296e276591808c1726c4a77929cfaa0f514f30a5f6156921", size = 2101248, upload-time = "2025-08-11T15:55:01.855Z" }, + { url = "https://files.pythonhosted.org/packages/ee/13/744a32ebe3b4a7a9c7ea4e57babae7aa22070d47acf330d8e5a1359607f1/sqlalchemy-2.0.43-cp311-cp311-win_amd64.whl", hash = "sha256:c5d1730b25d9a07727d20ad74bc1039bbbb0a6ca24e6769861c1aa5bf2c4c4a8", size = 2126109, upload-time = "2025-08-11T15:55:04.092Z" }, + { url = "https://files.pythonhosted.org/packages/61/db/20c78f1081446095450bdc6ee6cc10045fce67a8e003a5876b6eaafc5cc4/sqlalchemy-2.0.43-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:20d81fc2736509d7a2bd33292e489b056cbae543661bb7de7ce9f1c0cd6e7f24", size = 2134891, upload-time = "2025-08-11T15:51:13.019Z" }, + { url = "https://files.pythonhosted.org/packages/45/0a/3d89034ae62b200b4396f0f95319f7d86e9945ee64d2343dcad857150fa2/sqlalchemy-2.0.43-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:25b9fc27650ff5a2c9d490c13c14906b918b0de1f8fcbb4c992712d8caf40e83", size = 2123061, upload-time = "2025-08-11T15:51:14.319Z" }, + { url = "https://files.pythonhosted.org/packages/cb/10/2711f7ff1805919221ad5bee205971254845c069ee2e7036847103ca1e4c/sqlalchemy-2.0.43-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6772e3ca8a43a65a37c88e2f3e2adfd511b0b1da37ef11ed78dea16aeae85bd9", size = 3320384, upload-time = "2025-08-11T15:52:35.088Z" }, + { url = "https://files.pythonhosted.org/packages/6e/0e/3d155e264d2ed2778484006ef04647bc63f55b3e2d12e6a4f787747b5900/sqlalchemy-2.0.43-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a113da919c25f7f641ffbd07fbc9077abd4b3b75097c888ab818f962707eb48", size = 3329648, upload-time = "2025-08-11T15:56:34.153Z" }, + { url = "https://files.pythonhosted.org/packages/5b/81/635100fb19725c931622c673900da5efb1595c96ff5b441e07e3dd61f2be/sqlalchemy-2.0.43-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4286a1139f14b7d70141c67a8ae1582fc2b69105f1b09d9573494eb4bb4b2687", size = 3258030, upload-time = "2025-08-11T15:52:36.933Z" }, + { url = "https://files.pythonhosted.org/packages/0c/ed/a99302716d62b4965fded12520c1cbb189f99b17a6d8cf77611d21442e47/sqlalchemy-2.0.43-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:529064085be2f4d8a6e5fab12d36ad44f1909a18848fcfbdb59cc6d4bbe48efe", size = 3294469, upload-time = "2025-08-11T15:56:35.553Z" }, + { url = "https://files.pythonhosted.org/packages/5d/a2/3a11b06715149bf3310b55a98b5c1e84a42cfb949a7b800bc75cb4e33abc/sqlalchemy-2.0.43-cp312-cp312-win32.whl", hash = "sha256:b535d35dea8bbb8195e7e2b40059e2253acb2b7579b73c1b432a35363694641d", size = 2098906, upload-time = "2025-08-11T15:55:00.645Z" }, + { url = "https://files.pythonhosted.org/packages/bc/09/405c915a974814b90aa591280623adc6ad6b322f61fd5cff80aeaef216c9/sqlalchemy-2.0.43-cp312-cp312-win_amd64.whl", hash = "sha256:1c6d85327ca688dbae7e2b06d7d84cfe4f3fffa5b5f9e21bb6ce9d0e1a0e0e0a", size = 2126260, upload-time = "2025-08-11T15:55:02.965Z" }, + { url = "https://files.pythonhosted.org/packages/41/1c/a7260bd47a6fae7e03768bf66451437b36451143f36b285522b865987ced/sqlalchemy-2.0.43-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e7c08f57f75a2bb62d7ee80a89686a5e5669f199235c6d1dac75cd59374091c3", size = 2130598, upload-time = "2025-08-11T15:51:15.903Z" }, + { url = "https://files.pythonhosted.org/packages/8e/84/8a337454e82388283830b3586ad7847aa9c76fdd4f1df09cdd1f94591873/sqlalchemy-2.0.43-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:14111d22c29efad445cd5021a70a8b42f7d9152d8ba7f73304c4d82460946aaa", size = 2118415, upload-time = "2025-08-11T15:51:17.256Z" }, + { url = "https://files.pythonhosted.org/packages/cf/ff/22ab2328148492c4d71899d62a0e65370ea66c877aea017a244a35733685/sqlalchemy-2.0.43-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21b27b56eb2f82653168cefe6cb8e970cdaf4f3a6cb2c5e3c3c1cf3158968ff9", size = 3248707, upload-time = "2025-08-11T15:52:38.444Z" }, + { url = "https://files.pythonhosted.org/packages/dc/29/11ae2c2b981de60187f7cbc84277d9d21f101093d1b2e945c63774477aba/sqlalchemy-2.0.43-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c5a9da957c56e43d72126a3f5845603da00e0293720b03bde0aacffcf2dc04f", size = 3253602, upload-time = "2025-08-11T15:56:37.348Z" }, + { url = "https://files.pythonhosted.org/packages/b8/61/987b6c23b12c56d2be451bc70900f67dd7d989d52b1ee64f239cf19aec69/sqlalchemy-2.0.43-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5d79f9fdc9584ec83d1b3c75e9f4595c49017f5594fee1a2217117647225d738", size = 3183248, upload-time = "2025-08-11T15:52:39.865Z" }, + { url = "https://files.pythonhosted.org/packages/86/85/29d216002d4593c2ce1c0ec2cec46dda77bfbcd221e24caa6e85eff53d89/sqlalchemy-2.0.43-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9df7126fd9db49e3a5a3999442cc67e9ee8971f3cb9644250107d7296cb2a164", size = 3219363, upload-time = "2025-08-11T15:56:39.11Z" }, + { url = "https://files.pythonhosted.org/packages/b6/e4/bd78b01919c524f190b4905d47e7630bf4130b9f48fd971ae1c6225b6f6a/sqlalchemy-2.0.43-cp313-cp313-win32.whl", hash = "sha256:7f1ac7828857fcedb0361b48b9ac4821469f7694089d15550bbcf9ab22564a1d", size = 2096718, upload-time = "2025-08-11T15:55:05.349Z" }, + { url = "https://files.pythonhosted.org/packages/ac/a5/ca2f07a2a201f9497de1928f787926613db6307992fe5cda97624eb07c2f/sqlalchemy-2.0.43-cp313-cp313-win_amd64.whl", hash = "sha256:971ba928fcde01869361f504fcff3b7143b47d30de188b11c6357c0505824197", size = 2123200, upload-time = "2025-08-11T15:55:07.932Z" }, + { url = "https://files.pythonhosted.org/packages/b8/d9/13bdde6521f322861fab67473cec4b1cc8999f3871953531cf61945fad92/sqlalchemy-2.0.43-py3-none-any.whl", hash = "sha256:1681c21dd2ccee222c2fe0bef671d1aef7c504087c9c4e800371cfcc8ac966fc", size = 1924759, upload-time = "2025-08-11T15:39:53.024Z" }, ] [[package]] @@ -4533,7 +5542,8 @@ name = "tables" version = "3.10.2" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.12'", + "python_full_version >= '3.14'", + "python_full_version >= '3.12' and python_full_version < '3.14'", "python_full_version == '3.11.*'", ] dependencies = [ @@ -4666,21 +5676,21 @@ wheels = [ [[package]] name = "tornado" -version = "6.5.1" +version = "6.5.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/51/89/c72771c81d25d53fe33e3dca61c233b665b2780f21820ba6fd2c6793c12b/tornado-6.5.1.tar.gz", hash = "sha256:84ceece391e8eb9b2b95578db65e920d2a61070260594819589609ba9bc6308c", size = 509934, upload-time = "2025-05-22T18:15:38.788Z" } +sdist = { url = "https://files.pythonhosted.org/packages/09/ce/1eb500eae19f4648281bb2186927bb062d2438c2e5093d1360391afd2f90/tornado-6.5.2.tar.gz", hash = "sha256:ab53c8f9a0fa351e2c0741284e06c7a45da86afb544133201c5cc8578eb076a0", size = 510821, upload-time = "2025-08-08T18:27:00.78Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/77/89/f4532dee6843c9e0ebc4e28d4be04c67f54f60813e4bf73d595fe7567452/tornado-6.5.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d50065ba7fd11d3bd41bcad0825227cc9a95154bad83239357094c36708001f7", size = 441948, upload-time = "2025-05-22T18:15:20.862Z" }, - { url = "https://files.pythonhosted.org/packages/15/9a/557406b62cffa395d18772e0cdcf03bed2fff03b374677348eef9f6a3792/tornado-6.5.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e9ca370f717997cb85606d074b0e5b247282cf5e2e1611568b8821afe0342d6", size = 440112, upload-time = "2025-05-22T18:15:22.591Z" }, - { url = "https://files.pythonhosted.org/packages/55/82/7721b7319013a3cf881f4dffa4f60ceff07b31b394e459984e7a36dc99ec/tornado-6.5.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b77e9dfa7ed69754a54c89d82ef746398be82f749df69c4d3abe75c4d1ff4888", size = 443672, upload-time = "2025-05-22T18:15:24.027Z" }, - { url = "https://files.pythonhosted.org/packages/7d/42/d11c4376e7d101171b94e03cef0cbce43e823ed6567ceda571f54cf6e3ce/tornado-6.5.1-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253b76040ee3bab8bcf7ba9feb136436a3787208717a1fb9f2c16b744fba7331", size = 443019, upload-time = "2025-05-22T18:15:25.735Z" }, - { url = "https://files.pythonhosted.org/packages/7d/f7/0c48ba992d875521ac761e6e04b0a1750f8150ae42ea26df1852d6a98942/tornado-6.5.1-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:308473f4cc5a76227157cdf904de33ac268af770b2c5f05ca6c1161d82fdd95e", size = 443252, upload-time = "2025-05-22T18:15:27.499Z" }, - { url = "https://files.pythonhosted.org/packages/89/46/d8d7413d11987e316df4ad42e16023cd62666a3c0dfa1518ffa30b8df06c/tornado-6.5.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:caec6314ce8a81cf69bd89909f4b633b9f523834dc1a352021775d45e51d9401", size = 443930, upload-time = "2025-05-22T18:15:29.299Z" }, - { url = "https://files.pythonhosted.org/packages/78/b2/f8049221c96a06df89bed68260e8ca94beca5ea532ffc63b1175ad31f9cc/tornado-6.5.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:13ce6e3396c24e2808774741331638ee6c2f50b114b97a55c5b442df65fd9692", size = 443351, upload-time = "2025-05-22T18:15:31.038Z" }, - { url = "https://files.pythonhosted.org/packages/76/ff/6a0079e65b326cc222a54720a748e04a4db246870c4da54ece4577bfa702/tornado-6.5.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5cae6145f4cdf5ab24744526cc0f55a17d76f02c98f4cff9daa08ae9a217448a", size = 443328, upload-time = "2025-05-22T18:15:32.426Z" }, - { url = "https://files.pythonhosted.org/packages/49/18/e3f902a1d21f14035b5bc6246a8c0f51e0eef562ace3a2cea403c1fb7021/tornado-6.5.1-cp39-abi3-win32.whl", hash = "sha256:e0a36e1bc684dca10b1aa75a31df8bdfed656831489bc1e6a6ebed05dc1ec365", size = 444396, upload-time = "2025-05-22T18:15:34.205Z" }, - { url = "https://files.pythonhosted.org/packages/7b/09/6526e32bf1049ee7de3bebba81572673b19a2a8541f795d887e92af1a8bc/tornado-6.5.1-cp39-abi3-win_amd64.whl", hash = "sha256:908e7d64567cecd4c2b458075589a775063453aeb1d2a1853eedb806922f568b", size = 444840, upload-time = "2025-05-22T18:15:36.1Z" }, - { url = "https://files.pythonhosted.org/packages/55/a7/535c44c7bea4578e48281d83c615219f3ab19e6abc67625ef637c73987be/tornado-6.5.1-cp39-abi3-win_arm64.whl", hash = "sha256:02420a0eb7bf617257b9935e2b754d1b63897525d8a289c9d65690d580b4dcf7", size = 443596, upload-time = "2025-05-22T18:15:37.433Z" }, + { url = "https://files.pythonhosted.org/packages/f6/48/6a7529df2c9cc12efd2e8f5dd219516184d703b34c06786809670df5b3bd/tornado-6.5.2-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:2436822940d37cde62771cff8774f4f00b3c8024fe482e16ca8387b8a2724db6", size = 442563, upload-time = "2025-08-08T18:26:42.945Z" }, + { url = "https://files.pythonhosted.org/packages/f2/b5/9b575a0ed3e50b00c40b08cbce82eb618229091d09f6d14bce80fc01cb0b/tornado-6.5.2-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:583a52c7aa94ee046854ba81d9ebb6c81ec0fd30386d96f7640c96dad45a03ef", size = 440729, upload-time = "2025-08-08T18:26:44.473Z" }, + { url = "https://files.pythonhosted.org/packages/1b/4e/619174f52b120efcf23633c817fd3fed867c30bff785e2cd5a53a70e483c/tornado-6.5.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b0fe179f28d597deab2842b86ed4060deec7388f1fd9c1b4a41adf8af058907e", size = 444295, upload-time = "2025-08-08T18:26:46.021Z" }, + { url = "https://files.pythonhosted.org/packages/95/fa/87b41709552bbd393c85dd18e4e3499dcd8983f66e7972926db8d96aa065/tornado-6.5.2-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b186e85d1e3536d69583d2298423744740986018e393d0321df7340e71898882", size = 443644, upload-time = "2025-08-08T18:26:47.625Z" }, + { url = "https://files.pythonhosted.org/packages/f9/41/fb15f06e33d7430ca89420283a8762a4e6b8025b800ea51796ab5e6d9559/tornado-6.5.2-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e792706668c87709709c18b353da1f7662317b563ff69f00bab83595940c7108", size = 443878, upload-time = "2025-08-08T18:26:50.599Z" }, + { url = "https://files.pythonhosted.org/packages/11/92/fe6d57da897776ad2e01e279170ea8ae726755b045fe5ac73b75357a5a3f/tornado-6.5.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:06ceb1300fd70cb20e43b1ad8aaee0266e69e7ced38fa910ad2e03285009ce7c", size = 444549, upload-time = "2025-08-08T18:26:51.864Z" }, + { url = "https://files.pythonhosted.org/packages/9b/02/c8f4f6c9204526daf3d760f4aa555a7a33ad0e60843eac025ccfd6ff4a93/tornado-6.5.2-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:74db443e0f5251be86cbf37929f84d8c20c27a355dd452a5cfa2aada0d001ec4", size = 443973, upload-time = "2025-08-08T18:26:53.625Z" }, + { url = "https://files.pythonhosted.org/packages/ae/2d/f5f5707b655ce2317190183868cd0f6822a1121b4baeae509ceb9590d0bd/tornado-6.5.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b5e735ab2889d7ed33b32a459cac490eda71a1ba6857b0118de476ab6c366c04", size = 443954, upload-time = "2025-08-08T18:26:55.072Z" }, + { url = "https://files.pythonhosted.org/packages/e8/59/593bd0f40f7355806bf6573b47b8c22f8e1374c9b6fd03114bd6b7a3dcfd/tornado-6.5.2-cp39-abi3-win32.whl", hash = "sha256:c6f29e94d9b37a95013bb669616352ddb82e3bfe8326fccee50583caebc8a5f0", size = 445023, upload-time = "2025-08-08T18:26:56.677Z" }, + { url = "https://files.pythonhosted.org/packages/c7/2a/f609b420c2f564a748a2d80ebfb2ee02a73ca80223af712fca591386cafb/tornado-6.5.2-cp39-abi3-win_amd64.whl", hash = "sha256:e56a5af51cc30dd2cae649429af65ca2f6571da29504a07995175df14c18f35f", size = 445427, upload-time = "2025-08-08T18:26:57.91Z" }, + { url = "https://files.pythonhosted.org/packages/5e/4f/e1f65e8f8c76d73658b33d33b81eed4322fb5085350e4328d5c956f0c8f9/tornado-6.5.2-cp39-abi3-win_arm64.whl", hash = "sha256:d6c33dc3672e3a1f3618eb63b7ef4683a7688e7b9e6e8f0d9aa5726360a004af", size = 444456, upload-time = "2025-08-08T18:26:59.207Z" }, ] [[package]] @@ -4706,32 +5716,32 @@ wheels = [ [[package]] name = "typeguard" -version = "4.4.3" +version = "4.4.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/34/53/f701077a29ddf65ed4556119961ef517d767c07f15f6cdf0717ad985426b/typeguard-4.4.3.tar.gz", hash = "sha256:be72b9c85f322c20459b29060c5c099cd733d5886c4ee14297795e62b0c0d59b", size = 75072, upload-time = "2025-06-04T21:47:07.733Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c7/68/71c1a15b5f65f40e91b65da23b8224dad41349894535a97f63a52e462196/typeguard-4.4.4.tar.gz", hash = "sha256:3a7fd2dffb705d4d0efaed4306a704c89b9dee850b688f060a8b1615a79e5f74", size = 75203, upload-time = "2025-06-18T09:56:07.624Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5c/18/662e2a14fcdbbc9e7842ad801a7f9292fcd6cf7df43af94e59ac9c0da9af/typeguard-4.4.3-py3-none-any.whl", hash = "sha256:7d8b4a3d280257fd1aa29023f22de64e29334bda0b172ff1040f05682223795e", size = 34855, upload-time = "2025-06-04T21:47:03.683Z" }, + { url = "https://files.pythonhosted.org/packages/1b/a9/e3aee762739c1d7528da1c3e06d518503f8b6c439c35549b53735ba52ead/typeguard-4.4.4-py3-none-any.whl", hash = "sha256:b5f562281b6bfa1f5492470464730ef001646128b180769880468bd84b68b09e", size = 34874, upload-time = "2025-06-18T09:56:05.999Z" }, ] [[package]] name = "types-python-dateutil" -version = "2.9.0.20250516" +version = "2.9.0.20250822" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ef/88/d65ed807393285204ab6e2801e5d11fbbea811adcaa979a2ed3b67a5ef41/types_python_dateutil-2.9.0.20250516.tar.gz", hash = "sha256:13e80d6c9c47df23ad773d54b2826bd52dbbb41be87c3f339381c1700ad21ee5", size = 13943, upload-time = "2025-05-16T03:06:58.385Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0c/0a/775f8551665992204c756be326f3575abba58c4a3a52eef9909ef4536428/types_python_dateutil-2.9.0.20250822.tar.gz", hash = "sha256:84c92c34bd8e68b117bff742bc00b692a1e8531262d4507b33afcc9f7716cd53", size = 16084, upload-time = "2025-08-22T03:02:00.613Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c5/3f/b0e8db149896005adc938a1e7f371d6d7e9eca4053a29b108978ed15e0c2/types_python_dateutil-2.9.0.20250516-py3-none-any.whl", hash = "sha256:2b2b3f57f9c6a61fba26a9c0ffb9ea5681c9b83e69cd897c6b5f668d9c0cab93", size = 14356, upload-time = "2025-05-16T03:06:57.249Z" }, + { url = "https://files.pythonhosted.org/packages/ab/d9/a29dfa84363e88b053bf85a8b7f212a04f0d7343a4d24933baa45c06e08b/types_python_dateutil-2.9.0.20250822-py3-none-any.whl", hash = "sha256:849d52b737e10a6dc6621d2bd7940ec7c65fcb69e6aa2882acf4e56b2b508ddc", size = 17892, upload-time = "2025-08-22T03:01:59.436Z" }, ] [[package]] name = "typing-extensions" -version = "4.14.0" +version = "4.15.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d1/bc/51647cd02527e87d05cb083ccc402f93e441606ff1f01739a62c8ad09ba5/typing_extensions-4.14.0.tar.gz", hash = "sha256:8676b788e32f02ab42d9e7c61324048ae4c6d844a399eebace3d4979d75ceef4", size = 107423, upload-time = "2025-06-02T14:52:11.399Z" } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/69/e0/552843e0d356fbb5256d21449fa957fa4eff3bbc135a74a691ee70c7c5da/typing_extensions-4.14.0-py3-none-any.whl", hash = "sha256:a1514509136dd0b477638fc68d6a91497af5076466ad0fa6c338e44e359944af", size = 43839, upload-time = "2025-06-02T14:52:10.026Z" }, + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, ] [[package]] @@ -4747,6 +5757,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/65/f3/107a22063bf27bdccf2024833d3445f4eea42b2e598abfbd46f6a63b6cb0/typing_inspect-0.9.0-py3-none-any.whl", hash = "sha256:9ee6fc59062311ef8547596ab6b955e1b8aa46242d854bfc78f4f6b0eff35f9f", size = 8827, upload-time = "2023-05-24T20:25:45.287Z" }, ] +[[package]] +name = "typing-inspection" +version = "0.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726, upload-time = "2025-05-21T18:55:23.885Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552, upload-time = "2025-05-21T18:55:22.152Z" }, +] + [[package]] name = "tzdata" version = "2025.2" @@ -4776,34 +5798,44 @@ wheels = [ [[package]] name = "urllib3" -version = "2.4.0" +version = "2.5.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8a/78/16493d9c386d8e60e442a35feac5e00f0913c0f4b7c217c11e8ec2ff53e0/urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466", size = 390672, upload-time = "2025-04-10T15:23:39.232Z" } +sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", size = 393185, upload-time = "2025-06-18T14:07:41.644Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/11/cc635220681e93a0183390e26485430ca2c7b5f9d33b15c74c2861cb8091/urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813", size = 128680, upload-time = "2025-04-10T15:23:37.377Z" }, + { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795, upload-time = "2025-06-18T14:07:40.39Z" }, ] [[package]] name = "virtualenv" -version = "20.31.2" +version = "20.34.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "distlib" }, { name = "filelock" }, { name = "platformdirs" }, + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1c/14/37fcdba2808a6c615681cd216fecae00413c9dab44fb2e57805ecf3eaee3/virtualenv-20.34.0.tar.gz", hash = "sha256:44815b2c9dee7ed86e387b842a84f20b93f7f417f95886ca1996a72a4138eb1a", size = 6003808, upload-time = "2025-08-13T14:24:07.464Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/06/04c8e804f813cf972e3262f3f8584c232de64f0cde9f703b46cf53a45090/virtualenv-20.34.0-py3-none-any.whl", hash = "sha256:341f5afa7eee943e4984a9207c025feedd768baff6753cd660c857ceb3e36026", size = 5983279, upload-time = "2025-08-13T14:24:05.111Z" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/56/2c/444f465fb2c65f40c3a104fd0c495184c4f2336d65baf398e3c75d72ea94/virtualenv-20.31.2.tar.gz", hash = "sha256:e10c0a9d02835e592521be48b332b6caee6887f332c111aa79a09b9e79efc2af", size = 6076316, upload-time = "2025-05-08T17:58:23.811Z" } + +[[package]] +name = "waitress" +version = "3.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bf/cb/04ddb054f45faa306a230769e868c28b8065ea196891f09004ebace5b184/waitress-3.0.2.tar.gz", hash = "sha256:682aaaf2af0c44ada4abfb70ded36393f0e307f4ab9456a215ce0020baefc31f", size = 179901, upload-time = "2024-11-16T20:02:35.195Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f3/40/b1c265d4b2b62b58576588510fc4d1fe60a86319c8de99fd8e9fec617d2c/virtualenv-20.31.2-py3-none-any.whl", hash = "sha256:36efd0d9650ee985f0cad72065001e66d49a6f24eb44d98980f630686243cf11", size = 6057982, upload-time = "2025-05-08T17:58:21.15Z" }, + { url = "https://files.pythonhosted.org/packages/8d/57/a27182528c90ef38d82b636a11f606b0cbb0e17588ed205435f8affe3368/waitress-3.0.2-py3-none-any.whl", hash = "sha256:c56d67fd6e87c2ee598b76abdd4e96cfad1f24cacdea5078d382b1f9d7b5ed2e", size = 56232, upload-time = "2024-11-16T20:02:33.858Z" }, ] [[package]] name = "wcwidth" -version = "0.2.13" +version = "0.2.14" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6c/63/53559446a878410fc5a5974feb13d31d78d752eb18aeba59c7fef1af7598/wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5", size = 101301, upload-time = "2024-01-06T02:10:57.829Z" } +sdist = { url = "https://files.pythonhosted.org/packages/24/30/6b0809f4510673dc723187aeaf24c7f5459922d01e2f794277a3dfb90345/wcwidth-0.2.14.tar.gz", hash = "sha256:4d478375d31bc5395a3c55c40ccdf3354688364cd61c4f6adacaa9215d0b3605", size = 102293, upload-time = "2025-09-22T16:29:53.023Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166, upload-time = "2024-01-06T02:10:55.763Z" }, + { url = "https://files.pythonhosted.org/packages/af/b5/123f13c975e9f27ab9c0770f514345bd406d0e8d3b7a0723af9d43f710af/wcwidth-0.2.14-py2.py3-none-any.whl", hash = "sha256:a7bb560c8aee30f9957e5f9895805edd20602f2d7f720186dfd906e82b4982e1", size = 37286, upload-time = "2025-09-22T16:29:51.641Z" }, ] [[package]] @@ -4833,6 +5865,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526", size = 58826, upload-time = "2024-04-23T22:16:14.422Z" }, ] +[[package]] +name = "werkzeug" +version = "3.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9f/69/83029f1f6300c5fb2471d621ab06f6ec6b3324685a2ce0f9777fd4a8b71e/werkzeug-3.1.3.tar.gz", hash = "sha256:60723ce945c19328679790e3282cc758aa4a6040e4bb330f53d30fa546d44746", size = 806925, upload-time = "2024-11-08T15:52:18.093Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/52/24/ab44c871b0f07f491e5d2ad12c9bd7358e527510618cb1b803a88e986db1/werkzeug-3.1.3-py3-none-any.whl", hash = "sha256:54b78bf3716d19a65be4fceccc0d1d7b89e608834989dfae50ea87564639213e", size = 224498, upload-time = "2024-11-08T15:52:16.132Z" }, +] + [[package]] name = "wheel" version = "0.45.1" @@ -4844,81 +5888,86 @@ wheels = [ [[package]] name = "wrapt" -version = "1.17.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c3/fc/e91cc220803d7bc4db93fb02facd8461c37364151b8494762cc88b0fbcef/wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3", size = 55531, upload-time = "2025-01-14T10:35:45.465Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/d1/1daec934997e8b160040c78d7b31789f19b122110a75eca3d4e8da0049e1/wrapt-1.17.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3d57c572081fed831ad2d26fd430d565b76aa277ed1d30ff4d40670b1c0dd984", size = 53307, upload-time = "2025-01-14T10:33:13.616Z" }, - { url = "https://files.pythonhosted.org/packages/1b/7b/13369d42651b809389c1a7153baa01d9700430576c81a2f5c5e460df0ed9/wrapt-1.17.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5e251054542ae57ac7f3fba5d10bfff615b6c2fb09abeb37d2f1463f841ae22", size = 38486, upload-time = "2025-01-14T10:33:15.947Z" }, - { url = "https://files.pythonhosted.org/packages/62/bf/e0105016f907c30b4bd9e377867c48c34dc9c6c0c104556c9c9126bd89ed/wrapt-1.17.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:80dd7db6a7cb57ffbc279c4394246414ec99537ae81ffd702443335a61dbf3a7", size = 38777, upload-time = "2025-01-14T10:33:17.462Z" }, - { url = "https://files.pythonhosted.org/packages/27/70/0f6e0679845cbf8b165e027d43402a55494779295c4b08414097b258ac87/wrapt-1.17.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a6e821770cf99cc586d33833b2ff32faebdbe886bd6322395606cf55153246c", size = 83314, upload-time = "2025-01-14T10:33:21.282Z" }, - { url = "https://files.pythonhosted.org/packages/0f/77/0576d841bf84af8579124a93d216f55d6f74374e4445264cb378a6ed33eb/wrapt-1.17.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b60fb58b90c6d63779cb0c0c54eeb38941bae3ecf7a73c764c52c88c2dcb9d72", size = 74947, upload-time = "2025-01-14T10:33:24.414Z" }, - { url = "https://files.pythonhosted.org/packages/90/ec/00759565518f268ed707dcc40f7eeec38637d46b098a1f5143bff488fe97/wrapt-1.17.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b870b5df5b71d8c3359d21be8f0d6c485fa0ebdb6477dda51a1ea54a9b558061", size = 82778, upload-time = "2025-01-14T10:33:26.152Z" }, - { url = "https://files.pythonhosted.org/packages/f8/5a/7cffd26b1c607b0b0c8a9ca9d75757ad7620c9c0a9b4a25d3f8a1480fafc/wrapt-1.17.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4011d137b9955791f9084749cba9a367c68d50ab8d11d64c50ba1688c9b457f2", size = 81716, upload-time = "2025-01-14T10:33:27.372Z" }, - { url = "https://files.pythonhosted.org/packages/7e/09/dccf68fa98e862df7e6a60a61d43d644b7d095a5fc36dbb591bbd4a1c7b2/wrapt-1.17.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:1473400e5b2733e58b396a04eb7f35f541e1fb976d0c0724d0223dd607e0f74c", size = 74548, upload-time = "2025-01-14T10:33:28.52Z" }, - { url = "https://files.pythonhosted.org/packages/b7/8e/067021fa3c8814952c5e228d916963c1115b983e21393289de15128e867e/wrapt-1.17.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3cedbfa9c940fdad3e6e941db7138e26ce8aad38ab5fe9dcfadfed9db7a54e62", size = 81334, upload-time = "2025-01-14T10:33:29.643Z" }, - { url = "https://files.pythonhosted.org/packages/4b/0d/9d4b5219ae4393f718699ca1c05f5ebc0c40d076f7e65fd48f5f693294fb/wrapt-1.17.2-cp310-cp310-win32.whl", hash = "sha256:582530701bff1dec6779efa00c516496968edd851fba224fbd86e46cc6b73563", size = 36427, upload-time = "2025-01-14T10:33:30.832Z" }, - { url = "https://files.pythonhosted.org/packages/72/6a/c5a83e8f61aec1e1aeef939807602fb880e5872371e95df2137142f5c58e/wrapt-1.17.2-cp310-cp310-win_amd64.whl", hash = "sha256:58705da316756681ad3c9c73fd15499aa4d8c69f9fd38dc8a35e06c12468582f", size = 38774, upload-time = "2025-01-14T10:33:32.897Z" }, - { url = "https://files.pythonhosted.org/packages/cd/f7/a2aab2cbc7a665efab072344a8949a71081eed1d2f451f7f7d2b966594a2/wrapt-1.17.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ff04ef6eec3eee8a5efef2401495967a916feaa353643defcc03fc74fe213b58", size = 53308, upload-time = "2025-01-14T10:33:33.992Z" }, - { url = "https://files.pythonhosted.org/packages/50/ff/149aba8365fdacef52b31a258c4dc1c57c79759c335eff0b3316a2664a64/wrapt-1.17.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db983e7bca53819efdbd64590ee96c9213894272c776966ca6306b73e4affda", size = 38488, upload-time = "2025-01-14T10:33:35.264Z" }, - { url = "https://files.pythonhosted.org/packages/65/46/5a917ce85b5c3b490d35c02bf71aedaa9f2f63f2d15d9949cc4ba56e8ba9/wrapt-1.17.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9abc77a4ce4c6f2a3168ff34b1da9b0f311a8f1cfd694ec96b0603dff1c79438", size = 38776, upload-time = "2025-01-14T10:33:38.28Z" }, - { url = "https://files.pythonhosted.org/packages/ca/74/336c918d2915a4943501c77566db41d1bd6e9f4dbc317f356b9a244dfe83/wrapt-1.17.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b929ac182f5ace000d459c59c2c9c33047e20e935f8e39371fa6e3b85d56f4a", size = 83776, upload-time = "2025-01-14T10:33:40.678Z" }, - { url = "https://files.pythonhosted.org/packages/09/99/c0c844a5ccde0fe5761d4305485297f91d67cf2a1a824c5f282e661ec7ff/wrapt-1.17.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f09b286faeff3c750a879d336fb6d8713206fc97af3adc14def0cdd349df6000", size = 75420, upload-time = "2025-01-14T10:33:41.868Z" }, - { url = "https://files.pythonhosted.org/packages/b4/b0/9fc566b0fe08b282c850063591a756057c3247b2362b9286429ec5bf1721/wrapt-1.17.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a7ed2d9d039bd41e889f6fb9364554052ca21ce823580f6a07c4ec245c1f5d6", size = 83199, upload-time = "2025-01-14T10:33:43.598Z" }, - { url = "https://files.pythonhosted.org/packages/9d/4b/71996e62d543b0a0bd95dda485219856def3347e3e9380cc0d6cf10cfb2f/wrapt-1.17.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:129a150f5c445165ff941fc02ee27df65940fcb8a22a61828b1853c98763a64b", size = 82307, upload-time = "2025-01-14T10:33:48.499Z" }, - { url = "https://files.pythonhosted.org/packages/39/35/0282c0d8789c0dc9bcc738911776c762a701f95cfe113fb8f0b40e45c2b9/wrapt-1.17.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1fb5699e4464afe5c7e65fa51d4f99e0b2eadcc176e4aa33600a3df7801d6662", size = 75025, upload-time = "2025-01-14T10:33:51.191Z" }, - { url = "https://files.pythonhosted.org/packages/4f/6d/90c9fd2c3c6fee181feecb620d95105370198b6b98a0770cba090441a828/wrapt-1.17.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9a2bce789a5ea90e51a02dfcc39e31b7f1e662bc3317979aa7e5538e3a034f72", size = 81879, upload-time = "2025-01-14T10:33:52.328Z" }, - { url = "https://files.pythonhosted.org/packages/8f/fa/9fb6e594f2ce03ef03eddbdb5f4f90acb1452221a5351116c7c4708ac865/wrapt-1.17.2-cp311-cp311-win32.whl", hash = "sha256:4afd5814270fdf6380616b321fd31435a462019d834f83c8611a0ce7484c7317", size = 36419, upload-time = "2025-01-14T10:33:53.551Z" }, - { url = "https://files.pythonhosted.org/packages/47/f8/fb1773491a253cbc123c5d5dc15c86041f746ed30416535f2a8df1f4a392/wrapt-1.17.2-cp311-cp311-win_amd64.whl", hash = "sha256:acc130bc0375999da18e3d19e5a86403667ac0c4042a094fefb7eec8ebac7cf3", size = 38773, upload-time = "2025-01-14T10:33:56.323Z" }, - { url = "https://files.pythonhosted.org/packages/a1/bd/ab55f849fd1f9a58ed7ea47f5559ff09741b25f00c191231f9f059c83949/wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925", size = 53799, upload-time = "2025-01-14T10:33:57.4Z" }, - { url = "https://files.pythonhosted.org/packages/53/18/75ddc64c3f63988f5a1d7e10fb204ffe5762bc663f8023f18ecaf31a332e/wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392", size = 38821, upload-time = "2025-01-14T10:33:59.334Z" }, - { url = "https://files.pythonhosted.org/packages/48/2a/97928387d6ed1c1ebbfd4efc4133a0633546bec8481a2dd5ec961313a1c7/wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40", size = 38919, upload-time = "2025-01-14T10:34:04.093Z" }, - { url = "https://files.pythonhosted.org/packages/73/54/3bfe5a1febbbccb7a2f77de47b989c0b85ed3a6a41614b104204a788c20e/wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d", size = 88721, upload-time = "2025-01-14T10:34:07.163Z" }, - { url = "https://files.pythonhosted.org/packages/25/cb/7262bc1b0300b4b64af50c2720ef958c2c1917525238d661c3e9a2b71b7b/wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b", size = 80899, upload-time = "2025-01-14T10:34:09.82Z" }, - { url = "https://files.pythonhosted.org/packages/2a/5a/04cde32b07a7431d4ed0553a76fdb7a61270e78c5fd5a603e190ac389f14/wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98", size = 89222, upload-time = "2025-01-14T10:34:11.258Z" }, - { url = "https://files.pythonhosted.org/packages/09/28/2e45a4f4771fcfb109e244d5dbe54259e970362a311b67a965555ba65026/wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82", size = 86707, upload-time = "2025-01-14T10:34:12.49Z" }, - { url = "https://files.pythonhosted.org/packages/c6/d2/dcb56bf5f32fcd4bd9aacc77b50a539abdd5b6536872413fd3f428b21bed/wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae", size = 79685, upload-time = "2025-01-14T10:34:15.043Z" }, - { url = "https://files.pythonhosted.org/packages/80/4e/eb8b353e36711347893f502ce91c770b0b0929f8f0bed2670a6856e667a9/wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9", size = 87567, upload-time = "2025-01-14T10:34:16.563Z" }, - { url = "https://files.pythonhosted.org/packages/17/27/4fe749a54e7fae6e7146f1c7d914d28ef599dacd4416566c055564080fe2/wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9", size = 36672, upload-time = "2025-01-14T10:34:17.727Z" }, - { url = "https://files.pythonhosted.org/packages/15/06/1dbf478ea45c03e78a6a8c4be4fdc3c3bddea5c8de8a93bc971415e47f0f/wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991", size = 38865, upload-time = "2025-01-14T10:34:19.577Z" }, - { url = "https://files.pythonhosted.org/packages/ce/b9/0ffd557a92f3b11d4c5d5e0c5e4ad057bd9eb8586615cdaf901409920b14/wrapt-1.17.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6ed6ffac43aecfe6d86ec5b74b06a5be33d5bb9243d055141e8cabb12aa08125", size = 53800, upload-time = "2025-01-14T10:34:21.571Z" }, - { url = "https://files.pythonhosted.org/packages/c0/ef/8be90a0b7e73c32e550c73cfb2fa09db62234227ece47b0e80a05073b375/wrapt-1.17.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:35621ae4c00e056adb0009f8e86e28eb4a41a4bfa8f9bfa9fca7d343fe94f998", size = 38824, upload-time = "2025-01-14T10:34:22.999Z" }, - { url = "https://files.pythonhosted.org/packages/36/89/0aae34c10fe524cce30fe5fc433210376bce94cf74d05b0d68344c8ba46e/wrapt-1.17.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a604bf7a053f8362d27eb9fefd2097f82600b856d5abe996d623babd067b1ab5", size = 38920, upload-time = "2025-01-14T10:34:25.386Z" }, - { url = "https://files.pythonhosted.org/packages/3b/24/11c4510de906d77e0cfb5197f1b1445d4fec42c9a39ea853d482698ac681/wrapt-1.17.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cbabee4f083b6b4cd282f5b817a867cf0b1028c54d445b7ec7cfe6505057cf8", size = 88690, upload-time = "2025-01-14T10:34:28.058Z" }, - { url = "https://files.pythonhosted.org/packages/71/d7/cfcf842291267bf455b3e266c0c29dcb675b5540ee8b50ba1699abf3af45/wrapt-1.17.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49703ce2ddc220df165bd2962f8e03b84c89fee2d65e1c24a7defff6f988f4d6", size = 80861, upload-time = "2025-01-14T10:34:29.167Z" }, - { url = "https://files.pythonhosted.org/packages/d5/66/5d973e9f3e7370fd686fb47a9af3319418ed925c27d72ce16b791231576d/wrapt-1.17.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8112e52c5822fc4253f3901b676c55ddf288614dc7011634e2719718eaa187dc", size = 89174, upload-time = "2025-01-14T10:34:31.702Z" }, - { url = "https://files.pythonhosted.org/packages/a7/d3/8e17bb70f6ae25dabc1aaf990f86824e4fd98ee9cadf197054e068500d27/wrapt-1.17.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9fee687dce376205d9a494e9c121e27183b2a3df18037f89d69bd7b35bcf59e2", size = 86721, upload-time = "2025-01-14T10:34:32.91Z" }, - { url = "https://files.pythonhosted.org/packages/6f/54/f170dfb278fe1c30d0ff864513cff526d624ab8de3254b20abb9cffedc24/wrapt-1.17.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:18983c537e04d11cf027fbb60a1e8dfd5190e2b60cc27bc0808e653e7b218d1b", size = 79763, upload-time = "2025-01-14T10:34:34.903Z" }, - { url = "https://files.pythonhosted.org/packages/4a/98/de07243751f1c4a9b15c76019250210dd3486ce098c3d80d5f729cba029c/wrapt-1.17.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:703919b1633412ab54bcf920ab388735832fdcb9f9a00ae49387f0fe67dad504", size = 87585, upload-time = "2025-01-14T10:34:36.13Z" }, - { url = "https://files.pythonhosted.org/packages/f9/f0/13925f4bd6548013038cdeb11ee2cbd4e37c30f8bfd5db9e5a2a370d6e20/wrapt-1.17.2-cp313-cp313-win32.whl", hash = "sha256:abbb9e76177c35d4e8568e58650aa6926040d6a9f6f03435b7a522bf1c487f9a", size = 36676, upload-time = "2025-01-14T10:34:37.962Z" }, - { url = "https://files.pythonhosted.org/packages/bf/ae/743f16ef8c2e3628df3ddfd652b7d4c555d12c84b53f3d8218498f4ade9b/wrapt-1.17.2-cp313-cp313-win_amd64.whl", hash = "sha256:69606d7bb691b50a4240ce6b22ebb319c1cfb164e5f6569835058196e0f3a845", size = 38871, upload-time = "2025-01-14T10:34:39.13Z" }, - { url = "https://files.pythonhosted.org/packages/3d/bc/30f903f891a82d402ffb5fda27ec1d621cc97cb74c16fea0b6141f1d4e87/wrapt-1.17.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:4a721d3c943dae44f8e243b380cb645a709ba5bd35d3ad27bc2ed947e9c68192", size = 56312, upload-time = "2025-01-14T10:34:40.604Z" }, - { url = "https://files.pythonhosted.org/packages/8a/04/c97273eb491b5f1c918857cd26f314b74fc9b29224521f5b83f872253725/wrapt-1.17.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:766d8bbefcb9e00c3ac3b000d9acc51f1b399513f44d77dfe0eb026ad7c9a19b", size = 40062, upload-time = "2025-01-14T10:34:45.011Z" }, - { url = "https://files.pythonhosted.org/packages/4e/ca/3b7afa1eae3a9e7fefe499db9b96813f41828b9fdb016ee836c4c379dadb/wrapt-1.17.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e496a8ce2c256da1eb98bd15803a79bee00fc351f5dfb9ea82594a3f058309e0", size = 40155, upload-time = "2025-01-14T10:34:47.25Z" }, - { url = "https://files.pythonhosted.org/packages/89/be/7c1baed43290775cb9030c774bc53c860db140397047cc49aedaf0a15477/wrapt-1.17.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d615e4fe22f4ad3528448c193b218e077656ca9ccb22ce2cb20db730f8d306", size = 113471, upload-time = "2025-01-14T10:34:50.934Z" }, - { url = "https://files.pythonhosted.org/packages/32/98/4ed894cf012b6d6aae5f5cc974006bdeb92f0241775addad3f8cd6ab71c8/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a5aaeff38654462bc4b09023918b7f21790efb807f54c000a39d41d69cf552cb", size = 101208, upload-time = "2025-01-14T10:34:52.297Z" }, - { url = "https://files.pythonhosted.org/packages/ea/fd/0c30f2301ca94e655e5e057012e83284ce8c545df7661a78d8bfca2fac7a/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a7d15bbd2bc99e92e39f49a04653062ee6085c0e18b3b7512a4f2fe91f2d681", size = 109339, upload-time = "2025-01-14T10:34:53.489Z" }, - { url = "https://files.pythonhosted.org/packages/75/56/05d000de894c4cfcb84bcd6b1df6214297b8089a7bd324c21a4765e49b14/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e3890b508a23299083e065f435a492b5435eba6e304a7114d2f919d400888cc6", size = 110232, upload-time = "2025-01-14T10:34:55.327Z" }, - { url = "https://files.pythonhosted.org/packages/53/f8/c3f6b2cf9b9277fb0813418e1503e68414cd036b3b099c823379c9575e6d/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8c8b293cd65ad716d13d8dd3624e42e5a19cc2a2f1acc74b30c2c13f15cb61a6", size = 100476, upload-time = "2025-01-14T10:34:58.055Z" }, - { url = "https://files.pythonhosted.org/packages/a7/b1/0bb11e29aa5139d90b770ebbfa167267b1fc548d2302c30c8f7572851738/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c82b8785d98cdd9fed4cac84d765d234ed3251bd6afe34cb7ac523cb93e8b4f", size = 106377, upload-time = "2025-01-14T10:34:59.3Z" }, - { url = "https://files.pythonhosted.org/packages/6a/e1/0122853035b40b3f333bbb25f1939fc1045e21dd518f7f0922b60c156f7c/wrapt-1.17.2-cp313-cp313t-win32.whl", hash = "sha256:13e6afb7fe71fe7485a4550a8844cc9ffbe263c0f1a1eea569bc7091d4898555", size = 37986, upload-time = "2025-01-14T10:35:00.498Z" }, - { url = "https://files.pythonhosted.org/packages/09/5e/1655cf481e079c1f22d0cabdd4e51733679932718dc23bf2db175f329b76/wrapt-1.17.2-cp313-cp313t-win_amd64.whl", hash = "sha256:eaf675418ed6b3b31c7a989fd007fa7c3be66ce14e5c3b27336383604c9da85c", size = 40750, upload-time = "2025-01-14T10:35:03.378Z" }, - { url = "https://files.pythonhosted.org/packages/2d/82/f56956041adef78f849db6b289b282e72b55ab8045a75abad81898c28d19/wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", size = 23594, upload-time = "2025-01-14T10:35:44.018Z" }, +version = "1.17.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/95/8f/aeb76c5b46e273670962298c23e7ddde79916cb74db802131d49a85e4b7d/wrapt-1.17.3.tar.gz", hash = "sha256:f66eb08feaa410fe4eebd17f2a2c8e2e46d3476e9f8c783daa8e09e0faa666d0", size = 55547, upload-time = "2025-08-12T05:53:21.714Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/23/bb82321b86411eb51e5a5db3fb8f8032fd30bd7c2d74bfe936136b2fa1d6/wrapt-1.17.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:88bbae4d40d5a46142e70d58bf664a89b6b4befaea7b2ecc14e03cedb8e06c04", size = 53482, upload-time = "2025-08-12T05:51:44.467Z" }, + { url = "https://files.pythonhosted.org/packages/45/69/f3c47642b79485a30a59c63f6d739ed779fb4cc8323205d047d741d55220/wrapt-1.17.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e6b13af258d6a9ad602d57d889f83b9d5543acd471eee12eb51f5b01f8eb1bc2", size = 38676, upload-time = "2025-08-12T05:51:32.636Z" }, + { url = "https://files.pythonhosted.org/packages/d1/71/e7e7f5670c1eafd9e990438e69d8fb46fa91a50785332e06b560c869454f/wrapt-1.17.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd341868a4b6714a5962c1af0bd44f7c404ef78720c7de4892901e540417111c", size = 38957, upload-time = "2025-08-12T05:51:54.655Z" }, + { url = "https://files.pythonhosted.org/packages/de/17/9f8f86755c191d6779d7ddead1a53c7a8aa18bccb7cea8e7e72dfa6a8a09/wrapt-1.17.3-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:f9b2601381be482f70e5d1051a5965c25fb3625455a2bf520b5a077b22afb775", size = 81975, upload-time = "2025-08-12T05:52:30.109Z" }, + { url = "https://files.pythonhosted.org/packages/f2/15/dd576273491f9f43dd09fce517f6c2ce6eb4fe21681726068db0d0467096/wrapt-1.17.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:343e44b2a8e60e06a7e0d29c1671a0d9951f59174f3709962b5143f60a2a98bd", size = 83149, upload-time = "2025-08-12T05:52:09.316Z" }, + { url = "https://files.pythonhosted.org/packages/0c/c4/5eb4ce0d4814521fee7aa806264bf7a114e748ad05110441cd5b8a5c744b/wrapt-1.17.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:33486899acd2d7d3066156b03465b949da3fd41a5da6e394ec49d271baefcf05", size = 82209, upload-time = "2025-08-12T05:52:10.331Z" }, + { url = "https://files.pythonhosted.org/packages/31/4b/819e9e0eb5c8dc86f60dfc42aa4e2c0d6c3db8732bce93cc752e604bb5f5/wrapt-1.17.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e6f40a8aa5a92f150bdb3e1c44b7e98fb7113955b2e5394122fa5532fec4b418", size = 81551, upload-time = "2025-08-12T05:52:31.137Z" }, + { url = "https://files.pythonhosted.org/packages/f8/83/ed6baf89ba3a56694700139698cf703aac9f0f9eb03dab92f57551bd5385/wrapt-1.17.3-cp310-cp310-win32.whl", hash = "sha256:a36692b8491d30a8c75f1dfee65bef119d6f39ea84ee04d9f9311f83c5ad9390", size = 36464, upload-time = "2025-08-12T05:53:01.204Z" }, + { url = "https://files.pythonhosted.org/packages/2f/90/ee61d36862340ad7e9d15a02529df6b948676b9a5829fd5e16640156627d/wrapt-1.17.3-cp310-cp310-win_amd64.whl", hash = "sha256:afd964fd43b10c12213574db492cb8f73b2f0826c8df07a68288f8f19af2ebe6", size = 38748, upload-time = "2025-08-12T05:53:00.209Z" }, + { url = "https://files.pythonhosted.org/packages/bd/c3/cefe0bd330d389c9983ced15d326f45373f4073c9f4a8c2f99b50bfea329/wrapt-1.17.3-cp310-cp310-win_arm64.whl", hash = "sha256:af338aa93554be859173c39c85243970dc6a289fa907402289eeae7543e1ae18", size = 36810, upload-time = "2025-08-12T05:52:51.906Z" }, + { url = "https://files.pythonhosted.org/packages/52/db/00e2a219213856074a213503fdac0511203dceefff26e1daa15250cc01a0/wrapt-1.17.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:273a736c4645e63ac582c60a56b0acb529ef07f78e08dc6bfadf6a46b19c0da7", size = 53482, upload-time = "2025-08-12T05:51:45.79Z" }, + { url = "https://files.pythonhosted.org/packages/5e/30/ca3c4a5eba478408572096fe9ce36e6e915994dd26a4e9e98b4f729c06d9/wrapt-1.17.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5531d911795e3f935a9c23eb1c8c03c211661a5060aab167065896bbf62a5f85", size = 38674, upload-time = "2025-08-12T05:51:34.629Z" }, + { url = "https://files.pythonhosted.org/packages/31/25/3e8cc2c46b5329c5957cec959cb76a10718e1a513309c31399a4dad07eb3/wrapt-1.17.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0610b46293c59a3adbae3dee552b648b984176f8562ee0dba099a56cfbe4df1f", size = 38959, upload-time = "2025-08-12T05:51:56.074Z" }, + { url = "https://files.pythonhosted.org/packages/5d/8f/a32a99fc03e4b37e31b57cb9cefc65050ea08147a8ce12f288616b05ef54/wrapt-1.17.3-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b32888aad8b6e68f83a8fdccbf3165f5469702a7544472bdf41f582970ed3311", size = 82376, upload-time = "2025-08-12T05:52:32.134Z" }, + { url = "https://files.pythonhosted.org/packages/31/57/4930cb8d9d70d59c27ee1332a318c20291749b4fba31f113c2f8ac49a72e/wrapt-1.17.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8cccf4f81371f257440c88faed6b74f1053eef90807b77e31ca057b2db74edb1", size = 83604, upload-time = "2025-08-12T05:52:11.663Z" }, + { url = "https://files.pythonhosted.org/packages/a8/f3/1afd48de81d63dd66e01b263a6fbb86e1b5053b419b9b33d13e1f6d0f7d0/wrapt-1.17.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8a210b158a34164de8bb68b0e7780041a903d7b00c87e906fb69928bf7890d5", size = 82782, upload-time = "2025-08-12T05:52:12.626Z" }, + { url = "https://files.pythonhosted.org/packages/1e/d7/4ad5327612173b144998232f98a85bb24b60c352afb73bc48e3e0d2bdc4e/wrapt-1.17.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:79573c24a46ce11aab457b472efd8d125e5a51da2d1d24387666cd85f54c05b2", size = 82076, upload-time = "2025-08-12T05:52:33.168Z" }, + { url = "https://files.pythonhosted.org/packages/bb/59/e0adfc831674a65694f18ea6dc821f9fcb9ec82c2ce7e3d73a88ba2e8718/wrapt-1.17.3-cp311-cp311-win32.whl", hash = "sha256:c31eebe420a9a5d2887b13000b043ff6ca27c452a9a22fa71f35f118e8d4bf89", size = 36457, upload-time = "2025-08-12T05:53:03.936Z" }, + { url = "https://files.pythonhosted.org/packages/83/88/16b7231ba49861b6f75fc309b11012ede4d6b0a9c90969d9e0db8d991aeb/wrapt-1.17.3-cp311-cp311-win_amd64.whl", hash = "sha256:0b1831115c97f0663cb77aa27d381237e73ad4f721391a9bfb2fe8bc25fa6e77", size = 38745, upload-time = "2025-08-12T05:53:02.885Z" }, + { url = "https://files.pythonhosted.org/packages/9a/1e/c4d4f3398ec073012c51d1c8d87f715f56765444e1a4b11e5180577b7e6e/wrapt-1.17.3-cp311-cp311-win_arm64.whl", hash = "sha256:5a7b3c1ee8265eb4c8f1b7d29943f195c00673f5ab60c192eba2d4a7eae5f46a", size = 36806, upload-time = "2025-08-12T05:52:53.368Z" }, + { url = "https://files.pythonhosted.org/packages/9f/41/cad1aba93e752f1f9268c77270da3c469883d56e2798e7df6240dcb2287b/wrapt-1.17.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ab232e7fdb44cdfbf55fc3afa31bcdb0d8980b9b95c38b6405df2acb672af0e0", size = 53998, upload-time = "2025-08-12T05:51:47.138Z" }, + { url = "https://files.pythonhosted.org/packages/60/f8/096a7cc13097a1869fe44efe68dace40d2a16ecb853141394047f0780b96/wrapt-1.17.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:9baa544e6acc91130e926e8c802a17f3b16fbea0fd441b5a60f5cf2cc5c3deba", size = 39020, upload-time = "2025-08-12T05:51:35.906Z" }, + { url = "https://files.pythonhosted.org/packages/33/df/bdf864b8997aab4febb96a9ae5c124f700a5abd9b5e13d2a3214ec4be705/wrapt-1.17.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6b538e31eca1a7ea4605e44f81a48aa24c4632a277431a6ed3f328835901f4fd", size = 39098, upload-time = "2025-08-12T05:51:57.474Z" }, + { url = "https://files.pythonhosted.org/packages/9f/81/5d931d78d0eb732b95dc3ddaeeb71c8bb572fb01356e9133916cd729ecdd/wrapt-1.17.3-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:042ec3bb8f319c147b1301f2393bc19dba6e176b7da446853406d041c36c7828", size = 88036, upload-time = "2025-08-12T05:52:34.784Z" }, + { url = "https://files.pythonhosted.org/packages/ca/38/2e1785df03b3d72d34fc6252d91d9d12dc27a5c89caef3335a1bbb8908ca/wrapt-1.17.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3af60380ba0b7b5aeb329bc4e402acd25bd877e98b3727b0135cb5c2efdaefe9", size = 88156, upload-time = "2025-08-12T05:52:13.599Z" }, + { url = "https://files.pythonhosted.org/packages/b3/8b/48cdb60fe0603e34e05cffda0b2a4adab81fd43718e11111a4b0100fd7c1/wrapt-1.17.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0b02e424deef65c9f7326d8c19220a2c9040c51dc165cddb732f16198c168396", size = 87102, upload-time = "2025-08-12T05:52:14.56Z" }, + { url = "https://files.pythonhosted.org/packages/3c/51/d81abca783b58f40a154f1b2c56db1d2d9e0d04fa2d4224e357529f57a57/wrapt-1.17.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:74afa28374a3c3a11b3b5e5fca0ae03bef8450d6aa3ab3a1e2c30e3a75d023dc", size = 87732, upload-time = "2025-08-12T05:52:36.165Z" }, + { url = "https://files.pythonhosted.org/packages/9e/b1/43b286ca1392a006d5336412d41663eeef1ad57485f3e52c767376ba7e5a/wrapt-1.17.3-cp312-cp312-win32.whl", hash = "sha256:4da9f45279fff3543c371d5ababc57a0384f70be244de7759c85a7f989cb4ebe", size = 36705, upload-time = "2025-08-12T05:53:07.123Z" }, + { url = "https://files.pythonhosted.org/packages/28/de/49493f962bd3c586ab4b88066e967aa2e0703d6ef2c43aa28cb83bf7b507/wrapt-1.17.3-cp312-cp312-win_amd64.whl", hash = "sha256:e71d5c6ebac14875668a1e90baf2ea0ef5b7ac7918355850c0908ae82bcb297c", size = 38877, upload-time = "2025-08-12T05:53:05.436Z" }, + { url = "https://files.pythonhosted.org/packages/f1/48/0f7102fe9cb1e8a5a77f80d4f0956d62d97034bbe88d33e94699f99d181d/wrapt-1.17.3-cp312-cp312-win_arm64.whl", hash = "sha256:604d076c55e2fdd4c1c03d06dc1a31b95130010517b5019db15365ec4a405fc6", size = 36885, upload-time = "2025-08-12T05:52:54.367Z" }, + { url = "https://files.pythonhosted.org/packages/fc/f6/759ece88472157acb55fc195e5b116e06730f1b651b5b314c66291729193/wrapt-1.17.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a47681378a0439215912ef542c45a783484d4dd82bac412b71e59cf9c0e1cea0", size = 54003, upload-time = "2025-08-12T05:51:48.627Z" }, + { url = "https://files.pythonhosted.org/packages/4f/a9/49940b9dc6d47027dc850c116d79b4155f15c08547d04db0f07121499347/wrapt-1.17.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:54a30837587c6ee3cd1a4d1c2ec5d24e77984d44e2f34547e2323ddb4e22eb77", size = 39025, upload-time = "2025-08-12T05:51:37.156Z" }, + { url = "https://files.pythonhosted.org/packages/45/35/6a08de0f2c96dcdd7fe464d7420ddb9a7655a6561150e5fc4da9356aeaab/wrapt-1.17.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:16ecf15d6af39246fe33e507105d67e4b81d8f8d2c6598ff7e3ca1b8a37213f7", size = 39108, upload-time = "2025-08-12T05:51:58.425Z" }, + { url = "https://files.pythonhosted.org/packages/0c/37/6faf15cfa41bf1f3dba80cd3f5ccc6622dfccb660ab26ed79f0178c7497f/wrapt-1.17.3-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:6fd1ad24dc235e4ab88cda009e19bf347aabb975e44fd5c2fb22a3f6e4141277", size = 88072, upload-time = "2025-08-12T05:52:37.53Z" }, + { url = "https://files.pythonhosted.org/packages/78/f2/efe19ada4a38e4e15b6dff39c3e3f3f73f5decf901f66e6f72fe79623a06/wrapt-1.17.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0ed61b7c2d49cee3c027372df5809a59d60cf1b6c2f81ee980a091f3afed6a2d", size = 88214, upload-time = "2025-08-12T05:52:15.886Z" }, + { url = "https://files.pythonhosted.org/packages/40/90/ca86701e9de1622b16e09689fc24b76f69b06bb0150990f6f4e8b0eeb576/wrapt-1.17.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:423ed5420ad5f5529db9ce89eac09c8a2f97da18eb1c870237e84c5a5c2d60aa", size = 87105, upload-time = "2025-08-12T05:52:17.914Z" }, + { url = "https://files.pythonhosted.org/packages/fd/e0/d10bd257c9a3e15cbf5523025252cc14d77468e8ed644aafb2d6f54cb95d/wrapt-1.17.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e01375f275f010fcbf7f643b4279896d04e571889b8a5b3f848423d91bf07050", size = 87766, upload-time = "2025-08-12T05:52:39.243Z" }, + { url = "https://files.pythonhosted.org/packages/e8/cf/7d848740203c7b4b27eb55dbfede11aca974a51c3d894f6cc4b865f42f58/wrapt-1.17.3-cp313-cp313-win32.whl", hash = "sha256:53e5e39ff71b3fc484df8a522c933ea2b7cdd0d5d15ae82e5b23fde87d44cbd8", size = 36711, upload-time = "2025-08-12T05:53:10.074Z" }, + { url = "https://files.pythonhosted.org/packages/57/54/35a84d0a4d23ea675994104e667ceff49227ce473ba6a59ba2c84f250b74/wrapt-1.17.3-cp313-cp313-win_amd64.whl", hash = "sha256:1f0b2f40cf341ee8cc1a97d51ff50dddb9fcc73241b9143ec74b30fc4f44f6cb", size = 38885, upload-time = "2025-08-12T05:53:08.695Z" }, + { url = "https://files.pythonhosted.org/packages/01/77/66e54407c59d7b02a3c4e0af3783168fff8e5d61def52cda8728439d86bc/wrapt-1.17.3-cp313-cp313-win_arm64.whl", hash = "sha256:7425ac3c54430f5fc5e7b6f41d41e704db073309acfc09305816bc6a0b26bb16", size = 36896, upload-time = "2025-08-12T05:52:55.34Z" }, + { url = "https://files.pythonhosted.org/packages/02/a2/cd864b2a14f20d14f4c496fab97802001560f9f41554eef6df201cd7f76c/wrapt-1.17.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:cf30f6e3c077c8e6a9a7809c94551203c8843e74ba0c960f4a98cd80d4665d39", size = 54132, upload-time = "2025-08-12T05:51:49.864Z" }, + { url = "https://files.pythonhosted.org/packages/d5/46/d011725b0c89e853dc44cceb738a307cde5d240d023d6d40a82d1b4e1182/wrapt-1.17.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:e228514a06843cae89621384cfe3a80418f3c04aadf8a3b14e46a7be704e4235", size = 39091, upload-time = "2025-08-12T05:51:38.935Z" }, + { url = "https://files.pythonhosted.org/packages/2e/9e/3ad852d77c35aae7ddebdbc3b6d35ec8013af7d7dddad0ad911f3d891dae/wrapt-1.17.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:5ea5eb3c0c071862997d6f3e02af1d055f381b1d25b286b9d6644b79db77657c", size = 39172, upload-time = "2025-08-12T05:51:59.365Z" }, + { url = "https://files.pythonhosted.org/packages/c3/f7/c983d2762bcce2326c317c26a6a1e7016f7eb039c27cdf5c4e30f4160f31/wrapt-1.17.3-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:281262213373b6d5e4bb4353bc36d1ba4084e6d6b5d242863721ef2bf2c2930b", size = 87163, upload-time = "2025-08-12T05:52:40.965Z" }, + { url = "https://files.pythonhosted.org/packages/e4/0f/f673f75d489c7f22d17fe0193e84b41540d962f75fce579cf6873167c29b/wrapt-1.17.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:dc4a8d2b25efb6681ecacad42fca8859f88092d8732b170de6a5dddd80a1c8fa", size = 87963, upload-time = "2025-08-12T05:52:20.326Z" }, + { url = "https://files.pythonhosted.org/packages/df/61/515ad6caca68995da2fac7a6af97faab8f78ebe3bf4f761e1b77efbc47b5/wrapt-1.17.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:373342dd05b1d07d752cecbec0c41817231f29f3a89aa8b8843f7b95992ed0c7", size = 86945, upload-time = "2025-08-12T05:52:21.581Z" }, + { url = "https://files.pythonhosted.org/packages/d3/bd/4e70162ce398462a467bc09e768bee112f1412e563620adc353de9055d33/wrapt-1.17.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d40770d7c0fd5cbed9d84b2c3f2e156431a12c9a37dc6284060fb4bec0b7ffd4", size = 86857, upload-time = "2025-08-12T05:52:43.043Z" }, + { url = "https://files.pythonhosted.org/packages/2b/b8/da8560695e9284810b8d3df8a19396a6e40e7518059584a1a394a2b35e0a/wrapt-1.17.3-cp314-cp314-win32.whl", hash = "sha256:fbd3c8319de8e1dc79d346929cd71d523622da527cca14e0c1d257e31c2b8b10", size = 37178, upload-time = "2025-08-12T05:53:12.605Z" }, + { url = "https://files.pythonhosted.org/packages/db/c8/b71eeb192c440d67a5a0449aaee2310a1a1e8eca41676046f99ed2487e9f/wrapt-1.17.3-cp314-cp314-win_amd64.whl", hash = "sha256:e1a4120ae5705f673727d3253de3ed0e016f7cd78dc463db1b31e2463e1f3cf6", size = 39310, upload-time = "2025-08-12T05:53:11.106Z" }, + { url = "https://files.pythonhosted.org/packages/45/20/2cda20fd4865fa40f86f6c46ed37a2a8356a7a2fde0773269311f2af56c7/wrapt-1.17.3-cp314-cp314-win_arm64.whl", hash = "sha256:507553480670cab08a800b9463bdb881b2edeed77dc677b0a5915e6106e91a58", size = 37266, upload-time = "2025-08-12T05:52:56.531Z" }, + { url = "https://files.pythonhosted.org/packages/77/ed/dd5cf21aec36c80443c6f900449260b80e2a65cf963668eaef3b9accce36/wrapt-1.17.3-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:ed7c635ae45cfbc1a7371f708727bf74690daedc49b4dba310590ca0bd28aa8a", size = 56544, upload-time = "2025-08-12T05:51:51.109Z" }, + { url = "https://files.pythonhosted.org/packages/8d/96/450c651cc753877ad100c7949ab4d2e2ecc4d97157e00fa8f45df682456a/wrapt-1.17.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:249f88ed15503f6492a71f01442abddd73856a0032ae860de6d75ca62eed8067", size = 40283, upload-time = "2025-08-12T05:51:39.912Z" }, + { url = "https://files.pythonhosted.org/packages/d1/86/2fcad95994d9b572db57632acb6f900695a648c3e063f2cd344b3f5c5a37/wrapt-1.17.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5a03a38adec8066d5a37bea22f2ba6bbf39fcdefbe2d91419ab864c3fb515454", size = 40366, upload-time = "2025-08-12T05:52:00.693Z" }, + { url = "https://files.pythonhosted.org/packages/64/0e/f4472f2fdde2d4617975144311f8800ef73677a159be7fe61fa50997d6c0/wrapt-1.17.3-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:5d4478d72eb61c36e5b446e375bbc49ed002430d17cdec3cecb36993398e1a9e", size = 108571, upload-time = "2025-08-12T05:52:44.521Z" }, + { url = "https://files.pythonhosted.org/packages/cc/01/9b85a99996b0a97c8a17484684f206cbb6ba73c1ce6890ac668bcf3838fb/wrapt-1.17.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:223db574bb38637e8230eb14b185565023ab624474df94d2af18f1cdb625216f", size = 113094, upload-time = "2025-08-12T05:52:22.618Z" }, + { url = "https://files.pythonhosted.org/packages/25/02/78926c1efddcc7b3aa0bc3d6b33a822f7d898059f7cd9ace8c8318e559ef/wrapt-1.17.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e405adefb53a435f01efa7ccdec012c016b5a1d3f35459990afc39b6be4d5056", size = 110659, upload-time = "2025-08-12T05:52:24.057Z" }, + { url = "https://files.pythonhosted.org/packages/dc/ee/c414501ad518ac3e6fe184753632fe5e5ecacdcf0effc23f31c1e4f7bfcf/wrapt-1.17.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:88547535b787a6c9ce4086917b6e1d291aa8ed914fdd3a838b3539dc95c12804", size = 106946, upload-time = "2025-08-12T05:52:45.976Z" }, + { url = "https://files.pythonhosted.org/packages/be/44/a1bd64b723d13bb151d6cc91b986146a1952385e0392a78567e12149c7b4/wrapt-1.17.3-cp314-cp314t-win32.whl", hash = "sha256:41b1d2bc74c2cac6f9074df52b2efbef2b30bdfe5f40cb78f8ca22963bc62977", size = 38717, upload-time = "2025-08-12T05:53:15.214Z" }, + { url = "https://files.pythonhosted.org/packages/79/d9/7cfd5a312760ac4dd8bf0184a6ee9e43c33e47f3dadc303032ce012b8fa3/wrapt-1.17.3-cp314-cp314t-win_amd64.whl", hash = "sha256:73d496de46cd2cdbdbcce4ae4bcdb4afb6a11234a1df9c085249d55166b95116", size = 41334, upload-time = "2025-08-12T05:53:14.178Z" }, + { url = "https://files.pythonhosted.org/packages/46/78/10ad9781128ed2f99dbc474f43283b13fea8ba58723e98844367531c18e9/wrapt-1.17.3-cp314-cp314t-win_arm64.whl", hash = "sha256:f38e60678850c42461d4202739f9bf1e3a737c7ad283638251e79cc49effb6b6", size = 38471, upload-time = "2025-08-12T05:52:57.784Z" }, + { url = "https://files.pythonhosted.org/packages/1f/f6/a933bd70f98e9cf3e08167fc5cd7aaaca49147e48411c0bd5ae701bb2194/wrapt-1.17.3-py3-none-any.whl", hash = "sha256:7171ae35d2c33d326ac19dd8facb1e82e5fd04ef8c6c0e394d7af55a55051c22", size = 23591, upload-time = "2025-08-12T05:53:20.674Z" }, ] [[package]] name = "xarray" -version = "2025.4.0" +version = "2025.6.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, { name = "packaging" }, { name = "pandas", version = "2.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, - { name = "pandas", version = "2.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, + { name = "pandas", version = "2.3.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9b/29/37761364e137db13898cf5a790574dd7883f7355d5dfb42b66ee7a9a6318/xarray-2025.4.0.tar.gz", hash = "sha256:2a89cd6a1dfd589aa90ac45f4e483246f31fc641836db45dd2790bb78bd333dc", size = 2974151, upload-time = "2025-04-29T23:27:59.238Z" } +sdist = { url = "https://files.pythonhosted.org/packages/19/ec/e50d833518f10b0c24feb184b209bb6856f25b919ba8c1f89678b930b1cd/xarray-2025.6.1.tar.gz", hash = "sha256:a84f3f07544634a130d7dc615ae44175419f4c77957a7255161ed99c69c7c8b0", size = 3003185, upload-time = "2025-06-12T03:04:09.099Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/1e/96fd96419fec1a37da998a1ca3d558f2cae2f6f3cd5015170371b05a2b6b/xarray-2025.4.0-py3-none-any.whl", hash = "sha256:b27defd082c5cb85d32c695708de6bb05c2838fb7caaf3f952982e602a35b9b8", size = 1290171, upload-time = "2025-04-29T23:27:57.059Z" }, + { url = "https://files.pythonhosted.org/packages/82/8a/6b50c1dd2260d407c1a499d47cf829f59f07007e0dcebafdabb24d1d26a5/xarray-2025.6.1-py3-none-any.whl", hash = "sha256:8b988b47f67a383bdc3b04c5db475cd165e580134c1f1943d52aee4a9c97651b", size = 1314739, upload-time = "2025-06-12T03:04:06.708Z" }, ] [[package]] @@ -4975,7 +6024,8 @@ name = "zarr" version = "2.18.7" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.12'", + "python_full_version >= '3.14'", + "python_full_version >= '3.12' and python_full_version < '3.14'", "python_full_version == '3.11.*'", ] dependencies = [ @@ -5000,75 +6050,90 @@ wheels = [ [[package]] name = "zstandard" -version = "0.23.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cffi", marker = "platform_python_implementation == 'PyPy'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ed/f6/2ac0287b442160a89d726b17a9184a4c615bb5237db763791a7fd16d9df1/zstandard-0.23.0.tar.gz", hash = "sha256:b2d8c62d08e7255f68f7a740bae85b3c9b8e5466baa9cbf7f57f1cde0ac6bc09", size = 681701, upload-time = "2024-07-15T00:18:06.141Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/55/bd0487e86679db1823fc9ee0d8c9c78ae2413d34c0b461193b5f4c31d22f/zstandard-0.23.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bf0a05b6059c0528477fba9054d09179beb63744355cab9f38059548fedd46a9", size = 788701, upload-time = "2024-07-15T00:13:27.351Z" }, - { url = "https://files.pythonhosted.org/packages/e1/8a/ccb516b684f3ad987dfee27570d635822e3038645b1a950c5e8022df1145/zstandard-0.23.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fc9ca1c9718cb3b06634c7c8dec57d24e9438b2aa9a0f02b8bb36bf478538880", size = 633678, upload-time = "2024-07-15T00:13:30.24Z" }, - { url = "https://files.pythonhosted.org/packages/12/89/75e633d0611c028e0d9af6df199423bf43f54bea5007e6718ab7132e234c/zstandard-0.23.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77da4c6bfa20dd5ea25cbf12c76f181a8e8cd7ea231c673828d0386b1740b8dc", size = 4941098, upload-time = "2024-07-15T00:13:32.526Z" }, - { url = "https://files.pythonhosted.org/packages/4a/7a/bd7f6a21802de358b63f1ee636ab823711c25ce043a3e9f043b4fcb5ba32/zstandard-0.23.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b2170c7e0367dde86a2647ed5b6f57394ea7f53545746104c6b09fc1f4223573", size = 5308798, upload-time = "2024-07-15T00:13:34.925Z" }, - { url = "https://files.pythonhosted.org/packages/79/3b/775f851a4a65013e88ca559c8ae42ac1352db6fcd96b028d0df4d7d1d7b4/zstandard-0.23.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c16842b846a8d2a145223f520b7e18b57c8f476924bda92aeee3a88d11cfc391", size = 5341840, upload-time = "2024-07-15T00:13:37.376Z" }, - { url = "https://files.pythonhosted.org/packages/09/4f/0cc49570141dd72d4d95dd6fcf09328d1b702c47a6ec12fbed3b8aed18a5/zstandard-0.23.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:157e89ceb4054029a289fb504c98c6a9fe8010f1680de0201b3eb5dc20aa6d9e", size = 5440337, upload-time = "2024-07-15T00:13:39.772Z" }, - { url = "https://files.pythonhosted.org/packages/e7/7c/aaa7cd27148bae2dc095191529c0570d16058c54c4597a7d118de4b21676/zstandard-0.23.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:203d236f4c94cd8379d1ea61db2fce20730b4c38d7f1c34506a31b34edc87bdd", size = 4861182, upload-time = "2024-07-15T00:13:42.495Z" }, - { url = "https://files.pythonhosted.org/packages/ac/eb/4b58b5c071d177f7dc027129d20bd2a44161faca6592a67f8fcb0b88b3ae/zstandard-0.23.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:dc5d1a49d3f8262be192589a4b72f0d03b72dcf46c51ad5852a4fdc67be7b9e4", size = 4932936, upload-time = "2024-07-15T00:13:44.234Z" }, - { url = "https://files.pythonhosted.org/packages/44/f9/21a5fb9bb7c9a274b05ad700a82ad22ce82f7ef0f485980a1e98ed6e8c5f/zstandard-0.23.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:752bf8a74412b9892f4e5b58f2f890a039f57037f52c89a740757ebd807f33ea", size = 5464705, upload-time = "2024-07-15T00:13:46.822Z" }, - { url = "https://files.pythonhosted.org/packages/49/74/b7b3e61db3f88632776b78b1db597af3f44c91ce17d533e14a25ce6a2816/zstandard-0.23.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:80080816b4f52a9d886e67f1f96912891074903238fe54f2de8b786f86baded2", size = 4857882, upload-time = "2024-07-15T00:13:49.297Z" }, - { url = "https://files.pythonhosted.org/packages/4a/7f/d8eb1cb123d8e4c541d4465167080bec88481ab54cd0b31eb4013ba04b95/zstandard-0.23.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:84433dddea68571a6d6bd4fbf8ff398236031149116a7fff6f777ff95cad3df9", size = 4697672, upload-time = "2024-07-15T00:13:51.447Z" }, - { url = "https://files.pythonhosted.org/packages/5e/05/f7dccdf3d121309b60342da454d3e706453a31073e2c4dac8e1581861e44/zstandard-0.23.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:ab19a2d91963ed9e42b4e8d77cd847ae8381576585bad79dbd0a8837a9f6620a", size = 5206043, upload-time = "2024-07-15T00:13:53.587Z" }, - { url = "https://files.pythonhosted.org/packages/86/9d/3677a02e172dccd8dd3a941307621c0cbd7691d77cb435ac3c75ab6a3105/zstandard-0.23.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:59556bf80a7094d0cfb9f5e50bb2db27fefb75d5138bb16fb052b61b0e0eeeb0", size = 5667390, upload-time = "2024-07-15T00:13:56.137Z" }, - { url = "https://files.pythonhosted.org/packages/41/7e/0012a02458e74a7ba122cd9cafe491facc602c9a17f590367da369929498/zstandard-0.23.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:27d3ef2252d2e62476389ca8f9b0cf2bbafb082a3b6bfe9d90cbcbb5529ecf7c", size = 5198901, upload-time = "2024-07-15T00:13:58.584Z" }, - { url = "https://files.pythonhosted.org/packages/65/3a/8f715b97bd7bcfc7342d8adcd99a026cb2fb550e44866a3b6c348e1b0f02/zstandard-0.23.0-cp310-cp310-win32.whl", hash = "sha256:5d41d5e025f1e0bccae4928981e71b2334c60f580bdc8345f824e7c0a4c2a813", size = 430596, upload-time = "2024-07-15T00:14:00.693Z" }, - { url = "https://files.pythonhosted.org/packages/19/b7/b2b9eca5e5a01111e4fe8a8ffb56bdcdf56b12448a24effe6cfe4a252034/zstandard-0.23.0-cp310-cp310-win_amd64.whl", hash = "sha256:519fbf169dfac1222a76ba8861ef4ac7f0530c35dd79ba5727014613f91613d4", size = 495498, upload-time = "2024-07-15T00:14:02.741Z" }, - { url = "https://files.pythonhosted.org/packages/9e/40/f67e7d2c25a0e2dc1744dd781110b0b60306657f8696cafb7ad7579469bd/zstandard-0.23.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:34895a41273ad33347b2fc70e1bff4240556de3c46c6ea430a7ed91f9042aa4e", size = 788699, upload-time = "2024-07-15T00:14:04.909Z" }, - { url = "https://files.pythonhosted.org/packages/e8/46/66d5b55f4d737dd6ab75851b224abf0afe5774976fe511a54d2eb9063a41/zstandard-0.23.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:77ea385f7dd5b5676d7fd943292ffa18fbf5c72ba98f7d09fc1fb9e819b34c23", size = 633681, upload-time = "2024-07-15T00:14:13.99Z" }, - { url = "https://files.pythonhosted.org/packages/63/b6/677e65c095d8e12b66b8f862b069bcf1f1d781b9c9c6f12eb55000d57583/zstandard-0.23.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:983b6efd649723474f29ed42e1467f90a35a74793437d0bc64a5bf482bedfa0a", size = 4944328, upload-time = "2024-07-15T00:14:16.588Z" }, - { url = "https://files.pythonhosted.org/packages/59/cc/e76acb4c42afa05a9d20827116d1f9287e9c32b7ad58cc3af0721ce2b481/zstandard-0.23.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80a539906390591dd39ebb8d773771dc4db82ace6372c4d41e2d293f8e32b8db", size = 5311955, upload-time = "2024-07-15T00:14:19.389Z" }, - { url = "https://files.pythonhosted.org/packages/78/e4/644b8075f18fc7f632130c32e8f36f6dc1b93065bf2dd87f03223b187f26/zstandard-0.23.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:445e4cb5048b04e90ce96a79b4b63140e3f4ab5f662321975679b5f6360b90e2", size = 5344944, upload-time = "2024-07-15T00:14:22.173Z" }, - { url = "https://files.pythonhosted.org/packages/76/3f/dbafccf19cfeca25bbabf6f2dd81796b7218f768ec400f043edc767015a6/zstandard-0.23.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd30d9c67d13d891f2360b2a120186729c111238ac63b43dbd37a5a40670b8ca", size = 5442927, upload-time = "2024-07-15T00:14:24.825Z" }, - { url = "https://files.pythonhosted.org/packages/0c/c3/d24a01a19b6733b9f218e94d1a87c477d523237e07f94899e1c10f6fd06c/zstandard-0.23.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d20fd853fbb5807c8e84c136c278827b6167ded66c72ec6f9a14b863d809211c", size = 4864910, upload-time = "2024-07-15T00:14:26.982Z" }, - { url = "https://files.pythonhosted.org/packages/1c/a9/cf8f78ead4597264f7618d0875be01f9bc23c9d1d11afb6d225b867cb423/zstandard-0.23.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ed1708dbf4d2e3a1c5c69110ba2b4eb6678262028afd6c6fbcc5a8dac9cda68e", size = 4935544, upload-time = "2024-07-15T00:14:29.582Z" }, - { url = "https://files.pythonhosted.org/packages/2c/96/8af1e3731b67965fb995a940c04a2c20997a7b3b14826b9d1301cf160879/zstandard-0.23.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:be9b5b8659dff1f913039c2feee1aca499cfbc19e98fa12bc85e037c17ec6ca5", size = 5467094, upload-time = "2024-07-15T00:14:40.126Z" }, - { url = "https://files.pythonhosted.org/packages/ff/57/43ea9df642c636cb79f88a13ab07d92d88d3bfe3e550b55a25a07a26d878/zstandard-0.23.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:65308f4b4890aa12d9b6ad9f2844b7ee42c7f7a4fd3390425b242ffc57498f48", size = 4860440, upload-time = "2024-07-15T00:14:42.786Z" }, - { url = "https://files.pythonhosted.org/packages/46/37/edb78f33c7f44f806525f27baa300341918fd4c4af9472fbc2c3094be2e8/zstandard-0.23.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:98da17ce9cbf3bfe4617e836d561e433f871129e3a7ac16d6ef4c680f13a839c", size = 4700091, upload-time = "2024-07-15T00:14:45.184Z" }, - { url = "https://files.pythonhosted.org/packages/c1/f1/454ac3962671a754f3cb49242472df5c2cced4eb959ae203a377b45b1a3c/zstandard-0.23.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:8ed7d27cb56b3e058d3cf684d7200703bcae623e1dcc06ed1e18ecda39fee003", size = 5208682, upload-time = "2024-07-15T00:14:47.407Z" }, - { url = "https://files.pythonhosted.org/packages/85/b2/1734b0fff1634390b1b887202d557d2dd542de84a4c155c258cf75da4773/zstandard-0.23.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:b69bb4f51daf461b15e7b3db033160937d3ff88303a7bc808c67bbc1eaf98c78", size = 5669707, upload-time = "2024-07-15T00:15:03.529Z" }, - { url = "https://files.pythonhosted.org/packages/52/5a/87d6971f0997c4b9b09c495bf92189fb63de86a83cadc4977dc19735f652/zstandard-0.23.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:034b88913ecc1b097f528e42b539453fa82c3557e414b3de9d5632c80439a473", size = 5201792, upload-time = "2024-07-15T00:15:28.372Z" }, - { url = "https://files.pythonhosted.org/packages/79/02/6f6a42cc84459d399bd1a4e1adfc78d4dfe45e56d05b072008d10040e13b/zstandard-0.23.0-cp311-cp311-win32.whl", hash = "sha256:f2d4380bf5f62daabd7b751ea2339c1a21d1c9463f1feb7fc2bdcea2c29c3160", size = 430586, upload-time = "2024-07-15T00:15:32.26Z" }, - { url = "https://files.pythonhosted.org/packages/be/a2/4272175d47c623ff78196f3c10e9dc7045c1b9caf3735bf041e65271eca4/zstandard-0.23.0-cp311-cp311-win_amd64.whl", hash = "sha256:62136da96a973bd2557f06ddd4e8e807f9e13cbb0bfb9cc06cfe6d98ea90dfe0", size = 495420, upload-time = "2024-07-15T00:15:34.004Z" }, - { url = "https://files.pythonhosted.org/packages/7b/83/f23338c963bd9de687d47bf32efe9fd30164e722ba27fb59df33e6b1719b/zstandard-0.23.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b4567955a6bc1b20e9c31612e615af6b53733491aeaa19a6b3b37f3b65477094", size = 788713, upload-time = "2024-07-15T00:15:35.815Z" }, - { url = "https://files.pythonhosted.org/packages/5b/b3/1a028f6750fd9227ee0b937a278a434ab7f7fdc3066c3173f64366fe2466/zstandard-0.23.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e172f57cd78c20f13a3415cc8dfe24bf388614324d25539146594c16d78fcc8", size = 633459, upload-time = "2024-07-15T00:15:37.995Z" }, - { url = "https://files.pythonhosted.org/packages/26/af/36d89aae0c1f95a0a98e50711bc5d92c144939efc1f81a2fcd3e78d7f4c1/zstandard-0.23.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b0e166f698c5a3e914947388c162be2583e0c638a4703fc6a543e23a88dea3c1", size = 4945707, upload-time = "2024-07-15T00:15:39.872Z" }, - { url = "https://files.pythonhosted.org/packages/cd/2e/2051f5c772f4dfc0aae3741d5fc72c3dcfe3aaeb461cc231668a4db1ce14/zstandard-0.23.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:12a289832e520c6bd4dcaad68e944b86da3bad0d339ef7989fb7e88f92e96072", size = 5306545, upload-time = "2024-07-15T00:15:41.75Z" }, - { url = "https://files.pythonhosted.org/packages/0a/9e/a11c97b087f89cab030fa71206963090d2fecd8eb83e67bb8f3ffb84c024/zstandard-0.23.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d50d31bfedd53a928fed6707b15a8dbeef011bb6366297cc435accc888b27c20", size = 5337533, upload-time = "2024-07-15T00:15:44.114Z" }, - { url = "https://files.pythonhosted.org/packages/fc/79/edeb217c57fe1bf16d890aa91a1c2c96b28c07b46afed54a5dcf310c3f6f/zstandard-0.23.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72c68dda124a1a138340fb62fa21b9bf4848437d9ca60bd35db36f2d3345f373", size = 5436510, upload-time = "2024-07-15T00:15:46.509Z" }, - { url = "https://files.pythonhosted.org/packages/81/4f/c21383d97cb7a422ddf1ae824b53ce4b51063d0eeb2afa757eb40804a8ef/zstandard-0.23.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:53dd9d5e3d29f95acd5de6802e909ada8d8d8cfa37a3ac64836f3bc4bc5512db", size = 4859973, upload-time = "2024-07-15T00:15:49.939Z" }, - { url = "https://files.pythonhosted.org/packages/ab/15/08d22e87753304405ccac8be2493a495f529edd81d39a0870621462276ef/zstandard-0.23.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:6a41c120c3dbc0d81a8e8adc73312d668cd34acd7725f036992b1b72d22c1772", size = 4936968, upload-time = "2024-07-15T00:15:52.025Z" }, - { url = "https://files.pythonhosted.org/packages/eb/fa/f3670a597949fe7dcf38119a39f7da49a8a84a6f0b1a2e46b2f71a0ab83f/zstandard-0.23.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:40b33d93c6eddf02d2c19f5773196068d875c41ca25730e8288e9b672897c105", size = 5467179, upload-time = "2024-07-15T00:15:54.971Z" }, - { url = "https://files.pythonhosted.org/packages/4e/a9/dad2ab22020211e380adc477a1dbf9f109b1f8d94c614944843e20dc2a99/zstandard-0.23.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9206649ec587e6b02bd124fb7799b86cddec350f6f6c14bc82a2b70183e708ba", size = 4848577, upload-time = "2024-07-15T00:15:57.634Z" }, - { url = "https://files.pythonhosted.org/packages/08/03/dd28b4484b0770f1e23478413e01bee476ae8227bbc81561f9c329e12564/zstandard-0.23.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:76e79bc28a65f467e0409098fa2c4376931fd3207fbeb6b956c7c476d53746dd", size = 4693899, upload-time = "2024-07-15T00:16:00.811Z" }, - { url = "https://files.pythonhosted.org/packages/2b/64/3da7497eb635d025841e958bcd66a86117ae320c3b14b0ae86e9e8627518/zstandard-0.23.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:66b689c107857eceabf2cf3d3fc699c3c0fe8ccd18df2219d978c0283e4c508a", size = 5199964, upload-time = "2024-07-15T00:16:03.669Z" }, - { url = "https://files.pythonhosted.org/packages/43/a4/d82decbab158a0e8a6ebb7fc98bc4d903266bce85b6e9aaedea1d288338c/zstandard-0.23.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9c236e635582742fee16603042553d276cca506e824fa2e6489db04039521e90", size = 5655398, upload-time = "2024-07-15T00:16:06.694Z" }, - { url = "https://files.pythonhosted.org/packages/f2/61/ac78a1263bc83a5cf29e7458b77a568eda5a8f81980691bbc6eb6a0d45cc/zstandard-0.23.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a8fffdbd9d1408006baaf02f1068d7dd1f016c6bcb7538682622c556e7b68e35", size = 5191313, upload-time = "2024-07-15T00:16:09.758Z" }, - { url = "https://files.pythonhosted.org/packages/e7/54/967c478314e16af5baf849b6ee9d6ea724ae5b100eb506011f045d3d4e16/zstandard-0.23.0-cp312-cp312-win32.whl", hash = "sha256:dc1d33abb8a0d754ea4763bad944fd965d3d95b5baef6b121c0c9013eaf1907d", size = 430877, upload-time = "2024-07-15T00:16:11.758Z" }, - { url = "https://files.pythonhosted.org/packages/75/37/872d74bd7739639c4553bf94c84af7d54d8211b626b352bc57f0fd8d1e3f/zstandard-0.23.0-cp312-cp312-win_amd64.whl", hash = "sha256:64585e1dba664dc67c7cdabd56c1e5685233fbb1fc1966cfba2a340ec0dfff7b", size = 495595, upload-time = "2024-07-15T00:16:13.731Z" }, - { url = "https://files.pythonhosted.org/packages/80/f1/8386f3f7c10261fe85fbc2c012fdb3d4db793b921c9abcc995d8da1b7a80/zstandard-0.23.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:576856e8594e6649aee06ddbfc738fec6a834f7c85bf7cadd1c53d4a58186ef9", size = 788975, upload-time = "2024-07-15T00:16:16.005Z" }, - { url = "https://files.pythonhosted.org/packages/16/e8/cbf01077550b3e5dc86089035ff8f6fbbb312bc0983757c2d1117ebba242/zstandard-0.23.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:38302b78a850ff82656beaddeb0bb989a0322a8bbb1bf1ab10c17506681d772a", size = 633448, upload-time = "2024-07-15T00:16:17.897Z" }, - { url = "https://files.pythonhosted.org/packages/06/27/4a1b4c267c29a464a161aeb2589aff212b4db653a1d96bffe3598f3f0d22/zstandard-0.23.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2240ddc86b74966c34554c49d00eaafa8200a18d3a5b6ffbf7da63b11d74ee2", size = 4945269, upload-time = "2024-07-15T00:16:20.136Z" }, - { url = "https://files.pythonhosted.org/packages/7c/64/d99261cc57afd9ae65b707e38045ed8269fbdae73544fd2e4a4d50d0ed83/zstandard-0.23.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2ef230a8fd217a2015bc91b74f6b3b7d6522ba48be29ad4ea0ca3a3775bf7dd5", size = 5306228, upload-time = "2024-07-15T00:16:23.398Z" }, - { url = "https://files.pythonhosted.org/packages/7a/cf/27b74c6f22541f0263016a0fd6369b1b7818941de639215c84e4e94b2a1c/zstandard-0.23.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:774d45b1fac1461f48698a9d4b5fa19a69d47ece02fa469825b442263f04021f", size = 5336891, upload-time = "2024-07-15T00:16:26.391Z" }, - { url = "https://files.pythonhosted.org/packages/fa/18/89ac62eac46b69948bf35fcd90d37103f38722968e2981f752d69081ec4d/zstandard-0.23.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f77fa49079891a4aab203d0b1744acc85577ed16d767b52fc089d83faf8d8ed", size = 5436310, upload-time = "2024-07-15T00:16:29.018Z" }, - { url = "https://files.pythonhosted.org/packages/a8/a8/5ca5328ee568a873f5118d5b5f70d1f36c6387716efe2e369010289a5738/zstandard-0.23.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ac184f87ff521f4840e6ea0b10c0ec90c6b1dcd0bad2f1e4a9a1b4fa177982ea", size = 4859912, upload-time = "2024-07-15T00:16:31.871Z" }, - { url = "https://files.pythonhosted.org/packages/ea/ca/3781059c95fd0868658b1cf0440edd832b942f84ae60685d0cfdb808bca1/zstandard-0.23.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c363b53e257246a954ebc7c488304b5592b9c53fbe74d03bc1c64dda153fb847", size = 4936946, upload-time = "2024-07-15T00:16:34.593Z" }, - { url = "https://files.pythonhosted.org/packages/ce/11/41a58986f809532742c2b832c53b74ba0e0a5dae7e8ab4642bf5876f35de/zstandard-0.23.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e7792606d606c8df5277c32ccb58f29b9b8603bf83b48639b7aedf6df4fe8171", size = 5466994, upload-time = "2024-07-15T00:16:36.887Z" }, - { url = "https://files.pythonhosted.org/packages/83/e3/97d84fe95edd38d7053af05159465d298c8b20cebe9ccb3d26783faa9094/zstandard-0.23.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a0817825b900fcd43ac5d05b8b3079937073d2b1ff9cf89427590718b70dd840", size = 4848681, upload-time = "2024-07-15T00:16:39.709Z" }, - { url = "https://files.pythonhosted.org/packages/6e/99/cb1e63e931de15c88af26085e3f2d9af9ce53ccafac73b6e48418fd5a6e6/zstandard-0.23.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:9da6bc32faac9a293ddfdcb9108d4b20416219461e4ec64dfea8383cac186690", size = 4694239, upload-time = "2024-07-15T00:16:41.83Z" }, - { url = "https://files.pythonhosted.org/packages/ab/50/b1e703016eebbc6501fc92f34db7b1c68e54e567ef39e6e59cf5fb6f2ec0/zstandard-0.23.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:fd7699e8fd9969f455ef2926221e0233f81a2542921471382e77a9e2f2b57f4b", size = 5200149, upload-time = "2024-07-15T00:16:44.287Z" }, - { url = "https://files.pythonhosted.org/packages/aa/e0/932388630aaba70197c78bdb10cce2c91fae01a7e553b76ce85471aec690/zstandard-0.23.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:d477ed829077cd945b01fc3115edd132c47e6540ddcd96ca169facff28173057", size = 5655392, upload-time = "2024-07-15T00:16:46.423Z" }, - { url = "https://files.pythonhosted.org/packages/02/90/2633473864f67a15526324b007a9f96c96f56d5f32ef2a56cc12f9548723/zstandard-0.23.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa6ce8b52c5987b3e34d5674b0ab529a4602b632ebab0a93b07bfb4dfc8f8a33", size = 5191299, upload-time = "2024-07-15T00:16:49.053Z" }, - { url = "https://files.pythonhosted.org/packages/b0/4c/315ca5c32da7e2dc3455f3b2caee5c8c2246074a61aac6ec3378a97b7136/zstandard-0.23.0-cp313-cp313-win32.whl", hash = "sha256:a9b07268d0c3ca5c170a385a0ab9fb7fdd9f5fd866be004c4ea39e44edce47dd", size = 430862, upload-time = "2024-07-15T00:16:51.003Z" }, - { url = "https://files.pythonhosted.org/packages/a2/bf/c6aaba098e2d04781e8f4f7c0ba3c7aa73d00e4c436bcc0cf059a66691d1/zstandard-0.23.0-cp313-cp313-win_amd64.whl", hash = "sha256:f3513916e8c645d0610815c257cbfd3242adfd5c4cfa78be514e5a3ebb42a41b", size = 495578, upload-time = "2024-07-15T00:16:53.135Z" }, +version = "0.25.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fd/aa/3e0508d5a5dd96529cdc5a97011299056e14c6505b678fd58938792794b1/zstandard-0.25.0.tar.gz", hash = "sha256:7713e1179d162cf5c7906da876ec2ccb9c3a9dcbdffef0cc7f70c3667a205f0b", size = 711513, upload-time = "2025-09-14T22:15:54.002Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/56/7a/28efd1d371f1acd037ac64ed1c5e2b41514a6cc937dd6ab6a13ab9f0702f/zstandard-0.25.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e59fdc271772f6686e01e1b3b74537259800f57e24280be3f29c8a0deb1904dd", size = 795256, upload-time = "2025-09-14T22:15:56.415Z" }, + { url = "https://files.pythonhosted.org/packages/96/34/ef34ef77f1ee38fc8e4f9775217a613b452916e633c4f1d98f31db52c4a5/zstandard-0.25.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4d441506e9b372386a5271c64125f72d5df6d2a8e8a2a45a0ae09b03cb781ef7", size = 640565, upload-time = "2025-09-14T22:15:58.177Z" }, + { url = "https://files.pythonhosted.org/packages/9d/1b/4fdb2c12eb58f31f28c4d28e8dc36611dd7205df8452e63f52fb6261d13e/zstandard-0.25.0-cp310-cp310-manylinux2010_i686.manylinux2014_i686.manylinux_2_12_i686.manylinux_2_17_i686.whl", hash = "sha256:ab85470ab54c2cb96e176f40342d9ed41e58ca5733be6a893b730e7af9c40550", size = 5345306, upload-time = "2025-09-14T22:16:00.165Z" }, + { url = "https://files.pythonhosted.org/packages/73/28/a44bdece01bca027b079f0e00be3b6bd89a4df180071da59a3dd7381665b/zstandard-0.25.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e05ab82ea7753354bb054b92e2f288afb750e6b439ff6ca78af52939ebbc476d", size = 5055561, upload-time = "2025-09-14T22:16:02.22Z" }, + { url = "https://files.pythonhosted.org/packages/e9/74/68341185a4f32b274e0fc3410d5ad0750497e1acc20bd0f5b5f64ce17785/zstandard-0.25.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:78228d8a6a1c177a96b94f7e2e8d012c55f9c760761980da16ae7546a15a8e9b", size = 5402214, upload-time = "2025-09-14T22:16:04.109Z" }, + { url = "https://files.pythonhosted.org/packages/8b/67/f92e64e748fd6aaffe01e2b75a083c0c4fd27abe1c8747fee4555fcee7dd/zstandard-0.25.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:2b6bd67528ee8b5c5f10255735abc21aa106931f0dbaf297c7be0c886353c3d0", size = 5449703, upload-time = "2025-09-14T22:16:06.312Z" }, + { url = "https://files.pythonhosted.org/packages/fd/e5/6d36f92a197c3c17729a2125e29c169f460538a7d939a27eaaa6dcfcba8e/zstandard-0.25.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4b6d83057e713ff235a12e73916b6d356e3084fd3d14ced499d84240f3eecee0", size = 5556583, upload-time = "2025-09-14T22:16:08.457Z" }, + { url = "https://files.pythonhosted.org/packages/d7/83/41939e60d8d7ebfe2b747be022d0806953799140a702b90ffe214d557638/zstandard-0.25.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9174f4ed06f790a6869b41cba05b43eeb9a35f8993c4422ab853b705e8112bbd", size = 5045332, upload-time = "2025-09-14T22:16:10.444Z" }, + { url = "https://files.pythonhosted.org/packages/b3/87/d3ee185e3d1aa0133399893697ae91f221fda79deb61adbe998a7235c43f/zstandard-0.25.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:25f8f3cd45087d089aef5ba3848cd9efe3ad41163d3400862fb42f81a3a46701", size = 5572283, upload-time = "2025-09-14T22:16:12.128Z" }, + { url = "https://files.pythonhosted.org/packages/0a/1d/58635ae6104df96671076ac7d4ae7816838ce7debd94aecf83e30b7121b0/zstandard-0.25.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3756b3e9da9b83da1796f8809dd57cb024f838b9eeafde28f3cb472012797ac1", size = 4959754, upload-time = "2025-09-14T22:16:14.225Z" }, + { url = "https://files.pythonhosted.org/packages/75/d6/57e9cb0a9983e9a229dd8fd2e6e96593ef2aa82a3907188436f22b111ccd/zstandard-0.25.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:81dad8d145d8fd981b2962b686b2241d3a1ea07733e76a2f15435dfb7fb60150", size = 5266477, upload-time = "2025-09-14T22:16:16.343Z" }, + { url = "https://files.pythonhosted.org/packages/d1/a9/ee891e5edf33a6ebce0a028726f0bbd8567effe20fe3d5808c42323e8542/zstandard-0.25.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:a5a419712cf88862a45a23def0ae063686db3d324cec7edbe40509d1a79a0aab", size = 5440914, upload-time = "2025-09-14T22:16:18.453Z" }, + { url = "https://files.pythonhosted.org/packages/58/08/a8522c28c08031a9521f27abc6f78dbdee7312a7463dd2cfc658b813323b/zstandard-0.25.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:e7360eae90809efd19b886e59a09dad07da4ca9ba096752e61a2e03c8aca188e", size = 5819847, upload-time = "2025-09-14T22:16:20.559Z" }, + { url = "https://files.pythonhosted.org/packages/6f/11/4c91411805c3f7b6f31c60e78ce347ca48f6f16d552fc659af6ec3b73202/zstandard-0.25.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:75ffc32a569fb049499e63ce68c743155477610532da1eb38e7f24bf7cd29e74", size = 5363131, upload-time = "2025-09-14T22:16:22.206Z" }, + { url = "https://files.pythonhosted.org/packages/ef/d6/8c4bd38a3b24c4c7676a7a3d8de85d6ee7a983602a734b9f9cdefb04a5d6/zstandard-0.25.0-cp310-cp310-win32.whl", hash = "sha256:106281ae350e494f4ac8a80470e66d1fe27e497052c8d9c3b95dc4cf1ade81aa", size = 436469, upload-time = "2025-09-14T22:16:25.002Z" }, + { url = "https://files.pythonhosted.org/packages/93/90/96d50ad417a8ace5f841b3228e93d1bb13e6ad356737f42e2dde30d8bd68/zstandard-0.25.0-cp310-cp310-win_amd64.whl", hash = "sha256:ea9d54cc3d8064260114a0bbf3479fc4a98b21dffc89b3459edd506b69262f6e", size = 506100, upload-time = "2025-09-14T22:16:23.569Z" }, + { url = "https://files.pythonhosted.org/packages/2a/83/c3ca27c363d104980f1c9cee1101cc8ba724ac8c28a033ede6aab89585b1/zstandard-0.25.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:933b65d7680ea337180733cf9e87293cc5500cc0eb3fc8769f4d3c88d724ec5c", size = 795254, upload-time = "2025-09-14T22:16:26.137Z" }, + { url = "https://files.pythonhosted.org/packages/ac/4d/e66465c5411a7cf4866aeadc7d108081d8ceba9bc7abe6b14aa21c671ec3/zstandard-0.25.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a3f79487c687b1fc69f19e487cd949bf3aae653d181dfb5fde3bf6d18894706f", size = 640559, upload-time = "2025-09-14T22:16:27.973Z" }, + { url = "https://files.pythonhosted.org/packages/12/56/354fe655905f290d3b147b33fe946b0f27e791e4b50a5f004c802cb3eb7b/zstandard-0.25.0-cp311-cp311-manylinux2010_i686.manylinux2014_i686.manylinux_2_12_i686.manylinux_2_17_i686.whl", hash = "sha256:0bbc9a0c65ce0eea3c34a691e3c4b6889f5f3909ba4822ab385fab9057099431", size = 5348020, upload-time = "2025-09-14T22:16:29.523Z" }, + { url = "https://files.pythonhosted.org/packages/3b/13/2b7ed68bd85e69a2069bcc72141d378f22cae5a0f3b353a2c8f50ef30c1b/zstandard-0.25.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:01582723b3ccd6939ab7b3a78622c573799d5d8737b534b86d0e06ac18dbde4a", size = 5058126, upload-time = "2025-09-14T22:16:31.811Z" }, + { url = "https://files.pythonhosted.org/packages/c9/dd/fdaf0674f4b10d92cb120ccff58bbb6626bf8368f00ebfd2a41ba4a0dc99/zstandard-0.25.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:5f1ad7bf88535edcf30038f6919abe087f606f62c00a87d7e33e7fc57cb69fcc", size = 5405390, upload-time = "2025-09-14T22:16:33.486Z" }, + { url = "https://files.pythonhosted.org/packages/0f/67/354d1555575bc2490435f90d67ca4dd65238ff2f119f30f72d5cde09c2ad/zstandard-0.25.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:06acb75eebeedb77b69048031282737717a63e71e4ae3f77cc0c3b9508320df6", size = 5452914, upload-time = "2025-09-14T22:16:35.277Z" }, + { url = "https://files.pythonhosted.org/packages/bb/1f/e9cfd801a3f9190bf3e759c422bbfd2247db9d7f3d54a56ecde70137791a/zstandard-0.25.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9300d02ea7c6506f00e627e287e0492a5eb0371ec1670ae852fefffa6164b072", size = 5559635, upload-time = "2025-09-14T22:16:37.141Z" }, + { url = "https://files.pythonhosted.org/packages/21/88/5ba550f797ca953a52d708c8e4f380959e7e3280af029e38fbf47b55916e/zstandard-0.25.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bfd06b1c5584b657a2892a6014c2f4c20e0db0208c159148fa78c65f7e0b0277", size = 5048277, upload-time = "2025-09-14T22:16:38.807Z" }, + { url = "https://files.pythonhosted.org/packages/46/c0/ca3e533b4fa03112facbe7fbe7779cb1ebec215688e5df576fe5429172e0/zstandard-0.25.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f373da2c1757bb7f1acaf09369cdc1d51d84131e50d5fa9863982fd626466313", size = 5574377, upload-time = "2025-09-14T22:16:40.523Z" }, + { url = "https://files.pythonhosted.org/packages/12/9b/3fb626390113f272abd0799fd677ea33d5fc3ec185e62e6be534493c4b60/zstandard-0.25.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6c0e5a65158a7946e7a7affa6418878ef97ab66636f13353b8502d7ea03c8097", size = 4961493, upload-time = "2025-09-14T22:16:43.3Z" }, + { url = "https://files.pythonhosted.org/packages/cb/d3/23094a6b6a4b1343b27ae68249daa17ae0651fcfec9ed4de09d14b940285/zstandard-0.25.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:c8e167d5adf59476fa3e37bee730890e389410c354771a62e3c076c86f9f7778", size = 5269018, upload-time = "2025-09-14T22:16:45.292Z" }, + { url = "https://files.pythonhosted.org/packages/8c/a7/bb5a0c1c0f3f4b5e9d5b55198e39de91e04ba7c205cc46fcb0f95f0383c1/zstandard-0.25.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:98750a309eb2f020da61e727de7d7ba3c57c97cf6213f6f6277bb7fb42a8e065", size = 5443672, upload-time = "2025-09-14T22:16:47.076Z" }, + { url = "https://files.pythonhosted.org/packages/27/22/503347aa08d073993f25109c36c8d9f029c7d5949198050962cb568dfa5e/zstandard-0.25.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:22a086cff1b6ceca18a8dd6096ec631e430e93a8e70a9ca5efa7561a00f826fa", size = 5822753, upload-time = "2025-09-14T22:16:49.316Z" }, + { url = "https://files.pythonhosted.org/packages/e2/be/94267dc6ee64f0f8ba2b2ae7c7a2df934a816baaa7291db9e1aa77394c3c/zstandard-0.25.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:72d35d7aa0bba323965da807a462b0966c91608ef3a48ba761678cb20ce5d8b7", size = 5366047, upload-time = "2025-09-14T22:16:51.328Z" }, + { url = "https://files.pythonhosted.org/packages/7b/a3/732893eab0a3a7aecff8b99052fecf9f605cf0fb5fb6d0290e36beee47a4/zstandard-0.25.0-cp311-cp311-win32.whl", hash = "sha256:f5aeea11ded7320a84dcdd62a3d95b5186834224a9e55b92ccae35d21a8b63d4", size = 436484, upload-time = "2025-09-14T22:16:55.005Z" }, + { url = "https://files.pythonhosted.org/packages/43/a3/c6155f5c1cce691cb80dfd38627046e50af3ee9ddc5d0b45b9b063bfb8c9/zstandard-0.25.0-cp311-cp311-win_amd64.whl", hash = "sha256:daab68faadb847063d0c56f361a289c4f268706b598afbf9ad113cbe5c38b6b2", size = 506183, upload-time = "2025-09-14T22:16:52.753Z" }, + { url = "https://files.pythonhosted.org/packages/8c/3e/8945ab86a0820cc0e0cdbf38086a92868a9172020fdab8a03ac19662b0e5/zstandard-0.25.0-cp311-cp311-win_arm64.whl", hash = "sha256:22a06c5df3751bb7dc67406f5374734ccee8ed37fc5981bf1ad7041831fa1137", size = 462533, upload-time = "2025-09-14T22:16:53.878Z" }, + { url = "https://files.pythonhosted.org/packages/82/fc/f26eb6ef91ae723a03e16eddb198abcfce2bc5a42e224d44cc8b6765e57e/zstandard-0.25.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7b3c3a3ab9daa3eed242d6ecceead93aebbb8f5f84318d82cee643e019c4b73b", size = 795738, upload-time = "2025-09-14T22:16:56.237Z" }, + { url = "https://files.pythonhosted.org/packages/aa/1c/d920d64b22f8dd028a8b90e2d756e431a5d86194caa78e3819c7bf53b4b3/zstandard-0.25.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:913cbd31a400febff93b564a23e17c3ed2d56c064006f54efec210d586171c00", size = 640436, upload-time = "2025-09-14T22:16:57.774Z" }, + { url = "https://files.pythonhosted.org/packages/53/6c/288c3f0bd9fcfe9ca41e2c2fbfd17b2097f6af57b62a81161941f09afa76/zstandard-0.25.0-cp312-cp312-manylinux2010_i686.manylinux2014_i686.manylinux_2_12_i686.manylinux_2_17_i686.whl", hash = "sha256:011d388c76b11a0c165374ce660ce2c8efa8e5d87f34996aa80f9c0816698b64", size = 5343019, upload-time = "2025-09-14T22:16:59.302Z" }, + { url = "https://files.pythonhosted.org/packages/1e/15/efef5a2f204a64bdb5571e6161d49f7ef0fffdbca953a615efbec045f60f/zstandard-0.25.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6dffecc361d079bb48d7caef5d673c88c8988d3d33fb74ab95b7ee6da42652ea", size = 5063012, upload-time = "2025-09-14T22:17:01.156Z" }, + { url = "https://files.pythonhosted.org/packages/b7/37/a6ce629ffdb43959e92e87ebdaeebb5ac81c944b6a75c9c47e300f85abdf/zstandard-0.25.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:7149623bba7fdf7e7f24312953bcf73cae103db8cae49f8154dd1eadc8a29ecb", size = 5394148, upload-time = "2025-09-14T22:17:03.091Z" }, + { url = "https://files.pythonhosted.org/packages/e3/79/2bf870b3abeb5c070fe2d670a5a8d1057a8270f125ef7676d29ea900f496/zstandard-0.25.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:6a573a35693e03cf1d67799fd01b50ff578515a8aeadd4595d2a7fa9f3ec002a", size = 5451652, upload-time = "2025-09-14T22:17:04.979Z" }, + { url = "https://files.pythonhosted.org/packages/53/60/7be26e610767316c028a2cbedb9a3beabdbe33e2182c373f71a1c0b88f36/zstandard-0.25.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5a56ba0db2d244117ed744dfa8f6f5b366e14148e00de44723413b2f3938a902", size = 5546993, upload-time = "2025-09-14T22:17:06.781Z" }, + { url = "https://files.pythonhosted.org/packages/85/c7/3483ad9ff0662623f3648479b0380d2de5510abf00990468c286c6b04017/zstandard-0.25.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:10ef2a79ab8e2974e2075fb984e5b9806c64134810fac21576f0668e7ea19f8f", size = 5046806, upload-time = "2025-09-14T22:17:08.415Z" }, + { url = "https://files.pythonhosted.org/packages/08/b3/206883dd25b8d1591a1caa44b54c2aad84badccf2f1de9e2d60a446f9a25/zstandard-0.25.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:aaf21ba8fb76d102b696781bddaa0954b782536446083ae3fdaa6f16b25a1c4b", size = 5576659, upload-time = "2025-09-14T22:17:10.164Z" }, + { url = "https://files.pythonhosted.org/packages/9d/31/76c0779101453e6c117b0ff22565865c54f48f8bd807df2b00c2c404b8e0/zstandard-0.25.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1869da9571d5e94a85a5e8d57e4e8807b175c9e4a6294e3b66fa4efb074d90f6", size = 4953933, upload-time = "2025-09-14T22:17:11.857Z" }, + { url = "https://files.pythonhosted.org/packages/18/e1/97680c664a1bf9a247a280a053d98e251424af51f1b196c6d52f117c9720/zstandard-0.25.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:809c5bcb2c67cd0ed81e9229d227d4ca28f82d0f778fc5fea624a9def3963f91", size = 5268008, upload-time = "2025-09-14T22:17:13.627Z" }, + { url = "https://files.pythonhosted.org/packages/1e/73/316e4010de585ac798e154e88fd81bb16afc5c5cb1a72eeb16dd37e8024a/zstandard-0.25.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f27662e4f7dbf9f9c12391cb37b4c4c3cb90ffbd3b1fb9284dadbbb8935fa708", size = 5433517, upload-time = "2025-09-14T22:17:16.103Z" }, + { url = "https://files.pythonhosted.org/packages/5b/60/dd0f8cfa8129c5a0ce3ea6b7f70be5b33d2618013a161e1ff26c2b39787c/zstandard-0.25.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:99c0c846e6e61718715a3c9437ccc625de26593fea60189567f0118dc9db7512", size = 5814292, upload-time = "2025-09-14T22:17:17.827Z" }, + { url = "https://files.pythonhosted.org/packages/fc/5f/75aafd4b9d11b5407b641b8e41a57864097663699f23e9ad4dbb91dc6bfe/zstandard-0.25.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:474d2596a2dbc241a556e965fb76002c1ce655445e4e3bf38e5477d413165ffa", size = 5360237, upload-time = "2025-09-14T22:17:19.954Z" }, + { url = "https://files.pythonhosted.org/packages/ff/8d/0309daffea4fcac7981021dbf21cdb2e3427a9e76bafbcdbdf5392ff99a4/zstandard-0.25.0-cp312-cp312-win32.whl", hash = "sha256:23ebc8f17a03133b4426bcc04aabd68f8236eb78c3760f12783385171b0fd8bd", size = 436922, upload-time = "2025-09-14T22:17:24.398Z" }, + { url = "https://files.pythonhosted.org/packages/79/3b/fa54d9015f945330510cb5d0b0501e8253c127cca7ebe8ba46a965df18c5/zstandard-0.25.0-cp312-cp312-win_amd64.whl", hash = "sha256:ffef5a74088f1e09947aecf91011136665152e0b4b359c42be3373897fb39b01", size = 506276, upload-time = "2025-09-14T22:17:21.429Z" }, + { url = "https://files.pythonhosted.org/packages/ea/6b/8b51697e5319b1f9ac71087b0af9a40d8a6288ff8025c36486e0c12abcc4/zstandard-0.25.0-cp312-cp312-win_arm64.whl", hash = "sha256:181eb40e0b6a29b3cd2849f825e0fa34397f649170673d385f3598ae17cca2e9", size = 462679, upload-time = "2025-09-14T22:17:23.147Z" }, + { url = "https://files.pythonhosted.org/packages/35/0b/8df9c4ad06af91d39e94fa96cc010a24ac4ef1378d3efab9223cc8593d40/zstandard-0.25.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ec996f12524f88e151c339688c3897194821d7f03081ab35d31d1e12ec975e94", size = 795735, upload-time = "2025-09-14T22:17:26.042Z" }, + { url = "https://files.pythonhosted.org/packages/3f/06/9ae96a3e5dcfd119377ba33d4c42a7d89da1efabd5cb3e366b156c45ff4d/zstandard-0.25.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a1a4ae2dec3993a32247995bdfe367fc3266da832d82f8438c8570f989753de1", size = 640440, upload-time = "2025-09-14T22:17:27.366Z" }, + { url = "https://files.pythonhosted.org/packages/d9/14/933d27204c2bd404229c69f445862454dcc101cd69ef8c6068f15aaec12c/zstandard-0.25.0-cp313-cp313-manylinux2010_i686.manylinux2014_i686.manylinux_2_12_i686.manylinux_2_17_i686.whl", hash = "sha256:e96594a5537722fdfb79951672a2a63aec5ebfb823e7560586f7484819f2a08f", size = 5343070, upload-time = "2025-09-14T22:17:28.896Z" }, + { url = "https://files.pythonhosted.org/packages/6d/db/ddb11011826ed7db9d0e485d13df79b58586bfdec56e5c84a928a9a78c1c/zstandard-0.25.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:bfc4e20784722098822e3eee42b8e576b379ed72cca4a7cb856ae733e62192ea", size = 5063001, upload-time = "2025-09-14T22:17:31.044Z" }, + { url = "https://files.pythonhosted.org/packages/db/00/87466ea3f99599d02a5238498b87bf84a6348290c19571051839ca943777/zstandard-0.25.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:457ed498fc58cdc12fc48f7950e02740d4f7ae9493dd4ab2168a47c93c31298e", size = 5394120, upload-time = "2025-09-14T22:17:32.711Z" }, + { url = "https://files.pythonhosted.org/packages/2b/95/fc5531d9c618a679a20ff6c29e2b3ef1d1f4ad66c5e161ae6ff847d102a9/zstandard-0.25.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:fd7a5004eb1980d3cefe26b2685bcb0b17989901a70a1040d1ac86f1d898c551", size = 5451230, upload-time = "2025-09-14T22:17:34.41Z" }, + { url = "https://files.pythonhosted.org/packages/63/4b/e3678b4e776db00f9f7b2fe58e547e8928ef32727d7a1ff01dea010f3f13/zstandard-0.25.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8e735494da3db08694d26480f1493ad2cf86e99bdd53e8e9771b2752a5c0246a", size = 5547173, upload-time = "2025-09-14T22:17:36.084Z" }, + { url = "https://files.pythonhosted.org/packages/4e/d5/ba05ed95c6b8ec30bd468dfeab20589f2cf709b5c940483e31d991f2ca58/zstandard-0.25.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3a39c94ad7866160a4a46d772e43311a743c316942037671beb264e395bdd611", size = 5046736, upload-time = "2025-09-14T22:17:37.891Z" }, + { url = "https://files.pythonhosted.org/packages/50/d5/870aa06b3a76c73eced65c044b92286a3c4e00554005ff51962deef28e28/zstandard-0.25.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:172de1f06947577d3a3005416977cce6168f2261284c02080e7ad0185faeced3", size = 5576368, upload-time = "2025-09-14T22:17:40.206Z" }, + { url = "https://files.pythonhosted.org/packages/5d/35/398dc2ffc89d304d59bc12f0fdd931b4ce455bddf7038a0a67733a25f550/zstandard-0.25.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3c83b0188c852a47cd13ef3bf9209fb0a77fa5374958b8c53aaa699398c6bd7b", size = 4954022, upload-time = "2025-09-14T22:17:41.879Z" }, + { url = "https://files.pythonhosted.org/packages/9a/5c/36ba1e5507d56d2213202ec2b05e8541734af5f2ce378c5d1ceaf4d88dc4/zstandard-0.25.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:1673b7199bbe763365b81a4f3252b8e80f44c9e323fc42940dc8843bfeaf9851", size = 5267889, upload-time = "2025-09-14T22:17:43.577Z" }, + { url = "https://files.pythonhosted.org/packages/70/e8/2ec6b6fb7358b2ec0113ae202647ca7c0e9d15b61c005ae5225ad0995df5/zstandard-0.25.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:0be7622c37c183406f3dbf0cba104118eb16a4ea7359eeb5752f0794882fc250", size = 5433952, upload-time = "2025-09-14T22:17:45.271Z" }, + { url = "https://files.pythonhosted.org/packages/7b/01/b5f4d4dbc59ef193e870495c6f1275f5b2928e01ff5a81fecb22a06e22fb/zstandard-0.25.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:5f5e4c2a23ca271c218ac025bd7d635597048b366d6f31f420aaeb715239fc98", size = 5814054, upload-time = "2025-09-14T22:17:47.08Z" }, + { url = "https://files.pythonhosted.org/packages/b2/e5/fbd822d5c6f427cf158316d012c5a12f233473c2f9c5fe5ab1ae5d21f3d8/zstandard-0.25.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f187a0bb61b35119d1926aee039524d1f93aaf38a9916b8c4b78ac8514a0aaf", size = 5360113, upload-time = "2025-09-14T22:17:48.893Z" }, + { url = "https://files.pythonhosted.org/packages/8e/e0/69a553d2047f9a2c7347caa225bb3a63b6d7704ad74610cb7823baa08ed7/zstandard-0.25.0-cp313-cp313-win32.whl", hash = "sha256:7030defa83eef3e51ff26f0b7bfb229f0204b66fe18e04359ce3474ac33cbc09", size = 436936, upload-time = "2025-09-14T22:17:52.658Z" }, + { url = "https://files.pythonhosted.org/packages/d9/82/b9c06c870f3bd8767c201f1edbdf9e8dc34be5b0fbc5682c4f80fe948475/zstandard-0.25.0-cp313-cp313-win_amd64.whl", hash = "sha256:1f830a0dac88719af0ae43b8b2d6aef487d437036468ef3c2ea59c51f9d55fd5", size = 506232, upload-time = "2025-09-14T22:17:50.402Z" }, + { url = "https://files.pythonhosted.org/packages/d4/57/60c3c01243bb81d381c9916e2a6d9e149ab8627c0c7d7abb2d73384b3c0c/zstandard-0.25.0-cp313-cp313-win_arm64.whl", hash = "sha256:85304a43f4d513f5464ceb938aa02c1e78c2943b29f44a750b48b25ac999a049", size = 462671, upload-time = "2025-09-14T22:17:51.533Z" }, + { url = "https://files.pythonhosted.org/packages/3d/5c/f8923b595b55fe49e30612987ad8bf053aef555c14f05bb659dd5dbe3e8a/zstandard-0.25.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:e29f0cf06974c899b2c188ef7f783607dbef36da4c242eb6c82dcd8b512855e3", size = 795887, upload-time = "2025-09-14T22:17:54.198Z" }, + { url = "https://files.pythonhosted.org/packages/8d/09/d0a2a14fc3439c5f874042dca72a79c70a532090b7ba0003be73fee37ae2/zstandard-0.25.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:05df5136bc5a011f33cd25bc9f506e7426c0c9b3f9954f056831ce68f3b6689f", size = 640658, upload-time = "2025-09-14T22:17:55.423Z" }, + { url = "https://files.pythonhosted.org/packages/5d/7c/8b6b71b1ddd517f68ffb55e10834388d4f793c49c6b83effaaa05785b0b4/zstandard-0.25.0-cp314-cp314-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:f604efd28f239cc21b3adb53eb061e2a205dc164be408e553b41ba2ffe0ca15c", size = 5379849, upload-time = "2025-09-14T22:17:57.372Z" }, + { url = "https://files.pythonhosted.org/packages/a4/86/a48e56320d0a17189ab7a42645387334fba2200e904ee47fc5a26c1fd8ca/zstandard-0.25.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:223415140608d0f0da010499eaa8ccdb9af210a543fac54bce15babbcfc78439", size = 5058095, upload-time = "2025-09-14T22:17:59.498Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ad/eb659984ee2c0a779f9d06dbfe45e2dc39d99ff40a319895df2d3d9a48e5/zstandard-0.25.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2e54296a283f3ab5a26fc9b8b5d4978ea0532f37b231644f367aa588930aa043", size = 5551751, upload-time = "2025-09-14T22:18:01.618Z" }, + { url = "https://files.pythonhosted.org/packages/61/b3/b637faea43677eb7bd42ab204dfb7053bd5c4582bfe6b1baefa80ac0c47b/zstandard-0.25.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ca54090275939dc8ec5dea2d2afb400e0f83444b2fc24e07df7fdef677110859", size = 6364818, upload-time = "2025-09-14T22:18:03.769Z" }, + { url = "https://files.pythonhosted.org/packages/31/dc/cc50210e11e465c975462439a492516a73300ab8caa8f5e0902544fd748b/zstandard-0.25.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e09bb6252b6476d8d56100e8147b803befa9a12cea144bbe629dd508800d1ad0", size = 5560402, upload-time = "2025-09-14T22:18:05.954Z" }, + { url = "https://files.pythonhosted.org/packages/c9/ae/56523ae9c142f0c08efd5e868a6da613ae76614eca1305259c3bf6a0ed43/zstandard-0.25.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:a9ec8c642d1ec73287ae3e726792dd86c96f5681eb8df274a757bf62b750eae7", size = 4955108, upload-time = "2025-09-14T22:18:07.68Z" }, + { url = "https://files.pythonhosted.org/packages/98/cf/c899f2d6df0840d5e384cf4c4121458c72802e8bda19691f3b16619f51e9/zstandard-0.25.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:a4089a10e598eae6393756b036e0f419e8c1d60f44a831520f9af41c14216cf2", size = 5269248, upload-time = "2025-09-14T22:18:09.753Z" }, + { url = "https://files.pythonhosted.org/packages/1b/c0/59e912a531d91e1c192d3085fc0f6fb2852753c301a812d856d857ea03c6/zstandard-0.25.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:f67e8f1a324a900e75b5e28ffb152bcac9fbed1cc7b43f99cd90f395c4375344", size = 5430330, upload-time = "2025-09-14T22:18:11.966Z" }, + { url = "https://files.pythonhosted.org/packages/a0/1d/7e31db1240de2df22a58e2ea9a93fc6e38cc29353e660c0272b6735d6669/zstandard-0.25.0-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:9654dbc012d8b06fc3d19cc825af3f7bf8ae242226df5f83936cb39f5fdc846c", size = 5811123, upload-time = "2025-09-14T22:18:13.907Z" }, + { url = "https://files.pythonhosted.org/packages/f6/49/fac46df5ad353d50535e118d6983069df68ca5908d4d65b8c466150a4ff1/zstandard-0.25.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4203ce3b31aec23012d3a4cf4a2ed64d12fea5269c49aed5e4c3611b938e4088", size = 5359591, upload-time = "2025-09-14T22:18:16.465Z" }, + { url = "https://files.pythonhosted.org/packages/c2/38/f249a2050ad1eea0bb364046153942e34abba95dd5520af199aed86fbb49/zstandard-0.25.0-cp314-cp314-win32.whl", hash = "sha256:da469dc041701583e34de852d8634703550348d5822e66a0c827d39b05365b12", size = 444513, upload-time = "2025-09-14T22:18:20.61Z" }, + { url = "https://files.pythonhosted.org/packages/3a/43/241f9615bcf8ba8903b3f0432da069e857fc4fd1783bd26183db53c4804b/zstandard-0.25.0-cp314-cp314-win_amd64.whl", hash = "sha256:c19bcdd826e95671065f8692b5a4aa95c52dc7a02a4c5a0cac46deb879a017a2", size = 516118, upload-time = "2025-09-14T22:18:17.849Z" }, + { url = "https://files.pythonhosted.org/packages/f0/ef/da163ce2450ed4febf6467d77ccb4cd52c4c30ab45624bad26ca0a27260c/zstandard-0.25.0-cp314-cp314-win_arm64.whl", hash = "sha256:d7541afd73985c630bafcd6338d2518ae96060075f9463d7dc14cfb33514383d", size = 476940, upload-time = "2025-09-14T22:18:19.088Z" }, ] From 34539d0619c957d54220151512fa5d2e05266212 Mon Sep 17 00:00:00 2001 From: Sijia Wang Date: Thu, 23 Oct 2025 12:51:32 -0400 Subject: [PATCH 20/34] Fix for `explicit_chunk` with non fractional values (#1003) * fix for num_choosers < chunk_size * update assert logic --- activitysim/core/chunk.py | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/activitysim/core/chunk.py b/activitysim/core/chunk.py index 7f09187f1..c7a3d4d7a 100644 --- a/activitysim/core/chunk.py +++ b/activitysim/core/chunk.py @@ -1234,11 +1234,16 @@ def adaptive_chunked_choosers( num_choosers = len(choosers.index) + if state.settings.multiprocess: + num_processes = state.get_injectable("num_processes", 1) + else: + num_processes = 1 + if state.settings.chunk_training_mode == MODE_EXPLICIT: if explicit_chunk_size < 1: chunk_size = math.ceil(num_choosers * explicit_chunk_size) else: - chunk_size = int(explicit_chunk_size) + chunk_size = math.ceil(explicit_chunk_size / num_processes) elif chunk_size is None: chunk_size = state.settings.chunk_size @@ -1372,11 +1377,16 @@ def adaptive_chunked_choosers_and_alts( f"with {num_choosers} choosers and {num_alternatives} alternatives" ) + if state.settings.multiprocess: + num_processes = state.get_injectable("num_processes", 1) + else: + num_processes = 1 + if state.settings.chunk_training_mode == MODE_EXPLICIT: if explicit_chunk_size < 1: chunk_size = math.ceil(num_choosers * explicit_chunk_size) else: - chunk_size = int(explicit_chunk_size) + chunk_size = int(explicit_chunk_size / num_processes) elif chunk_size is None: chunk_size = state.settings.chunk_size @@ -1389,7 +1399,14 @@ def adaptive_chunked_choosers_and_alts( chunk_training_mode=state.settings.chunk_training_mode, ) rows_per_chunk, estimated_number_of_chunks = chunk_sizer.initial_rows_per_chunk() - assert (rows_per_chunk > 0) and (rows_per_chunk <= num_choosers) + assert (rows_per_chunk > 0) and ( + (rows_per_chunk <= num_choosers) + or ( + (rows_per_chunk >= num_choosers) + and (estimated_number_of_chunks == 1) + and (state.settings.chunk_training_mode == MODE_EXPLICIT) + ) + ) # alt chunks boundaries are where index changes alt_ids = alternatives.index.values From 335111b0f73e6a607994e9d254439f66d9608999 Mon Sep 17 00:00:00 2001 From: Joe Flood Date: Tue, 28 Oct 2025 22:28:45 +0000 Subject: [PATCH 21/34] Clean up command prompt logging (#1004) * Downgraded logging of which expression is being evaluated from "info" level to "debug" level * Downgraded column list before and after dropping unused columns from "INFO" to "DEBUG" * Downgraded reporting of model component results from "INFO" to "DEBUG" * Downgraded a few log messages in settings checker from "INFO" to "DEBUG" * Changed default value of `level` argument in flow.TimeLogger.summary() from 20 to 10 so that it's a DEBUG message by default * Downgraded logging statements when merging the choosers and alternatives from "INFO" to "DEBUG" * Downgraded runtimes for flow evaluations from "INFO" to "DEBUG" * Downgraded "sharrow_enabled is True/False" from "INFO" to "DEBUG" as it's repetitive and will likely only be of concern during development/debugging * Downgraded utility data types reporting from "INFO" to "DEBUG" * Downgraded all instances of logger.info to logger.debug in activitysim.core.chunk * Downgraded line reporting how many rows are being run for eval_interaction_utilities * Downgraded several (primarily repetitive) statements in activitysim.abm.models.util * Downgraded messages reportng how long each of the sampling, logsums, and simulation in trip destination choice from "INFO" to "DEBUG" * Downgraded more detailed messages from "INFO" to "DEBUG" in trip destination * Reclassified some logging statements * Swapped logging statement classifications to get desired statement printed * Downgraded statement from "INFO" to "DEBUG" that wasn't providing much information * blacken * Added documentation on logging levels --------- Co-authored-by: Jeffrey Newman --- activitysim/abm/models/settings_checker.py | 14 ++-- activitysim/abm/models/trip_destination.py | 18 ++++-- activitysim/abm/models/util/canonical_ids.py | 10 +-- .../abm/models/util/tour_destination.py | 14 ++-- activitysim/abm/models/util/tour_od.py | 12 ++-- .../abm/models/util/tour_scheduling.py | 2 +- .../models/util/vectorize_tour_scheduling.py | 12 ++-- activitysim/core/assign.py | 2 +- activitysim/core/chunk.py | 16 ++--- activitysim/core/flow.py | 4 +- .../core/interaction_sample_simulate.py | 4 +- activitysim/core/interaction_simulate.py | 8 +-- activitysim/core/simulate.py | 2 +- activitysim/core/tracing.py | 4 +- activitysim/core/util.py | 6 +- docs/dev-guide/logging.md | 64 +++++++++++++++++++ 16 files changed, 130 insertions(+), 62 deletions(-) diff --git a/activitysim/abm/models/settings_checker.py b/activitysim/abm/models/settings_checker.py index 907e7e999..2c387fdcf 100644 --- a/activitysim/abm/models/settings_checker.py +++ b/activitysim/abm/models/settings_checker.py @@ -322,7 +322,7 @@ def try_load_model_settings( ) -> tuple[PydanticBase | None, Exception | None]: msg = f"Attempting to load model settings for {model_name} via {model_settings_class.__name__} and {model_settings_file}" - logger.info(msg) + logger.debug(msg) file_logger.info(msg) try: @@ -348,7 +348,7 @@ class InputCheckerSettings(PydanticBase): ) result = model_settings, None msg = f"Successfully loaded model settings from {model_settings_file}" - logger.info(msg) + logger.debug(msg) except Exception as e: result = None, e return result @@ -358,12 +358,12 @@ def try_load_spec( model_name: str, model_settings: PydanticBase, spec_file: str, state: State ) -> tuple[DataFrame | None, Exception | None]: msg = f"Attempting to load SPEC for {model_name} via {model_settings.__class__.__name__}" - logger.info(msg) + logger.debug(msg) file_logger.info(msg) try: result = state.filesystem.read_model_spec(spec_file), None msg = f"Successfully loaded model SPEC from {spec_file}" - logger.info(msg) + logger.debug(msg) file_logger.info(msg) except Exception as e: # always return a dataframe @@ -375,13 +375,13 @@ def try_load_coefs( model_name: str, model_settings: PydanticBase, coefs_file: str, state: State ) -> tuple[DataFrame, Optional[Exception]]: msg = f"Attempting to load COEFFICIENTS for {model_name} via {model_settings.__class__.__name__}" - logger.info(msg) + logger.debug(msg) file_logger.info(msg) try: result = state.filesystem.read_model_coefficients(file_name=coefs_file), None msg = f"Successfully loaded model Coefficients from {coefs_file}" - logger.info(msg) + logger.debug(msg) file_logger.info(msg) except Exception as e: result = None, e @@ -423,7 +423,7 @@ def try_eval_spec_coefs( else: result = eval_coefficients(state, spec, coefs, estimator=None), None msg = f"Successfully evaluated coefficients for {model_name}" - logger.info(msg) + logger.debug(msg) file_logger.info(msg) except Exception as e: result = None, e diff --git a/activitysim/abm/models/trip_destination.py b/activitysim/abm/models/trip_destination.py index 6584134ef..c07b9ede3 100644 --- a/activitysim/abm/models/trip_destination.py +++ b/activitysim/abm/models/trip_destination.py @@ -820,7 +820,7 @@ def compute_logsums( adds od_logsum and dp_logsum columns to trips (in place) """ trace_label = tracing.extend_trace_label(trace_label, "compute_logsums") - logger.info("Running %s with %d samples", trace_label, destination_sample.shape[0]) + logger.debug("Running %s with %d samples", trace_label, destination_sample.shape[0]) # chunk usage is uniform so better to combine chunk_tag = "trip_destination.compute_logsums" @@ -977,7 +977,7 @@ def trip_destination_simulate( alt_dest_col_name = model_settings.ALT_DEST_COL_NAME - logger.info("Running trip_destination_simulate with %d trips", len(trips)) + logger.debug("Running trip_destination_simulate with %d trips", len(trips)) skims = skim_hotel.sample_skims(presample=False) @@ -1102,7 +1102,7 @@ def choose_trip_destination( ) trips = trips[~dropped_trips] - t0 = print_elapsed_time("%s.trip_destination_sample" % trace_label, t0) + t0 = print_elapsed_time("%s.trip_destination_sample" % trace_label, t0, debug=True) if trips.empty: return pd.Series(index=trips.index).to_frame("choice"), None @@ -1124,7 +1124,7 @@ def choose_trip_destination( destination_sample["od_logsum"] = 0.0 destination_sample["dp_logsum"] = 0.0 - t0 = print_elapsed_time("%s.compute_logsums" % trace_label, t0) + t0 = print_elapsed_time("%s.compute_logsums" % trace_label, t0, debug=True) destinations = trip_destination_simulate( state, @@ -1155,7 +1155,9 @@ def choose_trip_destination( else: destination_sample = None - t0 = print_elapsed_time("%s.trip_destination_simulate" % trace_label, t0) + t0 = print_elapsed_time( + "%s.trip_destination_simulate" % trace_label, t0, debug=True + ) return destinations, destination_sample @@ -1484,7 +1486,9 @@ def run_trip_destination( else: None - logger.info("Running %s with %d trips", nth_trace_label, nth_trips.shape[0]) + logger.debug( + "Running %s with %d trips", nth_trace_label, nth_trips.shape[0] + ) # - choose destination for nth_trips, segmented by primary_purpose choices_list = [] @@ -1649,7 +1653,7 @@ def trip_destination( estimator.write_table(state.get_dataframe("land_use"), "landuse", append=False) estimator.write_model_settings(model_settings, model_settings_file_name) - logger.info("Running %s with %d trips", trace_label, trips_df.shape[0]) + logger.debug("Running %s with %d trips", trace_label, trips_df.shape[0]) trips_df, save_sample_df = run_trip_destination( state, diff --git a/activitysim/abm/models/util/canonical_ids.py b/activitysim/abm/models/util/canonical_ids.py index ab2623916..e3246a623 100644 --- a/activitysim/abm/models/util/canonical_ids.py +++ b/activitysim/abm/models/util/canonical_ids.py @@ -255,7 +255,7 @@ def canonical_tours(state: workflow.State): ) non_mandatory_channels = enumerate_tour_types(non_mandatory_tour_flavors) - logger.info(f"Non-Mandatory tour flavors used are {non_mandatory_tour_flavors}") + logger.debug(f"Non-Mandatory tour flavors used are {non_mandatory_tour_flavors}") # ---- mandatory_channels mtf_model_settings_file_name = "mandatory_tour_frequency.yaml" @@ -271,7 +271,7 @@ def canonical_tours(state: workflow.State): ) mandatory_channels = enumerate_tour_types(mandatory_tour_flavors) - logger.info(f"Mandatory tour flavors used are {mandatory_tour_flavors}") + logger.debug(f"Mandatory tour flavors used are {mandatory_tour_flavors}") # ---- atwork_subtour_channels atwork_model_settings_file_name = "atwork_subtour_frequency.yaml" @@ -288,7 +288,7 @@ def canonical_tours(state: workflow.State): ) atwork_subtour_channels = enumerate_tour_types(atwork_subtour_flavors) - logger.info(f"Atwork subtour flavors used are {atwork_subtour_flavors}") + logger.debug(f"Atwork subtour flavors used are {atwork_subtour_flavors}") # we need to distinguish between subtours of different work tours # (e.g. eat1_1 is eat subtour for parent work tour 1 and eat1_2 is for work tour 2) @@ -317,7 +317,7 @@ def canonical_tours(state: workflow.State): joint_tour_flavors = determine_flavors_from_alts_file( jtf_alts, provided_joint_flavors, default_joint_flavors ) - logger.info(f"Joint tour flavors used are {joint_tour_flavors}") + logger.debug(f"Joint tour flavors used are {joint_tour_flavors}") joint_tour_channels = enumerate_tour_types(joint_tour_flavors) joint_tour_channels = ["j_%s" % c for c in joint_tour_channels] @@ -343,7 +343,7 @@ def canonical_tours(state: workflow.State): school_escort_flavors = {"escort": 2 * num_escortees} school_escort_channels = enumerate_tour_types(school_escort_flavors) school_escort_channels = ["se_%s" % c for c in school_escort_channels] - logger.info(f"School escort tour flavors used are {school_escort_flavors}") + logger.debug(f"School escort tour flavors used are {school_escort_flavors}") sub_channels = sub_channels + school_escort_channels diff --git a/activitysim/abm/models/util/tour_destination.py b/activitysim/abm/models/util/tour_destination.py index 2032d21b9..d99803bd7 100644 --- a/activitysim/abm/models/util/tour_destination.py +++ b/activitysim/abm/models/util/tour_destination.py @@ -92,18 +92,18 @@ def _destination_sample( coefficients_file_name=model_settings.COEFFICIENTS, ) - logger.info("running %s with %d tours", trace_label, len(choosers)) + logger.debug("running %s with %d tours", trace_label, len(choosers)) sample_size = model_settings.SAMPLE_SIZE if estimator and model_settings.ESTIMATION_SAMPLE_SIZE >= 0: sample_size = model_settings.ESTIMATION_SAMPLE_SIZE - logger.info( + logger.debug( f"Estimation mode for {trace_label} using sample size of {sample_size}" ) if state.settings.disable_destination_sampling: sample_size = 0 - logger.info( + logger.debug( f"SAMPLE_SIZE set to 0 for {trace_label} because disable_destination_sampling is set" ) @@ -562,7 +562,7 @@ def destination_presample( trace_label = tracing.extend_trace_label(trace_label, "presample") chunk_tag = "tour_destination.presample" - logger.info(f"{trace_label} location_presample") + logger.debug(f"{trace_label} location_presample") alt_dest_col_name = model_settings.ALT_DEST_COL_NAME assert DEST_TAZ != alt_dest_col_name @@ -652,7 +652,7 @@ def run_destination_sample( ) if pre_sample_taz: - logger.info( + logger.debug( "Running %s destination_presample with %d tours" % (trace_label, len(tours)) ) @@ -740,7 +740,7 @@ def run_destination_logsums( how="left", ) - logger.info("Running %s with %s rows", trace_label, len(choosers)) + logger.debug("Running %s with %s rows", trace_label, len(choosers)) state.tracing.dump_df(DUMP, persons_merged, trace_label, "persons_merged") state.tracing.dump_df(DUMP, choosers, trace_label, "choosers") @@ -832,7 +832,7 @@ def run_destination_simulate( constants = model_settings.CONSTANTS - logger.info("Running tour_destination_simulate with %d persons", len(choosers)) + logger.debug("Running tour_destination_simulate with %d persons", len(choosers)) # create wrapper with keys for this lookup - in this case there is a home_zone_id in the choosers # and a zone_id in the alternatives which get merged during interaction diff --git a/activitysim/abm/models/util/tour_od.py b/activitysim/abm/models/util/tour_od.py index a74309be8..5ec9dd493 100644 --- a/activitysim/abm/models/util/tour_od.py +++ b/activitysim/abm/models/util/tour_od.py @@ -155,7 +155,7 @@ def _od_sample( else: alt_col_name = alt_od_col_name - logger.info("running %s with %d tours", trace_label, len(choosers)) + logger.debug("running %s with %d tours", trace_label, len(choosers)) sample_size = model_settings.SAMPLE_SIZE if state.settings.disable_destination_sampling or ( @@ -163,7 +163,7 @@ def _od_sample( ): # FIXME interaction_sample will return unsampled complete alternatives # with probs and pick_count - logger.info( + logger.debug( ( "Estimation mode for %s using unsampled alternatives " "short_circuit_choices" @@ -607,7 +607,7 @@ def od_presample( trace_label = tracing.extend_trace_label(trace_label, "presample") chunk_tag = "tour_od.presample" - logger.info(f"{trace_label} od_presample") + logger.debug(f"{trace_label} od_presample") alt_od_col_name = get_od_id_col(ORIG_MAZ, DEST_TAZ) @@ -711,7 +711,7 @@ def run_od_sample( ) if pre_sample_taz: - logger.info( + logger.debug( "Running %s destination_presample with %d tours" % (trace_label, len(tours)) ) @@ -780,7 +780,7 @@ def run_od_logsums( choosers[origin_id_col].astype(str) + "_" + choosers[dest_id_col].astype(str) ) - logger.info("Running %s with %s rows", trace_label, len(choosers)) + logger.debug("Running %s with %s rows", trace_label, len(choosers)) state.tracing.dump_df(DUMP, choosers, trace_label, "choosers") @@ -989,7 +989,7 @@ def run_od_simulate( constants = model_settings.CONSTANTS - logger.info("Running tour_destination_simulate with %d persons", len(choosers)) + logger.debug("Running tour_destination_simulate with %d persons", len(choosers)) # create wrapper with keys for this lookup - in this case there is an origin ID # column and a destination ID columns in the alternatives table. diff --git a/activitysim/abm/models/util/tour_scheduling.py b/activitysim/abm/models/util/tour_scheduling.py index 0a7c6675d..80474db59 100644 --- a/activitysim/abm/models/util/tour_scheduling.py +++ b/activitysim/abm/models/util/tour_scheduling.py @@ -140,7 +140,7 @@ def run_tour_scheduling( if estimators: timetable.begin_transaction(list(estimators.values())) - logger.info(f"Running {trace_label} with %d tours", len(chooser_tours)) + logger.debug(f"Running {trace_label} with %d tours", len(chooser_tours)) choices = vts.vectorize_tour_scheduling( state, chooser_tours, diff --git a/activitysim/abm/models/util/vectorize_tour_scheduling.py b/activitysim/abm/models/util/vectorize_tour_scheduling.py index d4593c21f..85efdaa70 100644 --- a/activitysim/abm/models/util/vectorize_tour_scheduling.py +++ b/activitysim/abm/models/util/vectorize_tour_scheduling.py @@ -161,7 +161,7 @@ def _compute_logsums( mandatory=False, ) choosers = alt_tdd.join(tours_merged, how="left", rsuffix="_chooser") - logger.info( + logger.debug( f"{trace_label} compute_logsums for {choosers.shape[0]} choosers {alt_tdd.shape[0]} alts" ) @@ -194,7 +194,7 @@ def _compute_logsums( if preprocessor_settings: simulate.set_skim_wrapper_targets(choosers, skims) - logger.info( + logger.debug( f"{trace_label} start preprocessing prior to compute_logsums for {choosers.shape[0]} choosers {alt_tdd.shape[0]} alts" ) expressions.assign_columns( @@ -204,7 +204,7 @@ def _compute_logsums( locals_dict=locals_dict, trace_label=trace_label, ) - logger.info( + logger.debug( f"{trace_label} end preprocessing prior to compute_logsums for {choosers.shape[0]} choosers {alt_tdd.shape[0]} alts" ) @@ -426,7 +426,7 @@ def compute_tour_scheduling_logsums( ) chunk_sizer.log_df(trace_label, "deduped_alt_tdds", deduped_alt_tdds) - logger.info( + logger.debug( f"{trace_label} compute_logsums " f"deduped_alt_tdds reduced number of rows by " f"{round(100 * (len(alt_tdd) - len(deduped_alt_tdds)) / len(alt_tdd), 2)}% " @@ -758,7 +758,7 @@ def _schedule_tours( """ - logger.info( + logger.debug( "%s schedule_tours running %d tour choices" % (tour_trace_label, len(tours)) ) @@ -908,7 +908,7 @@ def schedule_tours( logger.info("schedule_tours %s tours not monotonic_increasing - sorting df") tours = tours.sort_index() - logger.info( + logger.debug( "%s schedule_tours running %d tour choices" % (tour_trace_label, len(tours)) ) diff --git a/activitysim/core/assign.py b/activitysim/core/assign.py index 870904db6..fe39bfc44 100644 --- a/activitysim/core/assign.py +++ b/activitysim/core/assign.py @@ -360,7 +360,7 @@ def rng_lognormal(random_draws, mu, sigma, broadcast=True, scale=False): ) if trace_label: - logger.info(f"{trace_label}.assign_variables {target} = {expression}") + logger.debug(f"{trace_label}.assign_variables {target} = {expression}") if is_temp_singular(target) or is_throwaway(target): try: diff --git a/activitysim/core/chunk.py b/activitysim/core/chunk.py index c7a3d4d7a..a9064ca40 100644 --- a/activitysim/core/chunk.py +++ b/activitysim/core/chunk.py @@ -1224,7 +1224,7 @@ def adaptive_chunked_choosers( # The adaptive chunking logic is expensive and sometimes results # in needless data copying. So we short circuit it entirely # when chunking is disabled. - logger.info(f"Running chunkless with {len(choosers)} choosers") + logger.debug(f"Running chunkless with {len(choosers)} choosers") yield 0, choosers, trace_label, ChunkSizer( state, "chunkless", trace_label, 0, 0, state.settings.chunk_training_mode ) @@ -1250,7 +1250,7 @@ def adaptive_chunked_choosers( assert num_choosers > 0 assert chunk_size >= 0 - logger.info( + logger.debug( f"{trace_label} Running adaptive_chunked_choosers with {num_choosers} choosers" ) @@ -1275,7 +1275,7 @@ def adaptive_chunked_choosers( # grab the next chunk based on current rows_per_chunk chooser_chunk = choosers[offset : offset + rows_per_chunk] - logger.info( + logger.debug( f"Running chunk {i} of {estimated_number_of_chunks or '?'} " f"with {len(chooser_chunk)} of {num_choosers} choosers" ) @@ -1342,7 +1342,7 @@ def adaptive_chunked_choosers_and_alts( # The adaptive chunking logic is expensive and sometimes results # in needless data copying. So we short circuit it entirely # when chunking is disabled. - logger.info(f"Running chunkless with {len(choosers)} choosers") + logger.debug(f"Running chunkless with {len(choosers)} choosers") chunk_sizer = ChunkSizer( state, "chunkless", trace_label, 0, 0, state.settings.chunk_training_mode ) @@ -1372,7 +1372,7 @@ def adaptive_chunked_choosers_and_alts( alternatives.index[last_repeat] ) - logger.info( + logger.debug( f"{trace_label} Running adaptive_chunked_choosers_and_alts " f"with {num_choosers} choosers and {num_alternatives} alternatives" ) @@ -1442,7 +1442,7 @@ def adaptive_chunked_choosers_and_alts( chooser_chunk.index == np.unique(alternative_chunk.index.values) ).all() - logger.info( + logger.debug( f"Running chunk {i} of {estimated_number_of_chunks or '?'} " f"with {len(chooser_chunk)} of {num_choosers} choosers" ) @@ -1481,7 +1481,7 @@ def adaptive_chunked_choosers_by_chunk_id( # The adaptive chunking logic is expensive and sometimes results # in needless data copying. So we short circuit it entirely # when chunking is disabled. - logger.info(f"Running chunkless with {len(choosers)} choosers") + logger.debug(f"Running chunkless with {len(choosers)} choosers") chunk_sizer = ChunkSizer( state, "chunkless", trace_label, 0, 0, state.settings.chunk_training_mode ) @@ -1519,7 +1519,7 @@ def adaptive_chunked_choosers_by_chunk_id( choosers["chunk_id"].between(offset, offset + rows_per_chunk - 1) ] - logger.info( + logger.debug( f"{trace_label} Running chunk {i} of {estimated_number_of_chunks or '?'} " f"with {rows_per_chunk} of {num_choosers} choosers" ) diff --git a/activitysim/core/flow.py b/activitysim/core/flow.py index d3e83e72b..9bfff5816 100644 --- a/activitysim/core/flow.py +++ b/activitysim/core/flow.py @@ -77,7 +77,7 @@ def mark(self, tag, ping=True, logger=None, suffix=""): self._time_log.append((tag, timedelta(seconds=elapsed))) self._time_point = now if logger is not None: - logger.info( + logger.debug( "elapsed time {0} {1} {2}".format( tag, timedelta(seconds=elapsed), @@ -94,7 +94,7 @@ def mark(self, tag, ping=True, logger=None, suffix=""): else: self.aggregate_timing[tag] += elapsed - def summary(self, logger, tag, level=20, suffix=None): + def summary(self, logger, tag, level=10, suffix=None): gross_elaspsed = time.time() - self._time_start if suffix: msg = f"{tag} in {timedelta(seconds=gross_elaspsed)}: ({suffix})\n" diff --git a/activitysim/core/interaction_sample_simulate.py b/activitysim/core/interaction_sample_simulate.py index 9cdea3292..8704674b5 100644 --- a/activitysim/core/interaction_sample_simulate.py +++ b/activitysim/core/interaction_sample_simulate.py @@ -133,7 +133,7 @@ def _interaction_sample_simulate( # assert alternatives.index.name == choosers.index.name # asserting the index names are the same tells us nothing about the underlying data so why? - logger.info( + logger.debug( f"{trace_label} start merging choosers and alternatives to create interaction_df" ) @@ -169,7 +169,7 @@ def _interaction_sample_simulate( ) interaction_df = alternatives.join(choosers, how="left", rsuffix="_chooser") - logger.info( + logger.debug( f"{trace_label} end merging choosers and alternatives to create interaction_df" ) diff --git a/activitysim/core/interaction_simulate.py b/activitysim/core/interaction_simulate.py index d0af58e77..0473a5809 100644 --- a/activitysim/core/interaction_simulate.py +++ b/activitysim/core/interaction_simulate.py @@ -83,7 +83,7 @@ def eval_interaction_utilities( start_time = time.time() trace_label = tracing.extend_trace_label(trace_label, "eval_interaction_utils") - logger.info("Running eval_interaction_utilities on %s rows" % df.shape[0]) + logger.debug("Running eval_interaction_utilities on %s rows" % df.shape[0]) sharrow_enabled = state.settings.sharrow if compute_settings is None: @@ -91,7 +91,7 @@ def eval_interaction_utilities( if compute_settings.sharrow_skip: sharrow_enabled = False - logger.info(f"{trace_label} sharrow_enabled is {sharrow_enabled}") + logger.debug(f"{trace_label} sharrow_enabled is {sharrow_enabled}") trace_eval_results = None @@ -633,11 +633,11 @@ def to_series(x): raise # enter debugger now to see what's up timelogger.mark("sharrow interact test", True, logger, trace_label) - logger.info(f"utilities.dtypes {trace_label}\n{utilities.dtypes}") + logger.debug(f"utilities.dtypes {trace_label}\n{utilities.dtypes}") end_time = time.time() timelogger.summary(logger, "TIMING interact_simulate.eval_utils") - logger.info( + logger.debug( f"interact_simulate.eval_utils runtime: {timedelta(seconds=end_time - start_time)} {trace_label}" ) diff --git a/activitysim/core/simulate.py b/activitysim/core/simulate.py index 6cd4a51f6..fe22ca9ec 100644 --- a/activitysim/core/simulate.py +++ b/activitysim/core/simulate.py @@ -861,7 +861,7 @@ def eval_utilities( chunk_sizer.log_df(trace_label, "utilities", None) end_time = time.time() - logger.info( + logger.debug( f"simulate.eval_utils runtime: {timedelta(seconds=end_time - start_time)} {trace_label}" ) timelogger.summary(logger, "simulate.eval_utils timing") diff --git a/activitysim/core/tracing.py b/activitysim/core/tracing.py index 88bf0fc16..8c9fb61bd 100644 --- a/activitysim/core/tracing.py +++ b/activitysim/core/tracing.py @@ -147,12 +147,12 @@ def print_summary(label, df, describe=False, value_counts=False): if value_counts: n = 10 - logger.info( + logger.debug( "%s top %s value counts:\n%s" % (label, n, df.value_counts().nlargest(n)) ) if describe: - logger.info("%s summary:\n%s" % (label, df.describe())) + logger.debug("%s summary:\n%s" % (label, df.describe())) def write_df_csv( diff --git a/activitysim/core/util.py b/activitysim/core/util.py index 429d3eee0..aeb09ae16 100644 --- a/activitysim/core/util.py +++ b/activitysim/core/util.py @@ -722,9 +722,9 @@ def drop_unused_columns( custom_chooser_lines = inspect.getsource(custom_chooser) unique_variables_in_spec.update(re.findall(pattern, custom_chooser_lines)) - logger.info("Dropping unused variables in chooser table") + logger.debug("Dropping unused variables in chooser table") - logger.info( + logger.debug( "before dropping, the choosers table has {} columns: {}".format( len(choosers.columns), choosers.columns ) @@ -733,7 +733,7 @@ def drop_unused_columns( # keep only variables needed for spec choosers = choosers[[c for c in choosers.columns if c in unique_variables_in_spec]] - logger.info( + logger.debug( "after dropping, the choosers table has {} columns: {}".format( len(choosers.columns), choosers.columns ) diff --git a/docs/dev-guide/logging.md b/docs/dev-guide/logging.md index f2a5a3db7..b00451c46 100644 --- a/docs/dev-guide/logging.md +++ b/docs/dev-guide/logging.md @@ -69,3 +69,67 @@ handlers: if_sub_task: WARNING if_not_sub_task: NOTSET ``` + +## Logging levels +Python's built-in `logging` module that includes five levels of logging, which are (in order +of increasing severity): `DEBUG`, `INFO`, `WARNING`, `ERROR`, and `CRITICAL`. One can set the +minimum level to display messages in both the console window as well as the output logfile +within `logging.yaml` in the model settings. For example, if the block of code below were +inside the `logging.yaml` file, than the console window and output activitysim.log file would +print every logging message at the level of `INFO` and above: + +```yaml +loggers: + activitysim: + level: INFO + handlers: [console, logfile] + propogate: false +``` + +However, if a model run were to crash and the user wanted to print all of the `DEBUG` messages +in order to diagnose what was causing the crash, they would need to change the `level` within +the logging settings: + +```yaml +loggers: + activitysim: + level: DEBUG + handlers: [console, logfile] + propogate: false +``` + +The following guidelines demonstrate how each level is used within ActivitySim: + +### Debug (Level 10) +The `DEBUG` message indicates detailed information that would be of interest to a user while +debugging a model. The information reported at this level can include: +- Runtimes of specific steps of model components, such as the time to run each of sampling, + logsum computation, and simulation in destination choice +- Table attributes at various stages of processing, such as the size or columns +- Evaluations of preprocessor or specification expressions +- General repetitive messages that can be used to narrow down exactly where an error is occuring + +### Info (Level 20) +The `INFO` message gives reports general information about how the status of the model run, +particularly where in the model flow the system is at. The information reported at this level +can include: +- Beginning and ending of a model step +- Intermediate stages of a longer step. For example, in trip destination, the trip number and + segment will be reported at this level. + +### Warning (Level 30) +The `WARNING` message notifies the user of a potential issue that they should be aware of, +but doesn't result in the model system failing. The information reported at this level can include: +- Future changes to dependencies +- ActivitySim needing to force certain travel behavior due to such behavior not working + +### Error (Level 40) +The `ERROR` message gives the user information that is causing an error in a model step. The +information reported at this level can include: +- More detailed issues on what could be causing an error message that wouldn't be shown in the + traceback message + +## Critical (Level 50) +The `CRITICAL` message gives the user information that is causing a critical error in a model step. +The information reported at this level can include: +- Reporting to the user on the teardown of a subprocess \ No newline at end of file From ea8c323d38a030df4dbb180c0b2c3e0391af19d2 Mon Sep 17 00:00:00 2001 From: Joe Flood Date: Fri, 31 Oct 2025 21:46:03 +0000 Subject: [PATCH 22/34] RuntimeError consolidation (#1000) * Added new exceptions based on RuntimeError inventory results * Changed RuntimeErrors in abm\models * Corrected name of SystemConfigurationError * Updated RuntimeErrors in abm\tables * Added SubprocessError * Updated RuntimeErrors in core directory * Renamed `TableSliceError` to `TableSlicingError` * Classified RuntimeErrors in input and settings checkers as ModelConfigurationErrors * Created `SegmentedSpecificationError` for when there's an issue with a spec table that's created for a specific segment * Added TableIndexError * Classified RuntimeError in initialize_tours as InputPopulationError * Created EstimationDataError * Improved clarity of a couple error messages * Blacken code * Updated code to reflect older version of Black (22.12.0) * Updated error messages to look for in activitysim.core tests * Updated error to look for in abm.text * Changed SystemConfigurationError to TableSlicingError in test * Reclasified error when a step is run more than once from TableSlicingError to DuplicateWorkflowNameError * Renamed InputPopulationError to InputTableError for clarity as it can be raised if tours are being input --------- Co-authored-by: Jeffrey Newman --- .../abm/models/disaggregate_accessibility.py | 8 ++- activitysim/abm/models/initialize_tours.py | 3 +- activitysim/abm/models/input_checker.py | 3 +- .../abm/models/joint_tour_participation.py | 5 +- activitysim/abm/models/location_choice.py | 3 +- .../abm/models/parking_location_choice.py | 5 +- activitysim/abm/models/settings_checker.py | 3 +- .../abm/models/trip_departure_choice.py | 3 +- activitysim/abm/models/trip_destination.py | 7 +- activitysim/abm/models/trip_purpose.py | 3 +- activitysim/abm/models/trip_scheduling.py | 15 +++-- activitysim/abm/models/util/cdap.py | 10 +-- .../models/util/probabilistic_scheduling.py | 3 +- .../models/util/vectorize_tour_scheduling.py | 2 +- activitysim/abm/tables/households.py | 3 +- activitysim/abm/tables/persons.py | 7 +- activitysim/abm/tables/shadow_pricing.py | 31 +++++---- .../abm/test/test_pipeline/test_pipeline.py | 10 ++- activitysim/core/chunk.py | 2 +- activitysim/core/config.py | 12 +++- activitysim/core/configuration/filesystem.py | 7 +- activitysim/core/estimation.py | 19 ++++-- activitysim/core/exceptions.py | 36 ++++++++++ activitysim/core/input.py | 13 +++- activitysim/core/interaction_sample.py | 3 +- .../core/interaction_sample_simulate.py | 3 +- activitysim/core/interaction_simulate.py | 3 +- activitysim/core/logit.py | 17 +++-- activitysim/core/mp_tasks.py | 67 ++++++++++--------- activitysim/core/pathbuilder_cache.py | 5 +- activitysim/core/random.py | 7 +- activitysim/core/simulate.py | 21 +++--- activitysim/core/skim_dict_factory.py | 3 +- activitysim/core/skim_dictionary.py | 5 +- activitysim/core/test/_tools.py | 4 +- activitysim/core/test/test_pipeline.py | 11 +-- activitysim/core/test/test_random.py | 3 +- activitysim/core/timetable.py | 5 +- activitysim/core/tracing.py | 6 +- activitysim/core/util.py | 2 +- activitysim/core/workflow/checkpoint.py | 21 ++++-- activitysim/core/workflow/runner.py | 2 +- activitysim/core/workflow/state.py | 18 +++-- activitysim/core/workflow/tracing.py | 5 +- .../estimation/test/test_larch_estimation.py | 4 +- .../scripts/three_zone_example_data.py | 16 +++-- .../scripts/two_zone_example_data.py | 9 ++- .../three_zone_example_data.py | 16 +++-- .../two_zone_example_data.py | 9 ++- .../production_semcog/data_model/enums.py | 1 + .../data_model/input_checks.py | 1 + .../data_model/enums.py | 1 + .../data_model/input_checks.py | 1 + .../data_model/input_checks_pydantic_dev.py | 1 + activitysim/workflows/steps/cmd/__init__.py | 1 + activitysim/workflows/steps/cmd/dsl.py | 1 + .../steps/contrast/data_inventory.py | 2 +- activitysim/workflows/steps/main.py | 1 + activitysim/workflows/steps/progression.py | 2 +- test/cdap/test_cdap.py | 6 +- 60 files changed, 322 insertions(+), 174 deletions(-) diff --git a/activitysim/abm/models/disaggregate_accessibility.py b/activitysim/abm/models/disaggregate_accessibility.py index df229c6ad..aa2703e19 100644 --- a/activitysim/abm/models/disaggregate_accessibility.py +++ b/activitysim/abm/models/disaggregate_accessibility.py @@ -622,9 +622,11 @@ def create_proto_pop(self): # Create ID columns, defaults to "%tablename%_id" hhid, perid, tourid = ( - self.params[x]["index_col"] - if len(self.params[x]["index_col"]) > 0 - else x + "_id" + ( + self.params[x]["index_col"] + if len(self.params[x]["index_col"]) > 0 + else x + "_id" + ) for x in klist ) diff --git a/activitysim/abm/models/initialize_tours.py b/activitysim/abm/models/initialize_tours.py index da69e8d22..79b0263ce 100644 --- a/activitysim/abm/models/initialize_tours.py +++ b/activitysim/abm/models/initialize_tours.py @@ -10,6 +10,7 @@ from activitysim.core import expressions, tracing, workflow from activitysim.core.configuration import PydanticReadable from activitysim.core.configuration.base import PreprocessorSettings +from activitysim.core.exceptions import InputTableError from activitysim.core.input import read_input_table logger = logging.getLogger(__name__) @@ -140,7 +141,7 @@ def initialize_tours( f"{tours_without_persons.sum()} tours out of {len(persons)} without persons\n" f"{pd.Series({'person_id': tours_without_persons.index.values})}" ) - raise RuntimeError(f"{tours_without_persons.sum()} tours with bad person_id") + raise InputTableError(f"{tours_without_persons.sum()} tours with bad person_id") if trace_hh_id: state.tracing.trace_df(tours, label="initialize_tours", warn_if_empty=True) diff --git a/activitysim/abm/models/input_checker.py b/activitysim/abm/models/input_checker.py index 568da851e..68274ba69 100644 --- a/activitysim/abm/models/input_checker.py +++ b/activitysim/abm/models/input_checker.py @@ -13,6 +13,7 @@ from activitysim.core import workflow from activitysim.core.input import read_input_table +from activitysim.core.exceptions import ModelConfigurationError logger = logging.getLogger(__name__) file_logger = logger.getChild("logfile") @@ -468,6 +469,6 @@ def input_checker(state: workflow.State): if input_check_failure: logger.error("Run is killed due to input checker failure!!") - raise RuntimeError( + raise ModelConfigurationError( "Encountered error in input checker, see input_checker.log for details" ) diff --git a/activitysim/abm/models/joint_tour_participation.py b/activitysim/abm/models/joint_tour_participation.py index 47bc2b8ff..e0d4d37fb 100644 --- a/activitysim/abm/models/joint_tour_participation.py +++ b/activitysim/abm/models/joint_tour_participation.py @@ -21,6 +21,7 @@ from activitysim.core.configuration.base import ComputeSettings, PreprocessorSettings from activitysim.core.configuration.logit import LogitComponentSettings from activitysim.core.util import assign_in_place, reindex +from activitysim.core.exceptions import InvalidTravelError logger = logging.getLogger(__name__) @@ -218,11 +219,11 @@ def participants_chooser( non_choice_col = [col for col in probs.columns if col != choice_col][0] probs[non_choice_col] = 1 - probs[choice_col] if iter > MAX_ITERATIONS + 1: - raise RuntimeError( + raise InvalidTravelError( f"{num_tours_remaining} tours could not be satisfied even with forcing participation" ) else: - raise RuntimeError( + raise InvalidTravelError( f"{num_tours_remaining} tours could not be satisfied after {iter} iterations" ) diff --git a/activitysim/abm/models/location_choice.py b/activitysim/abm/models/location_choice.py index e21653cf9..7f032a8ae 100644 --- a/activitysim/abm/models/location_choice.py +++ b/activitysim/abm/models/location_choice.py @@ -18,6 +18,7 @@ from activitysim.core.interaction_sample import interaction_sample from activitysim.core.interaction_sample_simulate import interaction_sample_simulate from activitysim.core.util import reindex +from activitysim.core.exceptions import DuplicateWorkflowTableError """ The school/workplace location model predicts the zones in which various people will @@ -1125,7 +1126,7 @@ def iterate_location_choice( assert len(save_sample_df.index.get_level_values(0).unique()) == len(choices_df) # lest they try to put school and workplace samples into the same table if state.is_table(sample_table_name): - raise RuntimeError( + raise DuplicateWorkflowTableError( "dest choice sample table %s already exists" % sample_table_name ) state.extend_table(sample_table_name, save_sample_df) diff --git a/activitysim/abm/models/parking_location_choice.py b/activitysim/abm/models/parking_location_choice.py index 075bf6174..32f3aabee 100644 --- a/activitysim/abm/models/parking_location_choice.py +++ b/activitysim/abm/models/parking_location_choice.py @@ -23,6 +23,7 @@ from activitysim.core.interaction_sample_simulate import interaction_sample_simulate from activitysim.core.tracing import print_elapsed_time from activitysim.core.util import assign_in_place, drop_unused_columns +from activitysim.core.exceptions import DuplicateWorkflowTableError logger = logging.getLogger(__name__) @@ -500,7 +501,9 @@ def parking_location( # lest they try to put tour samples into the same table if state.is_table(sample_table_name): - raise RuntimeError("sample table %s already exists" % sample_table_name) + raise DuplicateWorkflowTableError( + "sample table %s already exists" % sample_table_name + ) state.extend_table(sample_table_name, save_sample_df) expressions.annotate_tables( diff --git a/activitysim/abm/models/settings_checker.py b/activitysim/abm/models/settings_checker.py index 2c387fdcf..243b2fb74 100644 --- a/activitysim/abm/models/settings_checker.py +++ b/activitysim/abm/models/settings_checker.py @@ -21,6 +21,7 @@ eval_nest_coefficients, read_model_coefficient_template, ) +from activitysim.core.exceptions import ModelConfigurationError # import model settings from activitysim.abm.models.accessibility import AccessibilitySettings @@ -760,7 +761,7 @@ def check_model_settings( for e in all_errors: logger.error(f"\t{str(e)}") file_logger.error(f"\t{str(e)}") - raise RuntimeError( + raise ModelConfigurationError( f"Encountered one or more errors in settings checker. See f{log_file} for details." ) msg = f"Setting Checker Complete. No runtime errors were raised. Check f{log_file} for warnings. These *may* prevent model from successfully running." diff --git a/activitysim/abm/models/trip_departure_choice.py b/activitysim/abm/models/trip_departure_choice.py index 0e4dd05d9..7b34f8e74 100644 --- a/activitysim/abm/models/trip_departure_choice.py +++ b/activitysim/abm/models/trip_departure_choice.py @@ -27,6 +27,7 @@ from activitysim.core.skim_dataset import SkimDataset from activitysim.core.skim_dictionary import SkimDict from activitysim.core.util import reindex +from activitysim.core.exceptions import SegmentedSpecificationError logger = logging.getLogger(__name__) @@ -219,7 +220,7 @@ def choose_tour_leg_pattern( ) if len(spec.columns) > 1: - raise RuntimeError("spec must have only one column") + raise SegmentedSpecificationError("spec must have only one column") # - join choosers and alts # in vanilla interaction_simulate interaction_df is cross join of choosers and alternatives diff --git a/activitysim/abm/models/trip_destination.py b/activitysim/abm/models/trip_destination.py index c07b9ede3..c3fffe013 100644 --- a/activitysim/abm/models/trip_destination.py +++ b/activitysim/abm/models/trip_destination.py @@ -35,6 +35,7 @@ from activitysim.core.skim_dictionary import DataFrameMatrix from activitysim.core.tracing import print_elapsed_time from activitysim.core.util import assign_in_place, reindex +from activitysim.core.exceptions import InvalidTravelError, DuplicateWorkflowTableError logger = logging.getLogger(__name__) @@ -1668,7 +1669,7 @@ def trip_destination( # testing feature t0 make sure at least one trip fails so trip_purpose_and_destination model is run if state.settings.testing_fail_trip_destination and not trips_df.failed.any(): if (trips_df.trip_num < trips_df.trip_count).sum() == 0: - raise RuntimeError( + raise InvalidTravelError( "can't honor 'testing_fail_trip_destination' setting because no intermediate trips" ) @@ -1749,7 +1750,9 @@ def trip_destination( # lest they try to put tour samples into the same table if state.is_table(sample_table_name): - raise RuntimeError("sample table %s already exists" % sample_table_name) + raise DuplicateWorkflowTableError( + "sample table %s already exists" % sample_table_name + ) state.extend_table(sample_table_name, save_sample_df) expressions.annotate_tables( diff --git a/activitysim/abm/models/trip_purpose.py b/activitysim/abm/models/trip_purpose.py index 695882938..73ccaaf8c 100644 --- a/activitysim/abm/models/trip_purpose.py +++ b/activitysim/abm/models/trip_purpose.py @@ -22,6 +22,7 @@ ) from activitysim.core.configuration.base import PreprocessorSettings, PydanticReadable from activitysim.core.util import reindex +from activitysim.core.exceptions import InvalidTravelError logger = logging.getLogger(__name__) @@ -134,7 +135,7 @@ def choose_intermediate_trip_purpose( state.tracing.write_csv( unmatched_choosers, file_name=file_name, transpose=False ) - raise RuntimeError( + raise InvalidTravelError( "Some trips could not be matched to probs based on join columns %s." % probs_join_cols ) diff --git a/activitysim/abm/models/trip_scheduling.py b/activitysim/abm/models/trip_scheduling.py index 0e45d463d..0ce4f2fff 100644 --- a/activitysim/abm/models/trip_scheduling.py +++ b/activitysim/abm/models/trip_scheduling.py @@ -18,6 +18,7 @@ from activitysim.core import chunk, config, estimation, expressions, tracing, workflow from activitysim.core.configuration.base import PreprocessorSettings, PydanticReadable from activitysim.core.util import reindex +from activitysim.core.exceptions import InvalidTravelError, PipelineError logger = logging.getLogger(__name__) @@ -584,9 +585,11 @@ def trip_scheduling( i = 0 while (i < max_iterations) and not trips_chunk.empty: # only chunk log first iteration since memory use declines with each iteration - with chunk.chunk_log( - state, trace_label - ) if i == 0 else chunk.chunk_log_skip(): + with ( + chunk.chunk_log(state, trace_label) + if i == 0 + else chunk.chunk_log_skip() + ): i += 1 is_last_iteration = i == max_iterations @@ -615,7 +618,9 @@ def trip_scheduling( logger.info("%s %s failed", trace_label_i, failed.sum()) if (failed.sum() > 0) & (model_settings.scheduling_mode == "relative"): - raise RuntimeError("failed trips with relative scheduling mode") + raise InvalidTravelError( + "failed trips with relative scheduling mode" + ) if not is_last_iteration: # boolean series of trips whose leg scheduling failed @@ -653,7 +658,7 @@ def trip_scheduling( ) if failfix != FAILFIX_DROP_AND_CLEANUP: - raise RuntimeError( + raise PipelineError( "%s setting '%s' not enabled in settings" % (FAILFIX, FAILFIX_DROP_AND_CLEANUP) ) diff --git a/activitysim/abm/models/util/cdap.py b/activitysim/abm/models/util/cdap.py index 3b4c41466..21f42de82 100644 --- a/activitysim/abm/models/util/cdap.py +++ b/activitysim/abm/models/util/cdap.py @@ -10,6 +10,7 @@ from activitysim.core import chunk, logit, simulate, tracing, workflow from activitysim.core.configuration.base import ComputeSettings +from activitysim.core.exceptions import ModelConfigurationError logger = logging.getLogger(__name__) @@ -48,7 +49,7 @@ def add_pn(col, pnum): elif isinstance(col, (list, tuple)): return [c if c == _hh_id_ else "%s_p%s" % (c, pnum) for c in col] else: - raise RuntimeError("add_pn col not list or str") + raise TypeError("add_pn col not list or str") def assign_cdap_rank( @@ -270,7 +271,7 @@ def preprocess_interaction_coefficients(interaction_coefficients): "Error in cdap_interaction_coefficients at row %s. Expect only M, N, or H!" % coefficients[~coefficients["activity"].isin(["M", "N", "H"])].index.values ) - raise RuntimeError(msg) + raise ModelConfigurationError(msg) coefficients["cardinality"] = ( coefficients["interaction_ptypes"].astype(str).str.len() @@ -470,8 +471,9 @@ def build_cdap_spec( continue if not (0 <= row.cardinality <= MAX_INTERACTION_CARDINALITY): - raise RuntimeError( - "Bad row cardinality %d for %s" % (row.cardinality, row.slug) + raise ModelConfigurationError( + "Bad row cardinality %d for %s. Try checking that all interaction terms include 3 or fewer person types." + % (row.cardinality, row.slug) ) # for all other interaction rules, we need to generate a row in the spec for each diff --git a/activitysim/abm/models/util/probabilistic_scheduling.py b/activitysim/abm/models/util/probabilistic_scheduling.py index cdaf64da5..193a1b703 100644 --- a/activitysim/abm/models/util/probabilistic_scheduling.py +++ b/activitysim/abm/models/util/probabilistic_scheduling.py @@ -8,6 +8,7 @@ import pandas as pd from activitysim.core import chunk, logit, tracing, workflow +from activitysim.core.exceptions import InvalidTravelError logger = logging.getLogger(__name__) @@ -210,7 +211,7 @@ def _postprocess_scheduling_choices( if scheduling_mode == "relative": if failed.any(): - RuntimeError( + InvalidTravelError( f"Failed trips in realtive mode for {failed.sum()} trips: {choosers[failed]}" ) diff --git a/activitysim/abm/models/util/vectorize_tour_scheduling.py b/activitysim/abm/models/util/vectorize_tour_scheduling.py index 85efdaa70..c199ef40d 100644 --- a/activitysim/abm/models/util/vectorize_tour_scheduling.py +++ b/activitysim/abm/models/util/vectorize_tour_scheduling.py @@ -82,7 +82,7 @@ def skims_for_logsums( elif isinstance(destination_for_tour_purpose, dict): dest_col_name = destination_for_tour_purpose.get(tour_purpose) else: - raise RuntimeError( + raise TypeError( f"expected string or dict DESTINATION_FOR_TOUR_PURPOSE model_setting for {tour_purpose}" ) diff --git a/activitysim/abm/tables/households.py b/activitysim/abm/tables/households.py index 9f121e708..c0c33dcbc 100644 --- a/activitysim/abm/tables/households.py +++ b/activitysim/abm/tables/households.py @@ -11,6 +11,7 @@ from activitysim.abm.tables.util import simple_table_join from activitysim.core import tracing, workflow from activitysim.core.input import read_input_table +from activitysim.core.exceptions import MissingInputTableDefinition logger = logging.getLogger(__name__) @@ -45,7 +46,7 @@ def households(state: workflow.State) -> pd.DataFrame: ) if df.shape[0] == 0: - raise RuntimeError("No override households found in store") + raise MissingInputTableDefinition("No override households found in store") # if we are tracing hh exclusively elif _trace_hh_id and households_sample_size == 1: diff --git a/activitysim/abm/tables/persons.py b/activitysim/abm/tables/persons.py index d5ab67fb5..2c7716ddc 100644 --- a/activitysim/abm/tables/persons.py +++ b/activitysim/abm/tables/persons.py @@ -9,6 +9,7 @@ from activitysim.abm.tables.util import simple_table_join from activitysim.core import workflow +from activitysim.core.exceptions import InputTableError from activitysim.core.input import read_input_table logger = logging.getLogger(__name__) @@ -55,7 +56,7 @@ def persons(state: workflow.State) -> pd.DataFrame: f"{persons_without_households.sum()} persons out of {len(df)} without households\n" f"{pd.Series({'person_id': persons_without_households.index.values})}" ) - raise RuntimeError( + raise InputTableError( f"{persons_without_households.sum()} persons with bad household_id" ) @@ -67,7 +68,7 @@ def persons(state: workflow.State) -> pd.DataFrame: f"{households_without_persons.sum()} households out of {len(households.index)} without persons\n" f"{pd.Series({'household_id': households_without_persons.index.values})}" ) - raise RuntimeError( + raise InputTableError( f"{households_without_persons.sum()} households with no persons" ) @@ -107,5 +108,5 @@ def persons_merged( left_on="person_id", ) if n_persons != len(persons): - raise RuntimeError("number of persons changed") + raise InputTableError("number of persons changed") return persons diff --git a/activitysim/abm/tables/shadow_pricing.py b/activitysim/abm/tables/shadow_pricing.py index 586924efc..fa2832181 100644 --- a/activitysim/abm/tables/shadow_pricing.py +++ b/activitysim/abm/tables/shadow_pricing.py @@ -18,6 +18,7 @@ from activitysim.core.configuration import PydanticReadable from activitysim.core.configuration.logit import TourLocationComponentSettings from activitysim.core.input import read_input_table +from activitysim.core.exceptions import SystemConfigurationError, MissingNameError logger = logging.getLogger(__name__) @@ -181,7 +182,7 @@ def __init__( logger.warning( "deprecated combination of multiprocessing and not fail_fast" ) - raise RuntimeError( + raise SystemConfigurationError( "Shadow pricing requires fail_fast setting in multiprocessing mode" ) @@ -904,7 +905,10 @@ def update_shadow_prices(self, state): self.sampled_persons = sampled_persons else: - raise RuntimeError("unknown SHADOW_PRICE_METHOD %s" % shadow_price_method) + raise SystemConfigurationError( + "unknown SHADOW_PRICE_METHOD %s, method must be one of 'ctramp', 'daysim', or 'simulation'" + % shadow_price_method + ) def dest_size_terms(self, segment): assert segment in self.segment_ids @@ -922,8 +926,9 @@ def dest_size_terms(self, segment): elif shadow_price_method == "simulation": utility_adjustment = self.shadow_prices[segment] else: - raise RuntimeError( - "unknown SHADOW_PRICE_METHOD %s" % shadow_price_method + raise SystemConfigurationError( + "unknown SHADOW_PRICE_METHOD %s, method must be one of 'ctramp', 'daysim', or 'simulation'" + % shadow_price_method ) size_terms = pd.DataFrame( @@ -1036,9 +1041,7 @@ def buffers_for_shadow_pricing(shadow_pricing_info): if np.issubdtype(dtype, np.int64): typecode = ctypes.c_int64 else: - raise RuntimeError( - "buffer_for_shadow_pricing unrecognized dtype %s" % dtype - ) + raise TypeError("buffer_for_shadow_pricing unrecognized dtype %s" % dtype) shared_data_buffer = multiprocessing.Array(typecode, buffer_size) @@ -1085,9 +1088,7 @@ def buffers_for_shadow_pricing_choice(state, shadow_pricing_choice_info): if np.issubdtype(dtype, np.int64): typecode = ctypes.c_int64 else: - raise RuntimeError( - "buffer_for_shadow_pricing unrecognized dtype %s" % dtype - ) + raise TypeError("buffer_for_shadow_pricing unrecognized dtype %s" % dtype) shared_data_buffer = multiprocessing.Array(typecode, buffer_size) @@ -1145,12 +1146,12 @@ def shadow_price_data_from_buffers_choice( block_shapes = shadow_pricing_info["block_shapes"] if model_selector not in block_shapes: - raise RuntimeError( + raise MissingNameError( "Model selector %s not in shadow_pricing_info" % model_selector ) if block_name(model_selector + "_choice") not in data_buffers: - raise RuntimeError( + raise MissingNameError( "Block %s not in data_buffers" % block_name(model_selector + "_choice") ) @@ -1195,12 +1196,14 @@ def shadow_price_data_from_buffers(data_buffers, shadow_pricing_info, model_sele block_shapes = shadow_pricing_info["block_shapes"] if model_selector not in block_shapes: - raise RuntimeError( + raise MissingNameError( "Model selector %s not in shadow_pricing_info" % model_selector ) if block_name(model_selector) not in data_buffers: - raise RuntimeError("Block %s not in data_buffers" % block_name(model_selector)) + raise MissingNameError( + "Block %s not in data_buffers" % block_name(model_selector) + ) shape = block_shapes[model_selector] data = data_buffers[block_name(model_selector)] diff --git a/activitysim/abm/test/test_pipeline/test_pipeline.py b/activitysim/abm/test/test_pipeline/test_pipeline.py index 70bc26f4b..b245e97f5 100644 --- a/activitysim/abm/test/test_pipeline/test_pipeline.py +++ b/activitysim/abm/test/test_pipeline/test_pipeline.py @@ -13,6 +13,10 @@ import pytest from activitysim.core import random, tracing, workflow +from activitysim.core.exceptions import ( + CheckpointNameNotFoundError, + DuplicateWorkflowNameError, +) # set the max households for all tests (this is to limit memory use on travis) HOUSEHOLDS_SAMPLE_SIZE = 50 @@ -190,12 +194,12 @@ def test_mini_pipeline_run(): regress_mini_location_choice_logsums(state) # try to get a non-existant table - with pytest.raises(RuntimeError) as excinfo: + with pytest.raises(CheckpointNameNotFoundError) as excinfo: state.checkpoint.load_dataframe("bogus") assert "never checkpointed" in str(excinfo.value) # try to get an existing table from a non-existant checkpoint - with pytest.raises(RuntimeError) as excinfo: + with pytest.raises(CheckpointNameNotFoundError) as excinfo: state.checkpoint.load_dataframe("households", checkpoint_name="bogus") assert "not in checkpoints" in str(excinfo.value) @@ -235,7 +239,7 @@ def test_mini_pipeline_run2(): regress_mini_auto(state) # try to run a model already in pipeline - with pytest.raises(RuntimeError) as excinfo: + with pytest.raises(DuplicateWorkflowNameError) as excinfo: state.run.by_name("auto_ownership_simulate") assert "run model 'auto_ownership_simulate' more than once" in str(excinfo.value) diff --git a/activitysim/core/chunk.py b/activitysim/core/chunk.py index a9064ca40..f0074683d 100644 --- a/activitysim/core/chunk.py +++ b/activitysim/core/chunk.py @@ -1078,7 +1078,7 @@ def ledger(self): if mem_monitor is not None: if not mem_monitor.is_alive(): logger.error(f"mem_monitor for {self.trace_label} died!") - raise RuntimeError("bug") + raise RuntimeError("mem_monitor for {self.trace_label} died!") if stop_snooping is not None: stop_snooping.set() diff --git a/activitysim/core/config.py b/activitysim/core/config.py index 730c38315..e39576916 100644 --- a/activitysim/core/config.py +++ b/activitysim/core/config.py @@ -7,6 +7,7 @@ from activitysim.core import workflow from activitysim.core.configuration.base import PydanticBase from activitysim.core.configuration.logit import LogitComponentSettings +from activitysim.core.exceptions import ModelConfigurationError # ActivitySim # See full license in LICENSE.txt. @@ -100,7 +101,7 @@ def get_model_constants(model_settings): def get_logit_model_settings( - model_settings: LogitComponentSettings | dict[str, Any] | None + model_settings: LogitComponentSettings | dict[str, Any] | None, ): """ Read nest spec (for nested logit) from model settings file @@ -123,13 +124,18 @@ def get_logit_model_settings( if logit_type not in ["NL", "MNL"]: logger.error("Unrecognized logit type '%s'" % logit_type) - raise RuntimeError("Unrecognized logit type '%s'" % logit_type) + raise ModelConfigurationError( + "Unrecognized logit type '%s'. Logit type must be 'NL' for nested logit or 'MNL' for multinomial logit" + % logit_type + ) if logit_type == "NL": nests = model_settings.get("NESTS", None) if nests is None: logger.error("No NEST found in model spec for NL model type") - raise RuntimeError("No NEST found in model spec for NL model type") + raise ModelConfigurationError( + "No NEST found in model spec for NL model type" + ) return nests diff --git a/activitysim/core/configuration/filesystem.py b/activitysim/core/configuration/filesystem.py index ba2049e31..75bd76136 100644 --- a/activitysim/core/configuration/filesystem.py +++ b/activitysim/core/configuration/filesystem.py @@ -16,7 +16,10 @@ from activitysim.core.configuration.base import PydanticBase from activitysim.core.configuration.logit import LogitComponentSettings -from activitysim.core.exceptions import SettingsFileNotFoundError +from activitysim.core.exceptions import ( + SettingsFileNotFoundError, + SystemConfigurationError, +) from activitysim.core.util import parse_suffix_args, suffix_tables_in_settings logger = logging.getLogger(__name__) @@ -768,7 +771,7 @@ def backfill_settings(settings, backfill): logger.error( f"Unexpected additional settings: {additional_settings}" ) - raise RuntimeError( + raise SystemConfigurationError( "'include_settings' must appear alone in settings file." ) diff --git a/activitysim/core/estimation.py b/activitysim/core/estimation.py index 5b29de696..bbbe376ee 100644 --- a/activitysim/core/estimation.py +++ b/activitysim/core/estimation.py @@ -16,6 +16,11 @@ from activitysim.core.configuration.base import PydanticBase from activitysim.core.util import reindex from activitysim.core.yaml_tools import safe_dump +from activitysim.core.exceptions import ( + DuplicateWorkflowTableError, + DuplicateLoadableObjectError, + EstimationDataError, +) logger = logging.getLogger("estimation") @@ -433,7 +438,7 @@ def write_table( def cache_table(df, table_name, append): if table_name in self.tables and not append: - raise RuntimeError( + raise DuplicateWorkflowTableError( "cache_table %s append=False and table exists" % (table_name,) ) if table_name in self.tables: @@ -450,7 +455,7 @@ def write_table(df, table_name, index, append, bundle_directory, filetype): # check if file exists file_exists = os.path.isfile(file_path) if file_exists and not append: - raise RuntimeError( + raise DuplicateLoadableObjectError( "write_table %s append=False and file exists: %s" % (table_name, file_path) ) @@ -470,7 +475,7 @@ def write_table(df, table_name, index, append, bundle_directory, filetype): elif filetype == "pkl": self.write_pickle(df, file_path, index, append) else: - raise RuntimeError( + raise IOError( f"Unsupported filetype: {filetype}, allowed options are csv, parquet, pkl" ) @@ -536,7 +541,7 @@ def write_omnibus_table(self): elif "household_id" in df.columns: df.set_index("household_id", inplace=True) else: - RuntimeError( + EstimationDataError( f"No index column found in omnibus table {omnibus_table}: {df}" ) @@ -564,7 +569,7 @@ def write_omnibus_table(self): self.write_pickle(df, file_path, index=True, append=False) else: - raise RuntimeError(f"Unsupported filetype: {filetype}") + raise IOError(f"Unsupported filetype: {filetype}") self.debug("wrote_omnibus_choosers: %s" % file_path) @@ -945,7 +950,7 @@ def get_survey_values(self, model_values, table_name, column_names): % (missing_columns, table_name) ) print("survey table columns: %s" % (survey_df.columns,)) - raise RuntimeError( + raise EstimationDataError( "missing columns (%s) in survey table %s" % (missing_columns, table_name) ) @@ -998,7 +1003,7 @@ def get_survey_values(self, model_values, table_name, column_names): logger.error( "couldn't get_survey_values for %s in %s\n" % (c, table_name) ) - raise RuntimeError( + raise EstimationDataError( "couldn't get_survey_values for %s in %s\n" % (c, table_name) ) diff --git a/activitysim/core/exceptions.py b/activitysim/core/exceptions.py index 29d8f03a1..878ed6cfc 100644 --- a/activitysim/core/exceptions.py +++ b/activitysim/core/exceptions.py @@ -56,3 +56,39 @@ class ReadOnlyError(IOError): class MissingInputTableDefinition(RuntimeError): """An input table definition was expected but not found.""" + + +class SystemConfigurationError(RuntimeError): + """An error in the system configuration (possibly in settings.yaml) was found.""" + + +class ModelConfigurationError(RuntimeError): + """An error in the model configuration was found.""" + + +class InvalidTravelError(RuntimeError): + """Travel behavior could not be completed in a valid way.""" + + +class TableSlicingError(RuntimeError): + """An error occurred trying to slice a table.""" + + +class InputTableError(RuntimeError): + """An issue with the input population was found.""" + + +class SubprocessError(RuntimeError): + """An error occurred in a subprocess.""" + + +class SegmentedSpecificationError(RuntimeError): + """An error was caused by creating an invalid spec table for a segmented model component.""" + + +class TableIndexError(RuntimeError): + """An error related to the index of a table in the pipeline.""" + + +class EstimationDataError(RuntimeError): + """An error related to estimation data.""" diff --git a/activitysim/core/input.py b/activitysim/core/input.py index 734679996..ecac76b07 100644 --- a/activitysim/core/input.py +++ b/activitysim/core/input.py @@ -10,7 +10,10 @@ from activitysim.core import util, workflow from activitysim.core.configuration import InputTable -from activitysim.core.exceptions import MissingInputTableDefinition +from activitysim.core.exceptions import ( + MissingInputTableDefinition, + ModelConfigurationError, +) logger = logging.getLogger(__name__) @@ -204,7 +207,9 @@ def read_from_table_info(table_info: InputTable, state): f"index_col '{index_col}' specified in configs but not in {tablename} table!" ) logger.error(f"{tablename} columns are: {list(df.columns)}") - raise RuntimeError(f"index_col '{index_col}' not in {tablename} table!") + raise ModelConfigurationError( + f"index_col '{index_col}' not in {tablename} table!" + ) if keep_columns: logger.debug("keeping columns: %s" % keep_columns) @@ -214,7 +219,9 @@ def read_from_table_info(table_info: InputTable, state): f"{list(set(keep_columns).difference(set(df.columns)))}" ) logger.error(f"{tablename} table has columns: {list(df.columns)}") - raise RuntimeError(f"Required columns missing from {tablename} table") + raise ModelConfigurationError( + f"Required columns missing from {tablename} table" + ) df = df[keep_columns] diff --git a/activitysim/core/interaction_sample.py b/activitysim/core/interaction_sample.py index 8db19a416..52116638b 100644 --- a/activitysim/core/interaction_sample.py +++ b/activitysim/core/interaction_sample.py @@ -20,6 +20,7 @@ from activitysim.core.configuration.base import ComputeSettings from activitysim.core.skim_dataset import DatasetWrapper from activitysim.core.skim_dictionary import SkimWrapper +from activitysim.core.exceptions import SegmentedSpecificationError logger = logging.getLogger(__name__) @@ -219,7 +220,7 @@ def _interaction_sample( ) if len(spec.columns) > 1: - raise RuntimeError("spec must have only one column") + raise SegmentedSpecificationError("spec must have only one column") # if using skims, copy index into the dataframe, so it will be # available as the "destination" for set_skim_wrapper_targets diff --git a/activitysim/core/interaction_sample_simulate.py b/activitysim/core/interaction_sample_simulate.py index 8704674b5..df1c53fa0 100644 --- a/activitysim/core/interaction_sample_simulate.py +++ b/activitysim/core/interaction_sample_simulate.py @@ -10,6 +10,7 @@ from activitysim.core import chunk, interaction_simulate, logit, tracing, util, workflow from activitysim.core.configuration.base import ComputeSettings from activitysim.core.simulate import set_skim_wrapper_targets +from activitysim.core.exceptions import SegmentedSpecificationError logger = logging.getLogger(__name__) @@ -115,7 +116,7 @@ def _interaction_sample_simulate( ) if len(spec.columns) > 1: - raise RuntimeError("spec must have only one column") + raise SegmentedSpecificationError("spec must have only one column") # if using skims, copy index into the dataframe, so it will be # available as the "destination" for the skims dereference below diff --git a/activitysim/core/interaction_simulate.py b/activitysim/core/interaction_simulate.py index 0473a5809..0d8424139 100644 --- a/activitysim/core/interaction_simulate.py +++ b/activitysim/core/interaction_simulate.py @@ -16,6 +16,7 @@ from activitysim.core import chunk, logit, simulate, timing, tracing, util, workflow from activitysim.core.configuration.base import ComputeSettings from activitysim.core.fast_eval import fast_eval +from activitysim.core.exceptions import SegmentedSpecificationError logger = logging.getLogger(__name__) @@ -722,7 +723,7 @@ def _interaction_simulate( ) if len(spec.columns) > 1: - raise RuntimeError("spec must have only one column") + raise SegmentedSpecificationError("spec must have only one column") sample_size = sample_size or len(alternatives) diff --git a/activitysim/core/logit.py b/activitysim/core/logit.py index 034d970ca..105e18fec 100644 --- a/activitysim/core/logit.py +++ b/activitysim/core/logit.py @@ -11,6 +11,11 @@ from activitysim.core import tracing, workflow from activitysim.core.choosing import choice_maker from activitysim.core.configuration.logit import LogitNestSpec +from activitysim.core.exceptions import ( + InvalidTravelError, + ModelConfigurationError, + TableIndexError, +) logger = logging.getLogger(__name__) @@ -83,7 +88,7 @@ def report_bad_choices( logger.warning(row_msg) if raise_error: - raise RuntimeError(msg_with_count) + raise InvalidTravelError(msg_with_count) def utils_to_logsums(utils, exponentiated=False, allow_zero_probs=False): @@ -360,11 +365,11 @@ def interaction_dataset( """ if not choosers.index.is_unique: - raise RuntimeError( + raise TableIndexError( "ERROR: choosers index is not unique, " "sample will not work correctly" ) if not alternatives.index.is_unique: - raise RuntimeError( + raise TableIndexError( "ERROR: alternatives index is not unique, " "sample will not work correctly" ) @@ -469,7 +474,7 @@ def validate_nest_spec(nest_spec: dict | LogitNestSpec, trace_label: str): # nest.print() if duplicates: - raise RuntimeError( + raise ModelConfigurationError( f"validate_nest_spec:duplicate nest key/s '{duplicates}' in nest spec - {trace_label}" ) @@ -568,7 +573,9 @@ def each_nest(nest_spec: dict | LogitNestSpec, type=None, post_order=False): Nest object with info about the current node (nest or leaf) """ if type is not None and type not in Nest.nest_types(): - raise RuntimeError("Unknown nest type '%s' in call to each_nest" % type) + raise ModelConfigurationError( + "Unknown nest type '%s' in call to each_nest" % type + ) if isinstance(nest_spec, dict): nest_spec = LogitNestSpec.model_validate(nest_spec) diff --git a/activitysim/core/mp_tasks.py b/activitysim/core/mp_tasks.py index 7d31134bc..42b1ab444 100644 --- a/activitysim/core/mp_tasks.py +++ b/activitysim/core/mp_tasks.py @@ -26,6 +26,7 @@ NON_TABLE_COLUMNS, ParquetStore, ) +from activitysim.core.exceptions import * logger = logging.getLogger(__name__) @@ -440,7 +441,9 @@ def build_slice_rules(state: workflow.State, slice_info, pipeline_tables): tables[table_name] = pipeline_tables[table_name] if primary_slicer not in tables: - raise RuntimeError("primary slice table '%s' not in pipeline" % primary_slicer) + raise SystemConfigurationError( + "primary slice table '%s' not in pipeline" % primary_slicer + ) # allow wildcard 'True' to avoid slicing (or coalescing) any tables no explicitly listed in slice_info.tables # populationsim uses slice.except wildcards to avoid listing control tables (etc) that should not be sliced, @@ -532,7 +535,7 @@ def apportion_pipeline(state: workflow.State, sub_proc_names, step_info): """ slice_info = step_info.get("slice", None) if slice_info is None: - raise RuntimeError("missing slice_info.slice") + raise SystemConfigurationError("missing slice_info.slice") multiprocess_step_name = step_info.get("name", None) pipeline_file_name = state.get_injectable("pipeline_file_name") @@ -542,14 +545,16 @@ def apportion_pipeline(state: workflow.State, sub_proc_names, step_info): "last_checkpoint_in_previous_multiprocess_step", None ) if last_checkpoint_in_previous_multiprocess_step is None: - raise RuntimeError("missing last_checkpoint_in_previous_multiprocess_step") + raise CheckpointNameNotFoundError( + "missing last_checkpoint_in_previous_multiprocess_step" + ) state.checkpoint.restore(resume_after=last_checkpoint_in_previous_multiprocess_step) # ensure all tables are in the pipeline checkpointed_tables = state.checkpoint.list_tables() for table_name in slice_info["tables"]: if table_name not in checkpointed_tables: - raise RuntimeError(f"slicer table {table_name} not found in pipeline") + raise StateAccessError(f"slicer table {table_name} not found in pipeline") checkpoints_df = state.checkpoint.get_inventory() @@ -601,7 +606,7 @@ def apportion_pipeline(state: workflow.State, sub_proc_names, step_info): if rule["slice_by"] is not None and num_sub_procs > len(df): # almost certainly a configuration error - raise RuntimeError( + raise SystemConfigurationError( f"apportion_pipeline: multiprocess step {multiprocess_step_name} " f"slice table {table_name} has fewer rows {df.shape} " f"than num_processes ({num_sub_procs})." @@ -634,7 +639,7 @@ def apportion_pipeline(state: workflow.State, sub_proc_names, step_info): # don't slice mirrored tables sliced_tables[table_name] = df else: - raise RuntimeError( + raise TableSlicingError( "Unrecognized slice rule '%s' for table %s" % (rule["slice_by"], table_name) ) @@ -678,7 +683,7 @@ def apportion_pipeline(state: workflow.State, sub_proc_names, step_info): if rule["slice_by"] is not None and num_sub_procs > len(df): # almost certainly a configuration error - raise RuntimeError( + raise SystemConfigurationError( f"apportion_pipeline: multiprocess step {multiprocess_step_name} " f"slice table {table_name} has fewer rows {df.shape} " f"than num_processes ({num_sub_procs})." @@ -711,7 +716,7 @@ def apportion_pipeline(state: workflow.State, sub_proc_names, step_info): # don't slice mirrored tables sliced_tables[table_name] = df else: - raise RuntimeError( + raise TableSlicingError( "Unrecognized slice rule '%s' for table %s" % (rule["slice_by"], table_name) ) @@ -970,7 +975,7 @@ def adjust_chunk_size_for_shared_memory(chunk_size, data_buffers, num_processes) ) if adjusted_chunk_size <= 0: - raise RuntimeError( + raise SystemConfigurationError( f"adjust_chunk_size_for_shared_memory: chunk_size too small for shared memory. " f"adjusted_chunk_size: {adjusted_chunk_size}" ) @@ -1366,7 +1371,7 @@ def check_proc_status(state: workflow.State): state, f"error terminating process {op.name}: {e}", ) - raise RuntimeError("Process %s failed" % (p.name,)) + raise SubprocessError("Process %s failed" % (p.name,)) step_name = step_info["name"] @@ -1531,7 +1536,7 @@ def run_sub_task(state: workflow.State, p): if p.exitcode: error(state, f"Process {p.name} returned exitcode {p.exitcode}") - raise RuntimeError("Process %s returned exitcode %s" % (p.name, p.exitcode)) + raise SubprocessError("Process %s returned exitcode %s" % (p.name, p.exitcode)) def drop_breadcrumb(state: workflow.State, step_name, crumb, value=True): @@ -1596,7 +1601,7 @@ def run_multiprocess(state: workflow.State, injectables): run_list = get_run_list(state) if not run_list["multiprocess"]: - raise RuntimeError( + raise SubprocessError( "run_multiprocess called but multiprocess flag is %s" % run_list["multiprocess"] ) @@ -1719,7 +1724,7 @@ def find_breadcrumb(crumb, default=None): ) if len(completed) != num_processes: - raise RuntimeError( + raise SubprocessError( "%s processes failed in step %s" % (num_processes - len(completed), step_name) ) @@ -1787,7 +1792,9 @@ def get_breadcrumbs(state: workflow.State, run_list): # - can't resume multiprocess without breadcrumbs file if not breadcrumbs: error(state, f"empty breadcrumbs for resume_after '{resume_after}'") - raise RuntimeError("empty breadcrumbs for resume_after '%s'" % resume_after) + raise CheckpointNameNotFoundError( + "empty breadcrumbs for resume_after '%s'" % resume_after + ) # if resume_after is specified by name if resume_after != LAST_CHECKPOINT: @@ -1808,7 +1815,7 @@ def get_breadcrumbs(state: workflow.State, run_list): if resume_step_name not in previous_steps: error(state, f"resume_after model '{resume_after}' not in breadcrumbs") - raise RuntimeError( + raise CheckpointNameNotFoundError( "resume_after model '%s' not in breadcrumbs" % resume_after ) @@ -1826,7 +1833,7 @@ def get_breadcrumbs(state: workflow.State, run_list): multiprocess_step_names = [step["name"] for step in run_list["multiprocess_steps"]] if list(breadcrumbs.keys()) != multiprocess_step_names[: len(breadcrumbs)]: - raise RuntimeError( + raise CheckpointNameNotFoundError( "last run steps don't match run list: %s" % list(breadcrumbs.keys()) ) @@ -1911,15 +1918,15 @@ def get_run_list(state: workflow.State): } if not models or not isinstance(models, list): - raise RuntimeError("No models list in settings file") + raise SystemConfigurationError("No models list in settings file") if resume_after == models[-1]: - raise RuntimeError( + raise SystemConfigurationError( "resume_after '%s' is last model in models list" % resume_after ) if multiprocess: if not multiprocess_steps: - raise RuntimeError( + raise SystemConfigurationError( "multiprocess setting is %s but no multiprocess_steps setting" % multiprocess ) @@ -1935,15 +1942,15 @@ def get_run_list(state: workflow.State): # - validate step name name = step.get("name", None) if not name: - raise RuntimeError( + raise SystemConfigurationError( "missing name for step %s" " in multiprocess_steps" % istep ) if name in step_names: - raise RuntimeError( + raise SystemConfigurationError( "duplicate step name %s" " in multiprocess_steps" % name ) if name in models: - raise RuntimeError( + raise SystemConfigurationError( f"multiprocess_steps step name '{name}' cannot also be a model name" ) @@ -1953,7 +1960,7 @@ def get_run_list(state: workflow.State): num_processes = step.get("num_processes", 0) or 0 if not isinstance(num_processes, int) or num_processes < 0: - raise RuntimeError( + raise SystemConfigurationError( "bad value (%s) for num_processes for step %s" " in multiprocess_steps" % (num_processes, name) ) @@ -1975,7 +1982,7 @@ def get_run_list(state: workflow.State): if num_processes == 0: num_processes = 1 if num_processes > 1: - raise RuntimeError( + raise SystemConfigurationError( "num_processes > 1 but no slice info for step %s" " in multiprocess_steps" % name ) @@ -2004,19 +2011,19 @@ def get_run_list(state: workflow.State): slice = step.get("slice", None) if slice: if "tables" not in slice: - raise RuntimeError( + raise SystemConfigurationError( "missing tables list for step %s" " in multiprocess_steps" % istep ) start = step.get(start_tag, None) if not name: - raise RuntimeError( + raise SystemConfigurationError( "missing %s tag for step '%s' (%s)" " in multiprocess_steps" % (start_tag, name, istep) ) if start not in models: - raise RuntimeError( + raise SystemConfigurationError( "%s tag '%s' for step '%s' (%s) not in models list" % (start_tag, start, name, istep) ) @@ -2024,14 +2031,14 @@ def get_run_list(state: workflow.State): starts[istep] = models.index(start) if istep == 0 and starts[istep] != 0: - raise RuntimeError( + raise SystemConfigurationError( "%s tag '%s' for first step '%s' (%s)" " is not first model in models list" % (start_tag, start, name, istep) ) if istep > 0 and starts[istep] <= starts[istep - 1]: - raise RuntimeError( + raise SystemConfigurationError( "%s tag '%s' for step '%s' (%s)" " falls before that of prior step in models list" % (start_tag, start, name, istep) @@ -2048,7 +2055,7 @@ def get_run_list(state: workflow.State): step_models = models[starts[istep] : starts[istep + 1]] if step_models[-1][0] == LAST_CHECKPOINT: - raise RuntimeError( + raise CheckpointNameNotFoundError( "Final model '%s' in step %s models list not checkpointed" % (step_models[-1], name) ) diff --git a/activitysim/core/pathbuilder_cache.py b/activitysim/core/pathbuilder_cache.py index a59ca17ec..6ed3a7061 100644 --- a/activitysim/core/pathbuilder_cache.py +++ b/activitysim/core/pathbuilder_cache.py @@ -14,6 +14,7 @@ import psutil from activitysim.core import config, los, util +from activitysim.core.exceptions import StateAccessError, TableTypeError logger = logging.getLogger(__name__) @@ -177,7 +178,7 @@ def open(self): f"TVPBCache.open {self.cache_tag} read fully_populated data array from mmap file" ) else: - raise RuntimeError( + raise StateAccessError( f"Pathbuilder cache not found. Did you forget to run initialize tvpb?" f"Expected cache file: {self.cache_path}" ) @@ -253,7 +254,7 @@ def allocate_data_buffer(self, shared=False): elif dtype_name == "float32": typecode = "f" else: - raise RuntimeError( + raise TableTypeError( "allocate_data_buffer unrecognized dtype %s" % dtype_name ) diff --git a/activitysim/core/random.py b/activitysim/core/random.py index 9960e98e2..37b197640 100644 --- a/activitysim/core/random.py +++ b/activitysim/core/random.py @@ -10,6 +10,7 @@ import pandas as pd from activitysim.core.util import reindex +from activitysim.core.exceptions import DuplicateLoadableObjectError, TableIndexError from .tracing import print_elapsed_time @@ -395,7 +396,7 @@ def get_channel_for_df(self, df): channel_name = self.index_to_channel.get(df.index.name, None) if channel_name is None: - raise RuntimeError("No channel with index name '%s'" % df.index.name) + raise TableIndexError("No channel with index name '%s'" % df.index.name) return self.channels[channel_name] # step handling @@ -528,7 +529,9 @@ def set_base_seed(self, seed=None): """ if self.step_name is not None or self.channels: - raise RuntimeError("Can only call set_base_seed before the first step.") + raise DuplicateLoadableObjectError( + "Can only call set_base_seed before the first step." + ) assert len(list(self.channels.keys())) == 0 diff --git a/activitysim/core/simulate.py b/activitysim/core/simulate.py index fe22ca9ec..e05781811 100644 --- a/activitysim/core/simulate.py +++ b/activitysim/core/simulate.py @@ -40,6 +40,7 @@ SPEC_EXPRESSION_NAME, SPEC_LABEL_NAME, ) +from activitysim.core.exceptions import ModelConfigurationError logger = logging.getLogger(__name__) @@ -187,13 +188,13 @@ def read_model_coefficients( f"duplicate coefficients in {file_path}\n" f"{coefficients[coefficients.index.duplicated(keep=False)]}" ) - raise RuntimeError(f"duplicate coefficients in {file_path}") + raise ModelConfigurationError(f"duplicate coefficients in {file_path}") if coefficients.value.isnull().any(): logger.warning( f"null coefficients in {file_path}\n{coefficients[coefficients.value.isnull()]}" ) - raise RuntimeError(f"null coefficients in {file_path}") + raise ModelConfigurationError(f"null coefficients in {file_path}") return coefficients @@ -250,7 +251,7 @@ def spec_for_segment( try: assert (spec.astype(float) == spec).all(axis=None) except (ValueError, AssertionError): - raise RuntimeError( + raise ModelConfigurationError( f"No coefficient file specified for {spec_file_name} " f"but not all spec column values are numeric" ) from None @@ -395,7 +396,7 @@ def get_segment_coefficients( FutureWarning, ) else: - raise RuntimeError("No COEFFICIENTS setting in model_settings") + raise ModelConfigurationError("No COEFFICIENTS setting in model_settings") if legacy: constants = config.get_model_constants(model_settings) @@ -1638,11 +1639,13 @@ def list_of_skims(skims): return ( skims if isinstance(skims, list) - else skims.values() - if isinstance(skims, dict) - else [skims] - if skims is not None - else [] + else ( + skims.values() + if isinstance(skims, dict) + else [skims] + if skims is not None + else [] + ) ) return [ diff --git a/activitysim/core/skim_dict_factory.py b/activitysim/core/skim_dict_factory.py index e0bd23ef3..2ca90c4c6 100644 --- a/activitysim/core/skim_dict_factory.py +++ b/activitysim/core/skim_dict_factory.py @@ -14,6 +14,7 @@ import openmatrix as omx from activitysim.core import skim_dictionary, util +from activitysim.core.exceptions import TableTypeError logger = logging.getLogger(__name__) @@ -462,7 +463,7 @@ def allocate_skim_buffer(self, skim_info, shared=False): elif dtype_name == "float32": typecode = "f" else: - raise RuntimeError( + raise TableTypeError( "allocate_skim_buffer unrecognized dtype %s" % dtype_name ) diff --git a/activitysim/core/skim_dictionary.py b/activitysim/core/skim_dictionary.py index 020002e25..59692e3d3 100644 --- a/activitysim/core/skim_dictionary.py +++ b/activitysim/core/skim_dictionary.py @@ -10,7 +10,7 @@ import pandas as pd from activitysim.core import workflow -from activitysim.core.exceptions import StateAccessError +from activitysim.core.exceptions import StateAccessError, TableIndexError logger = logging.getLogger(__name__) @@ -400,7 +400,6 @@ def wrap_3d(self, orig_key, dest_key, dim3_key): class SkimWrapper(object): - """ A SkimWrapper object is an access wrapper around a SkimDict of multiple skim objects, where each object is identified by a key. @@ -907,7 +906,7 @@ def get(self, row_ids, col_ids): not_in_skim = not_in_skim.values logger.warning(f"row_ids: {row_ids[not_in_skim]}") logger.warning(f"col_ids: {col_ids[not_in_skim]}") - raise RuntimeError( + raise TableIndexError( f"DataFrameMatrix: {not_in_skim.sum()} row_ids of {len(row_ids)} not in skim." ) diff --git a/activitysim/core/test/_tools.py b/activitysim/core/test/_tools.py index 618b467bb..3169b771c 100644 --- a/activitysim/core/test/_tools.py +++ b/activitysim/core/test/_tools.py @@ -7,6 +7,8 @@ import pandas as pd +from activitysim.core.exceptions import PipelineError + def run_if_exists(filename): import pytest @@ -176,6 +178,6 @@ def progressive_checkpoint_test( # generate the reference pipeline if it did not exist if not ref_target.exists(): state.checkpoint.store.make_zip_archive(ref_target) - raise RuntimeError( + raise PipelineError( f"Reference pipeline {ref_target} did not exist, so it was created." ) diff --git a/activitysim/core/test/test_pipeline.py b/activitysim/core/test/test_pipeline.py index dfa6d770a..12f31dbc6 100644 --- a/activitysim/core/test/test_pipeline.py +++ b/activitysim/core/test/test_pipeline.py @@ -9,6 +9,7 @@ import tables from activitysim.core import workflow +from activitysim.core.exceptions import CheckpointNameNotFoundError from activitysim.core.test.extensions import steps # set the max households for all tests (this is to limit memory use on travis) @@ -70,17 +71,17 @@ def test_pipeline_run(state): state.checkpoint.load_dataframe("table1", checkpoint_name="step3") # try to get a table from a step before it was checkpointed - with pytest.raises(RuntimeError) as excinfo: + with pytest.raises(CheckpointNameNotFoundError) as excinfo: state.checkpoint.load_dataframe("table2", checkpoint_name="step1") assert "not in checkpoint 'step1'" in str(excinfo.value) # try to get a non-existant table - with pytest.raises(RuntimeError) as excinfo: + with pytest.raises(CheckpointNameNotFoundError) as excinfo: state.checkpoint.load_dataframe("bogus") assert "never checkpointed" in str(excinfo.value) # try to get an existing table from a non-existant checkpoint - with pytest.raises(RuntimeError) as excinfo: + with pytest.raises(CheckpointNameNotFoundError) as excinfo: state.checkpoint.load_dataframe("table1", checkpoint_name="bogus") assert "not in checkpoints" in str(excinfo.value) @@ -111,12 +112,12 @@ def test_pipeline_checkpoint_drop(state): state.checkpoint.load_dataframe("table1") - with pytest.raises(RuntimeError) as excinfo: + with pytest.raises(CheckpointNameNotFoundError) as excinfo: state.checkpoint.load_dataframe("table2") # assert "never checkpointed" in str(excinfo.value) # can't get a dropped table from current checkpoint - with pytest.raises(RuntimeError) as excinfo: + with pytest.raises(CheckpointNameNotFoundError) as excinfo: state.checkpoint.load_dataframe("table3") # assert "was dropped" in str(excinfo.value) diff --git a/activitysim/core/test/test_random.py b/activitysim/core/test/test_random.py index 63809278c..bcbc60268 100644 --- a/activitysim/core/test/test_random.py +++ b/activitysim/core/test/test_random.py @@ -8,6 +8,7 @@ import pytest from activitysim.core import random +from activitysim.core.exceptions import DuplicateLoadableObjectError def test_basic(): @@ -27,7 +28,7 @@ def test_basic(): assert "Arrays are not almost equal" in str(excinfo.value) # second call should return something different - with pytest.raises(RuntimeError) as excinfo: + with pytest.raises(DuplicateLoadableObjectError) as excinfo: rng.set_base_seed(1) assert "call set_base_seed before the first step" in str(excinfo.value) diff --git a/activitysim/core/timetable.py b/activitysim/core/timetable.py index 5743aeef0..cedb3d267 100644 --- a/activitysim/core/timetable.py +++ b/activitysim/core/timetable.py @@ -10,6 +10,7 @@ import pandas as pd from activitysim.core import chunk, configuration, workflow +from activitysim.core.exceptions import DuplicateWorkflowTableError logger = logging.getLogger(__name__) @@ -463,7 +464,9 @@ def replace_table(self, state: workflow.State): % self.windows_table_name, level=logging.ERROR, ) - raise RuntimeError("Attempt to replace_table while in transaction") + raise DuplicateWorkflowTableError( + "Attempt to replace_table while in transaction" + ) # get windows_df from bottleneck function in case updates to self.person_window # do not write through to pandas dataframe diff --git a/activitysim/core/tracing.py b/activitysim/core/tracing.py index 8c9fb61bd..ecb0c363c 100644 --- a/activitysim/core/tracing.py +++ b/activitysim/core/tracing.py @@ -11,6 +11,8 @@ import numpy as np import pandas as pd +from activitysim.core.exceptions import TableSlicingError + # Configurations ASIM_LOGGER = "activitysim" CSV_FILE_TYPE = "csv" @@ -247,7 +249,9 @@ def slice_ids(df, ids, column=None): except KeyError: # this happens if specified slicer column is not in df # df = df[0:0] - raise RuntimeError("slice_ids slicer column '%s' not in dataframe" % column) + raise TableSlicingError( + "slice_ids slicer column '%s' not in dataframe" % column + ) return df diff --git a/activitysim/core/util.py b/activitysim/core/util.py index aeb09ae16..20f79c760 100644 --- a/activitysim/core/util.py +++ b/activitysim/core/util.py @@ -298,7 +298,7 @@ def quick_loc_series(loc_list, target_series): elif isinstance(loc_list, np.ndarray) or isinstance(loc_list, list): left_df = pd.DataFrame({left_on: loc_list}) else: - raise RuntimeError( + raise TypeError( "quick_loc_series loc_list of unexpected type %s" % type(loc_list) ) diff --git a/activitysim/core/workflow/checkpoint.py b/activitysim/core/workflow/checkpoint.py index d5a728635..7391e1c9b 100644 --- a/activitysim/core/workflow/checkpoint.py +++ b/activitysim/core/workflow/checkpoint.py @@ -18,6 +18,7 @@ TableNameNotFound, ) from activitysim.core.workflow.accessor import FromState, StateAccessor +from activitysim.core.exceptions import CheckpointNameNotFoundError, PipelineError logger = logging.getLogger(__name__) @@ -565,7 +566,7 @@ def open_store( """ if self._checkpoint_store is not None: - raise RuntimeError("Pipeline store is already open!") + raise PipelineError("Pipeline store is already open!") if pipeline_file_name is None: pipeline_file_path = self.default_pipeline_file_path() @@ -775,7 +776,7 @@ def load(self, checkpoint_name: str, store=None): msg = f"Couldn't find checkpoint '{checkpoint_name}' in checkpoints" print(checkpoints[CHECKPOINT_NAME]) logger.error(msg) - raise RuntimeError(msg) from None + raise CheckpointNameNotFoundError(msg) from None # convert pandas dataframe back to array of checkpoint dicts checkpoints = checkpoints.to_dict(orient="records") @@ -1201,7 +1202,7 @@ def load_dataframe(self, table_name, checkpoint_name=None): if table_name not in self.last_checkpoint and self._obj.is_table(table_name): if checkpoint_name is not None: - raise RuntimeError( + raise CheckpointNameNotFoundError( f"checkpoint.dataframe: checkpoint_name ({checkpoint_name!r}) not " f"supported for non-checkpointed table {table_name!r}" ) @@ -1211,10 +1212,14 @@ def load_dataframe(self, table_name, checkpoint_name=None): # if there is no checkpoint name given, do not attempt to read from store if checkpoint_name is None: if table_name not in self.last_checkpoint: - raise RuntimeError("table '%s' never checkpointed." % table_name) + raise CheckpointNameNotFoundError( + "table '%s' never checkpointed." % table_name + ) if not self.last_checkpoint[table_name]: - raise RuntimeError("table '%s' was dropped." % table_name) + raise CheckpointNameNotFoundError( + "table '%s' was dropped." % table_name + ) return self._obj.get_dataframe(table_name) @@ -1224,13 +1229,15 @@ def load_dataframe(self, table_name, checkpoint_name=None): None, ) if checkpoint is None: - raise RuntimeError("checkpoint '%s' not in checkpoints." % checkpoint_name) + raise CheckpointNameNotFoundError( + "checkpoint '%s' not in checkpoints." % checkpoint_name + ) # find the checkpoint that table was written to store last_checkpoint_name = checkpoint.get(table_name, None) if not last_checkpoint_name: - raise RuntimeError( + raise CheckpointNameNotFoundError( "table '%s' not in checkpoint '%s'." % (table_name, checkpoint_name) ) diff --git a/activitysim/core/workflow/runner.py b/activitysim/core/workflow/runner.py index 8eba53cbe..79ecd0ed4 100644 --- a/activitysim/core/workflow/runner.py +++ b/activitysim/core/workflow/runner.py @@ -265,7 +265,7 @@ def _pre_run_step(self, model_name: str) -> bool | None: if model_name in checkpointed_models: if self._obj.settings.duplicate_step_execution == "error": checkpointed_model_bullets = "\n - ".join(checkpointed_models) - raise RuntimeError( + raise DuplicateWorkflowNameError( f"Checkpointed Models:\n - {checkpointed_model_bullets}\n" f"Cannot run model '{model_name}' more than once" ) diff --git a/activitysim/core/workflow/state.py b/activitysim/core/workflow/state.py index 6178f2488..9f7dcd4d6 100644 --- a/activitysim/core/workflow/state.py +++ b/activitysim/core/workflow/state.py @@ -20,7 +20,7 @@ import activitysim.core.random from activitysim.core.configuration import FileSystem, NetworkSettings, Settings -from activitysim.core.exceptions import StateAccessError +from activitysim.core.exceptions import StateAccessError, CheckpointNameNotFoundError from activitysim.core.workflow.checkpoint import LAST_CHECKPOINT, Checkpoints from activitysim.core.workflow.chunking import Chunking from activitysim.core.workflow.dataset import Datasets @@ -1017,7 +1017,7 @@ def get_table(self, table_name, checkpoint_name=None): table_name ): if checkpoint_name is not None: - raise RuntimeError( + raise CheckpointNameNotFoundError( f"get_table: checkpoint_name ({checkpoint_name!r}) not " f"supported for non-checkpointed table {table_name!r}" ) @@ -1027,10 +1027,14 @@ def get_table(self, table_name, checkpoint_name=None): # if they want current version of table, no need to read from pipeline store if checkpoint_name is None: if table_name not in self.checkpoint.last_checkpoint: - raise RuntimeError("table '%s' never checkpointed." % table_name) + raise CheckpointNameNotFoundError( + "table '%s' never checkpointed." % table_name + ) if not self.checkpoint.last_checkpoint[table_name]: - raise RuntimeError("table '%s' was dropped." % table_name) + raise CheckpointNameNotFoundError( + "table '%s' was dropped." % table_name + ) return self._context.get(table_name) @@ -1044,13 +1048,15 @@ def get_table(self, table_name, checkpoint_name=None): None, ) if checkpoint is None: - raise RuntimeError("checkpoint '%s' not in checkpoints." % checkpoint_name) + raise CheckpointNameNotFoundError( + "checkpoint '%s' not in checkpoints." % checkpoint_name + ) # find the checkpoint that table was written to store last_checkpoint_name = checkpoint.get(table_name, None) if not last_checkpoint_name: - raise RuntimeError( + raise CheckpointNameNotFoundError( "table '%s' not in checkpoint '%s'." % (table_name, checkpoint_name) ) diff --git a/activitysim/core/workflow/tracing.py b/activitysim/core/workflow/tracing.py index 580c6fad9..2669e5b9b 100644 --- a/activitysim/core/workflow/tracing.py +++ b/activitysim/core/workflow/tracing.py @@ -21,6 +21,7 @@ from activitysim.core import tracing from activitysim.core.test import assert_equal, assert_frame_substantively_equal from activitysim.core.workflow.accessor import FromState, StateAccessor +from activitysim.core.exceptions import TableSlicingError logger = logging.getLogger(__name__) @@ -548,7 +549,7 @@ def interaction_trace_rows(self, interaction_df, choosers, sample_size=None): targets = traceable_table_ids["proto_tours"] else: print(choosers.columns) - raise RuntimeError( + raise TableSlicingError( "interaction_trace_rows don't know how to slice index '%s'" % choosers.index.name ) @@ -629,7 +630,7 @@ def get_trace_target(self, df: pd.DataFrame, slicer: str, column: Any = None): column = slicer if column is None and df.index.name != slicer: - raise RuntimeError( + raise TableSlicingError( "bad slicer '%s' for df with index '%s'" % (slicer, df.index.name) ) diff --git a/activitysim/estimation/test/test_larch_estimation.py b/activitysim/estimation/test/test_larch_estimation.py index 2d2427c41..e688b1098 100644 --- a/activitysim/estimation/test/test_larch_estimation.py +++ b/activitysim/estimation/test/test_larch_estimation.py @@ -44,7 +44,7 @@ def _regression_check(dataframe_regression, df, basename=None, rtol=None): # pandas 1.3 handles int8 dtypes as actual numbers, so holdfast needs to be dropped manually # we're dropping it not adding to the regression check so older pandas will also work. basename=basename, - default_tolerance=dict(atol=1e-6, rtol=rtol) + default_tolerance=dict(atol=1e-6, rtol=rtol), # can set a little loose, as there is sometimes a little variance in these # results when switching backend implementations. We're checking all # the parameters and the log likelihood, so modest variance in individual @@ -129,7 +129,7 @@ def test_location_model( dataframe_regression.check( size_spec, basename=f"test_loc_{name}_{method}_size_spec", - default_tolerance=dict(atol=1e-6, rtol=5e-2) + default_tolerance=dict(atol=1e-6, rtol=5e-2), # set a little loose, as there is sometimes a little variance in these # results when switching backend implementations. ) diff --git a/activitysim/examples/placeholder_multiple_zone/scripts/three_zone_example_data.py b/activitysim/examples/placeholder_multiple_zone/scripts/three_zone_example_data.py index 7291c6533..1ce386168 100644 --- a/activitysim/examples/placeholder_multiple_zone/scripts/three_zone_example_data.py +++ b/activitysim/examples/placeholder_multiple_zone/scripts/three_zone_example_data.py @@ -149,13 +149,15 @@ tap_df.to_csv(os.path.join(output_data, "tap.csv"), index=False) # create taz_z3 and tap skims -with omx.open_file( - os.path.join(input_data, "skims.omx"), "r" -) as ur_skims, omx.open_file( - os.path.join(output_data, "taz_skims.omx"), "w" -) as output_taz_skims_file, omx.open_file( - os.path.join(output_data, "tap_skims.omx"), "w" -) as output_tap_skims_file: +with ( + omx.open_file(os.path.join(input_data, "skims.omx"), "r") as ur_skims, + omx.open_file( + os.path.join(output_data, "taz_skims.omx"), "w" + ) as output_taz_skims_file, + omx.open_file( + os.path.join(output_data, "tap_skims.omx"), "w" + ) as output_tap_skims_file, +): for skim_name in ur_skims.list_matrices(): ur_skim = ur_skims[skim_name][:] new_skim = ur_skim[taz_zone_indexes, :][:, taz_zone_indexes] diff --git a/activitysim/examples/placeholder_multiple_zone/scripts/two_zone_example_data.py b/activitysim/examples/placeholder_multiple_zone/scripts/two_zone_example_data.py index a4c6c46fc..20c7bccf5 100644 --- a/activitysim/examples/placeholder_multiple_zone/scripts/two_zone_example_data.py +++ b/activitysim/examples/placeholder_multiple_zone/scripts/two_zone_example_data.py @@ -104,11 +104,10 @@ # ### Create taz skims -with omx.open_file( - os.path.join(input_data, "skims.omx"), "r" -) as skims_file, omx.open_file( - os.path.join(output_data, "taz_skims.omx"), "w" -) as output_skims_file: +with ( + omx.open_file(os.path.join(input_data, "skims.omx"), "r") as skims_file, + omx.open_file(os.path.join(output_data, "taz_skims.omx"), "w") as output_skims_file, +): skims = skims_file.list_matrices() num_zones = skims_file.shape()[0] diff --git a/activitysim/examples/placeholder_multiple_zone/three_zone_example_data.py b/activitysim/examples/placeholder_multiple_zone/three_zone_example_data.py index 0a43cce22..54224087d 100644 --- a/activitysim/examples/placeholder_multiple_zone/three_zone_example_data.py +++ b/activitysim/examples/placeholder_multiple_zone/three_zone_example_data.py @@ -143,13 +143,15 @@ tap_df.to_csv(os.path.join(output_data, "tap.csv"), index=False) # create taz_z3 and tap skims -with omx.open_file( - os.path.join(input_data, "skims.omx"), "r" -) as ur_skims, omx.open_file( - os.path.join(output_data, "taz_skims.omx"), "w" -) as output_taz_skims_file, omx.open_file( - os.path.join(output_data, "tap_skims.omx"), "w" -) as output_tap_skims_file: +with ( + omx.open_file(os.path.join(input_data, "skims.omx"), "r") as ur_skims, + omx.open_file( + os.path.join(output_data, "taz_skims.omx"), "w" + ) as output_taz_skims_file, + omx.open_file( + os.path.join(output_data, "tap_skims.omx"), "w" + ) as output_tap_skims_file, +): for skim_name in ur_skims.list_matrices(): ur_skim = ur_skims[skim_name][:] new_skim = ur_skim[taz_zone_indexes, :][:, taz_zone_indexes] diff --git a/activitysim/examples/placeholder_multiple_zone/two_zone_example_data.py b/activitysim/examples/placeholder_multiple_zone/two_zone_example_data.py index fbb26e2aa..a6f5750a0 100644 --- a/activitysim/examples/placeholder_multiple_zone/two_zone_example_data.py +++ b/activitysim/examples/placeholder_multiple_zone/two_zone_example_data.py @@ -101,11 +101,10 @@ # ### Create taz skims -with omx.open_file( - os.path.join(input_data, "skims.omx"), "r" -) as skims_file, omx.open_file( - os.path.join(output_data, "taz_skims.omx"), "w" -) as output_skims_file: +with ( + omx.open_file(os.path.join(input_data, "skims.omx"), "r") as skims_file, + omx.open_file(os.path.join(output_data, "taz_skims.omx"), "w") as output_skims_file, +): skims = skims_file.list_matrices() num_zones = skims_file.shape()[0] diff --git a/activitysim/examples/production_semcog/data_model/enums.py b/activitysim/examples/production_semcog/data_model/enums.py index 71c436924..8ae8f9eb4 100644 --- a/activitysim/examples/production_semcog/data_model/enums.py +++ b/activitysim/examples/production_semcog/data_model/enums.py @@ -3,6 +3,7 @@ Instructions: modify these enumerated variables as needed for your ActivitySim implementation. """ + from enum import IntEnum diff --git a/activitysim/examples/production_semcog/data_model/input_checks.py b/activitysim/examples/production_semcog/data_model/input_checks.py index b9b1f338b..ce93a86e0 100644 --- a/activitysim/examples/production_semcog/data_model/input_checks.py +++ b/activitysim/examples/production_semcog/data_model/input_checks.py @@ -3,6 +3,7 @@ Instructions: customize these example values for your own ActivitySim implementation """ + from typing import List, Optional import os, sys, logging diff --git a/activitysim/examples/prototype_mtc_extended/data_model/enums.py b/activitysim/examples/prototype_mtc_extended/data_model/enums.py index 124647e5d..b28960501 100644 --- a/activitysim/examples/prototype_mtc_extended/data_model/enums.py +++ b/activitysim/examples/prototype_mtc_extended/data_model/enums.py @@ -3,6 +3,7 @@ Instructions: modify these enumerated variables as needed for your ActivitySim implementation. """ + from enum import IntEnum diff --git a/activitysim/examples/prototype_mtc_extended/data_model/input_checks.py b/activitysim/examples/prototype_mtc_extended/data_model/input_checks.py index 1cc63e583..f87767ab6 100644 --- a/activitysim/examples/prototype_mtc_extended/data_model/input_checks.py +++ b/activitysim/examples/prototype_mtc_extended/data_model/input_checks.py @@ -3,6 +3,7 @@ Instructions: customize these example values for your own ActivitySim implementation """ + from __future__ import annotations import csv diff --git a/activitysim/examples/prototype_mtc_extended/data_model/input_checks_pydantic_dev.py b/activitysim/examples/prototype_mtc_extended/data_model/input_checks_pydantic_dev.py index b17111906..f2c3ddb99 100644 --- a/activitysim/examples/prototype_mtc_extended/data_model/input_checks_pydantic_dev.py +++ b/activitysim/examples/prototype_mtc_extended/data_model/input_checks_pydantic_dev.py @@ -3,6 +3,7 @@ Instructions: customize these example values for your own ActivitySim implementation """ + from typing import List, Optional import os, sys, logging diff --git a/activitysim/workflows/steps/cmd/__init__.py b/activitysim/workflows/steps/cmd/__init__.py index e62b19e85..1463609e3 100644 --- a/activitysim/workflows/steps/cmd/__init__.py +++ b/activitysim/workflows/steps/cmd/__init__.py @@ -4,6 +4,7 @@ environment,variable expansion, and expansion of ~ to a user’s home directory. """ + import logging from .dsl import CmdStep diff --git a/activitysim/workflows/steps/cmd/dsl.py b/activitysim/workflows/steps/cmd/dsl.py index 1d05a7d3b..7337eab3c 100644 --- a/activitysim/workflows/steps/cmd/dsl.py +++ b/activitysim/workflows/steps/cmd/dsl.py @@ -1,4 +1,5 @@ """pypyr step yaml definition for commands - domain specific language.""" + import logging import os import shlex diff --git a/activitysim/workflows/steps/contrast/data_inventory.py b/activitysim/workflows/steps/contrast/data_inventory.py index a3ff172a3..70b5f4a10 100644 --- a/activitysim/workflows/steps/contrast/data_inventory.py +++ b/activitysim/workflows/steps/contrast/data_inventory.py @@ -63,7 +63,7 @@ def run_step(context: Context) -> None: 1 ), index=dtypes_table.index, - ).apply(lambda x: "" if x else "\u2B05") + ).apply(lambda x: "" if x else "\u2b05") report << dtypes_table with report: diff --git a/activitysim/workflows/steps/main.py b/activitysim/workflows/steps/main.py index ccefaa825..9859254d2 100644 --- a/activitysim/workflows/steps/main.py +++ b/activitysim/workflows/steps/main.py @@ -1,4 +1,5 @@ """Naive custom loader without any error handling.""" + from __future__ import annotations import os diff --git a/activitysim/workflows/steps/progression.py b/activitysim/workflows/steps/progression.py index c0832dc46..d77513bfa 100644 --- a/activitysim/workflows/steps/progression.py +++ b/activitysim/workflows/steps/progression.py @@ -96,7 +96,7 @@ def update_progress_overall(description, formatting=""): def reset_progress_step(*args, description="", prefix="", **kwargs): if not os.environ.get("NO_RICH", False): - print(f"\u23F1 {time.strftime('%I:%M:%S %p')} - {description}") + print(f"\u23f1 {time.strftime('%I:%M:%S %p')} - {description}") progress.reset(progress_step, *args, description=prefix + description, **kwargs) else: print("╭" + "─" * (len(description) + 2) + "╮") diff --git a/test/cdap/test_cdap.py b/test/cdap/test_cdap.py index 38e265776..b26078c90 100644 --- a/test/cdap/test_cdap.py +++ b/test/cdap/test_cdap.py @@ -162,9 +162,9 @@ def test_cdap_from_pipeline(reconnect_pipeline: workflow.State, caplog): lambda x: x[:-1].upper() if x.endswith("0") else x.upper() ) household_df["cdap_activity"] = household_df.apply( - lambda x: x["cdap_activity"] + "J" - if x["has_joint_tour"] == 1 - else x["cdap_activity"], + lambda x: ( + x["cdap_activity"] + "J" if x["has_joint_tour"] == 1 else x["cdap_activity"] + ), axis=1, ) From f50a261a6007a87164baa2d287c8f81c734a9bd8 Mon Sep 17 00:00:00 2001 From: Jeffrey Newman Date: Fri, 31 Oct 2025 16:46:41 -0500 Subject: [PATCH 23/34] dev install Git commands (#1006) --- docs/dev-guide/install.md | 67 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/docs/dev-guide/install.md b/docs/dev-guide/install.md index 40b92e0a6..d4492f097 100644 --- a/docs/dev-guide/install.md +++ b/docs/dev-guide/install.md @@ -2,6 +2,8 @@ # Developer Installation Installing ActivitySim as a developer is as easy as just using it with *uv*. +The easiest wat to make sure you are up-to-date is to run `uv sync --locked`, +which will make sure that all the dependencies are loaded correctly. Depending on what you are working on, you may want to check out a branch other than the default `main`. To do so, you can use a `git switch` command @@ -18,3 +20,68 @@ sure to use the `uv add` and `uv remove` commands so that the `pyproject.toml` and `uv.lock` files are updated correctly and your virtual environment is updated. ``` + +## Cloning from GitHub + +Developers who want to work on ActivitySim should clone the repository from GitHub. +If you have the [GitHub command line tool](https://cli.github.com) installed, you +*could* run this command to clone the consortium's repository: + +```{sh} +gh repo clone ActivitySim/activitysim +``` + +Usually, you'll actually not want to do this. Instead, **you should work on your +own fork of the repository.** You can create a fork on GitHub using the web interface +or the command line tool's [fork](https://cli.github.com/manual/gh_repo_fork) command. +Then you would clone the repository by referencing your fork: + +```{sh} +gh repo clone MyUsernameOrOrganization/activitysim +``` + +This way, you can make whatever changes you want in your fork and store them locally +on your computer or push them to GitHub, and they definitely won't step on anyone +else's work. When you're ready to share your awesome new features, you can open a +pull request to do so. + +Also, you may notice that the consortium repository has a huge history and includes +a lot of older data files that you probably don't need. To reduce your download time +and disk space usage, you can tell Git that you don't want that whole history. If you +just want to have access to the current code and a couple of years history, you can +cut off the older history using the `shallow-since` option: + +```{sh} +gh repo clone MyUsernameOrOrganization/activitysim -- --shallow-since="2025-01-01" +``` + +This can reduce the cloning download and disk usage by several gigabytes! By default +you won't see all your branches appear in this more limited clone, just the `main` +branch. + +### Fetching a Specific Branch + +This is easily solved by downloading individual branches specifically by +name. + +```{sh} +# change into the git repo's directory if not already there +cd activitysim + +# Fetch the specific branch named "patch-67" +git fetch origin refs/heads/patch-67:refs/remotes/origin/patch-67 + +# Check out the branch as a local branch to work on +git checkout -b patch-67 origin/patch-67 +``` + +### Fetching All Branches in a Fork + +If you want to work more expansively, you may want to fetch all the branches in +your fork, rather than getting specific branches one at a time. You can change the +repo settings to do so by adding to the Git config file: + +```{sh} +git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*" +git fetch --shallow-since="2025-01-01" origin +``` From 009d64ab639e54137dfb30c1ea33abc204ebbea0 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Sun, 2 Nov 2025 21:15:26 -0600 Subject: [PATCH 24/34] Replace deprecated pkg_resources with importlib.resources (#1011) * Initial plan * Replace deprecated pkg_resources with importlib.resources Co-authored-by: jpn-- <1036626+jpn--@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: jpn-- <1036626+jpn--@users.noreply.github.com> --- activitysim/abm/test/test_misc/setup_utils.py | 4 ++-- .../abm/test/test_misc/test_load_cached_accessibility.py | 4 ++-- activitysim/abm/test/test_pipeline/test_pipeline.py | 4 ++-- activitysim/cli/create.py | 1 - .../placeholder_multiple_zone/test/test_multiple_zone.py | 6 +++--- activitysim/examples/production_semcog/test/test_semcog.py | 4 ++-- activitysim/examples/prototype_arc/test/test_arc.py | 4 ++-- activitysim/examples/prototype_marin/test/test_marin.py | 4 ++-- activitysim/examples/prototype_mtc/test/test_mtc.py | 4 ++-- .../examples/prototype_mtc_extended/sampling_scenarios.py | 6 +++--- .../prototype_mtc_extended/test/test_mtc_extended.py | 6 +++--- activitysim/examples/prototype_mwcog/test/test_mwcog.py | 4 ++-- .../prototype_sandag_xborder/test/test_sandag_xborder.py | 4 ++-- test/random_seed/test_random_seed.py | 4 ++-- 14 files changed, 29 insertions(+), 30 deletions(-) diff --git a/activitysim/abm/test/test_misc/setup_utils.py b/activitysim/abm/test/test_misc/setup_utils.py index a4fe7e9c0..716940443 100644 --- a/activitysim/abm/test/test_misc/setup_utils.py +++ b/activitysim/abm/test/test_misc/setup_utils.py @@ -2,6 +2,7 @@ # See full license in LICENSE.txt. from __future__ import annotations +import importlib.resources import logging import os @@ -10,7 +11,6 @@ import openmatrix as omx import pandas as pd import pandas.testing as pdt -import pkg_resources import pytest import yaml @@ -32,7 +32,7 @@ def example_path(dirname): resource = os.path.join("examples", "prototype_mtc", dirname) - return pkg_resources.resource_filename("activitysim", resource) + return str(importlib.resources.files("activitysim").joinpath(resource)) def setup_dirs(ancillary_configs_dir=None, data_dir=None): diff --git a/activitysim/abm/test/test_misc/test_load_cached_accessibility.py b/activitysim/abm/test/test_misc/test_load_cached_accessibility.py index 60288d67c..402b18783 100644 --- a/activitysim/abm/test/test_misc/test_load_cached_accessibility.py +++ b/activitysim/abm/test/test_misc/test_load_cached_accessibility.py @@ -2,6 +2,7 @@ # See full license in LICENSE.txt. from __future__ import annotations +import importlib.resources import logging import os @@ -10,7 +11,6 @@ import openmatrix as omx import pandas as pd import pandas.testing as pdt -import pkg_resources import pytest import yaml @@ -34,7 +34,7 @@ def example_path(dirname): resource = os.path.join("examples", "prototype_mtc", dirname) - return pkg_resources.resource_filename("activitysim", resource) + return str(importlib.resources.files("activitysim").joinpath(resource)) def close_handlers(): diff --git a/activitysim/abm/test/test_pipeline/test_pipeline.py b/activitysim/abm/test/test_pipeline/test_pipeline.py index b245e97f5..2d837258a 100644 --- a/activitysim/abm/test/test_pipeline/test_pipeline.py +++ b/activitysim/abm/test/test_pipeline/test_pipeline.py @@ -2,6 +2,7 @@ # See full license in LICENSE.txt. from __future__ import annotations +import importlib.resources import logging import os @@ -9,7 +10,6 @@ import openmatrix as omx import pandas as pd import pandas.testing as pdt -import pkg_resources import pytest from activitysim.core import random, tracing, workflow @@ -34,7 +34,7 @@ def example_path(dirname): resource = os.path.join("examples", "prototype_mtc", dirname) - return pkg_resources.resource_filename("activitysim", resource) + return str(importlib.resources.files("activitysim").joinpath(resource)) def setup_dirs(ancillary_configs_dir=None, data_dir=None): diff --git a/activitysim/cli/create.py b/activitysim/cli/create.py index 4275ad3a1..ec2e917bd 100644 --- a/activitysim/cli/create.py +++ b/activitysim/cli/create.py @@ -11,7 +11,6 @@ import zipfile from pathlib import Path -import pkg_resources import requests import yaml diff --git a/activitysim/examples/placeholder_multiple_zone/test/test_multiple_zone.py b/activitysim/examples/placeholder_multiple_zone/test/test_multiple_zone.py index 46aa8bf46..3e956301e 100644 --- a/activitysim/examples/placeholder_multiple_zone/test/test_multiple_zone.py +++ b/activitysim/examples/placeholder_multiple_zone/test/test_multiple_zone.py @@ -2,13 +2,13 @@ # ActivitySim # See full license in LICENSE.txt. +import importlib.resources import os import subprocess import sys from pathlib import Path import pandas as pd -import pkg_resources import pytest from activitysim.core import test, workflow @@ -16,12 +16,12 @@ def example_path(dirname): resource = os.path.join("examples", "placeholder_multiple_zone", dirname) - return pkg_resources.resource_filename("activitysim", resource) + return str(importlib.resources.files("activitysim").joinpath(resource)) def mtc_example_path(dirname): resource = os.path.join("examples", "prototype_mtc", dirname) - return pkg_resources.resource_filename("activitysim", resource) + return str(importlib.resources.files("activitysim").joinpath(resource)) def build_data(): diff --git a/activitysim/examples/production_semcog/test/test_semcog.py b/activitysim/examples/production_semcog/test/test_semcog.py index 10651d445..e247fd645 100644 --- a/activitysim/examples/production_semcog/test/test_semcog.py +++ b/activitysim/examples/production_semcog/test/test_semcog.py @@ -2,11 +2,11 @@ # ActivitySim # See full license in LICENSE.txt. +import importlib.resources import os import subprocess import pandas as pd -import pkg_resources from activitysim.core.test._tools import assert_frame_substantively_equal @@ -14,7 +14,7 @@ def run_test_semcog(multiprocess=False): def example_path(dirname): resource = os.path.join("examples", "production_semcog", dirname) - return pkg_resources.resource_filename("activitysim", resource) + return str(importlib.resources.files("activitysim").joinpath(resource)) def test_path(dirname): return os.path.join(os.path.dirname(__file__), dirname) diff --git a/activitysim/examples/prototype_arc/test/test_arc.py b/activitysim/examples/prototype_arc/test/test_arc.py index 54462ec95..3e637289c 100644 --- a/activitysim/examples/prototype_arc/test/test_arc.py +++ b/activitysim/examples/prototype_arc/test/test_arc.py @@ -2,13 +2,13 @@ # ActivitySim # See full license in LICENSE.txt. +import importlib.resources import os import subprocess import sys import pandas as pd import pandas.testing as pdt -import pkg_resources from activitysim.core.test import assert_frame_substantively_equal @@ -16,7 +16,7 @@ def _test_arc(recode=False, sharrow=False): def example_path(dirname): resource = os.path.join("examples", "prototype_arc", dirname) - return pkg_resources.resource_filename("activitysim", resource) + return str(importlib.resources.files("activitysim").joinpath(resource)) def test_path(dirname): return os.path.join(os.path.dirname(__file__), dirname) diff --git a/activitysim/examples/prototype_marin/test/test_marin.py b/activitysim/examples/prototype_marin/test/test_marin.py index 4de5028f1..11f5cd88f 100644 --- a/activitysim/examples/prototype_marin/test/test_marin.py +++ b/activitysim/examples/prototype_marin/test/test_marin.py @@ -2,20 +2,20 @@ # ActivitySim # See full license in LICENSE.txt. +import importlib.resources import os import subprocess from pathlib import Path import pandas as pd import pandas.testing as pdt -import pkg_resources from activitysim.core import test, workflow def example_path(dirname): resource = os.path.join("examples", "prototype_marin", dirname) - return pkg_resources.resource_filename("activitysim", resource) + return str(importlib.resources.files("activitysim").joinpath(resource)) def _test_path(dirname): diff --git a/activitysim/examples/prototype_mtc/test/test_mtc.py b/activitysim/examples/prototype_mtc/test/test_mtc.py index b72ac5c49..06878f4f8 100644 --- a/activitysim/examples/prototype_mtc/test/test_mtc.py +++ b/activitysim/examples/prototype_mtc/test/test_mtc.py @@ -2,6 +2,7 @@ # ActivitySim # See full license in LICENSE.txt. +import importlib.resources import os import subprocess import sys @@ -9,7 +10,6 @@ import pandas as pd import pandas.testing as pdt -import pkg_resources from activitysim.core import test, workflow @@ -17,7 +17,7 @@ def run_test_mtc(multiprocess=False, chunkless=False, recode=False, sharrow=False): def example_path(dirname): resource = os.path.join("examples", "prototype_mtc", dirname) - return pkg_resources.resource_filename("activitysim", resource) + return str(importlib.resources.files("activitysim").joinpath(resource)) def test_path(dirname): return os.path.join(os.path.dirname(__file__), dirname) diff --git a/activitysim/examples/prototype_mtc_extended/sampling_scenarios.py b/activitysim/examples/prototype_mtc_extended/sampling_scenarios.py index f718f4745..ed6e352c4 100644 --- a/activitysim/examples/prototype_mtc_extended/sampling_scenarios.py +++ b/activitysim/examples/prototype_mtc_extended/sampling_scenarios.py @@ -1,11 +1,11 @@ from __future__ import annotations import argparse +import importlib.resources import os import shutil import pandas as pd -import pkg_resources import yaml from activitysim.cli.run import add_run_args, run @@ -35,12 +35,12 @@ def integer_params(params): def base_path(dirname): resource = os.path.join("examples", "placeholder_sandag_2_zone", dirname) - return pkg_resources.resource_filename("activitysim", resource) + return str(importlib.resources.files("activitysim").joinpath(resource)) def extended_path(dirname): resource = os.path.join("examples", "placeholder_sandag_2_zone_extended", dirname) - return pkg_resources.resource_filename("activitysim", resource) + return str(importlib.resources.files("activitysim").joinpath(resource)) def run_model(): diff --git a/activitysim/examples/prototype_mtc_extended/test/test_mtc_extended.py b/activitysim/examples/prototype_mtc_extended/test/test_mtc_extended.py index f78b7f8b9..ae7405173 100644 --- a/activitysim/examples/prototype_mtc_extended/test/test_mtc_extended.py +++ b/activitysim/examples/prototype_mtc_extended/test/test_mtc_extended.py @@ -2,6 +2,7 @@ # ActivitySim # See full license in LICENSE.txt. +import importlib.resources import os import subprocess import sys @@ -9,7 +10,6 @@ import pandas as pd import pandas.testing as pdt -import pkg_resources import pytest from activitysim.core import configuration, test, workflow @@ -23,11 +23,11 @@ def _test_prototype_mtc_extended( ): def example_path(dirname): resource = os.path.join("examples", "prototype_mtc_extended", dirname) - return pkg_resources.resource_filename("activitysim", resource) + return str(importlib.resources.files("activitysim").joinpath(resource)) def example_mtc_path(dirname): resource = os.path.join("examples", "prototype_mtc", dirname) - return pkg_resources.resource_filename("activitysim", resource) + return str(importlib.resources.files("activitysim").joinpath(resource)) def test_path(dirname): return os.path.join(os.path.dirname(__file__), dirname) diff --git a/activitysim/examples/prototype_mwcog/test/test_mwcog.py b/activitysim/examples/prototype_mwcog/test/test_mwcog.py index 8978d269d..9bc6cae75 100644 --- a/activitysim/examples/prototype_mwcog/test/test_mwcog.py +++ b/activitysim/examples/prototype_mwcog/test/test_mwcog.py @@ -2,13 +2,13 @@ # ActivitySim # See full license in LICENSE.txt. +import importlib.resources import os import subprocess import sys import pandas as pd import pandas.testing as pdt -import pkg_resources from activitysim.core import test @@ -16,7 +16,7 @@ def _test_mwcog(sharrow=False): def example_path(dirname): resource = os.path.join("examples", "prototype_mwcog", dirname) - return pkg_resources.resource_filename("activitysim", resource) + return str(importlib.resources.files("activitysim").joinpath(resource)) def test_path(dirname): return os.path.join(os.path.dirname(__file__), dirname) diff --git a/activitysim/examples/prototype_sandag_xborder/test/test_sandag_xborder.py b/activitysim/examples/prototype_sandag_xborder/test/test_sandag_xborder.py index e9d538cde..608e43076 100644 --- a/activitysim/examples/prototype_sandag_xborder/test/test_sandag_xborder.py +++ b/activitysim/examples/prototype_sandag_xborder/test/test_sandag_xborder.py @@ -2,6 +2,7 @@ # ActivitySim # See full license in LICENSE.txt. +import importlib.resources import os import subprocess import sys @@ -9,7 +10,6 @@ import pandas as pd import pandas.testing as pdt -import pkg_resources from activitysim.core import workflow from activitysim.core.test import run_if_exists @@ -18,7 +18,7 @@ def _test_sandag_xborder(sharrow=False, mp=True): def example_path(dirname): resource = os.path.join("examples", "prototype_sandag_xborder", dirname) - return pkg_resources.resource_filename("activitysim", resource) + return str(importlib.resources.files("activitysim").joinpath(resource)) def test_path(dirname): return os.path.join(os.path.dirname(__file__), dirname) diff --git a/test/random_seed/test_random_seed.py b/test/random_seed/test_random_seed.py index 6f4997f62..d9a33f2bf 100644 --- a/test/random_seed/test_random_seed.py +++ b/test/random_seed/test_random_seed.py @@ -2,13 +2,13 @@ # ActivitySim # See full license in LICENSE.txt. +import importlib.resources import os import subprocess from shutil import copytree import pandas as pd import pandas.testing as pdt -import pkg_resources import yaml @@ -35,7 +35,7 @@ def run_test_random_seed(): def example_path(dirname): resource = os.path.join("examples", "prototype_mtc", dirname) - return pkg_resources.resource_filename("activitysim", resource) + return str(importlib.resources.files("activitysim").joinpath(resource)) def test_path(dirname): return os.path.join(os.path.dirname(__file__), dirname) From ed44a4061b182a7761750912f15717f915f3c199 Mon Sep 17 00:00:00 2001 From: Sijia Wang Date: Mon, 10 Nov 2025 20:40:18 -0500 Subject: [PATCH 25/34] Expand UV installation and usage instructions (#1007) * Expand UV installation and usage instructions * disable auto upgrade * Update modelsetup.rst * address comments --- docs/users-guide/modelsetup.rst | 346 +++++++++++++++++++++++--------- 1 file changed, 251 insertions(+), 95 deletions(-) diff --git a/docs/users-guide/modelsetup.rst b/docs/users-guide/modelsetup.rst index 2398ed3d9..a3293fdbd 100644 --- a/docs/users-guide/modelsetup.rst +++ b/docs/users-guide/modelsetup.rst @@ -92,8 +92,9 @@ There are two recommended ways to install ActivitySim: 2. Using the :ref:`UV Package and Project Manager` -The first is recommended for users who do not need to change the Python code and are on Windows, -and the second is recommended for users who need to change/customize the Python code. +The first is recommended for users who are new to Python and use Windows, do not actively create and manage Python virtual environments, +and do not need to change the ActivitySim code. The second is recommended for users who actively create and manage Python virtual environments, +and/or want to change/customize the ActivitySim code. Pre-packaged Installer @@ -125,173 +126,328 @@ UV Package and Project Manager ______________________________________ This method is recommended for ActivitySim users who are familiar with -Python and optionally wish to customize the Python code to run their models. +Python, create and manage ActivitySim Python virtual environments, and optionally wish to customize ActivitySim code to run their models. UV is a free open source cross-platform package and project manager that runs on Windows, OS X, and Linux. It is 10-100x faster than conda, and pip itself, which is the standard Python package manager. The *uv* features include automatic environment management including installation and management of Python versions and dependency locking. +Install UV +^^^^^^^^^^^^^^ + +We recommend installing UV as an independent tool on your machine, separate from any existing package managers you may have such as conda or pip. + +For Windows users, run the following command in PowerShell to install *uv*. It does not require administrator privileges and installs *uv* for the current user only. +By default, uv is installed to ``~/.local/bin`` directory. Usually, this is ``C:/Users//.local/bin``. + +:: + + # Run the installer. Please review the printed message after installation. + powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" + + # Add uv to PATH + $env:PATH = "$env:USERPROFILE\.local\bin;$env:Path" + +If an agency wants to install *uv* globally for all users on Windows, run PowerShell as Administrator and run the following command. + +:: + + # Run the installer with a custom install directory (e.g., C:\shared\uv) that is accessible to all users + powershell -ExecutionPolicy ByPass -c {$env:UV_INSTALL_DIR = "C:\shared\uv";irm https://astral.sh/uv/install.ps1 | iex} + + # Add uv to PATH for all users (requires administrator privileges) + [Environment]::SetEnvironmentVariable("PATH", $env:PATH + ";C:\shared\uv", [EnvironmentVariableTarget]::Machine) + +For more instructions on installing *uv* on Windows, MacOS, or Linux, please visit https://docs.astral.sh/uv/getting-started/installation/. + +To verify that *uv* is installed correctly, open a new Command Prompt (not Anaconda Prompt) and run the following command. + +:: + + uv --version + .. note:: - There are two options for using *uv* to install ActivitySim. + If you already have *uv* installed from an older project and you encounter errors + such as + + :: + + error: Failed to parse uv.lock... missing field version... + + later in the process, you may need to update *uv* to the latest version by reinstalling it via the official + installation script: https://docs.astral.sh/uv/getting-started/installation/#standalone-installer. + You can check the version of *uv* you have installed by running + + :: + + uv --version + + + +Install ActivitySim with UV +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +There are two options to install ActivitySim using *uv*. -The first is to use *uv* to install an official ActivitySim release from the Python Package Index (PyPI). -The second is to use *uv* to install ActivitySim from a local directory, which should be the cloned ActivitySim repository. +The first is to use *uv* to install an official ActivitySim release from the Python Package Index (PyPI). +The second is to use *uv* to install ActivitySim from the source code repository and use the dependency lockfile. .. note:: - The first *uv* option is recommended for users who want to install ActivitySim from an official release and do not wish to change the Python code. + The first option (:ref:`Option 1: From PyPI`) is the quickest way to install ActivitySim from an official release and is recommended for users who do not wish to change the Python code. However, they may end up using different deep dependencies than those tested by the developers. - The second *uv* option is recommended for users who may want to customize the Python code, and who want to run ActivitySim + The second option (:ref:`Option 2: From Source with Lockfile`) is recommended for users who may want to customize the Python code, and/or who want to run ActivitySim exactly as it was tested by the developers using the dependency lockfile which results in the exact same deep dependencies. The steps involved are described as follows. -Option 1: Install ActivitySim from PyPI -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -(Note: This step may fail at the moment because the ActivitySim version available on PyPI has dependency conflicts. -This step should work when ActivitySim release ** which is built with *uv* is available on PyPI. -In the meantime, use Option 2 below to install ActivitySim from the lockfile.) - -1. Install *uv*. Instructions can be found -`here `_. +Option 1: From PyPI +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2. Create a new project and virtual environment to work from and add ActivitySim. (Warning: This approach is quickest -for getting started but does not rely on the lockfile to install dependencies so you may -end up with different versions. If you want to use the lockfile, see Option 2 below.) +You will use *uv* to create a project and virtual environment to work from and add ActivitySim. -Open a terminal, such as Command Prompt (note: not Anaconda Prompt), and run the following commands. +Open Command Prompt (not Anaconda Prompt), and run the following commands. :: + # create a new project directory and cd into it mkdir asim_project cd asim_project - echo 3.10 > .python-version # This sets the Python version to 3.10, which is currently used for ActivitySim development. - uv init + + # initialize a virtual environment + # This sets the Python version to 3.10, which is currently fully tested for ActivitySim development + uv init --python 3.10 + + # add ActivitySim package from the latest release on PyPI uv add activitysim -*uv* will create a new virtual environment within the `asim_project` project folder +*uv* will create a new virtual environment within the ``asim_project`` project folder and install ActivitySim and its dependencies. The virtual environment is a hidden folder -within the `asim_project` directory called `.venv` and operates the same way as Python's classic *venv*. +within the ``asim_project`` directory called ``.venv`` and operates the same way as Python's classic *venv*. You will notice +two new files created in the ``asim_project`` directory: ``pyproject.toml`` and ``uv.lock``. These files +are automatically created, updated, and used by *uv* to manage your ``asim_project`` project and its dependencies. +You can share these files with others to recreate the same environment for your ``asim_project`` project. For more guidance on sharing your working environment, +see the Common Q&A :ref:`How to share my working environment with others?` section below. + +By running the command ``uv add activitysim``, you install the official release of ActivitySim from PyPI and its direct dependencies +listed in ActivitySim's ``pyproject.toml`` file. This approach is the quickest +for getting started but it does not rely on ActivitySim's own lockfile to install deep dependencies so you may +end up with different versions of deep dependencies than those tested by ActivitySim developers. +If you want to ensure exact versions of ActivitySim's deep dependencies, you should install ActivitySim using Option 2: From Source with Lockfile. + +Option 2: From Source with Lockfile +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -3. Run an ActivitySim command using the following. +To install dependencies from the lockfile and run ActivitySim exactly how +its developers tested it, after installing *uv*, open Command Prompt, clone the ActivitySim project using Git. (If Git is not installed, +instructions can be found `here `_.) :: - uv run ... + git clone https://github.com/ActivitySim/activitysim.git + cd activitysim -For example, run the ActivitySim commandline using the following. -More information about the commandline interface is available in -the :ref:`Ways to Run the Model` section. +Run the ``uv sync --locked`` command to create a virtual environment using the lockfile. It will initialize a virtual environment within the ``activitysim`` directory +and install ActivitySim and all its dependencies exactly as specified in the ``uv.lock`` file. +The virtual environment is a hidden folder within the current directory called +``.venv`` and operates the same way as Python's classic *venv*. :: - uv run activitysim run -c configs -o output -d data + uv sync --locked + # or uv sync --locked --no-editable + +It is worth pointing out that by default, *uv* installs projects in +editable mode, such that changes to the source code are immediately reflected +in the environment. ``uv sync`` accepts a ``--no-editable`` +flag, which instructs *uv* to install the project in non-editable mode, +removing any dependency on the source code. +Also, ``uv sync`` automatically installs the dependencies listed in ``pyproject.toml`` +under ``dependencies`` under ``[project]``, and it also installs those listed +under ``dev`` under ``[dependency-groups]``. If you want to +skip the dependency groups entirely with a *uv* install (and only install those +that would install via ``pip`` from ``pypi``), use the ``--no-default-groups`` flag +with ``uv sync``. -Run ActivitySim from a Different Directory -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -If you want to run ActivitySim from a directory different than where the code lives, -use the `project` option to point *uv* to this project using relative paths: -:: +Which Option Should I Use? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ++--------------------------------------------------------------------------------+-----------+---------------------------+ +| If I want to ... | From PyPI | From Source with Lockfile | ++================================================================================+===========+===========================+ +| Install an official release of ActivitySim. | Yes | | ++--------------------------------------------------------------------------------+-----------+---------------------------+ +| Install a development version of ActivitySim. | | Yes | ++--------------------------------------------------------------------------------+-----------+---------------------------+ +| Install ActivitySim quickly to run models without changing the code. | Yes | | ++--------------------------------------------------------------------------------+-----------+---------------------------+ +| Do ActivitySim code development. | | Yes | ++--------------------------------------------------------------------------------+-----------+---------------------------+ +| Run ActivitySim with deep dependencies exactly as tested by the developers. | | Yes | ++--------------------------------------------------------------------------------+-----------+---------------------------+ - uv run --project relative/path/to/asim_project activitysim run -c configs -o output -d data +Run ActivitySim with UV +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -You could also activate the virtual environment created by *uv* and run ActivitySim from any directory. +Activate the virtual environment created by *uv*. This option is similar to using Python's classic venv or Conda env. :: + # cd into the project directory if not already there + ## if you used the From PyPI option + cd asim_project + ## if you used the From Source with Lockfile option + cd activitysim + + # Activate the virtual environment .venv\Scripts\activate -With this command, you have activated the virtual environment created by *uv* and can run ActivitySim commands from any directory. +Once the virtual environment is activated, you can run ActivitySim commands directly using the ``activitysim`` command. +For example, run the ActivitySim commandline using the following. More information about the commandline interface is available in +the :ref:`Ways to Run the Model` section. -For more on *uv*, visit https://docs.astral.sh/uv/. +:: -Option 2: Install ActivitySim from the lockfile -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + activitysim run -c configs -o output -d data -To install dependencies from the lockfile and run ActivitySim exactly how -its developers tested it, after installing *uv* clone the code repository -and then run code. +Alternatively, you can run ActivitySim commands directly using *uv* without activating the virtual environment. -1. Install *uv*. Instructions can be found -`here `_. (Skip -if already installed above. It only needs to be installed once per machine.) +:: -.. note:: - If you already have *uv* installed from an older project and you encounter errors - such as - :: + uv run activitysim run -c configs -o output -d data - error: Failed to parse uv.lock... missing field version... - - later in the process, you may need to update *uv* to the latest version by reinstalling it via the official - installation script: https://docs.astral.sh/uv/getting-started/installation/#standalone-installer. - You can check the version of *uv* you have installed by running - :: +Common Q&A +^^^^^^^^^^^^^^^^ +My travel demand model requires additional Python packages not included with ActivitySim. How do I add them? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +You can add additional packages to your *uv* project by using the ``uv add`` command. For example, to add the ``geopandas`` package, +run the following command within your existing *uv* project directory. - uv --version +:: -1. Clone the ActivitySim project using Git. (If Git is not installed, -instructions can be found `here `_.) + # cd into your project directory + cd asim_project + + # Add geopandas package + uv add geopandas + +This will add the package to your virtual environment and update the ``pyproject.toml`` and the ``uv.lock`` file to include the new package and its dependencies. + +If you envision having a version of Python packages that is different from the one used by ActivitySim, e.g., you need pandas 1.x for visualization (for some reason), +we recommend creating a separate *uv* project for your custom packages and managing them independently from ActivitySim. :: - git clone https://github.com/ActivitySim/activitysim.git - cd activitysim + # Open Command Prompt + mkdir viz_project + cd viz_project + uv init + uv add pandas==1.5.3 -3. Optionally create the virtual environment. This is created automatically -when running code in the next step, but manually syncing is an option too. -This step creates a hidden folder within the current directory called -`.venv` and operates the same way as Python's classic *venv*. (If you -want to install the project in a non-editable mode so that users on -your machine cannot accidentally change the source code, use the -`--no-editable` option.) +Many agencies use commercial software that have Python APIs and dependencies that may conflict with ActivitySim dependencies. +In such cases, we also recommend creating a separate *uv* project for the commercial software and managing them independently from ActivitySim. :: - uv sync --no-editable + # Open Command Prompt + mkdir emme_project + cd emme_project + uv init --python 2.7 + # Then copy the emme.pth file (provides EMME API handshakes) from the Emme installation directory to emme_project/.venv/Lib/site-packages/ -4. Run an ActivitySim command using the following. (This will automatically -create a virtual environment from the lockfile, if it does not already -exist.) +When having multiple *uv* projects, you can switch between them by activating the respective virtual environments. :: - uv run ... + # Activate visualization project + # Open Command Prompt + cd path\to\viz_project + .venv\Scripts\activate + # Deactivate visualization project + deactivate -It is worth pointing out that by default, *uv* installs projects in -editable mode, such that changes to the source code are immediately reflected -in the environment. `uv sync` and `uv run` both accept a `--no-editable` -flag, which instructs *uv* to install the project in non-editable mode, -removing any dependency on the source code. +How to share my working environment with others? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +You can share your working environment with others by sharing the ``uv.lock`` file and the ``pyproject.toml`` file located in your project directory (and ``.python-version`` file if it exists). +The ``uv.lock`` file contains the exact versions of all packages and dependencies used in your project. +Others can recreate the same environment by running the ``uv sync --locked`` command in a new project directory containing the shared files. -Also, `uv run` automatically installs the dependencies listed in `pyproject.toml` -under `dependencies` under `[project]`, and it also installs those listed -under `dev` under `[dependency-groups]`. If you want to -skip the dependency groups entirely with a *uv* install (and only install those -that would install via `pip` from 'pypi`), use the `--no-default-groups` flag -with `uv sync`. +:: + + # Initialize a new project directory + mkdir new_asim_project + cd new_asim_project + + # Copy .python-version file to new project directory (if exists) + copy path\to\shared\.python-version . + # Copy pyproject.toml file to new project directory + copy path\to\shared\pyproject.toml . + # Copy uv.lock file to new project directory + copy path\to\shared\uv.lock . + + # Recreate the same environment + uv sync --locked + +Can other users on the same server or machine use my already created virtual environment? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This is doable but it requires additional setup and admin rights - therefore we do not generally recommend it. We recommend following the practice in :ref:`How to share my working environment with others?`. + +If you'd still like to proceed, here are the recommended steps to follow (proceed with caution!): -Run ActivitySim from a Different Directory -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -If you want to run ActivitySim from a directory different than where the code lives, -use the `project` option to point *uv* to this project using relative paths: +1. Ensure that you installed UV globally (requires admin rights) on the server/machine for all users. :ref:`Install UV` section above provides instructions on how to do this. + +2. Assuming you installed UV globally in ``C:\shared\uv\``, ensure that all users have read and execute permissions to this directory. + +3. Create a directory under ``C:\shared\uv\`` to install Python globally for UV. For example, open Command Prompt, create a directory named ``uv_python`` under ``C:\shared\uv\``. :: - uv run --project relative/path/to/asim_project activitysim run -c configs -o output -d data + cd C:\shared\uv\ + mkdir uv_python +4. Under Environment Variables > System variables (requires Admin), create a new system environment variable named ``UV_PYTHON_INSTALL_DIR`` and set its value to the Python directory created in step 3 ``C:\shared\uv\uv_python\``. -You could also activate the virtual environment created by *uv* and run ActivitySim from any directory. +5. Run the following command to install Python globally for UV. This should install Python executables globally in the ``UV_PYTHON_INSTALL_DIR`` directory. :: - .venv\Scripts\activate + uv python install 3.10 + +6. Under Environment Variables > System variables (requires Admin), create a new system environment variable named ``UV_PYTHON`` and set its value to the ``python.exe`` created in step 5. + +7. Create a directory to host UV projects under ``C:\shared\uv\`` + +:: + + cd C:\shared\uv\ + mkdir uv_projects + cd uv_projects + +8. Create a new *uv* project and install ActivitySim using either :ref:`Option 1: From PyPI` or :ref:`Option 2: From Source with Lockfile` as described above. + +9. Ensure that all users have read and execute permissions to the shared uv directory. + +:: + + icacls C:\shared\uv /reset /T + +If I use the From PyPI option to install ActivitySim, would I run into dependency issues? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Using the :ref:`Option 1: From PyPI` option to install ActivitySim may result in different versions of deep dependencies than those tested by ActivitySim developers. +This is because the :ref:`Option 1: From PyPI` option installs only the direct dependencies listed in ActivitySim's ``pyproject.toml`` file, +and relies on *uv* to resolve and install the deep dependencies. It is likely that a newer version of ActivitySim deep dependencies +may cause compatibility issues. For example, see this recent update with ``numexpr``: https://github.com/pydata/numexpr/issues/540 -With this command, you have activated the virtual environment created by *uv* and can run ActivitySim commands from any directory. +When that happens, we recommend using the :ref:`Option 2: From Source with Lockfile` option to install ActivitySim, which ensures that +you are using the exact same deep dependencies as those tested by ActivitySim developers. In the meantime, you can also +report the compatibility issues to the ActivitySim development team via GitHub Issues, so that they can address them in future releases. -For more on *uv*, visit https://docs.astral.sh/uv/. \ No newline at end of file +If I want to use ``uv run`` to run ActivitySim commands, do I still need to activate the virtual environment? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +No, if you use ``uv run`` to run ActivitySim commands, you do not need to activate the virtual environment first. +However, you will need to call ``uv run`` in the project directory where the virtual environment is located. Also, like ``uv sync``, +``uv run`` automatically updates the lockfile and installs any missing dependencies before running the command. From c57e032c2d8ebfc7cbe968a1b21c7aecd3fe2ab7 Mon Sep 17 00:00:00 2001 From: Jeffrey Newman Date: Tue, 11 Nov 2025 13:50:54 -0600 Subject: [PATCH 26/34] DOCS: Add front page cards for supported and external model implementations (#1012) * Update front page of docs [makedocs] * formating [makedocs] * re-format [makedocs] * clean up [makedocs] * clarify language [makedocs] * add oregon --- docs/_static/theme_overrides.css | 4 ++++ docs/index.rst | 34 ++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/docs/_static/theme_overrides.css b/docs/_static/theme_overrides.css index 231ec5701..772d0e7eb 100644 --- a/docs/_static/theme_overrides.css +++ b/docs/_static/theme_overrides.css @@ -8,3 +8,7 @@ div.sd-card-header { font-weight: 800; var(--pst-font-family-base); } + +div.sd-card { + margin-bottom: 20px; +} diff --git a/docs/index.rst b/docs/index.rst index 421d776e7..6641997c8 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -33,6 +33,40 @@ the development and management of the ActivitySim is on the `project site `__, + our one-zone system prototype. This example is originally based on MTC's Travel Model One (TM1), + but has evolved to be a slightly different model. + - The `SANDAG Example `__, + our two-zone system model. Some effort has been made to keep it aligned + with SANDAG's model, but it is not an exact copy of SANDAG's production model. + + .. grid-item-card:: + + :fa:`square-arrow-up-right` |nbsp| |nbsp| Member Agency Models + + ^^^ + + Several consortium member agencies have open-sourced their ActivitySim + implementations. These open models may or may not be complete calibrated + tools. Unless clearly marked, users should not assume that mlinked models are + "official" implementations used for policy analysis; public agencies often + publish in-progress model development to foster collaboration and transparency. + Contact the agencies directly with questions. + + - `Puget Sound Regional Commission `__ (Seattle) + - `Atlanta Regional Commission `__ + - `Metropolitan Council `__ (Minneapolis-St. Paul) + - `Oregon Modeling Statewide Collaborative `__ + .. toctree:: :hidden: From 7e5202e9680bc6029eceade5954c04043749f5ec Mon Sep 17 00:00:00 2001 From: Jeffrey Newman Date: Tue, 11 Nov 2025 19:33:40 -0600 Subject: [PATCH 27/34] Patch sharrow sandag (#1009) * descriptive error * allow partial success in setting up skims - if there is no time period we should still be able to get time-agnostic values * comments for better context on why * require sharrow 2.15 * update lock file * blacken * update docstring * address whitespace --- activitysim/abm/models/trip_destination.py | 53 +++++++++++++++------- activitysim/core/simulate.py | 25 +++++++++- pyproject.toml | 2 +- uv.lock | 10 ++-- 4 files changed, 66 insertions(+), 24 deletions(-) diff --git a/activitysim/abm/models/trip_destination.py b/activitysim/abm/models/trip_destination.py index c3fffe013..853cfc35e 100644 --- a/activitysim/abm/models/trip_destination.py +++ b/activitysim/abm/models/trip_destination.py @@ -1496,23 +1496,42 @@ def run_trip_destination( for primary_purpose, trips_segment in nth_trips.groupby( "primary_purpose", observed=True ): - choices, destination_sample = choose_trip_destination( - state, - primary_purpose, - trips_segment, - alternatives, - tours_merged, - model_settings, - want_logsums, - want_sample_table, - size_term_matrix, - skim_hotel, - estimator, - chunk_size, - trace_label=tracing.extend_trace_label( - nth_trace_label, primary_purpose - ), - ) + try: + choices, destination_sample = choose_trip_destination( + state, + primary_purpose, + trips_segment, + alternatives, + tours_merged, + model_settings, + want_logsums, + want_sample_table, + size_term_matrix, + skim_hotel, + estimator, + chunk_size, + trace_label=tracing.extend_trace_label( + nth_trace_label, primary_purpose + ), + ) + except KeyError as err: + if err.args[0] == "purpose_index_num": + logger.error( + """ + + When using the trip destination model with sharrow, it is necessary + to set a value for `purpose_index_num` in the trip destination + annotate trips preprocessor. This allows for an optimized compiled + lookup of the size term from the array of size terms. The value of + `purpose_index_num` should be the integer column position in the size + matrix, with usual zero-based numpy indexing semantics (i.e. the first + column is zero). The preprocessor expression most likely needs to be + "size_terms.get_cols(df.purpose)" unless some unusual transform of + size terms has been employed. + + """ + ) + raise choices_list.append(choices) if want_sample_table: diff --git a/activitysim/core/simulate.py b/activitysim/core/simulate.py index e05781811..55caf050a 100644 --- a/activitysim/core/simulate.py +++ b/activitysim/core/simulate.py @@ -989,7 +989,7 @@ def to_array(x): # return utilities -def set_skim_wrapper_targets(df, skims): +def set_skim_wrapper_targets(df, skims, allow_partial_success: bool = True): """ Add the dataframe to the SkimWrapper object so that it can be dereferenced using the parameters of the skims object. @@ -1007,6 +1007,11 @@ def set_skim_wrapper_targets(df, skims): dataframe that comes back from interacting choosers with alternatives. See the skims module for more documentation on how the skims object is intended to be used. + allow_partial_success : bool, optional + If True (default), failures to set skim targets for some skim objects + (for example due to missing required columns in `df`) will be collected + and logged as warnings but will not raise an exception. If False, any + such failure will be raised immediately, preventing partial success. """ skims = ( @@ -1016,13 +1021,31 @@ def set_skim_wrapper_targets(df, skims): if isinstance(skims, dict) else [skims] ) + problems = [] # assume any object in skims can be treated as a skim for skim in skims: try: skim.set_df(df) except AttributeError: + # sometimes when passed as a dict, the skims have a few keys given as + # settings or constants, which are not actually "skim" objects and have + # no `set_df` attribute. This is fine and we just let them pass. pass + except AssertionError as e: + # An assertion error will get triggered if the columns of `df` are + # missing one of the required keys needed to look up values in the + # skims. This may not be a problem, if this particular set of skims + # is not actually used in this model component. So we'll warn about + # it but usually not raise a showstopping error. + problems.append(e) + if not allow_partial_success: + raise + + if problems: + # if problems were discovered, log them as warnings + for problem in problems: + logger.warning(str(problem)) # diff --git a/pyproject.toml b/pyproject.toml index e1fb5b5bc..a8fef9948 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,7 +26,7 @@ dependencies = [ "requests >= 2.7", "scikit-learn >= 1.2", "setuptools>=80.9.0", - "sharrow >= 2.9.1", + "sharrow>=2.15", "sparse", "tables >= 3.9", # pytables is tables in pypi "xarray >= 2024.05", diff --git a/uv.lock b/uv.lock index e3c68661f..f1ffb126d 100644 --- a/uv.lock +++ b/uv.lock @@ -1,5 +1,5 @@ version = 1 -revision = 3 +revision = 2 requires-python = ">=3.10" resolution-markers = [ "python_full_version >= '3.14'", @@ -121,7 +121,7 @@ requires-dist = [ { name = "requests", specifier = ">=2.7" }, { name = "scikit-learn", specifier = ">=1.2" }, { name = "setuptools", specifier = ">=80.9.0" }, - { name = "sharrow", specifier = ">=2.9.1" }, + { name = "sharrow", specifier = ">=2.15" }, { name = "sparse" }, { name = "tables", specifier = ">=3.9" }, { name = "xarray", specifier = ">=2024.5" }, @@ -5051,7 +5051,7 @@ wheels = [ [[package]] name = "sharrow" -version = "2.14.0" +version = "2.15.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "dask" }, @@ -5066,9 +5066,9 @@ dependencies = [ { name = "pyarrow" }, { name = "xarray" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/3d/ad/9fb609c6cfdd39fb976024fccd2dfa663a5310a4df1a392a80d21605b4cb/sharrow-2.14.0.tar.gz", hash = "sha256:d0d2afadd0b6a9f6c0b3ef6e602262c5f6c31bf33090865db555bae566217df4", size = 2138901, upload-time = "2025-05-29T14:17:12.878Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b1/2b/cd163ad3fc6ad48b650cd472bd161f99bcc7cc4befe2b1b04188084c9f9d/sharrow-2.15.0.tar.gz", hash = "sha256:d4e6881f8abfe0719b009963c491285d14c61226c64382ded16b3ce3d6f232fe", size = 2344691, upload-time = "2025-10-31T00:35:35.171Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/75/b9/b460fbaf2213f1406d1b5537f50852671e203e1ad92b06d5048f5a132471/sharrow-2.14.0-py3-none-any.whl", hash = "sha256:5879481139297708234f796158b9c81333d01d024aab078452ccd8753de88167", size = 2224745, upload-time = "2025-05-29T14:17:11.543Z" }, + { url = "https://files.pythonhosted.org/packages/81/93/ff7835535a690a38c9bb3142e3c5b4b2512de09230bf9a20456e6f3db06f/sharrow-2.15.0-py3-none-any.whl", hash = "sha256:8b76bbe1f1ac941711d151cd84b7bc4aec6d2b44d62b56c831ead79eb533aad0", size = 2241380, upload-time = "2025-10-31T00:35:33.473Z" }, ] [[package]] From 7401f5aecb420505e449abe857411f55833d3745 Mon Sep 17 00:00:00 2001 From: amarin <17020181+asiripanich@users.noreply.github.com> Date: Wed, 12 Nov 2025 12:38:25 +1100 Subject: [PATCH 28/34] fix(estimation): correct the participant_num assignment logic for estimation mode in joint tour participation (#1008) * fix(jtp): Correct the participant_num assignment logic for estimation mode in joint tour participation * fix(jtf): Handle missing PNUM column by selecting the first person in the household * style: blacken --- .../abm/models/joint_tour_frequency.py | 10 ++++++- .../abm/models/joint_tour_participation.py | 26 +++++++++++++------ 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/activitysim/abm/models/joint_tour_frequency.py b/activitysim/abm/models/joint_tour_frequency.py index cace98d7d..d2dc67bc8 100644 --- a/activitysim/abm/models/joint_tour_frequency.py +++ b/activitysim/abm/models/joint_tour_frequency.py @@ -137,7 +137,15 @@ def joint_tour_frequency( # - but we don't know the tour participants yet # - so we arbitrarily choose the first person in the household # - to be point person for the purpose of generating an index and setting origin - temp_point_persons = persons.loc[persons.PNUM == 1] + if "PNUM" in persons.columns: + temp_point_persons = persons.loc[persons.PNUM == 1] + else: + # if PNUM is not available, we can still get the first person in the household + temp_point_persons = ( + persons.sort_index() # ensure stable ordering + .groupby("household_id", as_index=False) + .first() + ) temp_point_persons["person_id"] = temp_point_persons.index temp_point_persons = temp_point_persons.set_index("household_id") temp_point_persons = temp_point_persons[["person_id", "home_zone_id"]] diff --git a/activitysim/abm/models/joint_tour_participation.py b/activitysim/abm/models/joint_tour_participation.py index e0d4d37fb..778ae0f44 100644 --- a/activitysim/abm/models/joint_tour_participation.py +++ b/activitysim/abm/models/joint_tour_participation.py @@ -452,14 +452,24 @@ def joint_tour_participation( PARTICIPANT_COLS = ["tour_id", "household_id", "person_id"] participants = candidates[participate][PARTICIPANT_COLS].copy() - # assign participant_num - # FIXME do we want something smarter than the participant with the lowest person_id? - participants["participant_num"] = ( - participants.sort_values(by=["tour_id", "person_id"]) - .groupby("tour_id") - .cumcount() - + 1 - ) + if estimator: + # In estimation mode, use participant_num from survey data to preserve consistency + # with the original survey data. ActivitySim treats participant_num=1 as the tour + # leader, so the joint tour in the tour table will be associated with the tour + # leader's person_id. We merge participant_num from survey data using the + # participant_id as the join key to ensure the correct tour leader is identified. + participants["participant_num"] = survey_participants_df.reindex( + participants.index + )["participant_num"] + else: + # assign participant_num + # FIXME do we want something smarter than the participant with the lowest person_id? + participants["participant_num"] = ( + participants.sort_values(by=["tour_id", "person_id"]) + .groupby("tour_id") + .cumcount() + + 1 + ) state.add_table("joint_tour_participants", participants) From 5963d038c5c05798ef061ea9ad469a62326e363c Mon Sep 17 00:00:00 2001 From: Joe Flood Date: Wed, 12 Nov 2025 01:39:14 +0000 Subject: [PATCH 29/34] Clean up command prompt logging with Sharrow turned on (#1014) * Demoted multiple repetitive logging messages in core.flow from "INFO" to "DEBUG" * Downgraded repetitive logging message in skim dataset --- activitysim/core/flow.py | 22 +++++++++++----------- activitysim/core/skim_dataset.py | 4 ++-- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/activitysim/core/flow.py b/activitysim/core/flow.py index 9bfff5816..e6771b6f4 100644 --- a/activitysim/core/flow.py +++ b/activitysim/core/flow.py @@ -51,7 +51,7 @@ @contextlib.contextmanager def logtime(tag, tag2=""): - logger.info(f"begin {tag} {tag2}") + logger.debug(f"begin {tag} {tag2}") t0 = time.time() try: yield @@ -59,7 +59,7 @@ def logtime(tag, tag2=""): logger.error(f"error in {tag} after {timedelta(seconds=time.time()-t0)} {tag2}") raise else: - logger.info(f"completed {tag} in {timedelta(seconds=time.time()-t0)} {tag2}") + logger.debug(f"completed {tag} in {timedelta(seconds=time.time()-t0)} {tag2}") class TimeLogger: @@ -271,11 +271,11 @@ def skims_mapping( primary_origin_col_name=None, predigitized_time_periods=False, ): - logger.info("loading skims_mapping") - logger.info(f"- orig_col_name: {orig_col_name}") - logger.info(f"- dest_col_name: {dest_col_name}") - logger.info(f"- stop_col_name: {stop_col_name}") - logger.info(f"- primary_origin_col_name: {primary_origin_col_name}") + logger.debug("loading skims_mapping") + logger.debug(f"- orig_col_name: {orig_col_name}") + logger.debug(f"- dest_col_name: {dest_col_name}") + logger.debug(f"- stop_col_name: {stop_col_name}") + logger.debug(f"- primary_origin_col_name: {primary_origin_col_name}") skim_dataset = state.get_injectable("skim_dataset") if zone_layer == "maz" or zone_layer is None: odim = "omaz" if "omaz" in skim_dataset.dims else "otaz" @@ -297,7 +297,7 @@ def skims_mapping( else: raise ValueError(f"unknown zone layer {zone_layer!r}") if zone_layer: - logger.info(f"- zone_layer: {zone_layer}") + logger.debug(f"- zone_layer: {zone_layer}") if ( orig_col_name is not None and dest_col_name is not None @@ -574,7 +574,7 @@ def _apply_filter(_dataset, renames: list): if choosers is None: logger.info(f"empty flow on {trace_label}") else: - logger.info(f"{len(choosers)} chooser rows on {trace_label}") + logger.debug(f"{len(choosers)} chooser rows on {trace_label}") flow_tree = sh.DataTree(df=[] if choosers is None else choosers) idx_name = choosers.index.name or "index" rename_dataset_cols = [ @@ -598,7 +598,7 @@ def _apply_filter(_dataset, renames: list): ) flow_tree.root_dataset = flow_tree.root_dataset # apply the filter else: - logger.info( + logger.debug( f"{len(choosers)} chooser rows and {len(interacts)} interact rows on {trace_label}" ) top = sh.dataset.from_named_objects( @@ -697,7 +697,7 @@ def _apply_filter(_dataset, renames: list): for i, v in extra_vars.items(): readme += f"\n - {i}: {v}" - logger.info(f"setting up sharrow flow {trace_label}") + logger.debug(f"setting up sharrow flow {trace_label}") extra_hash_data = () if zone_layer: extra_hash_data += (zone_layer,) diff --git a/activitysim/core/skim_dataset.py b/activitysim/core/skim_dataset.py index 1e359af3d..14c7ed862 100644 --- a/activitysim/core/skim_dataset.py +++ b/activitysim/core/skim_dataset.py @@ -253,7 +253,7 @@ def set_df(self, df): and np.issubdtype(df[self.time_key].dtype, np.integer) and df[self.time_key].max() < self.dataset.dims["time_period"] ): - logger.info(f"natural use for time_period={self.time_key}") + logger.debug(f"natural use for time_period={self.time_key}") positions["time_period"] = df[self.time_key] elif ( df[self.time_key].dtype == "category" @@ -261,7 +261,7 @@ def set_df(self, df): ): positions["time_period"] = df[self.time_key].cat.codes else: - logger.info(f"vectorize lookup for time_period={self.time_key}") + logger.debug(f"vectorize lookup for time_period={self.time_key}") positions["time_period"] = pd.Series( np.vectorize(self.time_map.get, "I")(df[self.time_key], 0), index=df.index, From b91a64a0070c7ef1c38523930b8bc8b5d6dabeb8 Mon Sep 17 00:00:00 2001 From: Jeffrey Newman Date: Tue, 2 Dec 2025 11:42:38 -0600 Subject: [PATCH 30/34] read back changes to the changelog in the documentation. (#1025) --- docs/dev-guide/changes.md | 97 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) diff --git a/docs/dev-guide/changes.md b/docs/dev-guide/changes.md index 360ab1026..2cd584b3c 100644 --- a/docs/dev-guide/changes.md +++ b/docs/dev-guide/changes.md @@ -5,6 +5,103 @@ major new features that may require modifications to existing model configuratio or code to utilize, as well as breaking changes that may cause existing model configurations or code to fail to run correctly. + +## Upcoming Changes + +This section describes changes that are implemented in current development +branch (i.e., the main branch on GitHub), but not yet released in a stable version +of ActivitySim. See below under the various version headings for changes in +released versions. + + +## v1.5.1 + +This release includes a handful of minor updates and fixes, as well as enhancements +to the ActivtySim documentation. Users should generally not expect any breaking +changes relative to v1.5.0, except that when running a simulation there will be a +significant reduction in logging messages displayed on screen and written to the run log. + + +## v1.5 + +This release includes most of the new features and enhancements developed as part +of the Phase 10 work. + +### Preprocessing & Annotation + +We have expanded preprocessing & annotation functionality, which is now standardized +in formatting and available on most model components. Existing model implementations +may need to make minor upgrades to model configuration files to conform with the new +standardized formatting. + +### Estimation Mode + +Estimation mode has been updated to work with Larch v6. This new version of Larch +is modernized and more stable across platforms, and is more consistent with ActivitySim +spec files (as both are now built on Sharrow). The overall workflow for re-estimating +model parameters is very similar to before, but users will need to use Larch v6 instead +of Larch v5. In addition, some new capabilities have been added for modifying model +specifications in Larch (instead of re-running ActivitySim). + +### Using UV for Dependency Management + +Beginning with version 1.5, ActivitySim uses [UV](https://uv.dev/) for dependency +management. UV is a modern dependency management tool that is designed to be +simple to use and easy to understand. See [Installing ActivitySim](Installing-ActivitySim) +for details on how to install ActivitySim using UV. + +### Skim Naming Conflict Resolution + +The SkimDataset structure (required when using sharrow, optional in legacy mode) +requires every skim variable to have a unique name. It also merges OMX variables +based on time period, so that e.g. `BIKETIME__AM` and `BIKETIME__PM`, which would +be 2-d arrays in the OMX file, become just two different parts of a 3-d array +called `BIKETIME` in the SkimDataset. This is problematic when the skims also +contain a 2-d array called `BIKETIME`, as that has no temporal dimension, and it +gets loaded into a 2-d array in the SkimDataset, with the same name as the 3-d array, +and thus one is overwritten and lost. + +ActivitySim now includes a skims input check to identify this overwriting condition, +and raise an error if it is happening, so that the user can correct the condition +via (1) the `omx_ignore_patterns` setting, (2) revising the skim generation process +to not create the overlapping named skims in the file in the first place, +or (3) renaming one or both skims if the users actually wants both skims variables +in the model. The error message generated includes a link to instructions and +discussion of these alternatives. + +### Settings Checker + +A new settings checker has been added to validate model configuration files +before running the model. This tool checks for common configuration errors, +such as missing required settings, incorrect data types, and invalid values. +This can help users identify and fix configuration issues before running +the model, which can save time and effort. In prior versions, configuration +errors would often only be discovered when the model was run, which could +lead to long run times before the error was encountered. + +### Expression Profiling (legacy mode only) + +ActivitySim now includes a new performance profiling feature for expression evaluation +in the ActivitySim framework. The feature allows developers to track and log the +runtime of individual expressions, providing insights into potential bottlenecks +in complex models. Key changes include the integration of a performance timer, +updates to various core functions to support profiling, and new configuration +settings for controlling profiling behavior. +See [Expression Profiling](Expression-Profiling) for details. + +### Telecommute Status Model + +A new telecommute status model component has been added to ActivitySim. This component +models the telecommute status of workers, which can be used to determine +whether a worker telecommutes full-time, part-time, or not at all. A simple +implementation of the telecommute status model can be based on the worker's telecommute +frequency. For example, if a worker telecommutes 4 days a week, then there is +a 80% probability for them to telecommute on the simulation day. The telecommute +status model software can accommodate more complex model forms if needed. An example +telecommute status model specification can be found in +[ActivitySim/sandag-abm3-example#30](https://github.com/ActivitySim/sandag-abm3-example/pull/30). + + ## v1.4 ### Improved Estimation Mode From 3b597256a1e442502754322624f93b012c000421 Mon Sep 17 00:00:00 2001 From: David Hensle <51132108+dhensle@users.noreply.github.com> Date: Tue, 2 Dec 2025 15:22:42 -0800 Subject: [PATCH 31/34] Trip Scheduling Choice -- Same Results Single Process and Multi-Process (#1005) * single process run with * ensured schedule order when generating alternatives * trip scheduling choice test fix * scheduling choice fix with linting * trip departture choice test fix * deleted extra outputs folder * restoring deleted arc test files * deleting extra added files * more file cleanup * removing arc from CI test list * improved testing (#10) * improved testing * blacken * stable sorting * blacken * addressing review comments --------- Co-authored-by: juangacosta Co-authored-by: Jeffrey Newman --- .../abm/models/trip_scheduling_choice.py | 20 +- .../configs_test_misc/network_los.yaml | 14 + .../configs_test_misc/settings_60_min.yaml | 9 + .../abm/test/test_misc/data/z1_taz_skims.omx | Bin 0 -> 3674745 bytes .../test_misc/test_trip_departure_choice.py | 341 ++++++------ .../test_misc/test_trip_scheduling_choice.py | 486 +++++++++++------- activitysim/core/test/test_util.py | 4 +- .../prototype_arc/configs/settings.yaml | 9 +- .../configs/trip_scheduling_choice.yaml | 8 +- .../prototype_arc/test/output/.gitignore | 7 - .../test/output/cache/.gitignore | 1 - .../test/output/trace/.gitignore | 3 - .../examples/prototype_arc/test/simulation.py | 0 13 files changed, 521 insertions(+), 381 deletions(-) create mode 100644 activitysim/abm/test/test_misc/configs_test_misc/network_los.yaml create mode 100644 activitysim/abm/test/test_misc/configs_test_misc/settings_60_min.yaml create mode 100644 activitysim/abm/test/test_misc/data/z1_taz_skims.omx delete mode 100644 activitysim/examples/prototype_arc/test/output/.gitignore delete mode 100644 activitysim/examples/prototype_arc/test/output/cache/.gitignore delete mode 100644 activitysim/examples/prototype_arc/test/output/trace/.gitignore mode change 100755 => 100644 activitysim/examples/prototype_arc/test/simulation.py diff --git a/activitysim/abm/models/trip_scheduling_choice.py b/activitysim/abm/models/trip_scheduling_choice.py index 510d4ece8..81d908ef1 100644 --- a/activitysim/abm/models/trip_scheduling_choice.py +++ b/activitysim/abm/models/trip_scheduling_choice.py @@ -18,6 +18,7 @@ PreprocessorSettings, PydanticReadable, ) +from activitysim.core.configuration.logit import LogitComponentSettings from activitysim.core.interaction_sample_simulate import _interaction_sample_simulate from activitysim.core.skim_dataset import SkimDataset from activitysim.core.skim_dictionary import SkimDict @@ -81,6 +82,8 @@ def generate_schedule_alternatives(tours): schedules = pd.concat([no_stops, one_way, two_way], sort=True) schedules[SCHEDULE_ID] = np.arange(1, schedules.shape[0] + 1) + # this sort is necessary to keep single process and multiprocess results the same! + schedules.sort_values(by=["tour_id", SCHEDULE_ID], inplace=True) return schedules @@ -207,9 +210,7 @@ def get_spec_for_segment( :return: array of utility equations """ - omnibus_spec = state.filesystem.read_model_spec( - file_name=model_settings.SPECIFICATION - ) + omnibus_spec = state.filesystem.read_model_spec(file_name=model_settings.SPEC) spec = omnibus_spec[[segment]] @@ -344,21 +345,12 @@ def run_trip_scheduling_choice( return tours -class TripSchedulingChoiceSettings(PydanticReadable, extra="forbid"): +class TripSchedulingChoiceSettings(LogitComponentSettings, extra="forbid"): """ Settings for the `trip_scheduling_choice` component. """ - PREPROCESSOR: PreprocessorSettings | None = None - """Setting for the preprocessor.""" - alts_preprocessor: PreprocessorSettings | None = None - """Setting for the alternatives preprocessor.""" - - SPECIFICATION: str - """file name of specification file""" - - compute_settings: ComputeSettings = ComputeSettings() - """Compute settings for this component.""" + pass @workflow.step diff --git a/activitysim/abm/test/test_misc/configs_test_misc/network_los.yaml b/activitysim/abm/test/test_misc/configs_test_misc/network_los.yaml new file mode 100644 index 000000000..391125a38 --- /dev/null +++ b/activitysim/abm/test/test_misc/configs_test_misc/network_los.yaml @@ -0,0 +1,14 @@ +# read cached skims (using numpy memmap) from output directory (memmap is faster than omx ) +read_skim_cache: False +# write memmapped cached skims to output directory after reading from omx, for use in subsequent runs +write_skim_cache: True + +zone_system: 1 + +taz_skims: skims.omx + +skim_time_periods: + time_window: 1440 + period_minutes: 60 + periods: [0, 3, 5, 9, 14, 18, 24] # 3=3:00-3:59, 5=5:00-5:59, 9=9:00-9:59, 14=2:00-2:59, 18=6:00-6:59 + labels: ['EA', 'EA', 'AM', 'MD', 'PM', 'EV'] \ No newline at end of file diff --git a/activitysim/abm/test/test_misc/configs_test_misc/settings_60_min.yaml b/activitysim/abm/test/test_misc/configs_test_misc/settings_60_min.yaml new file mode 100644 index 000000000..a9ca5a081 --- /dev/null +++ b/activitysim/abm/test/test_misc/configs_test_misc/settings_60_min.yaml @@ -0,0 +1,9 @@ +zone_system: 1 + +taz_skims: z1_taz_skims.omx + +skim_time_periods: + time_window: 1440 + period_minutes: 60 + periods: [0, 6, 11, 16, 20, 24] + labels: ['EA', 'AM', 'MD', 'PM', 'EV'] diff --git a/activitysim/abm/test/test_misc/data/z1_taz_skims.omx b/activitysim/abm/test/test_misc/data/z1_taz_skims.omx new file mode 100644 index 0000000000000000000000000000000000000000..18c6dc4408eeb1957945567d0870afdee3dd96f1 GIT binary patch literal 3674745 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ₕ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%0DebvT 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 P(wAhC&urFdbn;A%pQmNE%?b*7BP*OL?W}4$ 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

?aI@fz4sL} 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

6uARp_NASG&aT+8d~ovi$aI6U#TU3S&WSh z5gQK}Z4X!DZzisxV4v0Fz1OTaHBBPM#4(zhtIFMKTastrP&sifM2xQL_=p|4WqN_y z@>8~p9*`h)OXUYRJ?X0Slum5{k$U(eA}JUjEa&7WoFO5V=#FyocA3|bxxVyX>vDd5 zRAe6l4Fc`KTPQPYInK^4{H=CmsJ`Ee2TA*D}y;$A+U@AW;1XG1&~RwBwIZS_J?4ZmB*_i0Zb6mvorFDX`gcgGzH3s=l#dNnvK4a2kj-k6_ zgZC^~t7cJQP@`~;?FpGkwvxe=dNYmUu|IR*!q#>lFw@6Bij<1n2 z>}At+VkvaIS1Pm5KBREpWYwpCKod(xA;dTM9OWVryM&!^zhY&h)$7;{BlRpRZ6mrE zYEL;Ok#WiZt{Iu&gr0Efs@c?YL-h=C(y@~EHjZW$u84bW;>4bY@*4%SwehnfR?NAo zR*ZK^xf5PDA88O_a3&UgVRd1ZofiC}3+=e(JI#7j`xvv7;#wqL z(937pFFx1gu~isRZsV*RyO}9lJ}2T8;dtXU_9Y0Djh%u@hhYG7qHgxQM2I;4sNL~a zR+Q1CRBaBF)R{?|Kp*3gF#aOdx zS(-kZ$AGYhA0xl60K*=mw4lW;vAo&88~YXah(n>p^UBE$B z9(uJc<`hgbX)^5NJLEmoVNU#IzQy1iVW-CV3#^Wr_7 z%;8Qpx~CWGJm33ddG2NiR&F}&ZN%g?mUzbIN$s5#o>LI`y_=Muzs19bSYNpKU@shy zXjF09*n&_Ctq*%O7p&9158KOR7@Ep7@Qw?l>^m5Y8mx(v>8B=qHag&(x{Gzew2As@ zo$%F5566;gV%d3=nbf{x{rK&(EZ6S&AT^X1_}J6VHsU^>>V0-MPx0|6EY-fq25nlu zGglY~i^e%feX~39kBC{X>G{{-Qyoe55%2Je^B=-5i)wWAstL+tQ;iRkC@iv>F3c?u zzd-fk##_gIadrQXowtmtYsgHe6Q-t>{M z45RSwuy8iSch4F_S0 z#m+^iaf0d@Ltl5T-yOc!=fP`n5p|lS5~f|r*9wSkA&jp(BcBf{ zj+;pm)qN^C^eCxFS`NBYk;iPA_AMP5ESR4gGedC@EqlkaI8NNEz9E_b!!|z07nM-J zrE;ErOT%R5s9w-k7@w=np661Afz3_*tq7~2sn@Tjmt^NYF-m>q%)99&;YD2coS7PB z-ijb)EB`Lv4MT(=uV>KQFxuuq|E7gDGqr1gQ@UWz%PCFfUN&`+5jsT6q0%bla%Lgu z*udpH=WZ{^tGXy*OSz?V{w^_}AQjP`?jRe)SVgcrb+sqD@l>%jSZc=6Xlt6tJg> z?>;qkv^FNOeC^chP_?BjyEdP`9Gq9)R8K2XYT9#lP>eYL&U9+pS*az%zRawVTghpr zmjUJi&>YF`R#1De!{(_r{9e9hr6eQD(rZ*H$X|HLK#3z~$JUg4Cj6mFTa!blWNLcD zUPVnyMq9*dWIf=lFd@}TB$x|(5u?5eA*2FkK|e`%A&nk3|YSv z7}@+}(Kf8y*l4cr)&>~uIk!E&sq+x@n&-?eymF>jnY4Az<(}gp%zO~>ju*?A12&L^ z9@?6#Y>Y1J@DE^BwNK`O^jvuHA}->JoySA!FJT22?5_Dy7_?rncng`@m-%g9xDd}B z@AJ2OpSWINEJvu<1U

tP&miY(oP&`_s`gPX0RoyY!} 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 z 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 T4e3E(_vX`)B$W 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%0A^qhI6n{?vX#MtRODo6Ox z*%t}gdThhZKH#0|edEQ^rK;72>eI>}Y<6V&`B};|!31d*Gu{%+>q!~-SR!WXXrA&p zE=xnpGLNVlkWg&yq(%oM-$XG^%%pmMdfsb*6Lzc#Eefqq1*?lU&5(_suYlYFVIErm zum5T;;fG|8>}Y(Avhk0V0~Q!ntofxcI2ltKn~YiQZnNf4Nu(CrdEifs!K|oVdBk{X z@RY`#DzZi;_(92T&yOij{_XTy_6U&w98KZCMxa#FA zP}d6|Ma}Hg)?6JIO3TASVxnw&NCmI(1_|HAG*61LijtaFK`XMVL0QvMjzC1vUkE)3 z<5Ng*_nSzD4i(Rr;m+wYSLGtD%-zl+TpViB%b~o08#Y+c@d;OxrU~~_ri?KmPR)H0 z?UNVyoG(ZuX9UB;Iclput-mWrK&mFwl5skTA~*M*s0j;i)nqwbw!Sz2-R^tWAJ2Gc z;fx;P)zU=L7*X3}xB9||ms=GHo^V_S-fB{1T3e{o*mgC2^&b3uy&*l7uh%3K^N0H0 zHgAK6G`K~+__+TK-K=_J&E>y`4nnwOb=y8qo@}I+oh&5P_{4?4qB&VJ;&w|LZl!v1 z)WoO7jGN}<9SSJ5Cvf!2{m;^>xOfd)b4Hv}$2mcg!X&Pqt`LkUq85KYkEe9vSnAWf z3p5n9h_}P&0xIN5N%?2TP(@I5tD@SeL#|+tzG7f0aKp#mZFRN$b9t_o?~dVgkhM~W zvXk_CoRjH9yMLA#Kk<3Mv@%y-;R*GJnXvqdSFm+E3EW_E??b>n`~pr^6H#MWbr0OD zFW?X%;6|MDm(nbmqxIRiHsv@6?%HRb60IR0Tt`E<%FMM;3njZb^g4)?ANdvWrF;IJ zczu*E6v)nYu9$6xsn7KmQ~TJkv0(q+pL0HG|LbU>Wakp4R`Qx?f|MF>cfAi?Rpr@t zh`e>98QtXTlkpv2W9!qp3ZXyDRuzU1Oyd($)6!zzYjamy;)3r(`s>@OEx1JV0^O0E zrq$=z>E$aV}AtkETC*tOv2DFFQ%!6q4V3)hlj+vYsh} zo{kul;$&DRuXnIBl|CdIEETLZ{ndQ^L?2zUyA#II|HsN(FxAyH>)N=xySuwP0TSHZ2`<6i zonXP;LU4C?S-88y!d(Ij=j3_!*;aM-SJ_ox)%*olci-dgo;^m70B@X2x_MW_IVR`a z>p2r*@zIgqN!yd_=L(WgMA|p<%LBc6u5Ub?05VF!aiS8RUA~DCa`kE!#)w0X2<1BQ zU7OHF1jDj6W_9TlIe-(#QN5{E%0-?=^IhIleN~xDTUg+6IwxRtZTorPp^NXmk$bbf z<=%ui{HOtSofPO9VEeplmfN>?i(!zFeIxfiAjO;ae#0RuQ(;X#&hk)|*d5RMu&+erZj&NT^5T4n9c*9^q?waQcxcJU+*TG=e4bg zzk(;(K@gs?$E(uIj)QxZ{$Kl>kDT5BaPFzLjDHPct^Q?3U2=jeFe?-ps#OAh48zUo zTyWX^qIS#=BC~hT9;6^B;H&4L4K``g!DUe$&M_ef!e3F;V(z!mfWlTQT~(3QVRHCm zMDYoIOtJ7A#xpXLSG^w@6JKV~W$LSaTi22{K%YW0y1$W_X5HIT^nxXOI_N zJ{SyrO8*b9^un(d1bJ!Nv5QEI!yK4%#7e`%aiyo7x)O9SrlqQ7HsyQ;gkh?Y&elSK z{UW7>s5FhUW!DH)>txcoB?Q=x!C<}~;YsDY{KCOT`SNm>G2sv%89yd9 z`y7!+(xL?eflqu# zo*d>uLg>DDo-d9Vz~1Ld8jyi8zkajlw-IK_oUbG#Ra%Ct#T zx4J#usR})co&`T42@cKn8SVUv6V(N(xx5UwmY@P(Gsc|emtd}ZEU`)oE-c)T7!o#A zU6hjqFG8QlSkVm_!b^UfNcxO)Nk8KcyAV9DTpRUXc!=vwd_~g%7rL$Anyt||fXH~F zWb2cdS>+uT%=%RZys^NT(ZZt3NRwhi{Q0*Hp2G!5UiYb-3nIo(hd3ghQb)~fBy|X# z`Qmgq7B0p+6f7>V0*^#{y}N?YJml4Nx(pBSAl`RZ(v~?Y^{;=ccw`Xq5@g>KCx!3c zhAl8P9BqD5Me(3v`t)t9^AK)>3h6jTX@-r8AAiR&_{Vf8S5p7J;e~4|d(0X#O~M=D zS)%9yH$j&{-`gqKonX}XK~$H~D}<#C7D5H@&(&Ozs9;*LrjDU$#y#-8ZX(nbkQ7@- zSzi7KFTsu`NgeggH+v>l0;5o$05!iB_4F7L`4>~^zopq$b4C?}B3j_pl;a-ZZHVgX z20~fHWXR))ct+|JUMy-*hx~{|g|QVFM==7kn+#Gz85i5;w7r=F!_M$jTSJan*vLjd zYz^Kf&M>8B5H1(oP`@1tlKvy|r5J2pNZu#kl0lk5ZcVu%5flBXZ>In2EDJK7rQdGw z_19;?b>ZWd0??f#$ur~+d7`v&IE|@;aii{J zV#w9u=fthR>mgPgbXZYjOT)6@{m4nE!-7Bvyg{ey!aC%GWMVxH{-ghrYsr6dO@rl% z3=5Jy8Mv=NLhD+%^GKIA3`ut$BJeB*Nsq|T2{FnOnb2ZyQ4xpL~{Qnjx&A*ewgXAbC`iGp_R4n^H)dNIFjA0x`S1 z8T*i{XiMy>b|9hP(Uf}}HiZi!X{V{99$vgQwBZaH7GeWGnsezkaQwYfmmz1%(9c~s)3eR9{89s2fB0ITEpKDtY>>5JyKZ0g@Z^&C z`+aLQSN-{I^sA{&!;@Y2=2X5|E53tel6in(X-@h$*TR9heX7vYeanR?;`saWw{1lm z3y}(gmYo~>R4U$qrOMh@o;>-(u(ph8a((R%d=zvWj-J*)WnR>%Oy3>HSKTRHN?8oo#P&FyWg>zrZcZ;V?w3Zk!g%@%E^g|+V-oGj0xu56k9JscUoZIk$W68%Z@lzNs| z9~k}U{QM~!o_Y)?4j-)&Me=Y;;%_GzBLB{b{BxY)qpZWq$W(Jr-=Ux?ZGr}79ap#p z(k^yY*4@_ar+vt>H`u5u5;#~f$1F3<;X?*r7eiN(#+6oxBK$_9 zd5kB~5bKN@2;~%)pC5n8E-c+;ahIRNkN0zPp@L|BFtwonc}CuIyY#CMTQtI72 z72bnM`)e8%#uhES!;ny^BjeDM(M&1qEZ`Frxa(GswGrJP=)<+N?M*J4*FwXdvVE>x z>M@IT<}N^J+Z`a^ZT>4Ck*ndZ&QAHKr}QNoR?+&*#EkYrHfog$olByF*TK35dwT)l zj9leARl%dUW77(H==sbh3LQayad_m?(lCUMyu6v&F71$$r%^9E4N5tAqYc`iO4Kbg zkPGL;IJ+q}6iWYX7$_(21FwFiYPa_rnzD9;qP|fndq<;0?=C#9s1Wxo3xwp4DOguc zu`pySrK5ht>N}Omeb_#{>wJFDrDTCYY|}L1(M)QWQKo9e+qz}p{#_Hn7(1a_8^&dB zgq!7f`!JA2aVik1X3!>mV|Cw&j}y~w4R@laOz9ah2cU> zP`_7~{O>xtKaJltH53aA%hIcFWy^XrLj`w6lOTdE#(LF3D&2UUndSP0x3FP+S=$Or z8)f^7jY6NdZPjN7fLZcP;CK7d+81Ye84nZWrSTh%=CwrXCEUv-u_f56x|cbmJLec} z=%A3=&Kc+UV@)^@4o~Ts14!Vgbp$gGRQkvMqHg+ zvM22(rz2`J{%ubq2Gt!Z)}*_6cUO1iUIDG?!{OtB^+45bFrK0;D+ris-hA_K*;Y}z zNNxRxj#6LuA3E+Hg8$HQD6RFemXXnFf_a&%#?o^e#ds-yq55&(=W}kzG0;gwsVTlg z##GT+qs|b@b^#39Y^o_~6Q-?vxX6 zLn8_|90)tv=0S>ZVN>b1#TU_h{x+BF;BnHRa{J_fdypPmrVsBiJ<#4@zIot;OKT|> ztYykAe`$Bimz@F6bAfocy+HdGriiRJh>1~QSIX9wL)_hvHzXgfX3An*^|!-CaP&tE zh%kwQ{%M&aZ6-TyjS=+?mC_${ILy4#_<8*9&CHq%mMNSz2t({1pK$dw=t{Awut)b+ z@nx;Vq}bJ0{CuTlv}$2eZdUo484{@(pg~{A&O$&de_CEIe(B2KUU6+4&u!06c%5?` zryX86x=KmfYG|7YmMSzy&*33dC56W5UbJ6#;5pdJCXj3MZOXlFBIOycWO$GyTt{1e zbd42t4_-i`wR(`8+V`QvY3b3UXsKi~o?>U}4Pn%?sZ_TFfI)UPIJ{xhB3oO-DA3V@ zW~GreJwPq*H?Dw!J-X88%KC!-eRucADSsSJe8s4?z^4Djz+Vo|jwcI7lr(n8^bWBC zCL>%B0U0AY?7*F_qv%g%Nfp-FF_o<{xo@Bw*e&Mg*VSrL;f_=Pp)*ABhfd3{!gcMC zVTZQpDx9xT!^3_UBhNd+?%NqAhH>Z>WR7U5gj+4^Zy5C}20Q;QJiH6(2D;=sj-&q% zI<c9$CFoua-eg&pDR&VLggiQxb*$|?d}h%DXmV`8yp6d z5_O_PojqA|TW-M#lmq7o&62NCzxGAo9^&Q)>>d<5yW5}3m@TdjZr@INEbJ63#g@jvU@>Oo6fvrBHI*9A3pLh->wRg$acTe}srkSQa3MDX z8tT@Xdm&@|qmEbJjxNMB-vqKc)AX7I9bQcwiD0@x5v`-X?71s=j(?8-d!zJ70I~hSw2=qDUF3@ksR;ORMd?0VD3AVIOZ?h{`G_o- zxEcL#YmSrv?BNnsaWdjMCKNWoh`_#7h1x(!NLp}_!L8$;!fK6lE`_2(StUgyKxuVP z%Y*(}V+?m2Z5GG!)*|s?V|ja{c^{otFEGI7tGRe5ZvX|L>B1iWwNv# zQh{jw;g=O|bhAILRK~fn&0Z9-Wt?0`q_E%$M_shjta0i^GwV>$B!LO;q#whJYJI=? zmHhX#L}c_4)98Uz0-m`cC!q{H`pBXvs(wYLVS&ti6cG?j3Q#W8=qDtTnffP+sI^&# z?`doyw3;-SKJ_8hrjvn*b6GJ(jGl1zY*OZ`wgund14+bv;7sNJkfHSb+m_C1HN|!`kOryWw zKantvTxS`@9KFFtL@-gm+1ANdt3&B5>5|8gmR9L_kQ!}bSWgb2hm37>zau1&I`a(bGY*Nrfz9y2T;(b0E}YPU9=BqS6M<+#r!r zR2;&^igG~)Q3&#AlmzG`78=+3p;H|CnXw#Q)HkG2awv#d9M!%M0aI0Vw-G&^%6zQmvV>TUpwm9(x!+Ar zzrYFEU6~;o2pE~lNpF|(DT`HtDKIP9&zg!Q*sa9V_8QouR ziiFzhxglj`zj35iqd^2&A(rik6SLEo3+z`h5z&R&+k7pQ&-Z3a=JNW_Vh#_Hx|cMB zcOB%CRsI^xU93K*P6xw$tm-R9>v~K2-_lUue}yd13f7sbX>=PlhT>HbCMe^j#;tYx{!C)J-=^7UgoCM?Vif4i^) z2EXszZItzL*H*K=rcZ-jOrv$@l3{i-T}RuWnkhOxiEOdz5I~P&w*(j9aH;krH;Rx( zx_Brz8V>jMW@uLqne^nk`Fnc{n0fI@dGk@ut>|kv8pEH6?mDYNsyBmZWmq>J;CrWPVba zW9YGMLeK*qU)Z(RZ|P{7qOmvVeo;*U(MIOzR%K;n$%tl>GV{&J#FG@2{c5M*h?#R` zQ~*d5m!&V!*~OMGI=2bPPEM>!c!Pwiyh?;hXFB`y z@6%Y!?rb^ro^Y2_xuf|a-tHvk-C7*AY{^FD;zueR-PUHCQLDXv1@s{`gM z1c-w-+b|(rU#BbQ8t-9bE4SPj>t=2UUAH9)QC+Mv!v1#O|8xGj-^0OKIIw*x&C;?b zVD0yI>o%9*r1YdKWCLhtUWxVp^k<}W98?F?~fc{$z4&g-A`yg$__ zbXvPu>IiY@m_6nq2vU)elqZT6FL~P^y<^R7Bpl|y&Go$r^H})AFnu8uaM?b+IcD*S?YXh^CE2?-JH;tvO->04YBt*K_2uyPGc6I`Q1 zZ5*-s4NAaoBd**N%1)z1KNfpDJ|I<6nlw=cO%WjDruAVDnDg1XZ?)RbJMajI&z!uv zft6)I*U04bwZRKm8gU2buMe9a!x;4irxmKK`9A7a>BsF?wI|W3 z_xnZ}koDEkX3K}~v@m2>J@-mz{bGGc5GO7Vj;mZ_AG@%&6?X@XqprD&NkMd&q1@+M zL=%gK9V>#{`~=H4QSRP#KX)IrsGJn)~`Vylf1jR;5b zEvro#?92cs?^ZawiU`)jkf;208*V+wu2d)ahE??$E=AjF?Am-i(>{SBe6Fe|q~)*5 z&2pS*+GlXqYmln$P1s!yFtL44eG|0~OE@NNU~?xtP9efpy}`;EhR58v-X^@->9+To zOjbJUNckn|dV0O0JtutNwh@(f%oEco!phQ zOfU~3v4gTJShmH3-1SA{8tW4Wl=fMy=AMDbTx9-7ZRWwKRP+ zM<{A^!pgc5XcEDMkg&xrX+>JAlj{TJpr`Ldm|Od~v&}YGxd&;me`uNX+p3k29AR`o z`07KI{l1as{p*%`x|O{cVt_N_v%MR!8Tq6si6g#O>u|_QRNI_&Cj2n*kakW< ze~mC*2;FsSm9R{x6F5@^vcpUS27-#0*KSrns;vRl9Ixg$7dOFcx$`a7^)xTO^r@ni zna-y#=aNGerO7&9O)nOjdCHO=wAf&T+*KnB`B>zp=e?9|^d9|3`9l+y%!#1zYalQM zzZiTWALF|OyhZ7CD4za#Hft{X#e`glmO&g)fQum7)_EsT<(Gn&WIDkbs|HQb!O;3} zyWm138qrP)g4M9H8O9_m!$OtB*geuYY>RQ6Co2CAKOl78j3)9)g^2^mX)KK+FjhIN zwrA24{$;+jTz{0z#qIQr>~jifyMwuBvUY{R_m`RxkJPQuzdf*&d->#D9Py%EFR9b5 zm*v0i&_hB4tH*>7uYWq$8K>8x-2?r3JwmUYf$iFn>Ir6=7qaq^eO2m*Uj0o{1k!W& zbD{L3Ugr-$|0K?3Zk5~@Ys2DT>?T`3`3rtvI$8+A075=bR1leQ47OvL@}9zjT$mV? z{w^0-pR=Q9r~#~hI$c_aN*UHbHCRYAnJJ9Xi2fmqS++(vy^_;Je-L9lHItIda-YOL zzbqq-oW5Fc5`Xzv;RvRtc}kN5F+4C8&9+P~rQMuHq6F-$jfgk$0v!+ZVs3zEm_9QZ z9g3fO$n@P4Wf;^T(BGQpf=YSMBu}h40(CX=vf_)zspL#My|Hkhf^)C6qYicO6`gO+ z={YDM?gGn87Y~yWx?tjNWp+)idss1K@IC{r4ygbA1(J7!B3nyYJcZGm?UJ=l7}A-R zNzx>7T+oAZSsnfeefTxTvU{qoLgK)jI7P?8#_`3e=RxvPH|1CT_iHvP4AJSTcGY8d%^st=RM<{u`tV_*-l> zUTDVRno_YkZoO>e;k`AT^;qJ%p9;Q;N2Rqh7AIr=2KpNU$pYedUlr5=3AJH_zxc9y zG&M~mkTmd~!B~{|tYXzJ5nI(GZ)jeMf^l>;_>jd`2snsXP^;mS7?guzD#lE;zyMNY z%mCa<3+|~yt)-)82F5TQzS8o>sH#GNky^6x$}z@qQ+-UyL-Uk)Aed}|W^P__5F<3I zsiSi$Km%(q7p?(fjzhUs+%CSib$igEPor-jp9N!FLtT$v1DQ{**M)lcO*RFu%!hm{ zfK@x#V;`A^l&|?KLxnIAVLnwHPA@hecEOksJpOpS|BjKFpcFB7wx9+yd4(_yMW3fei&(iRDV@2RH~b8xYUlqmesm zdtP38x{^|NNx_$30D1y@}{9s zJlMMzJ}blH(jVjv0>g5f-BsoCAfW%j9$7#b?`xYYG5s9H3_8k@M@3_QDBdd@7oWNz zHNq`X$p)@t+0M>CwXDCN5M^J8s(=NXbb7PK6QmR-e zU5Iz;6lrEv_s^zzn+2^6Ktv0Z<}n#N<%)!Z3{Re50N{fZw{n%>7zNO$(8y>!8 zIjW(C;3}1j8)VHg#v9W)`N|pv5*IjM${9|IV>DQHn1VQr@jzM{F$v!IdvBnA8c&&A zvpezB;pW>73;>Kek__SwLiYC^A8N>HZ$r^*kGh=xlrYtdD@iK@-n&zQ2d~&1n5aW~ zkO16L#T0#<^qb_vs|h$6Bat3%TC zWRKpd)~L{Q!a27DeUML2yp4~jx0G$#>j0=m{3}cCPi;H?FKWBT!K`Xejnf zQ}l73o1w$@X07I%fXh*nvc8A^xZ5-r%ZBfklXUHM8{+c2_xxSO$LHSLRiBUY&A_08 z@w)3UKck2Uhc#D|gQp|b{@b!MLu;-}!}rvIW#8SRn_-2cfZOMekPt1_i1>h&cQkia zqxai5Tq9po)bp3UHXr}n+tdKxSCH{4_mxqSsps2hu|mLcJEY#XZi`i9-g78zvaq6<1xSe(&$)8Wme18drA}{!WX;z%I)V6BUE|64)MMx1TwTCEEeS z-M6zl>mdzK+XkJUj_2EkzUHSzY0@+-&7wk1jQVd)DMo@FKGRWpM*N`hN!0gcx$)GR zUgTWciC!1MEx`&BQQp^`VWaN$b5R~65QyIjr-pfs1DDwD;b>Q z^?Dz6mjy!xjJ!2Hgj;7D9DLUmoXa1_MXOmX8v!OmT0IHqsv!+E^|FCcl883res|OoY(1zJQ^cQUk?Oy zzE%;E;%hh0*j9JHRVP7yYiZ0je1fWczfbFar1rbAP4jp^Ule`ZUJtmr%j>b&xr;8Z zyWXHZTiSddRhwtk@4W91OZ#S3$$#@SJ>YWR(k*(slymfP)berHJT$aE)$?+xl&8h$ zVBm|f#piNFL;vP7y>YXUq!gF4-g@$Uw*86=8YS%k|Ay4l-R=pJC)%ZdI+P*ZbRI{! z3VXTC@_a+qemmH!_~@E)oA$fa+g(|C=MA`T%jOgg{PI&RMYi03bg5l<56%VfZ4xzdSa6P>=>t0urq^A1~DAWZTh8aPQGi{f&CmTM*M7bGY#=oP zfI>t7dfUW&d6=9a$s|}*X%yWOsK;LVMo8cwm6VjDXjwiVg_@VUAt(}u+SEhJf?ZsE z-SXD|cya@YiCOp}U3g#XwnDnO?A3X<-z_;X@G`APbQu#L-%`g3wuI6Ihf$*d ziTZ8D56r{S*K}RraS9Su$p7?l<*+Ov0h#cj1>{Z>@2coN-0TZWg2(Ulu+WEWMp-z} zu{ZnJyO6N@{+-*_`0L^EP2E*&Q#^?lEb3)eZiZqU=~mav;|QFPKoJSQ|Nimp$$(k} zZTuw3`~@W}3Q<;u7nZa%&*b|7y5H@}Y{t}RMpqK7bctdvpNp#vR{zo}Y4(s*nn$<4 z?_ueZlMoLQs>k7P%%m4->2O*=#LoxKjW>BdY>`(s`P@s_*Q)iFcp}vo!JN1C0mt>@ zo7JQoYrM5qKbz%hv*(4A1{W90-xCWfD+#pk-j}T5##Za$!|jeo`&hY&W*r{!F@rg3 zB}!+=lGjJG?Z_P-O7f*Z+IS)%KIiKhAgxkPW^A+FQ)R%W)yLo7J#;LBx_nX)z0N`a zDIbt<^v>UW2*7HcZp^*>?KHL5Qg7!2?88Nz_n+q7$c_l$2Ya2D1)&MJjP4STCNO}2 zr(#N4Kob(b5LoFCP(5$cV7`!YqxPy)wdkTL6Ws!m%56|m-?~z&Vw4q_YfO@;A|7K{ zf${56)}48=WxBFPR@u}zs)o*EIab(LfQ@2=PrB0Mxdpyg&qkBnsvb}Fgpi;-Z*FY) zI>fPVXKeQid_y8&iCV` zhZdt5VHLJxU1GC*!F*<4*G&?{-{sBPB?Ve%_qw>A5jD}$Egjt~q59ZoF}&Vc1}%Mk z3xxNJ(wW8LY+$`muqzvOTm-_cO|_%EXAl*gc=pKZp5(SEp>59 znnR}+EwiP1kg?&lpSldwlyNl+m(lDRqQb)K5QIw!9o9-E5u_SsAp3W)+8j_?9a?N3 zy?Mjdc214UeKs3MLw>?mFCOsqxs{5?kE`D=!TOwuYemxdlhF_iFF-reX9+_J!|@2_ zpx6>cE!qYQaibHf>@39KR+|m?zzB&yS{w)2_m8(#=HR*2b)C={B4v2-ZMr zGIgApbFMYy5;R!d>D0smhZ3jV$x>)oT_FktFSz%f0b08>!Tf}q3*;5xwcO&~ybm(` zGgJWI&2&}<*I?(ff?3is_;C+DZz6BU@ak|P{`YS_ z2txT@euu(Xj{TGh5KpjVX(4O!bJRCjWl*5ZF%v)dGKRk|GW?eEoli+aRpTuLV|4GIq{O znf^Fny8}uK4$-Amn8qc8qgy{YW5`OiYl`QX`%SqBO7PhI&6iS%5@&-P*=3EgIo-5; zjnl(wj<_&r-Y=ATD=c^V$RwXMzsjZjiL(8d;c|vu{{wMyiQQGN10A7AXJhLjr(hAR zA9r)(&PMzG%Jk;DupDCw7*&C3MJcpDBzFd#>?#L8IgpGDM$EZO6znPM$!fsVm{7l= z#{?1U@KG$NsCed%eJYT@dm#;5a70dGHDUHi{hO5aUC@2&I? z{eb5k{Iaf`n%J>1pLs{r&$gHE2UF+nf?b@i%meY+Gz02U_EoW{Fi{yk;j`#hWt)t_ zVLIBv)(`hrixc6$HGW{wT$T)>KiK8&2VUrE@Ra(J2%s8>GrV%mLBMw=RAC1)Kre1K zl2V_K&N1Ix@C4^XIWa4Wq@!$9Th~##5d1I3E-H(;ri+miz?*_M1>6{AQAi3eT16$|HCc(-vdR4-N z7qe$N|ZBX*1h&>L|`2q`#UJIMU z<9jl!Cd#l2pQ5s4s8f%TdYfh&N;Z?+4J0)_qNE_?<%>1RpLs%%Q$S*P)X;4{68EEO zE5iUWnsq8aydfp>3uP^1aHA^G?wV$3P(b)PeLd9O(`Q*Y{Sk@{lASL`tC|FYB0!<~ z$}Fdz&yszg;LT}@hFg1%VXrc!m65}Xq6aV7Bp^eo}B?6|bdeIU6hJ_pfbz+1JgQ*Bewibbp7Uv~{OftlrDO7(77Jf3YW^<3f?)Ba=v)G6aP3dO=@o(rV>yIK-Y^WPQ%Zv~c z4;J;p375-;Xf-*Z!I=RuHQB?up3HX%)v!|rnTWn>q;IGf+}0XzP%t;lQ6(hcZIu}6 zKChsFeN$ET_D_V{b=Lc2Y|a!trvHfqb&e=e!ZAA^8E5!Sz}Z=F{6b7UC4!W$GUiP7 z+$_H-t>dlL$Yg`m+aWzu=-PnLwM<)c7X_}Syw*O@QTSYjjPd-taxqDqF-H^Ib&aE- z6t=0zw-jn9BnHG5SgfL{uct#2gq;ZxTTeTVDy+2iBgl!tllk>mw;z;3*OaQd;E^ z#;v11JBgan=We%PMi%vLl0&Q0WtkoYu6RKDQu~*5m+NbqXPm7wfiwHz@`k976|{cv zyxE=D|83!l-TpG|O&qLv-u26j4h5FE8%d-lk9qtYVf-^5N@|D%!n-2*it~FSh&ZRK zz6IwArfXEt4L97&zND|qFidRr^7`)&M|~UP7{URurz!qSPL4ApgatlRO{+%=Kj~x` zpF8XZ-HZJz#0^Lt8%K_|1SDjfofoJ~h|Au@_+1G|>J91IqNnMg3U>#?yY| z(5b9f|A+^R{-iDCJLz@E!$QbNZdw^OXEZAs`jMuR~I7SIgE! zrsV9zVqH(c_C&rkK)hgoC1?b`U;zCqNIL}$jiH79i8DL3n_()F+50c1^Rd2l>c=?h zbPX)kz(3-gl9R&p+idxS6$S?Y%>tuB4MQ87gKjs8`L96tu#@C&r;!hu2X{zPbb=(3 zJy-b2mY90A_B_ftBk)Vg(^F}nIu?+4L-;cCTl3!c{@V1}W3-+%Fg~A4<{9bfEzugX z#*L5$cwO8?fQ(lBapk)NAJ1WzZJG}Hmg}xrMZ0xq$~k8<7vD+ z?++e^e)qSt%mKqJeICssFT)Qny@Y-jW7iL;B9A+7AkwY+gKe5`y_U;Eo)=@W715WApn$i88l%<6*X8Q2Ce4aP|7P1|7Ej~lX`A=8sTZF- zlI<=U+o!eRx+XIvp_@TB&%Kqk;e^6L8h_ZR_LkKq+S(W-GVBr&)nSq~)Sa?&SE=V@r?pgED((-N=v7P}I|J zofoC&t)e4OF^5?2QU_mMw5$2yZM>%$62-9R-6NvsBdY^cl6G`-^l?IeKmVJfgw_y!Vrz5WujBNK4ep=bN?{(7kta8tHv^td8HiofD}9G(R=8$E4&4Pf_uA4`dFV&{5ys)7~mto8diKZi_vzn@!9O)FvP zYWUdl3HZHPaPaL7?Gn$=Lq^1|ughtdd50rm3b+m_l9}G}$kJr)LjK!9qVFCwiqg5D>+6bZhp^xAG-^x?3v2g+$dmTj zN!@^QfH#!@A1^1TurnCqU9`>NzT??yjl2-Ty)Y|LR%S+8$LU*tTguZsW)(YoxaF*e z0LI|M}DEYFpdr$*3bMQtV^W{H^>8YusdfjG|Gt z;A(CkU}gsGoFFrUe^Z1oFJ{#?`gatC729#n77j zwWfFK#syakN2WwNe(ytx%iPwfOmuIQ*2H%gDK6b6M<*2!PpYS_9hs)2sK^o@Kd`%W zlW;J^X^ErQtT>fpAW)GR-Oyl(i-R)o`1l^pny1NVIn6Yd5?1Ka@F>0*##sdqM}TY8 z*193$<8tU@i8EE6LYGMpcC<$9X5!%O>+9-oL1%|T%E#7)));)08`74xej$oaLYQUs zv2BV+=!1kiFgNr-kLT@O>9#)-En6O)GX?GTlbgHg@m5PPfFEi)_PpZ4>-{=vX=9@Q z_rgL@!qdak-O&+97{#R3WBV?NR&nGYWhkZW26%Uol4hujP!cYB)58n#moKW31+7zE zkFfgmvN8%uq{xhbX#qZLi8qSP<-SS&ZL^c-81w=C8m#coqr00*b{m@hu-Dtn;Jk=} z@Tg(Sa^!C4j;CQ2$w0u4R%+LaiDgV%7YjA0c2i%Oj@uimQQeuG)_6RycC>VkY^bao~_VwQ2n=ubzq5 zS)h?^fKs>b)0WtBsTNhzefzmD3=REx=l7twF1&wuKYDHaRbYrTFlfL zr(o2WdwsNC>iOafTH@J<*umUA&dQsh&!d95+$&V^j2CX6%ICnyrDVP?BI6^f06N^y z?ggfb%kSGAm$ID=Qx-J}zS}g76)@B)dtg~grb1^#eJ|yN1q}YUu+YhaR3*UoPp?BZ zYseohX!{G$)xDQJ;e2Xj^VtFSnW(S%TFZ90zISY2chhs@3C8ZXz*R*)ihEo<42t_! z3yq~kyR64DG#LE`!x=%&lv=bngc`KtR)j}vg~q^2a1%F;a*}w7?zXw@qN?U3nB&vu zvY}?qey8}&If6{=^1`R(dnrwVf|79v zpK$OaEWB#fizSh4M0gSfc^4`S!!i(rv%#w{@7DHngac#A4abt6P6>-b5;q~-Np#={ zGXY%pS6C+N_mKszaE~T@Gd?{c&SGdo3ed^pI z6E4d!V3ul{ z^`ofYi5t+z(@(()^xtL$zRxhba?fQrK%#O{4;gWCkCWX|#^c8evgRMVO%X5jP2J3r z^-i_nmX$Nxcg4I=PGWzz58YLZCWoM2BAXs>L6Rp&qJ*AS<62NB!;;q$QW+Z-0b|J< znKYY1+VNIK;LDt-%dK$05>PCq#R7>&_vmDX{PjO?F+ACwFG?z%h8tHMVZnkg*aMJ& zW!H$T;_{-hljkx^g2a-z-M}2#LNWLOuU`Ba-rZzR|V1k22D zm6rG?5!~h~>@TLAEE1B47zUXlJ6%mgYNr!!F7$;Q816(vztw&yVF?Y)3i;OcDqlZw zp>mqXN9ZrQvI6z{I!xtjcI=AF=!8tZ@Ym2|CuQl+a}jdIK~qOz5Cd)0yctkiDKLqW zf=)|qa*co3mp+=%yXkStb3%&JVX)%1M>zGImSI5N)Qew}bK7T~6yqRhDI|VEHwCjs{rjMr~IL#@1T3Lml|M|;K1&LY=Am=O}Brpy6 zZ;|YqaycBTi@er=(1#`Q;1&`jN6OPhBKe#YVxRU6f9DL=d}BI&zm%SQ0ZWFXDw%un z5Bav{3`UrJMO6eSq53)pKy?HwTd1PAljvK?Uu*vKXEDyN{S-9RXG3r06>=M^tT$pG zVh4&pEOjR4xm*^L&83q|g3tp$JC*pQvXhTVTz+j1g7?F#c)S%0Z1bb}x#FG?93q*) zm~FODW!jwwobsy14O4bz=JHhKQz?en%34oXeW|vUNzjt+7boN74m*y5@DBn5Y~CAx z_U(2?^qRUw<4qErn0ATs7)mFJ&jsZDnm{a~JDQ}(IMA8m2SA>12bTKo4dH=_~`dc>Q7}tsnSrt8-j`I}quOEmanx z{+?{OLE51hD)>SvG$R^yM^@*z{eRedtDrd4Zd(+03+@s$xVr^{1$TE3?(Xg(xI+jQ z+}(qFaF@ol(Z;#G*7~>Ix~D4tdALuz>wD-Is^~Gt_;k!U$7km}0BV=0Qwms=kW2$P zcU{$1I@&eRhWP2z5f&(!iAMGpHn|`4BzCq~>&$aa=SWPu8~~FKYcp>0D}tO?V(5Y* za2+1ZtVJ67nx3Q#l-pEM&-jXQ0p9}+$-e^5y;aXf+eyoTzKc4nV^c-! zQ*EH)d+{~O>g8e*sR9%ZeRQqBw$68LXiXX02pL&yaId`jr6=iULrthvb2q#b$cxNK zwv;H2Aws0(4#Lq-Ayf=g3_YLpn>*)FzwySHM#@V_f+Gu!;GGi#fQ*~fn3R^WTBg@xfLEUcl2l;OuKyijL3#PpE zmYOb;V6WP4m5IlvrvzdzYljOwEYMci?QIOhKATp+cgOpU$MycF1RW`sD)9jGi_*q7 z;Hv{@O4C2!9`KT9tDDLd>C!Xx#AM_1wD4}>hOq-|Kf%GBk z{H3$basS%C@omR@Bm8FO^>Du4{hTnWJm!s)TC9VIz7gQ* z=WxAoJL^-u<_9e8JxJU7^=oocs=MC5-E05xC?zEY{-Eog!qy?+pm}IZNtb`?FgM_6sWy+~etA(O{LF^;y?nvTe9B(=kU{)w z*7fG|{#I|urm(ZwW|v>bdN{zrmIRO|(FhG+t=H-UIwyL2UGMHWDX)$4=f2z0+q-WnW$U~l-}lFrfnrw1k-x|=}D zmfg?ShE?5f&)1Ik_j~ip4kRmUzF*jg!wol&MV^4$OPxL-;oLljwWr6^F_w$0w~gmZ z!~TFcK`TzQxSnXRm7G2mHKTo$NMtf3FH|KbtR3 zR#uL{N>Id5)`SzUmy`GL{(YZ{9cPQ6Wgd~>OKI;>lH+S<5aeXmMFO*au0Y)4uV=mT zb$isD;O(HGRZUHz61>xq#Kak8#(evBr|ltD)~1HX?Uckp1l(t*?#`tzF2qj9*s)Cd zx^}Ug`)Qh*mX;;O#llGaQBhIzwQMa7)5JRZ+1>6wPEJnt_UDA}w;CH<5eEk+H@aMI zACKY3WWi?%nuEzF*7s{^gx>Y6q9p-*&9<%CPIp_dX z##3VWVxU^2Vm)`__T9Vao3(OD^6|cK6(Z`o{UT?3+-D0Ur{qjYa}j|uPH9s0a`jok z#5!Z{P<}Qy^KN6c1{$HWg2pPV0!fSJx@vSn)DPAH-79DGH<5&0f=9)16;5gn>H10W ztP_wHWjw#5&n0gwj2Fg?;}7-vdw&$@YO4Qy6c)nqPf^p)DTQYHc>$=33UhCFV?QpI z`P9YF+D7FV2RCoUiQ-(0nleLIxLTZH%~j~T89*;Raaf{t88m#{%th)>H7FJseZ1$) zKx?7FXEls6m7O@9_`%$qFn@BA@>}W^9kppgp1LG_%IF!#`a792wq2_Ln4gJkgmKu3 zr0ed)DuhBeU8LLF-sS-Tn;_7OxBdrA$^f;gV>gQ3cg2^5bhlyCIv5i1k)Ql5_RUo1Qd+yhdrNm*X`ZgjqwLn*=CEp&C+RT zO0$_3*LY~Nf@%oJeS$rXr^aJl8&A~Kcc+Nm5TTP36*nK!+JCewrc@-#2TOz0-2ci|dV|p6nA}j>)w^ z@1{a%nh8;FwKqCVaQvyLjo3o&fG}7lq>$;yQ(>g-JN1#@sg|(cr`gVnwMqe2qpq33 z)OEq*6hSteTA#~eW359NqeI6z<;BLDzth#hYWrK64g^Uz5bPLJ4rw7wzt?Bh^tOHv zokHum9~(MoojYb7XzWay*e6KVo{Z!4K1THOwOn()AUd1bJG^}Qy6<$1-)mSC6Pm?t z5CAnj{W^nA#1c+F8qE{wzKhXHU&Q#vT7Tc3jtfN)|M3(Nj*oQqWUvi;KL%A@)2I)F zeJ^aEmKcH0JXQ)36>BDnNWn<;5`vv5pkVToam;pG;75dZrU{f+(;BD3KOsBW&XMdg z3{@X0)#)E569|PI9WJ?e9@F3XMTM2J>nSKx>oTg3IT#*kb}AS_GA3RFf&7O$hpQcMD4VQ6Hfet-hw3Qzy$4Ij^G8 zxvlqng7W1heuTvupw#rH`u9rXu%Wvm~l zREJt5oprw75Y2D@c2Uw3MswR581|M`F>fPlJoqfbBw>Fv7h}Ga@=xSIDv3}0*E@5f zkS+AHFWRYv5lqPD<^`_1OUeARoP(Tj7HsB+MHzPdDp`B1ru>UWa)j(0Qf=LIbeIw; z;H{jC_`OAJdlLKI_z#Hro39_7DTfgvHqub}zDz4G3)=yG=jz&Z1U_JHmDVJ{uy0$3 z;t=(*tz)CpB2ix=u+rA+RasgOaVQPMgF}ZPg+=E;Xmp${^+T=9DH7>v>C(6VdW}Or zFZnau53;BHE9KyegHL4_@5vGppp=}*O74$)IE8*ZA!kDdRwFxO`fq35lR#0-;m=|> zk>LIvI|tf6+*WSPq(2TH#ANGK;)uisLBvw~d+Ma$tb<(NX8AsME0g3h zKo9Jha=5C+R(L3AWSmQ#wVLl4GYb;5(NB`7r~X#-$*N{3>Y!Htnj|7ZxN^MX;E}> zP97?Qxj%OEGf5rh@7QT6h`kNDw>05LNAIjdqLs#~`llTeA*8}yl*qBp(Q0?(@XOpU z9gPa8NFlwGQ^(ZVIn~1H-347F#dtG&RAwRc0fO&aQ@Oa6jme1UN0a*!kmcMc>lpFG zchdcpB%Si&UpQNXcFYT1Q7Qhp~bYMA1x`~D`JWt z@ZuWL0k7f8ERjGHEek@iWg!!)FI<<`4y%0=) zA3)NJ@nfs(8ZSmuG}bHn5ENt2pADcd%$G);lKC%o_Dx?JXLYaZUI#2}tkD)j!+VXU zZPEA}XJ4P6+YLEAY+Op3ZAkcEAI?@6Gbg%5gwJmTu4AS$yUQlr+-)AIy{%UO)RjKo zuX%Z#@Qr*ghB=d$Y%jowMGMR7{2}k5?g!hum`Ue@O`V*gUQEA(=KA`=qK_r>5B=4a z^#Lx z&=FXxn$OKWBK>`NdEk>(+27iqxeyT$9yYzdKeJs#_8fTb7fX%*p2s|CBKRY`s z?_To1+azBSS22^J9jF zKL!S5{^AbVl=4}_^})~to|D?O+E|NnkLn`C$9&a}c(d{d$x@v3I>?wPQZaSS?i9DVbS1+oWJsB9fDGN?`@Nl_{A*(zO z-j#LMIFd!i*ckXIH>^739Wnpz>zfRzGp=3#5=KPV)m`7ng|L~KSF(ZT-LRmu4gCz8 zKq?dskjjBa_ZE7rjm0DL1#a~MhCDV0d!GV8Gg1z&q#_&34{Ub+H-msY;Zz?Vk3D_H z{Fll*{njT(O?%b$W{{&pb?h@Pl<%2tC&|~-0V2E1Pp=BqpnZ12P+(Q}yiYX?sCHov*2i6l~-OO8ry46!bVoZ+;!dAi%$DoMkyqt8 z-iK4Q1#mK<=+1rH-VL`J`Dc2sN+EJ)h|;U zH|-n=dE9xiZXwINlR^#e9`oYJqPg7+KS{16c2VP#rYzd`8CymkNLP#-NV;Cgg~iKo zjV%ib`B@gE6W=0=P{&kJd;%`;prKdk2~4eFO+mQS~lKcq@DFWYhwbeSJX z7E%-x_)Me}8-3R`DzL$kkmpH*WtJ|m!f8{)H+AY-J1%e4H}|a066OW?2h)BM7e>YYQYz`UJdWgwgn7EWM#vu`Gv-Ywsnni2BMRb zIyxwX;3Bs!1D=zKTj4`29Z+yeN<*U_yfVxfqyzK%ir1p6j~_!^co}40V;fg3ni%qo zI`MkW@PjJ7YFX}$W3V8Zu~%OmW5EXf~%jT|)wei9-&^T%<@UGdl6v;Ml&NG)TFEKWFlv6JLQ;IKFVBcQ>{-^}7iM#%Ndnr*SrruiRj@p&7qH}`TaMs>h z9{ck>qnb4~;wmZ*GmyOQz3xvc89sET4_YbIYt@2upXdZv)p7@Nc;ORMiFppiA^BK3 z89{F6@anl79TcYRGT(84bq#eej&8}tqg$e%b_R`!ACy*&Yj`q^5RlkuiH9k(T}8k8 z$1EHQHVf+t{9_i5f(WgrFCbQGQenSj+_qE#|AoYdr0C^ZL<*;MDztvy5A0{*J;X$# z-<;CCbX?BG@!19Dg+sK4x{y>mw2qPVR5PjQWQXKM`ROlHFrwrfA@Y;?W8;+38lN1- zJW`qexNRa`KA$SL^dRG&mlMVw4&WUEL9kI1Wzi6$06aP}1wb-<2?(3J{lQc5%jQTY zd2;J7gGN9UCk$EEVD6A#679!B{#@F0YEey_-3oBbpQKo)V~ zh+xa2zE7pKI}HnA;sRTS&A=}3p?XH@jI8ZosEWC7=D6Xc2lhJj05yt51;|8abqcH! z>DC_i?knGTqB#uX_Dzzo?8R9{(i@+bQwcE%YeX2kSYnw#8Al-fHyPub$Z4m`GOPtI|RY`&~ zg|(+=#b-v3Z`x6j-rm7f)e4K7xzCS_V{sjzAKy=-`PCea>9WuEwW~qi{$~y52i#AI z#oE?dVaV^LI~#7;&>#YS1bX?WA`I;{MfQwp;ieQs3Rcyu=iy`m;OuH@)~hLLo6YUv z-%nw66x95pgN)*X)A5OqIeTSf0#};~LRkF8s9-m3KFX+C6I)a^i1kzz;RRFonH7gZ zq9eG7Hv~f>B}rR7^2Mv1k;2HcIL|zT-i-ogQqig`d60~EiFduarH=aw$ro5&*HF7o zw(SW=!vw>)Mbp*jvW>Jl#g-rf9eNEDk0q+Ek#ZqvU?D)xz4DTAr=OVYG~B~A7)KCK zrxnkMf*Ce~kX~$rNi4Fp1~>Sv?rZuRhOC^X5v)N4D?wH7*KkoAb3GuNZf{lH_^m!M z#B`S#KAzHtFQCn;Y9{@NKb@ti6n|nqQ(gX~iw@z$LsX>bFTG>@ka8gvrMZt`97HX6 zL%{7DBmg!KUlmne(HZ%ln^qH||G>lloFEUN+i_2CzfZcQ?^8YY*WibuJU3;2`BawP zT6OlAI##}>+!d$)#10NNga`sB>8S@e2H-; zR{tID9_%)x6eB%)f!cQGOamq#ut$)1$X249oyBE1WLoj_oHc!*G0H71wHav0U77=;D{%s;&eZh^lH2N)O1eN=%*}W?L z8~>2tD-uSP60ZV8`~`2Owgfe7X`Fk2xlOT{h&yTxm2r9}S-o0vR1j;w8H}8&v=}(v zdckZ3WGUcyr=?dJz3DoA~1vcKL!k^quE#&fAg95G}d``Oco~-Y) z$o5qix9YpsMF{<$RvL30K%l8Lyz|@uiMN|w)i>8y<|W^u_!R)K7v8Yd_W>mQu$z8v#KYk`)I2uppT_1OPR4o05GDh5X;S&)Ijhfq<3~T}`HKcb9i*)p6Ae7p2|p zJ|KIo)fam|liMc{$+;is_-6-b=XgDfwBvP{GNGcEa&fcusoY}|;in8dGm7}J5D+C5QH0ASjaun^Rk|T zJZUV~6zT5Rc(by*Z9NNM1xnQ{JXo2WWN9|*tVZvgLN6D;bzN7*fgR53vGZ=~@NJ#V=Ik$)Z<{8Ib2bh*&&*JS;4e0Lk8;$!|6RH=I*Vw2~0=0_L*I+$>saq%%yaYS4MTq$3X ztmBe4i|6g|(OPS*^#T6k)GZrt^Hg{#OGw1$o_60-Bx}uUQNQ`5w&>)KpIOuNw|*V= z)E+1(y72>sLh<>%kJiLWUd#mWg%RTXq`q&L$$)c9w-QaYlWrNIYBxW=+0z&ULNJSD-J9&9- zLQ_>NEEl}umBM4!rKtEg;^3fy-U18HeYuiZ>#1=$SKJZ>MFmOYd%88ohSf6`q@);* zDS1T^9$`YXo~^GU{2P2CPtW(u1%+5F!|s;O7Ij>_ya?@Zx=9E8X*(IJ{gsoyPi-wV zno7dM!`*wQ=blgdY#9|%<=j%4vy-r9C$@nR&>;X;el|a2Z}%HD8zlpwMLrTzkp`cg zvYCZ7I+SdyJp7ziR*%DmFL5M-?$6Uz%4=KCzY>fbZ5Izu`=0CJ4-_Vd1@Tdd`2>XK zTRFKJ@CMz__`4mgPmO$By*Ilq7s@6ZPD>}3R1^BE5?c?dvzK|eSG=x9?yRV$CiR!@ zKLv=yj!zg8`nXqcImzVmaR>|00+2aq^V&Jtp=ejGhKphj4lFHJRA<%(wC9gw;~Ee4 z6?%q;gJM{+laTTD5BQN?N=ovG&KMc>avT!GrhT^u@R;599nO4>ob6w)#IWN?!uoTl z-R!-e=Z0sFMuGs9;vw7jw$o^6WZ~9xx9F(o337S4hpsf?Ax2g=zXt{;8ByT+&n$CW z^LKZUWo0$z!JgaG=ii%*oxBK&=&;Z}Apli7-_Ok1!~_J^6O7EvKmCM5w|lyhXiJKB z2gVL?X{2aY4{*WvtN5h+H|B3`Gp{m#*noY@9Z~S+diSSRT&Xl5QhiD zB}GWZcSf(2zzJnpwdAOrI>m*Ep;{QLw#KO_O<9_w70b2oUT48{IR?slsw)XyHt&P9!;|9E#XqTPZhf-+~V*jdReG zq2SoUAAcGlYNIYlGH84^f+WV6V_R$2j{9K~t~O9im}D7(va3nB^OW>!g7MVKwrP}j(bwWaR*+MpUt!E+vR05doM^UTv@N8GOf>CUIsjZC9 zs#ZT4ND%!XermS{lWBSgd+0m9+%9@ScSGmEs#;OUQq73!Q~#_Spiz4mCHh1L_ooSM zUwb++4neX-+5rngog)2(n#Vpb6?1v`jI>Lk=U#pY+M5jKFRx}6pQ&x5l`tU>WM5El zER?_n44PG@J5@%8tsg#bby$qkxb2R+@@0*n@MbDrd3PsFq43?iKtlSs$ybA@rD#Ms znAH26?8^Oiz4j;A@9_(6=~)|H!&$LHa&NAFkUvV#{SPElE&h*4f;gP0<6A{zFT(N2Xut}%fsP+D!pFavbA(6)#>&BcY!Sv_Pa2W2#P}%}Tqu!GQ!drr_k6x7;+8$gQ0aAqVM>$ zH%__^zqnTPM~2P{>`!D-;}4=Aj4(_~tC3Q_&Tsj)nouL*_CS6l>F>;%mu|C=R=54h z=EXfM>Yp3QV9l6CXwj;d^1Izi1xjw5y;n3Lac5k|xR3GN1qmf>?}U{~}`QM-ng*btb?>RQu`mpF~7N|Gy@p5&xNc z*6cnu$Qmm_+apun&O?V?E42nuXsj6Hl=Eces9}zCotazWFgoyhy-XsE23s!&Sc&cW zJhd73FBt20DN4%5EL6cT4iyb;xJD~t{UhkyVjtC!M8s)1SvM!W)h}dT_7?KUWacQP6^{~yWtIv4#n8H<^zrPh&cN^ zo&*krI9*n>82pIoXz5CgJ+V<`E}Xmdw9`5_h7L*f>!usstIGhrswF3QhXr_)^sNxW zbnCsEEi5dMF14H7L(a_JPZOc}baI7AY&>m&=9(`|ufDe&-G&Rz)&mTt2u`DVIhmq! znV6a7E)PFCAtU*pBg^{uv}-X0_?mU6U#O;&#Si5P#|0#8`af~LVrO|q-fRQ>MRe zDc}e38 zy<*x61>iJ+Ho|?jwTWMV{gX`};U?`I;H&#sqrXpxBczQS?J4flGC6vAMV(bvPAL55 zi+k^DQV8XqgF*7C zh7TYe5^$ocP`Hy=jyFVCi%dYz)E$x`j;wKDZf@2eOqkg=zB;Ch(%oL=?z3%PbpYIL zFDFFI%xJhUM8(Hb0S<>7R_Si{PucC!w@T-~H0oB;eajB%HJ*EYBL9+;SMKPASTJu- zMu^eQ%bNgqwK;{(xpwxuWnja|TnN{PX_+$wXv^vd2XEqNd2sLPh>??>4(M#2d7?uC zeM_xD+3XH*THf#>uuu1BpV21Hd+~U_Le?OejqzH8I>D#)95yR}C+^@|qcQ*Xd*XuyN4h=kkE}WCr?uS68Ad1em%)@f7*Z_xNoZB8f-a#k+!p1Q+i8-az2%OO>Cj zq)7(`rZb|RsOU3YSA?2z?uCh2zT11lD-8!sRV&!IF}}vYktZ7RGi58rd@Y7lPRC-q zu)+D10|K>V5^@b3t8ZMmG^RERfju*V;!Qz|eS&yj$9TV|am60#&u?oyfFS1$LDNYZTgk$v*t0vRI~W%O}KS4 z_u861Efm`{HmWLVRj1j6C^kAk{pLcd=fbub_(m{^t&z^BP-&s0>>jA4o-bq5#Ld*S z4}(Cg-}E(SyODbec2|eEb|I6%ChYn&a9^6Dv>@Ezr0)aL`LD42ZH zmM79TiE@W=(=5xg9#O7l0@}=uf2vtq&bS@52`=vn3?X0G1a5Sr$q1aK34?7N;}k0W zC>lmN66XhQUDX;cTG1^lCGz%O8=G9@VH{#M7VbfvZ9##2J{5#7r3H)JlRN1?W`7Y8 z^S~(YFTUKf6hA)U5257O=pXBDejjJur^I2a_=7zmrf9S~mMv($W1!xt_eql<3!!d`CREN#{l~WwGoQXy5I2V(6wl&WQCZS1uORT_uhfs6YnhykETv4Yaakg?L2l28;L;%ePGv>p@f}|IwwHIp4JOHcp!9TvEl1Zhixtdk`T*@f@o5kDV-Rn2c*O6h1V}}wRWiNnP|K+A~cx) zya#)uPR*5Oq!A9-)S`t`Zrk`XBa>|IYvU0)FeWzmV$s)^GLXy{>nj>vg)iMgG&Mu^ zNJY&~S~tsocQPtF8B&&As;cDqsD)SFf9*9dr$}oiCfNVB$!bg_QVQy zNWF}APpxLBwClDO2_#BuyKh?J{BdCk_5-=Pc$ndT$(VqkqOQW?ZyBei2>Iq|5;~%i zee$F8kN2|f?_GksP{QCVoh7<$=wZ~}pS6SghlK2Zlh7DULP<}H`G$XyPzUy3Bm}M! z)`*8A9-f;TPRh zK?U|!DP65)WT*b^GN6m~2tSxli)$_CuURi5B)-`SB4Cebz}lN$*!J!Ib#M96&HU@j zfo3~4E;@Sp=qdj4xuFN1fYzBk+ZPqZ*>)Zc8UKup&h3_VD*3Lj^Xo+P=Sg4ZP7>@h zsXoBcRq3ifJ4Y;0k4)SPAZQK>Z9RH`Knb^x65fe(9s(Mt?)zK$r-`3bV}pgNM6K~8 z5+8KTI(Up!N0!AImdLQ@kmCC;$px(EX=IV*4`pQ? zab{#5y$U_IY;7bX7a!U4yj)KlOj&>;+V%0n0T-laB*Y2gf+%>imtjW{EoU;$Z&N-* zh#TGhIU5IlNmQlM-=v;cx1b5~<`gsMqVE9PH9VS+1u?CH}ZcJbC;Jz$!AJ z)6etNBf+~jLHunU-t+3TA@W;w7tx3v*M#fTs+tKOjcpETP&SDmb^}V^bo#yEZDqFC}-_J zO9)ANc>aZ+peQNw?0D1vz*o#pIk*YuFtriiSARWYUcDF-4(@VosS!1~Z)r&xD-i8H z^G-WQy9h+}2@kI}0AC^kTWR)09mkS3QaSV+TPVXU@+2@Vi8VH&A6z|4vVSHLr|?}D zOTp*DN!?lCP4-B{SnsptuQf@p zR_;Cc00TS!2^w*li8b^Cmv*CoNm!rG87qJ9U_{A)P9u>w-X@P}5UnSE{K0E2B2CMg zGPdOXx^QqBI@!K4emb3)1oi-yAj(pJbEwF*7iSbor~yo@R?*^61cIVWH%}DJW6-~~ zNK^-~j9(yD7j@u53xYdny8zi0EA{?V;eT&VAvF+l;s4&8+O96(hF|=a2;%v^@`Gvm zcf2+f)Oy7ps$PSZ1Wg&j4=PtIke3U%@Ppb+-t zQ92vo)$5xI`wo;oX-DT9LJ{*+z(v61!>~Ns7me~OU`(k7prDI*`xEsxsz z%ygwjdHMWkas->OZqcYv`Mb%K2qoKOuj1prFT6j|^gXn=za}!I>DzBLB@$I@0NI>6 zgd_@37|iS-ua)rQzlOQ+#cM}!jjB@_t6T7Ba4Zl(t%g~RDH9X=kZ6n*e#wB!F;ZvN zl*b|9ZNnaATQRTsK$mVRP2y6sRi%EiFIH5uo@1ld6Qy5Sx*H@n&x&r&xrPX`pQpEz z)Yyl#uh$e0^571tx^gg^)@|gkMsr{rj0_4M?&(L7YA$?I@UTcXg|W}h#yQ>9>dk28 z4Jm0^;Tpt74=xX)B&z3f-2UFSLn5G6`Ew5^Pjv&osaBW%?%kj=XKXF9#54xZzp*nd z!~k|!T}k{ndi}BWFigl2-GTUP*j^g>^~cxZvI8%g%u_(Uy2|;bZ*~lglI8_=)`sKaIf8#_a-&rGZ%OSAXI6B|TzC z(Y>!zH}m&kGdsFtRwp4+M?IozN&scZ#_t>U95vSPDbbH+TgEj01Kk&{mf?K9j)2_? zBibRP$&LX6K?#RNd{se&D!6#t@r9nSm^lE60I-Ae>OT8wuqJL@r8dD)WQ^u%DeS#f zB=}eSG1-+7sAQU6-v^WHPhsI{Cz)y2g{Lp0_O9tqg^){s`(<{5omYwJsJOGE*A#9- z3CJ))D{myKIJkDRAg4?-cd_5%_Q<6{^aaiW@36yAG=^88_6us<6T@7>$>J*2nV_QoaE z2j>to@LuCu0*K5c55ZkNeX`;+Any@bQ zey&x#iww!%AbJbk8LQ_FxouX{!m&Hc?6^QTPx#SBZ-wNAH+)rc+NvZ9AQ5^M9) z-p?%QP~TEXVrn3^*JjpkU@S3z(v3G+U$PNW*mn{OQmFY1w)zeC%#?iPwMy$P&NqtZ zcN-7d=M6zU*%$v$2&4Z}v2A(;d-X-APcv`v#M-D}kKNrDI^ZOY66KpDT<3rjMU^7! zVD{e-&K)E@{0$)+{QrP3);*4GAY|*y*6^S$s$NSZmJCxpub z2sik4B^Xp?<;cK4J)a9A1zp}ho^BbL0urnjPW;**%scQCY%F|riOA--vvkf9MCvL) zvX<8|MB#wTrMcqzBis56u^>l~H3tbxpLVUgMU_kW$;k?*&(%b8mP2$55O6SM$;FYi zV6V%2>6K~jk*71evvUpZw}@kD!5!jg4mh8s)rzy!)Wkp=7cXcLy(47H%2?G1m$-Z! zS+Cd7(9@fWjEsiJUm>I<>s0#8l90>&K_;PQP0N26}j%* zVC8}ZG^As<6#jH)>qA$gRa_p2=XY>Rp-ux!FQD(ca7|4zg8W27`RaPmB|XYz9*#Ze zuBmN#b+!Fb@&0mtwnUNbzPejD;Lf#G&;9Oh{MxdbUome((Z61AW#q!2>tQ$jVqD?% zc6r&kt)t!NbqyO2p6t?=?WRA?*c5jRBQ7k)&hecEiJm-u8^B46XzD&Sl)@mdW^p;x z9)WsSfIY|WcHT8SjRyI_D$y_5Lxbke=a%A42QpGJ9=rRl0M{Gw`gO9KC)C-1^>ec3 ztO@s3(B_lW88VX6WAS#gAA*13M{xR-AHtahV7g(axAc* zyq^e+ML{<=2b1};0dM}gl)M({g@rLm01&k23-$QSK!icUL*)%*Gxs<=;~U>$4nXSW z`uch^;37MMmX;QeOgMe=;Xwi)95-)g6WWVc`>PSh3{U%)u_y5ch6Wjk8{e5cGKF%n;!e$jx`%FUKk9MHlGzR$h`6e|)b4 zq=V^tYG)0g^`+etVCz}E6zPOdxcWW%=}#Bp*9&ml#jpwL4)C5csav*Q9yh$C3C;H1 zH2v4X?k$P?Hu-Y9D_SaYL8=az>w&>BMIwdupg1OS^2o zm_SJYahw!=djE${@9=Sc98n&SkW_w4b0$*5z(b%LSEcDn_*JT>LZP%xnztm#)~W}S z*`v>mk1ZNXICrk%`Q!K({kekI*G6dS_|HkG)hG*Il8!49hU_2W2Fr_Q-lgft%zSOK z*2tVplpr0=-CrSaKH!XWqGD7z_?UCBuO`PxD;$2MkfdqI{-SE?Pr-K#NI5)noZ{D9 zoRzK)EjpjGfTA(_vjL=riBCu{yqECNu8ijyHvo2odThfEec`g`6xEJ}F2~W;U||8I zv9S%6!~TVj0fMLY2b{@y&sZ=%37Q|o048#SjukL0F_-U4bhZZ!;`?bK9XKavT9kT; z6)2*6O3CFD_#A2vX<7EFO39fql+sJ&d=sLSTYre<_p$wdz{6Yoe}t!e-jFjczGd!n zba;b&{cqQJ#w(>e&c(^E0wo_~DUB2P(T@drN=!`nF4>YjGCLl>9Vz`!caQdw|jgE;jc%{mG{Ks=6!tOI?+#FcQcx|lntoYc3AjDeB(jzPF$gp!e~~LKKtdC zkXmxf5TqJ9xXwk;AB1V^zSz#EPR7#2hmZ%;F~chbs6yIzL{f&4gthkW@oH~R*)3WV z#`y&cg>;=9bpgpnpQeVO*0PV4MN5+wBZ}2B1{VSqsT8uJj|8ulqcyPp0lm&W|Ch3L z-F8YZ{}h5k`=KmN(Wb}(C;yHL!w16O+!LQ?`RaznmuK|^#Lu(g*y2Majs;7v*RrFd z_I?d1ZCGC&%NB|TiBMUTuv>gW;Zx5E^p+@d)IdX5Hi3EV{~SHd zD@N*+364jJ;P6Tirc}{LxF+0*ASLhF zcb1Ig&wHY?hmo?CKdhuzIT_>+hTo%`E4rMaw7L-f;>E-*yUw3 zz%>-pXz(A(()dqh8S*)FzPengoM$8LKtYCijs60q;HSva!_eyiqb9JD#w79)*UUpc zLVha!c*Y#2`BR}{=R6r+TR>^2lyez4YLsIMQ=)%Eoy4AZVMR#dRF;B`YMo_KbVRJZ zTX1S!l|$j75P~n&_uh?k&dXk5;Ft4`DcuF9*Ddv|*8fx%hvL7ltkkhRtZu7$vig&p zti7w%YiDiLi@w>qmF$UEr+VK^VNIV|yV6Muj$n)V;E{?zG>fVrBz81Wlvc`C|e#gW1R2(&H0`4`JMB-zdP=w>ipo1AL(kt2XW7IEl6ldRGZ6Hd+`Fx zChZjYmx=t*=PLabWRr?aqd&5h2x~?quR6KVI(x*H-z6(BaF3PN^#=85+xXGJ8)w%% zN;=^eQkw9*&Uzr}+wd~m71J!-w%G@6k9`vu80bIfmg^M(CGp;S(sl#0-JzwX6uEBm z;;ZkTt$aCLVDxN`$im3)RyJiOTW=1nGk#Iyf8o28m4kx=XVHqjxBA>i*aS6%wW=bc z&o>>P?|;7OcGLMJ5yNt)%md8#+n1Wf7@NB%Rn=s8$OVftztniFEqu4@s(|Z-0M46* z^WBU4w}*9^>xHk(5OTfjwOWw#=HTeD`GfPT&Dzfl53{c_+|%13?O1qBwX&dF+S;8v z&0DP{mRnP*O{Oa9`mIwl|K|VC*rsT-Usk!}8N;8{(wj@OL3-&W+m5E=N}m%ix88l) zWV?q;yUfh%()})D18ds~W}E2&@n-L5r`-rUv^ezDzVHjXnyfFad3oXVg`&mppRKvC zXnnc8!cW0Qpt7K>j43>(UHg^!mkpu@M{JTSnI#gx?7MD;`{Ae(F1+IjcTvtCi73UdE}}MSE}?{E^kccL5_W9JVfVTYuuK&%IM;3QF$U-rSSI zB)2H?%iZJi&$sZp=APU3bdC0|<%#lgO0Hg+_jlrculbTa7Tb3<1RPy<=>66m^A9B* zS~lZT<&J?1o#HHrh2D{9$yx4P4lAJi3f))ZL=c;o_4w3`MaQRWtKAh ztn=D}`{D6rAFcdTrMObbJ=P(iK>P2VsE^W(w$YEwU6fhTi7S=vh?rF9uguQy+s(UY zTJw}A3pegiS>;xxF!T6le+#vT+ZXX^>#9#NPVSVtK>x7)t`WnD&w_W%*iHn#>{xSm zRbSI_y2h8P@Af(Vuq+&mlL*;5-MlaLs&MCERYsv#ez6+6tf@d$c}YZc#+R2dauKp7 z$}7ta8#4WvdHdZLZC>XGq3nY%7QArVxcJuYR1aZoi}1Y>Yec;x4$LZ26K736`*3%Q+ipIS zH#G{=OkQqFc;deIGK1cy-I_D_U(c60Pvd>UlzooPrk6a|<}j_M58nP`hmL?rtrDH6 zeA4q-^UZWt%=%b-ZuXwN%4V#O86P&Y373dnXcwKYp-^~n&8>2doY5Ui*5ABI%XdGn zEGk5AS=2Fq-lFyEck3^wTf^SCb@v*Zj{P>q4h6SVRUDptI4|*ce{K5O_O|EA_Q$Fp8?)Xoh!mS3#1DN9WG<#LJj zCzZ0~5^FP+8M)am-Cuj~L*=b?QrmC8-CuNJ<-s#&%C?BIJTr3F`M7OO(UUog2w1o0 zyL00jHdGk2-+&DJHVdf83kxfi=`(7l3uYLcJ;pXZU{0nDD=)KEb zDdGKvNOjfr#aoJSR2LDc`m7fFdH4L*@OrTY`IV+>}{w$A)y6DMiOxH)Ry>#kia zdnHeowO9wZ!7KbEU+HIXD<5oV!&2pFT^M`Xj zT{vcBIQ{(6)o&iTr7~Jy4Z1mxcI}sPrNAbI3#-^x@LNJuR~Q%yXNS|D4m5LL!u(l( z`(l%*xy#OckNCV>mruG((%I+=!xwkv5IN#&%J_Wn4Mry_<+r_GK-*#OaQS*3h zxNCjlo5VFK)-_umuM8==5cN8a2}hNQ=fvfo`wYZ92~-d2UScVEbUk|4i6!S3ec4&X zAtTlII&Mpz#T^N@$2o}}^f__wpcHT-`&#AkGY6*-)@uH?m&~~y=U!Z*&oer_-um0E zxhxIgZ_-a3KEXO`>PiNddtRTO7Oz&m#ws=M#)~H^3oe+cY&zh?dSIUHiX(4Mc`Og{ zwLNis!TmX_UdQjA-mlWYuzO*Qtg7$Uv%41MzB?wmjosao&vVP7(1kM`ljo|~pAhi9 zceFEWTFAxOdpL;8b=~S0(}k?1gf?6{+L+2XTBLOAh~~6!7bKLDY&2B2RPdTETEtrP zm}bEen`NxmlI=s169f(Nw?qo6HSA@h{kzN6ej(kt1@x`_hhwJ<+r%FYh}JRj`7%wS zAyc(Rzk`4F=cA@kOKkP5uYOtD;Z`u?V`JQnp^ND+=|#5?Q$Q0659>0*gX%Wd^u6q*20oK*rS(r zI6UQ5<2=tdMhP9Gb90_N&ZzjvZns1^+~s@Lm%)^|j6SljIDLKIyoud78n3-9M<64y zV>r#9rBnrXJF-u}p6rO)He1tY%xmmaJK9=X=bco{P_EgCyCA%D|8dz*yN=4#jYi^e zxZiDY;bQOw<1X95E;T33Fy*=wTT>g6&wIn$YU}EQaym|aJ{K;X!gQ!stGCxRs5K`q zqZ#*yBI4YYi_La^u59Zq&lvsad9%gV#l53Gp~UE3qjrW$d0)!FhrXt(kIOk#A_tvX zR0Rc6Gh+81bx|)Hm^~x4G_a($Oo_3=G;Jg*QEiJ#?d}5HjmpJAbI)%WY00hSjp00M zl#o=|Sw8wC?Ash%_OM2w~?(F4fg0yiN=zB7%ZpAG_N|+)W41FZuN4 zdwUIy-TC?R*`{ir&ro5%9CS?4RHUN!MdJKo>r2(LKluVj?m2Uvsgw`B9PXc;XSj;a zIKg$l_|ds9Lba;rosSqP)X+P;IL=k!$7qDt&0|lKR9~%12wRr-O8ePRX--`*hw#ZG zCx^s260;oR4u3BBrgwP8OL0^F=$3TFiu>)x2Nd`OyLTqsSBY%caCotNXTjqcfBV^k zQ_1Nkdj>*dij4STIXSgbn=^hSXm(E@j){zsEZ|`j%IR;^oA2q+CT{$$BSxss#i_(C zxX3d7^w;}EP1e%`>(jfHnj$I;6ZoSKY1wG@%DWy9NOpJYJ5*@3c>5jZbS*niFHXm_ zg4=F=-v>X;#`~D=96ItX=y9_xy68h{(`Lzw#kI zp|<|MYNs?|X@}_NUyeoE6c0=bajbSO;x`?RcHQB}k}xgSQ?2E?V*e;jRfO$eR7=9( zhU;IXj89lv4%CHr)sQ?B0Nf`{d>T1?0*bZE1NsUIh zpS*0}exz5cPc61YIYVH%$FwQV%(B%ZVG{0nNtN$^lxO9&+jcMI?fh;PrtEH(^!1CM z#*vy_hj$GP8$PvkYBB!p=w}u&{H!h9KkWB)wqrW$lvLc$zMa~4m~%w_-FtX5M+MwQ z>0ZaVIO2-y4;M|RtY(;cK)OQn$a$wSg{(P`^2!fi{I>DpeaS7JB8(p|%e5(@n&Hz|W8G!f!&{1mDjU+Dns8p*I;$tncdOCmFtgFrmO}NV@4ME|q&B0U z%5Lh$54$^TjpLo>^u_V#_$SOA-mO*gmgjY|Wl2#?@BX&7qA9^AGQ`zH>fZ+6FvR_= zV)*&Wv&T#>$9&TY61x>0#AmCwyzq&P(9sx8?Qy<(yw8eX%g-8A;(m}U_nm_ z7xR0?d(-@UG;?i&3UiW-R|&)zMx`If<#_+f^}#%ckm7Vs%L}Q>*$39_QsdM2x^A=X zgWkF<<%fEaZ+u(o*<&?VI$SyC*YxJF2#;!#Wp>ey7w7fF(&{StsRZBtP|cK`+-A6+ zP`12pv2fouhvtBnuLl406y0L!5t=MM)1o5-p@lc6tXAEgdP94`xHJ0wmYQ3}lBdB6I^t8uMgfz`<&>xbGf>9HLu*;K*5CGR?&GsiX2yS$2FGrN#_+`ciQEct&>t( zDA3m(($yRu*&^(?H7Hd$w3kJw=xLDh(&(Jgj^k>%qe(HJ7A#`6Yrfy#aWj6aSJ5%k z#LZMTMJoG=$ju?$HMRox_j~L)*UuQazjS4y%!9AX=1R&u>we-PoNHvr#<&e?U zn-)eM!Bw+!W?u=^yx{BNBa}QXPdc|bdEr^Thb@}Dx_OU7muiOJ;60Wu$7sc0`yr?+ z(D&gqzrv$wZ>|Nt*ssaVU2^Dli!_x5!8yyB&Q{mr47BztESgvuXbwnQafWB5JuOb* zl=6+=K8XHcQB!=YMn$cN;%x(2TDlxrnJOg28K3U8<(&kcSS*3Mt zqmNBQOLNGs|3?u zCUN?%2-2%M#tdQCm2*wIdPt?{dBKBe=L3F*&eBzz)Q=^lM!5Z+RJtMm!4gkY>{*GV@aomNEy zyHvSL4JU7NSV_0+4DY*rC)$2`(<|=n?>Cmnl$b{@5GlCzl6mVuc=z?!wxjuPog~6n z4zw@pNj`Sc>$5UPd}8ja4&@yg$AqKPPQ{|?i zTi;BF*fw<-R&NpOZ3%yINjpA?ZGm8UV?*5686{h4JDkk=Z;ifJ>ES9~o6=In z7280son!JQny+$7Qd)_Eh>&bwzM9i4vEePsrj0#&^{v5|}Urk@z4ED?84pi)9B(O(NIjwQMWuX_lQ;QQqsVE+HP+_aZ;! zL!5@pdUkL7O2#s$)poYV^MAQFdV|n{PiYcf7s-!$np9hL!f4AABfLQxvW( zXY#8)5_>bZFRH1FKPRo!Oo_kDNFcb7O(-dSt=9eW$iU?lTe=_jR=*7_D{GLVvX(No zwmS>=4Oll13R{+UtuQziD|TOcn6c~0S8b@zI&)&kQdo4!5vJL03Mf6O#e)3x%5AAi2{z! zKUsTjb;v6><~VouSr2Y7V7|zb@0=?VEi?WqYpZAJ9`qU4?M!rRc`^EQcCG7>ip%Fes{$fYLJi);cqy%ywPQ?4y8Ou8Ghs+qy>sBD?f0Q|y=L#fSvU`7xc9M*ThV7~ zEjZk`FFZQ$vG_G3c^#&3se5M9xS#r`8?bPkk89yuY#YkCx$eaN{tp}l$DEFfRvq9r z-BhyA_gcB5=69dha+}xjMHYXKdVHhf+M5Rrp23=e-_!X%b{2U^pL{BO@J-xi3HGjA z^Ss!CcCMrn{PuZnEL^rHpu+OQbBnXv=1kqqKiI7$D}7<@>v=q-v& z4d*U(xDskzx-X^IaYRMHcev-7ll*rlU6f>3;X@i&u zMmXB}JO@WUD<>D!6g{t(`QTKY%ebWBnn}EtRN_lMPodmeMORt%S4RFqI-_?I93>vj zZL(`>YjyZqs?43VdRSj5y04(t+1;F}r099su0ZbkwW4iTbWLK6%U-gZ$Lz9FEOs=% zVXT}x;wJR7YIGK#_D8GoE&1YaGpy8@3Kg?un_azUsT_)850}>M>2iLTF{(9}%7SoP z{Bvq{r8Nuw+={zq!JS)erVStZy70b^%^tz6HC!tso2z~Dvo<{=&hiiXCi9S6p~b^) zsf1!-1OK+*Zf~)Q!2F9`10Ry!ek&T>l($CS^tnmdZE3AL2bSsywdOP~5L;L%G(Edp z<%mf!(ZcKxAC1_;FAuG6V)MBjSe#Um6t2k8(k~dEQKqI^J33Ht zFxX;C_A!^Hb%uGW8|6Qw8#~>N%@AKrWd{sxIl)xwqGiYNko)PHr<&eBDzB%?j~JJ- zH9SvO7an%epZ(F#;)R8r$&Rm!Hwd5p#1ZH;@7oA(ypQ%x|J12A>rb;4a_`-lsA_ln zVak()FM>rej_Rjt70ndpTgH8^-y9C=8ruB))dLB47$D3(Sk>6I9 z%VIy&Pdns3e)2BMgr^Tm~>{RAm@iP(kOAy&|nW8Uw4VSiXmS*(nKXHmbnNX#1 zVnuP$!6aox^NiutFs1^@Z^n!zUtJIGqf(k_&5r6yh*me|P-LiNJ8bTK(sqBMmGT2c z1>5;jSH3A z&^>=2a_8c+jGe?l?D}L1l`mh>QDBl(Thup0amc*{9AJOaCK*MJZ8z(st_8 z;&qu;t<4Ie8g9F(A$uK4PKJ9#SGhObdihfL;*z2kp14xZk3&t>*W8dDtL5Kf zmt4`bqkmv?etk&FTT%Zl&o@3B)bf|4vY6Q1<_~M6(m}zKvUJ}KZEXGO(H+8jc68HQ z=v{9KW<1`lPN!Ly%t)n<`TvW+e=x8bdAGu^Ph$#|9}2haXq9Y`*`8Q=ornE{&F}Rw2C;fAAZFaUT0Jxbg)oMtJ5MOF1GLJ+OH|`IxWmiWolAE5l@<&l#9&vsvI(F z^so@-XWnVCYS`(eQ3I<$yprp)0-dzt{p>7t{d8Tkn?_zI*Kf=}=X{Y*faOW!l4kiI zv{ojcOA3Tb&J2t8B+5~lNxQjQ=~w#53@J@EQ=%SGn?!=Qzw z>he=n^E0@^2TKyKht8#a84-Fj_waI}PG+)IEN4Ex+zJboJG;uhKa=X1qY&zQPfCVrnx{9T@Y zNwM1JLUSb-?E9V>BZXnXXgyRXB|I2lVIH2oEh+^pSUDi&5h&NvwQ#Y`sv7D3zVJ zla4LYm*-r8z5a9M;oLeC?nC}_oJvA$ss zF6I6QJ8L6)6ih4TGU^^t*$;pC8uY5u#gpyPKC$^{no3*~#|9g}-xNcZ<#pi%@=k z^-A@e#3bn~`;a1+4_uKeB;U$aX~>JLtFxq~(#z)=-4SX_tffZZ)_k{atAILq!(>t1 zd?!RNh}ZQ^9UYYv^_0P$X7I$18n7LRMKA7~opis;cBtT*m&J;!PCT<^pBV+Sa?#JR zEU|Xnf5t1WTQGF-W%Qt_oJD_&LS^XCU5Q9BQJ><{Ih|QSIoAI2pL9+(^7Ex7vX>X1 zc{`QL9Ih@n{+|8dyR|Jm?)g6kDjoKR_MZ{@9vXAK$T;%8tn8;F)F!#Yt)#H5uk8DL zQ=W{GdY23O5~XdPAL2IY^nLDL+uV_Q(zVZDxm$T5?=mWf3PUpVwT+!dT9k0Y{B|THF zR<%jtx3aT?yr?a{@5K3U`@ZoE(k)%ZRX=0WeSR^z z9J(?x$|LBe=Cg#yL!G^D7vJt<9oZ}2`|qXV z`gc3S{H^hrO-+CGjLH9;)4|)mvaV@A^HS~8MIY!WY`v;{-H+MBG}7BLa{G^+^+iQy zoDscmjyvsKz+HES8VTPS&X?j7qWQ%iFH0~~?Ox2C=MDF}P@O5XE~_ID>AZ`5^l8uS zt_H)T4$q&TYuC+|YkR-+OV1PSHBq>S&eK&pgOvABaVAps^x0urn%OkapMk)Aga1cM zvk`u!gM}5aOoO~i66}!n6q@Du_b*@-p_zfV-A%J&HqDOFDexPo;#BA@bW`vzIB&b~ z-_X**$La9LX=$vE+vw|?=n?v$!P!9XqovW+(>FP0t%rXP^o|)gf6%`vbW_f*W`(|^ zfrbPP2k(9%p$EukaIE5yImmoyrs0mvpxL`$R8bLkY!U9iX}JFg)1lcbs-PgMN<%Yd z4_VKkQ4v>Al#-Xj+e1@A?76mb;aW5_47mS6|I#+I;$OGnzd~PN8c0(~L0lY~&nV`f zHGu{o=TJK=mtB ziz4+XGPOxu&nt7V;%D(&)bk!Y;lWI_o^Qtn1PKh`^}y&F5(U)rBsf3=5C8-K0YCr{ z00aPmKaRk}>-o8GjZdg6C;It3^7-@M{UN>E*a@~|R46d6d+ZqGo1q1*AKmZT`1ONd*;6EWSR*(MiKL^o}V8xUArPohm z{3ce<`y7A=GtqiJgGxO=G6?GV|71Ua_W}Zd03ZMe00MvjATZeojMbxmd_B*hz>1H~ zZ&Amei8iK$0I`f z?JiclJ@OofjUn7dcnRHs+wTbc>hj_Cw$1pr(Rd8Q?W=^g$;e#%fp$V$Y2`e8`@k01 z-X~=>{+mZgy9sVHaKOif7~$)z6NGl%ez^UP(DrbF+uOFn_V?M~-v@P-(3Vz$+wFvQ z=NY(tfD^X&Pk`Hx2<<)J;Wh)|g0XSwTD;*2LfcysZoeb6`R(EMHu%?F(bR^)?W=_L zr82nPPH1nRwGQ9kf$gyWa(=k|h|oT547VA$;p6}5*MI9d77sgC{Lm(PU43H8_%nLn z4X&%lCj^cH0)PM@00;mAfB+!yXAzkAb@inE{k-cOSn;v@rPtSE{3iAsi-tQqn2FZ& zf^_4rKc7xe&yP2#inQf2f{+b(Iy*;hhyCHfOthZop>n^? zsb)~mkH6x@a(mEbl1;}$O z7YNTo=nW^FO#?r`b<-qRR$z#L03ZMe00MvjAOHybG6EC7Zkn{uDZCA5#bf)W*H2^o zCia}d)F<#@CR)$)Q2Bjcuj)ZP|I0Q9=m-!11ONd*01yBK0D(zBV5}bfUU7jPl9a+h6o4%0)PM@00;mAfWR*!@IO?~n?7g7WBV=Y`GOJp z3YDK=F2DM^Y5g~F-83l{78oQT00;mAfB+x>2mk`Vh`_|JnDfB+x>2mk_rz@#8BR*(Mi&nbw1XT^u)x2We` z+Tp=Ww4T34KmM{hS_SI)@d<&WfB+x>2mk_r03ZMe{8<~Pd ziPrOvsnqi^WuTt_vvw$$4Ilsr00MvjAOHve0^<{ycs>7Xo>M3pVZ{&Zzwn%b>?rK& zm)7wJRpdE^eT3%n#~z<7 z?SJbzg|jnP;}QJo>!zV%aNRUn))p8iAOHve0)PM@00;mAzk&5?t^Q~Ad;*nv-Xjmx^OI%ofpG!?fB+x>2mk_r03h%y2u!@5|26kDId{&*5C6Y# zUsE^1)i3>A9?M=#N>K^Ypw~T8GUCW_sC`IuzYMXhprW-`URLYSei^Mj@}df2idtHt zvbgtA(8WdnLRX=z%ZgFf4`BKig9Zh=CGktpA-5EDoLfpd2& zlyt}~1s(5}f{u4fqDzP>Aa2QZ*ewMe@0MJL-ID9DTM}LBkf;;FXkAHOiK1Ub$NDAe7{7>)^^53OzbMQk z$>__+oV=zE~ZJFQQ}f6-Fn{7po)l#puNOVsx_k zied5<(H^gl#TTO!<4dZK#g|kci!Y*M^A(8>yT!+mRL8p|*I~EhI_#E2C*%|8bVNxf zle|neo@<(WIWh>g>b;;D^i_&UBUKnfYI|kBubjE#`?kMCFrz|84q43ThDMml>CzB zE2MvHzQX8a>k7$ZkYn`t2|C^}1)aFA_Nk~+%vV?)i7%N>h%Z)0;)~Uh_#!$sUtx6O ze6cz*UyM$iFGeSuFE(Eh?J@ZZqZ8vxs*lB&R3BSch>p!yBszY!a2!c>yjy&HNp#pP zxemJ}(Xsgo=?BS6NF9sSv7E8_3S&>k8ObL|-azaT9lNfGI?ge)Zn5^*b%oeNj?wl= zKEe7$bgW;Zj`54=Sigvl^^46{$oR4O3Zvr#j2=I1Prk0O`D&~m(tJg#!wZYFf6{zK zYEQ{8X}&`2vH1$4;~k^@V)GTo9`BffJ#k&_m)}b$^)wiSfniNPICmF}@g`7+-=;mN!WCvAluNiSs4Z$L33_lg*bb zZy@&Ayg{mu#g{}!#g{}!#h0Lyf#CtW1r|iRXSmx zA^j1L69)0u$Kk>J<#EEG{_;3saG2v{d5thGvb=`TvFm^=uaVl5tplV^BIY%MJ)&dR zJyFLw#_ubPJv4htI^-CwBl!;N7tyhPi8{tFqGSCcI@T{)J|&EwET59<_?V-|PnJ(f z?BN)b+CzB|nk^{@I1j>Wj@*9ibFTfw{xSKKL?`!4mQM-xWcd`MW7ic~J|(rsJKiU+ zvRz4j|9-7K_^*W7($HXaWQURIc*^AV$d1C=!?Q)%qdt>|I1}w*9dS#h6Wn5T#4T1w z+>YtEoGFe37ws3;$^8;^GQY4+?ibd{{i^&0XM&D6CUQV@EN6m_IL6u|jv*Z#TXY-p zMbgIkK)0d3(QT+td>a)rR2x5ZbQ>Bns*N8is*N8az74a&Z!}bUtUnZc)bX+YP^@vs zx&LB4ljtbUr1}_V5*@{vL`QLkbrc)IdPeJrTZjvZPH>CW5w}|o#>XRqY#q#C7?r=Gsd29v5Fce zY)|eNg_xv&!ZL(U`lx=8Ws5jQxFI?+VT?|6jM0e`#_8zg49y2=Z@?V})wthdkDXhdS1VhX}RNu^4NQ^+$*au|G8PF?+Z_=;!~?eE?A1guV}e zk`8&GsN+0Q(xDkp(jm`i9ew>qLB~&wk`7Iff{q7ALB~&+M8|m6tl zqwNtLyRL{j&M_r>?7BkiA;)NYu<^#){**3t1L(NXb5>*)BRb##0oozng#>X`jI zrsFXa=S$RK%;Y+ZnM9|wf1!RT?O(Kx=8V$uo}o6vjne*wjwAaEy^qj3mNQ}xC1`a2 zh>qoq=vdCk{=)i2bgW;Zj`54=Sigvl^-F30Li3=se^EL+P`D=aDYke$@ed8 zPriRqIt9Pv`*+Nq+%Kj53)xfJzi1tD47HKk6?) z@)gz|a*SRNh&^^)A^8OB7tyhPi8^LIBRbYEqGSDH^A$3FY`((iWa|o>uSo65*A@DH z8Z;mD&wnZC6#SCrt1-WjPVN_*uMm4|zQXF*b%o7W7<;^9Wc<)8w%&m3(K;q#$8xi#H;DaU>J5xeTvw#}SbRzKvG^i7HeZqG_}Rkija0|G#jh(89d=8u!){4*Y`#MJ z!R9Nhj;t$;PR1FVuMm4=Un6+~t7F#{Vvpo2tUcry9bd#AyRNW#1L+5wH!wO`e6e|h z)Sf)P*z^9FJw89+e*}ykKOvt`@C(_KuPfM|+%Gn7AbzoV1FK`>i_IGtd%R<0{Lm}* zybsx%u)iC=8pj*K6#!m0q0AbUi|awh5+&WMiXjObX-l=czim(o5$>3Gmk8{tW5AC1|= zph@jX&%a~+knbb7AG}V%FZn(ivnTgUX&*uMl=cx?$Hte^K0?`##TR#9CB^eEMkmG> zt0VEn=*0M9bYgr7I@$S`RLAcmXxz~KsL(jc&cCGk*m@?_$>vLT{zdGu=U-BNEWRW< z-YvXONpw_v2|8KcKA!XOBBCxzqi zVE*zr%;K;6CkzhrezLqqm=9TA!|2dp(CdR>Pqq#SI@vlvt~ZEzjnF@$W7j=V$2ms( zMRdq9B^`2%){%UN^^53OzeFA57tyhP5gqH7ET0nQOO{Vbb$rax<0s3fB=&HON$oND zlxUC1r=&UsznFYVVo&auET0nW$?_>iha98FPnJ(f?eUHgd+3#{F2UKOb##15bX0uN zIy$~+9UWgtr<7laI$>)=ZRGxbyghu`NSrUx9>0smI1qIhGpRi>e~{-F{QHQ<34=iK z#T>`S9C!FH`X>zPFOL%jhdE9uzd(K|0KM1IeaHN!9pyNnhK<{(3j$H?c zJ@NX3ux=0?yABW?yAF{3kM)b_SieLav;Ghr>le|nektV_Xug#43rfew9BLyxDdm?j zdpO3V_T>2mwkOXoD4l{|^87MpPwtmeeu3;Mz{@t5`x z);Wnz*dk>1@bK~bifE4t7>PY902Fkx@f;G}yBGa=71BSf!vjM11M6cv$LvYtNUBrn z2ePNokGLf97f6x##p@LM!RzGxVB?F72OBSpj_-&T7aQo`t=aG^_zDOB0)PM@00;mA zfB+x>2mk{AeF91f;^MS4v^1lbf7_>wKbDjX@OL-HCj^cH0)PM@00;mAfB+!yXA$_T zy74-dx^ZJFs2l&Rl>lY~2mk_r03ZMe00Mx(_yqo{Zsb935crF?cO`?m@h{K-84v&j z00BS%5C8-Kfj^SKU)7CLRO-fvXP|EUBNqgi6d(Wy00MvjAOHve0)Ih(mS#5Y?nWA# z!-P7KmS!W~l9mn@RuJBYyh;-6koFXs<@on6U=^X6fw$dFvtu^Rj#0wTxu@b(=q+?p z@Gm%TyYS!8(!m|m;g8eOSRJ>~*Ei84^g)BOf!;?;qpPQHa?Dx}{~qWaGjRT(e^cnD zL_b)K{}vh&G#tG9g@hg;pTV(;N9G{&p_zs|GJ|ICeo;k5+_6Qt|EA&ogY2Mxdqou# zL{({M#_S>M88j;53W`$la(H`aN{BtzRxbSe7-$&quUDAn;a|7mzd~PN8c6f6>T?~W zL&OmCD)|)D=NKfQ2?ziJfB+x>2mk_rz#mOu64&Rlk5=PD^IO#CssFG(r}p{zNFu1u z|L6?}CI<)r0)PM@00;mAfB=R7QlBFq3{Uj)bL8{mWiqQYR__=vy>c3EzBUlvW zhtjlfun!`AOHve0)PM@00{h91jg!7_HYte z&2T+yPZ-a?c>lk03+(EbelCw-MDG88O}G#LY%=T&IgWj;A=oX+8Q<+M*#sq01yBK z00BS%5csnQjMbxm{C!R9`r#7#mtH@O@tasZuQ3I#yC+)Df2C5-uZsrt{GYW$!E68l zKmZT`1ONd*01z0Tz*s%{$Jg^c^l+*BTh#L$^Z!{ruSYk2JULj|NDQFKLjRDz<3Re? z3gBblDc@i9; z0SEvBfB+x>2mk_rz#m6o;`RKmc~0Rh6I{>!7oJlXCb;^gpUWc)0eMbgBjI_0vxMh~ zk>l9c-2}Td!u|8u<4F53!OnwlUk;*UUr!M1Gzg#fV~OcHP8CH$FK7 z8*tq;J|S=v5C8-K0YCr{00aPmKa0S`ubXD$pYNW8e^242mk_r03ZMej89;!9{uB=QwZSsjq3Rlk$+att5d1x zUz`B-{P-Zddb0YCr{00aO5K;X|J@IO?~n~MHM_54Gbe^$@SP^stb%s@T=XYEih z8$bXM00aO5KmZT`1jZ*Y@p}H(Jg2}R2iLRzh36C=5?uY#`)m-Z$a4x82+s>}tb*r- z9LK)iCD`c^?w`jVN7_#bc07dpau6N+`i@{Xb@%vwvG4oc+W*#b3YCXpE))Izt4eg^ z6Jj#~*G=OS0!IM>KmZT`1ONd*01)`I2u%FCY0^HYV50_?(7*KhX^h{*o>Pd{{b%+3 zXDao)q#>y1|EwJfW&;QS0)PM@00;mAfWY_!#_G{O{y7D4{okmbcRBIT>Un1>^?aT_ zsOQID@!%*R00;mAfB+x>2mk_q7J>hvdVY!JZ&c6AI{&kJUV%zI@1P6n`9Euig4qB9 zfB+x>2mk_r03a|vfr;1izvelGl9O;f`(JoYLDuzOsN)f;$a4xm2+s?Y5S}MSj+4D^ zg_XIg@Sw_wRKM4wa8m_0r*Mpba# zG(I746c7Le00BS%5C8-Kfj^7D#IKts?Q;rDm;Z(9r!jsLdrm>w=bzQ{Z)S|Y{uB;? zdVYLD;3yyf2mk_r03ZMe00Ms&fw6k@kAF^~#rHR==hxl)XZ5`Gtnt@hl{l#9$0r1i z0s?>lAOHve0)PM@@MjVDAFAim?*B&hd{5LrtLFo#)bpYOpq~G;b|{z)AOHve0)PM@ z00;mA;}e)@J#SCj@-A=gnQe2XX5NsHvfi7r`E=(Ji9K{r&VSLhzi7IC-F#X)`WXzY zyHC+fl5c)mx!K4zH7sgP3!2v|=zAtB>+W#Y6LtHqm+zX|C>5D$9Pu7hw~;mSOF0|e z7+A{8@K$l?;9+p!Y7rjU9e^5=Cp!O0lEJTTqU!H- zhi&BIekE48k;>|~m#j%HU!vj|5SMcHn&pN73uzs_@{|&-^n#xwd!UiHs_pN-vS$44 z%iyV|-n@qRy6?4^=ha%MYcKlxO`ZszIQ*)o0Y z-SGJ8TM+}IPdFkY#B_NV3F%PDPc`;#rMH%*sJ(jIA)h{cihhSp?%03tJ z_3s{T=CMuU3yyw8-n`S>7^c2E>F@f3 zQzkt1Qt78N49h}iD?SZquWxUH8QE*{{-aB%x!b%cYF9=Ox^8&CGeE8RJb@@ zUjR#1#j@2@7WViXl}ap;MMC8SN9Fv99iiLS6D49xha=8WE$M%r%T!&Yx?j*dZT(08 zH{9G%>JqF8L{B9VxS!J*Wn+MlOUnV+@WDxC`)WniuT!nMjpi@QR6akod_bPmgf z-N!Od(N38*XZg0H;2SK2LO0q`dm38Y>MM)$Si;3H?dS&U-3xYDe9$XCv9M#w?tP2S z?E7)tZGG68t5;9m>5&dr^=fu7B=phyV$gAmP=6@zc4w%2X9-_oYK=zKuX-B6y~v^T=qf7gO4}OO$tc#2Uxk-l5|*tH;m4ZiP?;I~zyrPo{@d_oiFY zIzOAkoaglM<+1t=KMZ9pV;{>u@sG+4v#s!PW)JppkYmdY2u`+1bnc3hb3eY#xzFrb zQv$!-)w$;)E@*BaJwYvuk~Lp(VQg=I#~kt%@+l&u(G}uld$K^dRjT$;*P`wx>!0bA zZBUc_sH>FHB7M^5{Tsp1Yu^eER`RQ-JE(+;?pU7gloZ-jb=fTz64fJD=FvpRP1rA}Gzgf-%F>b%3e4zoc=`xC_8-RHKGdn(_WK+?Fg)Gp*Xj zK=W?Zn%PggmbX4WV?4iRtLlq~t5%h<%Gi5fsd?cdcABn#rsRxS#WNgAFARCQ+CPZ2 za?W3~{$gmTy|m7Xpu$bT8>~F_%l$fCq&pk^%x_55QKi)o8 ztF|%W*zhCEOs(Tu%fXYgsh#6OXE?vbxiD-viE|LHSEV}K_eq5A33uJ#jc+B~89Nu; zKG_!IC$ZhRch2L;u)2|B9#vZ+do*%BTAmhe4q2jA#@xenr}H?+_#|lQ`r93q!u-bgqQtn%Yb-_w;F8L8}r?KR%uMRGM zs&Z5Nae!gjOo^(!57yn)*pLwtTrYJnjq8J@Qkz(Lc$6)_&#E}ZN;XGo9~fpXbi1jV zP*$T?rt7?@N<_VW{>xXo0!5D(T}eH^Pew3B?xd__;r08DIuGi?sxCfpQf)cOxl=nd zS+d)ANdGLAqIdToZzSifE9Nf-4Vs4Bp58J!KYTjgLtuDspA^)yt7NDgam>+Cwkd=$ zk62Jk%n~)GDyF>l>bxte&-4|3?4M%6RaWq%nVzj}^@oLpG1s+<-gi9+t6FZz7h$)i zMNK6|Gtc8wc8%x$^Ntn7rUw-0+*-^)_2AogA#rB_*_5HQ5)w* zyGP$7H=h~*J)>!vECXDshPc)Jd9_&NUOT_NfolRDA}74Y`9I51D^F?vs63`o_xO0{hhG4z~}_a@gNfZ&faPN6w++*}|{3 zNlo<(R8m*inr%J{A7($`W-@ zyf>^6(S7ucS0t#kX+$t%ASJzReQRIp&m$LkP3<<>f2EQe?t1P%gqur%oL#DDvWQmf zVArk2!usUfPc^%0t=1(!(I_3ZsX8P-{x~w%yt}#Zp+syEi+Ov3?3S~FAp>0w&Fh)H zpkbU$spyICqqgE2XY6<=7XJRnj+|A_=8I%jdxeiU_h!5t9pI#cfV`DlZ8I-Al*$&) zJb;^ud%=m+=k>gCi#ws2B;I~n*@>IUxk?fHC27=(r~{HU3b-zo1U&oiSLM*er*|5LL!M1rtRlc}-^RAQAsa+PEEcltS zyie;L3*;&GLY~h+!$*7hb@Kx4-bE&ObKID>#^~_|86ML^b%$0&M_H}#5#-Z9lva1M zzFD7vHY+}~&Z)jE&cL2~nQ2^>&8TmNDwPi@cG0JA$sS(TE%{C`T5G}0%{@iY9f8u$ zuTtGLqkT;7Su-5GE~FY^n8L1wyQ&Dt3;UMKmD0$OA!xAEea7-YA&zQ+LQkQr+s}?) zW{MdcE~K&ux4M~Mwiul{yr4Mb*zl#NN5X^5Jo=OfEX(#Zu-;$q^jN9LR(a&c`#1bI z59VIiu`N+Q=}=%cZNWA{C$)6DKqjYiJFVU?6*$t@HW2SK{?8BGSpJ^3^qbVZ4W6gs zOM{N{a>qMn6`g~8r^|Ol)oks`CBRij6QTh1nigX}j zd}LK;o|P^4g;QV3iULD}g+%6?f4`rm+qnz38>!9AYioP@a`P5bo~1r)VX|3{1=@v) z(u{&_cMln_%ZTY-iiAysV%S=2_{*D`+V!`VJFWMM_Zq4HJ~(sSjr&NZ#)79jqCKqh zb(nYYPMbl-uaQhK=&qI*_p zD{tR4a}(d^g;S=lN>cC%OIJCl8)|v*qMKr5w)iyM|DMk*$jAM!Ip68%<e=aVzxHnnu_IKX^ z$6=1q;m#<{y4INR;#EQV2|+>0VRu9tf>Yb;86NtuWFJ>^)EBdePAhX@ZgVu2sA##z z#N=5jw>f6@RCP>aZ{$NcDkncG_53hMc?DLy^H6&FlQgG|V4^Gk0&0rn>%OmN`ikoRciRW@U8^Yz@ zKD}wPvnNzCOHYKAS;a%Ts=Q!T`CEy;6h@!iZM{C_s-=cSpC2nGJs(gw_AyOO(U|>h zK#pNcXmjgLi>lVx!8QjKVZm+AF<%@;j%MBF^7sARGV)!sX-8F0%!-!Q^n~D~uL(t$ zjQ7!w4+=VZ)aO(Z=iqwNxn6Z|*9(@IzDhIsT(~o_b^d(f@GcF`87<{wzkaNFb3%Mf zQAm(xv#h>!Ubtw{&tb*Bo;c^=PV-BhhtGE|qs=#8 zaO;vwT?U`OLD4r&kH#JOz(t=kB;w*J*t9pD^XlMvM3ZAaD%cA=HVyc^fmR@D%9o#PXWR}2VWosMK&i(x+ z!z*_`WuKdy-smu$e0$Juj*gZCmt>cT|BktzhF@wOR$8hMSkdpG*zdC9ZRl`OC;RM- zo`agZnC?H(9@_A5^jVO{#u$!)jT<^*IP-th)+R8ewYDYRiFGvZ%%isaajar81D83R z6=HWx!A0~@wUzM!gP--?}$Q4i^D`$d3kn+!Q9ij8nSZ_7yJ7>kc!v0 zpx?h>N!0VGO*12I`OBWTUhKA}OySc5j&Svgn6Qv(it&y-#|xhIrPdEFaUT(pYU{T* z-`+RE-x?qg+=mMu?<&)fYd7tnxQ%8X=PQ_Z{mqw^598(pg}h#$_32Rh>w|$D*S%zv zLXLf})Y@DUWArkj(`Hp&9jAtFQ}4>GH!%Y(4ABB2p6?&`STB5)HlW=lsM%AtgI^%e zAYoA&iqaH)C5XFc#1HrRHurbhXa z36!&Tghlc?e;!H^(_5+EI+qt0vJMO72DR>RQ5IX*)-~!k^JKYG8s*O&uPj>;tY`e8 z#WnfK;O)Uj;;D_nhSt`)8*G9-b4oSsj_mzA_|<3HyOaea@Cf<_e02HLTg%&X^L$s% zhMpF`VX1X41xJT6pPye`rn`Jly5Ybf)1OcKlc8}{4JRnHMD#|oYg`uQ`H>Z4(`TCB zGGh76Q2&q+E^8?d9L*|O&Y^CWl9B#N(CbjzPLJN+PSqAMfv?7~0)H>ZN7JXKHw*0I!?l8^CPFLVB)^JaE^cE7# z(0rKAU2<9Cja5oYBs*utMoznw*B|8vHkuCch&2^l9vj;smu(*N<~2VsE3W)m-c+E{ zCMzdF<>ZLVs3)e%rM=$N-1>d#lZ5-F9U~)}U(EC6p$$--18;zv#y7IJJKtV&8NqT5%1A%DFAWHVWm#L3Y=oGn#^*bl6|`7=Sx(mpSgZSgQ$f zJLJOcVP*!6tzoC!=f1yn;*O@@iW}LTpeASk%a>>4m>EE$iq*jrtLx*zeUccZQ=QOi zDsaW6PS&&2#7}AGwu~VAJ&K07Oq!P$(P@C&nJl=S>GpYKcJL9)ri3iVVa_3b;+TXy zVq#lxW76v{d=ejBb^Fd0>gVp7S?LY%Hx%3FHYoA8PWfjuUGK?w`9YbB z(`2#e;+&39_I(Vp?|7CEt=r{2&7Gr!=ax~#`&<6W()1kfuJ-O@-)AG$9wxo#>QM%9 zZf=42uB!Z1AH1!cU2|K8D$<&rEtR=bd|qwbzWh_!HKv^v6%`AGU24l(c`|g?GNrk5 zcN$*$_IRlip8~r^nP=)9HY*P0;&06wO@4lUE5olykK{QmzhQIax3l2K?OGO}ld5VAwENA}2Gp=lN&WJLDL-Ya{Py=7)^ zLipdfefxd-eLweI{p#~qpW{(3*LBW)UFUk9_c_<=eeU=BzMmFz(7C^VVrDbM8y{cE zFLc3qD%|KX2272$EiCN4Q0Nb*rbgjLXlq0g5|rEfLwfB{5XY>}vfn`(54WDe6PbY| znXx=F9f7zhf`UGi zylE(QX?nvZbFB7!qOqjMa|r0-upQe!M!Lqz0)F)C*QwUV-@qMt9oZKCF+@M7N?=Eu4S!97QKA> zfn_$%>!Wp~mI>U^K1U8#L4Yxd3_c#2y{ebrm9Rt{snzDBsD9^U(nmdVvzgrVJztrW>BZyI2GP8?W_4=3@L8M{ty(X{Ab5b83$>iJWRojt#->By&A>C@5i+;MPGY-YXoT$O-h*+); z)29}maH2&5+bH2p{Jy2C^))?JyWZ*?2Gv;|jE%l;Q8c7)Ih@cA97P|huW4!VejpNL zo@Q0!gU8P|-REK*0I{@^1cD1*@j84&wa+uX$+e7@;uou{Z@4y<>)Ob>TBl=nO2k>H zCb$l|Wy`CMUC{m<{mOfdll6I<#;_>)CINmfm1On4RaU2!PY|UlJcrI z_vM}BWcLzh)X>m?j>!b*nAF=Elln$)B(jnSEjamxWuqf2+Ou2e=;$uC(Oy4jpn^AP! zNJ8y}co}F=w%_iF9hR<2hp$04vkQpV+0Jcit$b|>Zj6H2s5s>8TWz=P!cgvBJ9#L) zHs2svH#Tm6zg_V4XJl_~1boJ1VDR9@xQ5u8&DlFqJ$2>T_~)Ztos9auJ(JcM68`Du z#%0Ri41B!q_Q=rO{QQSzz8ov2VH-4lKC6uDr!!9wtOcf@c@uaqZn{C_9-XFBaMGVLQcwQ2Hm8v5nuER$9qgpuQ(B7%(3xOv?i-6jz#jnTCBM=I2_(HC@T|m z;|j_*a0x)kcql96Uvf7WuU1%CHRpwuiOHF*CfP6zOK&yF{P`6lI;JId6Wweoht}J2 zy`e!L)$1iRG`gkK$uD!zF(!9y7CmZ9sqhXw$noa3dE3K53R|x7dAzvWbsqLnp=T2V zCoidH$1!F~wX}M+RhW4*a>IWfXSDXG$W-U%dC!VX_4EWjkS3m8`tY)qhKz9Xbb=YR zV0X>ja%@DrZY$4>pZ2)b!m(~Nzp;tf&dM8Mr6YGj${32nh0+$R=T8q^$zS1aUn@XI zu^|l8pZ-R%-EVYvmv@QkvXG|2GUYQ_?e`K&~|AIxXmCTr)cfQ8|z*RSveS*HZU1q#xIbMwCum&At<3M0J zb=^RA42`@c$I3IK*S(*ECv5r-K45cis9dBx@sdRgYy7TlZ!q%_PLrGZMsYVbxD``7 zYJ9xSz5$)V;Z(m`?>G^Wp?i2r8s_O2ZQCh0de{j(iF_FADtr!pOF?m(*fRLeSOV(m;j6}n`_Uf92&uKeW<_@v4tT=Sr7xI`r3#Ugtq~bLy3YtVc zZ`BoE8te<+vNO9NBs+s|m=v-x+p4deB{VZLVsuGPraP3t(cfJ}L#%wArK6}3+rz&w zaoR%i${2s^D$)8iM#pd_*6}o2@u=s1nYs)@bt)&78_&vF+O9q``XGATBjKJE2?6oQ zI#!AiyWoLvH@{+;-lJFb^v8wby=vz9Cx!*9vf+|V;_&-Zg}(()`m+P;-8@PYC=mvy44-DGD_hWd7v@H86Vy{glp zDp;pMEJn3pwdA9_v3~#A2#suJ;FeuUPTyo958MXX={VHnK%eo*IcbO+L@6^5Xc$tB{nrb%K(xHRtoO?KLeO6ItQ3 zyNR|ruP@tF88JL*3k1Q-mbk@Bxh|Xuq;$&ST z+p#2t@bm7v=j{md*JVB@iIpZc5_L@nec)uY>&V}v+gz$uJ-5@3!ky-^9qT!a*VHx| z@P;1Rg`bbJ=HN4|V4q6&k4tSgkrym^UHiG`u3D>x=kae^u|j{<)g%OI*4UT;q*=si z=Wmx<6Ylh3D`aWtBxJ?oLb%~Xj(n(WNq^jyc~1nGm~~)A`?o(G?HUhd$-N9|Of#f0 zW?PM6Y zDy>)5Ui3Qbt5P#PnVN2~dhv74lXrgII&nqu)IJSEYBrJzA4d~}O>Gz~XyA9>eG15G z%${w=+J)P8dxT1i9&WJ0P3(SP3>=lCW14?z3o;7|bV2LfpU zGyv_NiNgM3X^>#BZeB?Eq^`AV)71V&7DsI#4sIm8@_l02^m&$&dH2^|osk?{_<)61 zJ)($9Op9W}WiI|K8*gf2#zvsVEnk`j_vy&UY**=$b-p@Bcl?S?X|*eoi-%~bbam>MwTBxg{np7c2+|Y+j^>{|Rct*)i##ZZ};e~`Z(`FjG=q-Bd2ZnZ^LM50= zmYuR>?_e?LnpQx8{XX~<*^C8_%JW-9%leR;>*>$n^qXXT+3t6NubbIbtj6y~vzCV1 z206`EtZzkt%DtF$>t=#U$o2aSf|`w5#~WJg2R2yO+dI5rhq?4hK{{^8a1+vP!x!Dw zLff}*#i%Ku@ju*pu|lhj@qN3PdDAVcq-z>%yNHpGF3Vgr%O%n!WSUwgh6BtD>yrxP zR?N-u(Erm@#B`;$lT-;6*OF}x(#g?n1uzR-)~1z=3GiBpC_X>`iubIUTSHvWT#a$c z$!qpSHd0o1RdRByKdM-lLyRLJ&!`g%X7*rT_aSSAl3Qeffu-UnJLlK^R_j`TZU7j z09z#+ZCjq3!s^kf1>a6MT`+y4&yHB#z5yb~x@d$4FJU9p_Zrx+su!{E^2E@yA9P-3XWy^Kfd&g;J&&6Gu9G8H9ytKGK=ePbU{@jq3p0NRWH>WH%l@Xh$`;3z%=jn2?f>4KyhqZee)~8K2QEnG3U{QwFvu_S1W#I_cpD% zP3&xZtphyRtcFF7H!RATRY-U=tJIz9bXv)>+a~5i-#-)vA*Rf7#)9A*ZfA(Ke^PEh zQ2WJ+JIf-+=9!23mxGDt6R3R>#62|XbZn2=jZLgy+8h$&mvU!!oFK9736gYep={1; zd@?=FpwsBos^hvs@X3>u3w8|rRir>(OvmCHp{_SHu5}|X8XTEh)yG(e#$OD!({X0~ z*S?X)pIvN*^v&#xI8hGP!D@1N(dDyN*rC<)#%vKZIF-AXs2bkBME-xhge-$fPvh2I z6uR7XgE>+mS;be8ruZ;Ji*u{l9Y^ndZe(T}tcTMg`^`Ij)V$9SIpY-&JEboz20DH7fT%+tL%86yG`FZJLzcHc)xw#rtc;jQq zMoQt*35|Dai6$JUsLpn(=PT+D2yfQgYy}(l_BO$W>9UrU`;ZuEE7>&1=VneR#mVD?t@jq#E<`i(%DRmOT+jAyj&C*MiQSH4 zCXT~~6A+sb1c5x|BUI`;W2+N@{=~T=EkcbI&m!W#gmo_`b*x!slC(%HKMDMnNak8d zB(wXMNao4A?MHcgF1*jPiA}par_Ev+7-h2EVy|Ys^lxvmxi6%}cf5scdH-q_>#MhP zwYOP_k8ky!R2-gu{B2C_F&rCLcpukr2GJ~8E4eVBg3xgT63NVZYpwxKZx`56&m7kY zykEYxXqc#5w3Wo}&*Rl)iHIK3!TM$aiM&zM!9^*xf@zHOurTSI-~DI%2iND0;<}ot z@|3$V3#z)xXmIrOWr?sI9(vhPHzENEV;<_4J2RX>1}C`lRQ)x@3M?6w1{pWTw%#QL zyZE&#n$)1Wn?h(;Ge1c^9irp+WFLoj5)2#MfV|DC2S!conDduG=xfay5 zWXA$8w7#A%hoyGEX`+1A6vHCYC)lio&UfnoDlkQr08i~PN(tg zPX2p$f<5mn`&`xH3|iG+O0dJfNtGw5e6Kr*kjVtL{ia}kOuE+c@m|)zk)EZe8m|e& z*H&J|Je|+nx|QYUZ)(C9;f;WokQ2PT7Y;eWGV}yp(N8<$ASWo6STB&h*9R|<+qK{f zq&J;w9~Ne@+NPp+Ovu8E+O|9X=|JDzmC>!a@wDFUtwcr7+o4R>)EGokujnXIo;2;p zKFC|aUuoI_ zt*F$Mv)j?cRy)zeUCipOmQ|i36Uy7s!~x-<0m56+z09@x$NI5ZwxZFiheT^m$Xlx;zA}MUR%V2jJkz*3e$o3}U3FW`1+J+@@%>7wr=dp#gqrOqri6} zmwQ#C!Y89YQ-*q(P=$K1mQBd&Tg<(ZMW(8K{iL?JBC|mz8VbTFArg7J@JVLRGG9)3I%)#b z{I-j~X)?ZZSDSeccS4Im;C9sV&VAWJ!@s|}FAJ8A6}B8-=OvGd zfoizVl_iv}I9@rNDTyh(|70Nwz1%cwcL6le}=hXl>y*4Nn+S?{Ia z_IabUcC0u>XpXB!Cvippp~NfOO^OQfNl7|6%!onyj!_}wG7b~Na#6jAq0$g1E4Q@h zwj~L(_a**=JqewSum|bPE&HGbR7b_YqAq!DJ3EmHqKQmO{-ULGPwx5;nrW&F@|i3R zMzT*vlZm8C*XZ!P^7uR`VdEFaG7$&{uxri43LiGDK=PTx)1JpUAbtK`XzN2}4%9Q_pEIg?A8JT1M>gl_ zi*ba8Ca=9seOP;z`@wJ5<-Ir=(l|USe#!zdH6y+pgm(ugYv*pPu;;Ff2aq;q%5Ao; zIjx%}Tba6<<@CH$H&%B`VT zpXcVD=P1Y_`xy3!>6=C-da8h^x7Cr{s9S@#o}lKKNp~3Ec!M9BllKh_f%DgUDa9)8 zam@OP!TXFb*w=#NJHWZO9~#`B;tE)zX|-Y-SrVkqwCM1&bozz|oSM^n-m-6!wCCOWtXcv6v+IPV{ZV6L`F9hLb z{6Tc`fyJCj_pP}%@ksG0Gz2d9(rZmGTuL?FJtQ#vq_5f65~e+?XnzWCLGg$1!trcj z&mpiUB`(DTE_t3(-?`%bEF#dbVmIdA*vt(?;XGFl`F*xm$DO z%97>e7Wv#KNCS)6!ly^*mh$S>k&Wjmj;*ZoUKrW9p63F4^~VbNJ>(qM$)9rfy5%n^ zPMgBJs5r8%d0Sil_J}fayaeeIcGu&JuT+A(Bbrf7&<+T(68c@uWAAA-2}*m6q$riq-0pAWU{of+f2J3ERR2Yfix?`5OrEtXG*|eA(GKKS`*@!QY!%WYR6qS$-WzzMw zabow8TrC_qrfL%JlHjjC9w)ry^1f>_y7Hw~O?W%Q(47K!Hh#V9)jT0c9{Umi@I_5{!1_QT{VD$uF;y338p1LGt1|w;oALN-`IawkaKz zH)2Y{2KyR&&q(@`5IfWDIwxDpmdEF78Ykw5(lYHnW%_e&`0`xT2{lq)!yO8$G`lwI z);%PeWxXjSY93?r$!T<)=pEmUVWvmZc<5~pTk(W!QR`^Pm>>J&-CBGnzJR%=gv;K| z{mF%H?NUzhUE)xKlieYuub&PaIQN0$XiUJP$8FO&7`DpGG%w!CH@#ycKR4{|v!2ln zXBrsCxfRz)d(p?PlOaq}U~(-)US}@ZP4*VgP_Y)_Rx=0b99g}sJZpoZ+%aV)j|{1L~`kTgLvgZ6|@ zUD)=JA!V;H9kO7zHSNbqQgGwl{~&VvISI*g?E4uc$fq!`7vo@aohWE8(z%KK43R{C z--UxuRg(lg)_rN7Jb86)iJh*un$91E6Sn)m=bq-L4DQ%ZHkNI2R+TKys~egbr&@ga zoRx3W1xZzOm2KlyD_OcwDK~UN^i?7;QP_v>s1SqbjSL!2Jz`v%>@txIw^3yD56ov7 zIUfnR@Cz$plE!dnIG^sn)K$!7h8^Eu%yHD8DX)x-t@y+1@DFshcMNdzLhL#$GTf(X z4u4=+BEEWojrZb2NRo0o+jN;OoQaD{I#@m;ogpkeoIgree15KjetIR{O;$5BDMX&n zB8H9BiEgPVls<=5GLVi{(ylA=A+{HeMeTyax|9VkN8!ievS)&42G`Kygel%{gr6%` zD%bO>=e_s_(n3whtB;~zK0@6dY*i>@?kcMpk`yvpX_+S(_`LPSRVuF;+e|w$MmT0? zfh?7((DY6~hNfJhEFsTv-nKg&_F`$D7;@e|Jg3*vEu; z@X0k^-dHX&3H2*sOLzpx_FN>=B+oEA`LEM@`Z7?EMCwl{B=lM-ER%8kc6KLYKia(> zwAPDG&FGn4(^@vXYB;xIdD&`nkug=#PoQLhYJks+=)`2AZeZeYb`&jbvuzhzS@%Ko z6BDz9IfK@PR}DOqYupRTY&^tgyaOfAwY_m}JCgUlVG@~`IdR!h$ZgpW_x6Z^=t!YT zp1uLbjimezr5WGu0C%K>c8*7hedMW%-U1~P>q+i%jIil_zHM*XOxYPO!@+*hN2rtX z_)L6rN z1OX6*JT5`r5)-sW+73rm`QT*4*+e0yd&nIaf=qg>8583zuCRp|r(_@Tv?kZmmhruo zBo&1iU;h1z_en5NkZ6t0oQZwXMv{hb?OnwUCQ)pzL)THcuARbs@lNoHhi^4oG6~7Z z$+e)hsoY*G&rfhPz%P+auqSlb5BLHLm{ z#{f0IyAbp1+%iACE%QTOhM34XS}GC89!a;OFy17 zQr?5kVVvRa*~hZx%yNWi&e+khk19Kc@W8mvv^80zR1VpYmy7fp+?;@ALwMS^3P;nY zCPde-WMDwKA*Du{!@n+2sw#pZHCQMtL|*-K=TGe5v2fju+c!(Q`4FyJBdIc@W+lhL?mP86MryNkyqPn4;r!*!lLSb~O%4|1 zIP)?L?n>qoqt9jE3WO=A=5!HPsKbWMlu+F6@ z4N18n>mAex`yVSsVj!WDBkg~vY*3)4e^=T`7-HCs5Yj(AjCe6lqJ zc?nT(O>)y`dP&@H7I*)ZjFG<6$yT3{{BKa3A6mVkXM2Q$_G~7y4X>1A-%H4I_ERO~ zIU8%FLVVCBe(fa^bta`2e(YRwq0HL~i`4nP%Mk(8NX%+tvCjZ*RQ9A!IHi)_T3-FB6<@T*W%+1qZ z!O_Fzx*oT$rRHT6)1h$2VkL;7-HVdAryIY9M<{7Im=t+;MhZ>%u; z`!!U`{MJp5;|eu%lNn5T@vSjusYU8!awBjl#iMT7YHUDyE17+D*jL-ukDN|?-Nk=2 zgR@ZjtkvfOLZycT9o2aK6&%vh_~Q#{_Q&`uK9?)*?0b2#n|sEOV(rqc5hLPI#ejJp zS4T-(eFH2B3cta7BgQzR#6`DfUdY~zGtZmug!lA8r+hn}E{RxUdh@qaVOOa3Jf! zLkD{*B_)=I%IA{|VpjxE?j5qfaQf1m0%aAQs=a+3&U&r?@^GGLKkO#`l1T~nYyjKF z_93R@ytJX_NVDTePfkyGyzEn=+%vc`dtp953OQMVT)p=K@#TfPI@=qqeT!ki|Eu3j*|aWPVgt$Rrq-t&_c_txUNcI&!!=Thpl^m@{G z$BC z&d~{$StE6KjcZJq5M|F3yFjJcWDm>9@Um*XPXA@uZ3_ zy}?@-x{7i(oAF)DgZWFnnANUAtrNrJ7%=-ZC9;40e@FU9BGDv`)T59u8w z`J-`SK3HsC*Mnm}WvDr6c_|Lk6%>whTPDZ0WCCv#Y2bW1Sbh;{Tde_;119$mn_RXR z{+49ZsJtzH_N)>Hq7ueCzqwoLZH`xNqC7}Edv^FyFh*06U2x}f`@&3>z8rD+=5*)Z z&qD~Lc&qUF^ZH1c>GD!u_quHLNTWD5Xo+wZ zH~%t2_d*8rWhUh8E`=F_950Sgh-_O6F*QOn@vQWHt~YJKt_ED`fLo&Nw{G z%-Ljfsb& z$}jfo-b9Pf3hgs~ISE-TY*9;s-hWKU$;BcbCu()b~_( zZ_*PLns}H{)I7S0S3XW0s^IzPaTpV9K>r_HOV|>kStE?=W!{2xU<34h_e`1G&AXNl{IL8a)KhR7-}$@R z2L+W2K7bv5vj=tdw-{VDVx3k9N@Ziqx)8 z_>(x5kKnDwQDK@(9OHRQnfNAos*Y9H?2T6=|7OJJK-?boc3Q%06OU12)wj6=^Qes{ zRN95B@TVCGJ0TyLNZ;ZH2dq5>(jDH(&(C(c=;79P{`K6Lw!?Q<6#wijBF+!%qOl<)(n}|~=-j{{z38u5 zg+=Olmc;X%WhtB`46cU-hn6BaTel{_!Xx)jp&{4n9as}7Lcw1^YAJp*yI|>fK%nQ` z71(cR{FWVqU@vX|TvFBbHQff|^{ZVf(RCw5Gb^v~Mh_i<{muZ!c}z_io)%4(Njt|p zsjib&Hx^f7lM@zK9Be*yJzcU6S@z%@$AWVXCWOyCj_6z1`HdX8Am6;Fr{23s&vAu* z0m)F!b25}bb3qRA&QKNs9HW3aJ?_;>txv?hZXhGRPBM&RntqCJRFF2U+w(H{d%mQy z9#75DD^r|SIL8a>6DEMb>ftCHJvgPeG11#$lH_(plw$oc9=)=!yPiBraKCPY5& zGuG*9uH|Tcu+F`hCJYDhjJ|#AfO)>cG`W0T-(`nZAJvK6bJ`Mb+y`IU2!@0OVYSMM zAj?$e(?zW{r+G$>Bv5PAB`7YqOxL1(lzculO{X-?^U*8ZMfKd0EshM+Q<>N4PA$lrr-j zR^~9_Ja=v|f$I6@+GaBX92>iCPwe_ht70F*5rnO8=h^wSwK>1F2QiNAqX;Lq_YnTG z<=Z*@pM4AjjO`j@WTe|$b7*~J1eEPlBJSTg^I-(0?LYP*?o>eBF5ib>tZAaIuA>Io z+xgiCJ+7*zuA_8MZRf?1A`}F??F#!5_bZ>-xztuuwwky7QY`2hwwm`QLHzdDUpjmB z2Di94r0f{v{{hH<=xrceUQ=HJA;X53tI5KeiJ->{0sdjTAE+rKYii%eR^Jt^~d!5<*z$rw_~7NT56!@ zzd{0b0Rcb&5C8-K0YCr{_@fDY(W8I7o=0TgLwcTt@7L)0^@~8y|Iq^$+#DbP2mk_r z03ZMe00LhT_!sH<_t*E3o<|k`HG00B66pD_OdRY20)PM@00;mAfB+!yM-%vdJ^yp^ z6g(t%^z1*7r+_N;3v~RhQS9a^L_+fgJVGuG%jcN z_}AMRXgw|HdjHquzso+nIIJ&r`h9UtR}_DZ-{eUF{HEW@p0YCr{00aO5KmZW< z83exQ(LX+}sYB@(_)lN>eV?Ak()l%d{th|N^FL!;fO7x>fB+x>2mk_r03h(Y5cr}; z|9Cwgt-FWxe81U`>G=qB*p`)!5A-~2LZB2700aO5KmZT`1OS0Qi@?7~&s$pTAw8eu z_+xtB|0rzxBR~Us9yTFR3J3rKfB+x>2mk_rz@J6n`}O?K$x~o?w4-PLfjosI=%s$? z_bH%I@7M(kG@tnItmG85o)I*D{_pBBLF-+C#^wB7y_?W_SmrxC|E}I%KmM!o6vm$Y znBP(!6xc|CO4COAF`^gL`rpcD`Q1ONd*01yBK0D(V?z!yFG$LA@C1@0j|?-coC zdOjD9o~P;odj8KEq2O)+0YCr{00aO5KmZVcP2gXo=SiaXke-)K`7u3z{4nhPJl+WO zJZwUs6c7Le00BS%5C8-Kfj^7D_v`telc&(1wxehNfjkA-^k1OkcdcOe`xG>x`2zjW zeB#~muebN1_3)qXH0tZ}-Tjx)dSlSIoZaJJZ{I@eWkJ{bzb^k>_J38Lf=A(x`ArQd zu*vaO0>241Ay5hk00MvjAOHve0)W7uMd17Wrr$PCfxPG!_)lN>eP5n}a?OwFc?MM2 z_J>gb^gL`rpcD`Q1ONd*01yBK0D(V?z!yFG$LA@m*6txaPuu=udfpX|o_9Nk_fB+x>2mk_r z03ZMe{8GIYKF>+;`a|5xQHu+06K-z2;bHaX@f;5Wf01WEw` zKmZT`1ONd*01)`I2zI!Z-7(O&F(7~c^#g(=#CUl2A?!og{OZRI zj-FQz2YMd1#e-5n01yBK00BS%5C8=JECT-`J#Tb)M?&w3?>mmh`7u3z1&*FS6$bSD zpEW|k-2eiB03ZMe00MvjAOM@d_v`telczw7x1(qOfjot1=%s$Dj^Cxao2PIdy3kGw z%_rV1|9Z;>t)~TzpZ~gicmEc&9t$)sXZQHmTLWl4RMZ`wUzh(b`@bqrp`YZ({HD8b z{HF9!;5Yp)wguV=2mk_r03ZMe00Mx(&mi#qe$#K8r(j98BcXq)|MZ35_vI-hQT>>n zN8Jy**W-eLo`+2clmY^P03ZMe00MvjAn<1q_@YPu_&f!HOM6JqJFxtio)3nzK7S+# z==ncugo3*P1ONd*01yBK00BS%Hi3VUp2ug~Lwa6}_s8`7RYchRS@{a+dDw(NDIfp{ z00MvjAOHve0)G~P@7MD`Cr_c{`i`Fc2l5oe_JcTFFe1Q&VKJjk(*V|xd zJuK3lMtxnryPpBA*AI=$***UCwjNq93A*0@b@}hI|Euy8oWy_3Z%T*bHy!f>e$($_ zTcDkQ03ZMe00MvjAOHyb3I}@B8u;WEFl)&+mhir-0=H^!(2l z7vLO#03ZMe00MvjAOHybE(E^l(LX*3MSPAJg+TaPkzqynvqnUB(`0Cm;X_ z00MvjAOHve0zZSmzevx&)7e9Me%18X=y|*sK+pe-aRJT&2mk_r03ZMe00Mx(??T}F z_59DtQ*f}@(X;~J4dph@$>(y9C`o` zTF(g@m-Bb^E2>eU}{~|rF6|jf&d`QHP>3K~!p9{+D z3iSNX93S9ZfB+x>2mk_r03ZMe>~#X)ujhYGo&tIFj-LGo@)Sa#m-?l73fH0e0_0{p z_w{%Et_ZEC42_@vyL#r(dbH5EoWHC03|bHI73}N&-Rt+t@n4mv(2??Eev>gAzp2y- z_)UAoc0fA-0YCr{00aO5KmZW8?KmZT`1ONd*01((K1it9eKmPj^uDshrdfu}7$MpPNIC_5SA<*-C zWo&_V00MvjAOHve0)PM@@J|r<7wLJd+C8M_1=@a0&)2mk_mg~0dg`Ja=g@V;Y5&;A2>3Id(KK*#U)-|qJ*L_+fg-b3?=cgw%t7C`Hv zrtUQA>+;?GHfX&LXk5kLh_^IC|bi z2 z_J38L0y*xF`AsTt-UrFN4*aIy#kN2@0Rcb&5C8-K0YCr{_!$Jg-*5VD^Az44-;vNi z)qncJ@B8u;R!{$!p7(<05&vD^lkovP|95P_aX>I?PM!h@+m4?72l5pBpqKioaW=cQu$!l# z3C$NEIka;1d0|J}B~Do^1(?~nOS z@Zy?euK>U4ce63jUO)g400aO5KmZT`1pY4szTa>9ZSxeguJ1_bpXxt-;rD%c3L#>@ zM$eaU0X_eJ84uvKfB+x>2mk_r03ZMe{B8uk=+QquPk}{Z59xWMJ3pr9AHw+@AubM} z=YO{`2-*t>00MvjAOHve0)W8(g}}c^&!Z~tAw7RZ>&NuG6&yWZ!V2{K|7ARY*8&27 z03ZMe00MvjAn>~p_ml;(H0tZ}-ThC{dheleIlITd-eS=090`H0_kUgfyX^m}JOxX$AM=}p;P_4E%)oE@ zU2F@q6A%Cd00BS%5C8-KfuBL(`~9ZhHctV|;urW&U-*4ro`QhmkLh`HIC>s|5$O4! zF)qM400BS%5C8-K0YCr{_+1Em(WBp%r(nKsvXR1+oEzgnp9ke>tP{+FTuBco&m9dv zSnHZ2Sb;^7;Brm%Vpn!ntMD}WxuXiAdE~86lwI@8UpNJ2IbD&C=sPz&8R+Q# zvc~XG3k~56eonFKoZJkqiig$A3DOwu8N#c@N^f25r_SFh3$P)eH|#7U)9lZRy!-Y^ z)d7t{+S-_agU(EoIT$&-n|K1;i^Vh{mi>wDa+hHPV@u!?i0U@!Hudaam^524^IWpa zig%WM7Ggvac3#0t`&uHe0-HdIh&<2h7~^aj{bhoCH2wovI>xO7`w|MzYH@i-vjdT!)T9DqQIU*pWeEb~N=S$2)-ypfY#Z+7HE6$vSV{E*L4Y@|+fr5{A` zZF?lKO-+sp#ip;F6i#F*JA;CMo!+gCa-%Us~MU^ za?-_JX&q8c>%%ia!;;r_U3O&WNMX(*1vbcj9n@N{Me(-`t(7%ndK~Tzkgkb9FwQnJ|qw=O@iBOu?I zW)rk2ygr?Fa;fOjwTo{eW3OL*kzTpRYglSw{^F5)gwwmI(r3yxU4kEtWUR|Br-&Zb zm5@rw9BfAS=#;YHZMqWF?L@JfTqtjrBpLXeM}K1eSqQF}gp_K-_z|kKO1geX`|3;0 zM;_LftkAr;Vtd-_ZCzM~GH1>drw29c&Mh!THceG%dMDgYQ=TxuH{F++&`A$_D$I#4 zuyZZmAHHpFMx->@Tnz_vk&5i?bCIYo2ww8r@Urm6e0c^9jh>z!jeu!vDS;E~gkm2H zZ&cP9_QmH|ANXL-n|ts98%SYbxw$wS!9tuKq);{-7sbHoKWVYKp6(>Z#G_O)%04F- zcH(&e4Vrt`%&f$7=4QO;Tg1y)wTY{4+DxT$`}LJhI#cIAu6yap_D;Gw_Us2d@#4Fh z$|09-p0pOl*=}R9Yt(408)5KRvB#jxRb}%3Ak87tQ_j@mf*TwezuUcAU$G z{%{^StvDZ7<0rGiKX>4)h9nR{8bnt1k6*|Wo=53%2!_L^|Ix|y|kJxYrnV*;>1G3#NBk>!+1{T7^tWOxM&(K3uL0 zs-z2H8lYzrD5}eLdKX{&`st!6^#{BdI<<}$dhzkt~VlImvQ2;(i7Q_p-Cac+Yfu6cP@=Hkq@!Ga4wWsX15v-CNY&w z-iJ(YJ)IMS={UMnURx8{4a{lC?Q9PRnT1jg^!7Nc)yRjj#+ijB5pyn)4;gCB^6oU4 z8d{=-JyW=TX2SSFd>eY*8lMqd%@!QB9)gP>ru0mqETN}RMIrqz?8lY4l>H{9>!Gcw z?LGI=`=`*53O3L-H}M05UtM~jeCY!N`vvXWbeG@#R-OP%x$$MF+J|w~oJ|TA7^86< zieGwHv9X~?busW>N+^%WD)~OxhJZ4G@xt4kyruw?O{U?3M)npfnMdW1EkRd-V`^(NK<(Z?8DT&5zz?n)59v_-e7+BMqx6#4wS2D3HR*y07X2L{APqeFKy-0F+HlV+(NhME}O;cz2mkhLIGz8^%WrrJWc9gOCEn1cW<42Ss_r9Z?272%jjZ$VD-F> z9lI%xZ$<0e?a?UNs`HZ_)M|MzhkAAWM$+vnI8r;bm@Z$)oHT08%aqqXy-J~#qIQ-} zQpJ=!;^O7}oT_SE8%yC==i)ZiOtJ)fayN%J^yAO;-++;`N=SggJo@+#jlw;`&V%c%X53=I&~TJSkWMeJL8kWoGK@D<$Mczx-k4?_a#$HYM(BU?v%`DVw>{`EkZ#~EA zYPYif;FyO7Yfg0V23+?3M>dhNqjE;iom77=S9Dm#1#R>3%>1P7oL)!^C}L` z9au6j+j=e$BJ-fYUP|5_Ua(v8PY(APJLFOtD(N6a7gt`im~m1DcPBP&_D83c72*=# zi>8#me7MT#mUz}8LXDKd2h%PMe}r{umWEb~uau{Xy}6^AsR=za&7dPOQYyxWc9~mB zs-J|v%*PdC21{#CdR2H8SO;U>Y27uJGe&cDR0(qX@^CEmikOEAedY(1InfV)uGbv$ z=^!Nh%aPEs%eCcb>ev6{Rp8PTDVaiOEd_{Nk9zrNTHWD6Yx|?!YoQ}FNQbAj3J+&&Q z8_u&1X+yM+`T&BN6l5gS7aoDE3L@X+RXLJA6TD{i_yNY1XJZ4ruNUUUlJ<@jf8&U; zuRA<=o)hgDJ!<4DIFH-7MYzdleB_{^9XrO+@XPj1eIG1D53kR( zF`$2A)Ao!_-=cimx=2ka$@oHGKcb!iLX{Nkd65!_X*}z=w;$nHIacFC$`1*%GpCf^ z2K4DpT9gxa^%;|G!m)S^)Cr|~RAQQC+8G)wU4azy zzDyq$94g9pAv!)(1ir%i^i|QzdFy615oe3h77d2W(^2-VuCE8ut6xZ2TpQ@lUhY|5 z->{jYKk@d0k9Mk(#jVn0wqk5&*~~i>bw|97t6y{4-FbAgEcOmn-Q#enB8dlnC}Xl^ zDk#XI$8JkJ!1oT~OlWp_M%A%Ryb{;3>M?&=|=UZ3eZ;X}0Xr>$qQ8D2;TH?v=K zc9*!%6@QzcHN}r__~U+|rjfDW{n6g2eKbu6!eU3TFf59PGftnPyQFD0ltk|4#t>HZ;ZS@8XM1W?c(BUy`s{%xl;M*;W@5If6Eho+8EKNt}?&Re7+&C`N4@9duZ_LlMKVXDKW`uR4}WoDrh{YLd_HzU^Ub5x9SFXsV2srhmOo8YG< zw+QcXHH+5=8bKcyyeN$HQ?qoJ4UZ<|U{WRBg z0bAEMCgsdz*m{Z&ZBDyM4@Q?xxmqWqT|p${`nG?HbJiRRLooz()(&a?TA=sK#M zH2!$k@9L9F&T~1rwDZj2B-K1OTT$F`uw8@=L@~9zB1WzC22;9}nL^)1=iYaxe4FaQ zH4~@m#S=InTX-;E`zrs+mG0x2pROaL3|5vH3dLBcx^dKBYmz!hcr#T3!QG4Dyjs|n zF?K+W(IVa{H1r5LQJi>2oB<1;V@Kj6FQx-ih}=BI4yQUVg;pdW@lT}j$i&5889i1L zb>OTzj@ruD(Kc;7ln})S4tM1`?0K{(ny`2%9C=9J?LfSu8ba{DY%zY0GANXIl*TD3 zt;!)$s*1$=;1#hsZL+wlwWnVj?5CJGY?wnLec5#7IN!J7gHSf0Lt@isi#NwX7fEoq zfUA}L75ZocS zySuwAG}uBH&YQiDbocjlkC8J*{d|61HRr6m?y7n;D$=iTzn~A1m)f8wAp8Sj`JSC^ z?69Q5IAb_FovJmuuW3+KG*qwyK!M^~Ko{#_$HR_hG-g5YdO(U!gj9nm-bQqOueY^@+F+-yUuR3280osBG`pG9+5+G&ESLCkUp|1ex9mX#+Yq zIucs6$w)HU06uBOE=HwHH*AhN^9!<^T#@H+#Ye*$BhtuVbcA9~D_C{aiu_dLI^$Yg z?5n=7;u8l!N*ofX|38ZA9sFCkub&eJ_i{3SV^nJSGVs3}8e}e{ElCFcf%MPDNWFV| zA}5iB3y~j{ESOxeQFGrXE zq{x9F@mDe;|4v3DHU@LNYM8%+@f+4+XL{8CCm4S~|C6HSUlhe4$P+ZdxuHy9V9uGw zRh?XaiVhaKiHXwei2PqtwBq=e6pIt7v?ySGkRe4eW0hDKKl9hBRt0I#{WPjgFZyRJ zewNP^bwL)xGNqB?}o89@w`-tO673=@mzsQ_>CtF&4ep+tvRi@?Tm?xK}QY! z%-h3CDvgUsH&b0hOkR7OM5k&lpi7qe#M02igIWzTLE1yBib~ zQVS0IeYU+3d-3J=x2K=ig&7N!^yA#qT4`yaHO`VWhhLktE zrKP2|BH8CR*jml=kcZdpfve2kJ%cOQ#T8C{iG!uCctCDy zsUzFhQonF0=D^wNQXvfor|GU8(W{XL@Si#5VK3&qlZNN!^|kZ0!N>pRp-&ir&qvgh zI7}bY(|^Y+&;JQdOqgfw^o1;PYBK)a6|pb1n?lSH-xfOOrU!L8?p;;vb!+?WHfY;6 z;9U5M-v~HL-Odj~yxzMs6%XnGg~S-1vWDur&hc}WfQRNUpF)c|dbeTu6XimISI?9N z>QO^EIo7wfK0Y2wgXO_y1(XNp%| zEG>a|i%d@;-FMG|A%ok`IG|^Zs))I*e*gCxzj+Y*gmlHbuCWp8=Twt^2VAc2otQqOHh_c>{wvs@jh;!ghljL@mn0x-O2R0Z!SMSn z(Z+x5jLwlVt_^QqDd-|;HcI>HZ|lwMo; z%wsNEtShlT{5mGmGlCaI=Do#V+VswG*}x^(>Wk%DGqzYlh+h=TaDhMnPDxWMQLe`2 zBGQ8@Us;cbChKB~6rbrZBZi8P2hyfp(7QI(AP0{CEbb0BPF@ zZB3-so<~fygTf8!8eJTB=W{dRMpZ;(A)Zu?Oe?@?k!FX>XXQyjU5HJSjnPZ+dvv*nMet% z@QOi07Pdkyt5BPEUAjpbM1+P_OY?^l$=X&l7PrE$t+pe8<gY zp-qTAW#`zK+**pWi)O&?O2EVZztCNpPLF;1GjzWR_dLA$wrZ0fj`Nad);MA@rgdFu zxR5NndkGm#QXo{MbhEvzj7;qE7(o`!dZb{PE>jBqsD+iQBMcAyAF3M{yJ`(} zpZ$QjLcU0s#Y?&qL8ZQm6iG>fSMfdd+)%K!6U#KZ0bER93f+1YKMbrn@;A8Xzrksk zLz^8K{|j8p-{7EsgF6grzpHiUD757fe9;ux3-oOukQ<`_JRu=_G&H-JWRWZHx22Pb z!M2d_2Y*||-KGhlh7IxwMP0J5`EGMtv(1B!2L5LwsGV%5tx&QmsK;QDVyqCqdMqy7 zW@Bw+uu+dV&bp8-Onb5l&%X`bmMK&cIl9qU1~RQyRMN!4g5zJB`@B$^5&7G%10$~x z704adhfOmN-_h#^l^0l+5a7*jnGydsUwttX|6Lb1s$>HEN{!emg zso%3Xq{r!znO7MJ=F@NG%u!Qf!9r*b7z?P0|o3 zpbBF%yNGnHB2yhCI{Af%x38|Z)ybp#>p+^*6hdw!5Q&c2#yWiKO%CZ1?1Qyw)|lmd z>dum<$N4jIzX1oSjOKY_K)sa{v)&8p#!)9H(R%sAFT1aT1Ow!HZ)AwO(0gtierKK0 zo@kxAT*l4^u90-$`1Ze|P9@i~cw$bIu5Wm`JB=EnL%>BR9f``U={Sx0x9E&ww`Q?Y z(H6dnGdr9m4FA)vv9o{MH5*eV>VLB<9a%rU^(x9z^16;_F%JRh{+(y6c9SGokKIJ^ z=VbuipcjPFw5L)B@4wIuWdDWElcguop53vTcq!ie8*)hmNlXGS>Gl~+^7TlIka+** znce0}F%b;lk~SC3az`{d4B zYsYsi`#eJUF53_vO5>1jvYHMr^b8~P)<}*_u$zxN-X-0vv*8SbeeUIq0kQb#Nav*W z(e-l$aVR47E7`??&OC<$7yB?N1^+l${Bckx52Gn&D zfMNw@80zXy^QQD*|&ZP?!31vHesm>E6Q=E`>Ld_1m^oy`&{!A>iV{ol098S zt0LzEQ>#qnz&)PRSP)L6fc&&Kh^&Kc%DuMZ!IL#dUyW|FGE4nB8_&zWsW}GU3b!!D zA>bXjn09$1fFyoX!!y-C?c{&?vVpL^j+V{x0?oU=dvxLT-J$TjB8)5I; zg;hhnEgARP!1JbPyH`c~!n5OGjFN8VMSPj<_h5J}Y_Knic6(v4O1*Lly@F)nblH5! z(qp1He-cv`hdDf*2RP|QmCq!nkgw@FH1C1!xEyxE{{bVG`d#J?IDY1b?<*IhmjvU{ zV0AzaK~DN-Bk=w3)oNvkB=S=5&K)(=A5`VBfcoV3B7C{4zpxcj+l)wdMupjzd^|w- za^mJPZNrUz$ z&s>v|EspasJhY~L@K>piz5Hy$k355iE&+8BMm+)RQlXyRepyi4k5ovB=;6wNlYx)V zutpEdAK{-1f@Y9{>K6T0ebMg~#m4XpS2nk)|b*%Wf?67``?8q9)XWhR{y48 z&Fba$P3QY>$mBLlr*jXvY8A_Xt0%$|b3MAMVKmu$F*jc!VvUN$J8wG~09rtXN)hO( z1AmVR(}wa%br_CQs3x91#c5QesgCXh87{@KQ<4xPJVT?Ll-HO&$crW)42CwP@2gjO zp=kwvUYcgyA`<-&8^#=w;?Pih>8}oLF&Y@-Qk636a-IT$FqKGWD}lg1q0&NBs-LrE zK!lI$q>{NM_*jm?V7?yV$>qDe-)^p|9C50&C4Beue4Aauz?g+D%;Xw$!;?*dA$;u{8sG>8l+O0q7Myi1?w#MqIEkOy$cPK`25I)>e}q zbgQ8)L)K+0)JX3b3E~?v$x4Y)e>lT|Z~_S6!|=r*hWPRMGQjQvkLZpZ8O*(yz+Le? zPdw2uYp*LwK*opp^{YLh^Sp3iK#? z7W{-bI5f*=w6jZgR2QhG@-m!S{0cnvSTm|0{JC;*M9L{RuyBJSNLWyHQBGpq2)#mM zMOR=5&-w8}=`)fgee_>#LvX!vtyO#AA%L5B3da2|G+VdoEiu@`kqLy~tWIKQm3Ejg z>R0J-#{y$V3yUryjf(a0=3h6s4i_M~-KTQS3F$u_Vhedn95t~J*CBM|i_&15yBO|} zGr7R>JrM5o?D9i%kyY1e)7`^^xZhk!n&&>Mn*M3xkwPShkwzy?3f{a9nPaFqT7Ul- z#f669)4Q$8MX(Jjq+uJS8Zsz;xQ(atk8M|~q`bZ2hHET)$Qm?G#vS2WBJTt@LYG3{ z+bP+dpjZ1!SeMZwfT;u)@)6#jqp2WC-ne2-^@F+zXMc3vM5ya}louR4Lh8&Zyk&Qms8r)6nAqw>% z91gg_K3fzd-3R0g5!k$tyidL*15^W?>av4EM!HiD#{aR(f{bTrw;O!@b(wHncsM17 zX;aDg?!~&Y>CD62*iNeX=l&gM}8C?O>qcY=sy(wr$MRy zMGhB|t(fpHa$lz6SpOoI>heFxX?8HiN>xHITcSmWtrFt4j3l%|68WNdm5g{e+luL$ zG^(CqJjKXWN0ShRG&W@pjgu%u4<~y=eW0@5 zze=Me>kN@dAJ(H;0!|M&wFW80Nvr@nBu#%?RNosiI1LqIpjWZ~f8<&e`HQ8kxJ2BD z`l9Bi$|37;ERziQlXz-m6Die3IEqkX((vf-GogRw8co8#bB*I`ef~c^x^CWtz#|IQ z#osS&If6R&-HHAOF&F9{1+1Aip9u#U)CC(^R#mVO!bm#y&jlh@ITO}FSK;QkRn0&G z{-Y`Pcr0=kM3N3;M;+V*O=$fYQcT1KUKU4mg}<>GVFGi=v(T0`8L^&2AFuo=5_GIS z(6Rk_r7lIrlA)WsaH?aIXCYk!TE91~&z7?`ch<{VuvxdOx_@*@x_#SP%~gGR9W^z! zZg{lq+MLQ4X~DC%NHz=5FU?6G=U6x}vr83tylXxeMjU@zcGy<1HW#YUYu>rCOZ~{* zzf@WK!j&g?7}lCGO{S~aj)#J7&DPx#sKkvL*7u<#t@d$4xA_ADLYks|Zc|dEEkg$#rgj+i%Npj5<&)Oj-0v;HN?C;) z7^I>{ZZyY$!)W5yn#Q$Jvo*s``x&q6)5RtQ@bU4FcfXsDJ{lF?^_BA4Rp;0cJN~Hb z`95xUem1L_XS2t%<@0hi%UX+|)YrGcK@EJ%AB87w?%n#g&kxfG0qdKSt_|(&K6SqW zUVm@$VB_9z=eOo_7OfXoH#vP2-;dAEHr)IhwO6Mc{MoFIjxPt?-!?}_t()3fSJ&CY z%wFlYu;qncaGT6qe-+lgv9U8f3A?gn`ggNs+}b4bb|?9hnx107k zCGzJf1T(YD)L#$T;mpEp6JHLQanFK19OhU^I5%HD_2+Sey|7&Hd3(vX+PRvG7`~}K za*OCXiqCCMT(`^O3iDWM>n9UKUccNDcf!1R7%0_^sH?euZH-viv3x3uN2y z@FjoY6!3hVAtK-tdqjjqNMSR@z*BNYe?vki@$?tkhsY|<8}xAl$<8k;C5m|piu`#B zupzyx!wE1I4fFHuQwgw;>t3LRA2}4Dpz{tlN0wuhwoQfMmcl~fe@vP#`%_@sn`w9U zZqG`M(E@Q(Z@D0T!PV?;20y+E-W9>sTBix>*bKpy)d>a0ANCi((LFICrr*XU4B)4K z2w*_^61~rR0BK07g8#Vcd>0IQhalN!4*6X*CU?frtzr)<+S;l+X2C;Yya!9R6euOu zQC*^H$g%d~G{lZ= z5@AX*qdRLD4Sn!<5l!b`Fq@VuRlPXuIFvo|*+Pgc;iW(D(ezO0Pvqg$n}WIwI9!jz zm|@6{uL*rl%3||sH4S^rsS*R{E#QTkLJ)@vVadW0-&?Gtd4`JA-~AF396VUFt1-Ar<~{`owe%lEBr{np|CxIPB(rCPxXW^=)b=9@f&d9kkHdu| z3iZ$)$6DN1agPC>FLJ;^1^^4bsF5oMSs^5QW(xqdZ>oUF$GmTsW$kK>Gw0Hao;3Hc z^4q1+CNHwo-hwMHMo0OhI{=CUu>?TByR}~|XV0Z gmOLrTpN(W7M)X^3XtVEnlw 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⁣!jlw9z*YBI#EsiTPxSw~jDm@eB#P0S= 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