DETECTER
NodesBlock
| No package variables defined. | 
|  my $nodes_block = new NodesBlock();$nodes_block->parse_file('ABC.Redo.CFTRsubtree.Crop.txt');
 
 | 
|  NodesBlock parses the PAML input and stores all the data as nodes and the site objects.  Refer to Node and Site object for more details.
 
 | 
Methods description
 Title    : add_node
 Usage    : $nodes_block_obj->add_node()
 Function : adds node object to the nodes array
 Returns  : none
 Argument : $node_obj
 Title    : delete_node
 Usage    : $nodes_block_obj->delete_node
 Function : undefines the node object in the nodes array. This can be 
            used to remove large amounts of node data in memory.
 Returns  : none
 Argument : position of node object in the nodes array
 Title    : get_node
 Usage    : $nodes_block_obj->get_node()
 Function : get the node object from the nodes array
 Returns  : $node_obj
 Argument : position of node object in the nodes array
 Title    : get_numb_of_nodes
 Usage    : $no_of_nodes = $node_blocks_obj->get_number_of_nodes
 Function : returns the number of nodes stored in the nodes_block_obj
 Returns  : number of nodes
 Argument : none
 Title    : new
 Usage    : $nodes_block_obj = new NodesBlock()
 Function : creates new object for storing NodesBlock data
 Returns  : NodesBlock Object
 Argument : none
 Title    : Parses the Input (PAML) File 
 Usage    : my $nodes_block = new NodesBlock($file_name);
 Function : creates a new NodesBlock object by parsing files
 Returns  : NodesBlock object
 Argument : $file_name
Methods code
sub add_node
 {	my $class = shift;
	my $node  = shift;
	push(@{$class->{_nodes_array}},$node);}
sub delete_node
 {	my $class = shift;
	$class->{_nodes_array}->[$_[0]] = undef;}
sub get_node
 {	my $class = shift;
	return $class->{_nodes_array}->[$_[0]];}
sub get_numb_of_nodes
 {	my $class = shift;
	my $numbOfnodes = @{$class->{_nodes_array}};
	return $numbOfnodes;}
sub new
 {
	my $class = shift;
	my $data  = {
		'_nodes_array' => []
	};
	bless ($data,$class);
	return $data;}
sub parse_file
 {	my $class     = shift;
	my $file_name = shift;
	my ($freq,$line,$data);
	open (IF, $file_name) or die $!;
	$line = <IF>;
	my $node;
	my $site_id;
	while ($line !~ /Prob/) { $line = <IF> }
	while ($line = <IF>) {
		$line =~ s/\\par//;		##get rid of all the /par's
		chomp $line;
		$line =~ s/^\s*//g;
		if ( $line =~ /^Prob/ ) {
			print "$line\n";
			$class->add_node($node) if (defined($node));  ### Adding nodes to the NodesBlock
			##last if $count++ == 2;
			$node = new Node();
			(my $node_no = $line) =~s/[^\d]//g;
			$node->set_node_no($node_no);
			$line = <IF>; $line = <IF>; $line = <IF>;
		}
		elsif ($line =~ /^\d+/) {
			($header, $footer) = split(/:/, $line);
			$header =~s/^\s*//g;
			($site_id, $freq, $data) = split(/\s+/,$header);
			$site_id = sprintf("%04d",$site_id);
			my $site_obj = new Site();
			$site_obj->set_site($site_id,$data,$footer);
			$node->add_site($site_obj);  ## Sites are added to the node
		}
	}}
General documentation