Beispiel #1
0
void RegionalizedData::UpdateTracesFromImage (SynchDat &chunk, int flow)
{
  ION_ASSERT(my_trace.time_cp->npts() <= (int)chunk.NumFrames(region->row, region->col), "Wrong number of frames.")
  my_trace.SetRawTrace(); // buffers treated as raw traces
  // populate bead traces from image file, just filling in data already saved
  my_trace.GenerateAllBeadTrace (region,my_beads,chunk, my_flow.flowBufferWritePos, regionAndTimingMatchSdat);

  // calculate average trace across all empty wells in a region for a flow
  // to FileLoadWorker at Image load time, should be able to go here
  emptytrace = emptyTraceTracker->GetEmptyTrace (*region);

  // sanity check images are what we think
  assert ( emptytrace->imgFrames == (int)chunk.NumFrames(region->row, region->col));
}
Beispiel #2
0
void BkgTrace::GenerateAllBeadTrace (Region *region, BeadTracker &my_beads, SynchDat &chunk, int iFlowBuffer, bool matchSdat)
{
  //  ION_ASSERT(chunk.NumFrames(my_beads.params_nn[0].x,my_beads.params_nn[0].y) >= (size_t)time_cp->npts(), "Wrong data points.");
  ION_ASSERT(chunk.NumFrames(region->row, region->col) >= (size_t)time_cp->npts(), "Wrong data points.");
    for (int nbd = 0;nbd < my_beads.numLBeads;nbd++) // is this the right iterator here?
      {
        int rx = my_beads.params_nn[nbd].x;  // should x,y be stored with traces instead?
        int ry = my_beads.params_nn[nbd].y;

        FG_BUFFER_TYPE *fg = &fg_buffers[bead_flow_t*nbd+time_cp->npts()*iFlowBuffer];
        if (matchSdat) {
	  for (int i = 0; i < time_cp->npts(); i++) {
	    fg[i] = chunk.At(ry + region->row, rx + region->col, i);
	  }
	}
	else {
	  std::vector<float> tmp(time_cp->npts(), 0);
	  chunk.InterpolatedAt(ry + region->row, rx + region->col, time_cp->mTimePoints, tmp);
	  for (int i = 0; i < time_cp->npts(); i++) {
	    fg[i] = tmp[i];
	  }
	}
        float offset = BkgTrace::ComputeDcOffset(fg, *time_cp, 0.0f, time_cp->t0-2);
        for (int i = 0; i < time_cp->npts(); i++) {
          fg[i] = round(fg[i] - offset);
        }
    }
    KeepEmptyScale(region, my_beads,chunk, iFlowBuffer);
}
Beispiel #3
0
void RegionalizedData::UpdateTracesFromImage (SynchDat &chunk, FlowBufferInfo &my_flow, int flow, int flow_block_size)
{
  ION_ASSERT(my_trace.time_cp->npts() <= (int)chunk.NumFrames(region->row, region->col), "Wrong number of frames.")
  my_trace.SetRawTrace(); // buffers treated as raw traces
  // populate bead traces from image file, just filling in data already saved
  my_trace.GenerateAllBeadTrace (region,my_beads,chunk, my_flow.flowBufferWritePos, regionAndTimingMatchSdat, flow_block_size);
  float t_mid_nuc =  GetTypicalMidNucTime (&my_regions.rp.nuc_shape);
  float t_offset_beads = my_regions.rp.nuc_shape.sigma;
  my_trace.RezeroBeads(time_c.time_start, t_mid_nuc-t_offset_beads, my_flow.flowBufferWritePos, flow_block_size);
  // calculate average trace across all empty wells in a region for a flow
  // to FileLoadWorker at Image load time, should be able to go here
  emptytrace = emptyTraceTracker->GetEmptyTrace (*region);
}