Source code for uq_physicell.utils.distances

import numpy as np

[docs] def SumSquaredDifferences(dic_model_data:dict, dic_obs_data:dict)-> float: """ Compute the sum of squared differences between simulation outputs and observational data. Args: dic_model_data (dict): Dictionary containing model data with keys "time" and "value". dic_obs_data (dict): Dictionary containing observational data with keys "time" and "value". Returns: float: The sum of squared differences between the model data and observational data. """ indices_model = np.where(np.isin(dic_model_data["time"], dic_obs_data["time"]))[0] indices_obsData = np.where(np.isin(dic_obs_data["time"], dic_model_data["time"]))[0] if len(indices_model) == 0 or len(indices_obsData) == 0: raise ValueError("No matching time points found between model data and observational data.") diff = dic_model_data["value"][indices_model] - dic_obs_data["value"][indices_obsData] return np.sum(diff ** 2)
[docs] def Manhattan(dic_model_data:dict, dic_obs_data:dict)-> float: """ Compute the Manhattan distance (L1 norm) between simulation outputs and observational data. Args: dic_model_data (dict): Dictionary containing model data with keys "time" and "value". dic_obs_data (dict): Dictionary containing observational data with keys "time" and "value". Returns: float: The Manhattan distance between the model data and observational data. """ indices_model = np.where(np.isin(dic_model_data["time"], dic_obs_data["time"]))[0] indices_obsData = np.where(np.isin(dic_obs_data["time"], dic_model_data["time"]))[0] if len(indices_model) == 0 or len(indices_obsData) == 0: raise ValueError("No matching time points found between model data and observational data.") diff = dic_model_data["value"][indices_model] - dic_obs_data["value"][indices_obsData] return np.sum(np.abs(diff))
[docs] def Chebyshev(dic_model_data:dict, dic_obs_data:dict)-> float: """ Compute the Chebyshev distance (L∞ norm) between simulation outputs and observational data. Args: dic_model_data (dict): Dictionary containing model data with keys "time" and "value". dic_obs_data (dict): Dictionary containing observational data with keys "time" and "value". Returns: float: The Chebyshev distance between the model data and observational data. """ indices_model = np.where(np.isin(dic_model_data["time"], dic_obs_data["time"]))[0] indices_obsData = np.where(np.isin(dic_obs_data["time"], dic_model_data["time"]))[0] if len(indices_model) == 0 or len(indices_obsData) == 0: raise ValueError("No matching time points found between model data and observational data.") diff = dic_model_data["value"][indices_model] - dic_obs_data["value"][indices_obsData] return np.max(np.abs(diff))