| 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. |
| """ |
| |
| rounded_matrix = np.round(matrix, decimals=decimals) |
| rounded_query = np.round(query_vector, decimals=decimals) |
|
|
| |
| matches = np.all(rounded_matrix == rounded_query, axis=1) |
|
|
| |
| if np.any(matches): |
| return np.where(matches)[0][0] |
| else: |
| return -1 |
|
|
| def file_cache(file_path): |
| def decorator(func): |
| def wrapper(*args, **kwargs): |
| |
| 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}") |
|
|
| |
| if os.path.exists(file_path): |
| |
| with open(file_path, "rb") as f: |
| print(f"Loading cached data from {file_path}") |
| return pickle.load(f) |
| else: |
| |
| 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 |