annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1 # $Id: Subset.pm,v 1.10 2012/05/10 14:19:20 mm14 Exp $
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
3 # Module to handle family members
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
4 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
5 # Cared for by Abel Ureta-Vidal <abel@ebi.ac.uk>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
6 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
7 # Copyright Abel Ureta-Vidal
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
8 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
9 # You may distribute this module under the same terms as perl itself
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
10
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
11 # POD documentation - main docs before the code
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
12
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
13 =head1 NAME
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
14
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
15 Subset - DESCRIPTION of Object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
16
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
17 =head1 SYNOPSIS
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
18
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
19 =head1 DESCRIPTION
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
20
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
21 =head1 CONTACT
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
22
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
23 Jessica Severin <jessica@ebi.ac.uk>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
24
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
25 =head1 APPENDIX
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
26
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
27 The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
28
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
29 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
30
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
31 package Bio::EnsEMBL::Compara::Subset;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
32
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
33 use strict;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
34 use Bio::Species;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
35 use Bio::EnsEMBL::Utils::Exception;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
36 use Bio::EnsEMBL::Utils::Argument;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
37
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
38 use Data::Dumper;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
39
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
40 sub new {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
41 my ($class, @args) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
42 my $self = {};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
43
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
44 bless $self,$class;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
45
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
46 if (scalar @args) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
47 #do this explicitly.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
48 my ($dbid, $description, $adaptor) = rearrange([qw(DBID NAME ADAPTOR)], @args);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
49
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
50 $self->dbID($dbid) if($dbid);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
51 $self->description($description) if($description);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
52 $self->adaptor($adaptor) if($adaptor);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
53
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
54 $self->{'_member_id_list'} = [];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
55 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
56
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
57 return $self;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
58 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
59
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
60 =head2 new_fast
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
61
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
62 Arg [1] : hash reference $hashref
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
63 Example : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
64 Description: This is an ultra fast constructor which requires knowledge of
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
65 the objects internals to be used.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
66 Returntype :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
67 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
68 Caller :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
69
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
70 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
71
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
72 sub new_fast {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
73 my ($class, $hashref) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
74
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
75 return bless $hashref, $class;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
76 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
77
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
78 =head2 adaptor
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
79
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
80 Title : adaptor
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
81 Usage :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
82 Function: give the adaptor if known
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
83 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
84 Returns :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
85 Args :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
86
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
87
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
88 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
89
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
90 sub adaptor {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
91 my ($self, $value) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
92
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
93 if (defined $value) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
94 $self->{'_adaptor'} = $value;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
95 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
96
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
97 return $self->{'_adaptor'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
98 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
99
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
100
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
101 =head2 dbID
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
102
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
103 Arg [1] : int $dbID (optional)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
104 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
105 Description:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
106 Returntype :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
107 Exceptions :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
108 Caller :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
109
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
110 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
111
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
112 sub dbID {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
113 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
114 $self->{'_dbID'} = shift if(@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
115 return $self->{'_dbID'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
116 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
117
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
118 =head2 description
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
119
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
120 Arg [1] : string $description (optional)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
121 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
122 Description:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
123 Returntype : string
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
124 Exceptions :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
125 Caller :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
126
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
127 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
128
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
129 sub description {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
130 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
131 $self->{'_description'} = shift if(@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
132 return $self->{'_description'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
133 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
134
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
135 =head2 dump_loc
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
136
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
137 Arg [1] : string $dump_loc (optional)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
138 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
139 Description:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
140 Returntype : string
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
141 Exceptions :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
142 Caller :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
143
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
144 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
145
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
146 sub dump_loc {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
147 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
148 $self->{'_dump_loc'} = shift if(@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
149 return $self->{'_dump_loc'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
150 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
151
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
152 =head2 add_member_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
153
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
154 Arg [1] : $member_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
155 Example : my $count = $subset->add_member_id($member_id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
156 Description : Add a new member_id to the subset object and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
157 returns the number of member_ids already in the object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
158 Returntype : A scalar with the number of member_ids in the object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
159 Exceptions :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
160 Caller :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
161
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
162 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
163
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
164 sub add_member_id {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
165 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
166 my $count=0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
167
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
168 if(@_) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
169 my $member_id = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
170 $count = push @{$self->{'_member_id_list'}}, $member_id;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
171 #print("added $count element to list\n");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
172
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
173 if(defined($self->adaptor)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
174 $self->adaptor->store_link($self, $member_id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
175 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
176 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
177 return $count
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
178 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
179
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
180
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
181 =head2 add_member
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
182
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
183 Arg [1] : A Bio::EnsEMBL::Compara::Member
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
184 Example : my $count = $subset->add_member($member);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
185 Description : Add a new Bio::EnsEMBL::Compara::Member to the subset object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
186 and returns the number of members already in the object.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
187 It also adds the member_id to the object.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
188 ReturnType : A scalar with the number of members in the object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
189 Exceptions :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
190 Caller :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
191
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
192 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
193
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
194 sub add_member {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
195 my ($self, $member) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
196
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
197 unless(defined($member) and $member->isa('Bio::EnsEMBL::Compara::Member')) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
198 throw(
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
199 "gene arg must be a [Bio::EnsEMBL::Compara::Member] ".
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
200 "not a [$member]");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
201 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
202
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
203 return $self->add_member_id($member->dbID);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
204 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
205
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
206 sub member_id_list {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
207 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
208
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
209 return $self->{'_member_id_list'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
210 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
211
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
212 sub count {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
213 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
214
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
215 return $#{$self->member_id_list()} + 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
216 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
217
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
218
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
219 # FIXME There should be a function to print a FASTA file
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
220 #sub output_to_fasta
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
221
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
222 1;