Skip to content

Commit

Permalink
- enh: allow to also set right part of fitting range individually
Browse files Browse the repository at this point in the history
 - fix: improve layout of FD fitting panel
  • Loading branch information
paulmueller committed Nov 12, 2019
1 parent b489d28 commit a4f42f4
Show file tree
Hide file tree
Showing 6 changed files with 369 additions and 244 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
0.5.7
- enh: allow to also set right part of fitting range individually
- fix: improve layout of FD fitting panel
0.5.6
- setup: bump nanite from 1.2.2 to 1.2.3 (fixes issue with fits not
being redone when the user changes an initial parameter)
- fix: IndexError when editing the fitting range
0.5.5
- maintenance release
Expand Down
12 changes: 12 additions & 0 deletions pyjibe/fd/main.ui
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,12 @@
<property name="enabled">
<bool>false</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="decimals">
<number>2</number>
</property>
Expand Down Expand Up @@ -257,6 +263,12 @@
<property name="enabled">
<bool>false</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimum">
<double>-100.000000000000000</double>
</property>
Expand Down
6 changes: 0 additions & 6 deletions pyjibe/fd/tab_edelta.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,9 +88,3 @@ def on_delta_change_spin(self, value):
self.fd.tab_fit.sp_range_1.blockSignals(False)
self.delta_spin.blockSignals(False)
self.delta_slider.blockSignals(False)

# Update stored indentation depth
if self.fd.tab_fit.cb_delta_select.currentIndex() == 1:
# Set indentation depth individually
fdist = self.current_curve
self.fd.tab_fit._indentation_depth_individual[fdist] = value
43 changes: 29 additions & 14 deletions pyjibe/fd/tab_fit.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,11 @@ def __init__(self, *args, **kwargs):
# initial values, sources, drains for indentation depth
self.indentation_depth_setup()

# hide option to set right part of fitting range individually
# (will be displayed when indentation depth is set individually,
# i.e. `self.cb_delta_select.currentIndex == 1`)
self.cb_right_individ.setVisible(False)

# signals
self.cb_segment.currentTextChanged.connect(self.on_params_init)
self.cb_xaxis.currentTextChanged.connect(self.on_params_init)
Expand Down Expand Up @@ -107,6 +112,10 @@ def fit_approach_retract(self, fdist, update_ui=True):
# Determine range
range_x = [self.sp_range_1.value() * units.scales["µ"],
self.sp_range_2.value() * units.scales["µ"]]
# Remember range if applicable
if self.cb_delta_select.currentIndex() == 1:
self._indentation_depth_individual[fdist] = (
self.sp_range_1.value(), self.sp_range_2.value())
# Determine if we want to weight the contact point
self.on_update_weights(on_params_init=False)
if self.cb_weight_cp.checkState() == 2:
Expand Down Expand Up @@ -253,11 +262,10 @@ def fit_update_parameters(self, fdist):
if self.cb_delta_select.currentIndex() == 1:
# Set indentation depth individually
if fdist in self._indentation_depth_individual:
value = self._indentation_depth_individual[fdist]
self.fd.tab_edelta.delta_spin.setValue(value)
else:
value = self.fd.tab_edelta.delta_spin.value()
self._indentation_depth_individual[fdist] = value
left, right = self._indentation_depth_individual[fdist]
self.fd.tab_edelta.delta_spin.setValue(left)
if self.cb_right_individ.isChecked() and right is not None:
self.sp_range_2.setValue(right)

def indentation_depth_setup(self):
"""Initiate ranges (spin/slider) that allow inf values"""
Expand All @@ -277,7 +285,7 @@ def on_model(self):
def on_params_init(self):
self.fd.on_params_init()

def on_delta_select(self, value):
def on_delta_select(self, index):
"""The user selected a method for indentation depth determination
This method is called when `tab_fit.cb_delta_select` or (indirectly)
Expand All @@ -289,7 +297,7 @@ def on_delta_select(self, value):
Parameters
----------
value: int
index: int
The selected index of the dropdown widget:
- 0: Set indentation depth globally
- 1: Set indentation depth individually
Expand All @@ -305,12 +313,12 @@ def on_delta_select(self, value):
self.fd.tab_edelta.delta_slider,
self.fd.tab_edelta.delta_btn_guess]

if value == 0:
if index == 0:
# Set indentation depth globally
[item.setEnabled(True) for item in global_disable]
[item.setEnabled(False) for item in local_enable]
self.cb_range_type.setEnabled(True)
elif value == 1:
elif index == 1:
# Set indentation depth individually
[item.setEnabled(True) for item in global_disable]
[item.setEnabled(True) for item in local_enable]
Expand All @@ -319,18 +327,25 @@ def on_delta_select(self, value):
# Set/get indentation depth individually
fdist = self.current_curve
if fdist in self._indentation_depth_individual:
value = self._indentation_depth_individual[fdist]
left = self._indentation_depth_individual[fdist][0]
else:
value = self.fd.tab_edelta.delta_spin.value()
self.fd.tab_edelta.delta_spin.setValue(value)

elif value == 2:
left = self.fd.tab_edelta.delta_spin.value()
self.fd.tab_edelta.delta_spin.setValue(left)
elif index == 2:
# Guess optimal indentation depth
[item.setEnabled(False) for item in global_disable]
[item.setEnabled(False) for item in local_enable]
self.cb_range_type.setEnabled(False)
self.cb_range_type.setCurrentText("absolute")
else:
raise ValueError("Invalid index '{}'!".format(index))

# enable checkbox for right range
if index == 1:
self.cb_right_individ.setVisible(True)
else:
self.cb_right_individ.setVisible(False)
self.cb_right_individ.setChecked(False)
self.on_params_init()

def on_update_weights(self, on_params_init=True):
Expand Down

0 comments on commit a4f42f4

Please sign in to comment.