Example #1
0
 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()
Example #2
0
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)
Example #3
0
    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()
Example #4
0
    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()
Example #5
0
    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()
Example #6
0
    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()
Example #7
0
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)"
Example #8
0
    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))
Example #9
0
 def speichern(self, wohin):
     """
     :type wohin: str
     """
     Fit.speichern(self, wohin)
Example #10
0
 def impl_fit(self):
     Fit.impl_fit(self)
Example #11
0
    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()
Example #12
0
    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()