Raw content of Bio::EnsEMBL::Compara::DnaFragRegion
#
# Ensembl module for Bio::EnsEMBL::Compara::DnaFragRegion
#
# Cared for by Abel Ureta-Vidal
#
# Copyright GRL and EBI
#
# You may distribute this module under the same terms as perl itself
# POD documentation - main docs before the code
=head1 NAME
Bio::EnsEMBL::Compara::DnaFragRegion - dnafrag region on one species
=head1 SYNOPSIS
my $slice = $dnafrag_region->slice;
my $dnafrag = $dnafrag_region->dnafrag;
my $genome_db = $dnafrag_region->genome_db;
my $dnafrag_start = $dnafrag_region->dnafrag_start;
my $dnafrag_end = $dnafrag_region->dnafrag_end;
my $dnafrag_strand = $dnafrag_region->dnafrag_strand;
my $length = $dnafrag_region->length;
=head1 DESCRIPTION
DnaFragRegion are the objects underlying the SyntenyRegion objects. Each synteny is
represented as a Bio::EnsEMBL::Compara::SyntenyRegion object. Each of these objects
contain one Bio::EnsEMBL::Compara::DnaFragRegion object per region which defines the
synteny. For instance, for a syntenic region between human and mouse, there will be
one DnaFragRegion object for the human region and another one for the mouse one.
=head1 CONTACT
Ensembl - ensembl-dev@ebi.ac.uk
=head1 OBJECT ATTRIBUTES
=over
=item adaptor
Bio::EnsEMBL::Compara::DBSQL::DnaFragRegionAdaptor object to access DB
=item synteny_region_id
corresponds to dnafrag.synteny_region_id (external ref.)
=item dnafrag_id
corresponds to dnafrag.dnafrag_id (external ref.)
=item dnafrag
Bio::EnsEMBL::Compara::DnaFrag object corresponding to dnafrag_id
=item dnafrag_start
corresponds to dnafrag_region.dnafrag_start
=item dnafrag_end
corresponds to dnafrag_region.dnafrag_end
=item dnafrag_strand
corresponds to dnafrag_region.dnafrag_strand
=back
=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::DnaFragRegion;
use strict;
use Bio::EnsEMBL::Utils::Argument;
use Bio::EnsEMBL::Utils::Exception;
use Bio::EnsEMBL::Compara::NestedSet;
our @ISA = qw(Bio::EnsEMBL::Compara::NestedSet);
=head2 new_fast
Arg : possible keys: ADAPTOR, SYNTENY_REGION_ID, DNAFRAG_ID,
DNAFRAG_START, DNAFRAG_END, DNAFRAG_STRAND
See also parent object: Bio::EnsEMBL::Compara::NestedSet
Example : none
Description : Object constructor.
Returntype : Bio::EnsEMBL::Compara::DnaFragRegion object
Exceptions : none
Caller : general
=cut
sub new {
my ($class, @args) = @_;
my $self = $class->SUPER::new(@args);
# my $self = bless {}, $class;
if (scalar @args) {
#do this explicitly.
my ($adaptor, $synteny_region_id, $dnafrag_id, $dnafrag_start, $dnafrag_end, $dnafrag_strand) = rearrange([qw(ADAPTOR SYNTENY_REGION_ID DNAFRAG_ID DNAFRAG_START DNAFRAG_END DNAFRAG_STRAND)], @args);
$adaptor && $self->adaptor($adaptor);
$synteny_region_id && $self->synteny_region_id($synteny_region_id);
$dnafrag_id && $self->dnafrag_id($dnafrag_id);
$dnafrag_start && $self->dnafrag_start($dnafrag_start);
$dnafrag_end && $self->dnafrag_end($dnafrag_end);
$dnafrag_strand && $self->dnafrag_strand($dnafrag_strand);
}
return $self;
}
=head2 new_fast
Arg 1 : hash reference $hashref
Example : none
Description : This is an ultra fast constructor which requires knowledge of
the objects internals to be used.
Returntype : Bio::EnsEMBL::Compara::DnaFragRegion object
Exceptions : none
Caller : general
=cut
sub new_fast {
my ($class, $hashref) = @_;
return bless $hashref, $class;
}
=head2 synteny_region_id
Arg 1 : (optional) integer $synteny_region_id
Example : my $synteny_region_id = $dnafrag->synteny_region_id;
Description : Getter/setter for the synteny_region_id attribute
Returntype : integer
Exceptions : none
Caller : general
=cut
sub synteny_region_id {
my $obj = shift;
if (@_) {
my $value = shift;
$obj->{'synteny_region_id'} = $value;
}
return $obj->{'synteny_region_id'};
}
=head2 dnafrag_id
Arg 1 : (optional) integer $dnafrag_id
Example : my $dnafrag_id = $dnafrag->dnafrag_id;
Description : Getter/setter for the dnafrag_id attribute
Returntype : integer
Exceptions : none
Caller : general
=cut
sub dnafrag_id {
my $obj = shift;
if (@_) {
my $value = shift;
$obj->{'dnafrag_id'} = $value;
}
return $obj->{'dnafrag_id'};
}
=head2 dnafrag_start
Arg 1 : (optional) integer $dnafrag_start
Example : my $dnafrag_start = $dnafrag->dnafrag_start;
Description : Getter/setter for the dnafrag_start attribute
Returntype : integer
Exceptions : none
Caller : general
=cut
sub dnafrag_start {
my $obj = shift;
if (@_) {
my $value = shift;
$obj->{'dnafrag_start'} = $value;
}
return $obj->{'dnafrag_start'};
}
=head2 dnafrag_end
Arg 1 : (optional) integer $dnafrag_end
Example : my $dnafrag_end = $dnafrag->dnafrag_end;
Description : Getter/setter for the dnafrag_end attribute
Returntype : integer
Exceptions : none
Caller : general
=cut
sub dnafrag_end {
my $obj = shift;
if (@_) {
my $value = shift;
$obj->{'dnafrag_end'} = $value;
}
return $obj->{'dnafrag_end'};
}
=head2 dnafrag_strand
Arg 1 : (optional) integer $dnafrag_strand
Example : my $dnafrag_strand = $dnafrag->dnafrag_strand;
Description : Getter/setter for the dnafrag_strand attribute
Returntype : integer (1 or -1)
Exceptions : none
Caller : general
=cut
sub dnafrag_strand {
my $obj = shift;
if (@_) {
my $value = shift;
$obj->{'dnafrag_strand'} = $value;
}
return $obj->{'dnafrag_strand'};
}
=head2 adaptor
Arg 1 : (optional) Bio::EnsEMBL::Compara::DBSQL::DnaFragRegioAdaptor $adaptor
Example : my $adaptor = $dnafrag->adaptor;
Description : Getter/setter for the corresponding
Bio::EnsEMBL::Compara::DBSQL::DnaFragRegioAdaptor object
Returntype : Bio::EnsEMBL::Compara::DBSQL::DnaFragRegioAdaptor object
Exceptions : none
Caller : general
=cut
sub adaptor {
my $obj = shift;
if (@_) {
my $value = shift;
$obj->{'adaptor'} = $value;
}
return $obj->{'adaptor'};
}
=head2 dnafrag
Arg 1 : (optional) Bio::EnsEMBL::Compara::DnaFrag object
Example : $dnafrag = $dnafragregion->dnafrag;
Description : Getter/setter for the Bio::EnsEMBL::Compara::DnaFrag object corresponding to this
Bio::EnsEMBL::Compara::DnaFragRegion object.
Returntype : Bio::EnsEMBL::Compara::Dnafrag object
Exceptions : warns when the corresponding Bio::EnsEMBL::Compara::GenomeDB,
coord_system_name, name or Bio::EnsEMBL::DBSQL::DBAdaptor
cannot be retrieved and returns undef.
Caller : $object->methodname
=cut
sub dnafrag {
my ($self) = shift @_;
if (@_) {
$self->{'_dnafrag'} = shift @_;
} elsif (!defined $self->{'_dnafrag'}) {
if (!defined($self->dnafrag_id)) {
warn "Cannot get the Bio::EnsEMBL::Compara::DnaFrag object without dbID";
return undef;
}
my $dfa = $self->adaptor->db->get_DnaFragAdaptor;
if (!defined($dfa)) {
warn "Cannot get the Bio::EnsEMBL::Compara::DBSQL::DnaFragAdaptor";
return undef;
}
$self->{'_dnafrag'} = $dfa->fetch_by_dbID($self->dnafrag_id);
}
return $self->{'_dnafrag'};
}
=head2 slice
Arg 1 : -none-
Example : $slice = $dnafragregion->slice;
Description : Returns the Bio::EnsEMBL::Slice object corresponding to this
Bio::EnsEMBL::Compara::DnaFrag object.
Returntype : Bio::EnsEMBL::Slice object
Exceptions : warns when the corresponding Bio::EnsEMBL::Compara::GenomeDB,
coord_system_name, name or Bio::EnsEMBL::DBSQL::DBAdaptor
cannot be retrieved and returns undef.
Caller : $object->methodname
=cut
sub slice {
my ($self) = @_;
unless (defined $self->{'_slice'}) {
if (!defined($self->dnafrag->genome_db)) {
warn "Cannot get the Bio::EnsEMBL::Compara::GenomeDB object corresponding to [".$self."]";
return undef;
}
if (!defined($self->dnafrag->coord_system_name)) {
warn "Cannot get the coord_system_name corresponding to [".$self."]";
return undef;
}
if (!defined($self->dnafrag->name)) {
warn "Cannot get the name corresponding to [".$self."]";
return undef;
}
my $dba = $self->dnafrag->genome_db->db_adaptor;
if (!defined($dba)) {
warn "Cannot get the Bio::EnsEMBL::DBSQL::DBAdaptor corresponding to [".$self->dnafrag->genome_db."]";
return undef;
}
$self->{'_slice'} = $dba->get_SliceAdaptor->fetch_by_region($self->dnafrag->coord_system_name, $self->dnafrag->name,$self->dnafrag_start, $self->dnafrag_end, $self->dnafrag_strand);
}
return $self->{'_slice'};
}
=head2 genome_db
Arg 1 : -none-
Example : $genome_db = $dnafragregion->genome_db;
Description : Returns the Bio::EnsEMBL::Compara::GenomeDB object corresponding to this
Bio::EnsEMBL::Compara::DnaFragRegion object. This method is a shortcut
for $dnafragregion->dnafrag->genome_db
Returntype : Bio::EnsEMBL::Compara::GenomeDB object
Exceptions : return undef if no dnafrag can be found for this DnaFragRegion object.
See dnafrag method elsewhere in this document.
Caller : $object->methodname
=cut
sub genome_db {
my ($self) = @_;
if ($self->dnafrag) {
return $self->dnafrag->genome_db;
}
return undef;
}
=head2 length
Arg 1 : -none-
Example : $length = $dnafragregion->length;
Description : Returns the lenght of this DnaFragRegion
Returntype : integer
Exceptions :
Caller : $object->methodname
=cut
sub length {
my ($self) = @_;
return $self->dnafrag_end - $self->dnafrag_start + 1;
}
1;