Esempio n. 1
0
void ParseWell(size_t rowIx, size_t colIx, size_t regionIx,
	       vector<int> &match, Mask &mask, int maskCenter, int maskMatch, 
	       vector<Traces> &flows, ostream &out, int frameStart, int frameEnd) {
  int idx = mask.ToIndex(rowIx, colIx);
  if ((mask[idx] & maskCenter) == 0) {
    return;
  }
  centerSeen++;
  vector<int> wells;
  vector<float> trace;
  mask.GetNeighbors(rowIx, colIx, wells);
  ION_ASSERT(wells.size() == match.size(), "Wells don't match string.");
  if (PatternMatch(match, wells, mask, maskMatch)) {
    out <<rowIx << "\t" << colIx << "\t" << idx << "\t" << regionIx << "\t";
    for (size_t i = 0; i < wells.size(); i++) {
      int full = ((mask[wells[i]] & maskMatch) > 0) ? 1 : 0;
      out << full;
    }
    for (size_t i = 0; i < flows.size(); i++) {
      flows[i].GetTraces(idx, trace);
      float sum = 0;
      for (int fIx = frameStart; fIx < frameEnd; fIx++) {
	sum += trace[fIx];
      }
      sum  =  sum / (frameEnd - frameStart);
      out << "\t" << sum;
    }
    for (size_t i = 0; i < flows.size(); i++) {
      out << "\t" << flows[i].GetT0(idx);
    }
    out << endl;
  }
}