import os import pickle import numpy as np def find_exact_match(matrix, query_vector, decimals=9): """ Finds the index of the vector in 'matrix' that is the closest match to 'query_vector' when considering rounding to a specified number of decimal places. Parameters: - matrix: 2D numpy array where each row is a vector. - query_vector: 1D numpy array representing the vector to be matched. - decimals: Number of decimals to round to for the match. Returns: - Index of the exact match if found, or -1 if no match is found. """ # Round the matrix and query vector to the specified number of decimals rounded_matrix = np.round(matrix, decimals=decimals) rounded_query = np.round(query_vector, decimals=decimals) # Find the index where all elements match matches = np.all(rounded_matrix == rounded_query, axis=1) # Return the index if a match is found, otherwise return -1 if np.any(matches): return np.where(matches)[0][0] # Return the first match else: return -1 def file_cache(file_path): def decorator(func): def wrapper(*args, **kwargs): # Ensure the directory exists dir_path = os.path.dirname(file_path) if not os.path.exists(dir_path): os.makedirs(dir_path, exist_ok=True) print(f"Created directory {dir_path}") # Check if the file already exists if os.path.exists(file_path): # Load from cache with open(file_path, "rb") as f: print(f"Loading cached data from {file_path}") return pickle.load(f) else: # Compute and save to cache result = func(*args, **kwargs) with open(file_path, "wb") as f: pickle.dump(result, f) print(f"Saving new cache to {file_path}") return result return wrapper return decorator