Skip to content

Commit 92deee0

Browse files
author
Paul Müller
committed
Merge pull request #146 from FCS-analysis/develop
Develop
2 parents ddf5f31 + 17ad7d1 commit 92deee0

File tree

6 files changed

+41
-18
lines changed

6 files changed

+41
-18
lines changed

ChangeLog.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
0.9.5
2+
- Bugfixes
3+
- Closing the batch control window causes segfault bug (#142)
4+
- Closing page causes error when batch control is active (#143)
5+
- Plot normalization causes "Save Session" to fail (#144)
6+
- Plot normalization not loaded from session (#145)
17
0.9.4
28
- Batch control allows to select individual parameters (#108)
39
- Allow to exclude pages from batch fitting (#107)

pycorrfit/fcs_data_set.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -548,9 +548,6 @@ def modeled_plot(self):
548548
"""fitted data values, same shape as self.correlation_fit"""
549549
toplot = self.modeled_fit
550550
toplot[:,1] *= self.normalize_factor
551-
if toplot[-1,1] == 0.1:
552-
import IPython
553-
IPython.embed()
554551
return toplot
555552

556553
@property
@@ -559,7 +556,6 @@ def normalize_factor(self):
559556
if self.normparm is None:
560557
# nothing to do
561558
return 1
562-
563559
if self.normparm < self.fit_parameters.shape[0]:
564560
nfactor = self.fit_parameters[self.normparm]
565561
else:

pycorrfit/frontend.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1820,6 +1820,7 @@ def UnpackParameters(self, Parms, Page, init=False):
18201820
# New feature in 0.7.8 includes normalization to a fitting
18211821
# parameter.
18221822
Page.corr.normparm = Parms[8]
1823+
Page.apply_parameters_reverse()
18231824
Page.OnAmplitudeCheck("init")
18241825
if len(Parms) >= 10:
18251826
Page.corr.fit_parameters_range = np.array(Parms[9])

pycorrfit/openfile.py

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -328,22 +328,35 @@ def SaveSessionData(sessionfile, Infodict):
328328
for idparm in ParmsKeys:
329329
# Make sure we do not accidently save arrays.
330330
# This would not work correctly with yaml.
331+
# Parameters
331332
Parms[idparm][2] = np.array(Parms[idparm][2],dtype="float").tolist()
332-
Parms[idparm][3] = np.array(Parms[idparm][3],dtype="bool").tolist()
333-
# Range of fitting parameters
333+
# Parameter varied
334+
Parms[idparm][3] = np.array(Parms[idparm][3],dtype="bool").tolist()
335+
# Channel selection
336+
Parms[idparm][4] = np.array(Parms[idparm][4],dtype="int").tolist()
337+
# Background selection
338+
for ii in range(len(Parms[idparm][6])):
339+
if Parms[idparm][6][ii] is not None:
340+
Parms[idparm][6][ii] = int(Parms[idparm][6][ii])
341+
# Plot normalization
342+
if Parms[idparm][8] is not None:
343+
Parms[idparm][8] = int(Parms[idparm][8])
344+
# Fit parameter range
334345
Parms[idparm][9] = np.array(Parms[idparm][9],dtype="float").tolist()
335346
Parmlist.append(Parms[idparm])
347+
336348
try:
337349
# We would like to perform safe_dump, because in the
338350
# Windoes x64 version, some integers are exported
339351
# like this: `!!python/long '105'` using `yaml.dump`.
340352
with open(parmsfilename, "wb") as yamlfd:
341353
yaml.safe_dump(Parmlist, yamlfd)
342-
except:# yaml.representer.RepresenterError:
343-
# This error occured once on Mac OS 10.8.5:
354+
except yaml.representer.RepresenterError:
344355
# `RepresenterError: cannot represent an object: 0`
345356
# In this case, we choose to use the normal dump
346357
# and pray.
358+
# However, this should not happen, because in the above
359+
# for-loop we set the correct dtype for each parameter .
347360
if os.path.exists(parmsfilename):
348361
os.remove(parmsfilename)
349362
with open(parmsfilename, "wb") as yamlfd:

pycorrfit/page.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -191,8 +191,8 @@ def bg2selected(self, value):
191191
self._bg2selected = value
192192

193193
def apply_parameters(self, event=None):
194-
""" Read the values from the form and write it to the
195-
pages parameters.
194+
""" Read the values from the GUI form and write it to the
195+
pages parameters / correlation class.
196196
This function is called when the "Apply" button is hit.
197197
"""
198198
modelid = self.corr.fit_model.id
@@ -263,7 +263,7 @@ def apply_parameters(self, event=None):
263263

264264
def apply_parameters_reverse(self, event=None):
265265
""" Read the values from the pages parameters and write
266-
it to the form.
266+
it to the GUI form.
267267
"""
268268
modelid = self.corr.fit_model.id
269269
#
@@ -287,6 +287,12 @@ def apply_parameters_reverse(self, event=None):
287287
List[1] = "spline ("+str(self.FitKnots)+" knots)"
288288
self.Fitbox[1].SetItems(List)
289289
self.Fitbox[1].SetSelection(idf)
290+
# Normalization
291+
if self.corr.normparm is None:
292+
normsel = 0
293+
else:
294+
normsel = self.corr.normparm + 1
295+
self.AmplitudeInfo[2].SetSelection(normsel)
290296
# Fitting algorithm
291297
keys = pcfbase.GetAlgorithmStringList()[0]
292298
idalg = keys.index(self.corr.fit_algorithm)

pycorrfit/tools/batchcontrol.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -146,14 +146,17 @@ def OnPageChanged(self, Page=None, trigger=None):
146146
if trigger in ["fit_batch", "fit_finalize", "init",
147147
"parm_batch", "parm_finalize"]:
148148
return
149-
149+
150+
oldpage = self.curpage
151+
self.curpage = self.parent.notebook.GetCurrentPage()
152+
150153
if Page is not None:
151154
# redraw this tool if necessary
152-
if self.curpage is not None:
155+
if oldpage is not None and not isinstance(oldpage, wx._core._wxPyDeadObject):
153156
oldmodelid = self.curpage.modelid
154157
else:
155158
oldmodelid = 0
156-
newmodelid = Page.modelid
159+
newmodelid = self.curpage.modelid
157160
if oldmodelid != newmodelid:
158161
self.RedrawParameterBox()
159162

@@ -167,7 +170,7 @@ def OnPageChanged(self, Page=None, trigger=None):
167170
self.dropdown.SetItems(DDlist)
168171
self.dropdown.SetSelection(0)
169172

170-
self.curpage = self.parent.notebook.GetCurrentPage()
173+
171174

172175

173176
def OnRadioHere(self, event=None):
@@ -249,7 +252,6 @@ def Redraw(self, e=None):
249252
## Parameter selection
250253
boxright = wx.StaticBox(panel, label="Selected parameters")
251254
rightSizer = wx.StaticBoxSizer(boxright, wx.VERTICAL)
252-
boxright.SetSizer(rightSizer)
253255
self.parameter_sizer = rightSizer
254256
self.RedrawParameterBox()
255257

@@ -310,9 +312,8 @@ def RedrawParameterBox(self, e=None):
310312
box = sizer.GetStaticBox()
311313
boxs = box.GetBestSize()
312314
sizs = sizer.GetMinSize()
313-
thesize = (max(boxs[0], sizs[0]+20), sizs[1])
315+
thesize = (max(boxs[0], sizs[0]), sizs[1])
314316
sizer.SetMinSize(thesize)
315-
box.SetMinSize(thesize)
316317
box.SetSize(thesize)
317318

318319
try:

0 commit comments

Comments
 (0)