Mercurial > repos > willmclaren > ensembl_vep
diff variant_effect_predictor/Bio/EnsEMBL/Variation/StructuralVariationOverlap.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/Variation/StructuralVariationOverlap.pm Fri Aug 03 10:04:48 2012 -0400 @@ -0,0 +1,144 @@ +package Bio::EnsEMBL::Variation::StructuralVariationOverlap; + +use strict; +use warnings; + +use Bio::EnsEMBL::Variation::StructuralVariationOverlapAllele; + +use Bio::EnsEMBL::Utils::Scalar qw(assert_ref); +use Bio::EnsEMBL::Utils::Exception qw(throw warning); +use Bio::EnsEMBL::Utils::Argument qw(rearrange); + +use base qw(Bio::EnsEMBL::Variation::BaseVariationFeatureOverlap); + +sub new { + + my $class = shift; + + my %args = @_; + + # swap a '-structural_variation_feature' argument for a '-base_variation_feature' one for the superclass + + for my $arg (keys %args) { + if (lc($arg) eq '-structural_variation_feature') { + $args{'-base_variation_feature'} = delete $args{$arg}; + } + } + + # call the superclass constructor + my $self = $class->SUPER::new(%args); + + # construct a fake 'allele' + + $self->add_StructuralVariationOverlapAllele( + Bio::EnsEMBL::Variation::StructuralVariationOverlapAllele->new_fast({ + structural_variation_overlap => $self, + }) + ); + + return $self; +} + +sub new_fast { + my ($class, $hashref) = @_; + + # swap a 'structural_variation_feature' argument for a 'base_variation_feature' one for the superclass + + if ($hashref->{structural_variation_feature}) { + $hashref->{base_variation_feature} = delete $hashref->{structural_variation_feature}; + } + + # and call the superclass + + my $self = $class->SUPER::new_fast($hashref); + +# for my $ssv (@{ $self->structural_variation_feature->structural_variation->get_all_SupportingStructuralVariants }) { +# for my $ssvf (@{ $ssv->get_all_StructuralVariationFeatures }) { +# $self->add_StructuralVariationOverlapAllele( +# Bio::EnsEMBL::Variation::StructuralVariationOverlapAllele->new_fast({ +# structural_variation_overlap => $self, +# }) +# ); +# } +# } + + unless (@{ $self->get_all_alternate_StructuralVariationOverlapAlleles }) { + + # construct a fake 'allele' + + $self->add_StructuralVariationOverlapAllele( + Bio::EnsEMBL::Variation::StructuralVariationOverlapAllele->new_fast({ + structural_variation_overlap => $self, + }) + ); + } + + return $self; +} + +sub structural_variation_feature { + my $self = shift; + return $self->base_variation_feature(@_); +} + +=head2 add_StructuralVariationOverlapAllele + + Arg [1] : A Bio::EnsEMBL::Variation::StructuralVariationOverlapAllele instance + Description: Add an allele to this StructuralVariationOverlap + Returntype : none + Exceptions : throws if the argument is not the expected type + Status : At Risk + +=cut + +sub add_StructuralVariationOverlapAllele { + my ($self, $svoa) = @_; + assert_ref($svoa, 'Bio::EnsEMBL::Variation::StructuralVariationOverlapAllele'); + return $self->SUPER::add_BaseVariationFeatureOverlapAllele($svoa); +} + +=head2 get_reference_StructuralVariationOverlapAllele + + Description: Get the object representing the reference allele of this StructuralVariationOverlap + Returntype : Bio::EnsEMBL::Variation::StructuralVariationOverlapAllele instance + Exceptions : none + Status : At Risk + +=cut + +sub get_reference_StructuralVariationOverlapAllele { + my $self = shift; + return $self->SUPER::get_reference_BaseVariationFeatureOverlapAllele(@_); +} + +=head2 get_all_alternate_StructuralVariationOverlapAlleles + + Description: Get a list of the alternate alleles of this StructuralVariationOverlap + Returntype : listref of Bio::EnsEMBL::Variation::StructuralVariationOverlapAllele objects + Exceptions : none + Status : At Risk + +=cut + +sub get_all_alternate_StructuralVariationOverlapAlleles { + my $self = shift; + return $self->SUPER::get_all_alternate_BaseVariationFeatureOverlapAlleles(@_); +} + +=head2 get_all_StructuralVariationOverlapAlleles + + Description: Get a list of the all the alleles, both reference and alternate, of + this StructuralVariationOverlap + Returntype : listref of Bio::EnsEMBL::Variation::StructuralVariationOverlapAllele objects + Exceptions : none + Status : At Risk + +=cut + +sub get_all_StructuralVariationOverlapAlleles { + my $self = shift; + return $self->SUPER::get_all_BaseVariationFeatureOverlapAlleles(@_); +} + +1; +