annotate variant_effect_predictor/Bio/EnsEMBL/DBSQL/MergedAdaptor.pm @ 3:d30fa12e4cc5 default tip

Merge heads 2:a5976b2dce6f and 1:09613ce8151e which were created as a result of a recently fixed bug.
author devteam <devteam@galaxyproject.org>
date Mon, 13 Jan 2014 10:38:30 -0500
parents 1f6dce3d34e0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 =head1 LICENSE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 Copyright (c) 1999-2012 The European Bioinformatics Institute and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 Genome Research Limited. All rights reserved.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 This software is distributed under a modified Apache license.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 For license details, please see
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 http://www.ensembl.org/info/about/code_licence.html
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 =head1 CONTACT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 Please email comments or questions to the public Ensembl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 developers list at <dev@ensembl.org>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 Questions may also be sent to the Ensembl help desk at
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 <helpdesk@ensembl.org>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 Bio::EnsEMBL::DBSQL::MergedAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 $merged_adaptor = new Bio::EnsEMBL::DBSQL::MergedAdaptor(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28 -species => "human",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 -type => "Population"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 The MergedAdaptor object is merely a list of adaptors. AUTOLOAD is used
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 to call a subroutine on each adaptor and merge the results.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 =head1 METHODS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 package Bio::EnsEMBL::DBSQL::MergedAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 use vars qw(@ISA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 use Bio::EnsEMBL::Utils::Exception qw(throw warning deprecate);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 use Bio::EnsEMBL::Utils::Argument qw(rearrange);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 use Bio::EnsEMBL::Registry;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 my $reg = "Bio::EnsEMBL::Registry";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 =head2 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 Arg [SPECIES]: (optional) string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 species name to get adaptors for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 Arg [TYPE] : (optional) string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 type to get adaptors for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 Arg [GROUPS] : (optional) ref to list
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 Example : $MergedAdaptor = new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 : Bio::EnsEMBL::DBSQL::MergedAdaptor(-species=> 'human', -type =>'Population', -groups => ['Sanger','Ensembl']);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 Description: Creates a new MergedAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 Returntype : Bio::EnsEMBL::DBSQL::MergedAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 Exceptions : throws if species or type not specified
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 : Under development
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 my ($class,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 my $self ={};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 bless $self,$class;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 my ($species, $type, $groups) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 rearrange([qw(SPECIES TYPE GROUPS)], @args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 if(!defined($species)|| !defined($type)){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 die "Species and Type must be specified\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 my @adaps;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 if (!defined ($groups)){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 #get all adaptors for that species and type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 @adaps = @{$reg->get_all_adaptors(-species => $species, -type => $type)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 #get only specified adaptors for the particular groups
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 foreach my $group (@{$groups}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 push @adaps, $reg->get_adaptor($species,$group,$type);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 my @list =();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 push(@list,@adaps);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 $self->{'list'}= \@list;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 =head2 add_list
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 Example : $MergedAdaptor->add_list(@adaptors);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 Description: adds a list of adaptors to the Merged adaptor list.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 : Under development
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 sub add_list{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 my ($self, @arr) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 foreach my $adap (@arr){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 $self->add_adaptor($adap);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 =head2 add_adaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 Example : $MergedAdaptor->add_adaptor(@adaptors);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 Description: adds an adaptor to the Merged adaptor list.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 : Under development
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 sub add_adaptor{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 my ($self,$adaptor)=@_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 if(!defined ($self->{'list'})){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 my @list =();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 push(@list,$adaptor);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 $self->{'list'}= \@list;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 push(@{$self->{'list'}},$adaptor);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 sub printit{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 my ($self)=@_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 foreach my $adaptor (@{$self->{'list'}}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 print "printit $adaptor\t".$adaptor->db->group()."\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 use vars '$AUTOLOAD';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 sub AUTOLOAD {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 my ($self,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 my @array_return=();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 my $ref_return = undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 $AUTOLOAD =~ /^.*::(\w+)+$/ ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 my $sub = $1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 foreach my $adaptor (@{$self->{'list'}}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 my $ref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 if($adaptor->can($sub)){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 $ref = $adaptor->$sub(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 if( ref($ref) eq 'ARRAY' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 push @array_return, @{$ref};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 push @array_return, $ref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 else{ # end of can
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 warn("In Merged Adaptor $adaptor cannot call sub $sub");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 return \@array_return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 sub DESTROY{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 1;