示例#1
0
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);
}
示例#2
0
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);
      }


}