uk.ac.starlink.ttools.plot
Class BinGrid

java.lang.Object
  extended by uk.ac.starlink.ttools.plot.BinGrid

public class BinGrid
extends Object

Stores a grid of bins which contain sums, which may be simple counts or weighted sums. This is effectively the data model for a two-dimensional possibly weighted histogram or, to put it another way, it's an image.

Since:
1 Dec 2005
Author:
Mark Taylor

Constructor Summary
BinGrid(int xsize, int ysize)
          Constructs a new grid.
 
Method Summary
 byte[] getBytes(double loCut, double hiCut, boolean log)
          Returns an array of bytes representing the values in this grid.
 double getCut(double frac)
          Returns the cut value associated with a given fractional value (between 0 and 1).
 double getMaxSum()
          Returns the largest value which exists in any of the bins.
 double getMinSum()
          Returns the smallest value which exists in any of the bins.
 int getSizeX()
          Returns the number of bins (pixels) in the X direction.
 int getSizeY()
          Returns the number of bins (pixels) in the Y direction.
 double getSum(int ix, int iy)
          Returns the sum in a given bin (value at a given pixel).
 double[] getSums()
          Returns the raw histogram data held by this grid.
 void recalculate()
          Recalculates invariants.
 void submitDatum(int ix, int iy, double weight)
          Adds a data point to this histogram.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

BinGrid

public BinGrid(int xsize,
               int ysize)
Constructs a new grid.

Parameters:
xsize - number of bins (pixels) in X direction
ysize - number of bins (pixels) in Y direction
Method Detail

getSizeX

public int getSizeX()
Returns the number of bins (pixels) in the X direction.

Returns:
x dimension

getSizeY

public int getSizeY()
Returns the number of bins (pixels) in the Y direction.

Returns:
y dimension

getSum

public double getSum(int ix,
                     int iy)
Returns the sum in a given bin (value at a given pixel).

Parameters:
ix - x coordinate
iy - y coordinate

getMaxSum

public double getMaxSum()
Returns the largest value which exists in any of the bins.

Returns:
maximum pixel value

getMinSum

public double getMinSum()
Returns the smallest value which exists in any of the bins.

Returns:
minimum pixel value

getCut

public double getCut(double frac)
Returns the cut value associated with a given fractional value (between 0 and 1). If frac=0.25 you'll get the first quartile of sum values currently in the histogram.

Parameters:
frac - fraction for which cut is required (0..1)
Returns:
value below which frac of the bins have occupancies

submitDatum

public void submitDatum(int ix,
                        int iy,
                        double weight)
Adds a data point to this histogram. The sum in the bin (ix,iy) is incremented by weight.

Parameters:
ix - X grid coordinate
iy - Y grid coordinate
weight - weight

recalculate

public void recalculate()
Recalculates invariants. This must be called if the sums arrray is modified directly.


getBytes

public byte[] getBytes(double loCut,
                       double hiCut,
                       boolean log)
Returns an array of bytes representing the values in this grid. The values are scaled to occupy the full range 0-255 or roughly so. Cut values are supplied; any bin values below loCut will get a result value of 0, any ones above hiCut will get a result value of 255. The ordering of pixels is that X values change most rapidly and Y values decrease. This is the order suitable for AWT images.

Note the values must be interpreted as unsigned 8-bit values (value = 0x000000ff & (int)getBytes()[i]).

Parameters:
loCut - lowest distinguished sum value
hiCut - highest distinguished sum value
log - true iff you want logarithmic scalling of the colours
Returns:
scaled array of unsigned byte values representing grid data

getSums

public double[] getSums()
Returns the raw histogram data held by this grid. The result is an array where each element holds the number of points which have fallen in the corresponding bin. Note the ordering is image-like, as for getBytes(double, double, boolean) - X values change most rapidly and Y values decrease.

Returns:
sum array


Copyright © 2009 Central Laboratory of the Research Councils. All Rights Reserved.