comparison variant_effect_predictor/Bio/EnsEMBL/Funcgen/ProbeSet.pm @ 0:1f6dce3d34e0

Uploaded
author mahtabm
date Thu, 11 Apr 2013 02:01:53 -0400
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:1f6dce3d34e0
1 #
2 # Ensembl module for Bio::EnsEMBL::Funcgen::ProbeSet
3 #
4
5 =head1 LICENSE
6
7 Copyright (c) 1999-2011 The European Bioinformatics Institute and
8 Genome Research Limited. All rights reserved.
9
10 This software is distributed under a modified Apache license.
11 For license details, please see
12
13 http://www.ensembl.org/info/about/code_licence.html
14
15 =head1 CONTACT
16
17 Please email comments or questions to the public Ensembl
18 developers list at <ensembl-dev@ebi.ac.uk>.
19
20 Questions may also be sent to the Ensembl help desk at
21 <helpdesk@ensembl.org>.
22
23 =head1 NAME
24
25 Bio::EnsEMBL::Funcgen::ProbeSet - A module to represent a probeset.
26
27 =head1 SYNOPSIS
28
29 use Bio::EnsEMBL::Registry;
30 use Bio::EnsEMBL::Funcgen::ProbeSet;
31
32
33 my $reg = Bio::EnsEMBL::Registry->load_adaptors_from_db(-host => 'ensembldb.ensembl.org',
34 -user => 'anonymous');
35
36 my $pset_adaptor = $reg->get_adaptor($species, 'funcgen', 'ProbeSet');
37
38 ### Creating/storing a ProbeSet ###
39
40 my $probe_set = Bio::EnsEMBL::Funcgen::ProbeSet->new(-NAME => 'ProbeSet-1',
41 -SIZE => 1,
42 -FAMILY => "ENCODE REGIONS",#optional
43 );
44
45 $pset_adaptor->store($probe_set);
46
47
48 ### Fetching associated transcripts ###
49 # Generated by the Ensembl array mapping pipeline
50
51 my @dbentries = @{$probe_set->fetch_all_Transcript_DBEntries};
52 my $trans_adaptor = $reg->get_adpator($species, 'core', 'Transcript');
53
54 foreach my $dbe(@dbentries){
55
56 my $tx = $trans_adaptor->fetch_by_stable_id($dbe->primary_id);
57
58 #Print the transcript info and the linkage annotation
59 print $tx->stable_id."\t".$probe_set->name.' '.$dbe->linkage_annotation."\n";
60 }
61
62 #Alternatively these annotations are also available in a transcript centric manner
63 #using the ProbeSetAdaptor
64
65
66 =head1 DESCRIPTION
67
68 A ProbeSet object represents a set of probes on a microarray. The
69 data (currently the name, size, and family) are stored in the probe_set
70 table. ProbeSets are only really relevant for Affy probes, or when
71 avaliable these will be analagous to Nimblegen feature sets.
72
73 For Affy arrays, a probeset can be part of more than one array, containing unique
74 probes.
75
76 #Need to rewrite this bit
77 #Something about array_chip_id i.e. experimental validation etc
78 On each Affy array the probe has a slightly different name. For
79 example, two different complete names for the same probe might be
80 DrosGenome1:AFFX-LysX-5_at:535:35; and Drosophila_2:AFFX-LysX-5_at:460:51;. In
81 the database, these two probes will have the same probe_id. Thus the same
82 Affy probe can have a number of different names and complete names depending on
83 which array it is on.
84
85
86 =head1 SEE ALSO
87
88 Bio::EnsEMBL::Funcgen::ProbeSetAdaptor
89 ensembl-functgenomics/scripts/examples/microarray_annotation_example.pl
90
91 Or for details on how to run the array mapping pipeline see:
92 ensembl-functgenomics/docs/array_mapping.txt
93
94 =cut
95
96 use strict;
97 use warnings;
98
99 package Bio::EnsEMBL::Funcgen::ProbeSet;
100
101 use Bio::EnsEMBL::Utils::Argument qw( rearrange ) ;
102 use Bio::EnsEMBL::Utils::Exception qw( throw warning );
103 use Bio::EnsEMBL::Funcgen::Storable;
104
105 use vars qw(@ISA);
106 @ISA = qw(Bio::EnsEMBL::Funcgen::Storable);
107
108
109 =head2 new
110
111 Arg [-NAME] : string - probeset name
112 Arg [-SIZE] : int - probe set size
113 Will be the same for all probes sets if same probe set
114 is on multiple arrays.
115 Arg [-FAMILY] : string - probe set family, generic descriptor for probe set e.g. ENCODE REGIONS, RANDOM
116 Will be the same for all probes sets if same probe set is on multiple arrays.
117 Example : my $probeset = Bio::EnsEMBL::Funcgen::ProbeSet->new(
118 -NAME => 'ProbeSet-1',
119 -SIZE => 1,
120 -FAMILY => "ENCODE_REGIONS",
121 );
122 Description: Creates a new Bio::EnsEMBL::Funcgen::ProbeSet object.
123 Returntype : Bio::EnsEMBL::Funcgen::ProbeSet
124 Exceptions : Throws if not supplied with probeset name and array chip id(s)
125 Caller : General
126 Status : Medium Risk
127
128 =cut
129
130 sub new {
131 my $caller = shift;
132
133 my $class = ref($caller) || $caller;
134
135 my $self = $class->SUPER::new(@_);
136
137 #warn("The only way to get array names/ids, is to retrieve all the probes!!!");
138
139
140 my (
141 $name, $size,
142 $family
143 ) = rearrange([
144 'NAME', 'SIZE',
145 'FAMILY',
146 ], @_);
147
148
149 $self->name($name) if defined $name;
150 $self->family($family) if defined $family;
151 $self->size($size) if defined $size;
152
153 return $self;
154 }
155
156
157
158 #=head2 get_all_ProbeFeatures
159
160 # Args : None
161 # Example : my $features = $probeset->get_all_ProbeFeatures();
162 # Description: Get all features produced by this probeset. The probeset needs to be
163 # database persistent.
164 # Returntype : Listref of Bio::EnsEMBL::Funcgen::ProbeFeature objects
165 # Exceptions : None
166 # Caller : General
167 # Status : Medium Risk
168
169 #=cut
170
171 sub get_all_ProbeFeatures {
172 my $self = shift;
173
174 throw("Not implemented yet, do we want to do this for ProbeSet or just probe?");
175
176 if ( $self->adaptor() && $self->dbID() ) {
177 return $self->adaptor()->db()->get_ProbeFeatureAdaptor()->fetch_all_by_ProbeSet($self);
178 } else {
179 warning('Need database connection to retrieve Features');
180 return [];
181 }
182 }
183
184 =head2 get_all_Arrays
185
186 Args : None
187 Example : my $arrays = $probeset->get_all_Arrays();
188 Description: Returns all arrays that this probeset is part of. Only works if the
189 probedet was retrieved from the database or created using
190 add_Array_probename.
191 Returntype : Listref of Bio::EnsEMBL::Funcgen::Array objects
192 Exceptions : None
193 Caller : General
194 Status : Medium Risk
195
196 =cut
197
198 sub get_all_Arrays {
199 my $self = shift;
200
201 if (defined $self->{'arrays'}) {
202 return $self->{'arrays'};
203 }
204 else{
205 $self->{arrays} = $self->adaptor->db->get_ArrayAdaptor->fetch_all_by_ProbeSet($self);
206 }
207
208 $self->{arrays}
209 }
210
211
212 =head2 get_all_Probes
213
214 Args : None
215 Example : my @probes = @{$probeset->get_all_Probes();
216 Description: Returns all probes belonging to this ProbeSet
217 Returntype : Listref of Bio::EnsEMBL::Funcgen::Probe objects
218 Exceptions : None
219 Caller : General
220 Status : At Risk
221
222 =cut
223
224 sub get_all_Probes {
225 my $self = shift;
226
227 if (defined $self->{'probes'}) {
228 return $self->{'probes'};
229 }
230 else{
231 $self->{probes} = $self->adaptor->db->get_ProbeAdaptor->fetch_all_by_ProbeSet($self);
232 }
233
234 $self->{probes}
235 }
236
237
238
239 #sub get_all_array_chips_ids?
240 #sub get_all_Results? from_Experiment?
241
242 =head2 name
243
244 Arg [1] : string - aprobeset name
245 Example : my $probesetname = $probeset->name('probeset-1');
246 Description: Getter/Setter for the name attribute of ProbeSet objects.
247 Returntype : string
248 Exceptions : None
249 Caller : General
250 Status : Medium Risk
251
252 =cut
253
254 sub name {
255 my $self = shift;
256 $self->{'name'} = shift if @_;
257 return $self->{'name'};
258 }
259
260
261 =head2 family
262
263 Arg [1] : (optional) string - family
264 Example : my $family = $probe->family();
265 Description: Getter and setter of family attribute for ProbeSet
266 objects. e.g. EXPERIMENTAL or CONTROL
267 Returntype : string
268 Exceptions : None
269 Caller : General
270 Status : Medium Risk
271
272 =cut
273
274 sub family {
275 my $self = shift;
276 $self->{'family'} = shift if @_;
277 return $self->{'family'};
278 }
279
280 =head2 size
281
282 Arg [1] : (optional) int - probeset size
283 Example : my $probeset_size = $probeset->size();
284 Description: Getter and setter of probeset size attribute for ProbeSet
285 objects.
286 Returntype : int
287 Exceptions : None
288 Caller : General
289 Status : Medium Risk
290
291 =cut
292
293 sub size {
294 my $self = shift;
295 $self->{'size'} = shift if @_;
296 return $self->{'size'};
297 }
298
299 1;
300