mirror of https://gitlab.com/pamhyr/pamhyr2
Ensemble: Switch data pid to data ref, and minor change.
parent
56217186ff
commit
54f5c7c548
|
|
@ -31,7 +31,7 @@ class Ensemble(SQLSubModel):
|
||||||
|
|
||||||
def __init__(self, id: int = -1,
|
def __init__(self, id: int = -1,
|
||||||
name: str = "",
|
name: str = "",
|
||||||
function=-1, range=[], data_pid=-1,
|
function=-1, range=[], target_data=None,
|
||||||
status=None, owner_scenario=-1):
|
status=None, owner_scenario=-1):
|
||||||
super(Ensemble, self).__init__(
|
super(Ensemble, self).__init__(
|
||||||
id=id, status=status,
|
id=id, status=status,
|
||||||
|
|
@ -42,7 +42,7 @@ class Ensemble(SQLSubModel):
|
||||||
self._type = "generic"
|
self._type = "generic"
|
||||||
self._function = function
|
self._function = function
|
||||||
self._range = range
|
self._range = range
|
||||||
self._data_pid = data_pid
|
self._target_data = target_data
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def _db_create(cls, execute, ext=""):
|
def _db_create(cls, execute, ext=""):
|
||||||
|
|
@ -84,6 +84,7 @@ class Ensemble(SQLSubModel):
|
||||||
new = []
|
new = []
|
||||||
scenario = data["scenario"]
|
scenario = data["scenario"]
|
||||||
functions = data["ens_functions"]
|
functions = data["ens_functions"]
|
||||||
|
stricklers = data["stricklers"]
|
||||||
loaded = data['loaded_pid']
|
loaded = data['loaded_pid']
|
||||||
|
|
||||||
table = execute(
|
table = execute(
|
||||||
|
|
@ -115,6 +116,15 @@ class Ensemble(SQLSubModel):
|
||||||
|
|
||||||
function = next(
|
function = next(
|
||||||
filter(fn, functions.lst),
|
filter(fn, functions.lst),
|
||||||
|
None
|
||||||
|
)
|
||||||
|
|
||||||
|
target_data = next(
|
||||||
|
filter(
|
||||||
|
lambda s: s._pamhyr_id == data_pid,
|
||||||
|
stricklers.lst
|
||||||
|
),
|
||||||
|
None
|
||||||
)
|
)
|
||||||
|
|
||||||
rdata = cls._decode_range(range, range_len)
|
rdata = cls._decode_range(range, range_len)
|
||||||
|
|
@ -123,6 +133,7 @@ class Ensemble(SQLSubModel):
|
||||||
id, name=name,
|
id, name=name,
|
||||||
function=function,
|
function=function,
|
||||||
range=rdata,
|
range=rdata,
|
||||||
|
target_data=target_data,
|
||||||
status=data["status"],
|
status=data["status"],
|
||||||
owner_scenario=owner_scenario
|
owner_scenario=owner_scenario
|
||||||
)
|
)
|
||||||
|
|
@ -150,6 +161,10 @@ class Ensemble(SQLSubModel):
|
||||||
if self._function._type == "generic":
|
if self._function._type == "generic":
|
||||||
fid = -1
|
fid = -1
|
||||||
|
|
||||||
|
data_pid = -1
|
||||||
|
if self._target_data is not None:
|
||||||
|
data_pid = self._target_data._pamhyr_id
|
||||||
|
|
||||||
execute(
|
execute(
|
||||||
"INSERT INTO " +
|
"INSERT INTO " +
|
||||||
"ensemble(pamhyr_id, deleted, name, type, " +
|
"ensemble(pamhyr_id, deleted, name, type, " +
|
||||||
|
|
@ -159,7 +174,7 @@ class Ensemble(SQLSubModel):
|
||||||
self.pamhyr_id, self.is_deleted(),
|
self.pamhyr_id, self.is_deleted(),
|
||||||
self._name, self._type,
|
self._name, self._type,
|
||||||
fid, self._function._name, brange, length,
|
fid, self._function._name, brange, length,
|
||||||
self._data_pid, self._status.scenario_id
|
data_pid, self._status.scenario_id
|
||||||
)
|
)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
@ -175,3 +190,8 @@ class Ensemble(SQLSubModel):
|
||||||
data_format = ">" + ''.join(itertools.repeat("d", length))
|
data_format = ">" + ''.join(itertools.repeat("d", length))
|
||||||
|
|
||||||
return struct.unpack(data_format, brange)
|
return struct.unpack(data_format, brange)
|
||||||
|
|
||||||
|
def get_sample(self, nb):
|
||||||
|
return self._function.get_sample(
|
||||||
|
self._range, nb
|
||||||
|
)
|
||||||
|
|
|
||||||
|
|
@ -150,12 +150,11 @@ class Uniform(Function):
|
||||||
name=name, script=script
|
name=name, script=script
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_sample(self, ens_range):
|
def get_sample(self, ens_range, nb):
|
||||||
b = ens_range[0]
|
b = ens_range[0]
|
||||||
t = ens_range[1]
|
t = ens_range[1]
|
||||||
n = ens_range[2]
|
|
||||||
|
|
||||||
step = (t - b) / n
|
step = (t - b) / nb
|
||||||
|
|
||||||
return np.arange(b, t, step)
|
return np.arange(b, t, step)
|
||||||
|
|
||||||
|
|
@ -173,11 +172,11 @@ class Custom(Function):
|
||||||
|
|
||||||
self._type = "custom"
|
self._type = "custom"
|
||||||
|
|
||||||
def get_sample(self, ens_range):
|
def get_sample(self, ens_range, nb):
|
||||||
try:
|
try:
|
||||||
# Run script to (re)define the sample function
|
# Run script to (re)define the sample function
|
||||||
f = eval(self._script)
|
f = eval(self._script)
|
||||||
return f(ens_range)
|
return f(ens_range, nb)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger_exception(e)
|
logger_exception(e)
|
||||||
return None # TODO: Raise helpful exception
|
return None # TODO: Raise helpful exception
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue