comparison variant_effect_predictor/Bio/EnsEMBL/Variation/BaseStructuralVariation.pm @ 0:21066c0abaf5 draft

Uploaded
author willmclaren
date Fri, 03 Aug 2012 10:04:48 -0400
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:21066c0abaf5
1 =head1 LICENSE
2
3 Copyright (c) 1999-2012 The European Bioinformatics Institute and
4 Genome Research Limited. All rights reserved.
5
6 This software is distributed under a modified Apache license.
7 For license details, please see
8
9 http://www.ensembl.org/info/about/code_licence.html
10
11 =head1 CONTACT
12
13 Please email comments or questions to the public Ensembl
14 developers list at <dev@ensembl.org>.
15
16 Questions may also be sent to the Ensembl help desk at
17 <helpdesk@ensembl.org>.
18
19 =cut
20
21 # Ensembl module for Bio::EnsEMBL::Variation::BaseStructuralVariation
22 #
23 # Copyright (c) 2011 Ensembl
24 #
25
26
27 =head1 NAME
28
29 Bio::EnsEMBL::Variation::BaseStructuralVariation - Ensembl representation of a structural variant.
30
31 =head1 SYNOPSIS
32
33 # Structural variation representing a CNV
34 $sv = Bio::EnsEMBL::Variation::StructuralVariation->new
35 (-variation_name => 'esv25480',
36 -class_so_term => 'structural_variant',
37 -source => 'DGVa',
38 -source_description => 'Database of Genomic Variants Archive',
39 -study_name => 'estd20',
40 -study_description => 'Conrad 2009 "Origins and functional impact of copy number variation in the human genome." PMID:19812545 [remapped from build NCBI36]',
41 -study_url => 'ftp://ftp.ebi.ac.uk/pub/databases/dgva/estd20_Conrad_et_al_2009',
42 -external_reference => 'pubmed/19812545');
43
44 ...
45
46 print $sv->name(), ":", $sv->var_class();
47
48 =head1 DESCRIPTION
49
50 This is a class representing a structural variation from the
51 ensembl-variation database. A structural variant may have a copy number variation, a tandem duplication,
52 an inversion of the sequence or others structural variations.
53
54 The position of a StructuralVariation object on the Genome is represented
55 by the B<Bio::EnsEMBL::Variation::StructuralVariationFeature> class.
56
57 =head1 METHODS
58
59 =cut
60
61 use strict;
62 use warnings;
63
64 package Bio::EnsEMBL::Variation::BaseStructuralVariation;
65
66 use Bio::EnsEMBL::Storable;
67 use Bio::EnsEMBL::Utils::Exception qw(throw warning deprecate);
68 use Bio::EnsEMBL::Utils::Argument qw(rearrange);
69 use Bio::EnsEMBL::Variation::Utils::Constants qw(%VARIATION_CLASSES);
70 use Bio::EnsEMBL::Variation::Failable;
71 our @ISA = ('Bio::EnsEMBL::Storable','Bio::EnsEMBL::Variation::Failable');
72
73 =head2 new
74
75 Arg [-dbID] :
76 see superclass constructor
77
78 Arg [-ADAPTOR] :
79 see superclass constructor
80
81 Arg [-VARIATION_NAME] :
82 string - the name of the structural variant.
83
84 Arg [-CLASS_SO_TERM] :
85 string - the sequence ontology term defining the class of the structural variant.
86
87 Arg [-SOURCE] :
88 string - the name of the source where the structural variant comes from
89
90 Arg [-SOURCE_DESCRIPTION] :
91 string - description of the source
92
93 Arg [-TYPE] :
94 string - the class of structural variant e.g. 'copy_number_variation'
95
96 Arg [-STUDY] :
97 object ref - the study object describing where the structural variant comes from.
98
99 Arg [-VALIDATION_STATUS] :
100 string - the status of the structural variant (e.g. validated, not validated, ...)
101
102 Arg [-IS_EVIDENCE] :
103 int - flag to inform whether the structural variant is a supporting evidence (1) or not (0).
104
105 Arg [-IS_SOMATIC] :
106 int - flag to inform whether the structural variant is a somatic (1) or germline (0).
107
108 Example for a structural variation:
109 $sv = Bio::EnsEMBL::Variation::StructuralVariation->new
110 (-variation_name => 'esv25480',
111 -class_so_term => 'copy_number_variation',
112 -source => 'DGVa',
113 -source_description => 'Database of Genomic Variants Archive',
114
115 Description: Constructor. Instantiates a new structural variant object.
116 Returntype : Bio::EnsEMBL::Variation::StructuralVariation or
117 Bio::EnsEMBL::Variation::SupportingStructuralVariation
118 Exceptions : none
119 Caller : general
120 Status : At Risk
121
122 =cut
123
124 sub new {
125 my $caller = shift;
126 my $class = ref($caller) || $caller;
127
128 my (
129 $dbID,
130 $adaptor,
131 $var_name,
132 $source,
133 $source_version,
134 $source_description,
135 $class_so_term,
136 $study,
137 $validation_status,
138 $is_evidence,
139 $is_somatic
140 ) = rearrange([qw(
141 dbID
142 ADAPTOR
143 VARIATION_NAME
144 SOURCE
145 SOURCE_VERSION
146 SOURCE_DESCRIPTION
147 CLASS_SO_TERM
148 STUDY
149 VALIDATION_STATES
150 IS_EVIDENCE
151 IS_SOMATIC
152 )], @_);
153
154 my $self = bless {
155 'dbID' => $dbID,
156 'adaptor' => $adaptor,
157 'variation_name' => $var_name,
158 'source' => $source,
159 'source_version' => $source_version,
160 'source_description' => $source_description,
161 'class_SO_term' => $class_so_term,
162 'study' => $study,
163 'validation_status' => $validation_status,
164 'is_evidence' => $is_evidence || 0,
165 'is_somatic' => $is_somatic || 0,
166 };
167 return $self;
168 }
169
170
171
172 sub new_fast {
173 my $class = shift;
174 my $hashref = shift;
175 return bless $hashref, $class;
176 }
177
178
179 =head2 display_id
180
181 Arg [1] : none
182 Example : print $sv->display_id(), "\n";
183 Description: Returns the 'display' identifier for this structural variant.
184 Returntype : string
185 Exceptions : none
186 Caller : webcode
187 Status : At Risk
188
189 =cut
190
191 sub display_id {
192 my $self = shift;
193 return $self->{'variation_name'} || '';
194 }
195
196
197
198 =head2 variation_name
199
200 Arg [1] : string $newval (optional)
201 The new value to set the variation_name attribute to
202 Example : $variation_name = $obj->variation_name()
203 Description: Getter/Setter for the variation_name attribute. This is the
204 name of the variation associated with this feature.
205 Returntype : string
206 Exceptions : none
207 Caller : general
208 Status : Stable
209
210 =cut
211
212 sub variation_name{
213 my $self = shift;
214 return $self->{'variation_name'} = shift if(@_);
215 return $self->{'variation_name'};
216 }
217
218 =head2 var_class
219
220 Args : None
221 Example : my $sv_class = $sv->var_class()
222 Description : Getter/setter for the class of structural variant
223 ReturnType : String
224 Exceptions : none
225 Caller : General
226 Status : At Risk
227
228 =cut
229
230 sub var_class {
231 my $self = shift;
232
233 unless ($self->{class_display_term}) {
234 my $display_term = $VARIATION_CLASSES{$self->{class_SO_term}}->{display_term};
235
236 warn "No display term for SO term: ".$self->{class_SO_term} unless $display_term;
237
238 $self->{class_display_term} = $display_term || $self->{class_SO_term};
239 }
240
241 return $self->{class_display_term};
242 }
243
244
245 =head2 class_SO_term
246
247 Args : None
248 Example : my $sv_so_term = $svf->class_SO_term()
249 Description : Getter for the class of structural variant, returning the SO term
250 ReturnType : String
251 Exceptions : none
252 Caller : General
253 Status : At Risk
254
255 =cut
256
257 sub class_SO_term {
258 my $self = shift;
259
260 return $self->{class_SO_term};
261 }
262
263
264 =head2 source
265
266 Arg [1] : string $source (optional)
267 The new value to set the source attribute to
268 Example : $source = $svf->source()
269 Description: Getter/Setter for the source attribute
270 Returntype : string
271 Exceptions : none
272 Caller : general
273 Status : At Risk
274
275 =cut
276
277 sub source {
278 my $self = shift;
279 return $self->{'source'} = shift if(@_);
280 return $self->{'source'};
281 }
282
283
284 =head2 source_version
285
286 Arg [1] : string $source_version (optional)
287 The new value to set the source_version attribute to
288 Example : $source_version = $svf->source_version()
289 Description: Getter/Setter for the source_version attribute
290 Returntype : string
291 Exceptions : none
292 Caller : general
293 Status : At Risk
294
295 =cut
296
297 sub source_version {
298 my $self = shift;
299 return $self->{'source_version'} = shift if(@_);
300 return $self->{'source_version'};
301 }
302
303
304 =head2 source_description
305
306 Arg [1] : string $source_description (optional)
307 The new value to set the source_description attribute to
308 Example : $source_description = $svf->source_description()
309 Description: Getter/Setter for the source_description attribute
310 Returntype : string
311 Exceptions : none
312 Caller : general
313 Status : At Risk
314
315 =cut
316
317 sub source_description {
318 my $self = shift;
319 return $self->{'source_description'} = shift if(@_);
320 return $self->{'source_description'};
321 }
322
323
324 =head2 get_all_validation_states
325
326 Arg [1] : none
327 Example : my @vstates = @{$v->get_all_validation_states()};
328 Description: Retrieves all validation states for this structural variation. Current
329 possible validation statuses are 'validated','not validated',
330 'high quality'
331 Returntype : reference to list of strings
332 Exceptions : none
333 Caller : general
334 Status : At Risk
335
336 =cut
337
338 sub get_all_validation_states {
339 my $self = shift;
340
341 return $self->{'validation_status'} || [];
342 }
343
344
345 =head2 is_evidence
346
347 Arg [1] : int $flag (optional)
348 Example : $is_evidence = $obj->is_evidence()
349 Description: Getter/Setter of a flag to inform whether the structural variant is a
350 supporting evidence (1) or not (0).
351 Returntype : int
352 Exceptions : none
353 Caller : general
354 Status : Stable
355
356 =cut
357
358 sub is_evidence{
359 my $self = shift;
360 return $self->{'is_evidence'} = shift if(@_);
361 return $self->{'is_evidence'};
362 }
363
364 =head2 is_somatic
365
366 Arg [1] : int $flag (optional)
367 Example : $is_somatic = $obj->is_somatic()
368 Description: Getter/Setter of a flag to inform whether the structural variant is somatic (1) or germline (0).
369 Returntype : int
370 Exceptions : none
371 Caller : general
372 Status : Stable
373
374 =cut
375
376 sub is_somatic{
377 my $self = shift;
378 return $self->{'is_somatic'} = shift if(@_);
379 return $self->{'is_somatic'};
380 }
381
382
383 =head2 study
384
385 Arg [1] : Bio::EnsEMBL::Variation::Study (optional)
386 Example : $study = $sv->study()
387 Description: Getter/Setter for the study object
388 Returntype : Bio::EnsEMBL::Variation::Study
389 Exceptions : none
390 Caller : general
391 Status : At Risk
392
393 =cut
394
395 sub study {
396 my $self = shift;
397 return $self->{'study'} = shift if(@_);
398 return $self->{'study'};
399 }
400
401
402 =head2 study_name
403
404 Arg [1] : string $study (optional)
405 The new value to set the study attribute to
406 Example : $study = $sv->study()
407 Description: Getter/Setter for the study attribute
408 Returntype : string
409 Exceptions : none
410 Caller : general
411 Status : Deprecated
412
413 =cut
414
415 sub study_name {
416 my $self = shift;
417 deprecate('Use the method "study" instead (returns a Bio::EnsEMBL::Variation::Study object).');
418 return undef if (!$self->study);
419 return $self->study->name = shift if(@_);
420 return $self->study->name;
421 }
422
423
424
425 =head2 study_description
426
427 Arg [1] : string $study_description (optional)
428 The new value to set the study_description attribute to
429 Example : $study_description = $sv->study_description()
430 Description: Getter/Setter for the study_description attribute
431 Returntype : string
432 Exceptions : none
433 Caller : general
434 Status : Deprecated
435
436 =cut
437
438 sub study_description {
439 my $self = shift;
440 deprecate('Use the method "study" instead (returns a Bio::EnsEMBL::Variation::Study object).');
441 return undef if (!$self->study);
442 return $self->study->description = shift if(@_);
443 return $self->study->description;
444 }
445
446 =head2 study_url
447
448 Arg [1] : string $newval (optional)
449 The new value to set the study_url attribute to
450 Example : $paper = $obj->study_url()
451 Description: Getter/Setter for the study_url attribute.This is the link to the website where the data are stored.
452 Returntype : string
453 Exceptions : none
454 Caller : general
455 Status : Deprecated
456
457 =cut
458
459 sub study_url{
460 my $self = shift;
461 deprecate('Use the method "study" instead (returns a Bio::EnsEMBL::Variation::Study object).');
462 return undef if (!$self->study);
463 return $self->study->url = shift if(@_);
464 return $self->study->url;
465 }
466
467
468 =head2 external_reference
469
470 Arg [1] : string $newval (optional)
471 The new value to set the external reference attribute to
472 Example : $paper = $obj->external_reference()
473 Description: Getter/Setter for the external reference attribute. This is the
474 pubmed/id or project name associated with this study.
475 Returntype : string
476 Exceptions : none
477 Caller : general
478 Status : Deprecated
479
480 =cut
481
482 sub external_reference{
483 my $self = shift;
484 deprecate('Use the method "study" instead (returns a Bio::EnsEMBL::Variation::Study object).');
485 return undef if (!$self->study);
486 return $self->study->external_reference = shift if(@_);
487 return $self->study->external_reference;
488 }
489
490
491 =head2 get_all_StructuralVariationFeatures
492
493 Args : None
494 Example : $svfs = $sv->get_all_StructuralVariationFeatures();
495 Description : Retrieves all StructuralVariationFeature for this structural variant
496 ReturnType : reference to list of Bio::EnsEMBL::Variation::StructuralVariationFeature
497 Exceptions : None
498 Caller : general
499 Status : At Risk
500
501 =cut
502
503 sub get_all_StructuralVariationFeatures{
504 my $self = shift;
505
506 if(defined $self->{'adaptor'}) {
507
508 # get structural variation feature adaptor
509 my $svf_adaptor = $self->{'adaptor'}->db()->get_StructuralVariationFeatureAdaptor();
510
511 return $svf_adaptor->fetch_all_by_StructuralVariation($self);
512 }
513 else {
514 warn("No variation database attached");
515 return [];
516 }
517 }
518
519
520 =head2 get_all_StructuralVariationAnnotations
521
522 Args : None
523 Example : $svas = $sv->get_all_StructuralVariationAnnotations();
524 Description : Retrieves all get_all_StructuralVariationAnnotation for this structural variant
525 ReturnType : reference to list of Bio::EnsEMBL::Variation::StructuralVariationAnnotation
526 Exceptions : None
527 Caller : general
528 Status : At Risk
529
530 =cut
531
532 sub get_all_StructuralVariationAnnotations{
533 my $self = shift;
534
535 if(defined $self->{'adaptor'}) {
536
537 # get structural variation annotation adaptor
538 my $sva_adaptor = $self->{'adaptor'}->db()->get_StructuralVariationAnnotationAdaptor();
539
540 return $sva_adaptor->fetch_all_by_StructuralVariation($self);
541 }
542 else {
543 warn("No variation database attached");
544 return [];
545 }
546 }
547
548
549 =head2 summary_as_hash
550
551 Example : $sv_summary = $sv->summary_as_hash();
552 Description : Retrieves a textual summary of this StructuralVariation object.
553 Returns : hashref of descriptive strings
554
555 =cut
556
557 sub summary_as_hash {
558 my $self = shift;
559 my %summary;
560 $summary{'display_id'} = $self->display_id;
561 $summary{'study_name'} = $self->study_name;
562 $summary{'study_description'} = $self->study_description;
563 $summary{'class'} = $self->var_class;
564 return \%summary;
565
566 }
567
568 1;