Package weka.core.neighboursearch.balltrees

# Class BallNode

java.lang.Object
weka.core.neighboursearch.balltrees.BallNode

All Implemented Interfaces:
  `Serializable`, `RevisionHandler`

public class BallNode extends Object implements Serializable, RevisionHandler
Class representing a node of a BallTree.

Version:
  $Revision: 1.2 $
Author:
  Ashraf M. Kibriya (amk14[at-the-rate]cs[dot]waikato[dot]ac[dot]nz)
See Also:
  - Serialized Form

## Field Summary

Fields
Modifier and Type
Field
Description
`int`
`m_End`
The end index of the portion of the master index array, which stores indices of the instances/points the node contains.
`BallNode`
`m_Left`
The left child of the node.
`int`
`m_NodeNumber`
The node number/id.
`int`
`m_NumInstances`
The number of instances/points in the node.
`BallNode`
`m_Right`
The right child of the node.
`int`
`m_SplitAttrib`
The attribute that splits this node (not always used).
`double`
`m_SplitVal`
The value of m_SpiltAttrib that splits this node (not always used).
`int`
`m_Start`
The start index of the portion of the master index array, which stores the indices of the instances/points the node contains.

## Constructor Summary

Constructors
Constructor
Description
`BallNode(int nodeNumber)`
Constructor.
`BallNode(int start, int end, int nodeNumber)`
Creates a new instance of BallNode.
`BallNode(int start, int end, int nodeNumber, Instance pivot, double radius)`
Creates a new instance of BallNode.

## Method Summary

Modifier and Type
Method
Description
`static Instance`
`calcCentroidPivot(int[] instList, Instances insts)`
Calculates the centroid pivot of a node.
`static Instance`
`calcCentroidPivot(int start, int end, int[] instList, Instances insts)`
Calculates the centroid pivot of a node.
`static Instance`
`calcPivot(BallNode child1, BallNode child2, Instances insts)`
Calculates the centroid pivot of a node based on its two child nodes (if merging two nodes).
`static double`
`calcRadius(int[] instList, Instances insts, Instance pivot, DistanceFunction distanceFunction)`
Calculates the radius of node.
`static double`
`calcRadius(int start, int end, int[] instList, Instances insts, Instance pivot, DistanceFunction distanceFunction)`
Calculates the radius of a node.
`static double`
`calcRadius(BallNode child1, BallNode child2, Instance pivot, DistanceFunction distanceFunction)`
Calculates the radius of a node based on its two child nodes (if merging two nodes).
`Instance`
`getPivot()`
Returns the pivot/centre of the node's ball.
`double`
`getRadius()`
Returns the radius of the node's ball.
`String`
`getRevision()`
Returns the revision string.
`boolean`
`isALeaf()`
Returns true if the node is a leaf node (if both its left and right child are null).
`int`
`numInstances()`
Returns the number of instances in the hyper-spherical region of this node.
`void`
`setPivot(Instance pivot)`
Sets the pivot/centre of this nodes ball.
`void`
`setRadius(double radius)`
Sets the radius of the node's ball.
`void`
`setStartEndIndices(int start, int end)`
Sets the the start and end index of the portion of the master index array that is assigned to this node.

### Methods inherited from class java.lang.Object

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

## Field Details

### m_Start

public int m_Start
The start index of the portion of the master index array, which stores the indices of the instances/points the node contains.

### m_End

public int m_End
The end index of the portion of the master index array, which stores indices of the instances/points the node contains.

### m_NumInstances

public int m_NumInstances
The number of instances/points in the node.

### m_NodeNumber

public int m_NodeNumber
The node number/id.

### m_SplitAttrib

public int m_SplitAttrib
The attribute that splits this node (not always used).

### m_SplitVal

public double m_SplitVal
The value of m_SpiltAttrib that splits this node (not always used).

### m_Left

public BallNode m_Left
The left child of the node.

### m_Right

public BallNode m_Right
The right child of the node.

## Constructor Details

### BallNode

public BallNode(int nodeNumber)
Constructor.

Parameters:
  `nodeNumber` - The node's number/id.

### BallNode

public BallNode(int start, int end, int nodeNumber)
Creates a new instance of BallNode.

Parameters:
  `start` - The begining index of the portion of the master index array belonging to this node.
  `end` - The end index of the portion of the master index array belonging to this node.
  `nodeNumber` - The node's number/id.

### BallNode

public BallNode(int start, int end, int nodeNumber, Instance pivot, double radius)
Creates a new instance of BallNode.

Parameters:
  `start` - The begining index of the portion of the master index array belonging to this node.
  `end` - The end index of the portion of the master index array belonging to this node.
  `nodeNumber` - The node's number/id.
  `pivot` - The pivot/centre of the node's ball.
  `radius` - The radius of the node's ball.

## Method Details

### isALeaf

public boolean isALeaf()
Returns true if the node is a leaf node (if both its left and right child are null).

Returns:
  true if the node is a leaf node.

### setStartEndIndices

public void setStartEndIndices(int start, int end)
Sets the the start and end index of the portion of the master index array that is assigned to this node.

Parameters:
  `start` - The start index of the master index array.
  `end` - The end index of the master indext array.

### setPivot

public void setPivot(Instance pivot)
Sets the pivot/centre of this nodes ball.

Parameters:
  `pivot` - The centre/pivot.

### getPivot

public Instance getPivot()
Returns the pivot/centre of the node's ball.

Returns:
  The ball pivot/centre.

### setRadius

public void setRadius(double radius)
Sets the radius of the node's ball.

Parameters:
  `radius` - The radius of the nodes ball.

### getRadius

public double getRadius()
Returns the radius of the node's ball.

Returns:
  Radius of node's ball.

### numInstances

public int numInstances()
Returns the number of instances in the hyper-spherical region of this node.

Returns:
  The number of instances in the node.

### calcCentroidPivot

public static Instance calcCentroidPivot(int[] instList, Instances insts)
Calculates the centroid pivot of a node. The node is given in the form of an indices array that contains the indices of the points inside the node.

Parameters:
  `instList` - The indices array pointing to the instances in the node.
  `insts` - The actual instances. The instList points to instances in this object.
Returns:
  The calculated centre/pivot of the node.

### calcCentroidPivot

public static Instance calcCentroidPivot(int start, int end, int[] instList, Instances insts)
Calculates the centroid pivot of a node. The node is given in the form of the portion of an indices array that contains the indices of the points inside the node.

Parameters:
  `start` - The start index marking the start of the portion belonging to the node.
  `end` - The end index marking the end of the portion in the indices array that belongs to the node.
  `instList` - The indices array pointing to the instances in the node.
  `insts` - The actual instances. The instList points to instances in this object.
Returns:
  The calculated centre/pivot of the node.

### calcRadius

public static double calcRadius(int[] instList, Instances insts, Instance pivot, DistanceFunction distanceFunction) throws Exception
Calculates the radius of node.

Parameters:
  `instList` - The indices array containing the indices of the instances inside the node.
  `insts` - The actual instances object. instList points to instances in this object.
  `pivot` - The centre/pivot of the node.
  `distanceFunction` - The distance fuction to use to calculate the radius.
Returns:
  The radius of the node.
Throws:
  `Exception` - If there is some problem in calculating the radius.

### calcRadius

public static double calcRadius(int start, int end, int[] instList, Instances insts, Instance pivot, DistanceFunction distanceFunction) throws Exception
Calculates the radius of a node.

Parameters:
  `start` - The start index of the portion in indices array that belongs to the node.
  `end` - The end index of the portion in indices array that belongs to the node.
  `instList` - The indices array holding indices of instances.
  `insts` - The actual instances. instList points to instances in this object.
  `pivot` - The centre/pivot of the node.
  `distanceFunction` - The distance function to use to calculate the radius.
Returns:
  The radius of the node.
Throws:
  `Exception` - If there is some problem calculating the radius.

### calcPivot

public static Instance calcPivot(BallNode child1, BallNode child2, Instances insts) throws Exception
Calculates the centroid pivot of a node based on its two child nodes (if merging two nodes).

Parameters:
  `child1` - The first child of the node.
  `child2` - The second child of the node.
  `insts` - The set of instances on which the tree is (or is to be) built.
Returns:
  The centre/pivot of the node.
Throws:
  `Exception` - If there is some problem calculating the pivot.

### calcRadius

public static double calcRadius(BallNode child1, BallNode child2, Instance pivot, DistanceFunction distanceFunction) throws Exception
Calculates the radius of a node based on its two child nodes (if merging two nodes).

Parameters:
  `child1` - The first child of the node.
  `child2` - The second child of the node.
  `pivot` - The centre/pivot of the node.
  `distanceFunction` - The distance function to use to calculate the radius
Returns:
  The radius of the node.
Throws:
  `Exception` - If there is some problem in calculating the radius.

### getRevision

public String getRevision()
Returns the revision string.

Specified by:
  `getRevision` in interface `RevisionHandler`
Returns:
  the revision