RandomJungle::Tree::Node - A simple representation of a node in a RandomJungle::Tree
Version 0.02
RandomJungle::Tree::Node is a simple representation of a node in a RandomJungle::Tree. This class provides access to data about a node. The constructor is not intended to be called outside of RandomJungle::Tree.
use RandomJungle::Tree::Node; my $node = RandomJungle::Tree::Node->new( vector_index => $i, node_data => $href ) or die $RandomJungle::Tree::Node::ERROR; my $bool = $node->is_terminal; my $predicted_pheno = $node->get_terminal_value || warn $node->err_str; my $variable_i = $node->get_variable_index || warn $node->err_str; my $vector_i = $node->get_vector_index; my $vector_i = $node->get_vector_index_of_parent || warn $node->err_str; # Returns the index of the next node based on a genotype value ( 0, 1, 2 ) my $vector_i = $node->get_vector_index_for_genotype( $genotype ) or warn $node->err_str; # Error handling $node->set_err( 'Something went boom' ); my $msg = $node->err_str; my $trace = $node->err_trace;
Creates and returns a new RandomJungle::Tree::Node object:
my $node = RandomJungle::Tree::Node->new( vector_index => $i, node_data => $href ) or die $RandomJungle::Tree::Node::ERROR;
Both parameters are required: vector_index is the index of the node in the varID/values/branches vector (see XML file) node_data is an href from a RandomJungle::Tree object (from the rj_tree array within the object)
This method sets $ERROR and returns undef on failure.
Note: This method is not intended to be called outside of RandomJungle::Tree, as the interface and the structure of the node_data $href is not guaranteed to be stable.
Returns 1 or 0, depending on whether or not the node is a terminal node, respectively.
my $bool = $node->is_terminal;
Returns the index of the variable (from the RAW file) to be tested in this node. Note this is not the variable label.
my $variable_i = $node->get_variable_index || warn $node->err_str;
Sets err_str and returns undef if the node is a terminal node.
Returns the terminal value (predicted phenotype) of the node, if it is a terminal node.
my $predicted_pheno = $node->get_terminal_value || warn $node->err_str;
Sets err_str and returns undef if the node is not a terminal node.
Returns the index of the node in the varID/values/branches vector (see XML file).
my $vector_i = $node->get_vector_index;
Returns the index of the parent node in the varID/values/branches vector (see XML file).
my $vector_i = $node->get_vector_index_of_parent || warn $node->err_str;
Sets err_str and returns undef if the node is the root of the tree (index 0).
Takes as input a genotype value (valid values are 0, 1, 2) corresponding to the variable to be tested in this node (see get_variable_index) and returns the vector index of the next node in the tree, based on the genotype value.
my $vector_i = $node->get_vector_index_for_genotype( $genotype ) or warn $node->err_str;
Sets err_str and returns undef if the node is a terminal node or if the genotype is invalid.
Sets the error message (provided as a parameter) and creates a stack trace:
$tree->set_err( 'Something went boom' );
Returns the last error message that was set:
my $msg = $tree->err_str;
Returns a backtrace for the last error that was encountered:
my $trace = $tree->err_trace;
I considered implementing this as a subclass of Tree::DAG_Node but decided there was too much overhead given the current requirements. Specifically, DAG_Node requires the associations between nodes to be built within the nodes themselves, which is not consistent with the current design of RandomJungle::Tree (it contains information about the structure of the tree and relationships between the nodes, and each node is independent).
A lot of methods could be added to facilitate classification and/or traversal, but that's not the point of this class, which is intended to simplify getting data about a node by wrapping the data structure of a node within RandomJungle::Tree.
RandomJungle::Jungle, RandomJungle::Tree, RandomJungle::Tree::Node, RandomJungle::XML, RandomJungle::OOB, RandomJungle::RAW, RandomJungle::DB, RandomJungle::Classification_DB
Robert R. Freimuth
Copyright (c) 2011 Mayo Foundation for Medical Education and Research. All rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
The full text of the license can be found in the LICENSE file included with this module.
To install RandomJungle::Tree, copy and paste the appropriate command in to your terminal.
cpanm
cpanm RandomJungle::Tree
CPAN shell
perl -MCPAN -e shell install RandomJungle::Tree
For more information on module installation, please visit the detailed CPAN module installation guide.