From bab5e958cb9269397a60bab04572b7ce3320df29f6aab07ea04c8a457494e6b9 Mon Sep 17 00:00:00 2001 From: PioApocalypse Date: Wed, 11 Mar 2026 15:43:11 +0100 Subject: [PATCH] NOT WORKING: starts changing the structure of function "deduplicate..." --- src/main.py | 78 ++++++++++++++++++++++++++++------------------------- 1 file changed, 42 insertions(+), 36 deletions(-) diff --git a/src/main.py b/src/main.py index b90fab4..5a4a762 100644 --- a/src/main.py +++ b/src/main.py @@ -108,52 +108,58 @@ def deduplicate_instruments_from_layers(layers): lasers = [] chambers = [] rheeds = [] + elegant_dict = {} for lyr in layers: instruments = lyr.get_instruments(apikey) lasers.append(instruments["laser_system"]) chambers.append(instruments["deposition_chamber"]) rheeds.append(instruments["rheed_system"]) + elegant_dict[f"layer_{lyr.layer_number}"] = { + "Laser Systems": instruments["laser_system"], + "Deposition Chamber": instruments["deposition_chamber"], + "RHEED Systems": instruments["rheed_system"], + } ded_lasers = list( set( lasers ) ) ded_chambers = list( set( chambers ) ) ded_rheeds = list( set( rheeds ) ) - elegant_dict = { + elegant_dict["multilayer"] = { # Keep key names human readable since they're used in the messages of the following errors - "Laser Systems": ded_lasers, - "Deposition Chamber": ded_chambers, - "RHEED Systems": ded_rheeds + "Laser Systems": ", ".join(ded_lasers), + "Deposition Chamber": ", ".join(ded_chambers), + "RHEED Systems": ", ".join(ded_rheeds) } # dictionary's name's a joke - updated_dict = {} # use this for containing the final dataset - for ded in elegant_dict: - if len(elegant_dict[ded]) == 0: - # if len of list is 0 - empty list - raise error - raise IndexError(f"Missing data: no Laser System, Chamber and/or RHEED System is specified in any of the Deposition-type experiments related to this sample. Fix this on eLabFTW before retrying. Affected list: {ded}.") - elif len(elegant_dict[ded]) > 1: - # if len of list is > 1 - too many values - allow the user to pick one - print("Warning: different instruments have been used for different layers - which is currently not allowed.") - # there's a better way to do this but I can't remember now for the life of me... - i = 0 - while i < len(elegant_dict[ded]): - print(f"{i} - {elegant_dict[ded][i]}") - i += 1 - ans = None - while not type(ans) == int or not ans in range(0, len(elegant_dict[ded])): - ans = input("Please pick one of the previous (0, 1, ...) [default = 0]: ") or "0" - if ans.isdigit(): - ans = int(ans) - continue # unnecessary? - updated_dict[ded] = elegant_dict[ded][ans] - elif elegant_dict[ded][0] in ["", 0, None]: - # if len is 1 BUT value is "", 0 or None raise error - raise ValueError(f"Missing data: a Laser System, Chamber and/or RHEED System which is specified across all the Deposition-type experiments related to this sample is either empty or invalid. Fix this on eLabFTW before retrying. Affected list: {ded}.") - else: - # if none of the previous (only 1 value), that single value is used - updated_dict[ded] = elegant_dict[ded][0] - instruments_used_dict = { - "laser_system": updated_dict["Laser Systems"], - "deposition_chamber": updated_dict["Deposition Chamber"], - "rheed_system": updated_dict["RHEED Systems"], - } - return instruments_used_dict + # updated_dict = {} # use this for containing the final dataset + # for ded in elegant_dict: + # if len(elegant_dict[ded]) == 0: + # # if len of list is 0 - empty list - raise error + # raise IndexError(f"Missing data: no Laser System, Chamber and/or RHEED System is specified in any of the Deposition-type experiments related to this sample. Fix this on eLabFTW before retrying. Affected list: {ded}.") + # elif len(elegant_dict[ded]) > 1: + # # if len of list is > 1 - too many values - allow the user to pick one + # print("Warning: different instruments have been used for different layers - which is currently not allowed.") + # # there's a better way to do this but I can't remember now for the life of me... + # i = 0 + # while i < len(elegant_dict[ded]): + # print(f"{i} - {elegant_dict[ded][i]}") + # i += 1 + # ans = None + # while not type(ans) == int or not ans in range(0, len(elegant_dict[ded])): + # ans = input("Please pick one of the previous (0, 1, ...) [default = 0]: ") or "0" + # if ans.isdigit(): + # ans = int(ans) + # continue # unnecessary? + # updated_dict[ded] = elegant_dict[ded][ans] + # elif elegant_dict[ded][0] in ["", 0, None]: + # # if len is 1 BUT value is "", 0 or None raise error + # raise ValueError(f"Missing data: a Laser System, Chamber and/or RHEED System which is specified across all the Deposition-type experiments related to this sample is either empty or invalid. Fix this on eLabFTW before retrying. Affected list: {ded}.") + # else: + # # if none of the previous (only 1 value), that single value is used + # updated_dict[ded] = elegant_dict[ded][0] + # instruments_used_dict = { + # "laser_system": updated_dict["Laser Systems"], + # "deposition_chamber": updated_dict["Deposition Chamber"], + # "rheed_system": updated_dict["RHEED Systems"], + # } + return elegant_dict ### OLD CODE # if 0 in [ len(i) for i in elegant_list ]: