Comparing Model Ouputs

Comparing Model Ouputs#

In this example we show how to compare outputs across iterations or across models. Here we illustrate using two iterations from the same project, but thanks to the use of standardised KPIs, results can be compared across model years or even across cities.

sphinx_gallery_thumbnail_path = ‘../../examples/result_analysis/pax_in_network.png’

from pathlib import Path

from polaris.analyze.kpi_comparator import KpiComparator
from polaris.analyze.result_kpis import ResultKPIs
from polaris.runs.convergence.convergence_iteration import ConvergenceIteration
from polaris.runs.scenario_compression import ScenarioCompression
from polaris.utils.database.migration_manager import MigrationManager
from polaris.utils.database.standard_database import DatabaseType
project_dir = Path("/tmp/Bloomington")

iteration_3 = ConvergenceIteration.from_dir(project_dir / "Bloomington_iteration_3")
iteration_4 = ConvergenceIteration.from_dir(project_dir / "Bloomington_iteration_4")

# This is generally not needed unless you are analysing results from an older model
MigrationManager.upgrade(
    ScenarioCompression.maybe_extract(iteration_3.files.demand_db), DatabaseType.Demand, redo_triggers=False
)
MigrationManager.upgrade(
    ScenarioCompression.maybe_extract(iteration_4.files.demand_db), DatabaseType.Demand, redo_triggers=False
)

c = KpiComparator()
c.add_run(ResultKPIs.from_iteration(iteration_3), "A label (it3)")
c.add_run(ResultKPIs.from_iteration(iteration_4), "A diff label [it4]")
c.plot_everything()
Traceback (most recent call last):
  File "/home/jamie/git/anl/polarislib/docs/examples/result_analysis/plot_compare_iterations.py", line 25, in <module>
    iteration_3 = ConvergenceIteration.from_dir(project_dir / "Bloomington_iteration_3")
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/jamie/git/anl/polarislib/polaris/runs/convergence/convergence_iteration.py", line 57, in from_dir
    iteration.files = PolarisInputs.from_dir(Path(dir), db_name)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/jamie/git/anl/polarislib/polaris/runs/polaris_inputs.py", line 24, in from_dir
    raise FileNotFoundError(f"No such directory {dir}")
FileNotFoundError: No such directory /tmp/Bloomington/Bloomington_iteration_3

Total running time of the script: (0 minutes 0.003 seconds)

Gallery generated by Sphinx-Gallery