ivoryos 1.3.8__tar.gz → 1.3.9__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of ivoryos might be problematic. Click here for more details.

Files changed (110) hide show
  1. {ivoryos-1.3.8 → ivoryos-1.3.9}/PKG-INFO +1 -1
  2. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/optimizer/nimo_optimizer.py +10 -8
  3. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/utils/script_runner.py +14 -6
  4. ivoryos-1.3.9/ivoryos/version.py +1 -0
  5. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos.egg-info/PKG-INFO +1 -1
  6. ivoryos-1.3.8/ivoryos/version.py +0 -1
  7. {ivoryos-1.3.8 → ivoryos-1.3.9}/LICENSE +0 -0
  8. {ivoryos-1.3.8 → ivoryos-1.3.9}/README.md +0 -0
  9. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/__init__.py +0 -0
  10. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/app.py +0 -0
  11. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/config.py +0 -0
  12. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/optimizer/ax_optimizer.py +0 -0
  13. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/optimizer/base_optimizer.py +0 -0
  14. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/optimizer/baybe_optimizer.py +0 -0
  15. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/optimizer/registry.py +0 -0
  16. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/__init__.py +0 -0
  17. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/api/api.py +0 -0
  18. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/auth/__init__.py +0 -0
  19. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/auth/auth.py +0 -0
  20. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/auth/templates/login.html +0 -0
  21. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/auth/templates/signup.html +0 -0
  22. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/control/__init__.py +0 -0
  23. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/control/control.py +0 -0
  24. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/control/control_file.py +0 -0
  25. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/control/control_new_device.py +0 -0
  26. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/control/templates/controllers.html +0 -0
  27. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/control/templates/controllers_new.html +0 -0
  28. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/control/utils.py +0 -0
  29. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/data/__init__.py +0 -0
  30. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/data/data.py +0 -0
  31. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/data/templates/components/step_card.html +0 -0
  32. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/data/templates/workflow_database.html +0 -0
  33. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/data/templates/workflow_view.html +0 -0
  34. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/design/__init__.py +0 -0
  35. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/design/design.py +0 -0
  36. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/design/design_file.py +0 -0
  37. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/design/design_step.py +0 -0
  38. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/design/templates/components/action_form.html +0 -0
  39. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/design/templates/components/actions_panel.html +0 -0
  40. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/design/templates/components/autofill_toggle.html +0 -0
  41. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/design/templates/components/canvas.html +0 -0
  42. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/design/templates/components/canvas_footer.html +0 -0
  43. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/design/templates/components/canvas_header.html +0 -0
  44. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/design/templates/components/canvas_main.html +0 -0
  45. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/design/templates/components/deck_selector.html +0 -0
  46. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/design/templates/components/edit_action_form.html +0 -0
  47. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/design/templates/components/instruments_panel.html +0 -0
  48. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/design/templates/components/modals/drop_modal.html +0 -0
  49. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/design/templates/components/modals/json_modal.html +0 -0
  50. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/design/templates/components/modals/new_script_modal.html +0 -0
  51. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/design/templates/components/modals/rename_modal.html +0 -0
  52. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/design/templates/components/modals/saveas_modal.html +0 -0
  53. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/design/templates/components/modals.html +0 -0
  54. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/design/templates/components/python_code_overlay.html +0 -0
  55. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/design/templates/components/sidebar.html +0 -0
  56. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/design/templates/components/text_to_code_panel.html +0 -0
  57. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/design/templates/experiment_builder.html +0 -0
  58. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/execute/__init__.py +0 -0
  59. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/execute/execute.py +0 -0
  60. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/execute/execute_file.py +0 -0
  61. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/execute/templates/components/error_modal.html +0 -0
  62. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/execute/templates/components/logging_panel.html +0 -0
  63. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/execute/templates/components/progress_panel.html +0 -0
  64. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/execute/templates/components/run_panel.html +0 -0
  65. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/execute/templates/components/run_tabs.html +0 -0
  66. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/execute/templates/components/tab_bayesian.html +0 -0
  67. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/execute/templates/components/tab_configuration.html +0 -0
  68. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/execute/templates/components/tab_repeat.html +0 -0
  69. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/execute/templates/experiment_run.html +0 -0
  70. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/library/__init__.py +0 -0
  71. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/library/library.py +0 -0
  72. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/library/templates/library.html +0 -0
  73. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/main/__init__.py +0 -0
  74. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/main/main.py +0 -0
  75. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/main/templates/help.html +0 -0
  76. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/routes/main/templates/home.html +0 -0
  77. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/server.py +0 -0
  78. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/socket_handlers.py +0 -0
  79. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/static/favicon.ico +0 -0
  80. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/static/gui_annotation/Slide1.png +0 -0
  81. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/static/gui_annotation/Slide2.PNG +0 -0
  82. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/static/js/action_handlers.js +0 -0
  83. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/static/js/db_delete.js +0 -0
  84. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/static/js/overlay.js +0 -0
  85. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/static/js/script_metadata.js +0 -0
  86. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/static/js/socket_handler.js +0 -0
  87. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/static/js/sortable_card.js +0 -0
  88. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/static/js/sortable_design.js +0 -0
  89. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/static/js/ui_state.js +0 -0
  90. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/static/logo.webp +0 -0
  91. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/static/style.css +0 -0
  92. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/templates/base.html +0 -0
  93. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/utils/__init__.py +0 -0
  94. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/utils/bo_campaign.py +0 -0
  95. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/utils/client_proxy.py +0 -0
  96. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/utils/db_models.py +0 -0
  97. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/utils/decorators.py +0 -0
  98. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/utils/form.py +0 -0
  99. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/utils/global_config.py +0 -0
  100. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/utils/llm_agent.py +0 -0
  101. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/utils/py_to_json.py +0 -0
  102. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/utils/serilize.py +0 -0
  103. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/utils/task_runner.py +0 -0
  104. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos/utils/utils.py +0 -0
  105. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos.egg-info/SOURCES.txt +0 -0
  106. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos.egg-info/dependency_links.txt +0 -0
  107. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos.egg-info/requires.txt +0 -0
  108. {ivoryos-1.3.8 → ivoryos-1.3.9}/ivoryos.egg-info/top_level.txt +0 -0
  109. {ivoryos-1.3.8 → ivoryos-1.3.9}/pyproject.toml +0 -0
  110. {ivoryos-1.3.8 → ivoryos-1.3.9}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ivoryos
3
- Version: 1.3.8
3
+ Version: 1.3.9
4
4
  Summary: an open-source Python package enabling Self-Driving Labs (SDLs) interoperability
5
5
  Author-email: Ivory Zhang <ivoryzhang@chem.ubc.ca>
6
6
  License: MIT
@@ -17,14 +17,14 @@ class NIMOOptimizer(OptimizerBase):
17
17
  {"name": "param_3", "type": "range", "bounds": [0 10], "value_type": "int"},
18
18
  ]
19
19
  :param objective_config: objective configuration
20
- [
20
+ [
21
21
  {"name": "obj_1", "minimize": True, "weight": 1},
22
22
  {"name": "obj_2", "minimize": False, "weight": 1}
23
23
  ]
24
24
  :param optimizer_config: optimizer configuration
25
- optimizer_config={
26
- "step_1": {"model": "Random", "num_samples": 10},
27
- "step_2": {"model": "BOTorch"}
25
+ {
26
+ "step_1": {"model": "RE", "num_samples": 10},
27
+ "step_2": {"model": "PDC"}
28
28
  }
29
29
  """
30
30
  self.current_step = 0
@@ -35,13 +35,15 @@ class NIMOOptimizer(OptimizerBase):
35
35
 
36
36
  super().__init__(experiment_name, parameter_space, objective_config, optimizer_config, datapath)
37
37
 
38
+ os.makedirs(os.path.join(self.datapath, "nimo_data"), exist_ok=True)
39
+
38
40
  step_1 = optimizer_config.get("step_1", {})
39
41
  step_2 = optimizer_config.get("step_2", {})
40
42
  self.step_1_generator = step_1.get("model", "RE")
41
43
  self.step_1_batch_num = step_1.get("num_samples", 1)
42
44
  self.step_2_generator = step_2.get("model", "PDC")
43
- self.candidates = os.path.join(self.datapath, f"{self.experiment_name}_candidates.csv")
44
- self.proposals = os.path.join(self.datapath, f"{self.experiment_name}_proposals.csv")
45
+ self.candidates = os.path.join(self.datapath, "nimo_data", f"{self.experiment_name}_candidates.csv")
46
+ self.proposals = os.path.join(self.datapath, "nimo_data", f"{self.experiment_name}_proposals.csv")
45
47
  self.n_objectives = len(self.objective_config)
46
48
  self._create_candidates_csv()
47
49
 
@@ -129,8 +131,8 @@ class NIMOOptimizer(OptimizerBase):
129
131
  "parameter_types": ["choice"],
130
132
  "multiple_objectives": True,
131
133
  "optimizer_config": {
132
- "step_1": {"model": ["RE", "ES", "PDC"], "num_samples": 5},
133
- "step_2": {"model": ["PHYSBO", "BLOX", "PTR", "SLESA", "BOMP", "COMBI"]}
134
+ "step_1": {"model": ["RE", "ES"], "num_samples": 5},
135
+ "step_2": {"model": ["PHYSBO", "PDC", "BLOX", "PTR", "SLESA", "BOMP", "COMBI"]}
134
136
  },
135
137
  }
136
138
 
@@ -110,6 +110,8 @@ class ScriptRunner:
110
110
  :return: The final result of the function execution
111
111
  """
112
112
  _func_str = script.python_script or script.compile()
113
+ _, return_list = script.config_return()
114
+
113
115
  step_list: list = script.convert_to_lines(_func_str).get(section_name, [])
114
116
  global deck
115
117
  # global deck, registered_workflows
@@ -230,8 +232,8 @@ class ScriptRunner:
230
232
  # step_list: list = script.convert_to_lines(_func_str).get(section_name, [])
231
233
  if not step.run_error or not self.retry:
232
234
  index += 1
233
-
234
- return exec_locals # Return the 'results' variable
235
+ output = {key: value for key, value in exec_locals.items() if key in return_list}
236
+ return output # Return the 'results' variable
235
237
 
236
238
  def _run_with_stop_check(self, script: Script, repeat_count: int, run_name: str, logger, socketio, config, bo_args,
237
239
  output_path, current_app, compiled, history=None, optimizer=None):
@@ -250,6 +252,8 @@ class ScriptRunner:
250
252
  db.session.add(run)
251
253
  db.session.flush()
252
254
  run_id = run.id # Save the ID
255
+ db.session.commit()
256
+
253
257
  try:
254
258
 
255
259
  global_config.runner_status = {"id":run_id, "type": "workflow"}
@@ -281,10 +285,13 @@ class ScriptRunner:
281
285
  self.lock.release()
282
286
  with current_app.app_context():
283
287
  run = db.session.get(WorkflowRun, run_id)
284
- run.end_time = datetime.now()
285
- run.data_path = filename
286
- run.run_error = error_flag
287
- db.session.commit()
288
+ if run is None:
289
+ logger.info("Error: Run not found in database.")
290
+ else:
291
+ run.end_time = datetime.now()
292
+ run.data_path = filename
293
+ run.run_error = error_flag
294
+ db.session.commit()
288
295
 
289
296
 
290
297
  def _run_actions(self, script, section_name="", logger=None, socketio=None, run_id=None):
@@ -422,6 +429,7 @@ class ScriptRunner:
422
429
  except Exception as e:
423
430
  logger.info(f'Optimization error: {e}')
424
431
  break
432
+ # Optimizer for UI
425
433
  elif optimizer:
426
434
  try:
427
435
  parameters = optimizer.suggest(1)
@@ -0,0 +1 @@
1
+ __version__ = "1.3.9"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ivoryos
3
- Version: 1.3.8
3
+ Version: 1.3.9
4
4
  Summary: an open-source Python package enabling Self-Driving Labs (SDLs) interoperability
5
5
  Author-email: Ivory Zhang <ivoryzhang@chem.ubc.ca>
6
6
  License: MIT
@@ -1 +0,0 @@
1
- __version__ = "1.3.8"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes