Raw content of Bio::EnsEMBL::Compara::Production::DnaCollection
#
# You may distribute this module under the same terms as perl itself
#
# POD documentation - main docs before the code
=pod
=head1 NAME
Bio::EnsEMBL::Compara::Production::DnaCollection
=head1 SYNOPSIS
=head1 DESCRIPTION
DnaColelction is an object to hold a super-set of DnaFragChunk, and/or DnaFragChunkSet
objects. Used in production to encapsulate particular genome/region/chunk/group DNA set
from the others. To allow system to blast against self, and isolate different
chunk/group sets of the same genome from each other.
=head1 CONTACT
Jessica Severin
=head1 APPENDIX
The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _
=cut
package Bio::EnsEMBL::Compara::Production::DnaCollection;
use strict;
use Bio::EnsEMBL::Compara::Production::DnaFragChunk;
use Bio::EnsEMBL::Compara::Production::DnaFragChunkSet;
use Bio::EnsEMBL::Utils::Exception;
use Bio::EnsEMBL::Utils::Argument;
use Time::HiRes qw(time gettimeofday tv_interval);
sub new {
my ($class, @args) = @_;
my $self = {};
bless $self,$class;
$self->{'_object_list'} = [];
$self->{'_dnafrag_id_list'} = [];
$self->{'_dnafrag_id_hash'} = {};
if (scalar @args) {
#do this explicitly.
my ($dbid, $description, $adaptor) = rearrange([qw(DBID DESCRIPTION ADAPTOR)], @args);
$self->dbID($dbid) if($dbid);
$self->description($description) if($description);
$self->adaptor($adaptor) if($adaptor);
}
return $self;
}
=head2 adaptor
Title : adaptor
Usage :
Function: getter/setter of the adaptor for this object
Example :
Returns :
Args :
=cut
sub adaptor {
my $self = shift;
$self->{'_adaptor'} = shift if(@_);
return $self->{'_adaptor'};
}
=head2 dbID
Arg [1] : int $dbID (optional)
Example :
Description:
Returntype :
Exceptions :
Caller :
=cut
sub dbID {
my $self = shift;
$self->{'_dbID'} = shift if(@_);
return $self->{'_dbID'};
}
=head2 description
Arg [1] : string $description (optional)
Example :
Description:
Returntype : string
Exceptions :
Caller :
=cut
sub description {
my $self = shift;
$self->{'_description'} = shift if(@_);
return $self->{'_description'};
}
=head2 dump_loc
Arg [1] : string $dump_loc (optional)
Example :
Description:
Returntype : string
Exceptions :
Caller :
=cut
sub dump_loc {
my $self = shift;
$self->{'_dump_loc'} = shift if(@_);
return $self->{'_dump_loc'};
}
sub add_dna_object {
my ($self, $object) = @_;
return unless(defined($object));
unless($object->isa('Bio::EnsEMBL::Compara::Production::DnaFragChunk') or
$object->isa('Bio::EnsEMBL::Compara::Production::DnaFragChunkSet'))
{
$self->throw(
"arg must be a [Bio::EnsEMBL::Compara::Production::DnaFragChunk] ".
"or [Bio::EnsEMBL::Compara::Production::DnaFragChunk] not a [$object]");
}
if ($object->isa('Bio::EnsEMBL::Compara::Production::DnaFragChunk')) {
unless ($self->{'_dnafrag_id_hash'}->{$object->dnafrag_id}) {
push @{$self->{'_dnafrag_id_list'}}, $object->dnafrag_id;
$self->{'_dnafrag_id_hash'}->{$object->dnafrag_id} = 1;
}
}
if ($object->isa('Bio::EnsEMBL::Compara::Production::DnaFragChunkSet')) {
foreach my $dc (@{$object->get_all_DnaFragChunks}) {
unless ($self->{'_dnafrag_id_hash'}->{$dc->dnafrag_id}) {
push @{$self->{'_dnafrag_id_list'}}, $dc->dnafrag_id;
$self->{'_dnafrag_id_hash'}->{$dc->dnafrag_id} = 1;
}
}
}
push @{$self->{'_object_list'}}, $object;
}
=head2 get_all_dna_objects
Example : @dna = @{$dnaCOllection->get_all_dna_objects};
Description: returns array reference to all the DnaFragChunkand DnaFragChunkSet objects in this set
Returntype : reference to array of Bio::EnsEMBL::Compara::Production::DnaFragChunk(DnaFragChunkSet) objects
Exceptions :
Caller :
=cut
sub get_all_dna_objects {
my $self = shift;
return $self->{'_object_list'};
}
=head2 count
Example : $count = $chunkSet->count;
Description: returns count of DnaFragChunks in this set
Returntype : int
Exceptions :
Caller :
=cut
sub count {
my $self = shift;
return scalar(@{$self->{'_object_list'}});
}
=head2 get_all_dnafrag_ids
Example : @dnafrag_ids = @{$dnaCOllection->get_all_dnafrag_ids};
Description: returns array reference to all the dnafrag_ids in this set
Returntype : reference to array of integers
Exceptions :
Caller :
=cut
sub get_all_dnafrag_ids {
my $self = shift;
return $self->{'_dnafrag_id_list'};
}
1;