コード例 #1
0
    def getAlignment(self,w=None):
        print type(w)
        if type(w)==type(""):
            print "notype"
            data=FITS.Read(w)
            subapLocation=data[1]
            self.npxlx=numpy.array(eval(data[0]["parsed"]["npxlx"]))
            self.npxly=numpy.array(eval(data[0]["parsed"]["npxly"]))
            self.nsub=numpy.array(eval(data[0]["parsed"]["nsub"]))
            self.subflag=data[3]
        else:
            print "->type"
            c=controlCorba.controlClient(self.prefix)
            subapLocation=c.Get("subapLocation")
            subapLocation.shape=subapLocation.size/6,6
            self.subflag=c.Get("subapFlag")
            self.nsub=c.Get("nsub")
            self.npxlx=c.Get("npxlx")
            self.npxly=c.Get("npxly")
        self.ncam=self.nsub.size
        self.adjustment.set_upper(self.ncam-1)

        self.orig=subapLocation.copy()
        self.pixbuf=gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB,False,8,self.npxlx[self.cam]*2,self.npxly[self.cam]*2)
        
        self.arr=self.pixbuf.get_pixels_array()
        self.arr[:]=0xff
        self.img.set_from_pixbuf(self.pixbuf)

        subapLocation=self.subapToSingle(subapLocation)
        subapLocation*=2
        self.subapLocation=subapLocation
        self.selected=numpy.ones((self.subapLocation.shape[0],),numpy.int8)
        self.draw()
コード例 #2
0
ファイル: quickDisplay.py プロジェクト: deepin00/darc
    def __init__(self, stream, dec, myhostname, cam, decorate=1, normalise=0):
        if stream in ["rtcPxlBuf", "rtcCalPxlBuf"]:
            self.dim = 2
        else:
            self.dim = 1
        self.win = gtk.Window()
        #self.win.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_SPLASHSCREEN)
        self.win.set_default_size(300, 300)
        self.w = self.h = 300
        self.win.set_decorated(decorate)  #remove the window frame
        self.cam = cam
        self.normalise = normalise
        self.img = gtk.Image()
        #self.img.set_alignment(0,0)
        #self.img.set_padding(0,0)
        self.pixbufImg = None
        #self.event=gtk.EventBox()
        #self.event.connect("button-press-event",self.click)
        #self.event.connect("button-release-event",self.unclick)
        #self.event.connect("motion-notify-event",self.motion)
        #self.event.connect("expose-event",self.expose)
        #box = gtk.ScrolledWindow()
        #box.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        #box.add_with_viewport(self.img)
        #v=box
        lay = gtk.Layout()
        lay.put(self.img, 0, 0)
        v = lay

        #v=gtk.Viewport()
        #v.add(self.img)

        #box.set_resize_mode(gtk.RESIZE_PARENT)
        if self.dim == 2:
            #if cam==None:
            #    self.pixbuf=gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB,False,8,512,512)
            #else:
            #    self.pixbuf=gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB,False,8,256,256)
            self.pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8,
                                         self.w - 50, self.h - 50)
        else:
            self.pixbuf = None
        self.c = controlCorba.controlClient(debug=0)
        self.r = self.c.GetStreamBlock(stream,
                                       -1,
                                       callback=self.recvdata,
                                       myhostname=myhostname,
                                       decimate=dec)
        self.queue = 0
        #vbox.pack_start(self.event)
        self.win.add(v)  #self.img)
        self.win.connect("delete-event", self.quit)
        lay.connect("size-allocate", self.changeSize, "size allocate")
        #self.img.connect("size-allocate",self.changeSize,"size allocate img")
        #self.img.connect("expose-event",self.reSize,"size allocate img")
        if self.dim == 2:
            self.img.set_from_pixbuf(self.pixbuf)
            self.img.queue_draw()
            self.win.show_all()
コード例 #3
0
 def __init__(self, name, prefix="", myhostname=None, testprefix=""):
     """Initialise the object.  name is the name of the stream, prefix is the darc prefix.  myhostname can be an IP address (but will be found automagically on linux), and testprefix can be used if you want to add an additional prefix to the shm buffer."""
     self.name = name
     self.decimate = 100
     self.prefix = prefix
     self.testprefix = testprefix
     self.nstore = 100
     self.myhostname = myhostname
     #self.lock=lock.lock()
     self.ctrl = controlCorba.controlClient(debug=0, controlName=prefix)
     while self.ctrl.obj == None:
         self.ctrl = controlCorba.controlClient(debug=0, controlName=prefix)
         if self.ctrl.obj == None:
             time.sleep(1)
     self.cb = None
     self.timeDataLastRequested = 0
     if self.checkSHM():
         #The assumption here is that this shm is old and not written by anyone else...
         self.cb = buffer.Circular("/" + self.testprefix + self.prefix +
                                   self.name)
         self.cb.lastWritten[0] = -1
コード例 #4
0
 def showRaw(self,w):
     w=gtk.Window()
     c=controlCorba.controlClient(self.prefix)
     #f = Figure(figsize=(5,4), dpi=72)
     bg = c.Get("bgImage")
     data = bg.reshape(480,640)
     f = plt.figure(1)
     plt.imshow(data)
     plt.gca().invert_yaxis()
     #plt.show()
     canvas = FigureCanvas(f)
     w.add(canvas)
     w.show_all()
コード例 #5
0
    def setAlignment(self,w):
        c=controlCorba.controlClient(self.prefix)
#        s=self.makeSubapLocation(allcam=1)
        fname="%ssubapLocation.fits"%self.prefix
        data=FITS.Read(fname)
        subapLocation=data[1]
        subflag=data[3]
        pxlcnt=self.count(data[1])
        print "set"
        print "subapLocation"
        print subapLocation
        print "subapFlag"
        print subflag
        print "pxlCnt"
        print pxlcnt
        c.set("subapLocation",subapLocation,swap=1,check=1,copy=1)
        c.set("subapFlag",subflag,swap=1,check=1,copy=1)
        c.set("pxlCnt",pxlcnt,swap=1,check=1,copy=1)
コード例 #6
0
ファイル: canaryCalibrate.py プロジェクト: deepin00/darc
            sl = subloc[pos]
            if sl[2] != 0:
                subimg = list(data[sl[0]:sl[1]:sl[2],
                                   sl[3]:sl[4]:sl[5]].ravel())
                subimg.sort()
                thr[pos] = (subimg[-n] + subimg[-n - 1]) / 2.
            pos += 1
    return thr


if __name__ == "__main__":
    if len(sys.argv) > 1:
        prefix = sys.argv[1]
    else:
        prefix = ""
    ctrl = controlCorba.controlClient(controlName=prefix + "Control", debug=0)
    y = raw_input("Do you want to do pixel calibration? y/n")
    if y == "y":
        y = raw_input(
            "Do you want to do dark map calibration?  If so, please turn of light sources. y/n"
        )
        if y == "y":
            n = raw_input("Number of frames to average?")
            n = int(n)
            ctrl.set("bgImage", None)
            ctrl.set("flatField", None)
            ctrl.set("darkNoise", None)
            ctrl.set("thresholdType", 0)
            dark = ctrl.AverageImage(n, whole=1)
            ctrl.set("darkNoise", dark)
            FITS.Write(dark, "darkNoise.fits")
コード例 #7
0
ファイル: testcal.py プロジェクト: deepin00/darc
This script records slope measurements for various different threshold values and algorithms and pixel weightings.

It writes the results into a single FITS file, (default tmp.fits, can be specified on the command line), giving a FITS file with multiple header - data units.

"""
import controlCorba
import FITS
import sys
import time
file="tmp.fits"
if len(sys.argv)>1:
    file=sys.argv[1]

#Create the corba client
c=controlCorba.controlClient()

def set(name,val,com="",swap=1,check=1):
    c.obj.Set(controlCorba.sdata(name),controlCorba.encode([val]),controlCorba.sdata(com),swap,check)
    #time.sleep(0.01)

set("fakeCCDImage",FITS.Read("shimage.fits")[1][0])
FITS.Write(controlCorba.decode(c.obj.AverageCentroids(1)),file)

set("thresholdAlgorithm",2)
FITS.Write(controlCorba.decode(c.obj.AverageCentroids(1)),file,writeMode="a")

set("thresholdAlgorithm",0)
FITS.Write(controlCorba.decode(c.obj.AverageCentroids(1)),file,writeMode="a")

set("thresholdValue",0)
コード例 #8
0
import FITS
import numpy
import matplotlib.pyplot as plt
import controlCorba

#darcmagic get -name=subapLocation --prefix=main
#darcmagic get -name=subapFlag --prefix=main
#darcmagic get -name=bgImage --prefix=main
initial = numpy.zeros((15,15), numpy.int32)
print "################"
print initial
print "################"
initial = initial.reshape(225)
print initial
print "################"
c=controlCorba.controlClient("main")
subapflag = c.Get("subapFlag")
print subapflag
print type(subapflag)
print subapflag.dtype
c.Set("subapFlag",initial,com="",swap=1,check=1,copy=1)
print "########### despues del set ##"
subapflag = c.Get("subapFlag")
print "----------------"
pxl = c.Get("pxlCnt")
print pxl
print type(pxl)
print pxl.size
print pxl.shape
print pxl.reshape(11,11)
print "----------------"