out_y = copy.deepcopy(in_x)
if isinstance(in_x, dict):
if NodeType.TYPE in in_x.keys():
_type = in_x[NodeType.TYPE]
name = name + "-" + _type
_value = json2space(in_x[NodeType.VALUE], name=name)
if _type == "choice":
out_y = eval("hp.hp.choice")(name, _value)
else:
if _type in ["loguniform", "qloguniform"]:
_value[:2] = np.log(_value[:2])
out_y = eval("hp.hp." + _type)(name, *_value)
else:
out_y = dict()
for key in in_x.keys():
out_y[key] = json2space(in_x[key], name + "[%s]" % str(key))
elif isinstance(in_x, list):
out_y = list()
for i, x_i in enumerate(in_x):
if isinstance(x_i, dict):
if NodeType.NAME not in x_i.keys():
raise RuntimeError(
"\"_name\" key is not found in this nested search space."
)
out_y.append(json2space(x_i, name + "[%d]" % i))
return out_y