import numpy as np from hypothesis import strategies as st MINIMUM_NETWORK_DIMENSION = 3 def generate_kohonen_samples(num_features): """Custom Hypothesis strategy to generate matrix X with consistent feature length.""" return st.lists( st.lists( st.floats(allow_nan=False, allow_infinity=False, min_value=-1e6, max_value=1e6), min_size=num_features, max_size=num_features # Consistent feature length ), min_size=1, max_size=100 ).map(lambda x: np.array(x, dtype=np.float32)) def generate_kohonen_weights(width, height, feature_size): """Custom Hypothesis strategy to generate a weights matrix with specified dimensions and feature size.""" return st.lists( st.lists( st.lists( st.floats(min_value=-10, max_value=10), min_size=feature_size, max_size=feature_size # Each feature vector has a consistent feature size ), min_size=width, max_size=width # Consistent width for each row ), min_size=height, max_size=height # Consistent height for the matrix ).map(lambda x: np.array(x, dtype=np.float32))