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
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
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
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
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'