Example #1
0
class GllSourceProfile(GllPlugin):
    name = "Source profile"

    def __init__(self):
        super(GllSourceProfile, self).__init__(ll.source_profile)
        self.main_widget = GllImageView(self.get_pixbuf)
        self.config_widget = GllConfigBox()
        self.config_widget.add_radio_buttons("profile_type",
                                             "Source profile type", "flat",
                                             [("Flat", "flat"),
                                              ("Gaussian", "gaussian")])
        show_profile = GllConfigCheckButton("Show profile")
        show_profile.set_active(True)
        self.config_widget.add_items([("source_radius", "Source radius",
                                       (0.01, 0.0, 1e10, 0.001), 4),
                                      ("export_kernel", show_profile)])

    def update(self, data):
        self.show = data["export_kernel"]
        if self.show:
            self.source = data["source_profile"]
        self.main_widget.mark_dirty()

    def set_config(self, config):
        config.setdefault("export_kernel", True)
        GllPlugin.set_config(self, config)

    def get_pixbuf(self):
        if self.show:
            source = self.source
        else:
            source = numpy.ones((1, 1))
        ypixels, xpixels = source.shape
        source = numpy.vstack((source[ypixels // 2:], source[:ypixels // 2]))
        source = numpy.hstack(
            (source[:, xpixels // 2:], source[:, :xpixels // 2]))
        pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8, xpixels,
                                ypixels)
        array = numpy.rollaxis(pixbuf.get_pixels_array(), 2, 0)
        array[:] = source * (255 / source.max())
        return pixbuf
class GllSourceProfile(GllPlugin):
    name = "Source profile"

    def __init__(self):
        super(GllSourceProfile, self).__init__(ll.source_profile)
        self.main_widget = GllImageView(self.get_pixbuf)
        self.config_widget = GllConfigBox()
        self.config_widget.add_radio_buttons(
            "profile_type", "Source profile type", "flat",
            [("Flat", "flat"), ("Gaussian", "gaussian")])
        show_profile = GllConfigCheckButton("Show profile")
        show_profile.set_active(True)
        self.config_widget.add_items(
            [("source_radius", "Source radius", (0.01, 0.0, 1e10, 0.001), 4),
             ("export_kernel", show_profile)])

    def update(self, data):
        self.show = data["export_kernel"]
        if self.show:
            self.source = data["source_profile"]
        self.main_widget.mark_dirty()

    def set_config(self, config):
        config.setdefault("export_kernel", True)
        GllPlugin.set_config(self, config)

    def get_pixbuf(self):
        if self.show:
            source = self.source
        else:
            source = numpy.ones((1, 1))
        ypixels, xpixels = source.shape
        source = numpy.vstack((source[ypixels//2:], source[:ypixels//2]))
        source = numpy.hstack((source[:,xpixels//2:], source[:,:xpixels//2]))
        pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8,
                                xpixels, ypixels)
        array = numpy.rollaxis(pixbuf.get_pixels_array(), 2, 0)
        array[:] = source*(255/source.max())
        return pixbuf