apply method

  1. @override
double apply(
  1. double sample
)
override

Implementation

@override
double apply(double sample) {
  List<double> app_det = w_dec[0].decompose(sample);
  double app = app_det[0];
  double det = app_det[1];
  List<double> recons_data = [];

  if (cnt >= min_req[0]) {
    if (cnt % 2 == 0) {
      app_det = w_dec[1].decompose(app);
      double app2 = app_det[0];
      double det2 = app_det[1];
      det = w_dec[0].threshold(det, thres);
      det1.add(det);

      if (cnt >= min_req[1] && cnt % 4 == 0) {
        double new_app2 = w_dec[1].threshold(app2, thres);
        double new_det2 = w_dec[1].threshold(det2, thres);
        List<double> recon_app2 = w_rec[1].reconstruct(new_app2, true);
        List<double> recon_det2 = w_rec[1].reconstruct(new_det2, false);

        if (cnt >= min_req[1] + cut_int * 2) {
          new_app[0] = recon_app2[0] + recon_det2[0];
          new_app[1] = recon_app2[1] + recon_det2[1];
          cnt_det++;
          List<double> new_det = det1.sublist(2 * cnt_det - 2, 2 * cnt_det);

          for (int k = 0; k < 2; k++) {
            List<double> recon_app = w_rec[0].reconstruct(new_app[k], true);
            List<double> recon_det = w_rec[0].reconstruct(new_det[k], false);
            recons_data.add(recon_app[0] + recon_det[0]);
            recons_data.add(recon_app[1] + recon_det[1]);
          }
        }
      }
    }
  }

  cnt++;
  reconstructed_data.addAll(recons_data);

  if (reconstructed_data.length > 1) {
    if (cut_ind < cut_int) {
      cut_ind++;
      reconstructed_data.removeAt(0);
      return 0;
    } else {
      reconstructed_data.removeAt(0);
      return reconstructed_data[0];
    }
  } else {
    return 0;
  }
}