// fits all wells one flow at a time, using a LevMarFitter derived class // only the amplitude term is fit void RefineFit::FitAmplitudePerFlow () { bkg.region_data->my_regions.cache_step.CalculateNucRiseFineStep (&bkg.region_data->my_regions.rp,bkg.region_data->time_c,bkg.region_data->my_flow); // the same for the whole region because time-shift happens per well bkg.region_data->my_regions.cache_step.CalculateNucRiseCoarseStep (&bkg.region_data->my_regions.rp,bkg.region_data->time_c,bkg.region_data->my_flow); // use for xtalk bkg.region_data->my_scratch.FillShiftedBkg (*bkg.region_data->emptytrace, bkg.region_data->my_regions.rp.tshift, bkg.region_data->time_c, true); if (bkg.xtalk_spec.simple_model) bkg.xtalk_execute.ComputeTypicalCrossTalk(bkg.xtalk_execute.my_generic_xtalk, NULL); // get the generic value set //SpecializedEmphasisFunctions(); //TestXtalk(); for (int ibd = 0;ibd < bkg.region_data->my_beads.numLBeads;ibd++) { if (FitBeadLogic (&bkg.region_data->my_beads.params_nn[ibd])) FitAmplitudePerBeadPerFlow (ibd,bkg.region_data->my_regions.cache_step); } // printf("krate fit reduction cnt:%d amt:%f\n",krate_cnt,krate_red); }
// fits all wells one flow at a time, using a LevMarFitter derived class // only the amplitude term is fit void RefineFit::FitAmplitudePerFlow ( int flow_block_size, int flow_block_start ) { bkg.region_data->my_regions.cache_step.CalculateNucRiseFineStep (&bkg.region_data->my_regions.rp,bkg.region_data->time_c, *bkg.region_data_extras.my_flow); // the same for the whole region because time-shift happens per well bkg.region_data->my_regions.cache_step.CalculateNucRiseCoarseStep (&bkg.region_data->my_regions.rp,bkg.region_data->time_c,*bkg.region_data_extras.my_flow); // use for xtalk bkg.region_data->my_scratch.FillShiftedBkg (*bkg.region_data->emptytrace, bkg.region_data->my_regions.rp.tshift, bkg.region_data->time_c, true, flow_block_size); if (bkg.trace_xtalk_spec.simple_model) bkg.trace_xtalk_execute.ComputeTypicalCrossTalk(bkg.trace_xtalk_execute.my_generic_xtalk, NULL, flow_block_size, flow_block_start ); // get the generic value set my_single_fit.SetUpEmphasisForLevMarOptimizer(&(bkg.region_data->emphasis_data)); for (int ibd = 0;ibd < bkg.region_data->my_beads.numLBeads;ibd++) { if (bkg.region_data->my_beads.params_nn[ibd].FitBeadLogic ()) FitAmplitudePerBeadPerFlow (ibd,bkg.region_data->my_regions.cache_step, flow_block_size, flow_block_start); } // printf("krate fit reduction cnt:%d amt:%f\n",krate_cnt,krate_red); }