Mercurial > repos > cpt > cpt_psm_plotter
diff lib/CPT/Bio/Dbxref.pm @ 1:8691c1c61a8e draft default tip
planemo upload commit 94b0cd1fff0826c6db3e7dc0c91c0c5a8be8bb0c
author | cpt |
---|---|
date | Mon, 05 Jun 2023 02:48:47 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/CPT/Bio/Dbxref.pm Mon Jun 05 02:48:47 2023 +0000 @@ -0,0 +1,78 @@ +package CPT::Bio::Dbxref; +use Moose; +use autodie; +use YAML; +use File::ShareDir; +use File::Spec qw/catfile/; + +has 'regex_map' => ( is => 'rw', isa => 'HashRef'); +has 'initialized' => ( is => 'rw', isa => 'Int', default => 0); + +sub init { + my ($self) = @_; + # Locate file + my $data_dir = File::ShareDir::dist_dir('libCPT'); + my $dbxref_data = File::Spec->catfile($data_dir, 'dbxref.yaml'); + # Parse + $self->regex_map(YAML::LoadFile($dbxref_data)); + $self->initialized(1); +} + +sub get_prefix { + my ($self, $dbxref) = @_; + if(!$self->initialized()){ + $self->init(); + } + + my @hits; + my %map = %{$self->regex_map()}; + # Search through regex database + foreach my $db(keys(%map)){ + if(defined($map{$db}{local_id_syntax})){ + my $ref = $map{$db}{local_id_syntax}; + if(ref($ref) eq 'ARRAY'){ + foreach my $regi(@{$ref}){ + if($dbxref =~ /$regi/){ + push(@hits, $map{$db}{abbreviation}); + } + } + } + if($dbxref =~ /$ref/){ + push(@hits, $map{$db}{abbreviation}); + } + } + } + return @hits; +} + + +no Moose; +1; + +__END__ + +=pod + +=encoding UTF-8 + +=head1 NAME + +CPT::Bio::Dbxref + +=head1 VERSION + +version 1.99.4 + +=head1 AUTHOR + +Eric Rasche <rasche.eric@yandex.ru> + +=head1 COPYRIGHT AND LICENSE + +This software is Copyright (c) 2014 by Eric Rasche. + +This is free software, licensed under: + + The GNU General Public License, Version 3, June 2007 + +=cut