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::Immutable
SYNOPSIS
# define a set of intervals to be added to the tree
my $intervals = [ Bio::EnsEMBL::Utils::Interval->new(121626874, 122092717),
Bio::EnsEMBL::Utils::Interval->new(121637917, 121658918),
Bio::EnsEMBL::Utils::Interval->new(122096077, 124088369) ];
# initialise the tree with the above intervals
my $tree = Bio::EnsEMBL::Utils::Tree::Interval::Immutable->new($intervals);
# point query
my $results = $tree->query(121779004);
if (scalar @$results) {
print "Intervals contain 121779004\n";
}
# same query, but use interval query
my $results = $tree->query(121779004, 121779004);
if (scalar @$results) {
print "Found containing interval: [", $result->[0]->start, ', ', $result->[0]->end, "\n";
}
DESCRIPTION
An implementation of an immutable interval tree. Immutable means the tree is initialised with a fixed set of intervals at creation time. Intervals cannot be added to or removed from the tree during its life cycle.
Implementation heavily inspired by https://github.com/tylerkahn/intervaltree-python
This implementation does not support Intervals having a start > end - i.e. intervals spanning the origin of a circular chromosome.
METHODS
new
Arg [1] : Arrayref of Bio::EnsEMBL::Utils::Interval instances
Example : my $tree = Bio::EnsEMBL::Utils::Tree::Immutable([ $i1, $i2, $i3 ]);
Description : Constructor. Creates a new immutable tree instance
Returntype : Bio::EnsEMBL::Utils::Tree::Interval::Immutable
Exceptions : none
Caller : general
root
Arg [] : none
Example : my $root = $tree->root();
Description : Return the tree top node
Returntype : Bio::EnsEMBL::Utils::Tree::Interval::Immutable::Node
Exceptions : none
Caller : general
query
Arg [1] : scalar, $start
Where the query interval begins
Arg [2] : (optional) scalar, $end
Where the query interval ends
Example : my $results = $tree->query(121626874, 122092717);
Description : Query the tree if its intervals overlap the interval whose start
and end points are specified by the argument list.
If end is not specified, it is assumed to be the same as start
so effectively making a point query.
Returntype : An arrayref of Bio::EnsEMBL::Utils::Interval instances
Exceptions : none
Caller : general