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); } } } }