Skip to content

Commit

Permalink
ref: move preprocessing to separate class
Browse files Browse the repository at this point in the history
  • Loading branch information
paulmueller committed Sep 1, 2019
1 parent 4ffb0fd commit ac48ec3
Show file tree
Hide file tree
Showing 8 changed files with 327 additions and 293 deletions.
71 changes: 0 additions & 71 deletions pyjibe/fd/base.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import inspect
import io
import pkg_resources

Expand All @@ -9,7 +8,6 @@
import nanite.fit as nfit
import nanite.model as nmodel
import nanite.indent as nindent
import nanite.preproc as npreproc

from .. import units

Expand Down Expand Up @@ -60,9 +58,6 @@ def __init__(self, parent_widget):
# initial values, sources, drains for indentation depth
self.indentation_depth_setup()

# preprocessing setup
self.preproc_setup()

# fitting setup
self.fit_setup()

Expand Down Expand Up @@ -632,72 +627,6 @@ def on_update_weights(self, on_params_init=True):
if on_params_init:
self.on_params_init()

def preproc_descr_update(self, source):
"""Update the description box with the method doc string
Writes text to `self.text_preprocessing` according to the
method selected in `self.list_preproc_available` or
`self.list_preproc_applied`.
"""
if source == "available":
thelist = self.list_preproc_available
elif source == "applied":
thelist = self.list_preproc_applied
item = thelist.currentItem()
if item is None:
return
method_name = item.text()
method = getattr(npreproc.IndentationPreprocessor, method_name)
doc = method.__doc__.replace(" ", "").strip()
self.text_preprocessing.setPlainText(doc)

def preproc_set_preset(self):
"""Update preselection"""
text = self.cb_preproc_presel.currentText()
self.list_preproc_applied.clear()
if text == "None":
pass
elif text == "Recommended":
recommended_methods = ["compute_tip_position",
"correct_force_offset",
"correct_tip_offset",
"correct_split_approach_retract"]
for m in recommended_methods:
item = QtWidgets.QListWidgetItem()
item.setText(m)
self.list_preproc_applied.addItem(item)

def preproc_setup(self):
"""Setup everything necessary for the preprocessing tab"""
# Get list of preprocessing methods
mem = inspect.getmembers(npreproc.IndentationPreprocessor)
premem = []
for m in mem:
if (m[1].__doc__ is not None and
not m[0].startswith("_") and
not m[0] == "apply"):
premem.append(m[0])

premem.sort()

for p in premem:
item = QtWidgets.QListWidgetItem()
item.setText(p)
self.list_preproc_available.addItem(item)

self.list_preproc_available.currentItemChanged.connect(
lambda: self.preproc_descr_update("available"))
self.list_preproc_applied.currentItemChanged.connect(
lambda: self.preproc_descr_update("applied"))

# Add recommended item (see `self.preproc_set_preset`)
self.cb_preproc_presel.addItem("Recommended")
self.cb_preproc_presel.activated.connect(self.preproc_set_preset)
self.cb_preproc_presel.currentIndexChanged.connect(
self.preproc_set_preset)
# Apply recommended defaults
self.cb_preproc_presel.setCurrentIndex(1)

def rate_data(self, data):
"""Apply rating to curves
Expand Down
217 changes: 7 additions & 210 deletions pyjibe/fd/base_design.ui
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@
<property name="usesScrollButtons">
<bool>false</bool>
</property>
<widget class="QWidget" name="tab_preprocess">
<widget class="TabPreprocess" name="tab_preprocess">
<attribute name="title">
<string>Preprocess</string>
</attribute>
Expand All @@ -126,199 +126,6 @@
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QScrollArea" name="scrollArea_2">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="lineWidth">
<number>0</number>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>502</width>
<height>410</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_5">
<property name="spacing">
<number>6</number>
</property>
<property name="leftMargin">
<number>7</number>
</property>
<property name="topMargin">
<number>7</number>
</property>
<property name="rightMargin">
<number>7</number>
</property>
<property name="bottomMargin">
<number>7</number>
</property>
<item>
<widget class="QPushButton" name="btn_clear_preproc">
<property name="text">
<string>Clear Preprocessing</string>
</property>
</widget>
</item>
<item>
<layout class="QGridLayout" name="gridLayout">
<property name="sizeConstraint">
<enum>QLayout::SetMinimumSize</enum>
</property>
<item row="0" column="0">
<widget class="QLabel" name="label_7">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Load preset: </string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="cb_preproc_presel">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<item>
<property name="text">
<string notr="true">None</string>
</property>
</item>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="label_9">
<property name="text">
<string>Available (drag from here):</string>
</property>
</widget>
</item>
<item>
<widget class="QListWidget" name="list_preproc_available">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>75</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>120</height>
</size>
</property>
<property name="dragEnabled">
<bool>true</bool>
</property>
<property name="dragDropMode">
<enum>QAbstractItemView::DragOnly</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_8">
<property name="text">
<string>Description:</string>
</property>
</widget>
</item>
<item>
<widget class="QPlainTextEdit" name="text_preprocessing">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>900</height>
</size>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
<property name="plainText">
<string>Click on a method above or below to view its description here.</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_10">
<property name="text">
<string>Applied (drop here):</string>
</property>
</widget>
</item>
<item>
<widget class="QListWidget" name="list_preproc_applied">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>75</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>120</height>
</size>
</property>
<property name="dragEnabled">
<bool>true</bool>
</property>
<property name="dragDropMode">
<enum>QAbstractItemView::DropOnly</enum>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_fit">
Expand Down Expand Up @@ -1638,25 +1445,15 @@
<extends>QSlider</extends>
<header location="global">pyjibe.head.infdoubleslider</header>
</customwidget>
<customwidget>
<class>TabPreprocess</class>
<extends>QWidget</extends>
<header>pyjibe.fd.tab_preprocess</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources/>
<connections>
<connection>
<sender>btn_clear_preproc</sender>
<signal>clicked()</signal>
<receiver>list_preproc_applied</receiver>
<slot>clear()</slot>
<hints>
<hint type="sourcelabel">
<x>778</x>
<y>65</y>
</hint>
<hint type="destinationlabel">
<x>1021</x>
<y>698</y>
</hint>
</hints>
</connection>
<connection>
<sender>rd_weigt_perc</sender>
<signal>toggled(bool)</signal>
Expand Down
4 changes: 2 additions & 2 deletions pyjibe/fd/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -183,10 +183,10 @@ def fit_apply_preprocessing(self, fdist):
# Note: Preprocessing is cached once in `fdist`.
# Thus calling this method a second time without any
# change in the GUI is free.
num = self.list_preproc_applied.count()
num = self.tab_preprocess.list_preproc_applied.count()
preprocessing = []
for ii in range(num):
item = self.list_preproc_applied.item(ii)
item = self.tab_preprocess.list_preproc_applied.item(ii)
preprocessing.append(item.text())
# Perform preprocessing
fdist.apply_preprocessing(preprocessing)
Expand Down
4 changes: 0 additions & 4 deletions pyjibe/fd/rating_scheme.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,6 @@
import nanite.rate.rater


RATING_SCHEMES = collections.OrderedDict()
RATING_SCHEMES["Default (zef18 & Extra Trees)"] = ["zef18", "Extra Trees"]
RATING_SCHEMES["Disabled"] = ["none", "none"]

#: Rating configuration directory
CFG_DIR = pathlib.Path(appdirs.user_config_dir(appname="PyJibe")) / "rating"
#: Path to main rating configuration file
Expand Down

0 comments on commit ac48ec3

Please sign in to comment.