def recordFrame(self, frame, iter, depthIndex): # Handle new frame dh = self.prot['storageDir'] name = 'image_%03d' % iter if self.prot['zStack']: # start or append focus stack arrayInfo = [ {'name': 'Depth', 'values': [self.prot['zStackValues'][depthIndex]]}, {'name': 'X'}, {'name': 'Y'} ] data = MetaArray(frame.getImage()[np.newaxis, ...], info=arrayInfo) if depthIndex == 0: self.currentDepthStack = dh.writeFile(data, name, info=frame.info(), appendAxis='Depth') else: data.write(self.currentDepthStack.name(), appendAxis='Depth') else: # record single-frame image arrayInfo = [ {'name': 'X'}, {'name': 'Y'} ] data = MetaArray(frame.getImage(), info=arrayInfo) dh.writeFile(data, name, info=frame.info())
def saveMA(self, fileName=None): if self.imgData is None: raise HelpfulException("There is no processed data to save.") if fileName is None: dh = self.getElement("File Loader").baseDir().name() self.fileDialog = FileDialog(None, "Save image data", dh, '*.ma') self.fileDialog.setAcceptMode(QtGui.QFileDialog.AcceptSave) self.fileDialog.show() self.fileDialog.fileSelected.connect(self.saveMA) return table = self.dbquery.table() x = table['xPos'].min() y = table['yPos'].min() #print "params:", self.imgData.dtype.names #print "shape:", self.imgData.shape #arr = MetaArray(self.currentData) ### need to format this with axes and info arr = MetaArray([self.imgData[p] for p in self.imgData.dtype.names], info=[ {'name':'vals', 'cols':[{'name':p} for p in self.imgData.dtype.names]}, {'name':'xPos', 'units':'m', 'values':np.arange(self.imgData.shape[0])*self.spacing+x}, {'name':'yPos', 'units':'m', 'values':np.arange(self.imgData.shape[1])*self.spacing+y}, {'spacing':self.spacing} ]) arr.write(fileName)
def writeFrames(self, frames, dh): newRec = self.currentStack is None if newRec: self.startFrameTime = frames[0][1]['time'] times = [f[1]['time'] for f in frames] translations = np.array( [f[1]['transform'].getTranslation() for f in frames]) arrayInfo = [{ 'name': 'Time', 'values': array(times) - self.startFrameTime, 'units': 's', 'translation': translations }, { 'name': 'X' }, { 'name': 'Y' }] imgs = [f[0][np.newaxis, ...] for f in frames] data = MetaArray(np.concatenate(imgs, axis=0), info=arrayInfo) if newRec: self.currentStack = dh.writeFile(data, 'video', autoIncrement=True, info=frames[0][1], appendAxis='Time', appendKeys=['translation']) else: data.write(self.currentStack.name(), appendAxis='Time', appendKeys=['translation'])
def saveMA(self, fileName=None): if fileName is None: dh = self.getElement("File Loader").baseDir().name() self.fileDialog = FileDialog(None, "Save traces", dh, '*.ma') self.fileDialog.setAcceptMode(QtGui.QFileDialog.AcceptSave) self.fileDialog.show() self.fileDialog.fileSelected.connect(self.saveMA) return #arr = MetaArray(self.currentData) ### need to format this with axes and info arr = MetaArray([ self.currentData['Rs'], self.currentData['Rm'], self.currentData['Ih'] ], info=[{ 'name': 'vals', 'cols': [{ 'name': 'Rs', 'units': 'Ohms' }, { 'name': 'Rm', 'units': 'Ohms' }, { 'name': 'Ih', 'units': 'A' }] }, { 'name': 'time', 'units': 's', 'values': self.currentData['time'] }]) arr.write(fileName)
def write(cls, data, dirHandle, fileName, **args): """Write data to fileName. Return the file name written (this allows the function to modify the requested file name) """ ext = cls.extensions[0] if fileName[-len(ext):] != ext: fileName = fileName + ext if not isinstance(data, MA): data = MA(data) data.write(os.path.join(dirHandle.name(), fileName), **args) return fileName
def write(cls, data, dirHandle, fileName, **args): """Write data to fileName. Return the file name written (this allows the function to modify the requested file name) """ ext = cls.extensions[0] if fileName[-len(ext):] != ext: fileName = fileName + ext if not isinstance(data, MA): data = MA(data) data.write(os.path.join(dirHandle.name(), fileName), **args) return fileName
def saveMA(self, fileName=None): if fileName is None: dh = self.getElement("File Loader").baseDir().name() self.fileDialog = FileDialog(None, "Save traces", dh, '*.ma') self.fileDialog.setAcceptMode(QtGui.QFileDialog.AcceptSave) self.fileDialog.show() self.fileDialog.fileSelected.connect(self.saveMA) return #arr = MetaArray(self.currentData) ### need to format this with axes and info arr = MetaArray([self.currentData['Rs'], self.currentData['Rm'], self.currentData['Ih']], info=[ {'name':'vals', 'cols':[ {'name':'Rs', 'units':'Ohms'}, {'name':'Rm', 'units':'Ohms'}, {'name':'Ih', 'units':'A'}]}, {'name':'time', 'units':'s', 'values':self.currentData['time']}]) arr.write(fileName)
def writeFrames(self, frames, newRec): times = [f[1]['time'] for f in frames] arrayInfo = [ {'name': 'Time', 'values': array(times) - self.startFrameTime, 'units': 's'}, {'name': 'X'}, {'name': 'Y'} ] #import random #if random.random() < 0.01: #raise Exception("TEST") imgs = [f[0][np.newaxis,...] for f in frames] data = MetaArray(np.concatenate(imgs, axis=0), info=arrayInfo) if newRec: self.currentRecord = self.m.getCurrentDir().writeFile(data, 'video', autoIncrement=True, info=frames[0][1], appendAxis='Time') self.currentFrameNum = 0 else: data.write(self.currentRecord.name(), appendAxis='Time') s = 1.0/self.currentFrameNum #self.showMessage("Recording %s - %d" % (self.currentRecord.name(), self.currentFrameNum)) self.currentFrameNum += len(frames)