CederGroupHub / alab_control

MIT License
4 stars 2 forks source link

(Labman LBCS) Submitting job while the quadrants are "COMPLETED" is prohibited. Should only be able to submit when its "EMPTY" #72

Closed bernardusrendy closed 3 months ago

bernardusrendy commented 4 months ago

Email (Optional)

No response

Problem

Previously Labman API allowed submission of input files on a "COMPLETED" quadrant. Now they have updated their code.

Proposed Solution

Need to test

Alternatives

No response

Code of Conduct

bernardusrendy commented 3 months ago
---------------------------------------------------------------------------
LabmanError                               Traceback (most recent call last)
C:\Users\CEDER-~1\AppData\Local\Temp/ipykernel_31056/662574945.py in <module>
----> 1 quadrant.submit_workflow(name="LABMAN_PM1", inputfiles_as_json={"test":inputfile_json})

~\Documents\GitHub\alab_one\src\alab_one\devices\labman_quadrant.py in submit_workflow(self, name, inputfiles_as_json)
    144         print(f"mixingpot_to_sample: {mixingpot_to_sample}")
    145         self.take_control()
--> 146         self.driver.submit_workflow_json(workflow_json)
    147         self.release_control()
    148         self.set_message(f"Working on workflow: {name}.")

c:\Users\Ceder-ALAB\anaconda3\lib\site-packages\alab_control\labman\labman.py in submit_workflow_json(self, workflow_json)
    465 
    466     def submit_workflow_json(self, workflow_json: dict):
--> 467         self.API.submit_workflow(workflow_json)
    468         self.logging.info(
    469             category="labman-workflow-submit",

c:\Users\Ceder-ALAB\anaconda3\lib\site-packages\alab_control\labman\api\api.py in submit_workflow(self, workflow_json)
    103     def submit_workflow(self, workflow_json: dict):
    104         url = f"{self.API_BASE}/PotsLoaded"
--> 105         return self._post(url, json=workflow_json)
    106 
    107     def pots_unloaded(self, index: Literal[1, 2, 3, 4]):

c:\Users\Ceder-ALAB\anaconda3\lib\site-packages\alab_control\labman\api\api.py in _post(self, url, **kwargs)
     31 
     32         response = requests.post(url=url, **mixed_kwargs)
---> 33         return self._process_labman_response(response)
     34 
     35     def _process_labman_response(self, response: requests.Response) -> dict:

c:\Users\Ceder-ALAB\anaconda3\lib\site-packages\alab_control\labman\api\api.py in _process_labman_response(self, response)
     52             return response.get("Data", {})
     53         else:
---> 54             raise LabmanError(response["ErrorMessage"])
     55 
     56     ### API Calls

LabmanError: Failed to load pots. Workflow name LABMAN_PM1, rack 4. Cannot load pots to quadrant 4. The quadrant is Complete

Behavior is as expected. Error handled properly.

bernardusrendy commented 3 months ago

Additionally, an assertion in powder_dosing has been added to prevent any unexpected non-empty quadrant.

bernardusrendy commented 3 months ago

refer to some part in the end of this file: C:\Users\Ceder-ALAB\Desktop\ALab One Experiments\20240129 LABMAN PM\20240129 LABMAN PM.ipynb for reproducing