LICENSE
Copyright [1999-2015] Wellcome Trust Sanger Institute and the EMBL-European Bioinformatics Institute Copyright [2016-2024] EMBL-European Bioinformatics Institute
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
CONTACT
Please email comments or questions to the public Ensembl
developers list at <http://lists.ensembl.org/mailman/listinfo/dev>.
Questions may also be sent to the Ensembl help desk at
<http://www.ensembl.org/Help/Contact>.
NAME
Bio::EnsEMBL::Utils::Tree::Interval::Mutable::Node
DESCRIPTION
Represents a node in the mutable interval tree pure perl implementation.
METHODS
METHODS
new
Arg [1] : Bio::EnsEMBL::Utils::Tree::Interval::Mutable::PP
The tree to which the node belongs
Arg [2] : Bio::EnsEMBL::Utils::Interval
Description : Constructor. Creates a new mutable tree instance node
associated with the given interval
Returntype : Bio::EnsEMBL::Utils::Tree::Interval::Mutable::Node
Exceptions : none
Caller : general
tree
Arg [] : none
Example : my $tree = $node->root;
Description : Returns the tree to which the node belongs
Returntype : Bio::EnsEMBL::Utils::Tree::Interval::Mutable::PP
Exceptions : none
Caller : general
key
Arg [] : none
Example : my $key = $node->key;
Description : Returns the key associated with the node
Returntype : scalar
Exceptions : none
Caller : general
intervals
Arg [] : none
Example : my $intervals = $node->intervals;
Description : Returns the intervals associated with the node
Returntype : Arrayref of Bio::EnsEMBL::Utils::Interval
Exceptions : none
Caller : general
add_interval
Arg [] : none
Description : Add an interval to the node's set of intervals
Returntype : none
Exceptions : none
Caller : general
parent
Arg [] : none
Description : Return the parent of the node in the tree
Returntype : none
Exceptions : none
Caller : general
height
Arg [] : none
Description : Return the height of the node
Returntype : scalar, positive or 0
Exceptions : none
Caller : general
left
Arg [] : none
Description : Return the node's left child
Returntype : Bio::EnsEMBL::Utils::Tree::Interval::Mutable::Node
Exceptions : none
Caller : general
right
Arg [] : none
Description : Return the node's right child
Returntype : Bio::EnsEMBL::Utils::Tree::Interval::Mutable::Node
Exceptions : none
Caller : general
search
Arg [1] : Bio::EnsEMBL::Utils::Interval
The interval to search for overlaps in the tree
Description : Search the node and its successors for overlapping
intervals with the query
Returntype : Arrayref of Bio::EnsEMBL::Utils::Interval
Exceptions : none
Caller : general
search_by_key
Arg [1] : scalar, $key
The key to search the node for
Description : Searches for a node by a 'key' value
Returntype : Bio::EnsEMBL::Utils::Tree::Interval::Mutable::Node
Exceptions : none
Caller : general
insert
Arg [1] : Bio::EnsEMBL::Utils::Interval
The interval to insert
Description : Insert an interval in the node or in its successors
Returntype : none
Exceptions : none
Caller : general
remove
Arg [1] : Bio::EnsEMBL::Utils::Tree::Interval::Mutable::Node
The node to remove from the tree
Description : Remove a node from the tree
Returntype : none
Exceptions : none
Caller : general
PRIVATE METHODS
_height
Not a method since code could invoke method on undefined instances, e.g. _rebalance
_lowest
Returns the 'smallest' node in the tree
_rebalance
Rebalances the tree if the height value between two nodes of the same parent is greater than two. There are 4 cases that can happen:
Left-Left case: z y / \ / \ y T4 Right Rotate (z) x z / \ - - - - - - - - -> / \ / \ x T3 T1 T2 T3 T4 / \ T1 T2
Left-Right case: z z x / \ / \ / \ y T4 Left Rotate (y) x T4 Right Rotate(z) y z / \ - - - - - - - - -> / \ - - - - - - - -> / \ / \ T1 x y T3 T1 T2 T3 T4 / \ / \ T2 T3 T1 T2
Right-Right case: z y / \ / \ T1 y Left Rotate(z) z x / \ - - - - - - - -> / \ / \ T2 x T1 T2 T3 T4 / \ T3 T4
Right-Left case: z z x / \ / \ / \ T1 y Right Rotate (y) T1 x Left Rotate(z) z y / \ - - - - - - - - -> / \ - - - - - - - -> / \ / \ x T4 T2 y T1 T2 T3 T4 / \ / \ T2 T3 T3 T4