Mercurial > repos > mahtabm > ensembl
diff variant_effect_predictor/Bio/EnsEMBL/UnmappedObject.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/UnmappedObject.pm Thu Apr 11 02:01:53 2013 -0400 @@ -0,0 +1,485 @@ +=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::UnmappedObject - A object representing why a particular entity +was NOT mapped to the ensembl. + +=head1 SYNOPSIS + + use Bio::EnsEMBL::UnmappedObject; + + my $uo = Bio::EnsEMBL::UnmappedObject->new( + -type => 'xref', + -analysis => $analysis, + -external_db_id => 4100, + -identifier => "Q12345", + -query_score => 45.5, + -target_score => 29.2, + -ensembl_id => 122346, + -ensembl_type => "Translation", + -summary => "match failed for exonerate", + -full_desc => "match failed for the xref exonerate run " + . "as match was below threshold of 90" + ); + +=head1 DESCRIPTION + +UnmappedObjects represent entities NOT mapped to ensembl. Therefore this +should help users to find out why certain accessions etc can not be +found. + +=head1 METHODS + +=cut + + + +package Bio::EnsEMBL::UnmappedObject; + +use strict; +use warnings; + +use Bio::EnsEMBL::Utils::Argument qw(rearrange); +use Bio::EnsEMBL::Utils::Exception qw(throw); +use Bio::EnsEMBL::Storable; + +use vars qw(@ISA); + +@ISA = qw(Bio::EnsEMBL::Storable); + + +=head2 new + + Arg [TYPE] : the type of mapping i.e. 'xref','cDNA' + Arg [ANALYSIS] : Analysis object. + Arg [EXTERNAL_DB_ID] : id for the external db id this identifier is from + Arg [IDENTIFIER] : name of the identifier i.e. accession + Arg [QUERY_SCORE] : (optional) The query score + Arg [TARGET_SCORE] : (optional) The target score + Arg [SUMMARY] : The summary reason for not mapping. + Arg [FULL_DESC] : The Full description of why it did not map. + Arg [ENSEMBL_ID] : (optional) internal ensembl id for the best match + Arg [ENSEMBL_OBJECT_TYPE] : (optional) the type of object for the best match + Example : see SYNOPSIS + Returntype : Bio::EnsEMBL::UnmappedObject + Exceptions : If any of the none optional args are missing + Caller : general + Status : At Risk + +=cut + +sub new { + my $caller = shift; + + #allow constructor to be called as class or object method + my $class = ref($caller) || $caller; + + + + my ($dbID, $unmapped_reason_id, $type, $analysis, $ex_db_id, $identifier, + $query_score, $target_score, $summary, $full_desc, + $ensembl_id, $ensembl_object_type, $adaptor ) = + rearrange([qw(UNMAPPED_OBJECT_ID UNMAPPED_REASON_ID TYPE ANALYSIS + EXTERNAL_DB_ID IDENTIFIER QUERY_SCORE TARGET_SCORE + SUMMARY FULL_DESC ENSEMBL_ID ENSEMBL_OBJECT_TYPE ADAPTOR)], @_); + + my $self = $class->SUPER::new(@_); + if(defined($analysis)) { + if(!ref($analysis) || !$analysis->isa('Bio::EnsEMBL::Analysis')) { + throw('-ANALYSIS argument must be a Bio::EnsEMBL::Analysis not '. + $analysis); + } + } + else{ + throw('-ANALYSIS argument must be given'); + } + $self->{'analysis'} = $analysis; + $self->{'dbID'} = $dbID if (defined($dbID)); + $self->{'description'} = $full_desc || throw('FULL_DESC must be given'); + $self->{'summary'} = $summary || throw('SUMMARY must be given'); + $self->{'type'} = $type || throw('TYPE must be given'); + $self->{'external_db_id'} = $ex_db_id; + + if (lc($type) eq "xref") { + throw('EXTERNAL_DB_ID must be given') if ! defined $ex_db_id; + } + + $self->{'identifier'} = $identifier || throw('IDENTIFIER must be given'); + $self->{'query_score'} = $query_score if(defined($query_score)); + $self->{'target_score'} = $target_score if(defined($target_score)); + $self->{'ensembl_id'} = $ensembl_id if(defined($ensembl_id)); + $self->{'ensembl_object_type'} = $ensembl_object_type + if(defined($ensembl_object_type)); + $self->{'unmapped_reason_id'} = $unmapped_reason_id + if(defined($unmapped_reason_id)); + $self->adaptor($adaptor) if(defined($adaptor)); + return $self; +} + +=head2 new_fast + + Arg [...] : none + Example : $feature = Bio::EnsEMBL::UnmappedObject->new_fast(); + Description: Creates a new Unmapped Object. + Returntype : Bio::EnsEMBL::UnmappedObject + Exceptions : none + Caller : general + Status : At Risk + +=cut + +sub new_fast{ + my $caller = shift; + + #allow constructor to be called as class or object method + my $class = ref($caller) || $caller; + + my $self = $class->SUPER::new(@_); + + return $self; +} + +=head2 description + + Arg [1] : (optional) * to be set to + Example : print $unmappedObject->description."\n"; + Description : Basic getter/setter for description + ReturnType : String + Exceptions : none + Caller : general + Status : At Risk + +=cut + +sub description{ + my $self = shift; + + if(@_) { + my $des = shift; + $self->{'description'} = $des; + } + + return $self->{'description'}; +} + +=head2 summary + + Arg [1] : (optional) summary to be set to + Example : print $unmappedObject->summary."\n"; + Description : Basic getter/setter for summary + ReturnType : String + Exceptions : none + Caller : general + Status : At Risk + +=cut + +sub summary{ + my $self = shift; + + if(@_) { + my $des = shift; + $self->{'summary'} = $des; + } + + return $self->{'summary'}; +} + +=head2 type + + Arg [1] : (optional) type to be set to + Example : print $unmappedObject->type."\n"; + Description : Basic getter/setter for type + ReturnType : String + Exceptions : none + Caller : general + Status : At Risk + +=cut + +sub type{ + my $self = shift; + + if(@_) { + my $arg = shift; + $self->{'type'} = $arg; + } + + return $self->{'type'}; +} + +=head2 ensembl_object_type + + Arg [1] : (optional) ensembl object type to be set to + Example : print $unmappedObject->ensembl_object_type."\n"; + Description : Basic getter/setter for ensembl object type + ReturnType : String + Exceptions : none + Caller : general + Status : At Risk + +=cut + +sub ensembl_object_type{ + my $self = shift; + + if(@_) { + my $arg = shift; + $self->{'ensembl_object_type'} = $arg; + } + + return $self->{'ensembl_object_type'}; +} + +=head2 ensembl_id + + Arg [1] : (optional) ensembl id to be set to + Example : print $unmappedObject->ensembl_id."\n"; + Description : Basic getter/setter for ensembl id + ReturnType : String + Exceptions : none + Caller : general + Status : At Risk + +=cut + +sub ensembl_id{ + my $self = shift; + + if(@_) { + my $arg = shift; + $self->{'ensembl_id'} = $arg; + } + + return $self->{'ensembl_id'}; +} + +=head2 external_db_id + + Arg [1] : (optional) external_db_id to be set to + Example : print $unmappedObject->external_db_id."\n"; + Description : Basic getter/setter for external_db_id + ReturnType : int + Exceptions : none + Caller : general + Status : At Risk + +=cut + +sub external_db_id{ + my $self = shift; + + if(@_) { + my $arg = shift; + $self->{'external_db_id'} = $arg; + } + + return $self->{'external_db_id'}; +} + +=head2 external_db_name + + Example : print $unmappedObject->external_db_name()."\n"; + Description : Basic getter for external_db_name + ReturnType : int + Exceptions : none + Caller : general + Status : At Risk + +=cut + +sub external_db_name{ + my $self = shift; + + my $handle = $self->adaptor; + if(defined($handle) and defined($self->{'external_db_id'})){ + my $sth = $handle->prepare("select db_name from external_db where external_db_id = ".$self->{'external_db_id'}); + $sth->execute(); + my $name; + $sth->bind_columns(\$name); + $sth->fetch(); + return $name; + } + return ""; +} + + +sub stable_id{ + my ($self) = shift; + + my $handle = $self->adaptor; + if(defined($handle)){ + my $sql = "select stable_id from ".lc($self->{'ensembl_object_type'})." where ". + lc($self->{'ensembl_object_type'})."_id = ". + $self->{'ensembl_id'}; + my $sth = $handle->prepare($sql); + $sth->execute(); + my $name; + $sth->bind_columns(\$name); + $sth->fetch(); + return $name; + } + return ""; +} + + # my $adaptor; +# if($self->{'ensembl_object_type'} eq "Transcript"){ +# $adaptor= $self->adaptor->db->get_TranscriptAdaptor(); +# } +# elsif($self->{'ensembl_object_type'} eq "Translation"){ +# $adaptor= $self->adaptor->db->get_TranslationAdaptor(); +# } +# elsif($self->{'ensembl_object_type'} eq "Gene"){ +# $adaptor= $self->adaptor->db->get_GeneAdaptor(); +# } +# else{ +# return undef; +# } +# my $object = $adaptor->fetch_by_dbID($self->{'ensembl_id'}); +# if(defined($object)){ +# return $object->stable_id; +# } +# else{ +# return undef; +# } +#} + + +=head2 identifier + + Arg [1] : (optional) identifier to be set to + Example : print $unmappedObject->identifier."\n"; + Description : Basic getter/setter for identifier + ReturnType : String + Exceptions : none + Caller : general + Status : At Risk + +=cut + +sub identifier{ + my $self = shift; + + if(@_) { + my $arg = shift; + $self->{'identifier'} = $arg; + } + + return $self->{'identifier'}; +} + +=head2 query_score + + Arg [1] : (optional) query_score to be set to + Example : print $unmappedObject->query_score."\n"; + Description : Basic getter/setter for query_score + ReturnType : float + Exceptions : none + Caller : general + Status : At Risk + +=cut + +sub query_score{ + my $self = shift; + + if(@_) { + my $arg = shift; + $self->{'query_score'} = $arg; + } + + return $self->{'query_score'}; +} + +=head2 target_score + + Arg [1] : (optional) target_score to be set to + Example : print $unmappedObject->target_score."\n"; + Description : Basic getter/setter for target_score + ReturnType : float + Exceptions : none + Caller : general + Status : At Risk + +=cut + +sub target_score{ + my $self = shift; + + if(@_) { + my $arg = shift; + $self->{'target_score'} = $arg; + } + + return $self->{'target_score'}; +} + +=head2 unmapped_reason_id + + Arg [1] : (optional) unmapped_reason_id to be set to + Example : print $unmappedObject->unmapped_reason_id."\n"; + Description : Basic getter/setter for unmapped_reason_id + ReturnType : int + Exceptions : none + Caller : general + Status : At Risk + +=cut + +sub unmapped_reason_id{ + my $self = shift; + + if(@_) { + my $arg = shift; + $self->{'unmapped_reason_id'} = $arg; + } + + return $self->{'unmapped_reason_id'}; +} + +=head2 analysis + + Arg [1] : (optional) analysis to be set to + Example : print $unmappedObject->analysis->logic_name."\n"; + Description : Basic getter/setter for analysis + ReturnType : Bio::EnsEMBL::Analysis + Exceptions : none + Caller : general + Status : At Risk + +=cut + +sub analysis { + my $self = shift; + + if(@_) { + my $an = shift; + if(defined($an) && (!ref($an) || !$an->isa('Bio::EnsEMBL::Analysis'))) { + throw('analysis argument must be a Bio::EnsEMBL::Analysis'); + } + $self->{'analysis'} = $an; + } + + return $self->{'analysis'}; +} + +1;