Esempio n. 1
0
def loadStack(dataDir, start, stop, useImg = False, nCols=80, nRows=125):
    frameTimes = np.arange(start, stop+1)
    frames = []
    for iTs,ts in enumerate(frameTimes):
        try:
            if useImg==False:
                imagePath = os.path.join(dataDir,str(ts)+'.bin')
                print imagePath
                with open(imagePath,'rb') as dumpFile:
                    data = dumpFile.read()

                nBytes = len(data)
                nWords = nBytes/8 #64 bit words
                
                #break into 64 bit words
                words = np.array(struct.unpack('>{:d}Q'.format(nWords), data),dtype=object)
                parseDict = parsePacketData(words,verbose=False)
                image = parseDict['image']

            else:
                imagePath = os.path.join(dataDir,str(ts)+'.img')
                print imagePath
                image = np.fromfile(open(imagePath, mode='rb'),dtype=np.uint16)
                image = np.transpose(np.reshape(image, (nCols, nRows)))

        except (IOError, ValueError):
            print "Failed to load ", imagePath
            image = np.zeros((nRows, nCols),dtype=np.uint16)  
        frames.append(image)
    stack = np.array(frames)
    return stack
Esempio n. 2
0
def bin2img(ts,
            binPath='/mnt/data0/ScienceData/',
            imgPath='/mnt/data0/ScienceDataIMGs/'):
    imagePath = os.path.join(binPath, str(ts) + '.bin')

    with open(imagePath, 'rb') as dumpFile:
        data = dumpFile.read()

    nBytes = len(data)
    nWords = nBytes / 8  #64 bit words

    #break into 64 bit words
    words = np.array(struct.unpack('>{:d}Q'.format(nWords), data),
                     dtype=object)

    parseDict = parsePacketData(words, verbose=False)

    image = parseDict['image']

    image = np.transpose(image)

    #formattedImage = np.array(image, dtype=np.uint16)
    image.flatten()

    imagePath = os.path.join(imgPath, str(ts) + '.img')
    image.tofile(imagePath)

    print "Wrote IMG to ", imagePath

    return
Esempio n. 3
0
def bin2img(ts, binPath = '/mnt/data0/ScienceData/', imgPath = '/mnt/data0/ScienceDataIMGs/'):
    imagePath = os.path.join(binPath,str(ts)+'.bin')
    
    with open(imagePath,'rb') as dumpFile:
        data = dumpFile.read()

    nBytes = len(data)
    nWords = nBytes/8 #64 bit words
                
    #break into 64 bit words
    words = np.array(struct.unpack('>{:d}Q'.format(nWords), data),dtype=object)

    parseDict = parsePacketData(words,verbose=False)

    image = parseDict['image']
    
    image = np.transpose(image)
    
    #formattedImage = np.array(image, dtype=np.uint16)
    image.flatten()
    
    imagePath = os.path.join(imgPath,str(ts)+'.img')
    image.tofile(imagePath)

    print "Wrote IMG to ", imagePath
    
    return
Esempio n. 4
0
    def generateDarkFrame(self):
        self.darkStart = int(self.lineEdit_darkStart.text())
        self.darkEnd = int(self.lineEdit_darkEnd.text())
        self.darkTimes = np.arange(self.darkStart, self.darkEnd + 1)
        darkFrames = []
        for iTs, ts in enumerate(self.darkTimes):
            try:
                imagePath = os.path.join(self.dataPath, str(ts) + '.bin')
                print imagePath
                with open(imagePath, 'rb') as dumpFile:
                    data = dumpFile.read()

                nBytes = len(data)
                nWords = nBytes / 8  #64 bit words

                #break into 64 bit words
                words = np.array(struct.unpack('>{:d}Q'.format(nWords), data),
                                 dtype=object)
                parseDict = parsePacketData(words, verbose=False)
                image = parseDict['image']

                if self.beammap is not None:
                    newImage = np.zeros(image.shape)
                    for y in range(len(newImage)):
                        for x in range(len(newImage[0])):
                            newX = int(self.beammap[y, x][0])
                            newY = int(self.beammap[y, x][1])
                            if newX > 0 and newY > 0:
                                newImage[newY, newX] = image[y, x]
                    image = newImage

            except (IOError, ValueError):
                image = np.zeros((imageShape['nRows'], imageShape['nCols']),
                                 dtype=np.uint16)
                print "Failed to load dark frame..."
            darkFrames.append(image)

        self.darkStack = np.array(darkFrames)
        self.darkFrame = np.median(self.darkStack, axis=0)
        print "Generated median dark frame from timestamps %i to %i" % (
            self.darkStart, self.darkEnd)
        self.darkLoaded = True
Esempio n. 5
0
    def loadImageStack(self):

        self.timestampList = np.arange(self.startTstamp, self.endTstamp + 1)

        images = []
        self.photonTstamps = np.array([])
        self.photonPhases = np.array([])
        self.photonBases = np.array([])
        self.photonXs = np.array([])
        self.photonYs = np.array([])
        self.photonPixelIDs = np.array([])

        for iTs, ts in enumerate(self.timestampList):
            try:
                imagePath = os.path.join(self.dataPath, str(ts) + '.bin')
                print imagePath
                with open(imagePath, 'rb') as dumpFile:
                    data = dumpFile.read()

                nBytes = len(data)
                nWords = nBytes / 8  #64 bit words

                #break into 64 bit words
                words = np.array(struct.unpack('>{:d}Q'.format(nWords), data),
                                 dtype=object)

                parseDict = parsePacketData(words, verbose=False)

                photonTimes = np.array(parseDict['photonTimestamps'])
                phasesDeg = np.array(parseDict['phasesDeg'])
                basesDeg = np.array(parseDict['basesDeg'])
                xCoords = np.array(parseDict['xCoords'])
                yCoords = np.array(parseDict['yCoords'])
                pixelIds = np.array(parseDict['pixelIds'])
                image = parseDict['image']

                if self.beammap is not None:
                    newImage = np.zeros(image.shape)
                    for y in range(len(newImage)):
                        for x in range(len(newImage[0])):
                            newX = int(self.beammap[y, x][0])
                            newY = int(self.beammap[y, x][1])
                            if newX > 0 and newY > 0:
                                newImage[newY, newX] = image[y, x]
                                #print '('+str(x)+', '+str(y)+') --> ('+str(newX)+', '+str(newY)+')'
                            #else:
                            #    print '('+str(x)+', '+str(y)+') --> 0'
                            #    newImage[y,x]=0
                    image = newImage

            except (IOError, ValueError):
                image = np.zeros((imageShape['nRows'], imageShape['nCols']),
                                 dtype=np.uint16)

            self.photonTstamps = np.append(self.photonTstamps, photonTimes)
            self.photonPhases = np.append(self.photonPhases, phasesDeg)
            self.photonBases = np.append(self.photonBases, basesDeg)
            self.photonXs = np.append(self.photonXs, xCoords)
            self.photonYs = np.append(self.photonYs, yCoords)
            self.photonPixelIDs = np.append(self.photonPixelIDs, pixelIds)
            images.append(image)

        self.imageStack = np.array(images)
if len(sys.argv) > 1:
    path = sys.argv[1]
else:
    path = 'photonDump.bin'

pathTstamp = os.path.splitext(os.path.basename(path))[0]
with open(path,'rb') as dumpFile:
    data = dumpFile.read()

nBytes = len(data)
nWords = nBytes/8 #64 bit words
#break into 64 bit words
words = np.array(struct.unpack('>{:d}Q'.format(nWords), data),dtype=object)

parseDict = parsePacketData(words,verbose=True)

timestamps = parseDict['photonTimestamps']
phasesDeg = parseDict['phasesDeg']
basesDeg = parseDict['basesDeg']
pixelIds = parseDict['pixelIds']
image = parseDict['image']
xCoords = parseDict['xCoords']
yCoords = parseDict['yCoords']

selPixelId = pixelIds[np.where((xCoords==selPixelCol) & (yCoords==selPixelRow))][0]
print selPixelId


print 'selected pixel',selPixelId
print len(np.where(pixelIds==selPixelId)[0]),'photons for selected pixel'