# Class SortQuantiler

java.lang.Object
uk.ac.starlink.ttools.filter.SortQuantiler

All Implemented Interfaces:
  `Quantiler`

public class SortQuantiler extends Object implements Quantiler
Quantiler that retains all data samples, sorts them when ready, and uses the sorted array to answer questions about quantiles. This is exact, but consumes approximately 8 bytes per sample, so not suited for unlimited sized datasets.

Since:
  3 Dec 2020
Author:
  Mark Taylor

## Field Summary

Fields
Modifier and Type
Field
Description
`static final int`
`DFLT_BLOCKSIZE`
Default block size.

## Constructor Summary

Constructors
Constructor
Description
`SortQuantiler()`
Constructor with default block size.
`SortQuantiler(int blocksize)`
Constructor with supplied block size.

## Method Summary

Modifier and Type
Method
Description
`void`
`acceptDatum(double value)`
Accepts a value to accumulate for quantile calculations.
`void`
`addQuantiler(Quantiler o)`
Merges the state of another compatible accumulator into this one; the effect is as if all the `Quantiler.acceptDatum(double)` calls that were made on `other` had been made on this one.
`double`
`getValueAtQuantile(double quantile)`
Returns the value at a given quantile.
`void`
`ready()`
Call after all data has been accumulated and before quantiles are to be calculated.

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### DFLT_BLOCKSIZE

public static final int DFLT_BLOCKSIZE
Default block size.

See Also:
  - Constant Field Values

## Constructor Details

### SortQuantiler

public SortQuantiler()
Constructor with default block size.

### SortQuantiler

public SortQuantiler(int blocksize)
Constructor with supplied block size.

Parameters:
  `blocksize` - tuning parameter, block size in bytes

## Method Details

### acceptDatum

public void acceptDatum(double value)
Description copied from interface: `Quantiler`
Accepts a value to accumulate for quantile calculations. NaN values are ignored.

Specified by:
  `acceptDatum` in interface `Quantiler`
Parameters:
  `value` - value to accumulate

### addQuantiler

public void addQuantiler(Quantiler o)
Description copied from interface: `Quantiler`
Merges the state of another compatible accumulator into this one; the effect is as if all the `Quantiler.acceptDatum(double)` calls that were made on `other` had been made on this one.

Specified by:
  `addQuantiler` in interface `Quantiler`
Parameters:
  `o` - compatible quantiler to merge with this

### ready

public void ready()
Description copied from interface: `Quantiler`
Call after all data has been accumulated and before quantiles are to be calculated.

Specified by:
  `ready` in interface `Quantiler`

### getValueAtQuantile

public double getValueAtQuantile(double quantile)
Description copied from interface: `Quantiler`
Returns the value at a given quantile.

Specified by:
  `getValueAtQuantile` in interface `Quantiler`
Parameters:
  `quantile` - value in the range 0..1
Returns:
  value at quantile, or NaN if no data