diff variant_effect_predictor/Bio/EnsEMBL/OntologyXref.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/OntologyXref.pm	Thu Apr 11 02:01:53 2013 -0400
@@ -0,0 +1,179 @@
+=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::OntologyXref
+
+=head1 DESCRIPTION
+
+This class extends the DBEntry in order to associate Evidence Tags
+to the relationship between EnsEMBL objects and ontology accessions
+(primarily GO accessions).
+
+The relationship to GO that is stored in the database is actually
+derived through the relationship of EnsEMBL peptides to SwissProt
+peptides, i.e. the relationship is derived like this:
+
+  ENSP -> SWISSPROT -> GO
+
+And the evidence tag describes the relationship between the SwissProt
+Peptide and the GO entry.
+
+In reality, however, we store this in the database like this:
+
+  ENSP -> SWISSPROT
+  ENSP -> GO
+
+and the evidence tag hangs off of the relationship between the ENSP and
+the GO identifier.  Some ENSPs are associated with multiple closely
+related Swissprot entries which may both be associated with the same GO
+identifier but with different evidence tags.  For this reason a single
+'OntologyXref' can have multiple evidence tags.
+
+=head1 SYNOPSIS
+
+  my $ontology_xref = Bio::EnsEMBL::OntologyXref->new();
+  $ontology_xref->add_linkage_type('IEA');
+
+  foreach my $evtag ( @{ $ontology_xref->get_all_linkage_types() } ) {
+    print "$evtag\n";
+  }
+
+=head1 METHODS
+
+=cut
+
+package Bio::EnsEMBL::OntologyXref;
+
+use strict;
+
+use base qw( Bio::EnsEMBL::DBEntry );
+
+=head2 add_linkage_type
+
+  Arg [1]    : string $value
+               allowed values:
+               'IC', 'IDA', 'IEA', 'IEP', 'IGI', 'IMP', 'IPI',
+               'ISS', NAS', 'ND', 'TAS', 'NR', 'RCA'
+  Arg [2]    : (optional) Bio::EnsEMBL::DBEntry $source
+  Example    : $ontology_xref->add_linkage_type('IGI');
+  Description: Associates a linkage type and source DBEntry with
+               this ontology_xref
+  Returntype : integer; number of linkages
+  Exceptions : thrown if $linkage_type argument not supplied or
+               the optional DBEntry is not a DBEntry object.
+  Caller     : DBEntryAdaptor
+  Status     : Experimantal
+
+=cut
+
+sub add_linkage_type {
+  my ( $self, $lt, $source_dbentry ) = @_;
+
+  if ( !defined($lt) ) {
+    $self->throw("linkage type argument required");
+  }
+
+  if ( defined($source_dbentry)
+       && !$source_dbentry->isa('Bio::EnsEMBL::DBEntry') )
+  {
+    $self->throw("source_dbentry must be a Bio::EnsEMBL::DBEntry");
+  }
+
+  $self->{'linkage_types'} ||= [];
+
+  push @{ $self->{'linkage_types'} },
+    [ $lt, ( $source_dbentry || () ) ];
+}
+
+
+=head2 get_all_linkage_info
+
+  Arg [1]    : none
+  Example    :
+
+    foreach ( @{ $ontology_xref->get_all_linkage_info() } ) {
+      print "evidence: $_->[0] via $_->[1]->display_id";
+    }
+
+  Description: Retrieves a list of evidence-tag/source-DBEntry pairs
+               associated with this ontology_xref
+  Returntype : listref of listrefs
+  Exceptions : none
+  Caller     : geneview? general.
+  Status     : Experimental
+
+=cut
+
+sub get_all_linkage_info {
+  my ($self) = @_;
+
+  return $self->{'linkage_types'} || [];
+}
+
+
+=head2 get_all_linkage_types
+
+  Arg [1]    : none
+  Example    :
+
+    print( join( ' ', @{ $ontology_xref->get_all_linkage_types() } ),
+           "\n" );
+
+  Description: Retrieves a unique list of evidence tags associated with
+               this ontology_xref
+  Returntype : none
+  Exceptions : none
+  Caller     : geneview? general
+  Status     : Stable
+
+=cut
+
+sub get_all_linkage_types {
+  my ($self) = @_;
+
+  my %seen;
+  return [ grep  { !$seen{$_}++ }
+             map { $_->[0] } @{ $self->{'linkage_types'} } ];
+
+  #return [ map{ $_->[0]} @{ $self->{'linkage_types'} || [] } ];
+}
+
+
+=head2 flush_linkage_types
+
+  Arg [1]    : none
+  Example    : $ontology_xref->flush_linkage_types();
+  Description: Removes any associated evidence tags
+  Returntype : none
+  Exceptions : none
+  Caller     : general 
+  Status     : Stable
+
+=cut
+
+sub flush_linkage_types {
+  my ($self) = @_;
+
+  $self->{'linkage_types'} = [];
+}
+
+1;