diff variant_effect_predictor/Bio/EnsEMBL/Compara/Subset.pm @ 0:21066c0abaf5 draft

Uploaded
author willmclaren
date Fri, 03 Aug 2012 10:04:48 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/variant_effect_predictor/Bio/EnsEMBL/Compara/Subset.pm	Fri Aug 03 10:04:48 2012 -0400
@@ -0,0 +1,222 @@
+# $Id: Subset.pm,v 1.10 2012/05/10 14:19:20 mm14 Exp $
+#
+# Module to handle family members
+#
+# Cared for by Abel Ureta-Vidal <abel@ebi.ac.uk>
+#
+# Copyright Abel Ureta-Vidal
+#
+# You may distribute this module under the same terms as perl itself
+
+# POD documentation - main docs before the code
+
+=head1 NAME
+
+Subset - DESCRIPTION of Object
+
+=head1 SYNOPSIS
+
+=head1 DESCRIPTION
+
+=head1 CONTACT
+
+ Jessica Severin <jessica@ebi.ac.uk>
+
+=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::Subset;
+
+use strict;
+use Bio::Species;
+use Bio::EnsEMBL::Utils::Exception;
+use Bio::EnsEMBL::Utils::Argument;
+
+use Data::Dumper;
+
+sub new {
+  my ($class, @args) = @_;
+  my $self = {};
+
+  bless $self,$class;
+
+  if (scalar @args) {
+    #do this explicitly.
+    my ($dbid, $description, $adaptor) = rearrange([qw(DBID NAME ADAPTOR)], @args);
+
+    $self->dbID($dbid)               if($dbid);
+    $self->description($description) if($description);
+    $self->adaptor($adaptor)         if($adaptor);
+
+    $self->{'_member_id_list'} = [];
+  }
+
+  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 :
+  Exceptions : none
+  Caller     :
+
+=cut
+
+sub new_fast {
+  my ($class, $hashref) = @_;
+
+  return bless $hashref, $class;
+}
+
+=head2 adaptor
+
+ Title   : adaptor
+ Usage   :
+ Function: give the adaptor if known
+ Example :
+ Returns :
+ Args    :
+
+
+=cut
+
+sub adaptor {
+   my ($self, $value) = @_;
+
+   if (defined $value) {
+      $self->{'_adaptor'} = $value;
+   }
+
+   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'};
+}
+
+=head2 add_member_id
+
+  Arg [1]     : $member_id
+  Example     : my $count = $subset->add_member_id($member_id);
+  Description : Add a new member_id to the subset object and
+                returns the number of member_ids already in the object
+  Returntype  : A scalar with the number of member_ids in the object
+  Exceptions  :
+  Caller      :
+
+=cut
+
+sub add_member_id {
+  my $self = shift;
+  my $count=0;
+
+  if(@_) {
+    my $member_id = shift;
+    $count = push @{$self->{'_member_id_list'}}, $member_id;
+    #print("added $count element to list\n");
+
+    if(defined($self->adaptor)) {
+      $self->adaptor->store_link($self, $member_id);
+    }
+  }
+  return $count
+}
+
+
+=head2 add_member
+
+  Arg [1]      : A Bio::EnsEMBL::Compara::Member
+  Example      : my $count = $subset->add_member($member);
+  Description  : Add a new Bio::EnsEMBL::Compara::Member to the subset object
+                 and returns the number of members already in the object.
+                 It also adds the member_id to the object.
+  ReturnType   : A scalar with the number of members in the object
+  Exceptions   :
+  Caller       :
+
+=cut
+
+sub add_member {
+  my ($self, $member) = @_;
+
+  unless(defined($member) and $member->isa('Bio::EnsEMBL::Compara::Member')) {
+    throw(
+    "gene arg must be a [Bio::EnsEMBL::Compara::Member] ".
+    "not a [$member]");
+  }
+
+  return $self->add_member_id($member->dbID);
+}
+
+sub member_id_list {
+  my $self = shift;
+
+  return $self->{'_member_id_list'};
+}
+
+sub count {
+  my $self = shift;
+
+  return $#{$self->member_id_list()} + 1;
+}
+
+
+# FIXME There should be a function to print a FASTA file
+#sub output_to_fasta
+
+1;