Bio-HTS
view release on metacpan or search on metacpan
bin/performance_test.pl view on Meta::CPAN
#!/usr/bin/env perl
use strict;
use warnings;
use Bio::HTS::Tabix;
use Data::Dumper;
use feature qw(say);
use Try::Tiny;
use Benchmark qw/cmpthese timethese/;
use Sapientia::Util::Bed;
die "File " . $ARGV[0] . " doesn't exist" unless -e $ARGV[0];
my @chroms = (1..22, 'X', 'Y', 'M');
my $num_lookups = 20;
my $t = Bio::HTS::Tabix->new( filename => $ARGV[0] );
sub tabix_perl {
# for my $i ( 0 .. $num_lookups ) {
#number between 100000 and 4000000
my $start = int(rand(4000000)) + 100000;
my $end = $start + 5;
my $chrom = $chroms[int(rand(scalar @chroms))];
#say "Fetching region $chrom:$start-$end... ";
#my $iter = $t->query("$chrom:$start-$end");
get_region($chrom, $start, $end);
#say "Found " . scalar( get_region($chrom, $start, $end) ) . " entries";
#say "\t$_" for get_region($chrom, $start, $end);
# }
}
sub get_region {
my ( $chrom, $start, $end ) = @_;
my $iter = $t->query("$chrom:$start-$end");
my @rows;
try {
while ( my $line = $iter->next ) {
push @rows, _next($line);
}
}
catch {
say "No reads for region, probably";
};
return @rows;
}
my $b = Sapientia::Util::Bed->new( bed_file => $ARGV[0], silent => 1 );
sub tabix_cmd {
# for my $i ( 0 .. $num_lookups ) {
#number between 100000 and 4000000
my $start = int(rand(4000000)) + 100000;
my $end = $start + 5;
my $chrom = $chroms[int(rand(scalar @chroms))];
#print "Fetching region $chrom:$start-$end... ";
#say "Found " . scalar($b->get_region("$chrom:$start-$end"));
$b->get_region("$chrom:$start-$end");
# }
}
#rip from Util::Bed for fair comparison
( run in 3.647 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )