def test_update_active_mask(self): vec = BoolVector(False, 10) self.assertTrue(vec.updateActiveMask("1-2,5")) self.assertTrue(vec[1]) self.assertTrue(vec[2]) self.assertTrue(vec[5]) self.assertFalse(vec[4]) vec = BoolVector(False, 10) self.assertTrue(vec.updateActiveMask("1-5,2,3")) self.assertTrue(vec[1]) self.assertTrue(vec[2]) self.assertTrue(vec[3]) self.assertTrue(vec[4]) self.assertTrue(vec[5]) self.assertFalse(vec[0]) self.assertFalse(vec[6]) vec = BoolVector(False, 10) self.assertTrue(vec.updateActiveMask("5,6,7,15")) self.assertTrue(vec[5]) self.assertTrue(vec[6]) self.assertTrue(vec[7]) self.assertFalse(vec[4]) self.assertFalse(vec[8]) self.assertEqual(len(vec), 16)
def test_custom_realizations(self): config_file = self.createTestPath('local/poly_example/poly.ert') with ErtTestContext('test_custom_realizations', config_file) as work_area: ert = work_area.getErt() notifier = ErtCliNotifier(ert, config_file) ERT.adapt(notifier) args = Namespace(realizations="0-4,7,8") res = model_factory._realizations(args) ensemble_size = ERT.ert.getEnsembleSize() mask = BoolVector(default_value=False, initial_size=ensemble_size) mask.updateActiveMask("0-4,7,8") self.assertEqual(mask, res)
def _realizations(args): ensemble_size = ERT.enkf_facade.get_ensemble_size() mask = BoolVector(default_value=False, initial_size=ensemble_size) if args.realizations is None: default = "0-{}".format(ensemble_size - 1) mask.updateActiveMask(default) return mask validator = RangeStringArgument(ensemble_size) validated = validator.validate(args.realizations) if validated.failed(): raise ArgumentTypeError( "Defined realizations is not within range of ensemble size: {}".format(args.realizations)) mask.updateActiveMask(args.realizations) return mask
def getActiveRealizationsMask(self): count = getRealizationCount() mask = BoolVector(default_value=False, initial_size = count) if not mask.updateActiveMask(self.getValue()): raise ValueError('Error while parsing range string "%s"!' % self.getValue()) if len(mask) != count: raise ValueError("Mask size changed %d != %d!" % (count, len(mask))) return mask
def load(self, args): arguments = splitArguments(args) if len(arguments) < 1: self.lastCommandFailed("Loading requires a realization mask.") return False realization_count = self.ert().getEnsembleSize() mask = BoolVector(False, realization_count) mask_success = mask.updateActiveMask(arguments[0]) if not mask_success: self.lastCommandFailed("The realization mask: '%s' is not valid." % arguments[0]) return False fs = self.ert().getEnkfFsManager().getCurrentFileSystem() self.ert().loadFromForwardModel(mask, 0, fs)