def fromfile(cls, imgfile, camfile=''): img = fileIO.loadimg(imgfile) camfile = camfile or fileIO.to_cam_filename(imgfile) metadata = fileIO.loadcam(camfile) metadata['filename'] = imgfile stack = cls(img, metadata) # Keeping the .filename attribute for backward compatibility, but should move to # metadata lookup stack.filename = metadata['filename'] return stack
def __init__(self, filename, filetype="img", camFile='', deepcopy=False): if filetype != 'img': raise ValueError, "Only filetype 'img' is supported!" self._showROI = False ################################################# ## Load data from file called filename if string ################################################# if isinstance(filename, str): self.filename = filename self._img = fileIO.loadimg(filename) self._roi = {} self._donorROIName = Stack.defaultDonorROI self._acceptorROIName = Stack.defaultAcceptorROI camFile = camFile or fileIO.change_extension(filename, '.cam') settings = fileIO.loadcam(camFile) self.metadata = {} for setting,value in settings.iteritems(): self.metadata[setting] = value if not hasattr(self, setting): setattr(self, setting, value) # check cam and img file correspondence if self._img.shape != (settings['frames'],settings['height'],settings['width']): raise StackError, ".img file and .cam file dimensions do not agree" self.origin = (self.roileft,self.roibottom) self.addROI(*self.__class__.defaultROI.values()) ################################################# ## Make a copy of filename if actually another Stack ################################################# elif isinstance(filename, Stack): if deepcopy: self._img=filename._img.copy() else: self._img=filename._img self._roi=filename._roi self._donorROIName = filename._donorROIName self._acceptorROIName = filename._acceptorROIName self.origin = filename.origin self.metadata = filename.metadata for setting in self.metadata: if not hasattr(self,setting.lower()): setattr(self, setting, getattr(filename,setting)) else: raise StackError, "Invalid constructor call using %s" % str(filename)