示例#1
0
文件: Laden.py 项目: lustra/SpeckView
    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()
示例#2
0
文件: Laden.py 项目: lustra/SpeckView
    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()
示例#3
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()