weka.core.neighboursearch.balltrees
Class BallNode

java.lang.Object
  extended by weka.core.neighboursearch.balltrees.BallNode
All Implemented Interfaces:
java.io.Serializable, RevisionHandler

public class BallNode
extends java.lang.Object
implements java.io.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
 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
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
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(BallNode child1, BallNode child2, Instance pivot, DistanceFunction distanceFunction)
          Calculates the radius 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.
 Instance getPivot()
          Returns the pivot/centre of the node's ball.
 double getRadius()
          Returns the radius of the node's ball.
 java.lang.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 Detail

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 Detail

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 Detail

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 java.lang.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:
java.lang.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 java.lang.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:
java.lang.Exception - If there is some problem calculating the radius.

calcPivot

public static Instance calcPivot(BallNode child1,
                                 BallNode child2,
                                 Instances insts)
                          throws java.lang.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:
java.lang.Exception - If there is some problem calculating the pivot.

calcRadius

public static double calcRadius(BallNode child1,
                                BallNode child2,
                                Instance pivot,
                                DistanceFunction distanceFunction)
                         throws java.lang.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:
java.lang.Exception - If there is some problem in calculating the radius.

getRevision

public java.lang.String getRevision()
Returns the revision string.

Specified by:
getRevision in interface RevisionHandler
Returns:
the revision