def scalar_function_of_normal( store_name: str, N: int, M: int, X_std: float, noise_std: float, CDF_scale: NP.Array = None, CDF_loc: NP.Array = None, pre_function_with_parameters: function.CallableWithParameters = None, function_with_parameters: function.CallableWithParameters = None ) -> data.Store: X_marginal = distribution.Univariate('norm', loc=0, scale=X_std) X_dist = distribution.Multivariate.Independent(M=M, marginals=X_marginal) noise_dist = (distribution.Multivariate.Normal(mean=zeros(1, dtype=float), covariance=noise_std**2 * eye(1, dtype=float)) if noise_std > EFFECTIVELY_ZERO else None) return function.sample( store_dir=store_dir(store_name, noise_std, CDF_scale), N=N, X_distribution=X_dist, X_sample_design=distribution.SampleDesign.LATIN_HYPERCUBE, CDF_scale=CDF_scale, CDF_loc=CDF_loc, pre_function_with_parameters=pre_function_with_parameters, functions_with_parameters=function_with_parameters, noise_distribution=noise_dist, noise_sample_design=distribution.SampleDesign.LATIN_HYPERCUBE)
def scalar_function_of_normal( store_name: str, N: int, M: int, X_std: float, noise_std: float, CDF_scale: NP.Array = None, CDF_loc: NP.Array = None, pre_function_with_parameters: function.CallableWithParameters = None, function_with_parameters: function.CallableWithParameters = None ) -> data.Store: X_marginal = distribution.Univariate('norm', loc=0, scale=X_std) X_dist = distribution.Multivariate.Independent(M=M, marginals=X_marginal) noise_dist = (distribution.Multivariate.Normal(mean=zeros(1, dtype=float), covariance=noise_std**2 * eye(1, dtype=float)) if noise_std > EFFECTIVELY_ZERO else None) df, meta = function.sample( N=N, X_distribution=X_dist, X_sample_design=distribution.SampleDesign.LATIN_HYPERCUBE, CDF_scale=CDF_scale, CDF_loc=CDF_loc, pre_function_with_parameters=pre_function_with_parameters, functions_with_parameters=function_with_parameters, noise_distribution=noise_dist, noise_sample_design=distribution.SampleDesign.LATIN_HYPERCUBE) if noise_dist is None: dir_ = BASE_PATH / NOISELESS_DIR / store_name elif CDF_scale is None: dir_ = BASE_PATH / NORMAL_DIR / store_name else: dir_ = BASE_PATH / NORMAL_CDF_DIR / store_name return data.Store.from_df(dir_=dir_, df=df, meta=meta)