Пример #1
0
def signal(gui, fields = {"aperture" : "", "site" : 0, "source" : 0}):

    inputs = {}

    inputs["aperture"] = dyngui.input_obj("Aperture (m)", QtGui.QLineEdit())
    inputs["aperture"].widget.setText(str(fields["aperture"]))
    conn_update(gui, inputs["aperture"].widget, "textChanged(QString)")

    site = QtGui.QComboBox()
    site.addItem("")
    add_list(site, gui.atmos_files)
    site.setCurrentIndex(int(fields["site"]))

    conn_update(gui, site, "currentIndexChanged(int)")
    inputs["site"] = dyngui.input_obj("Site", site)
    inputs["site"].widget.setToolTip("Leave empty for 100% transmission")
    inputs["site"].widget.setMouseTracking(True)

    source = QtGui.QComboBox()
    source.addItem("")
    add_list(source, gui.source_files)
    source.setCurrentIndex(int(fields["source"]))

    conn_update(gui, source, "currentIndexChanged(int)")
    inputs["source"] = dyngui.input_obj("Source", source)

    return inputs
Пример #2
0
def other(gui):

    inputs = {}

    cib = QtGui.QCheckBox("Cosmic Infrared Background")
    cib.setCheckState(QtCore.Qt.Checked)
    cmb = QtGui.QCheckBox("Cosmic Microwave Background")
    cmb.setCheckState(QtCore.Qt.Checked)

    inputs["cib"] = dyngui.input_obj("", cib)
    inputs["cmb"] = dyngui.input_obj("", cmb)

    return inputs
Пример #3
0
def mirror(gui, fields = {"temp" : "", "type" : 0}):

    inputs = {}

    inputs["temp"] = dyngui.input_obj("Temperature (K)", QtGui.QLineEdit())
    inputs["temp"].widget.setText(str(fields["temp"]))
    conn_update(gui, inputs["temp"].widget, "textChanged(QString)")

    mirror_type = QtGui.QComboBox()
    mirror_type.addItem("")
    for material, const in gui.mirror_consts.items():
        mirror_type.addItem(material)
    mirror_type.setCurrentIndex(int(fields["type"]))

    conn_update(gui, mirror_type, "currentIndexChanged(int)")
    inputs["type"] = dyngui.input_obj("Mirror Type", mirror_type)

    return inputs
Пример #4
0
def atmos(gui, fields = {"site" : 0}):

    inputs = {}
    site = QtGui.QComboBox()
    site.addItem("")
    add_list(site, gui.atmos_files)
    site.setCurrentIndex(int(fields["site"]))

    conn_update(gui, site, "currentIndexChanged(int)")
    inputs["site"] = dyngui.input_obj("Site", site)

    return inputs
Пример #5
0
def zodiac(gui, fields = {"ecrd" : 0}):

    inputs = {}

    coord = QtGui.QComboBox()
    coord.addItem("")
    add_list(coord, gui.zodiac_files)
    coord.setCurrentIndex(int(fields["ecrd"]))

    conn_update(gui, coord, "currentIndexChanged(int)")
    inputs["ecrd"] = dyngui.input_obj("Ecliptic Coord", coord)

    return inputs
Пример #6
0
def compos(gui, fields = {"_label" : "", "is_plot" : False,
        "n_atmos" : 0, "n_galactic" : 0, "n_mirror" : 0, "n_zodiac" : 0,
        "o_cib" : False, "o_cmb" : False,
        "signal" : 0, "snr" : "", "specres" : ""}):

    inputs = {}

    # label for composite graph
    label = QtGui.QLineEdit()
    label.setText(str(fields["_label"]))
    conn_update(gui, label, "textChanged(QString)")

    # initialize drop down boxes
    atmos = QtGui.QComboBox()
    dyngui.update_list(atmos, gui.atmos_collection)
    atmos.setCurrentIndex(int(fields["n_atmos"]))
    conn_update(gui, atmos, "currentIndexChanged(int)")

    galactic = QtGui.QComboBox()
    dyngui.update_list(galactic, gui.galactic_collection)
    galactic.setCurrentIndex(int(fields["n_galactic"]))
    conn_update(gui, galactic, "currentIndexChanged(int)")

    mirror = QtGui.QComboBox()
    dyngui.update_list(mirror, gui.mirror_collection)
    mirror.setCurrentIndex(int(fields["n_mirror"]))
    conn_update(gui, mirror, "currentIndexChanged(int)")

    zodiac = QtGui.QComboBox()
    dyngui.update_list(zodiac, gui.zodiac_collection)
    zodiac.setCurrentIndex(int(fields["n_zodiac"]))
    conn_update(gui, zodiac, "currentIndexChanged(int)")

    signal = QtGui.QComboBox()
    dyngui.update_list(signal, gui.signal_collection)
    signal.setCurrentIndex(int(fields["signal"]))
    conn_update(gui, signal, "currentIndexChanged(int)")

    # initialize checkboxes
    cib = QtGui.QCheckBox("Cosmic Infrared Background")
    cib.setCheckState(fields["o_cib"] == "True" and QtCore.Qt.Checked or QtCore.Qt.Unchecked)
    conn_update(gui, cib, "stateChanged(int)")

    cmb = QtGui.QCheckBox("Cosmic Microwave Background")
    cmb.setCheckState(fields["o_cmb"] == "True" and QtCore.Qt.Checked or QtCore.Qt.Unchecked)
    conn_update(gui, cmb, "stateChanged(int)")

    isplot = QtGui.QCheckBox("Plot this data")
    isplot.setCheckState(fields["is_plot"] == "True" and QtCore.Qt.Checked or QtCore.Qt.Unchecked)
    conn_update(gui, isplot, "stateChanged(int)")

    # signal:noise ratio
    snr = QtGui.QLineEdit()
    snr.setText(str(fields["snr"]))
    conn_update(gui, snr, "textChanged(QString)")

    # spectral resolution
    specres = QtGui.QLineEdit()
    specres.setText(str(fields["specres"]))
    conn_update(gui, specres, "textChanged(QString)")

    inputs["_label"] = dyngui.input_obj("Label", label)
    inputs["is_plot"] = dyngui.input_obj("", isplot)
    inputs["n_atmos"] = dyngui.input_obj("Atmosphere", atmos)
    inputs["n_galactic"] = dyngui.input_obj("Galactic", galactic)
    inputs["n_mirror"] = dyngui.input_obj("Mirror", mirror)
    inputs["n_zodiac"] = dyngui.input_obj("Zodiacal", zodiac)
    inputs["o_cib"] = dyngui.input_obj("", cib)
    inputs["o_cmb"] = dyngui.input_obj("", cmb)
    inputs["signal"] = dyngui.input_obj("Signal", signal)
    inputs["snr"] = dyngui.input_obj("Signal:Noise", snr)
    inputs["specres"] = dyngui.input_obj("Resolution", specres)

    # clear all inputs in this set
    def clear():
        inputs["_label"].widget.setText("")
        inputs["is_plot"].widget.setCheckState(QtCore.Qt.Unchecked)
        inputs["n_atmos"].widget.setCurrentIndex(0)
        inputs["n_galactic"].widget.setCurrentIndex(0)
        inputs["n_mirror"].widget.setCurrentIndex(0)
        inputs["n_zodiac"].widget.setCurrentIndex(0)
        inputs["o_cib"].widget.setCheckState(QtCore.Qt.Unchecked)
        inputs["o_cmb"].widget.setCheckState(QtCore.Qt.Unchecked)
        inputs["signal"].widget.setCurrentIndex(0)
        inputs["snr"].widget.setText("")
        inputs["specres"].widget.setText("")
        update_all(gui)

    inputs["z_clear"] = dyngui.input_obj("", QtGui.QPushButton("Clear Fields"))
    QtCore.QObject.connect(inputs["z_clear"].widget, QtCore.SIGNAL("clicked()"), clear)

    # select first item in each input box
    def default():
        if len(inputs["n_atmos"].widget) > 1:
            inputs["n_atmos"].widget.setCurrentIndex(1)
        if len(inputs["n_galactic"].widget) > 1:
            inputs["n_galactic"].widget.setCurrentIndex(1)
        if len(inputs["n_mirror"].widget) > 1:
            inputs["n_mirror"].widget.setCurrentIndex(1)
        if len(inputs["n_zodiac"].widget) > 1:
            inputs["n_zodiac"].widget.setCurrentIndex(1)

        inputs["o_cib"].widget.setCheckState(config.use_cib and QtCore.Qt.Checked or QtCore.Qt.Unchecked)
        inputs["o_cmb"].widget.setCheckState(config.use_cmb and QtCore.Qt.Checked or QtCore.Qt.Unchecked)

        if len(inputs["signal"].widget) > 1:
            inputs["signal"].widget.setCurrentIndex(1)
        inputs["snr"].widget.setText(config.snr) # default signal:noise
        inputs["specres"].widget.setText(config.spec_res) # default spectral resolution
        update_all(gui)

    inputs["z_default"] = dyngui.input_obj("", QtGui.QPushButton("Use Default"))
    QtCore.QObject.connect(inputs["z_default"].widget, QtCore.SIGNAL("clicked()"), default)

    return inputs
Пример #7
0
def pconfig(gui):

    inputs1 = {} # identifying information

    inputs1["name"] = dyngui.input_obj("Name", QtGui.QLineEdit())

    # dynamically change the title on the graph
    def name_changed(text):

        # update title of graph
        gui.plot.set_title(text)

        # mark that project has been edited since last save
        gui.changed = True

    QtCore.QObject.connect(inputs1["name"].widget,
            QtCore.SIGNAL("textChanged(QString)"), name_changed)

    inputs2 = {} # photon energy units and range

    energy = QtGui.QComboBox()
    for option in gui.energy_list:
        energy.addItem(option.type + " (" + option.units + ")")
    inputs2["e_units"] = dyngui.input_obj("Photon Energy", energy)

    def e_units_changed(new_index): # handle changed in selected units of photon energy

        # do unit conversions for min and max energies
        energy_min = gui.energy_list[new_index].from_hz(gui.interp.freq_range.min)
        energy_max = gui.energy_list[new_index].from_hz(gui.interp.freq_range.max)

        # assign to "min" and "max" text fields by numerical value
        #  (ie. smaller wavelengths correspond to higher energy, so need to reverse)
        if energy_min < energy_max: # order already correct
            inputs2["energy1"].widget.setText(str(energy_min))
            inputs2["energy2"].widget.setText(str(energy_max))
        else: # order reversed
            inputs2["energy2"].widget.setText(str(energy_min))
            inputs2["energy1"].widget.setText(str(energy_max))

        # mark that project has been edited since last save
        gui.changed = True

    QtCore.QObject.connect(inputs2["e_units"].widget,
            QtCore.SIGNAL("currentIndexChanged(int)"), e_units_changed)

    # minimum and maximum energies in units defined above
    inputs2["energy1"] = dyngui.input_obj("Minimum", QtGui.QLineEdit())
    inputs2["energy2"] = dyngui.input_obj("Maximum", QtGui.QLineEdit())

    # set presently active range of energies as default text
    e_units_changed(inputs2["e_units"].widget.currentIndex())

    # convert currently entered text to frequency range
    def energy_changed(text):

        try: # ensure both fields are filled with floating point numbers

            # currently selected unit of photon energy
            energy_form = gui.energy_list[inputs2["e_units"].widget.currentIndex()]

            freq1 = energy_form.to_hz(float(inputs2["energy1"].widget.text()))
            freq2 = energy_form.to_hz(float(inputs2["energy2"].widget.text()))

            if freq1 < freq2:
                freq_range = aux.interval(freq1, freq2)
            else:
                freq_range = aux.interval(freq2, freq1)

            # set interpolation range
            if energy_form.is_freq:
                gui.interp.set_freq_hz(freq_range)
            else:
                gui.interp.set_wl_m(aux.interval(const.c / freq_range.max,
                    const.c / freq_range.min))

        except Exception:
            pass # assume fields are incomplete, so ignore now and try again later

        # mark that project has been edited since last save
        gui.changed = True

    QtCore.QObject.connect(inputs2["energy1"].widget,
            QtCore.SIGNAL("textChanged(QString)"), energy_changed)
    QtCore.QObject.connect(inputs2["energy2"].widget,
            QtCore.SIGNAL("textChanged(QString)"), energy_changed)

    inputs3 = {} # units

    bling = QtGui.QComboBox() # units of bling
    bling.addItems(["W/Hz^1/2", "photons/s*Hz^1/2"])
    inputs3["b_units"] = dyngui.input_obj("Units of BLING", bling)
    conn_changed(gui, bling, "currentIndexChanged(int)")

    flux = QtGui.QComboBox() # units of flux
    flux.addItems(["W/sr*Hz*m^2", "photons/s*sr*Hz*m^2",
                   "W/sr*micron*m^2", "photons/s*sr*micron*m^2"])
    inputs3["f_units"] = dyngui.input_obj("Units of Flux", flux)
    conn_changed(gui, flux, "currentIndexChanged(int)")

    signal = QtGui.QComboBox() # units of signal
    signal.addItems(["W", "photons/s"])
    inputs3["s_units"] = dyngui.input_obj("Units of Signal", signal)
    conn_changed(gui, signal, "currentIndexChanged(int)")

    return inputs1, inputs2, inputs3