Skip to content

Commit bfb1841

Browse files
author
stephanie
committed
Merge branch 'dup_filter' into Beta_1.2.7
2 parents 3798406 + 5ad711d commit bfb1841

File tree

15 files changed

+262
-41
lines changed

15 files changed

+262
-41
lines changed

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,5 @@ setup/Output/setup.exe
6565
Temp
6666

6767
*.app
68-
*.spec
6968

7069

doc/wxFormBuilder/Data Filter Form.fbp

Lines changed: 90 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
<property name="internationalize">0</property>
1818
<property name="name">frmDataFilter</property>
1919
<property name="namespace"></property>
20-
<property name="path">/home/denver/Desktop</property>
20+
<property name="path">C:\Users\Stephanie\Desktop</property>
2121
<property name="precompiled_header"></property>
2222
<property name="relative_path">1</property>
2323
<property name="skip_lua_events">1</property>
@@ -44,7 +44,7 @@
4444
<property name="minimum_size">358,452</property>
4545
<property name="name">clsDataFilters</property>
4646
<property name="pos">599,384</property>
47-
<property name="size">382,499</property>
47+
<property name="size">382,547</property>
4848
<property name="style">wxDEFAULT_DIALOG_STYLE</property>
4949
<property name="subclass"></property>
5050
<property name="title">Data Filter</property>
@@ -2342,6 +2342,94 @@
23422342
</object>
23432343
</object>
23442344
</object>
2345+
<object class="sizeritem" expanded="1">
2346+
<property name="border">5</property>
2347+
<property name="flag">wxALL</property>
2348+
<property name="proportion">0</property>
2349+
<object class="wxRadioButton" expanded="1">
2350+
<property name="BottomDockable">1</property>
2351+
<property name="LeftDockable">1</property>
2352+
<property name="RightDockable">1</property>
2353+
<property name="TopDockable">1</property>
2354+
<property name="aui_layer"></property>
2355+
<property name="aui_name"></property>
2356+
<property name="aui_position"></property>
2357+
<property name="aui_row"></property>
2358+
<property name="best_size"></property>
2359+
<property name="bg"></property>
2360+
<property name="caption"></property>
2361+
<property name="caption_visible">1</property>
2362+
<property name="center_pane">0</property>
2363+
<property name="close_button">1</property>
2364+
<property name="context_help"></property>
2365+
<property name="context_menu">1</property>
2366+
<property name="default_pane">0</property>
2367+
<property name="dock">Dock</property>
2368+
<property name="dock_fixed">0</property>
2369+
<property name="docking">Left</property>
2370+
<property name="enabled">1</property>
2371+
<property name="fg"></property>
2372+
<property name="floatable">1</property>
2373+
<property name="font"></property>
2374+
<property name="gripper">0</property>
2375+
<property name="hidden">0</property>
2376+
<property name="id">wxID_ANY</property>
2377+
<property name="label"> Duplicate Values</property>
2378+
<property name="max_size"></property>
2379+
<property name="maximize_button">0</property>
2380+
<property name="maximum_size"></property>
2381+
<property name="min_size"></property>
2382+
<property name="minimize_button">0</property>
2383+
<property name="minimum_size"></property>
2384+
<property name="moveable">1</property>
2385+
<property name="name">rbDuplicate</property>
2386+
<property name="pane_border">1</property>
2387+
<property name="pane_position"></property>
2388+
<property name="pane_size"></property>
2389+
<property name="permission">protected</property>
2390+
<property name="pin_button">1</property>
2391+
<property name="pos">10,8</property>
2392+
<property name="resize">Resizable</property>
2393+
<property name="show">1</property>
2394+
<property name="size"></property>
2395+
<property name="style"></property>
2396+
<property name="subclass"></property>
2397+
<property name="toolbar_pane">0</property>
2398+
<property name="tooltip"></property>
2399+
<property name="validator_data_type"></property>
2400+
<property name="validator_style">wxFILTER_NONE</property>
2401+
<property name="validator_type">wxDefaultValidator</property>
2402+
<property name="validator_variable"></property>
2403+
<property name="value">0</property>
2404+
<property name="window_extra_style"></property>
2405+
<property name="window_name"></property>
2406+
<property name="window_style"></property>
2407+
<event name="OnChar"></event>
2408+
<event name="OnEnterWindow"></event>
2409+
<event name="OnEraseBackground"></event>
2410+
<event name="OnKeyDown"></event>
2411+
<event name="OnKeyUp"></event>
2412+
<event name="OnKillFocus"></event>
2413+
<event name="OnLeaveWindow"></event>
2414+
<event name="OnLeftDClick"></event>
2415+
<event name="OnLeftDown"></event>
2416+
<event name="OnLeftUp"></event>
2417+
<event name="OnMiddleDClick"></event>
2418+
<event name="OnMiddleDown"></event>
2419+
<event name="OnMiddleUp"></event>
2420+
<event name="OnMotion"></event>
2421+
<event name="OnMouseEvents"></event>
2422+
<event name="OnMouseWheel"></event>
2423+
<event name="OnPaint"></event>
2424+
<event name="OnRadioButton"></event>
2425+
<event name="OnRightDClick"></event>
2426+
<event name="OnRightDown"></event>
2427+
<event name="OnRightUp"></event>
2428+
<event name="OnSetFocus"></event>
2429+
<event name="OnSize"></event>
2430+
<event name="OnUpdateUI"></event>
2431+
</object>
2432+
</object>
23452433
<object class="sizeritem" expanded="0">
23462434
<property name="border">5</property>
23472435
<property name="flag">wxALL|wxEXPAND</property>

make.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,7 @@ def run_pyinstaller(console=False):
158158
'--icon=%s ' % WIN_ICON_FILE +
159159
'--version-file=%s ' % VERSION_FILE +
160160
# '--onefile ' +
161+
'--exclude=
161162
'--noconfirm ' + APP_FILE)
162163
else:
163164
## Non Console Version
@@ -248,7 +249,6 @@ def main():
248249
run_inno(scriptpath)
249250

250251
print "Create No Installer "
251-
252252
## Create Shortcut
253253
## Create File
254254
## Zip Executable

odmtools/controller/frmDataFilters.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,9 @@ def onBtnApplyButton(self, event):
115115
elif self.txtVChangeLT.GetValue():
116116
self.recordService.value_change_threshold(float(self.txtVChangeLT.GetValue()), '<')
117117

118+
elif self.rbDuplicate.GetValue():
119+
self.recordService.duplicate_value_filter()
120+
118121
event.Skip()
119122

120123

odmtools/controller/logicEditTools.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,13 @@ def value_change_threshold(self, value, operator):
6565
self._script("edit_service.change_value_threshold(%s,'%s')\n" % (value, operator), 'black')
6666
Publisher.sendMessage("scroll")
6767

68+
def duplicate_value_filter(self):
69+
self._edit_service.duplicate_value_filter()
70+
self.refresh_selection()
71+
if self._record:
72+
self._script("edit_service.duplicate_value_filter()\n" , 'black')
73+
Publisher.sendMessage("scroll")
74+
6875
def filter_from_previous(self, value):
6976
'''
7077

odmtools/gui/mnuRibbon.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,8 @@ def onSave(self, event):
398398

399399
def onEditFilter(self, event):
400400
data_filter = frmDataFilter(self.parent, self.parent.getRecordService())
401-
data_filter.ShowModal()
401+
val = data_filter.ShowModal()
402+
402403
data_filter.Destroy()
403404
event.Skip()
404405

odmtools/gui/plotProbability.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ def updatePlot(self):
135135
if len(oneSeries.dataTable) > 0:
136136
#self.prob.append(
137137
#prop = oneSeries.Probability.plot(column="DataValue", ax=self.plots)
138-
138+
#todo FutureWarning: order is deprecated, use sort_values(...)
139139
xValues = oneSeries.Probability.xAxis.order().values
140140
yValues = oneSeries.Probability.yAxis.order().values
141141

odmtools/odmservices/edit_service.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,14 @@ def change_value_threshold(self, value, operator):
207207
del copy_df
208208
self.filtered_dataframe = df[df.index.isin(tmplist)]
209209

210+
#Duplicate values filter
211+
def duplicate_value_filter(self):
212+
df = self._test_filter_previous()
213+
#self.filtered_dataframe= df[df.index.get_duplicates()]
214+
self.filtered_dataframe= df[df.index.isin(df.index.get_duplicates())]
215+
#self.filtered_dataframe = df[df['DataValue'] < value]
216+
print "dup value worked"
217+
210218

211219
def select_points_tf(self, tf_list):
212220
self._filter_list = tf_list
@@ -366,6 +374,9 @@ def drift_correction(self, gap_width):
366374
return True
367375
return False
368376

377+
378+
379+
369380
def isOneGroup(self):
370381

371382
issel = self._series_points_df.index.isin(self.get_filtered_points().index)

odmtools/view/clsDataFilters.py

Lines changed: 34 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# -*- coding: utf-8 -*-
22

3-
# ##########################################################################
4-
# # Python code generated with wxFormBuilder (version Feb 26 2014)
3+
###########################################################################
4+
## Python code generated with wxFormBuilder (version Jun 5 2014)
55
## http://www.wxformbuilder.org/
66
##
77
## PLEASE DO "NOT" EDIT THIS FILE!
@@ -11,17 +11,15 @@
1111
import wx.xrc
1212
import wx.lib.masked as masked
1313

14+
1415
###########################################################################
1516
## Class clsDataFilters
1617
###########################################################################
1718

1819
class clsDataFilters(wx.Dialog):
19-
20-
2120
def __init__(self, parent):
22-
2321
wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title=u"Data Filter", pos=wx.Point(599, 384),
24-
size=wx.Size(382, 500), style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER)
22+
size=wx.Size(382, 547), style=wx.DEFAULT_DIALOG_STYLE)
2523

2624
self.SetSizeHintsSz(wx.Size(358, 452), wx.DefaultSize)
2725

@@ -55,16 +53,16 @@ def __init__(self, parent):
5553
self.txtThreshValLT = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size(248, -1), 0)
5654
fgSizer1.Add(self.txtThreshValLT, 1, wx.ALL | wx.EXPAND, 5)
5755

58-
sbThreshold.Add(fgSizer1, 0, wx.EXPAND, 5)
56+
sbThreshold.Add(fgSizer1, 1, wx.EXPAND, 5)
5957

60-
bsValueThresh.Add(sbThreshold, 1, 0, 5)
58+
bsValueThresh.Add(sbThreshold, 1, wx.EXPAND, 5)
6159

6260
bSizer3.Add(bsValueThresh, 1, wx.EXPAND, 5)
6361

6462
bsGaps = wx.BoxSizer(wx.HORIZONTAL)
6563

6664
self.rbDataGaps = wx.RadioButton(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0)
67-
bsGaps.Add(self.rbDataGaps, 1, wx.ALL, 5)
65+
bsGaps.Add(self.rbDataGaps, 0, wx.ALL, 5)
6866

6967
sbGaps = wx.StaticBoxSizer(wx.StaticBox(self, wx.ID_ANY, u"Data Gaps"), wx.VERTICAL)
7068

@@ -76,23 +74,23 @@ def __init__(self, parent):
7674
self.lblGapsVal.Wrap(-1)
7775
fgSizer2.Add(self.lblGapsVal, 0, wx.ALL, 5)
7876

79-
self.txtGapsVal = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size(230, -1), 0)
77+
self.txtGapsVal = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size(220, -1), 0)
8078
fgSizer2.Add(self.txtGapsVal, 0, wx.ALL, 5)
8179

8280
self.lblGapsTime = wx.StaticText(self, wx.ID_ANY, u"Time Period:", wx.DefaultPosition, wx.DefaultSize, 0)
8381
self.lblGapsTime.Wrap(-1)
8482
fgSizer2.Add(self.lblGapsTime, 0, wx.ALL, 5)
8583

8684
cbGapTimeChoices = [u"second", u"minute", u"hour", u"day"]
87-
self.cbGapTime = wx.ComboBox(self, wx.ID_ANY, u"second", wx.DefaultPosition, wx.Size(230, -1), cbGapTimeChoices,
85+
self.cbGapTime = wx.ComboBox(self, wx.ID_ANY, u"second", wx.DefaultPosition, wx.Size(220, -1), cbGapTimeChoices,
8886
wx.CB_READONLY)
8987
fgSizer2.Add(self.cbGapTime, 0, wx.ALL, 5)
9088

9189
sbGaps.Add(fgSizer2, 1, wx.EXPAND, 5)
9290

93-
bsGaps.Add(sbGaps, 0, 0, 5)
91+
bsGaps.Add(sbGaps, 1, wx.EXPAND, 5)
9492

95-
bSizer3.Add(bsGaps, 0, 0, 5)
93+
bSizer3.Add(bsGaps, 1, wx.EXPAND, 5)
9694

9795
bsDate = wx.BoxSizer(wx.HORIZONTAL)
9896

@@ -134,13 +132,14 @@ def __init__(self, parent):
134132
self.tpBefore = masked.TimeCtrl(self, wx.ID_ANY, pos=wx.DefaultPosition, size=wx.Size(80, -1),
135133
name="24 hour control",
136134
fmt24hr=True, spinButton=self.sbBefore, oob_color='White')
137-
fgSizer3.Add( self.tpBefore, 0, wx.ALL, 5 )
138-
fgSizer3.Add( self.sbBefore, 0, wx.ALL, 5 )
135+
fgSizer3.Add(self.tpBefore, 0, wx.ALL, 5)
136+
fgSizer3.Add(self.sbBefore, 0, wx.ALL, 5)
137+
139138
sbDate.Add(fgSizer3, 1, wx.EXPAND, 5)
140139

141-
bsDate.Add( sbDate, 1, wx.EXPAND, 5 )
140+
bsDate.Add(sbDate, 1, wx.EXPAND, 5)
142141

143-
bSizer3.Add(bsDate, 0, wx.EXPAND, 5)
142+
bSizer3.Add(bsDate, 1, wx.EXPAND, 5)
144143

145144
bsValChange = wx.BoxSizer(wx.HORIZONTAL)
146145

@@ -169,13 +168,16 @@ def __init__(self, parent):
169168

170169
sbValChange.Add(fgSizer4, 1, wx.EXPAND, 5)
171170

172-
bsValChange.Add(sbValChange, 1, 0, 5)
171+
bsValChange.Add(sbValChange, 1, wx.EXPAND, 5)
173172

174173
bSizer3.Add(bsValChange, 1, wx.EXPAND, 5)
175174

175+
self.rbDuplicate = wx.RadioButton(self, wx.ID_ANY, u" Duplicate Values", wx.Point(10, 8), wx.DefaultSize, 0)
176+
bSizer3.Add(self.rbDuplicate, 0, wx.ALL, 5)
177+
176178
self.chkToggleFilterSelection = wx.CheckBox(self, wx.ID_ANY, u"Filter from previous filter", wx.DefaultPosition,
177179
wx.DefaultSize, 0)
178-
bSizer3.Add(self.chkToggleFilterSelection, 1, wx.ALL | wx.EXPAND, 5)
180+
bSizer3.Add(self.chkToggleFilterSelection, 0, wx.ALL | wx.EXPAND, 5)
179181

180182
bsButtons = wx.BoxSizer(wx.HORIZONTAL)
181183

@@ -191,14 +193,16 @@ def __init__(self, parent):
191193
self.btnClear = wx.Button(self, wx.ID_ANY, u"Clear Filter", wx.DefaultPosition, wx.Size(64, 23), 0)
192194
bsButtons.Add(self.btnClear, 1, wx.ALL | wx.EXPAND, 5)
193195

194-
bSizer3.Add(bsButtons, 1, wx.EXPAND, 0)
196+
bSizer3.Add(bsButtons, 0, wx.EXPAND, 0)
195197

196198
bSizer1.Add(bSizer3, 1, wx.EXPAND, 5)
197199

198200
self.SetSizer(bSizer1)
199201
self.Layout()
200202

201-
self.Centre(wx.BOTH) # Connect Events
203+
self.Centre(wx.BOTH)
204+
205+
# Connect Events
202206
self.txtThreshValGT.Bind(wx.EVT_SET_FOCUS, self.onSetFocus)
203207
self.txtThreshValLT.Bind(wx.EVT_SET_FOCUS, self.onSetFocus)
204208
self.txtGapsVal.Bind(wx.EVT_SET_FOCUS, self.onSetFocus)
@@ -212,19 +216,17 @@ def __init__(self, parent):
212216
self.txtVChangeGT.Bind(wx.EVT_SET_FOCUS, self.onSetFocus)
213217
self.txtVChangeLT.Bind(wx.EVT_SET_FOCUS, self.onSetFocus)
214218
self.chkToggleFilterSelection.Bind(wx.EVT_CHECKBOX, self.onCheckBox)
215-
self.btnClear.Bind(wx.EVT_BUTTON, self.onBtnClearButton)
216219
self.btnOK.Bind(wx.EVT_BUTTON, self.onBtnOKButton)
217220
self.btnCancel.Bind(wx.EVT_BUTTON, self.onBtnCancelButton)
218221
self.btnApply.Bind(wx.EVT_BUTTON, self.onBtnApplyButton)
222+
self.btnClear.Bind(wx.EVT_BUTTON, self.onBtnClearButton)
219223

220224

221225
def __del__(self):
222226
pass
223227

224228

225-
# Virtual event handlers, overide them in your derived class
226-
227-
229+
# Virtual event handlers, overide them in your derived class
228230
def onSetFocus(self, event):
229231
event.Skip()
230232

@@ -233,10 +235,6 @@ def onCheckBox(self, event):
233235
event.Skip()
234236

235237

236-
def onBtnClearButton(self, event):
237-
event.Skip()
238-
239-
240238
def onBtnOKButton(self, event):
241239
event.Skip()
242240

@@ -248,8 +246,14 @@ def onBtnCancelButton(self, event):
248246
def onBtnApplyButton(self, event):
249247
event.Skip()
250248

249+
250+
def onBtnClearButton(self, event):
251+
event.Skip()
252+
253+
254+
251255
# self.dpAfter = wx.DatePickerCtrl(self, wx.ID_ANY, wx.DefaultDateTime, wx.DefaultPosition, wx.Size(150, -1),
252-
# wx.DP_DROPDOWN | wx.DP_SHOWCENTURY)
256+
# wx.DP_DROPDOWN | wx.DP_SHOWCENTURY)
253257
# fgSizer3.Add(self.dpAfter, 0, wx.ALL, 5)
254258
#
255259
# self.sbAfter = wx.SpinButton(self, wx.ID_ANY, wx.DefaultPosition, wx.Size(15, -1), 0)

0 commit comments

Comments
 (0)