def __init__(self, logger, gv): self.logger = logger self.gv = gv self.viewers = Bunch.Bunch() # the current viewer self._view = None self.default_viewer_width = 900 self.default_viewer_height = 1000 self.buffers = Bunch.Bunch() self.iqcalc = iqcalc.IQCalc(self.logger) self._plot = None # Peak finding parameters and selection criteria self.radius = 10 self.settings = {} self.max_side = self.settings.get('max_side', 1024) self.radius = self.settings.get('radius', 10) self.threshold = self.settings.get('threshold', None) self.min_fwhm = self.settings.get('min_fwhm', 2.0) self.max_fwhm = self.settings.get('max_fwhm', 50.0) self.min_ellipse = self.settings.get('min_ellipse', 0.5) self.edgew = self.settings.get('edge_width', 0.01) self.show_candidates = self.settings.get('show_candidates', False) # Report in 0- or 1-based coordinates self.pixel_coords_offset = self.settings.get('pixel_coords_offset', 0.0) self.contour_radius = 10 self.cwd = os.getcwd()
def __init__(self, fv, fitsimage): # superclass defines some variables for us, like logger super(Pick, self).__init__(fv, fitsimage) self.layertag = 'pick-canvas' self.pickimage = None self.pickcenter = None self.pick_qs = None self.picktag = None self.pickcolor = 'green' self.candidate_color = 'purple' self.pick_x1 = 0 self.pick_y1 = 0 self.pick_data = None self.dx = region_default_width self.dy = region_default_height # For offloading intensive calculation from graphics thread self.serialnum = 0 self.lock = threading.RLock() self.lock2 = threading.RLock() self.ev_intr = threading.Event() # Peak finding parameters and selection criteria # this is the maximum size a side can be self.max_side = 1024 self.radius = 10 self.threshold = None self.min_fwhm = 2.0 self.max_fwhm = 50.0 self.min_ellipse = 0.5 self.edgew = 0.01 self.show_candidates = False self.do_record = False self.last_report = None self.plot_panx = 0.5 self.plot_pany = 0.5 self.plot_zoomlevel = 1.0 self.num_contours = 8 self.contour_size_limit = 70 self.contour_data = None self.delta_sky = 0.0 self.delta_bright = 0.0 self.iqcalc = iqcalc.IQCalc(self.logger) self.dc = self.fv.getDrawClasses() canvas = self.dc.DrawingCanvas() canvas.enable_draw(True) canvas.set_callback('cursor-down', self.btndown) canvas.set_callback('cursor-move', self.drag) canvas.set_callback('cursor-up', self.update) canvas.set_drawtype('rectangle', color='cyan', linestyle='dash', drawdims=True) canvas.set_callback('draw-event', self.setpickregion) canvas.setSurface(self.fitsimage) self.canvas = canvas self.have_mpl = have_mpl
def __init__(self, fv, fitsimage): # superclass defines some variables for us, like logger super(NiresTest, self).__init__(fv, fitsimage) self.niimage = None self.nisky = None self.sqcolor = 'green' self.layertag = 'nires-canvas' self.fwhm_plot = None self.iqcalc = iqcalc.IQCalc(self.logger) self.xclick = 0 self.yclick = 0 self.bside = 50 self.dc = fv.get_draw_classes() canvas = self.dc.DrawingCanvas() canvas.name = 'nires-canvas' canvas.add_callback('cursor-down', self.btndown) canvas.set_surface(self.fitsimage) self.canvas = canvas self.sqbx = self.dc.Rectangle(0, 0, self.bside, self.bside, color=self.sqcolor) self.canvas.add(self.sqbx, redraw=False)
def __init__(self, fv, fitsimage): # superclass defines some variables for us, like logger super(Pick, self).__init__(fv, fitsimage) self.layertag = 'pick-canvas' self.pickimage = None self.pickcenter = None self.pick_qs = None self.picktag = None self._textlabel = 'Pick' # get Pick preferences prefs = self.fv.get_preferences() self.settings = prefs.createCategory('plugin_Pick') self.settings.load(onError='silent') self.sync_preferences() self.pick_x1 = 0 self.pick_y1 = 0 self.pick_data = None self.pick_log = None self.dx = region_default_width self.dy = region_default_height # For offloading intensive calculation from graphics thread self.serialnum = 0 self.lock = threading.RLock() self.lock2 = threading.RLock() self.ev_intr = threading.Event() self.last_rpt = {} self.iqcalc = iqcalc.IQCalc(self.logger) self.dc = self.fv.get_draw_classes() canvas = self.dc.DrawingCanvas() canvas.enable_draw(True) canvas.enable_edit(True) canvas.set_drawtype('rectangle', color='cyan', linestyle='dash', drawdims=True) canvas.set_callback('draw-event', self.draw_cb) canvas.set_callback('edit-event', self.edit_cb) canvas.add_draw_mode('move', down=self.btndown, move=self.drag, up=self.update) canvas.register_for_cursor_drawing(self.fitsimage) canvas.set_surface(self.fitsimage) canvas.set_draw_mode('move') self.canvas = canvas self.have_mpl = have_mpl
def __init__(self, *args, **kwargs): super(FWHMPlot, self).__init__(*args, **kwargs) self.iqcalc = iqcalc.IQCalc(self.logger)
def __init__(self, logger): super(FitsViewer, self).__init__() self.logger = logger self.cachedFiles = None self.scanning = False #KTL stuff #Cache KTL keywords self.trickxpos = ktl.cache('ao', 'TRKRO1XP') self.trickypos = ktl.cache('ao', 'TRKRO1YP') self.trickxsize = ktl.cache('ao', 'TRKRO1XS') self.trickysize = ktl.cache('ao', 'TRKRO1YS') self.rawfile = '' self.threadpool = QtCore.QThreadPool() self.iqcalc = iqcalc.IQCalc(self.logger) # create the ginga viewer and configure it fi = CanvasView(self.logger, render='widget') fi.enable_autocuts('on') fi.set_autocut_params('zscale') fi.enable_autozoom('on') # fi.set_callback('drag-drop', self.drop_file) fi.set_bg(0.2, 0.2, 0.2) fi.ui_set_active(True) self.fitsimage = fi # enable some user interaction self.bd = fi.get_bindings() self.bd.enable_all(True) w = fi.get_widget() w.resize(512, 512) # add scrollbar interface around this viewer si = ScrolledView(fi) vbox = QtGui.QVBoxLayout() vbox.setContentsMargins(QtCore.QMargins(2, 2, 2, 2)) vbox.setSpacing(1) vbox.addWidget(si, stretch=1) hbox = QtGui.QHBoxLayout() hbox.setContentsMargins(QtCore.QMargins(4, 2, 4, 2)) self.readout = QtGui.QLabel("") hbox.addStretch(1) hbox.addWidget(self.readout, stretch=0) self.box_readout = QtGui.QLabel("") hbox.addStretch(1) hbox.addWidget(self.box_readout, stretch=0) hw = QtGui.QWidget() hw.setLayout(hbox) vbox.addWidget(hw, stretch=0) hbox2 = QtGui.QHBoxLayout() hbox2.setContentsMargins(QtCore.QMargins(4, 2, 4, 2)) self.wstartscan = QtGui.QPushButton("Start Scan") self.wstartscan.clicked.connect(self.start_scan) self.wstartscan.setEnabled(True) self.wstopscan = QtGui.QPushButton("Stop Scan") self.wstopscan.clicked.connect(self.stop_scan) self.wstopscan.setEnabled(False) self.wcut = QtGui.QComboBox() for name in fi.get_autocut_methods(): self.wcut.addItem(name) self.wcut.currentIndexChanged.connect(self.cut_change) self.wcolor = QtGui.QComboBox() for name in fi.get_color_algorithms(): self.wcolor.addItem(name) self.wcolor.currentIndexChanged.connect(self.color_change) wopen = QtGui.QPushButton("Open File") wopen.clicked.connect(self.open_file) self.wsky = QtGui.QPushButton("Load Sky") self.wsky.clicked.connect(self.load_sky) self.wsky.setEnabled(False) wquit = QtGui.QPushButton("Quit") wquit.clicked.connect(self.quit) fi.set_callback('cursor-changed', self.motion_cb) fi.add_callback('cursor-down', self.btndown) hbox2.addStretch(1) for w in (self.wstartscan, self.wstopscan, self.wcut, self.wcolor, wopen, self.wsky, wquit): hbox2.addWidget(w, stretch=0) hw2 = QtGui.QWidget() hw2.setLayout(hbox2) vbox.addWidget(hw2, stretch=0) vw = QtGui.QWidget() self.setCentralWidget(vw) vw.setLayout(vbox) self.recdc, self.compdc = self.add_canvas() self.boxtag = "roi-box" self.picktag = "pick-box"