| | 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 |