Skip to content

Commit

Permalink
Merge pull request #69 from gramaziokohler/68-bug-handling-of-databool
Browse files Browse the repository at this point in the history
68 bug handling of databool
  • Loading branch information
funkchaser authored Feb 17, 2025
2 parents ccc05c4 + cbad4eb commit 761d031
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 22 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
* added a script and a component to merge datasets (#66)

### Changed
* fixed DataBool (#68)
* fixed GetOneSample (#68)

### Removed

Expand Down
2 changes: 1 addition & 1 deletion src/aixd_ara/components/ara_DatasetOneSample/code.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
cid = component_id(session_id(), ghenv.Component, "DatasetOneSample")


if not item:
if item is None:
item = -1

if get:
Expand Down
48 changes: 31 additions & 17 deletions src/aixd_ara/controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,16 @@ def cast_to_python_type(self, dataobject_name, value):
elif isinstance(dobj, DataReal):
castvalue = [float(v) for v in value]
elif isinstance(dobj, DataBool):
castvalue = [bool(v) for v in value]
castvalue = []
for v in value:
if isinstance(v, bool):
castvalue.append(v)
elif isinstance(v, int):
castvalue.append(bool(v))
elif isinstance(v, str):
castvalue.append({"True": True, "False": False}[v])
else:
raise ValueError(f"Dataobject type not recognized: {dobj.type}")
elif isinstance(dobj, DataCategorical):
castvalue = [str(v) for v in value]
else:
Expand Down Expand Up @@ -495,24 +504,29 @@ def get_one_sample(self, item):
n = len(self.dataset.design_par.data)
item = random.randint(0, n)

dp_df = self.dataset.design_par.data.iloc[item] # pd.series
pa_df = self.dataset.perf_attributes.data.iloc[item] # pd.series

def _reduce_list(x):
# if the list has only one element, return the element instead of a list
if isinstance(x, list):
if len(x) == 1:
return x[0]
return x

sample = {"design_parameters": {}, "performance_attributes": {}}
for name, values in dp_df.items():
if name == "uid":
continue
typed_values = self.cast_to_python_type(name, values)
sample["design_parameters"][name] = _reduce_list(typed_values)

for name, values in pa_df.items():
if name in ["uid", "error"]:
continue
typed_values = self.cast_to_python_type(name, values)
sample["performance_attributes"][name] = _reduce_list(typed_values)

dct = reformat_dataframeflat_to_dict(self.dataset.design_par.data, self.dataset.design_par.dobj_list)
for key, values in dct.items():
dct[key] = self.cast_to_python_type(key, values[item])
sample["design_parameters"] = dct

dct = reformat_dataframeflat_to_dict(self.dataset.perf_attributes.data, self.dataset.perf_attributes.dobj_list)
for key, values in dct.items():
dct[key] = self.cast_to_python_type(key, values[item])
sample["performance_attributes"] = dct

# for single-value entries, unpack them from a list [123] -> 123
for x in sample.keys():
for k, v in sample[x].items():
if isinstance(v, list):
if len(v) == 1:
sample[x][k] = v[0]
return sample

def request_designs(self, request, n_samples=1):
Expand Down
5 changes: 1 addition & 4 deletions src/aixd_ara/gh_ui_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -190,10 +190,7 @@ def instantiate_sample(ghdoc, sample_dict):
component_name = "DP_{}".format(dp_name)
component = find_component_by_nickname(ghdoc, component_name)

if not dp_vals:
print("No values for {}!".format(dp_name))
else:
ghparam_set_values(component, dp_vals)
ghparam_set_values(component, dp_vals)


def convert_str_to_bitmap(base64_imgstr, scale=1.0):
Expand Down

0 comments on commit 761d031

Please sign in to comment.