CracTools::Interval::Query - Store and query genomics intervals.
version 1.251
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"; }
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.
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.
Example : my $intervalQuery = CracTools::Interval::Query->new(); Description : Create a new CracTools::Interval::Query object ReturnType : CracTools::Interval::Query Exceptions : none
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.
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
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
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
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
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
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
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
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
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
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", ...] )
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...)
Nicolas PHILIPPE <nphilippe.research@gmail.com>
Jérôme AUDOUX <jaudoux@cpan.org>
Sacha BEAUMEUNIER <sacha.beaumeunier@gmail.com>
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
To install CracTools, copy and paste the appropriate command in to your terminal.
cpanm
cpanm CracTools
CPAN shell
perl -MCPAN -e shell install CracTools
For more information on module installation, please visit the detailed CPAN module installation guide.