Source code for pystoned.utils.sweet

# import dependencies
import numpy as np
from scipy.spatial.distance import cdist
from .tools import trans_list, to_2d_list


[docs] def sweet(x): """Sweet spot approach Args: x (float): input variables. Returns: list: active concavity constraint. """ # transform data df = np.asmatrix(to_2d_list(trans_list(x))) # calculate distance matrix distance = cdist(df, df) distance[np.diag_indices_from(distance)] = np.nan # calculate distance cut distcut = np.asmatrix(np.nanpercentile(distance, 3, axis=0)) # find concavity constraint in sweet spot distance = np.where(np.isnan(distance), 0, distance) cutactive = np.zeros((len(distance), len(distance))) for i in range(len(distance)): for j in range(len(distance)): if distance[i, j] <= distcut[:, i]: cutactive[i, j] = 1 return to_2d_list(trans_list(cutactive))