@Test
  public void testNormalizeDiploidLikelihoodMatrixFromLog10() {
    double[][] likelihoodMatrix = {
      {-90.2, 0, 0},
      {-190.1, -2.1, 0},
      {-7.0, -17.5, -35.9}
    };
    double[][] normalizedMatrix = {
      {-88.1, 0, 0},
      {-188.0, 0.0, 0},
      {-4.9, -15.4, -33.8}
    };

    Assert.assertTrue(
        compareDoubleArrays(
            LikelihoodCalculationEngine.normalizeDiploidLikelihoodMatrixFromLog10(likelihoodMatrix),
            normalizedMatrix));

    double[][] likelihoodMatrix2 = {
      {-90.2, 0, 0, 0},
      {-190.1, -2.1, 0, 0},
      {-7.0, -17.5, -35.9, 0},
      {-7.0, -17.5, -35.9, -1000.0},
    };
    double[][] normalizedMatrix2 = {
      {-88.1, 0, 0, 0},
      {-188.0, 0.0, 0, 0},
      {-4.9, -15.4, -33.8, 0},
      {-4.9, -15.4, -33.8, -997.9},
    };
    Assert.assertTrue(
        compareDoubleArrays(
            LikelihoodCalculationEngine.normalizeDiploidLikelihoodMatrixFromLog10(
                likelihoodMatrix2),
            normalizedMatrix2));
  }
  @Test(dataProvider = "PcrErrorModelTestProvider", enabled = true)
  public void createPcrErrorModelTest(final String repeat, final int repeatLength) {

    final LikelihoodCalculationEngine engine =
        new LikelihoodCalculationEngine(
            (byte) 0,
            false,
            PairHMM.HMM_IMPLEMENTATION.ORIGINAL,
            0.0,
            true,
            LikelihoodCalculationEngine.PCR_ERROR_MODEL.CONSERVATIVE);

    final String readString = Utils.dupString(repeat, repeatLength);
    final byte[] insQuals = new byte[readString.length()];
    final byte[] delQuals = new byte[readString.length()];
    Arrays.fill(insQuals, (byte) LikelihoodCalculationEngine.INITIAL_QSCORE);
    Arrays.fill(delQuals, (byte) LikelihoodCalculationEngine.INITIAL_QSCORE);

    engine.applyPCRErrorModel(readString.getBytes(), insQuals, delQuals);

    final RepeatCovariate repeatCovariate = new RepeatLengthCovariate();
    repeatCovariate.initialize(
        LikelihoodCalculationEngine.MAX_STR_UNIT_LENGTH,
        LikelihoodCalculationEngine.MAX_REPEAT_LENGTH);

    for (int i = 1; i < insQuals.length; i++) {

      final int repeatLengthFromCovariate =
          repeatCovariate.findTandemRepeatUnits(readString.getBytes(), i - 1).getSecond();
      final byte adjustedScore =
          LikelihoodCalculationEngine.getErrorModelAdjustedQual(repeatLengthFromCovariate, 3.0);

      Assert.assertEquals(insQuals[i - 1], adjustedScore);
      Assert.assertEquals(delQuals[i - 1], adjustedScore);
    }
  }