Skip to content

Commit c20bdce

Browse files
author
Jawad Chowdhury
committed
dynamic update for bounds (data driven + domain based priors)
1 parent e9cd50d commit c20bdce

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

BGlib/misc/jc2_bg_gui.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -360,13 +360,13 @@ def create_fit_loops_tab(self):
360360
self.loop_param_labels = [f"p0{i}" for i in range(9)]
361361
self.loop_lower_fields, self.loop_upper_fields = [], []
362362

363-
default_lower = [-np.inf, -np.inf, -np.inf, -np.inf, -np.inf, -np.inf, -np.inf, -np.inf, -np.inf]
364-
default_upper = [np.inf, np.inf, np.inf, np.inf, np.inf, np.inf, np.inf, np.inf, np.inf]
363+
self.loop_default_lower = [-1, -1, -30, -30, -1, -30, -30, -30, -30]
364+
self.loop_default_upper = [1, 1, 30, 30, 1, 30, 30, 30, 30]
365365

366366
for i, label in enumerate(self.loop_param_labels):
367367
bounds_layout.addWidget(QLabel(label), i + 2, 0)
368-
lower_edit = QLineEdit(str(default_lower[i]))
369-
upper_edit = QLineEdit(str(default_upper[i]))
368+
lower_edit = QLineEdit(str(self.loop_default_lower[i]))
369+
upper_edit = QLineEdit(str(self.loop_default_upper[i]))
370370
self.loop_lower_fields.append(lower_edit)
371371
self.loop_upper_fields.append(upper_edit)
372372
bounds_layout.addWidget(lower_edit, i + 2, 1)
@@ -500,6 +500,17 @@ def on_do_loop_guess(self):
500500
km_guess=loop_kmeans_guess, num_fit_parms = 9, n_clus = loop_num_clusters
501501
)
502502
self.loop_fitter.do_guess()
503+
prior = self.loop_fitter.prior # shape (n_guess, 9)
504+
lower_bounds1 = np.min(prior, axis=0)
505+
upper_bounds1 = np.max(prior, axis=0)
506+
lower_bounds2 = np.array(self.loop_default_lower, dtype=float)
507+
upper_bounds2 = np.array(self.loop_default_upper, dtype=float)
508+
lower_bounds = np.minimum(lower_bounds1, lower_bounds2)
509+
upper_bounds = np.maximum(upper_bounds1, upper_bounds2)
510+
for i in range(len(self.loop_lower_fields)):
511+
self.loop_lower_fields[i].setText(f"{lower_bounds[i]:.6g}")
512+
self.loop_upper_fields[i].setText(f"{upper_bounds[i]:.6g}")
513+
self.loop_output_box.append("Bounds updated from prior distribution.")
503514
self.loop_output_box.append(f"Guess shape: {self.loop_fitter.prior.shape}")
504515
self.loop_output_box.append(f"{self.loop_fitter.prior[0:3]}")
505516
self.do_loop_fit_button.setEnabled(True)

0 commit comments

Comments
 (0)