Skip to content

Commit

Permalink
run black linter
Browse files Browse the repository at this point in the history
  • Loading branch information
jamiecook committed Feb 5, 2024
1 parent e6b5a75 commit 99720f2
Show file tree
Hide file tree
Showing 8 changed files with 252 additions and 315 deletions.
155 changes: 76 additions & 79 deletions aequilibrae/paths/odme.py

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions aequilibrae/paths/odme_/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
This is copied from paths.results.__init__.py
"""

__author__ = "Mittun Sudhahar ($Author: Mittun Sudhahar $)"
__version__ = "1.0"
__revision__ = "$Revision: 1 $"
Expand Down
110 changes: 63 additions & 47 deletions aequilibrae/paths/odme_/results.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,33 +10,55 @@
# ADD FUNCTIONALITY TO SPLIT DATA INTO A: DEPENDENT ON ITERATION, B: DEPENDENT ON COUNT VOLUME
# ADD A WAY TO SAVE B TO CSV's
class ODMEResults(object):
""" Results and statistics of an ODME procedure.
See Use examples or docstring of ODME for how to use.
"""Results and statistics of an ODME procedure.
See Use examples or docstring of ODME for how to use.
User interaction methods include:
get_cumulative_factors()
get_iteration_statistics()
get_link_statistics()
"""

# Columns for various dataframes:

# This one get written to the procedure_report
ITERATION_COLS = ["class", "Outer Loop #", "Inner Loop #", "Total Iteration #",
"Total Run Time (s)", "Loop Time (s)", "Convergence", "Inner Convergence",
"Flow Objective", "Reg Objective",
'mean_factor', 'median_factor', 'std_deviation_factor',
'variance_factor', 'min_factor', 'max_factor']
ITERATION_COLS = [
"class",
"Outer Loop #",
"Inner Loop #",
"Total Iteration #",
"Total Run Time (s)",
"Loop Time (s)",
"Convergence",
"Inner Convergence",
"Flow Objective",
"Reg Objective",
"mean_factor",
"median_factor",
"std_deviation_factor",
"variance_factor",
"min_factor",
"max_factor",
]

# This only for debugging
LINK_COLS = ["class", "link_id", "direction",
"Outer Loop #", "Inner Loop #", "Total Iteration #",
"obs_volume", "assign_volume", "Assigned - Observed"]
LINK_COLS = [
"class",
"link_id",
"direction",
"Outer Loop #",
"Inner Loop #",
"Total Iteration #",
"obs_volume",
"assign_volume",
"Assigned - Observed",
]

# For logging different iterations:
INNER, OUTER, FINAL_LOG = 0, 1, 2

def __init__(self, odme: 'ODME') -> None:
def __init__(self, odme: "ODME") -> None:
"""
Initialises necessary fields from odme object in order to generate
statistics and results.
Expand Down Expand Up @@ -69,18 +91,11 @@ def get_cumulative_factors(self) -> pd.DataFrame:
Return the cumulative factors (ratio of final to initial matrix) in a pandas dataframe.
"""
cumulative_factors = []
for initial, final, name in zip(
self.odme.original_demands,
self.odme.demands,
self.odme.class_names
):
for initial, final, name in zip(self.odme.original_demands, self.odme.demands, self.odme.class_names):
# Get cumulative factors for this demand matrix and store them:
factors = np.nan_to_num(final / initial, nan=1)
cumulative_factors.append(
pd.DataFrame({
"class": [name for _ in range(final.size)],
"Factors": factors.ravel()
})
pd.DataFrame({"class": [name for _ in range(final.size)], "Factors": factors.ravel()})
)

return pd.concat(cumulative_factors, ignore_index=True)
Expand Down Expand Up @@ -120,9 +135,7 @@ def log_iter(self, iter_type: int) -> None:
elif iter_type == self.FINAL_LOG:
self.__prepare_final()
else:
raise ValueError(
f"\'{iter_type}\' is not a valid type of iteration!"
)
raise ValueError(f"'{iter_type}' is not a valid type of iteration!")

self.__log_stats()

Expand All @@ -146,7 +159,7 @@ def __update_iteration_stats(self) -> None:
# Create Data:
for cls_name, factor_stats in zip(self.odme.class_names, self.current_factors):
data = dict()

data["class"] = [cls_name]
data["Outer Loop #"] = [self.outer]
data["Inner Loop #"] = [self.inner]
Expand All @@ -156,7 +169,7 @@ def __update_iteration_stats(self) -> None:
data["Convergence"] = [self.odme.last_convergence]
data["Inner Convergence"] = [self.odme.convergence_change]
data["Flow Objective"] = [self.odme.flow_obj]
data["Reg Objective"] = [self.odme.reg_obj] # Only relevant for reg_spiess
data["Reg Objective"] = [self.odme.reg_obj] # Only relevant for reg_spiess
data["mean_factor"] = factor_stats["mean_factor"]
data["median_factor"] = factor_stats["median_factor"]
data["std_deviation_factor"] = factor_stats["std_deviation_factor"]
Expand All @@ -181,13 +194,12 @@ def __update_link_stats(self) -> None:
Appends the newest set of link statistics.
"""
data = self.odme.count_volumes.copy(deep=True)
data[ "Outer Loop #"] = [self.outer for _ in range(len(data))]
data["Outer Loop #"] = [self.outer for _ in range(len(data))]
data["Inner Loop #"] = [self.inner for _ in range(len(data))]
data["Total Iteration #"] = [self.total_iter for _ in range(len(data))]
data["Assigned - Observed"] = (
self.odme.count_volumes['assign_volume'].to_numpy() -
self.odme.count_volumes["obs_volume"].to_numpy()
)
self.odme.count_volumes["assign_volume"].to_numpy() - self.odme.count_volumes["obs_volume"].to_numpy()
)
self.link_stats.append(data)

def record_factor_stats(self, factors: list[np.ndarray]) -> None:
Expand All @@ -198,20 +210,22 @@ def record_factor_stats(self, factors: list[np.ndarray]) -> None:
# Create statistics on all new factors:
self.current_factors = []
for factor in factors:
self.current_factors.append({
'mean_factor' : np.mean(factor),
'median_factor': np.median(factor),
'std_deviation_factor' : np.std(factor),
'variance_factor' : np.var(factor),
'min_factor' : np.min(factor),
'max_factor' : np.max(factor)
})
self.current_factors.append(
{
"mean_factor": np.mean(factor),
"median_factor": np.median(factor),
"std_deviation_factor": np.std(factor),
"variance_factor": np.var(factor),
"min_factor": np.min(factor),
"max_factor": np.max(factor),
}
)

# Extra Utilities:
def init_timer(self) -> None:
"""
Initialises the internal times (for statistics purposes).
Should be run when the ODME procedure begins execution.
"""
self.time = time.time()
Expand Down Expand Up @@ -246,11 +260,13 @@ def __reset_current_factors(self) -> None:
"""
self.current_factors = []
for _ in self.odme.classes:
self.current_factors.append({
'mean_factor' : None,
'median_factor': None,
'std_deviation_factor' : None,
'variance_factor' : None,
'min_factor' : None,
'max_factor' : None
})
self.current_factors.append(
{
"mean_factor": None,
"median_factor": None,
"std_deviation_factor": None,
"variance_factor": None,
"min_factor": None,
"max_factor": None,
}
)
Loading

0 comments on commit 99720f2

Please sign in to comment.