Example #1
0
 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)
Example #2
0
 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
     )
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 test_format(self):
     from SpeckView import Format
     from SpeckView.BE.Ergebnis import Ergebnis
     c = gwy.Container()
     debug = "debug"
     original = [Ergebnis(3, 5, 7, 11, 1, 1, 1)]
     Format.set_custom(c, debug, original)
     resultat = Format.get_custom(c, debug)
     """ :type: list[Ergebnis.Ergebnis] """
     self.assertEqual(len(resultat), len(original))
     for n in range(len(original)):
         alt = original[n]
         neu = resultat[n]
         self.assertEqual(neu.amp, alt.amp)
         self.assertEqual(neu.resfreq, alt.resfreq)
         self.assertEqual(neu.guete_amp, alt.guete_amp)
         self.assertEqual(neu.untergrund, alt.untergrund)
Example #6
0
 def test_format(self):
     from SpeckView import Format
     from SpeckView.BE.Ergebnis import Ergebnis
     c = gwy.Container()
     debug = "debug"
     original = [Ergebnis(3, 5, 7, 11)]
     Format.set_custom(c, debug, original)
     resultat = Format.get_custom(c, debug)
     """ :type: list[Ergebnis.Ergebnis] """
     self.assertEqual(len(resultat), len(original))
     for n in range(len(original)):
         alt = original[n]
         neu = resultat[n]
         self.assertEqual(neu.amp, alt.amp)
         self.assertEqual(neu.resfreq, alt.resfreq)
         self.assertEqual(neu.guete_amp, alt.guete_amp)
         self.assertEqual(neu.untergrund, alt.untergrund)
Example #7
0
 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=''
         )
Example #8
0
    def __init__(self, glade, c):
        """
        :type glade: str
        :type c: gwy.Container.Container
        """
        gtk.Builder.__init__(self)

        self.add_from_file(glade + 'spektrum.glade')

        self.ui = self.get_object('fenster_spektrum')
        """ :type: gtk.Window """

        self.x = self.spinbutton('x')
        self.y = self.spinbutton('y')

        self.plotter = Plotter("Frequenz (Hz)", "Amplitude (V)")
        self.get_object('vorschau').add(self.plotter)

        try:
            self.erg = Format.get_custom(c, ERGEBNIS)
            """ :type: list[SpeckView.BE.Ergebnis.Ergebnis] """
            self.par = Format.get_custom(c, PARAMETER)
            """ :type: SpeckView.BE.Parameter.Parameter """

            self.amplitude = []
            self.phase = []
            self.messwerte_lesen()
        except Exception as f:
            stderr.write("Spektroskopiedaten konnten nicht gelesen werden:\n" +
                         f.message)
            return

        self.connect_signals({
            'ende': gtk.main_quit,
            'aktualisieren': self.aktualisieren
        })
        self.ui.show_all()
        gtk.main()
Example #9
0
    def __init__(self, glade, c):
        """
        :type glade: str
        :type c: gwy.Container.Container
        """
        gtk.Builder.__init__(self)

        self.add_from_file(glade + 'spektrum.glade')

        self.ui = self.get_object('fenster_spektrum')
        """ :type: gtk.Window """

        self.x = self.spinbutton('x')
        self.y = self.spinbutton('y')

        self.plotter = Plotter("Frequenz (Hz)", "Amplitude (V)")
        self.get_object('vorschau').add(self.plotter)

        try:
            self.erg = Format.get_custom(c, ERGEBNIS)
            """ :type: list[SpeckView.BE.Ergebnis.Ergebnis] """
            self.par = Format.get_custom(c, PARAMETER)
            """ :type: SpeckView.BE.Parameter.Parameter """

            self.amplitude = []
            self.phase = []
            self.messwerte_lesen()
        except Exception as f:
            stderr.write("Spektroskopiedaten konnten nicht gelesen werden:\n" + f.message)
            return

        self.connect_signals({
            'ende': gtk.main_quit,
            'aktualisieren': self.aktualisieren
        })
        self.ui.show_all()
        gtk.main()
Example #10
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()