weka.core.neighboursearch.balltrees

## Class BallNode

- java.lang.Object
- - 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: 8034 $
  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 and 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 and 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

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and 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(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