The Evolution Tree is user control for the visualisation of evolution. The evolution pathway is displayed by a TreeViewcontrol. By selecting a node of the TreeView (a point in the evolution pathway), more information on that point is retrieved and displayed.

Mor information on the internal calculations in the EvolutionTree control is provided in the section "Internal calculations"; the calculation of the evolution tree proper is described in the "Evolution Tree" section of the Miner.


getMiner(): Miner
setMiner(ByRef NewMiner: Miner): void
refresh(): void

Programming Language

  • Microsoft Visual Basic .Net.



Public Sub New()

Instantiates a new Evolution Tree.


  • None.


  • The EvolutionTree control can be handled like any other user control. The constructor is automatically called when the control is placed onto a form in the designer.
  • The EvolutionTree receives its data from a Miner object which is set by reference using the setMiner() function.


This class does not implement an interface.


The class does not provide enumerations.


The EvolutionTree does not have properties of its own. Only the properties inherited from System.Windows.Forms.UserControl are available.


Apart from the methods inherited from System.Windows.Forms.UserControl , the follow methods were implemented:

Public Sub getMiner() As Miner

Returns the Miner object associated with the EvolutionTree.

Return Value

  • the Miner object associated with the EvolutionTree.


  • None.


  • The Miner is set using the setMiner() function. Because it is passed by reference for performance reasons, the Miner cannot be implemented as a property.

Public Sub setMiner(ByRef NewMiner As Miner)

Associates a  Miner object with the EvolutionTree.

Return Value

  • None.


  • NewMiner: a reference to the Miner to be associated with the EvolutionTree.


  • The Miner cannot be implemented as a property because it is passed by reference for performance reasons.
  • The Miner can be retrieved using the getMiner function.

Public Overrides Sub refresh()

Refreshes the control. The text field showing information on the selected node is cleared. The treenodes of the evolution tree are replaced with the tree nodes retrieved from the Miner. All nodes of the TreeView control are expanded.

Return Value

  • None.


  • None.


  • This function is called when the EvolutionTree is to be displayed.

Interaction with other classes

Classes using EvolutionTree

The EvolutionTree class is a top level class and not used by other classes of the Mining library.

Classes used by EvolutionTree

The EvolutionTree relies on the data supplied via the Miner object.

Interal Calculations

General Use

If you want to use the EvolutionTree in your project, the steps will typically be:

Node Data

When the user clicks onto a node of the TreeView control, the EvolutionTree retrieves further information on that node and displays it in the text field.

The TreeView.AfterSelect handler retrieves the FullPath and Text properties from the TreeView control. The value of the FullPath property is then passed into the non-public function Miner.calculateNodeData which returns the number of cases containing all events of the node, the number of cases containing all events of the parent node, the number of cases with all events expected at this node in case of independence from the parent node, and the signed chi-square value for the dependence.

The number of cases for a node are counted in the private calculateSupportForNode function of the Miner object. The dependence of the event shown in the last node from its parent is calculated relative to the sub-population of the grand-parent of that node. The signed chi-square value is used as a parameter of dependence.

By reshuffling the elements of teh path into alternative pathways and checking those pathways for existence, alternative or concurrent ways of evolution are determined.