Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
corrs = np.array([corrs] * int(((num_features * (num_features - 1)) / 2)))
corrs = squareform(corrs)
np.fill_diagonal(corrs, 1.0)
else:
raise ValueError(
"Correlations must be num_features x num_feature, flattend numpy array/list or scalar"
)
if not isPSD(corrs):
if forcePSD:
# Tell user their correlations are being recomputed if they didnt ask to save them as they might not realize
if not return_new_corrs:
print(
"Correlation matrix is not positive semi-definite. Solved for new correlation matrix."
)
_corrs = np.array(nearestPSD(corrs, nit))
else:
raise ValueError(
"Correlation matrix is not positive semi-definite. Pymer4 will not generate inaccurate multivariate data. Use the forcePD argument to automatically solve for the closest desired correlation matrix."
)
else:
_corrs = corrs
# Rescale correlation matrix by variances, given standard deviations of features
sd = np.diag(sigma)
# R * Vars = R * SD * SD
cov = _corrs.dot(sd.dot(sd))
X = np.random.multivariate_normal(mu, cov, size=num_obs)
if return_new_corrs:
return X, _corrs