Ejemplo n.º 1
0
def fret_from_image(img,
                    bg_pixel=(0, 0),
                    bg_counts=(0, 0),
                    beta=BETA,
                    gamma=GAMMA,
                    rois=()):
    '''Returns (time,donor,acceptor,fret) calculated from an image with added ROIs

  img         image.Stack() or equivalent. Must have .roi dictionary with 'donor' and 'acceptor'
  bg_pixel    tuple of counts per pixel to substract from (donor,acceptor)
  bg_counts   tuple of counts to substract from (donor,acceptor)
  '''
    assert_all_listy(bg_pixel, bg_counts, rois)
    if not img.roi:
        if not rois:
            raise ValueError(
                'Must specify ROIs in image or provide using rois=')
        else:
            img.addROI(*rois)
    pixel_donor, pixel_acc = bg_pixel
    bg_donor, bg_acc = bg_counts
    donor_roi, acceptor_roi = img.roi['donor'], img.roi['acceptor']
    don = counts_from_image(img, donor_roi, pixel_donor) - bg_donor
    acc = counts_from_image(img, acceptor_roi, pixel_acc) - bg_acc
    dcounts, acounts, fret = fret_counts(don, acc, beta, gamma)
    metadata = nesteddict.from_dict(img.metadata)
    metadata.update(beta=beta,
                    gamma=gamma,
                    bg_pixel=bg_pixel,
                    bg_counts=bg_counts,
                    roi_donor=donor_roi.toDict(),
                    roi_acceptor=acceptor_roi.toDict())
    fdata = FretData.fromFields(img.time, dcounts, acounts, fret)
    fdata.metadata = metadata
    return fdata
Ejemplo n.º 2
0
 def fret(self, data):
     meta = data.metadata.copy()
     if self.fret:
         for k, v in self.fret.metadata.iteritems():
             meta.setdefault(k, v)
     self._fret = FretData(data.data, meta)
     self.metadata['fret.'] = self._fret.metadata
Ejemplo n.º 3
0
def fret_from_image(img, bg_pixel=(0,0), bg_counts=(0,0), beta=BETA, gamma=GAMMA, rois=()):
  '''Returns (time,donor,acceptor,fret) calculated from an image with added ROIs

  img         image.Stack() or equivalent. Must have .roi dictionary with 'donor' and 'acceptor'
  bg_pixel    tuple of counts per pixel to substract from (donor,acceptor)
  bg_counts   tuple of counts to substract from (donor,acceptor)
  '''
  assert_all_listy(bg_pixel, bg_counts, rois)
  if not img.roi:
    if not rois:
      raise ValueError('Must specify ROIs in image or provide using rois=')
    else:
      img.addROI(*rois)
  pixel_donor, pixel_acc = bg_pixel
  bg_donor, bg_acc = bg_counts
  donor_roi,acceptor_roi = img.roi['donor'], img.roi['acceptor']
  don = counts_from_image(img, donor_roi, pixel_donor) - bg_donor
  acc = counts_from_image(img, acceptor_roi, pixel_acc) - bg_acc
  dcounts,acounts,fret = fret_counts(don, acc, beta, gamma)
  metadata = nesteddict.from_dict(img.metadata)
  metadata.update(
    beta=beta, gamma=gamma, bg_pixel=bg_pixel, bg_counts=bg_counts,
    roi_donor=donor_roi.toDict(), roi_acceptor=acceptor_roi.toDict()
    )
  fdata = FretData.fromFields(img.time,dcounts,acounts,fret)
  fdata.metadata = metadata
  return fdata
Ejemplo n.º 4
0
def calculate(stack, beta=constants.beta, gamma=constants.gamma, minsub=False):
  """Calculates FRET of a pull from an image.Stack

  calculate( image.Stack, beta = constants.beta, gamma = constants.gamma)

  RETURNS array of calculated FRET for each frame
  """
  donor = stack.donor - (minsub and min(stack.donor))
  acceptor = stack.acceptor - donor*beta
  acceptor = acceptor - (minsub and min(acceptor))
  return FretData.fromFields(stack.time, donor, acceptor, acceptor/(acceptor+gamma*donor))
Ejemplo n.º 5
0
  def fromFile(cls, strfile, fretfile, metadata):
    assert strfile or fretfile
    assert isinstance(strfile, str)
    assert isinstance(fretfile, (str,type(None)))
    metadata = nesteddict.from_dict(metadata)

    trap = TrapData.fromFile(strfile)
    fret = FretData.fromFile(fretfile) if fretfile else None
    trap.metadata.setdefault('date', today())
    trap_datetime = trap.metadata['date']
    metadata.setdefault('date', to_date(trap_datetime))
    metadata.setdefault('datetime', trap_datetime)
    metadata['filename'] = fileIO.splitext(strfile)[0]
    newCls = cls(trap, fret, metadata)
    assert isinstance(newCls, cls)
    assert getattr(newCls, 'filename', None) is not None
    return newCls
Ejemplo n.º 6
0
    def fromFile(cls, strfile, fretfile, metadata):
        assert strfile or fretfile
        assert isinstance(strfile, str)
        assert isinstance(fretfile, (str, type(None)))
        metadata = nesteddict.from_dict(metadata)

        trap = TrapData.fromFile(strfile)
        fret = FretData.fromFile(fretfile) if fretfile else None
        trap.metadata.setdefault('date', today())
        trap_datetime = trap.metadata['date']
        metadata.setdefault('date', to_date(trap_datetime))
        metadata.setdefault('datetime', trap_datetime)
        metadata['filename'] = fileIO.splitext(strfile)[0]
        newCls = cls(trap, fret, metadata)
        assert isinstance(newCls, cls)
        assert getattr(newCls, 'filename', None) is not None
        return newCls
Ejemplo n.º 7
0
 def collapse(self, trap_sorted_by='ext', fret_sorted_by='time'):
   "Collapse experiments into a single experiment with all data appended together."
   assert isinstance(trap_sorted_by, str)
   assert isinstance(fret_sorted_by, str)
   if not self._all_elements_have_attr('trap'):
     raise AttributeError(
       'All experiments in ExpList must have attribute "trap"')
   filtered_by_fret = self.has_attr('fret')
   num_with_fret = len(filtered_by_fret)
   fret_data = None
   if num_with_fret == len(self):
       fret_data = FretData.aggregate(self.getattrs('fret'), fret_sorted_by)
   elif num_with_fret > 0:
       logger.warning('Not all experiments have fret: not collapsing fret data!')
   trap_data = TrapData.aggregate(self.getattrs('trap'), sort_by=trap_sorted_by)
   fname = self[0].filename or ''
   fname += '_collapsed' if fname else 'collapsed'
   return Pulling(trap_data, fret_data, dict(filename=fname, collapsed=True))
Ejemplo n.º 8
0
def fromFile(filename, **kwargs):
  return FretData.fromFile(filename)
Ejemplo n.º 9
0
def fromFile(filename, **kwargs):
    return FretData.fromFile(filename)