Пример #1
0
 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
Пример #2
0
  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)