calculateDecelerations method

int calculateDecelerations()

second criteria

Implementation

/*

  */
/*for (int i = 0; i < size; i++) {
    int difference = baselineEpochBpm[i]! - millisecondsEpochBpm[i]!;

    if (difference > 1) {
      counter2++;

      if (maxExcursion < difference) maxExcursion = difference;

      *//*
 */
/*if (counter2 > 8 && counter2 < 15 && !isDeceleration) {// 60 seconds = 16 samples
                  isDeceleration = true;
                  //n++;
              }*//*
 */
/*
    } else {
      if (maxExcursion >= 10)
      //Log.i("maxExcursion dec 2", counter2 + " - " + maxExcursion + " - " + ((i * 4) / 60));

      if (counter2 >= 2 && counter2 < 4 && maxExcursion >= 20) {  // change from counter2 >= 8 && counter2 < 15 to counter2 >= 2 && counter2 < 4
        MarkerIndices deceleration = new MarkerIndices();
        deceleration.setFrom(((i - counter2) * FACTOR));
        deceleration.setTo(((i) * FACTOR));
        decelerations.add(deceleration);
        n++;
      }
      counter2 = 0;
      //isDeceleration = false;
      maxExcursion = 0;
    }
  }*//*


  decelerationsList = decelerations;
  print("Interpretations2 :: decelerationsList - ${decelerationsList?.length}");
  print("Interpretations2 :: counter1 - $counter1");
  print("Interpretations2 :: n - $n");
  print("Interpretations2 :: isDeceleration - $isDeceleration");
  print("Interpretations2 :: maxExcursion - $maxExcursion");
  return n;
}
*/

int calculateDecelerations() {
  List<MarkerIndices> decelerations = [];
  int size = millisecondsEpoch.length;
  int counter1 = 0, counter2 = 0, n = 0;
  int maxExcursion = 0;

  for (int i = 0; i < size; i++) {
    MarkerIndices deceleration = MarkerIndices();
    if (millisecondsEpochBpm[i] == 0) continue;
    int difference = baselineEpochBpm[i]! - millisecondsEpochBpm[i]!;

    if (difference > 0) {
      counter1++;
      if (maxExcursion < difference) maxExcursion = difference;

      if (counter1 >= 4 && !isDeceleration) {
        isDeceleration = true;
      }
    } else {
      if (maxExcursion >= 10) {
        // print("maxExcursion dec 1: $counter1 - $maxExcursion - ${(i * 4) / 60}");

        if (counter1 >= 14 && maxExcursion >= 10) {
          deceleration = MarkerIndices()
            ..from = ((i - counter1) * FACTOR).toInt()
            ..to = (i * FACTOR).toInt();
          decelerations.add(deceleration);
          n++;
        } else if (counter1 > 3 && counter1 < 15 && maxExcursion >= 15) {
          deceleration = MarkerIndices()
            ..from = ((i - counter1) * FACTOR).toInt()
            ..to = (i * FACTOR).toInt();
          decelerations.add(deceleration);
          n++;
        }
      }
      counter1 = 0;
      isDeceleration = false;
      maxExcursion = 0;
    }
  }
  maxExcursion = 0;

  decelerationsList = decelerations;
  return n;
}