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