Java Code Examples for org.apache.commons.math3.util.Precision#equalsIncludingNaN()

The following examples show how to use org.apache.commons.math3.util.Precision#equalsIncludingNaN() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: SummaryStatistics.java    From astor with GNU General Public License v2.0 6 votes vote down vote up
/**
 * Returns true iff <code>object</code> is a
 * <code>SummaryStatistics</code> instance and all statistics have the
 * same values as this.
 * @param object the object to test equality against.
 * @return true if object equals this
 */
@Override
public boolean equals(Object object) {
    if (object == this) {
        return true;
    }
    if (object instanceof SummaryStatistics == false) {
        return false;
    }
    SummaryStatistics stat = (SummaryStatistics)object;
    return Precision.equalsIncludingNaN(stat.getGeometricMean(), getGeometricMean()) &&
           Precision.equalsIncludingNaN(stat.getMax(),           getMax())           &&
           Precision.equalsIncludingNaN(stat.getMean(),          getMean())          &&
           Precision.equalsIncludingNaN(stat.getMin(),           getMin())           &&
           Precision.equalsIncludingNaN(stat.getN(),             getN())             &&
           Precision.equalsIncludingNaN(stat.getSum(),           getSum())           &&
           Precision.equalsIncludingNaN(stat.getSumsq(),         getSumsq())         &&
           Precision.equalsIncludingNaN(stat.getVariance(),      getVariance());
}
 
Example 2
Source File: SummaryStatistics.java    From astor with GNU General Public License v2.0 6 votes vote down vote up
/**
 * Returns true iff <code>object</code> is a
 * <code>SummaryStatistics</code> instance and all statistics have the
 * same values as this.
 * @param object the object to test equality against.
 * @return true if object equals this
 */
@Override
public boolean equals(Object object) {
    if (object == this) {
        return true;
    }
    if (object instanceof SummaryStatistics == false) {
        return false;
    }
    SummaryStatistics stat = (SummaryStatistics)object;
    return Precision.equalsIncludingNaN(stat.getGeometricMean(), getGeometricMean()) &&
           Precision.equalsIncludingNaN(stat.getMax(),           getMax())           &&
           Precision.equalsIncludingNaN(stat.getMean(),          getMean())          &&
           Precision.equalsIncludingNaN(stat.getMin(),           getMin())           &&
           Precision.equalsIncludingNaN(stat.getN(),             getN())             &&
           Precision.equalsIncludingNaN(stat.getSum(),           getSum())           &&
           Precision.equalsIncludingNaN(stat.getSumsq(),         getSumsq())         &&
           Precision.equalsIncludingNaN(stat.getVariance(),      getVariance());
}
 
Example 3
Source File: MultivariateSummaryStatistics.java    From astor with GNU General Public License v2.0 6 votes vote down vote up
/**
 * Returns true iff <code>object</code> is a <code>MultivariateSummaryStatistics</code>
 * instance and all statistics have the same values as this.
 * @param object the object to test equality against.
 * @return true if object equals this
 */
@Override
public boolean equals(Object object) {
    if (object == this ) {
        return true;
    }
    if (object instanceof MultivariateSummaryStatistics == false) {
        return false;
    }
    MultivariateSummaryStatistics stat = (MultivariateSummaryStatistics) object;
    return MathArrays.equalsIncludingNaN(stat.getGeometricMean(), getGeometricMean()) &&
           MathArrays.equalsIncludingNaN(stat.getMax(),           getMax())           &&
           MathArrays.equalsIncludingNaN(stat.getMean(),          getMean())          &&
           MathArrays.equalsIncludingNaN(stat.getMin(),           getMin())           &&
           Precision.equalsIncludingNaN(stat.getN(),             getN())             &&
           MathArrays.equalsIncludingNaN(stat.getSum(),           getSum())           &&
           MathArrays.equalsIncludingNaN(stat.getSumSq(),         getSumSq())         &&
           MathArrays.equalsIncludingNaN(stat.getSumLog(),        getSumLog())        &&
           stat.getCovariance().equals( getCovariance());
}
 
Example 4
Source File: SummaryStatistics.java    From astor with GNU General Public License v2.0 6 votes vote down vote up
/**
 * Returns true iff <code>object</code> is a
 * <code>SummaryStatistics</code> instance and all statistics have the
 * same values as this.
 * @param object the object to test equality against.
 * @return true if object equals this
 */
@Override
public boolean equals(Object object) {
    if (object == this) {
        return true;
    }
    if (object instanceof SummaryStatistics == false) {
        return false;
    }
    SummaryStatistics stat = (SummaryStatistics)object;
    return Precision.equalsIncludingNaN(stat.getGeometricMean(), getGeometricMean()) &&
           Precision.equalsIncludingNaN(stat.getMax(),           getMax())           &&
           Precision.equalsIncludingNaN(stat.getMean(),          getMean())          &&
           Precision.equalsIncludingNaN(stat.getMin(),           getMin())           &&
           Precision.equalsIncludingNaN(stat.getN(),             getN())             &&
           Precision.equalsIncludingNaN(stat.getSum(),           getSum())           &&
           Precision.equalsIncludingNaN(stat.getSumsq(),         getSumsq())         &&
           Precision.equalsIncludingNaN(stat.getVariance(),      getVariance());
}
 
Example 5
Source File: MultivariateSummaryStatistics.java    From astor with GNU General Public License v2.0 6 votes vote down vote up
/**
 * Returns true iff <code>object</code> is a <code>MultivariateSummaryStatistics</code>
 * instance and all statistics have the same values as this.
 * @param object the object to test equality against.
 * @return true if object equals this
 */
@Override
public boolean equals(Object object) {
    if (object == this ) {
        return true;
    }
    if (object instanceof MultivariateSummaryStatistics == false) {
        return false;
    }
    MultivariateSummaryStatistics stat = (MultivariateSummaryStatistics) object;
    return MathArrays.equalsIncludingNaN(stat.getGeometricMean(), getGeometricMean()) &&
           MathArrays.equalsIncludingNaN(stat.getMax(),           getMax())           &&
           MathArrays.equalsIncludingNaN(stat.getMean(),          getMean())          &&
           MathArrays.equalsIncludingNaN(stat.getMin(),           getMin())           &&
           Precision.equalsIncludingNaN(stat.getN(),             getN())             &&
           MathArrays.equalsIncludingNaN(stat.getSum(),           getSum())           &&
           MathArrays.equalsIncludingNaN(stat.getSumSq(),         getSumSq())         &&
           MathArrays.equalsIncludingNaN(stat.getSumLog(),        getSumLog())        &&
           stat.getCovariance().equals( getCovariance());
}
 
Example 6
Source File: MultivariateSummaryStatistics.java    From astor with GNU General Public License v2.0 6 votes vote down vote up
/**
 * Returns true iff <code>object</code> is a <code>MultivariateSummaryStatistics</code>
 * instance and all statistics have the same values as this.
 * @param object the object to test equality against.
 * @return true if object equals this
 */
@Override
public boolean equals(Object object) {
    if (object == this ) {
        return true;
    }
    if (object instanceof MultivariateSummaryStatistics == false) {
        return false;
    }
    MultivariateSummaryStatistics stat = (MultivariateSummaryStatistics) object;
    return MathArrays.equalsIncludingNaN(stat.getGeometricMean(), getGeometricMean()) &&
           MathArrays.equalsIncludingNaN(stat.getMax(),           getMax())           &&
           MathArrays.equalsIncludingNaN(stat.getMean(),          getMean())          &&
           MathArrays.equalsIncludingNaN(stat.getMin(),           getMin())           &&
           Precision.equalsIncludingNaN(stat.getN(),             getN())             &&
           MathArrays.equalsIncludingNaN(stat.getSum(),           getSum())           &&
           MathArrays.equalsIncludingNaN(stat.getSumSq(),         getSumSq())         &&
           MathArrays.equalsIncludingNaN(stat.getSumLog(),        getSumLog())        &&
           stat.getCovariance().equals( getCovariance());
}
 
Example 7
Source File: SummaryStatistics.java    From astor with GNU General Public License v2.0 6 votes vote down vote up
/**
 * Returns true iff <code>object</code> is a
 * <code>SummaryStatistics</code> instance and all statistics have the
 * same values as this.
 * @param object the object to test equality against.
 * @return true if object equals this
 */
@Override
public boolean equals(Object object) {
    if (object == this) {
        return true;
    }
    if (object instanceof SummaryStatistics == false) {
        return false;
    }
    SummaryStatistics stat = (SummaryStatistics)object;
    return Precision.equalsIncludingNaN(stat.getGeometricMean(), getGeometricMean()) &&
           Precision.equalsIncludingNaN(stat.getMax(),           getMax())           &&
           Precision.equalsIncludingNaN(stat.getMean(),          getMean())          &&
           Precision.equalsIncludingNaN(stat.getMin(),           getMin())           &&
           Precision.equalsIncludingNaN(stat.getN(),             getN())             &&
           Precision.equalsIncludingNaN(stat.getSum(),           getSum())           &&
           Precision.equalsIncludingNaN(stat.getSumsq(),         getSumsq())         &&
           Precision.equalsIncludingNaN(stat.getVariance(),      getVariance());
}
 
Example 8
Source File: StatisticalSummaryValues.java    From astor with GNU General Public License v2.0 6 votes vote down vote up
/**
 * Returns true iff <code>object</code> is a
 * <code>StatisticalSummaryValues</code> instance and all statistics have
 *  the same values as this.
 *
 * @param object the object to test equality against.
 * @return true if object equals this
 */
@Override
public boolean equals(Object object) {
    if (object == this ) {
        return true;
    }
    if (object instanceof StatisticalSummaryValues == false) {
        return false;
    }
    StatisticalSummaryValues stat = (StatisticalSummaryValues) object;
    return Precision.equalsIncludingNaN(stat.getMax(),      getMax())  &&
           Precision.equalsIncludingNaN(stat.getMean(),     getMean()) &&
           Precision.equalsIncludingNaN(stat.getMin(),      getMin())  &&
           Precision.equalsIncludingNaN(stat.getN(),        getN())    &&
           Precision.equalsIncludingNaN(stat.getSum(),      getSum())  &&
           Precision.equalsIncludingNaN(stat.getVariance(), getVariance());
}
 
Example 9
Source File: SummaryStatistics.java    From astor with GNU General Public License v2.0 6 votes vote down vote up
/**
 * Returns true iff <code>object</code> is a
 * <code>SummaryStatistics</code> instance and all statistics have the
 * same values as this.
 * @param object the object to test equality against.
 * @return true if object equals this
 */
@Override
public boolean equals(Object object) {
    if (object == this) {
        return true;
    }
    if (object instanceof SummaryStatistics == false) {
        return false;
    }
    SummaryStatistics stat = (SummaryStatistics)object;
    return Precision.equalsIncludingNaN(stat.getGeometricMean(), getGeometricMean()) &&
           Precision.equalsIncludingNaN(stat.getMax(),           getMax())           &&
           Precision.equalsIncludingNaN(stat.getMean(),          getMean())          &&
           Precision.equalsIncludingNaN(stat.getMin(),           getMin())           &&
           Precision.equalsIncludingNaN(stat.getN(),             getN())             &&
           Precision.equalsIncludingNaN(stat.getSum(),           getSum())           &&
           Precision.equalsIncludingNaN(stat.getSumsq(),         getSumsq())         &&
           Precision.equalsIncludingNaN(stat.getVariance(),      getVariance());
}
 
Example 10
Source File: StatisticalSummaryValues.java    From astor with GNU General Public License v2.0 6 votes vote down vote up
/**
 * Returns true iff <code>object</code> is a
 * <code>StatisticalSummaryValues</code> instance and all statistics have
 *  the same values as this.
 *
 * @param object the object to test equality against.
 * @return true if object equals this
 */
@Override
public boolean equals(Object object) {
    if (object == this ) {
        return true;
    }
    if (object instanceof StatisticalSummaryValues == false) {
        return false;
    }
    StatisticalSummaryValues stat = (StatisticalSummaryValues) object;
    return Precision.equalsIncludingNaN(stat.getMax(),      getMax())  &&
           Precision.equalsIncludingNaN(stat.getMean(),     getMean()) &&
           Precision.equalsIncludingNaN(stat.getMin(),      getMin())  &&
           Precision.equalsIncludingNaN(stat.getN(),        getN())    &&
           Precision.equalsIncludingNaN(stat.getSum(),      getSum())  &&
           Precision.equalsIncludingNaN(stat.getVariance(), getVariance());
}
 
Example 11
Source File: TestUtils.java    From astor with GNU General Public License v2.0 5 votes vote down vote up
/** verifies that two arrays are close (sup norm) */
public static void assertEquals(String msg, double[] expected, double[] observed, double tolerance) {
    StringBuilder out = new StringBuilder(msg);
    if (expected.length != observed.length) {
        out.append("\n Arrays not same length. \n");
        out.append("expected has length ");
        out.append(expected.length);
        out.append(" observed length = ");
        out.append(observed.length);
        Assert.fail(out.toString());
    }
    boolean failure = false;
    for (int i=0; i < expected.length; i++) {
        if (!Precision.equalsIncludingNaN(expected[i], observed[i], tolerance)) {
            failure = true;
            out.append("\n Elements at index ");
            out.append(i);
            out.append(" differ. ");
            out.append(" expected = ");
            out.append(expected[i]);
            out.append(" observed = ");
            out.append(observed[i]);
        }
    }
    if (failure) {
        Assert.fail(out.toString());
    }
}
 
Example 12
Source File: TestUtils.java    From astor with GNU General Public License v2.0 5 votes vote down vote up
/** verifies that two arrays are close (sup norm) */
public static void assertEquals(String msg, double[] expected, double[] observed, double tolerance) {
    StringBuilder out = new StringBuilder(msg);
    if (expected.length != observed.length) {
        out.append("\n Arrays not same length. \n");
        out.append("expected has length ");
        out.append(expected.length);
        out.append(" observed length = ");
        out.append(observed.length);
        Assert.fail(out.toString());
    }
    boolean failure = false;
    for (int i=0; i < expected.length; i++) {
        if (!Precision.equalsIncludingNaN(expected[i], observed[i], tolerance)) {
            failure = true;
            out.append("\n Elements at index ");
            out.append(i);
            out.append(" differ. ");
            out.append(" expected = ");
            out.append(expected[i]);
            out.append(" observed = ");
            out.append(observed[i]);
        }
    }
    if (failure) {
        Assert.fail(out.toString());
    }
}
 
Example 13
Source File: TestUtils.java    From astor with GNU General Public License v2.0 5 votes vote down vote up
/** verifies that two arrays are close (sup norm) */
public static void assertEquals(String msg, double[] expected, double[] observed, double tolerance) {
    StringBuilder out = new StringBuilder(msg);
    if (expected.length != observed.length) {
        out.append("\n Arrays not same length. \n");
        out.append("expected has length ");
        out.append(expected.length);
        out.append(" observed length = ");
        out.append(observed.length);
        Assert.fail(out.toString());
    }
    boolean failure = false;
    for (int i=0; i < expected.length; i++) {
        if (!Precision.equalsIncludingNaN(expected[i], observed[i], tolerance)) {
            failure = true;
            out.append("\n Elements at index ");
            out.append(i);
            out.append(" differ. ");
            out.append(" expected = ");
            out.append(expected[i]);
            out.append(" observed = ");
            out.append(observed[i]);
        }
    }
    if (failure) {
        Assert.fail(out.toString());
    }
}
 
Example 14
Source File: TestUtils.java    From astor with GNU General Public License v2.0 5 votes vote down vote up
/** verifies that two arrays are close (sup norm) */
public static void assertEquals(String msg, double[] expected, double[] observed, double tolerance) {
    StringBuilder out = new StringBuilder(msg);
    if (expected.length != observed.length) {
        out.append("\n Arrays not same length. \n");
        out.append("expected has length ");
        out.append(expected.length);
        out.append(" observed length = ");
        out.append(observed.length);
        Assert.fail(out.toString());
    }
    boolean failure = false;
    for (int i=0; i < expected.length; i++) {
        if (!Precision.equalsIncludingNaN(expected[i], observed[i], tolerance)) {
            failure = true;
            out.append("\n Elements at index ");
            out.append(i);
            out.append(" differ. ");
            out.append(" expected = ");
            out.append(expected[i]);
            out.append(" observed = ");
            out.append(observed[i]);
        }
    }
    if (failure) {
        Assert.fail(out.toString());
    }
}
 
Example 15
Source File: TestUtils.java    From astor with GNU General Public License v2.0 5 votes vote down vote up
/** verifies that two arrays are close (sup norm) */
public static void assertEquals(String msg, double[] expected, double[] observed, double tolerance) {
    StringBuilder out = new StringBuilder(msg);
    if (expected.length != observed.length) {
        out.append("\n Arrays not same length. \n");
        out.append("expected has length ");
        out.append(expected.length);
        out.append(" observed length = ");
        out.append(observed.length);
        Assert.fail(out.toString());
    }
    boolean failure = false;
    for (int i=0; i < expected.length; i++) {
        if (!Precision.equalsIncludingNaN(expected[i], observed[i], tolerance)) {
            failure = true;
            out.append("\n Elements at index ");
            out.append(i);
            out.append(" differ. ");
            out.append(" expected = ");
            out.append(expected[i]);
            out.append(" observed = ");
            out.append(observed[i]);
        }
    }
    if (failure) {
        Assert.fail(out.toString());
    }
}
 
Example 16
Source File: Percentile.java    From astor with GNU General Public License v2.0 5 votes vote down vote up
/**
 * Replace every occurrence of a given value with a replacement value in a
 * copied slice of array defined by array part from [begin, begin+length).
 * @param values the input array
 * @param begin start index of the array to include
 * @param length number of elements to include from begin
 * @param original the value to be replaced with
 * @param replacement the value to be used for replacement
 * @return the copy of sliced array with replaced values
 */
private static double[] replaceAndSlice(final double[] values,
                                        final int begin, final int length,
                                        final double original,
                                        final double replacement) {
    final double[] temp = copyOf(values, begin, length);
    for(int i = 0; i < length; i++) {
        temp[i] = Precision.equalsIncludingNaN(original, temp[i]) ?
                  replacement : temp[i];
    }
    return temp;
}
 
Example 17
Source File: Percentile.java    From astor with GNU General Public License v2.0 5 votes vote down vote up
/**
 * Replace every occurrence of a given value with a replacement value in a
 * copied slice of array defined by array part from [begin, begin+length).
 * @param values the input array
 * @param begin start index of the array to include
 * @param length number of elements to include from begin
 * @param original the value to be replaced with
 * @param replacement the value to be used for replacement
 * @return the copy of sliced array with replaced values
 */
private static double[] replaceAndSlice(final double[] values,
                                        final int begin, final int length,
                                        final double original,
                                        final double replacement) {
    final double[] temp = copyOf(values, begin, length);
    for(int i = 0; i < length; i++) {
        temp[i] = Precision.equalsIncludingNaN(original, temp[i]) ?
                  replacement : temp[i];
    }
    return temp;
}
 
Example 18
Source File: TestUtils.java    From astor with GNU General Public License v2.0 5 votes vote down vote up
/** verifies that two arrays are close (sup norm) */
public static void assertEquals(String msg, double[] expected, double[] observed, double tolerance) {
    StringBuilder out = new StringBuilder(msg);
    if (expected.length != observed.length) {
        out.append("\n Arrays not same length. \n");
        out.append("expected has length ");
        out.append(expected.length);
        out.append(" observed length = ");
        out.append(observed.length);
        Assert.fail(out.toString());
    }
    boolean failure = false;
    for (int i=0; i < expected.length; i++) {
        if (!Precision.equalsIncludingNaN(expected[i], observed[i], tolerance)) {
            failure = true;
            out.append("\n Elements at index ");
            out.append(i);
            out.append(" differ. ");
            out.append(" expected = ");
            out.append(expected[i]);
            out.append(" observed = ");
            out.append(observed[i]);
        }
    }
    if (failure) {
        Assert.fail(out.toString());
    }
}
 
Example 19
Source File: GradingService.java    From sakai with Educational Community License v2.0 4 votes vote down vote up
private void notifyGradebook(AssessmentGradingData data, PublishedAssessmentIfc pub) throws GradebookServiceException {
   // If the assessment is published to the gradebook, make sure to update the scores in the gradebook
   String toGradebook = pub.getEvaluationModel().getToGradeBook();

   GradebookExternalAssessmentService g = null;
   boolean integrated = IntegrationContextFactory.getInstance().isIntegrated();
   if (integrated)
   {
     g = (GradebookExternalAssessmentService) SpringBeanLocator.getInstance().
       getBean("org.sakaiproject.service.gradebook.GradebookExternalAssessmentService");
   }

   GradebookServiceHelper gbsHelper =
     IntegrationContextFactory.getInstance().getGradebookServiceHelper();

   PublishedAssessmentService publishedAssessmentService = new PublishedAssessmentService();
String currentSiteId = publishedAssessmentService.getPublishedAssessmentSiteId(pub.getPublishedAssessmentId().toString());
   if (gbsHelper.gradebookExists(GradebookFacade.getGradebookUId(currentSiteId), g)
       && toGradebook.equals(EvaluationModelIfc.TO_DEFAULT_GRADEBOOK.toString())){
       if(log.isDebugEnabled()) log.debug("Attempting to update a score in the gradebook");

   // add retry logic to resolve deadlock problem while sending grades to gradebook

   Double originalFinalScore = data.getFinalScore();
   int retryCount = PersistenceService.getInstance().getPersistenceHelper().getRetryCount();
   while (retryCount > 0){
   	try {
   		gbsHelper.updateExternalAssessmentScore(data, g);
   		retryCount = 0;
   	}
     catch (org.sakaiproject.service.gradebook.shared.AssessmentNotFoundException ante) {
   	  log.warn("problem sending grades to gradebook: {}", ante.getMessage());
         if (AssessmentIfc.RETRACT_FOR_EDIT_STATUS.equals(pub.getStatus())) {
       	  retryCount = retry(retryCount, ante, pub, true);
         }
         else {
       	  // Otherwise, do the same exeption handling as others
       	  retryCount = retry(retryCount, ante, pub, false);
         }
     }
     catch (Exception e) {
   	  retryCount = retry(retryCount, e, pub, false);
     }
   }

   // change the final score back to the original score since it may set to average score.
   // if we're deleting the last submission, the score might be null bugid 5440
   if(originalFinalScore != null && data.getFinalScore() != null && !(Precision.equalsIncludingNaN(data.getFinalScore(), originalFinalScore, 0.0001))) {
   	data.setFinalScore(originalFinalScore);
   }
   
   try {
       	Long publishedAssessmentId = data.getPublishedAssessmentId();
       	String agent = data.getAgentId();
       	String comment = data.getComments();
       	gbsHelper.updateExternalAssessmentComment(publishedAssessmentId, agent, comment, g);
   }
   catch (Exception ex) {
         log.warn("Error sending comments to gradebook: {}", ex.getMessage());
         }
   } else {
      log.debug("Not updating the gradebook.  toGradebook = {}", toGradebook);
   }
 }
 
Example 20
Source File: GradingService.java    From sakai with Educational Community License v2.0 4 votes vote down vote up
private void notifyGradebook(AssessmentGradingData data, PublishedAssessmentIfc pub) throws GradebookServiceException {
   // If the assessment is published to the gradebook, make sure to update the scores in the gradebook
   String toGradebook = pub.getEvaluationModel().getToGradeBook();

   GradebookExternalAssessmentService g = null;
   boolean integrated = IntegrationContextFactory.getInstance().isIntegrated();
   if (integrated)
   {
     g = (GradebookExternalAssessmentService) SpringBeanLocator.getInstance().
       getBean("org.sakaiproject.service.gradebook.GradebookExternalAssessmentService");
   }

   GradebookServiceHelper gbsHelper =
     IntegrationContextFactory.getInstance().getGradebookServiceHelper();

   PublishedAssessmentService publishedAssessmentService = new PublishedAssessmentService();
String currentSiteId = publishedAssessmentService.getPublishedAssessmentSiteId(pub.getPublishedAssessmentId().toString());
   if (gbsHelper.gradebookExists(GradebookFacade.getGradebookUId(currentSiteId), g)
       && toGradebook.equals(EvaluationModelIfc.TO_DEFAULT_GRADEBOOK.toString())){
       if(log.isDebugEnabled()) log.debug("Attempting to update a score in the gradebook");

   // add retry logic to resolve deadlock problem while sending grades to gradebook

   Double originalFinalScore = data.getFinalScore();
   int retryCount = PersistenceService.getInstance().getPersistenceHelper().getRetryCount();
   while (retryCount > 0){
   	try {
   		gbsHelper.updateExternalAssessmentScore(data, g);
   		retryCount = 0;
   	}
     catch (org.sakaiproject.service.gradebook.shared.AssessmentNotFoundException ante) {
   	  log.warn("problem sending grades to gradebook: {}", ante.getMessage());
         if (AssessmentIfc.RETRACT_FOR_EDIT_STATUS.equals(pub.getStatus())) {
       	  retryCount = retry(retryCount, ante, pub, true);
         }
         else {
       	  // Otherwise, do the same exeption handling as others
       	  retryCount = retry(retryCount, ante, pub, false);
         }
     }
     catch (Exception e) {
   	  retryCount = retry(retryCount, e, pub, false);
     }
   }

   // change the final score back to the original score since it may set to average score.
   // if we're deleting the last submission, the score might be null bugid 5440
   if(originalFinalScore != null && data.getFinalScore() != null && !(Precision.equalsIncludingNaN(data.getFinalScore(), originalFinalScore, 0.0001))) {
   	data.setFinalScore(originalFinalScore);
   }
   
   try {
       	Long publishedAssessmentId = data.getPublishedAssessmentId();
       	String agent = data.getAgentId();
       	String comment = data.getComments();
       	gbsHelper.updateExternalAssessmentComment(publishedAssessmentId, agent, comment, g);
   }
   catch (Exception ex) {
         log.warn("Error sending comments to gradebook: {}", ex.getMessage());
         }
   } else {
      log.debug("Not updating the gradebook.  toGradebook = {}", toGradebook);
   }
 }