Mercurial > repos > willmclaren > ensembl_vep
diff variant_effect_predictor/Bio/EnsEMBL/Compara/SpeciesSet.pm @ 0:21066c0abaf5 draft
Uploaded
author | willmclaren |
---|---|
date | Fri, 03 Aug 2012 10:04:48 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/variant_effect_predictor/Bio/EnsEMBL/Compara/SpeciesSet.pm Fri Aug 03 10:04:48 2012 -0400 @@ -0,0 +1,96 @@ +package Bio::EnsEMBL::Compara::SpeciesSet; + +use strict; + +use Bio::EnsEMBL::Utils::Exception qw(warning deprecate throw); +use Bio::EnsEMBL::Utils::Argument qw(rearrange); + +# FIXME: add throw not implemented for those not tag related? +use base ( 'Bio::EnsEMBL::Storable', # inherit dbID(), adaptor() and new() methods + 'Bio::EnsEMBL::Compara::Taggable' # inherit everything related to tagability + ); + + +=head2 new + + Arg [..] : Takes a set of named arguments + Example : my $my_species_set = Bio::EnsEMBL::Compara::SpeciesSet->new( + -dbID => $species_set_id, + -genome_dbs => [$gdb1, $gdb2, $gdb3 ], + -adaptor => $species_set_adaptor ); + Description: Creates a new SpeciesSet object + Returntype : Bio::EnsEMBL::Compara::SpeciesSet + +=cut + +sub new { + my $caller = shift @_; + my $class = ref($caller) || $caller; + + my $self = $class->SUPER::new(@_); # deal with Storable stuff + + my ($genome_dbs) = rearrange([qw(GENOME_DBS)], @_); + + $self->genome_dbs($genome_dbs) if (defined ($genome_dbs)); + + return $self; +} + + +=head2 genome_dbs + + Arg [1] : (opt.) list of genome_db objects + Example : my $genome_dbs = $species_set->genome_dbs(); + Example : $species_set->genome_dbs( [$gdb1, $gdb2, $gdb3] ); + Description: Getter/Setter for the genome_dbs of this object in the database + Returntype : arrayref genome_dbs + Exceptions : none + Caller : general + +=cut + +sub genome_dbs { + my ($self, $arg) = @_; + + if (defined $arg) { + ## Check content + my $genome_dbs = {}; + foreach my $gdb (@$arg) { + throw("undefined value used as a Bio::EnsEMBL::Compara::GenomeDB\n") + if (!defined($gdb)); + throw("$gdb must be a Bio::EnsEMBL::Compara::GenomeDB\n") + unless UNIVERSAL::isa($gdb, "Bio::EnsEMBL::Compara::GenomeDB"); + + unless (defined $genome_dbs->{$gdb->dbID}) { + $genome_dbs->{$gdb->dbID} = $gdb; + } else { + warn("GenomeDB (".$gdb->name."; dbID=".$gdb->dbID . + ") appears twice in this Bio::EnsEMBL::Compara::SpeciesSet\n"); + } + } + $self->{'genome_dbs'} = [ values %{$genome_dbs} ] ; + } + return $self->{'genome_dbs'}; +} + + +=head2 toString + + Args : (none) + Example : print $species_set->toString()."\n"; + Description: returns a stringified representation of the species_set + Returntype : string + +=cut + +sub toString { + my $self = shift; + + my $name = $self->get_tagvalue('name'); + return ref($self).": dbID=".($self->dbID || '?').", name='".($name || '?')."', genome_dbs=[".join(', ', map { $_->name.'('.($_->dbID || '?').')'} @{ $self->genome_dbs })."]"; +} + + + +1; +