diff --git a/pyproject.toml b/pyproject.toml index fe3068bd..4c99eb1b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,8 +30,8 @@ dependencies = [ "squarify", "dill", "tqdm", - "qcg-pilotjob~=0.13.0", - "qcg-pilotjob-executor-api~=0.13.0", + "qcg-pilotjob~=0.14", + "qcg-pilotjob-executor-api~=0.14", "h5py", "tomli", "fipy", diff --git a/requirements.txt b/requirements.txt index 2e4380e8..8145cba1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -26,7 +26,7 @@ fsspec==2024.12.0 future==1.0.0 google-auth==2.37.0 greenlet==3.1.1 -h11==0.14.0 +h11==0.16.0 h5py==3.12.1 idna==3.10 imagesize==1.4.1 diff --git a/src/easyvvuq/actions/execute_qcgpj.py b/src/easyvvuq/actions/execute_qcgpj.py index 467bdd20..8458012a 100644 --- a/src/easyvvuq/actions/execute_qcgpj.py +++ b/src/easyvvuq/actions/execute_qcgpj.py @@ -38,6 +38,7 @@ def template() -> Tuple[str, Dict[str, Any]]: 'stderr': '${stderr}', 'venv': '${venv}', 'modules': ${modules}, + 'env': ${env}, 'model': '${model}', 'model_opts': ${model_opts} } @@ -50,6 +51,7 @@ def template() -> Tuple[str, Dict[str, Any]]: 'stderr': 'stderr', 'venv': '', 'modules': [], + 'env': {}, 'model': 'default', 'model_opts': {} } @@ -77,6 +79,7 @@ def template() -> Tuple[str, Dict[str, Any]]: 'stderr': '${stderr}', 'venv': '${venv}', 'modules': ${modules}, + 'env': ${env}, 'model': '${model}', 'model_opts': ${model_opts} }, @@ -97,6 +100,7 @@ def template() -> Tuple[str, Dict[str, Any]]: 'stderr': 'stderr', 'venv': '', 'modules': [], + 'env': {}, 'model': 'default', 'model_opts': {}, 'numCores': 1, diff --git a/src/easyvvuq/sampling/mc_sampler.py b/src/easyvvuq/sampling/mc_sampler.py index 5a19003f..cac87f8f 100644 --- a/src/easyvvuq/sampling/mc_sampler.py +++ b/src/easyvvuq/sampling/mc_sampler.py @@ -33,7 +33,7 @@ class MCSampler(RandomSampler, sampler_name='MC_sampler'): and variance of the different QoIs. """ - def __init__(self, vary, n_mc_samples, rule='latin_hypercube', **kwargs): + def __init__(self, vary, n_mc_samples, rule='latin_hypercube', seed=None, **kwargs): """ Parameters @@ -53,6 +53,10 @@ def __init__(self, vary, n_mc_samples, rule='latin_hypercube', **kwargs): Other options include 'random', which is a fully random Monte Carlo sampling plan. + seed : int + The seed that will be used in sampling random variable. + If provided ensures reproducible results. + Returns ------- None. @@ -67,6 +71,8 @@ def __init__(self, vary, n_mc_samples, rule='latin_hypercube', **kwargs): self.n_mc_samples = n_mc_samples # sampling rule self.rule = rule + # seed + self.seed = seed # joint distribution self.joint = cp.J(*list(vary.values())) # create the Saltelli sampling plan @@ -113,7 +119,7 @@ def saltelli(self, n_mc): self.max_num = n_mc * (self.n_params + 2) logging.debug('Generating {} input samples spread over {} sample matrices.'.format( self.max_num, self.n_params + 2)) - input_samples = self.joint.sample(2 * n_mc, rule=self.rule).T + input_samples = self.joint.sample(2 * n_mc, rule=self.rule, seed=self.seed).T # Matrix M1, the sample matrix # M_1 = self.joint.sample(n_mc, rule=self.rule).T M_1 = input_samples[0:n_mc]