Class GaussianCurveFitter.ParameterGuesser

  • Enclosing class:
    GaussianCurveFitter

    public static class GaussianCurveFitter.ParameterGuesser
    extends java.lang.Object
    Guesses the parameters norm, mean, and sigma of a Gaussian.Parametric based on the specified observed points.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private double mean
      Mean.
      private double norm
      Normalization factor.
      private double sigma
      Standard deviation.
    • Constructor Summary

      Constructors 
      Constructor Description
      ParameterGuesser​(java.util.Collection<WeightedObservedPoint> observations)
      Constructs instance with the specified observed points.
    • Field Detail

      • norm

        private final double norm
        Normalization factor.
      • mean

        private final double mean
        Mean.
      • sigma

        private final double sigma
        Standard deviation.
    • Constructor Detail

      • ParameterGuesser

        public ParameterGuesser​(java.util.Collection<WeightedObservedPoint> observations)
        Constructs instance with the specified observed points.
        Parameters:
        observations - Observed points from which to guess the parameters of the Gaussian.
        Throws:
        NullArgumentException - if observations is null.
        NumberIsTooSmallException - if there are less than 3 observations.
    • Method Detail

      • guess

        public double[] guess()
        Gets an estimation of the parameters.
        Returns:
        the guessed parameters, in the following order:
        • Normalization factor
        • Mean
        • Standard deviation
      • sortObservations

        private java.util.List<WeightedObservedPoint> sortObservations​(java.util.Collection<WeightedObservedPoint> unsorted)
        Sort the observations.
        Parameters:
        unsorted - Input observations.
        Returns:
        the input observations, sorted.
      • basicGuess

        private double[] basicGuess​(WeightedObservedPoint[] points)
        Guesses the parameters based on the specified observed points.
        Parameters:
        points - Observed points, sorted.
        Returns:
        the guessed parameters (normalization factor, mean and sigma).
      • findMaxY

        private int findMaxY​(WeightedObservedPoint[] points)
        Finds index of point in specified points with the largest Y.
        Parameters:
        points - Points to search.
        Returns:
        the index in specified points array.
      • interpolateXAtY

        private double interpolateXAtY​(WeightedObservedPoint[] points,
                                       int startIdx,
                                       int idxStep,
                                       double y)
                                throws OutOfRangeException
        Interpolates using the specified points to determine X at the specified Y.
        Parameters:
        points - Points to use for interpolation.
        startIdx - Index within points from which to start the search for interpolation bounds points.
        idxStep - Index step for searching interpolation bounds points.
        y - Y value for which X should be determined.
        Returns:
        the value of X for the specified Y.
        Throws:
        ZeroException - if idxStep is 0.
        OutOfRangeException - if specified y is not within the range of the specified points.
      • getInterpolationPointsForY

        private WeightedObservedPoint[] getInterpolationPointsForY​(WeightedObservedPoint[] points,
                                                                   int startIdx,
                                                                   int idxStep,
                                                                   double y)
                                                            throws OutOfRangeException
        Gets the two bounding interpolation points from the specified points suitable for determining X at the specified Y.
        Parameters:
        points - Points to use for interpolation.
        startIdx - Index within points from which to start search for interpolation bounds points.
        idxStep - Index step for search for interpolation bounds points.
        y - Y value for which X should be determined.
        Returns:
        the array containing two points suitable for determining X at the specified Y.
        Throws:
        ZeroException - if idxStep is 0.
        OutOfRangeException - if specified y is not within the range of the specified points.
      • isBetween

        private boolean isBetween​(double value,
                                  double boundary1,
                                  double boundary2)
        Determines whether a value is between two other values.
        Parameters:
        value - Value to test whether it is between boundary1 and boundary2.
        boundary1 - One end of the range.
        boundary2 - Other end of the range.
        Returns:
        true if value is between boundary1 and boundary2 (inclusive), false otherwise.