Bio-VertRes-Config
view release on metacpan or search on metacpan
lib/Bio/VertRes/Config/References.pm view on Meta::CPAN
package Bio::VertRes::Config::References;
# ABSTRACT: A class for translating between a reference name and the location on disk
use Moose;
use Bio::VertRes::Config::Types;
use Bio::VertRes::Config::Exceptions;
has 'reference_lookup_file' => ( is => 'ro', isa => 'Bio::VertRes::Config::File', required => 1 );
has '_reference_names_to_files' => ( is => 'ro', isa => 'HashRef', lazy => 1, builder => '_build__reference_names_to_files');
has 'available_references' => ( is => 'ro', isa => 'ArrayRef', lazy => 1, builder => '_build_available_references');
sub _build__reference_names_to_files
{
my ($self) = @_;
my %reference_names_to_files;
open(my $index_file, $self->reference_lookup_file) or Bio::VertRes::Config::Exceptions::FileDoesntExist->throw(error => 'Couldnt open file '.$self->reference_lookup_file);
while(<$index_file>)
{
chomp;
my $line = $_;
my @reference_details = split(/\t/, $line);
$reference_names_to_files{$reference_details[0]} = $reference_details[1];
}
return \%reference_names_to_files;
}
sub _build_available_references
{
my ($self) = @_;
my @references = sort(keys %{$self->_reference_names_to_files});
return \@references;
}
sub search_for_references
{
my ($self, $query) = @_;
$query =~ s!\W!.+!g;
my @search_results = grep { /$query/i } @{$self->available_references};
return \@search_results;
}
sub is_reference_name_valid
{
my ($self, $query) = @_;
return 1 if(defined($self->_reference_names_to_files->{$query}));
return 0;
}
sub invalid_reference_message
{
my ($self, $query) = @_;
my $output_message ="Invalid reference specified.\n";
my $search_results = $self->search_for_references($query);
if(@{$search_results} > 0)
{
$output_message .= "Did you mean:\n\n";
$output_message .= join(
"\n",
@{ $search_results
}
);
}
return $output_message;
}
sub get_reference_location_on_disk
{
my ($self, $reference_name) = @_;
$self->_reference_names_to_files->{$reference_name};
( run in 0.908 second using v1.01-cache-2.11-cpan-39bf76dae61 )