def fitpeaks_page(self): "create row for filters parameters" mca = self.parent.mca self.wids.peaks = [] p = GridPanel(self) p.AddManyText((' ROI Name', 'Fit?', 'Center', 'Sigma', 'Amplitude'), style=CEN) p.Add(HLine(p, size=(600, 3)), dcol=5, newrow=True) offset, slope = self.mca.offset, self.mca.slope for iroi, roi in enumerate(self.mca.rois): try: cenval, ecen, fwhm, ampval, _x = self.mca.init_calib[roi.name] except KeyError: continue sigval = 0.4 * fwhm mincen = offset + slope * (roi.left - 4 * roi.bgr_width) maxcen = offset + slope * (roi.right + 4 * roi.bgr_width) pname = roi.name.replace(' ', '').lower() ampnam = '%s_amp' % pname cennam = '%s_cen' % pname signam = '%s_sig' % pname sigexpr = "%s + %s*%s +%s*%s**2" % (self.gsig_offset, self.gsig_slope, cennam, self.gsig_quad, cennam) p_amp = Parameter(value=ampval, vary=True, min=0, name=ampnam) p_sig = Parameter(value=sigval, expr=sigexpr, min=0, name=signam) p_cen = Parameter(value=cenval, vary=False, name=cennam, min=mincen, max=maxcen) setattr(self.paramgroup, ampnam, p_amp) setattr(self.paramgroup, cennam, p_cen) setattr(self.paramgroup, signam, p_sig) _use = Check(p, label='use', default=True) _cen = ParameterPanel(p, p_cen, precision=3) _sig = ParameterPanel(p, p_sig, precision=3) _amp = ParameterPanel(p, p_amp, precision=2) self.wids.peaks.append((_use, _cen, _sig, _amp)) p.AddText(' %s' % roi.name, newrow=True, style=LEFT) p.Add(_use, style=wx.ALIGN_CENTER) p.Add(_cen) p.Add(_sig) p.Add(_amp) p.Add(HLine(p, size=(600, 3)), dcol=5, newrow=True) p.pack() return p
def filters_page(self): "create row for filters parameters" mca = self.parent.mca self.wids.filters = [] p = GridPanel(self, itemstyle=LEFT) bx = Button(p, 'Customize Filter List', size=(150, -1), action=self.onEditFilters) bx.Disable() p.AddManyText( (' filter', 'material', 'density (gr/cm^3)', 'thickness (mm)'), style=CEN) p.Add(HLine(p, size=(600, 3)), dcol=5, newrow=True) for i in range(4): _mat = Choice(p, choices=self.Filter_Materials, default=0, size=(125, -1), action=partial(self.onFilterMaterial, index=i)) _den = FloatCtrl(p, value=0, minval=0, maxval=30, precision=4, size=(75, -1)) pnam = 'filter%i_thickness' % (i + 1) param = Parameter(value=0.0, vary=False, min=0, name=pnam) setattr(self.paramgroup, pnam, param) _len = ParameterPanel(p, param, precision=4) self.wids.filters.append((_mat, _den, _len)) p.AddText(' %i ' % (i + 1), newrow=True) p.Add(_mat) p.Add(_den, style=wx.ALIGN_CENTER) p.Add(_len) p.Add(HLine(p, size=(600, 3)), dcol=5, newrow=True) p.AddText(' ', newrow=True) p.Add(bx, dcol=3) p.pack() return p