int single_flow_optimizer::FitStandardPath (int fnum, float *evect, BeadParams *p, error_track *err_t, float *signal_corrected, float *signal_predicted, int NucID, float *lnucRise, int l_i_start, int flow_block_start, TimeCompression &time_c, EmphasisClass &emphasis_data,RegionTracker &my_regions) { float A_start = p->Ampl[fnum]; bool done = false; int retry_count = 0; int fitType = 0; SetLowerLimitAmplFit (pmin_param[0],pmin_param[1]); SetUpperLimitAmplFit (pmax_param[0],pmax_param[1]); while (!done && (retry_count <=retry_limit)) { emphasis_data.CustomEmphasis (evect, p->Ampl[fnum]+AdjustEmphasisForKmult(p->kmult[fnum],retry_count)); bool krate_fit = ( ( (p->Copies*p->Ampl[fnum]) > decision_threshold)); // this may not be the best way of deciding this krate_fit = krate_fit || var_kmult_only; fitType = krate_fit ? 1:0; //printf("single_flow_optimizer::FitStandardPath... krate_fit=%d\n",krate_fit); if (krate_fit) { FitKrateOneFlow (fnum,evect,p,err_t, signal_corrected,signal_predicted, NucID, lnucRise, l_i_start,flow_block_start,time_c,emphasis_data,my_regions); } else { // if (use_projection_search_ampl_fit) // FitProjection (fnum,evect,p, err_t, signal_corrected,NucID, lnucRise, l_i_start,my_flow,time_c,emphasis_data,my_regions); // else FitThisOneFlow (fnum,evect,p, err_t, signal_corrected,signal_predicted, NucID, lnucRise, l_i_start,flow_block_start,time_c,emphasis_data,my_regions); } float amplitude_delta = A_start - p->Ampl[fnum]; float kmult_above_bottom = (p->kmult[fnum]-local_min_param[KMULT]); const float amplitude_step_minimum = 0.1f; const float kmult_near_bottom = 0.1f; if ((fabs(amplitude_delta) > amplitude_step_minimum)||((fabs(kmult_above_bottom)<kmult_near_bottom)&&krate_fit)) A_start = p->Ampl[fnum]; else done = true; retry_count++; } return (fitType); }
void single_flow_optimizer::FitOneFlow (int fnum, float *evect, bead_params *p, error_track *err_t, float *signal_corrected, int NucID, float *lnucRise, int l_i_start, flow_buffer_info &my_flow, TimeCompression &time_c, EmphasisClass &emphasis_data,RegionTracker &my_regions) { bool krate_fit = ( ( (p->Copies*p->Ampl[fnum]) > decision_threshold)); // this may not be the best way of deciding this krate_fit = krate_fit || var_kmult_only; if (krate_fit) { FitKrateOneFlow (fnum,evect,p,err_t, signal_corrected,NucID, lnucRise, l_i_start,my_flow,time_c,emphasis_data,my_regions); } else { FitThisOneFlow (fnum,evect,p, err_t, signal_corrected,NucID, lnucRise, l_i_start,my_flow,time_c,emphasis_data,my_regions); } }