Mercurial > repos > mahtabm > ensembl
diff variant_effect_predictor/Bio/EnsEMBL/StableIdEvent.pm @ 0:1f6dce3d34e0
Uploaded
author | mahtabm |
---|---|
date | Thu, 11 Apr 2013 02:01:53 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/variant_effect_predictor/Bio/EnsEMBL/StableIdEvent.pm Thu Apr 11 02:01:53 2013 -0400 @@ -0,0 +1,300 @@ +=head1 LICENSE + + Copyright (c) 1999-2012 The European Bioinformatics Institute and + Genome Research Limited. All rights reserved. + + This software is distributed under a modified Apache license. + For license details, please see + + http://www.ensembl.org/info/about/code_licence.html + +=head1 CONTACT + + Please email comments or questions to the public Ensembl + developers list at <dev@ensembl.org>. + + Questions may also be sent to the Ensembl help desk at + <helpdesk@ensembl.org>. + +=cut + +=head1 NAME + +Bio::EnsEMBL::StableIdEvent- object representing a stable ID mapping event + +=head1 SYNOPSIS + + my $old_id = Bio::EnsEMBL::ArchiveStableId->new( + -stable_id => 'ENSG001', + -version => 1, + -type => 'Gene', + ); + + my $new_id = Bio::EnsEMBL::ArchiveStableId->new( + -stable_id => 'ENSG001', + -version => 2, + -type => 'Gene', + ); + + my $event = Bio::EnsEMBL::StableIdEvent->new( + -old_id => $old_id, + -new_id => $new_id, + -score => 0.997 + ); + + # directly access attributes in old and new ArchiveStableId + my $old_stable_id = $event->get_attribute( 'old', 'stable_id' ); + +=head1 DESCRIPTION + +This object represents a stable ID mapping event. Such an event links two +ArchiveStableIds with a mapping score. + +=head1 METHODS + + new + old_ArchiveStableId + new_ArchiveStableId + score + get_attribute + ident_string + +=head1 RELATED MODULES + + Bio::EnsEMBL::ArchiveStableId + Bio::EnsEMBL::DBSQL::ArchiveStableIdAdaptor + Bio::EnsEMBL::StableIdHistoryTree + +=cut + +package Bio::EnsEMBL::StableIdEvent; + +use strict; +use warnings; +no warnings 'uninitialized'; + +use Bio::EnsEMBL::Utils::Exception qw(throw warning); +use Bio::EnsEMBL::Utils::Argument qw(rearrange); + + +=head2 new + + Arg[1] : Bio::EnsEMBL::ArchiveStableId $old_id + The old ArchiveStableId in the mapping event + Arg[2] : Bio::EnsEMBL::ArchiveStableId $new_id + The new ArchiveStableId in the mapping event + Arg[3] : (optional) float $score - score of this mapping event + Example : my $event = Bio::EnsEMBL::StableIdEvent->new( + $arch_id1, $arch_id2, 0.977); + Description : object constructor + Return type : Bio::EnsEMBL::StableIdEvent + Exceptions : thrown on wrong argument types + Caller : Bio::EnsEMBL::DBSQL::ArchiveStableIdAdaptor::fetch_history_tree_by_stable_id, general + Status : At Risk + : under development + +=cut + +sub new { + my $caller = shift; + my $class = ref($caller) || $caller; + + my ($old_id, $new_id, $score) = rearrange([qw(OLD_ID NEW_ID SCORE)], @_); + + throw("Need old or new Bio::EnsEMBL::ArchiveStableId to create StableIdEvent") + unless ($old_id || $new_id); + + my $self = {}; + bless $self, $class; + + # initialise object + $self->old_ArchiveStableId($old_id); + $self->new_ArchiveStableId($new_id); + $self->score($score); + + return $self; +} + + +=head2 old_ArchiveStableId + + Arg[1] : (optional) Bio::EnsEMBL::ArchiveStableId $archive_id, or undef + The old ArchiveStableId to set for this mapping event + Example : # getter + my $archive_id = $event->old_ArchiveStableId; + + # setter + $event->old_ArchiveStableId($archive_id); + Description : Getter/setter for old ArchiveStableId in this mapping event. + Return type : Bio::EnsEMBL::ArchiveStableId + Exceptions : thrown on wrong argument type + Caller : general + Status : At Risk + : under development + +=cut + +sub old_ArchiveStableId { + my $self = shift; + + # setter + if (@_) { + my $archive_id = shift; + + # if argument is defined, check type. undef is also legal as an argument. + if (defined($archive_id)) { + throw("Need a Bio::EnsEMBL::ArchiveStableId.") unless + (ref($archive_id) && $archive_id->isa('Bio::EnsEMBL::ArchiveStableId')); + } + + $self->{'old_id'} = $archive_id; + } + + # getter + return $self->{'old_id'}; +} + + +=head2 new_ArchiveStableId + + Arg[1] : (optional) Bio::EnsEMBL::ArchiveStableId $archive_id, or undef + The new ArchiveStableId to set for this mapping event + Example : # getter + my $archive_id = $event->new_ArchiveStableId; + + # setter + $event->new_ArchiveStableId($archive_id); + Description : Getter/setter for new ArchiveStableId in this mapping event. + Return type : Bio::EnsEMBL::ArchiveStableId + Exceptions : thrown on wrong argument type + Caller : general + Status : At Risk + : under development + +=cut + +sub new_ArchiveStableId { + my $self = shift; + + # setter + if (@_) { + my $archive_id = shift; + + # if argument is defined, check type. undef is also legal as an argument. + if (defined($archive_id)) { + throw("Need a Bio::EnsEMBL::ArchiveStableId.") unless + (ref($archive_id) && $archive_id->isa('Bio::EnsEMBL::ArchiveStableId')); + } + + $self->{'new_id'} = $archive_id; + } + + # getter + return $self->{'new_id'}; +} + + +=head2 score + + Arg[1] : (optional) float $score - the score to set + Example : my $score = $event->score; + Description : Getter/setter for mapping event score. + Return type : float or undef + Exceptions : none + Caller : general + Status : At Risk + : under development + +=cut + +sub score { + my $self = shift; + $self->{'score'} = shift if (@_); + return $self->{'score'}; +} + + +=head2 get_attribute + + Arg[1] : String $type - determines whether to get attribute from 'old' + or 'new' ArchiveStableId + Arg[2] : String $attr - ArchiveStableId attribute to fetch + Example : my $old_stable_id = $event->get_attribute('old', 'stable_id'); + Description : Accessor to attributes of the ArchiveStableIds attached to this + event. Convenience method that does the check for undef old + and/or new ArchiveStableId for you. + Return type : same as respective method in Bio::EnsEMBL::ArchiveStableId, or + undef + Exceptions : thrown on wrong arguments + Caller : general + Status : At Risk + : under development + +=cut + +sub get_attribute { + my ($self, $type, $attr) = @_; + + throw("First argument passed to this function has to be 'old' or 'new'.") + unless ($type eq 'old' or $type eq 'new'); + + my %allowed_attribs = map { $_ => 1 } + qw(stable_id version db_name release assembly); + + throw("Attribute $attr not allowed.") unless $allowed_attribs{$attr}; + + my $call = $type.'_ArchiveStableId'; + + if (my $id = $self->$call) { + return $id->$attr; + } else { + return undef; + } +} + + +=head2 ident_string + + Example : print $event->ident_string, "\n"; + Description : Returns a string that can be used to identify your StableIdEvent. + Useful in debug warnings. + Return type : String + Exceptions : none + Caller : general + Status : At Risk + : under development + +=cut + +sub ident_string { + my $self = shift; + + my $old_id = $self->old_ArchiveStableId; + my $new_id = $self->new_ArchiveStableId; + + my $str; + + if ($old_id) { + $str = $old_id->stable_id.'.'.$old_id->version.' ('. + $old_id->release.')'; + } else { + $str = 'null'; + } + + $str .= ' -> '; + + if ($new_id) { + $str .= $new_id->stable_id.'.'.$new_id->version.' ('. + $new_id->release.')'; + } else { + $str .= 'null'; + } + + $str .= ' ['.$self->score.']'; + + return $str; +} + + +1; +