Beispiel #1
0
void UpdateMask(Mask& mask, std::vector<RegionalizedData *>& sliced_chip)
{
  unsigned int numRegions = sliced_chip.size();
  for (unsigned int rgn=0; rgn<numRegions; ++rgn)
  {
    RegionalizedData& local_patch     = *sliced_chip[rgn];
    int       numWells  = local_patch.GetNumLiveBeads();
    int       rowOffset = local_patch.region->row;
    int       colOffset = local_patch.region->col;

    for (int well=0; well<numWells; ++well)
    {
      BeadParams& bead  = local_patch.GetParams (well);
      bead_state&  state = *bead.my_state;

      // Record clonal reads in mask:
      int row = rowOffset + bead.y;
      int col = colOffset + bead.x;
      if(mask.Match(col, row, MaskLib)){
        if(state.bad_read)
          mask.Set(col, row, MaskFilteredBadKey);
        else if(state.ppf >= mixed_ppf_cutoff())
          mask.Set(col, row, MaskFilteredBadResidual);
        else if(not state.clonal_read)
          mask.Set(col, row, MaskFilteredBadPPF);
      }
    }
  }
}