omniopt2 8328__py3-none-any.whl → 8340__py3-none-any.whl

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 omniopt2 might be problematic. Click here for more details.

Files changed (37) hide show
  1. .omniopt.py +52 -68
  2. omniopt +13 -11
  3. {omniopt2-8328.data → omniopt2-8340.data}/data/bin/.omniopt.py +52 -68
  4. {omniopt2-8328.data → omniopt2-8340.data}/data/bin/omniopt +13 -11
  5. {omniopt2-8328.dist-info → omniopt2-8340.dist-info}/METADATA +1 -1
  6. {omniopt2-8328.dist-info → omniopt2-8340.dist-info}/RECORD +37 -37
  7. omniopt2.egg-info/PKG-INFO +1 -1
  8. pyproject.toml +1 -1
  9. {omniopt2-8328.data → omniopt2-8340.data}/data/bin/.colorfunctions.sh +0 -0
  10. {omniopt2-8328.data → omniopt2-8340.data}/data/bin/.general.sh +0 -0
  11. {omniopt2-8328.data → omniopt2-8340.data}/data/bin/.helpers.py +0 -0
  12. {omniopt2-8328.data → omniopt2-8340.data}/data/bin/.omniopt_plot_cpu_ram_usage.py +0 -0
  13. {omniopt2-8328.data → omniopt2-8340.data}/data/bin/.omniopt_plot_general.py +0 -0
  14. {omniopt2-8328.data → omniopt2-8340.data}/data/bin/.omniopt_plot_gpu_usage.py +0 -0
  15. {omniopt2-8328.data → omniopt2-8340.data}/data/bin/.omniopt_plot_kde.py +0 -0
  16. {omniopt2-8328.data → omniopt2-8340.data}/data/bin/.omniopt_plot_scatter.py +0 -0
  17. {omniopt2-8328.data → omniopt2-8340.data}/data/bin/.omniopt_plot_scatter_generation_method.py +0 -0
  18. {omniopt2-8328.data → omniopt2-8340.data}/data/bin/.omniopt_plot_scatter_hex.py +0 -0
  19. {omniopt2-8328.data → omniopt2-8340.data}/data/bin/.omniopt_plot_time_and_exit_code.py +0 -0
  20. {omniopt2-8328.data → omniopt2-8340.data}/data/bin/.omniopt_plot_trial_index_result.py +0 -0
  21. {omniopt2-8328.data → omniopt2-8340.data}/data/bin/.omniopt_plot_worker.py +0 -0
  22. {omniopt2-8328.data → omniopt2-8340.data}/data/bin/.random_generator.py +0 -0
  23. {omniopt2-8328.data → omniopt2-8340.data}/data/bin/.shellscript_functions +0 -0
  24. {omniopt2-8328.data → omniopt2-8340.data}/data/bin/.tpe.py +0 -0
  25. {omniopt2-8328.data → omniopt2-8340.data}/data/bin/LICENSE +0 -0
  26. {omniopt2-8328.data → omniopt2-8340.data}/data/bin/apt-dependencies.txt +0 -0
  27. {omniopt2-8328.data → omniopt2-8340.data}/data/bin/omniopt_docker +0 -0
  28. {omniopt2-8328.data → omniopt2-8340.data}/data/bin/omniopt_evaluate +0 -0
  29. {omniopt2-8328.data → omniopt2-8340.data}/data/bin/omniopt_plot +0 -0
  30. {omniopt2-8328.data → omniopt2-8340.data}/data/bin/omniopt_share +0 -0
  31. {omniopt2-8328.data → omniopt2-8340.data}/data/bin/pylint.rc +0 -0
  32. {omniopt2-8328.data → omniopt2-8340.data}/data/bin/requirements.txt +0 -0
  33. {omniopt2-8328.data → omniopt2-8340.data}/data/bin/setup.py +0 -0
  34. {omniopt2-8328.data → omniopt2-8340.data}/data/bin/test_requirements.txt +0 -0
  35. {omniopt2-8328.dist-info → omniopt2-8340.dist-info}/WHEEL +0 -0
  36. {omniopt2-8328.dist-info → omniopt2-8340.dist-info}/licenses/LICENSE +0 -0
  37. {omniopt2-8328.dist-info → omniopt2-8340.dist-info}/top_level.txt +0 -0
.omniopt.py CHANGED
@@ -804,6 +804,7 @@ class ConfigLoader:
804
804
  gridsearch: bool
805
805
  auto_exclude_defective_hosts: bool
806
806
  debug: bool
807
+ debug_stack_trace_regex: Optional[str]
807
808
  num_restarts: int
808
809
  raw_samples: int
809
810
  show_generate_time_table: bool
@@ -991,6 +992,8 @@ class ConfigLoader:
991
992
  debug.add_argument('--prettyprint', help='Shows stdout and stderr in a pretty printed format', action='store_true', default=False)
992
993
  debug.add_argument('--runtime_debug', help='Logs which functions use most of the time', action='store_true', default=False)
993
994
  debug.add_argument('--debug_stack_regex', help='Only print debug messages if call stack matches any regex', type=str, default='')
995
+ debug.add_argument('--debug_stack_trace_regex', help='Show compact call stack with arrows if any function in stack matches regex', type=str, default=None)
996
+
994
997
  debug.add_argument('--show_func_name', help='Show func name before each execution and when it is done', action='store_true', default=False)
995
998
 
996
999
  def load_config(self: Any, config_path: str, file_format: str) -> dict:
@@ -2130,25 +2133,25 @@ def try_saving_to_db() -> None:
2130
2133
  except Exception as e:
2131
2134
  print_debug(f"Failed trying to save sqlite3-DB: {e}")
2132
2135
 
2133
- def merge_with_job_infos(pd_frame: pd.DataFrame) -> pd.DataFrame:
2136
+ def merge_with_job_infos(df: pd.DataFrame) -> pd.DataFrame:
2134
2137
  job_infos_path = os.path.join(get_current_run_folder(), "job_infos.csv")
2135
2138
  if not os.path.exists(job_infos_path):
2136
- return pd_frame
2139
+ return df
2137
2140
 
2138
2141
  job_df = pd.read_csv(job_infos_path)
2139
2142
 
2140
- if 'trial_index' not in pd_frame.columns or 'trial_index' not in job_df.columns:
2143
+ if 'trial_index' not in df.columns or 'trial_index' not in job_df.columns:
2141
2144
  raise ValueError("Both DataFrames must contain a 'trial_index' column.")
2142
2145
 
2143
- job_df_filtered = job_df[job_df['trial_index'].isin(pd_frame['trial_index'])]
2146
+ job_df_filtered = job_df[job_df['trial_index'].isin(df['trial_index'])]
2144
2147
 
2145
- new_cols = [col for col in job_df_filtered.columns if col != 'trial_index' and col not in pd_frame.columns]
2148
+ new_cols = [col for col in job_df_filtered.columns if col != 'trial_index' and col not in df.columns]
2146
2149
 
2147
2150
  job_df_reduced = job_df_filtered[['trial_index'] + new_cols]
2148
2151
 
2149
- merged = pd.merge(pd_frame, job_df_reduced, on='trial_index', how='left')
2152
+ merged = pd.merge(df, job_df_reduced, on='trial_index', how='left')
2150
2153
 
2151
- old_cols = [col for col in pd_frame.columns if col != 'trial_index']
2154
+ old_cols = [col for col in df.columns if col != 'trial_index']
2152
2155
 
2153
2156
  new_order = ['trial_index'] + new_cols + old_cols
2154
2157
 
@@ -2156,47 +2159,6 @@ def merge_with_job_infos(pd_frame: pd.DataFrame) -> pd.DataFrame:
2156
2159
 
2157
2160
  return merged
2158
2161
 
2159
- def reindex_trials(df: pd.DataFrame) -> pd.DataFrame:
2160
- """
2161
- Ensure trial_index is sequential and arm_name unique.
2162
- Keep arm_name unless all parameters except 'order', 'hostname', 'queue_time' match.
2163
- """
2164
- if "trial_index" not in df.columns or "arm_name" not in df.columns:
2165
- return df
2166
-
2167
- # Sort by something stable (queue_time if available)
2168
- sort_cols = ["queue_time"] if "queue_time" in df.columns else df.columns.tolist()
2169
- df = df.sort_values(by=sort_cols, ignore_index=True)
2170
-
2171
- # Mapping from "parameter signature" to assigned arm_name
2172
- seen_signatures = {}
2173
- new_arm_names = []
2174
-
2175
- for new_idx, row in df.iterrows():
2176
- # Create signature without 'order', 'hostname', 'queue_time', 'trial_index', 'arm_name'
2177
- ignore_cols = {"order", "hostname", "queue_time", "trial_index", "arm_name"}
2178
- signature = tuple((col, row[col]) for col in df.columns if col not in ignore_cols)
2179
-
2180
- if signature in seen_signatures:
2181
- # Collision → make a unique name
2182
- base_name = seen_signatures[signature]
2183
- suffix = 1
2184
- new_name = f"{base_name}_{suffix}"
2185
- while new_name in new_arm_names:
2186
- suffix += 1
2187
- new_name = f"{base_name}_{suffix}"
2188
- new_arm_names.append(new_name)
2189
- else:
2190
- # First occurrence → use new_idx as trial index in name
2191
- new_name = f"{new_idx}_0"
2192
- seen_signatures[signature] = f"{new_idx}_0"
2193
- new_arm_names.append(new_name)
2194
-
2195
- df.at[new_idx, "trial_index"] = new_idx
2196
- df.at[new_idx, "arm_name"] = new_name
2197
-
2198
- return df
2199
-
2200
2162
  def save_results_csv() -> Optional[str]:
2201
2163
  if args.dryrun:
2202
2164
  return None
@@ -2211,8 +2173,8 @@ def save_results_csv() -> Optional[str]:
2211
2173
  save_checkpoint()
2212
2174
 
2213
2175
  try:
2214
- pd_frame = fetch_and_prepare_trials()
2215
- write_csv(pd_frame, pd_csv)
2176
+ df = fetch_and_prepare_trials()
2177
+ write_csv(df, pd_csv)
2216
2178
  write_json_snapshot(pd_json)
2217
2179
  save_experiment_to_file()
2218
2180
 
@@ -2234,10 +2196,21 @@ def get_results_paths() -> tuple[str, str]:
2234
2196
  def fetch_and_prepare_trials() -> pd.DataFrame:
2235
2197
  ax_client.experiment.fetch_data()
2236
2198
  df = ax_client.get_trials_data_frame()
2199
+
2200
+ #print("========================")
2201
+ #print("BEFORE merge_with_job_infos:")
2202
+ #print(df["generation_node"])
2237
2203
  df = merge_with_job_infos(df)
2238
- return reindex_trials(df)
2204
+ #print("AFTER merge_with_job_infos:")
2205
+ #print(df["generation_node"])
2206
+
2207
+ return df
2239
2208
 
2240
2209
  def write_csv(df, path: str) -> None:
2210
+ try:
2211
+ df = df.sort_values(by=["trial_index"], kind="stable").reset_index(drop=True)
2212
+ except KeyError:
2213
+ pass
2241
2214
  df.to_csv(path, index=False, float_format="%.30f")
2242
2215
 
2243
2216
  def write_json_snapshot(path: str) -> None:
@@ -5048,8 +5021,6 @@ def end_program(_force: Optional[bool] = False, exit_code: Optional[int] = None)
5048
5021
 
5049
5022
  abandon_all_jobs()
5050
5023
 
5051
- save_results_csv()
5052
-
5053
5024
  if exit_code:
5054
5025
  _exit = exit_code
5055
5026
 
@@ -7270,11 +7241,9 @@ def finish_previous_jobs(new_msgs: List[str] = []) -> None:
7270
7241
 
7271
7242
  print_debug(f"Finishing jobs took {finishing_jobs_runtime} second(s)")
7272
7243
 
7273
- save_results_csv()
7274
-
7275
- save_checkpoint()
7276
-
7277
7244
  if this_jobs_finished > 0:
7245
+ save_results_csv()
7246
+ save_checkpoint()
7278
7247
  progressbar_description([*new_msgs, f"finished {this_jobs_finished} {'job' if this_jobs_finished == 1 else 'jobs'}"])
7279
7248
 
7280
7249
  JOBS_FINISHED += this_jobs_finished
@@ -7589,8 +7558,6 @@ def execute_evaluation(_params: list) -> Optional[int]:
7589
7558
  trial_counter += 1
7590
7559
 
7591
7560
  progressbar_description("started new job")
7592
-
7593
- save_results_csv()
7594
7561
  except submitit.core.utils.FailedJobError as error:
7595
7562
  handle_failed_job(error, trial_index, new_job)
7596
7563
  trial_counter += 1
@@ -7881,8 +7848,6 @@ def get_batched_arms(nr_of_jobs_to_get: int) -> list:
7881
7848
 
7882
7849
  print_debug(f"get_batched_arms: Finished with {len(batched_arms)} arm(s) after {attempts} attempt(s).")
7883
7850
 
7884
- save_results_csv()
7885
-
7886
7851
  return batched_arms
7887
7852
 
7888
7853
  def fetch_next_trials(nr_of_jobs_to_get: int, recursion: bool = False) -> Tuple[Dict[int, Any], bool]:
@@ -7937,8 +7902,6 @@ def generate_trials(n: int, recursion: bool) -> Tuple[Dict[int, Any], bool]:
7937
7902
  cnt += 1
7938
7903
  trials_dict[trial_index] = arm.parameters
7939
7904
 
7940
- save_results_csv()
7941
-
7942
7905
  return _finalize_generation(trials_dict, cnt, n, start_time)
7943
7906
 
7944
7907
  except Exception as e:
@@ -8819,10 +8782,6 @@ def execute_trials(
8819
8782
  index_param_list.append(_args)
8820
8783
  i += 1
8821
8784
 
8822
- save_results_csv()
8823
-
8824
- save_results_csv()
8825
-
8826
8785
  start_time = time.time()
8827
8786
 
8828
8787
  cnt = 0
@@ -9654,7 +9613,6 @@ def load_experiment_state() -> None:
9654
9613
  state_path = get_current_run_folder("experiment_state.json")
9655
9614
 
9656
9615
  if not os.path.exists(state_path):
9657
- print(f"State file {state_path} does not exist, starting fresh")
9658
9616
  return
9659
9617
 
9660
9618
  if args.worker_generator_path:
@@ -11171,6 +11129,29 @@ def main_outside() -> None:
11171
11129
  else:
11172
11130
  end_program(True)
11173
11131
 
11132
+ def stack_trace_wrapper(func: Any, regex: Any = None) -> Any:
11133
+ pattern = re.compile(regex) if regex else None
11134
+
11135
+ def wrapped(*args, **kwargs):
11136
+ # nur prüfen ob diese Funktion den Trigger erfüllt
11137
+ if pattern and not pattern.search(func.__name__):
11138
+ return func(*args, **kwargs)
11139
+
11140
+ stack = inspect.stack()
11141
+ chain = []
11142
+ for frame in stack[1:]:
11143
+ fn = frame.function
11144
+ if fn in ("wrapped", "<module>"):
11145
+ continue
11146
+ chain.append(fn)
11147
+
11148
+ if chain:
11149
+ sys.stderr.write(" ⇒ ".join(reversed(chain)) + "\n")
11150
+
11151
+ return func(*args, **kwargs)
11152
+
11153
+ return wrapped
11154
+
11174
11155
  def auto_wrap_namespace(namespace: Any) -> Any:
11175
11156
  enable_beartype = any(os.getenv(v) for v in ("ENABLE_BEARTYPE", "CI"))
11176
11157
 
@@ -11200,6 +11181,9 @@ def auto_wrap_namespace(namespace: Any) -> Any:
11200
11181
  if args.show_func_name:
11201
11182
  wrapped = show_func_name_wrapper(wrapped)
11202
11183
 
11184
+ if args.debug_stack_trace_regex:
11185
+ wrapped = stack_trace_wrapper(wrapped, args.debug_stack_trace_regex)
11186
+
11203
11187
  namespace[name] = wrapped
11204
11188
 
11205
11189
  return namespace
omniopt CHANGED
@@ -81,7 +81,7 @@
81
81
 
82
82
  function end_all_bg_processes {
83
83
  for bg_job_id in $(jobs -p | sed -e 's#.*][[:space:]]*+[[:space:]]*##' -e 's#[[:space:]].*##'); do
84
- kill $bg_job_id 2>/dev/null >/dev/null
84
+ kill "$bg_job_id" 2>/dev/null >/dev/null
85
85
  done
86
86
  }
87
87
 
@@ -110,8 +110,8 @@
110
110
 
111
111
  if (command -v sbatch >/dev/null && [[ -n "$SLURM_JOB_ID" ]]) || ! command -v sbatch >/dev/null; then
112
112
  already_logging_this_command=1
113
- exec 1> >(tee -ia $bash_logname)
114
- exec 2> >(tee -ia $bash_logname >& 2)
113
+ exec 1> >(tee -ia "$bash_logname")
114
+ exec 2> >(tee -ia "$bash_logname" >& 2)
115
115
  fi
116
116
  else
117
117
  echo "uuidgen is not installed. It's recommended you install it." >&2
@@ -124,7 +124,7 @@
124
124
  ram_children=0
125
125
 
126
126
  for pid in $(pgrep -P $$); do
127
- child_ram=$(grep VmRSS /proc/$pid/status 2>/dev/null | awk '{print $2 / 1024}')
127
+ child_ram=$(grep VmRSS "/proc/$pid/status" 2>/dev/null | awk '{print $2 / 1024}')
128
128
  ram_children=$(awk -v a="$ram_children" -v b="$child_ram" 'BEGIN {print a + b}')
129
129
  done
130
130
 
@@ -170,7 +170,7 @@
170
170
  while true; do
171
171
  date_str=$(date +"%Y-%m-%d %H:%M:%S")
172
172
  echo -e "\n\n$date_str -> $(show_ram)\n\n" >&2
173
- sleep $n
173
+ sleep "$n"
174
174
  done
175
175
  }
176
176
 
@@ -400,7 +400,7 @@
400
400
  fi
401
401
  fi
402
402
 
403
- exit $CODE
403
+ exit "$CODE"
404
404
  }
405
405
 
406
406
  function get_anon_user_id {
@@ -1188,7 +1188,7 @@ EOF
1188
1188
  myexit 211
1189
1189
  }
1190
1190
 
1191
- bash omniopt $*
1191
+ bash omniopt "$*"
1192
1192
  exit_code=$?
1193
1193
 
1194
1194
  myexit $exit_code
@@ -1882,8 +1882,8 @@ EOF
1882
1882
  tail_log_file
1883
1883
 
1884
1884
  if [[ $already_logging_this_command -eq 0 ]]; then
1885
- exec 1> >(tee -ia $bash_logname)
1886
- exec 2> >(tee -ia $bash_logname >& 2)
1885
+ exec 1> >(tee -ia "$bash_logname")
1886
+ exec 2> >(tee -ia "$bash_logname" >& 2)
1887
1887
  fi
1888
1888
 
1889
1889
 
@@ -1894,13 +1894,15 @@ EOF
1894
1894
  fi
1895
1895
 
1896
1896
  exit_code_sed=$(echo "$exit_code_lines" | sed -e 's#Exit-Code:*[[:space:]]*##i' -e 's#,.*##')
1897
- if [ $? -ne 0 ] || [ -z "$exit_code_sed" ]; then
1897
+ exit_code_sed_sed=$?
1898
+ if [ $exit_code_sed_sed -ne 0 ] || [ -z "$exit_code_sed" ]; then
1898
1899
  echo "WARN: sed failed or no data after sed."
1899
1900
  exit_code_sed=""
1900
1901
  fi
1901
1902
 
1902
1903
  exit_code_tail=$(echo "$exit_code_sed" | tail -n1)
1903
- if [ $? -ne 0 ] || [ -z "$exit_code_tail" ]; then
1904
+ exit_code_tail_tail=$?
1905
+ if [ $exit_code_tail_tail -ne 0 ] || [ -z "$exit_code_tail" ]; then
1904
1906
  echo "WARN: tail failed or no data after tail."
1905
1907
  exit_code_tail=""
1906
1908
  fi
@@ -804,6 +804,7 @@ class ConfigLoader:
804
804
  gridsearch: bool
805
805
  auto_exclude_defective_hosts: bool
806
806
  debug: bool
807
+ debug_stack_trace_regex: Optional[str]
807
808
  num_restarts: int
808
809
  raw_samples: int
809
810
  show_generate_time_table: bool
@@ -991,6 +992,8 @@ class ConfigLoader:
991
992
  debug.add_argument('--prettyprint', help='Shows stdout and stderr in a pretty printed format', action='store_true', default=False)
992
993
  debug.add_argument('--runtime_debug', help='Logs which functions use most of the time', action='store_true', default=False)
993
994
  debug.add_argument('--debug_stack_regex', help='Only print debug messages if call stack matches any regex', type=str, default='')
995
+ debug.add_argument('--debug_stack_trace_regex', help='Show compact call stack with arrows if any function in stack matches regex', type=str, default=None)
996
+
994
997
  debug.add_argument('--show_func_name', help='Show func name before each execution and when it is done', action='store_true', default=False)
995
998
 
996
999
  def load_config(self: Any, config_path: str, file_format: str) -> dict:
@@ -2130,25 +2133,25 @@ def try_saving_to_db() -> None:
2130
2133
  except Exception as e:
2131
2134
  print_debug(f"Failed trying to save sqlite3-DB: {e}")
2132
2135
 
2133
- def merge_with_job_infos(pd_frame: pd.DataFrame) -> pd.DataFrame:
2136
+ def merge_with_job_infos(df: pd.DataFrame) -> pd.DataFrame:
2134
2137
  job_infos_path = os.path.join(get_current_run_folder(), "job_infos.csv")
2135
2138
  if not os.path.exists(job_infos_path):
2136
- return pd_frame
2139
+ return df
2137
2140
 
2138
2141
  job_df = pd.read_csv(job_infos_path)
2139
2142
 
2140
- if 'trial_index' not in pd_frame.columns or 'trial_index' not in job_df.columns:
2143
+ if 'trial_index' not in df.columns or 'trial_index' not in job_df.columns:
2141
2144
  raise ValueError("Both DataFrames must contain a 'trial_index' column.")
2142
2145
 
2143
- job_df_filtered = job_df[job_df['trial_index'].isin(pd_frame['trial_index'])]
2146
+ job_df_filtered = job_df[job_df['trial_index'].isin(df['trial_index'])]
2144
2147
 
2145
- new_cols = [col for col in job_df_filtered.columns if col != 'trial_index' and col not in pd_frame.columns]
2148
+ new_cols = [col for col in job_df_filtered.columns if col != 'trial_index' and col not in df.columns]
2146
2149
 
2147
2150
  job_df_reduced = job_df_filtered[['trial_index'] + new_cols]
2148
2151
 
2149
- merged = pd.merge(pd_frame, job_df_reduced, on='trial_index', how='left')
2152
+ merged = pd.merge(df, job_df_reduced, on='trial_index', how='left')
2150
2153
 
2151
- old_cols = [col for col in pd_frame.columns if col != 'trial_index']
2154
+ old_cols = [col for col in df.columns if col != 'trial_index']
2152
2155
 
2153
2156
  new_order = ['trial_index'] + new_cols + old_cols
2154
2157
 
@@ -2156,47 +2159,6 @@ def merge_with_job_infos(pd_frame: pd.DataFrame) -> pd.DataFrame:
2156
2159
 
2157
2160
  return merged
2158
2161
 
2159
- def reindex_trials(df: pd.DataFrame) -> pd.DataFrame:
2160
- """
2161
- Ensure trial_index is sequential and arm_name unique.
2162
- Keep arm_name unless all parameters except 'order', 'hostname', 'queue_time' match.
2163
- """
2164
- if "trial_index" not in df.columns or "arm_name" not in df.columns:
2165
- return df
2166
-
2167
- # Sort by something stable (queue_time if available)
2168
- sort_cols = ["queue_time"] if "queue_time" in df.columns else df.columns.tolist()
2169
- df = df.sort_values(by=sort_cols, ignore_index=True)
2170
-
2171
- # Mapping from "parameter signature" to assigned arm_name
2172
- seen_signatures = {}
2173
- new_arm_names = []
2174
-
2175
- for new_idx, row in df.iterrows():
2176
- # Create signature without 'order', 'hostname', 'queue_time', 'trial_index', 'arm_name'
2177
- ignore_cols = {"order", "hostname", "queue_time", "trial_index", "arm_name"}
2178
- signature = tuple((col, row[col]) for col in df.columns if col not in ignore_cols)
2179
-
2180
- if signature in seen_signatures:
2181
- # Collision → make a unique name
2182
- base_name = seen_signatures[signature]
2183
- suffix = 1
2184
- new_name = f"{base_name}_{suffix}"
2185
- while new_name in new_arm_names:
2186
- suffix += 1
2187
- new_name = f"{base_name}_{suffix}"
2188
- new_arm_names.append(new_name)
2189
- else:
2190
- # First occurrence → use new_idx as trial index in name
2191
- new_name = f"{new_idx}_0"
2192
- seen_signatures[signature] = f"{new_idx}_0"
2193
- new_arm_names.append(new_name)
2194
-
2195
- df.at[new_idx, "trial_index"] = new_idx
2196
- df.at[new_idx, "arm_name"] = new_name
2197
-
2198
- return df
2199
-
2200
2162
  def save_results_csv() -> Optional[str]:
2201
2163
  if args.dryrun:
2202
2164
  return None
@@ -2211,8 +2173,8 @@ def save_results_csv() -> Optional[str]:
2211
2173
  save_checkpoint()
2212
2174
 
2213
2175
  try:
2214
- pd_frame = fetch_and_prepare_trials()
2215
- write_csv(pd_frame, pd_csv)
2176
+ df = fetch_and_prepare_trials()
2177
+ write_csv(df, pd_csv)
2216
2178
  write_json_snapshot(pd_json)
2217
2179
  save_experiment_to_file()
2218
2180
 
@@ -2234,10 +2196,21 @@ def get_results_paths() -> tuple[str, str]:
2234
2196
  def fetch_and_prepare_trials() -> pd.DataFrame:
2235
2197
  ax_client.experiment.fetch_data()
2236
2198
  df = ax_client.get_trials_data_frame()
2199
+
2200
+ #print("========================")
2201
+ #print("BEFORE merge_with_job_infos:")
2202
+ #print(df["generation_node"])
2237
2203
  df = merge_with_job_infos(df)
2238
- return reindex_trials(df)
2204
+ #print("AFTER merge_with_job_infos:")
2205
+ #print(df["generation_node"])
2206
+
2207
+ return df
2239
2208
 
2240
2209
  def write_csv(df, path: str) -> None:
2210
+ try:
2211
+ df = df.sort_values(by=["trial_index"], kind="stable").reset_index(drop=True)
2212
+ except KeyError:
2213
+ pass
2241
2214
  df.to_csv(path, index=False, float_format="%.30f")
2242
2215
 
2243
2216
  def write_json_snapshot(path: str) -> None:
@@ -5048,8 +5021,6 @@ def end_program(_force: Optional[bool] = False, exit_code: Optional[int] = None)
5048
5021
 
5049
5022
  abandon_all_jobs()
5050
5023
 
5051
- save_results_csv()
5052
-
5053
5024
  if exit_code:
5054
5025
  _exit = exit_code
5055
5026
 
@@ -7270,11 +7241,9 @@ def finish_previous_jobs(new_msgs: List[str] = []) -> None:
7270
7241
 
7271
7242
  print_debug(f"Finishing jobs took {finishing_jobs_runtime} second(s)")
7272
7243
 
7273
- save_results_csv()
7274
-
7275
- save_checkpoint()
7276
-
7277
7244
  if this_jobs_finished > 0:
7245
+ save_results_csv()
7246
+ save_checkpoint()
7278
7247
  progressbar_description([*new_msgs, f"finished {this_jobs_finished} {'job' if this_jobs_finished == 1 else 'jobs'}"])
7279
7248
 
7280
7249
  JOBS_FINISHED += this_jobs_finished
@@ -7589,8 +7558,6 @@ def execute_evaluation(_params: list) -> Optional[int]:
7589
7558
  trial_counter += 1
7590
7559
 
7591
7560
  progressbar_description("started new job")
7592
-
7593
- save_results_csv()
7594
7561
  except submitit.core.utils.FailedJobError as error:
7595
7562
  handle_failed_job(error, trial_index, new_job)
7596
7563
  trial_counter += 1
@@ -7881,8 +7848,6 @@ def get_batched_arms(nr_of_jobs_to_get: int) -> list:
7881
7848
 
7882
7849
  print_debug(f"get_batched_arms: Finished with {len(batched_arms)} arm(s) after {attempts} attempt(s).")
7883
7850
 
7884
- save_results_csv()
7885
-
7886
7851
  return batched_arms
7887
7852
 
7888
7853
  def fetch_next_trials(nr_of_jobs_to_get: int, recursion: bool = False) -> Tuple[Dict[int, Any], bool]:
@@ -7937,8 +7902,6 @@ def generate_trials(n: int, recursion: bool) -> Tuple[Dict[int, Any], bool]:
7937
7902
  cnt += 1
7938
7903
  trials_dict[trial_index] = arm.parameters
7939
7904
 
7940
- save_results_csv()
7941
-
7942
7905
  return _finalize_generation(trials_dict, cnt, n, start_time)
7943
7906
 
7944
7907
  except Exception as e:
@@ -8819,10 +8782,6 @@ def execute_trials(
8819
8782
  index_param_list.append(_args)
8820
8783
  i += 1
8821
8784
 
8822
- save_results_csv()
8823
-
8824
- save_results_csv()
8825
-
8826
8785
  start_time = time.time()
8827
8786
 
8828
8787
  cnt = 0
@@ -9654,7 +9613,6 @@ def load_experiment_state() -> None:
9654
9613
  state_path = get_current_run_folder("experiment_state.json")
9655
9614
 
9656
9615
  if not os.path.exists(state_path):
9657
- print(f"State file {state_path} does not exist, starting fresh")
9658
9616
  return
9659
9617
 
9660
9618
  if args.worker_generator_path:
@@ -11171,6 +11129,29 @@ def main_outside() -> None:
11171
11129
  else:
11172
11130
  end_program(True)
11173
11131
 
11132
+ def stack_trace_wrapper(func: Any, regex: Any = None) -> Any:
11133
+ pattern = re.compile(regex) if regex else None
11134
+
11135
+ def wrapped(*args, **kwargs):
11136
+ # nur prüfen ob diese Funktion den Trigger erfüllt
11137
+ if pattern and not pattern.search(func.__name__):
11138
+ return func(*args, **kwargs)
11139
+
11140
+ stack = inspect.stack()
11141
+ chain = []
11142
+ for frame in stack[1:]:
11143
+ fn = frame.function
11144
+ if fn in ("wrapped", "<module>"):
11145
+ continue
11146
+ chain.append(fn)
11147
+
11148
+ if chain:
11149
+ sys.stderr.write(" ⇒ ".join(reversed(chain)) + "\n")
11150
+
11151
+ return func(*args, **kwargs)
11152
+
11153
+ return wrapped
11154
+
11174
11155
  def auto_wrap_namespace(namespace: Any) -> Any:
11175
11156
  enable_beartype = any(os.getenv(v) for v in ("ENABLE_BEARTYPE", "CI"))
11176
11157
 
@@ -11200,6 +11181,9 @@ def auto_wrap_namespace(namespace: Any) -> Any:
11200
11181
  if args.show_func_name:
11201
11182
  wrapped = show_func_name_wrapper(wrapped)
11202
11183
 
11184
+ if args.debug_stack_trace_regex:
11185
+ wrapped = stack_trace_wrapper(wrapped, args.debug_stack_trace_regex)
11186
+
11203
11187
  namespace[name] = wrapped
11204
11188
 
11205
11189
  return namespace
@@ -81,7 +81,7 @@
81
81
 
82
82
  function end_all_bg_processes {
83
83
  for bg_job_id in $(jobs -p | sed -e 's#.*][[:space:]]*+[[:space:]]*##' -e 's#[[:space:]].*##'); do
84
- kill $bg_job_id 2>/dev/null >/dev/null
84
+ kill "$bg_job_id" 2>/dev/null >/dev/null
85
85
  done
86
86
  }
87
87
 
@@ -110,8 +110,8 @@
110
110
 
111
111
  if (command -v sbatch >/dev/null && [[ -n "$SLURM_JOB_ID" ]]) || ! command -v sbatch >/dev/null; then
112
112
  already_logging_this_command=1
113
- exec 1> >(tee -ia $bash_logname)
114
- exec 2> >(tee -ia $bash_logname >& 2)
113
+ exec 1> >(tee -ia "$bash_logname")
114
+ exec 2> >(tee -ia "$bash_logname" >& 2)
115
115
  fi
116
116
  else
117
117
  echo "uuidgen is not installed. It's recommended you install it." >&2
@@ -124,7 +124,7 @@
124
124
  ram_children=0
125
125
 
126
126
  for pid in $(pgrep -P $$); do
127
- child_ram=$(grep VmRSS /proc/$pid/status 2>/dev/null | awk '{print $2 / 1024}')
127
+ child_ram=$(grep VmRSS "/proc/$pid/status" 2>/dev/null | awk '{print $2 / 1024}')
128
128
  ram_children=$(awk -v a="$ram_children" -v b="$child_ram" 'BEGIN {print a + b}')
129
129
  done
130
130
 
@@ -170,7 +170,7 @@
170
170
  while true; do
171
171
  date_str=$(date +"%Y-%m-%d %H:%M:%S")
172
172
  echo -e "\n\n$date_str -> $(show_ram)\n\n" >&2
173
- sleep $n
173
+ sleep "$n"
174
174
  done
175
175
  }
176
176
 
@@ -400,7 +400,7 @@
400
400
  fi
401
401
  fi
402
402
 
403
- exit $CODE
403
+ exit "$CODE"
404
404
  }
405
405
 
406
406
  function get_anon_user_id {
@@ -1188,7 +1188,7 @@ EOF
1188
1188
  myexit 211
1189
1189
  }
1190
1190
 
1191
- bash omniopt $*
1191
+ bash omniopt "$*"
1192
1192
  exit_code=$?
1193
1193
 
1194
1194
  myexit $exit_code
@@ -1882,8 +1882,8 @@ EOF
1882
1882
  tail_log_file
1883
1883
 
1884
1884
  if [[ $already_logging_this_command -eq 0 ]]; then
1885
- exec 1> >(tee -ia $bash_logname)
1886
- exec 2> >(tee -ia $bash_logname >& 2)
1885
+ exec 1> >(tee -ia "$bash_logname")
1886
+ exec 2> >(tee -ia "$bash_logname" >& 2)
1887
1887
  fi
1888
1888
 
1889
1889
 
@@ -1894,13 +1894,15 @@ EOF
1894
1894
  fi
1895
1895
 
1896
1896
  exit_code_sed=$(echo "$exit_code_lines" | sed -e 's#Exit-Code:*[[:space:]]*##i' -e 's#,.*##')
1897
- if [ $? -ne 0 ] || [ -z "$exit_code_sed" ]; then
1897
+ exit_code_sed_sed=$?
1898
+ if [ $exit_code_sed_sed -ne 0 ] || [ -z "$exit_code_sed" ]; then
1898
1899
  echo "WARN: sed failed or no data after sed."
1899
1900
  exit_code_sed=""
1900
1901
  fi
1901
1902
 
1902
1903
  exit_code_tail=$(echo "$exit_code_sed" | tail -n1)
1903
- if [ $? -ne 0 ] || [ -z "$exit_code_tail" ]; then
1904
+ exit_code_tail_tail=$?
1905
+ if [ $exit_code_tail_tail -ne 0 ] || [ -z "$exit_code_tail" ]; then
1904
1906
  echo "WARN: tail failed or no data after tail."
1905
1907
  exit_code_tail=""
1906
1908
  fi
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omniopt2
3
- Version: 8328
3
+ Version: 8340
4
4
  Summary: Automatic highly parallelized hyperparameter optimizer based on Ax/Botorch
5
5
  Home-page: https://scads.ai/transfer-2/verfuegbare-software-dienste-en/omniopt/
6
6
  Author: Norman Koch
@@ -3,7 +3,7 @@
3
3
  .general.sh,sha256=uyGMN8xNToQ0v50KoiYxm6jRmgf0orroOaodM_Nuq30,2107
4
4
  .gitignore,sha256=GmSD6dE4AqN4_fhQUdAzydst60s3w3ePYxetTr3Et7c,3776
5
5
  .helpers.py,sha256=posn69_5fnlCqU-jRTFaED0LoeC2uuQe6r9NuqvfHm0,31456
6
- .omniopt.py,sha256=BzskBRjyn0hXjxMotQDmCEqf-1j9Nrkheg-jPbPkzb4,437716
6
+ .omniopt.py,sha256=x3P9kQE4AaARkcdxdNLxH9cR2lRwrmJhysaPSUUlLTQ,437114
7
7
  .omniopt_plot_cpu_ram_usage.py,sha256=DbOAmdrbcZtsMnHJgHfeRngjtv6zX5J0axyua_dYezc,3932
8
8
  .omniopt_plot_general.py,sha256=3iy-bPef8I5rTB3KRz-TuleMdgKDmVZ6c8LuNQhNwu0,6810
9
9
  .omniopt_plot_gpu_usage.py,sha256=ojxVicwSoiyl7f3c-6lLuT2EpyPcSJKEcbp75LgDY2k,5107
@@ -21,51 +21,51 @@ LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
21
21
  MANIFEST.in,sha256=L3QBXyL1TtyWxbAPsfjZdCfpeBrRuI5MSgdnvwdQ22Q,24
22
22
  README.md,sha256=WJxay4TRM8wfK_k5C01SlizLUHgKqlMwa_PQwAxj-As,3221
23
23
  apt-dependencies.txt,sha256=X5tBB8ZLW9XaFtRh8B7C2pIkSoxNNawqioDr0QZAtuM,149
24
- omniopt,sha256=dJgOjgBXOvEi5A_3FifPC2V16270GzDGwq8C0o_2fI4,50870
24
+ omniopt,sha256=oRSHQZXeV-KGHaRD1elNmHWhRWMyrzD3GCGNia2El18,50978
25
25
  omniopt_docker,sha256=XyEGZ71l-tUlAYUluVF39fGO3NLDRa8UyrwxmAsXWNI,3542
26
26
  omniopt_evaluate,sha256=9oBh0_ikCuIz_aJQZrN0j39NDiIDYoSvEFmSVIoFjJE,23842
27
27
  omniopt_plot,sha256=ze6Dz2k0w5jyUnfatAA7dk59nzQjKC_G36tDvJGWsfA,13696
28
28
  omniopt_share,sha256=2KZcTjN_7vcxNjb4sLLiWgUc38pl2-6-Qwmgq6_nTb0,13856
29
- pyproject.toml,sha256=nUlpbPcce2gYVB0RjAEcmi2sFB28KVVu0HQxAmQGM8o,397
29
+ pyproject.toml,sha256=BRV02UKzM06tFSPDAtDdQkClOw4Lcj-GXX1dkNQ8VWQ,397
30
30
  requirements.txt,sha256=-dJa3VXI74qUD39-aF6whZV6RTN7Dt7KE3o43PnFHqA,299
31
31
  setup.cfg,sha256=HEc8uu6NpfxG5_AVh5SvXOpEFMNKPPPxgMIAH144vT4,38
32
32
  test_requirements.txt,sha256=jpyZzAwbWR_qnoRqWvpBB5MUjIX9jVwynX2D-B-r8aA,487
33
33
  .tests/pylint.rc,sha256=ZGtZjVgJtK_6tdwgscJneS-LUeDASjSVVz6veCkp9rw,22631
34
- omniopt2-8328.data/data/bin/.colorfunctions.sh,sha256=xxc08V3Fh_0Je20fkJMRO14u9VCSvMyOiMaDfioEyCY,1098
35
- omniopt2-8328.data/data/bin/.general.sh,sha256=uyGMN8xNToQ0v50KoiYxm6jRmgf0orroOaodM_Nuq30,2107
36
- omniopt2-8328.data/data/bin/.helpers.py,sha256=posn69_5fnlCqU-jRTFaED0LoeC2uuQe6r9NuqvfHm0,31456
37
- omniopt2-8328.data/data/bin/.omniopt.py,sha256=BzskBRjyn0hXjxMotQDmCEqf-1j9Nrkheg-jPbPkzb4,437716
38
- omniopt2-8328.data/data/bin/.omniopt_plot_cpu_ram_usage.py,sha256=DbOAmdrbcZtsMnHJgHfeRngjtv6zX5J0axyua_dYezc,3932
39
- omniopt2-8328.data/data/bin/.omniopt_plot_general.py,sha256=3iy-bPef8I5rTB3KRz-TuleMdgKDmVZ6c8LuNQhNwu0,6810
40
- omniopt2-8328.data/data/bin/.omniopt_plot_gpu_usage.py,sha256=ojxVicwSoiyl7f3c-6lLuT2EpyPcSJKEcbp75LgDY2k,5107
41
- omniopt2-8328.data/data/bin/.omniopt_plot_kde.py,sha256=uRLWr72TDKvj3AqJ0O0AvkKZ1ok1O1QpXnbfQQdo0nA,6873
42
- omniopt2-8328.data/data/bin/.omniopt_plot_scatter.py,sha256=b0_CIqgyi6PztaUVJRL9X9XBTaOonh-yDH2hRxMGkH0,8403
43
- omniopt2-8328.data/data/bin/.omniopt_plot_scatter_generation_method.py,sha256=rgKY_w1E516c9UucVaEvaKd8tCnoUq9xg-RrYSDzYEQ,4289
44
- omniopt2-8328.data/data/bin/.omniopt_plot_scatter_hex.py,sha256=UKjw40c1eumgEcf0xqB-_SakX5PB6HD3u4VwBxbsgQo,10279
45
- omniopt2-8328.data/data/bin/.omniopt_plot_time_and_exit_code.py,sha256=WUyl2uI59wsC1eSX_5uJHOrqcF-s5cUDIEu8u3IFMLU,6462
46
- omniopt2-8328.data/data/bin/.omniopt_plot_trial_index_result.py,sha256=Xlo_dYTQNnxPhYakmgMM58CCcW9gUoXZ3gLap9RScTY,4578
47
- omniopt2-8328.data/data/bin/.omniopt_plot_worker.py,sha256=VuluQq4W6KRR5RU08dxmDSFk5mbfDRkRJQFwwcLgAGw,4524
48
- omniopt2-8328.data/data/bin/.random_generator.py,sha256=ezBBUXpez_QaGdpCglMcJ0KZPdQP0XdX5gnLzO1xhwU,2987
49
- omniopt2-8328.data/data/bin/.shellscript_functions,sha256=9Yo5j3BBLDNVPwe2uNjHbVCbj3H1v1gC5Ju8KvPXfC4,13624
50
- omniopt2-8328.data/data/bin/.tpe.py,sha256=xxQuTZFQHHobvZuqG8cP2y2ev8ifjlLvex3TOaNWq8w,6754
51
- omniopt2-8328.data/data/bin/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
52
- omniopt2-8328.data/data/bin/apt-dependencies.txt,sha256=X5tBB8ZLW9XaFtRh8B7C2pIkSoxNNawqioDr0QZAtuM,149
53
- omniopt2-8328.data/data/bin/omniopt,sha256=dJgOjgBXOvEi5A_3FifPC2V16270GzDGwq8C0o_2fI4,50870
54
- omniopt2-8328.data/data/bin/omniopt_docker,sha256=XyEGZ71l-tUlAYUluVF39fGO3NLDRa8UyrwxmAsXWNI,3542
55
- omniopt2-8328.data/data/bin/omniopt_evaluate,sha256=9oBh0_ikCuIz_aJQZrN0j39NDiIDYoSvEFmSVIoFjJE,23842
56
- omniopt2-8328.data/data/bin/omniopt_plot,sha256=ze6Dz2k0w5jyUnfatAA7dk59nzQjKC_G36tDvJGWsfA,13696
57
- omniopt2-8328.data/data/bin/omniopt_share,sha256=2KZcTjN_7vcxNjb4sLLiWgUc38pl2-6-Qwmgq6_nTb0,13856
58
- omniopt2-8328.data/data/bin/pylint.rc,sha256=ZGtZjVgJtK_6tdwgscJneS-LUeDASjSVVz6veCkp9rw,22631
59
- omniopt2-8328.data/data/bin/requirements.txt,sha256=-dJa3VXI74qUD39-aF6whZV6RTN7Dt7KE3o43PnFHqA,299
60
- omniopt2-8328.data/data/bin/setup.py,sha256=zg7k4jeHXEdaGWGeB1mPC14fFj-hqz1vNimnU0JcMyk,4632
61
- omniopt2-8328.data/data/bin/test_requirements.txt,sha256=jpyZzAwbWR_qnoRqWvpBB5MUjIX9jVwynX2D-B-r8aA,487
62
- omniopt2-8328.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
63
- omniopt2.egg-info/PKG-INFO,sha256=UV-Xrp1uuJAKywfZMSZqd_DUGhBwCSc1T8SUV7WPwT8,5740
34
+ omniopt2-8340.data/data/bin/.colorfunctions.sh,sha256=xxc08V3Fh_0Je20fkJMRO14u9VCSvMyOiMaDfioEyCY,1098
35
+ omniopt2-8340.data/data/bin/.general.sh,sha256=uyGMN8xNToQ0v50KoiYxm6jRmgf0orroOaodM_Nuq30,2107
36
+ omniopt2-8340.data/data/bin/.helpers.py,sha256=posn69_5fnlCqU-jRTFaED0LoeC2uuQe6r9NuqvfHm0,31456
37
+ omniopt2-8340.data/data/bin/.omniopt.py,sha256=x3P9kQE4AaARkcdxdNLxH9cR2lRwrmJhysaPSUUlLTQ,437114
38
+ omniopt2-8340.data/data/bin/.omniopt_plot_cpu_ram_usage.py,sha256=DbOAmdrbcZtsMnHJgHfeRngjtv6zX5J0axyua_dYezc,3932
39
+ omniopt2-8340.data/data/bin/.omniopt_plot_general.py,sha256=3iy-bPef8I5rTB3KRz-TuleMdgKDmVZ6c8LuNQhNwu0,6810
40
+ omniopt2-8340.data/data/bin/.omniopt_plot_gpu_usage.py,sha256=ojxVicwSoiyl7f3c-6lLuT2EpyPcSJKEcbp75LgDY2k,5107
41
+ omniopt2-8340.data/data/bin/.omniopt_plot_kde.py,sha256=uRLWr72TDKvj3AqJ0O0AvkKZ1ok1O1QpXnbfQQdo0nA,6873
42
+ omniopt2-8340.data/data/bin/.omniopt_plot_scatter.py,sha256=b0_CIqgyi6PztaUVJRL9X9XBTaOonh-yDH2hRxMGkH0,8403
43
+ omniopt2-8340.data/data/bin/.omniopt_plot_scatter_generation_method.py,sha256=rgKY_w1E516c9UucVaEvaKd8tCnoUq9xg-RrYSDzYEQ,4289
44
+ omniopt2-8340.data/data/bin/.omniopt_plot_scatter_hex.py,sha256=UKjw40c1eumgEcf0xqB-_SakX5PB6HD3u4VwBxbsgQo,10279
45
+ omniopt2-8340.data/data/bin/.omniopt_plot_time_and_exit_code.py,sha256=WUyl2uI59wsC1eSX_5uJHOrqcF-s5cUDIEu8u3IFMLU,6462
46
+ omniopt2-8340.data/data/bin/.omniopt_plot_trial_index_result.py,sha256=Xlo_dYTQNnxPhYakmgMM58CCcW9gUoXZ3gLap9RScTY,4578
47
+ omniopt2-8340.data/data/bin/.omniopt_plot_worker.py,sha256=VuluQq4W6KRR5RU08dxmDSFk5mbfDRkRJQFwwcLgAGw,4524
48
+ omniopt2-8340.data/data/bin/.random_generator.py,sha256=ezBBUXpez_QaGdpCglMcJ0KZPdQP0XdX5gnLzO1xhwU,2987
49
+ omniopt2-8340.data/data/bin/.shellscript_functions,sha256=9Yo5j3BBLDNVPwe2uNjHbVCbj3H1v1gC5Ju8KvPXfC4,13624
50
+ omniopt2-8340.data/data/bin/.tpe.py,sha256=xxQuTZFQHHobvZuqG8cP2y2ev8ifjlLvex3TOaNWq8w,6754
51
+ omniopt2-8340.data/data/bin/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
52
+ omniopt2-8340.data/data/bin/apt-dependencies.txt,sha256=X5tBB8ZLW9XaFtRh8B7C2pIkSoxNNawqioDr0QZAtuM,149
53
+ omniopt2-8340.data/data/bin/omniopt,sha256=oRSHQZXeV-KGHaRD1elNmHWhRWMyrzD3GCGNia2El18,50978
54
+ omniopt2-8340.data/data/bin/omniopt_docker,sha256=XyEGZ71l-tUlAYUluVF39fGO3NLDRa8UyrwxmAsXWNI,3542
55
+ omniopt2-8340.data/data/bin/omniopt_evaluate,sha256=9oBh0_ikCuIz_aJQZrN0j39NDiIDYoSvEFmSVIoFjJE,23842
56
+ omniopt2-8340.data/data/bin/omniopt_plot,sha256=ze6Dz2k0w5jyUnfatAA7dk59nzQjKC_G36tDvJGWsfA,13696
57
+ omniopt2-8340.data/data/bin/omniopt_share,sha256=2KZcTjN_7vcxNjb4sLLiWgUc38pl2-6-Qwmgq6_nTb0,13856
58
+ omniopt2-8340.data/data/bin/pylint.rc,sha256=ZGtZjVgJtK_6tdwgscJneS-LUeDASjSVVz6veCkp9rw,22631
59
+ omniopt2-8340.data/data/bin/requirements.txt,sha256=-dJa3VXI74qUD39-aF6whZV6RTN7Dt7KE3o43PnFHqA,299
60
+ omniopt2-8340.data/data/bin/setup.py,sha256=zg7k4jeHXEdaGWGeB1mPC14fFj-hqz1vNimnU0JcMyk,4632
61
+ omniopt2-8340.data/data/bin/test_requirements.txt,sha256=jpyZzAwbWR_qnoRqWvpBB5MUjIX9jVwynX2D-B-r8aA,487
62
+ omniopt2-8340.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
63
+ omniopt2.egg-info/PKG-INFO,sha256=E9R5lynVhc8Ln9cFEPG0PgJDwjaZa_mP6s0zdp_5adQ,5740
64
64
  omniopt2.egg-info/SOURCES.txt,sha256=2mSVIhM8Ncyl5_s8ZFBlb6qjRDbTCQmV9FwVVjp5ROE,795
65
65
  omniopt2.egg-info/dependency_links.txt,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
66
66
  omniopt2.egg-info/requires.txt,sha256=aCvaeeNulrw3AspOfG7FYwkso3fOUXeUqioyYvEnyFI,786
67
67
  omniopt2.egg-info/top_level.txt,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
68
- omniopt2-8328.dist-info/METADATA,sha256=UV-Xrp1uuJAKywfZMSZqd_DUGhBwCSc1T8SUV7WPwT8,5740
69
- omniopt2-8328.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
70
- omniopt2-8328.dist-info/top_level.txt,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
71
- omniopt2-8328.dist-info/RECORD,,
68
+ omniopt2-8340.dist-info/METADATA,sha256=E9R5lynVhc8Ln9cFEPG0PgJDwjaZa_mP6s0zdp_5adQ,5740
69
+ omniopt2-8340.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
70
+ omniopt2-8340.dist-info/top_level.txt,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
71
+ omniopt2-8340.dist-info/RECORD,,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omniopt2
3
- Version: 8328
3
+ Version: 8340
4
4
  Summary: Automatic highly parallelized hyperparameter optimizer based on Ax/Botorch
5
5
  Home-page: https://scads.ai/transfer-2/verfuegbare-software-dienste-en/omniopt/
6
6
  Author: Norman Koch
pyproject.toml CHANGED
@@ -5,7 +5,7 @@ authors = [
5
5
  {email = "norman.koch@tu-dresden.de"},
6
6
  {name = "Norman Koch"}
7
7
  ]
8
- version = "8328"
8
+ version = "8340"
9
9
 
10
10
  readme = "README.md"
11
11
  dynamic = ["dependencies"]