NAME
CracTools::Interval::Query - Store and query genomics intervals.
VERSION
version 1.251
SYNOPSIS
my $interval_query = CracTools::Interval::Query->new();
$interval_query->addInterval("chr1",1,12,1,"geneA");
$interval_query->addInterval("chr2",5,14,1,"geneB");
@results = @{$intervalQuery->fetchByRegion("chr1",12,15,1)};
foreach my $gene (@results) {
print STDERR "Found $gene overlapping gene\n";
}
DESCRIPTION
This module stores and query genomic intervals associated with variables. It is based on the interval tree datastructure provided by Set::IntervalTree.
CracTools::Interval::Query query methods all returns a Array reference with all the scalar associated to the retrieved intervals. But it also return an ArrayRef with the intervals (start,end) themself, see "_processReturnValues" for more informations.
All CracTools::Interval::Query method can be used without the strand argument (or undef). In this case, we will only consider the forward strand.
This class can be easily overloaded with "_processReturnValue" hook method.
SEE ALSO
You may want to check CracTools::Interval::Query::File that is an implementation of CracTools::Interval::Query that directly retrieve intervals from standard files (BED,SAM,GTF,GFF) and returns the lines associated to the queried intervals.
METHODS
new
Example : my $intervalQuery = CracTools::Interval::Query->new();
Description : Create a new CracTools::Interval::Query object
ReturnType : CracTools::Interval::Query
Exceptions : none
addInterval
Arg [1] : String - Chromosome
Arg [2] : Integer - Start position
Arg [3] : Integer - End position
Arg [4] : (Optional) Integer - Strand
Arg [5] : Scalar - The value to be hold by this interval. It can
be anything, an Integer, a String, a hash
reference, an array reference, ...
Example : $interval_query->addInterval("chr1",12,30,-1,"geneA")
Description : Add a new genomic interval, with an associated value to the interval_query.
fetchByRegion
Arg [1] : String - Chromosome
Arg [2] : Integer - Start position
Arg [3] : Integer - End position
Arg [4] : (Optional) Integer - Strand
Arg [5] : (Optional) Boolean - Windowed query, only return intervals which
are completely contained in the queried region.
Example : my @values = $IntervalQuery->fetchByRegion('1',298345,309209,'+');
Description : Retrieves intervals that belong to the region.
ReturnType : ArrayRef of scalar
fetchByLocation
Arg [1] : String - Chromosome
Arg [2] : Integer - Positon
Arg [3] : (Optional) Integer - Strand
Example : my @values = $intervalQuery->fetchByLocation('1',298345,'+');
Description : Retrieves lines that overlapped the given location.
ReturnType : ArrayRef of Scalar
fetchNearestDown
Arg [1] : String - Chromosome
Arg [2] : Integer - Position
Arg [3] : (Optional) Integer - Strand
Example : my @values = $interval_query->fetchNearestDown('1',298345,'+');
Description : Search for the closest interval in downstream that does not contain the query
and returns the line associated to this interval.
ReturnType : Scalar
fetchNearestUp
Arg [1] : String - Chromosome
Arg [2] : Integer - Position
Arg [3] : (Optional) Integer - Strand
Example : my @values = $interval_query->fetchNearestDown('1',298345,'+');
Description : Search for the closest interval in upstream that does not contain the query
and returns the line associated to this interval.
ReturnType : Scalar
fetchAllNearestDown
Arg [1] : String - Chromosome
Arg [2] : Integer - Position
Arg [3] : (Optional) Integer - Strand
Example : my @values = $interval_query->fetchNearestDown('1',298345,'+');
Description : Search for all the closest interval in downstream that does not contain the query
and returns the line associated to this interval.
ReturnType : ArrayRef of Scalar
fetchAllNearestUp
Arg [1] : String - Chromosome
Arg [2] : Integer - Position
Arg [3] : (Optional) Integer - Strand
Example : my @values = $interval_query->fetchNearestDown('1',298345,'+');
Description : Search for all the closest interval in upstream that does not contain the query
and returns the line associated to this interval.
ReturnType : ArrayRef of Scalar
PRIVATE METHODS
_getIntervalTree
Arg [1] : String - Chromosome
Arg [2] : (Optional) Integer - Strand
Description : Return the Set::IntervalTree reference for the chromosome and strand (Default : 1)
ReturnType : Set::IntervalTree
_addIntervalTree
Arg [1] : String - Chromosome
Arg [2] : (Optional) Integer - Strand
Arg [3] : Set::IntervalTree - Interval tree
Description : Add an Set::IntervalTree object for a specific ("chr","strand") pair.
Strand is set to 1 if none (or undef) is provided
_getIntervalTreeKey
Arg [1] : String - Chromosome
Arg [2] : (Optional) Integer - Strand
Description : Static method that return and unique key for the ("chr","strand") pair passed in arguements.
Strand is set to 1 if none (or undef) is provided
ReturnType : String
_processReturnValues
Arg [1] : ArrayRef - Values returned by Set::IntervalTree
Example : # Either get only the values holded by the retrieved intervals
my @values = @{$interval_query->_processReturnValues($interval_results)};
# Or also get the intervals themselves
my ($intervals,$values) = $interval_query->_processReturnValues($interval_results);
Description : Call _processReturnValue() method on each values of the array ref passed in parameters.
ReturnType : Array(ArrayRef({start => .., end => ..}),ArrayRef(Scalar))
(
[ { start => 12, end => 20 }, ... ],
[ "geneA", ...]
)
_processReturnValue
Arg [1] : Scalar - Value holded by an interval
Description : This method process the values contains by each intervals that
match a query before returning it. It is designed to be
overloaded by doughter classes.
ReturnType : Scalar (ArrayRef,HashRef,String,Integer...)
AUTHORS
Nicolas PHILIPPE <nphilippe.research@gmail.com>
Jérôme AUDOUX <jaudoux@cpan.org>
Sacha BEAUMEUNIER <sacha.beaumeunier@gmail.com>
COPYRIGHT AND LICENSE
This software is Copyright (c) 2017 by IRMB/INSERM (Institute for Regenerative Medecine and Biotherapy / Institut National de la Santé et de la Recherche Médicale) and AxLR/SATT (Lanquedoc Roussilon / Societe d'Acceleration de Transfert de Technologie).
This is free software, licensed under:
The GNU Affero General Public License, Version 3, November 2007