def __init__(self, laden, par): """ :type laden: Module.Spektroskopie.Laden.GuiSpektrLaden :type par: Module.Spektroskopie.Parameter.Parameter """ Fit.__init__(self, laden, par) self.lade_messwerte()
def get_qcd_yield_with_fit(var, cuts, cutMT, mtMinValue, dataGroup, lumis, MCGroups, systematics, openedFiles, useMCforQCDTemplate, QCDGroup): fit = Fit() make_histos_with_cuts(var, cuts, dataGroup, MCGroups, systematics, lumis, openedFiles, fit, mtMinValue, useMCforQCDTemplate, QCDGroup) fit_qcd(var, cuts.name, fit) dataHisto = dataGroup.getHistogram(var, "Nominal", "iso", cuts.name) fit.var = var fit.dataHisto = dataHisto return (get_yield(var, cuts.name, cutMT, mtMinValue, fit, dataGroup), fit)
def fit_starten(self, _): par = self.fitparameter() # Fortschrittsanzeige: self.fortschritt.set_value(0) self.fortschritt.set_pulse_step(1 / par.pixel) self.ui.hide_all() self.ff.show_all() while gtk.events_pending(): gtk.main_iteration_do(True) pass # Messwerte einlesen: self.messwerte_lesen(par) # Fitten: fit = Fit(par, self.amplitude, self.phase, self.fortschritt.pulse) erg = fit.start() # Gwyddion-Datenfeld: self.container = Container() xy = Format.si_unit("m") def anlegen(inhalt, titel, einheit): Format.volume_data( c=self.container, inhalt=inhalt, einheit_xy=xy, einheit_z=Format.si_unit(einheit), titel=titel, dim=par.dim, pixel=par.pixel ) anlegen([n.amp for n in erg], "Amplitude (V)", "V") anlegen([n.phase for n in erg], "Phase (°)", "°") anlegen([n.resfreq for n in erg], "Resonanzfrequenz (Hz)", "Hz") anlegen([n.guete_amp for n in erg], u"Güte (Amplitudenfit)", "") anlegen([n.amp_fhlr for n in erg], "Fehler Amp. (V)", "V") anlegen([n.phase_fhlr for n in erg], "Fehler Phase (°)", "°") anlegen([n.resfreq_fhlr for n in erg], "Fehler Resfreq. (Hz)", "Hz") anlegen([n.guete_amp_fhlr for n in erg], u"Fehler Güte (Ampfit.)", "") anlegen([n.guete_ph for n in erg], u"Güte (Phasenfit)", "") anlegen([n.untergrund for n in erg], "Untergrund (V)", "V") anlegen([n.phase_rel for n in erg], "Phasenversatz (°)", "°") Format.set_custom(self.container, ERGEBNIS, erg) Format.set_custom(self.container, PARAMETER, par) self.ff.hide_all() gtk.main_quit()
def fit_starten(self, _): par = self.fitparameter() # Fortschrittsanzeige: self.fortschritt.set_value(0) self.fortschritt.set_pulse_step(1 / par.pixel) self.ui.hide_all() self.ff.show_all() while gtk.events_pending(): gtk.main_iteration_do(True) pass # Messwerte einlesen: self.messwerte_lesen(par) # Fitten: fit = Fit(par, self.amplitude, self.phase, self.fortschritt.pulse) erg = fit.start() # Gwyddion-Datenfeld: self.container = Container() xy = Format.si_unit("m") def anlegen(inhalt, titel, einheit): Format.volume_data(c=self.container, inhalt=inhalt, einheit_xy=xy, einheit_z=Format.si_unit(einheit), titel=titel, dim=par.dim, pixel=par.pixel) anlegen([n.amp for n in erg], "Amplitude (V)", "V") anlegen([n.phase for n in erg], "Phase (°)", "°") anlegen([n.resfreq for n in erg], "Resonanzfrequenz (Hz)", "Hz") anlegen([n.guete_amp for n in erg], u"Güte (Amplitudenfit)", "") anlegen([n.amp_fhlr for n in erg], "Fehler Amp. (V)", "V") anlegen([n.phase_fhlr for n in erg], "Fehler Phase (°)", "°") anlegen([n.resfreq_fhlr for n in erg], "Fehler Resfreq. (Hz)", "Hz") anlegen([n.guete_amp_fhlr for n in erg], u"Fehler Güte (Ampfit.)", "") anlegen([n.guete_ph for n in erg], u"Güte (Phasenfit)", "") anlegen([n.untergrund for n in erg], "Untergrund (V)", "V") anlegen([n.phase_rel for n in erg], "Phasenversatz (°)", "°") Format.set_custom(self.container, ERGEBNIS, erg) Format.set_custom(self.container, PARAMETER, par) self.ff.hide_all() gtk.main_quit()
def __init__(self, konf, svbe): """ :type konf: Konfiguration.Konfiguration """ gtk.Builder.__init__(self) self.container = None """ :type: Container """ self.amplitude = None """ :type: numpy.multiarray.ndarray """ self.phase = None """ :type: numpy.multiarray.ndarray """ self.add_from_file(svbe + sep + 'laden.glade') self.ui = self.window('fenster_laden') self.ff = self.window('fenster_fortschritt') self.connect_signals({ 'ende': gtk.main_quit, 'fit_starten': self.fit_starten, 'abbrechen': lambda _: Fit.stopp(), 'vorschau': self.vorschau }) self.fortschritt = self.get_object('fortschritt') """ :type: gtk.ProgressBar """ parser = DefaultParser() parser.read(konf.datei) self.konf = konf self.version = parser.getint(konf.konfig, konf.version) self.pixel = self.spinbutton('pixel') self.pixel.set_value(parser.getint(konf.konfig, konf.pixel)) self.dim = self.spinbutton('dim') self.dim.set_value(parser.getfloat(konf.konfig, konf.dim)) self.df = self.spinbutton('df') self.df.set_value(parser.getfloat(konf.konfig, konf.df)) self.mittelungen = self.spinbutton('mittelungen') self.mittelungen.set_value(parser.getint(konf.konfig, konf.mittelungen)) self.fmin = self.spinbutton('fmin') self.bereich_min = self.spinbutton('bereich_min') fmin = parser.getint(konf.konfig, konf.fmin) self.fmin.set_value(fmin) self.bereich_min.set_value(fmin) self.fmax = self.spinbutton('fmax') self.bereich_max = self.spinbutton('bereich_max') fmax = parser.getint(konf.konfig, konf.fmax) self.fmax.set_value(fmax) self.bereich_max.set_value(fmax) self.plotter = Plotter("Frequenz (Hz)", "Amplitude (V)") self.get_object('vorschau').add(self.plotter) self.ui.show_all() gtk.main()
def get_isolation_cut(iso_var, fit=Fit()): if fit.extra == "iso_0_3_plus": if iso_var == "iso_plus": return "(mu_iso > 0.33 && mu_iso < 0.99)" elif iso_var == "iso_minus": return "(mu_iso > 0.3 && mu_iso < 0.9)" else: return "(mu_iso > 0.27 && mu_iso < 0.81)" elif fit.extra == "iso_0_5_plus": if iso_var == "iso_plus": return "(mu_iso > 0.55 && mu_iso < 0.99)" elif iso_var == "iso_minus": return "(mu_iso > 0.45 && mu_iso < 0.81)" else: return "(mu_iso > 0.5 && mu_iso < 0.9)" else: if iso_var == "iso_plus": return "(mu_iso > 0.33 && mu_iso < 0.55)" elif iso_var == "iso_minus": return "(mu_iso > 0.27 && mu_iso < 0.45)" else: return "(mu_iso > 0.3 && mu_iso < 0.5)"
def vorschau(self, _): n = self.spinbutton('vorschau_pixel2').get_value() par = self.fitparameter() frequenz = frequenzen(par) if self.amplitude is None: self.messwerte_lesen(par) erg = Fit(par, self.amplitude, self.phase, self.fortschritt.pulse).vorschau(n) def plot(messung, fit): """ :param messung: list :param fit: list """ self.plotter.leeren() self.plotter.plot(frequenzen_voll(par), messung) if fit is not None: self.plotter.plot(frequenz, fit, linewidth=2) self.plotter.draw() if self.radiobutton('vorschau_amp').get_active(): plot(self.amplitude[n], amp_verlauf(par, erg)) else: # if self.radiobutton('vorschau_phase').get_active(): plot(self.phase[n], phase_verlauf(par, erg))
def speichern(self, wohin): """ :type wohin: str """ Fit.speichern(self, wohin)
def impl_fit(self): Fit.impl_fit(self)
def __init__(self, konf, svbe): """ :type konf: str """ self.konf = konf gtk.Builder.__init__(self) self.container = None """ :type: Container """ self.amplitude = None """ :type: numpy.multiarray.ndarray """ self.phase = None """ :type: numpy.multiarray.ndarray """ self.add_from_file(os.path.join(svbe, 'laden.glade')) self.ui = self.window('fenster_laden') self.ff = self.window('fenster_fortschritt') self.connect_signals({ 'ende': gtk.main_quit, 'fit_starten': self.fit_starten, 'abbrechen': lambda _: Fit.stopp(), 'vorschau': self.vorschau }) self.fortschritt = self.get_object('fortschritt') """ :type: gtk.ProgressBar """ self.parser = DefaultParser() self.parser.read(konf) self.parser.getint = lambda sektion, option: int(self.parser.get(sektion, option).rsplit(',', 1)[0]) self.version = self.parser.getint(opt, 'Version') if self.version >= 3: self.sv = os.path.dirname(svbe) if Dialog(self.sv).frage("Kanal", "Den gewünschten Kanal wählen:", "elstat.", "elmech."): self.kanal = 'elstat' else: self.kanal = 'elmech' else: self.kanal = 'Untitled' self.pixel = self.spinbutton('pixel') self.pixel.set_value(self.parser.getint(rst, 'Pixel')) self.dim = self.spinbutton('dim') self.dim.set_value(self.parser.getfloat(rst, 'Dimension')) self.df = self.spinbutton('df') self.df.set_value(self.parser.getfloat(sgl, 'Rate') / self.parser.getfloat(sgl, 'Sample')) self.mittelungen = self.spinbutton('mittelungen') self.mittelungen.set_value(1) self.fmin = self.spinbutton('fmin') self.bereich_min = self.spinbutton('bereich_min') fmin = self.parser.getint(sgn, 'f_start') self.fmin.set_value(fmin) self.bereich_min.set_value(fmin) self.fmax = self.spinbutton('fmax') self.bereich_max = self.spinbutton('bereich_max') fmax = self.parser.getint(sgn, 'f_ende') self.fmax.set_value(fmax) self.bereich_max.set_value(fmax) self.plotter = Plotter("Frequenz (Hz)", "Amplitude (V)") self.get_object('vorschau').add(self.plotter) self.ui.show_all() gtk.main()
def fit_starten(self, _): par = self.fitparameter() # Messwerte einlesen: self.messwerte_lesen(par) self.ui.hide_all() self.ff.show_all() q = Queue() # Fitten: fit = Fit(par, self.amplitude, self.phase, q.put) erg = fit.start() x = 0.0 while not erg.ready(): gtk.main_iteration_do(False) try: q.get_nowait() x += 1.0 / par.spektren self.fortschritt.set_fraction(x) except Empty: pass if hasattr(os, 'fork'): q.close() erg = erg.get() """ :type: list[Ergebnis] """ del self.amplitude, self.phase, fit # Gwyddion-Datenfeld: self.container = Container() def anlegen(inhalt, titel, einheit): if par.raster: Format.channel_data( c=self.container, inhalt=inhalt, einheit_xy=SIUnit('m'), einheit_z=SIUnit(einheit), titel=titel, dim=par.dim, pixel=par.pixel # TODO geht nur, wenn kein Spektrum ) else: Format.spectra_data( c=self.container, x=hysterese(par.dcmin, par.dcmax, par.ddc), y=inhalt, label_x='', label_y='' ) if par.spektroskopie: # TODO Notlösung entfernen datei = open(par.konf.rsplit('.be', 1)[0] + ".fit", 'w') dc = hysterese(par.dcmin, par.dcmax, par.ddc) datei.write('DC/V,A/V,dA/V,f0/Hz,df0/Hz,Q,dQ,Phase\n') for n in range(par.spektren): datei.write( str(dc[n]) + ',' + str(erg[n].amp) + ',' + str(erg[n].amp_fhlr) + ',' + str(erg[n].resfreq) + ',' + str(erg[n].resfreq_fhlr) + ',' + str(erg[n].guete_amp) + ',' + str(erg[n].guete_amp_fhlr) + ',' + str(erg[n].phase) + '\n' ) datei.close() Dialog(self.sv).info("Gespeichert", "Fit gespeichert in " + datei.name) else: anlegen([n.amp for n in erg], "Amplitude", 'V') anlegen([n.phase for n in erg], "Phase", '°') anlegen([n.resfreq for n in erg], "Resonanzfrequenz", 'Hz') anlegen([n.guete_amp for n in erg], u"Güte (Amplitudenfit)", '') anlegen([n.amp_fhlr for n in erg], "Fehler Amp.", 'V') anlegen([n.phase_fhlr for n in erg], "Fehler Phase", '°') anlegen([n.resfreq_fhlr for n in erg], "Fehler Resfreq.", 'Hz') anlegen([n.guete_amp_fhlr for n in erg], u"Fehler Güte (Ampfit.)", '') anlegen([n.guete_ph for n in erg], u"Güte (Phasenfit)", '') anlegen([n.untergrund for n in erg], "Untergrund", 'V') anlegen([n.phase_rel for n in erg], "Phasenversatz", '°') Format.set_custom(self.container, ERGEBNIS, erg) Format.set_custom(self.container, PARAMETER, par) self.ff.hide_all() gtk.main_quit()