diff variant_effect_predictor/Bio/EnsEMBL/Variation/BaseStructuralVariation.pm @ 0:1f6dce3d34e0

Uploaded
author mahtabm
date Thu, 11 Apr 2013 02:01:53 -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/BaseStructuralVariation.pm	Thu Apr 11 02:01:53 2013 -0400
@@ -0,0 +1,568 @@
+=head1 LICENSE
+
+ Copyright (c) 1999-2012 The European Bioinformatics Institute and
+ Genome Research Limited.  All rights reserved.
+
+ This software is distributed under a modified Apache license.
+ For license details, please see
+
+   http://www.ensembl.org/info/about/code_licence.html
+
+=head1 CONTACT
+
+ Please email comments or questions to the public Ensembl
+ developers list at <dev@ensembl.org>.
+
+ Questions may also be sent to the Ensembl help desk at
+ <helpdesk@ensembl.org>.
+
+=cut
+
+# Ensembl module for Bio::EnsEMBL::Variation::BaseStructuralVariation
+#
+# Copyright (c) 2011 Ensembl
+#
+
+
+=head1 NAME
+
+Bio::EnsEMBL::Variation::BaseStructuralVariation - Ensembl representation of a structural variant.
+
+=head1 SYNOPSIS
+
+    # Structural variation representing a CNV
+    $sv = Bio::EnsEMBL::Variation::StructuralVariation->new
+       (-variation_name => 'esv25480',
+				-class_so_term => 'structural_variant',
+				-source => 'DGVa',
+				-source_description => 'Database of Genomic Variants Archive',
+				-study_name => 'estd20',
+				-study_description => 'Conrad 2009 "Origins and functional impact of copy number variation in the human genome." PMID:19812545 [remapped from build NCBI36]',
+				-study_url => 'ftp://ftp.ebi.ac.uk/pub/databases/dgva/estd20_Conrad_et_al_2009',
+				-external_reference => 'pubmed/19812545');
+
+    ...
+
+    print $sv->name(), ":", $sv->var_class();
+
+=head1 DESCRIPTION
+
+This is a class representing a structural variation from the
+ensembl-variation database. A structural variant may have a copy number variation, a tandem duplication, 
+an inversion of the sequence or others structural variations. 
+
+The position of a StructuralVariation object on the Genome is represented
+by the B<Bio::EnsEMBL::Variation::StructuralVariationFeature> class.
+
+=head1 METHODS
+
+=cut
+
+use strict;
+use warnings;
+
+package Bio::EnsEMBL::Variation::BaseStructuralVariation;
+
+use Bio::EnsEMBL::Storable;
+use Bio::EnsEMBL::Utils::Exception qw(throw warning deprecate);
+use Bio::EnsEMBL::Utils::Argument  qw(rearrange);
+use Bio::EnsEMBL::Variation::Utils::Constants qw(%VARIATION_CLASSES); 
+use Bio::EnsEMBL::Variation::Failable;
+our @ISA = ('Bio::EnsEMBL::Storable','Bio::EnsEMBL::Variation::Failable');
+
+=head2 new
+
+  Arg [-dbID] :
+    see superclass constructor
+
+  Arg [-ADAPTOR] :
+    see superclass constructor
+
+  Arg [-VARIATION_NAME] :
+    string - the name of the structural variant.
+		
+	Arg [-CLASS_SO_TERM] :
+		string - the sequence ontology term defining the class of the structural variant.
+		
+  Arg [-SOURCE] :
+    string - the name of the source where the structural variant comes from
+	
+  Arg [-SOURCE_DESCRIPTION] :
+	  string - description of the source
+
+  Arg [-TYPE] :
+     string - the class of structural variant e.g. 'copy_number_variation'
+	
+	Arg [-STUDY] :
+    object ref - the study object describing where the structural variant comes from.
+	
+	Arg [-VALIDATION_STATUS] :
+	  string - the status of the structural variant (e.g. validated, not validated, ...)
+	
+	Arg [-IS_EVIDENCE] :
+	  int - flag to inform whether the structural variant is a supporting evidence (1) or not (0).
+		
+	Arg [-IS_SOMATIC] :
+	  int - flag to inform whether the structural variant is a somatic (1) or germline (0).
+		
+  Example for a structural variation:
+    $sv = Bio::EnsEMBL::Variation::StructuralVariation->new
+       (-variation_name => 'esv25480',
+		    -class_so_term => 'copy_number_variation',
+		    -source => 'DGVa',
+		    -source_description => 'Database of Genomic Variants Archive',
+		
+  Description: Constructor. Instantiates a new structural variant object.
+  Returntype : Bio::EnsEMBL::Variation::StructuralVariation or 
+	             Bio::EnsEMBL::Variation::SupportingStructuralVariation
+  Exceptions : none
+  Caller     : general
+  Status     : At Risk
+
+=cut
+
+sub new {
+  my $caller = shift;
+  my $class = ref($caller) || $caller;
+  
+  my (
+		$dbID,
+		$adaptor,
+    $var_name,
+    $source, 
+    $source_version, 
+    $source_description, 
+    $class_so_term,
+    $study,
+		$validation_status,
+		$is_evidence,
+		$is_somatic
+  ) = rearrange([qw(
+					dbID
+					ADAPTOR
+          VARIATION_NAME
+          SOURCE 
+          SOURCE_VERSION
+          SOURCE_DESCRIPTION 
+          CLASS_SO_TERM
+          STUDY
+					VALIDATION_STATES
+					IS_EVIDENCE
+					IS_SOMATIC
+    )], @_);
+		
+	my $self = bless {
+		'dbID'               => $dbID,
+		'adaptor'            => $adaptor,
+  	'variation_name'     => $var_name,
+  	'source'             => $source,
+  	'source_version'     => $source_version,
+  	'source_description' => $source_description,
+  	'class_SO_term'      => $class_so_term,
+  	'study'              => $study,
+		'validation_status'  => $validation_status,
+		'is_evidence'        => $is_evidence || 0,
+		'is_somatic'         => $is_somatic || 0,
+	};
+  return $self;
+}
+
+
+
+sub new_fast {
+  my $class = shift;
+  my $hashref = shift;
+  return bless $hashref, $class;
+}
+
+
+=head2 display_id
+
+  Arg [1]    : none
+  Example    : print $sv->display_id(), "\n";
+  Description: Returns the 'display' identifier for this structural variant.
+  Returntype : string
+  Exceptions : none
+  Caller     : webcode
+  Status     : At Risk
+
+=cut
+
+sub display_id {
+  my $self = shift;
+  return $self->{'variation_name'} || '';
+}
+
+
+
+=head2 variation_name
+
+  Arg [1]    : string $newval (optional)
+               The new value to set the variation_name attribute to
+  Example    : $variation_name = $obj->variation_name()
+  Description: Getter/Setter for the variation_name attribute.  This is the
+               name of the variation associated with this feature.
+  Returntype : string
+  Exceptions : none
+  Caller     : general
+  Status     : Stable
+
+=cut
+
+sub variation_name{
+  my $self = shift;
+  return $self->{'variation_name'} = shift if(@_);
+  return $self->{'variation_name'};
+}
+
+=head2 var_class
+
+    Args         : None
+    Example      : my $sv_class = $sv->var_class()
+    Description  : Getter/setter for the class of structural variant
+    ReturnType   : String
+    Exceptions   : none
+    Caller       : General
+    Status       : At Risk
+
+=cut
+
+sub var_class {
+	my $self = shift;
+    
+	unless ($self->{class_display_term}) {
+        my $display_term = $VARIATION_CLASSES{$self->{class_SO_term}}->{display_term};
+
+        warn "No display term for SO term: ".$self->{class_SO_term} unless $display_term;
+
+        $self->{class_display_term} = $display_term || $self->{class_SO_term};
+    }
+
+	return $self->{class_display_term};
+}
+
+
+=head2 class_SO_term
+
+    Args         : None
+    Example      : my $sv_so_term = $svf->class_SO_term()
+    Description  : Getter for the class of structural variant, returning the SO term
+    ReturnType   : String
+    Exceptions   : none
+    Caller       : General
+    Status       : At Risk
+
+=cut
+
+sub class_SO_term {
+	my $self = shift;
+
+	return $self->{class_SO_term};
+}
+
+
+=head2 source
+
+  Arg [1]    : string $source (optional)
+               The new value to set the source attribute to
+  Example    : $source = $svf->source()
+  Description: Getter/Setter for the source attribute
+  Returntype : string
+  Exceptions : none
+  Caller     : general
+  Status     : At Risk
+
+=cut
+
+sub source {
+  my $self = shift;
+  return $self->{'source'} = shift if(@_);
+  return $self->{'source'};
+}
+
+
+=head2 source_version
+
+  Arg [1]    : string $source_version (optional)
+               The new value to set the source_version attribute to
+  Example    : $source_version = $svf->source_version()
+  Description: Getter/Setter for the source_version attribute
+  Returntype : string
+  Exceptions : none
+  Caller     : general
+  Status     : At Risk
+
+=cut
+
+sub source_version {
+  my $self = shift;
+  return $self->{'source_version'} = shift if(@_);
+  return $self->{'source_version'};
+}
+
+
+=head2 source_description
+
+  Arg [1]    : string $source_description (optional)
+               The new value to set the source_description attribute to
+  Example    : $source_description = $svf->source_description()
+  Description: Getter/Setter for the source_description attribute
+  Returntype : string
+  Exceptions : none
+  Caller     : general
+  Status     : At Risk
+
+=cut
+
+sub source_description {
+  my $self = shift;
+  return $self->{'source_description'} = shift if(@_);
+  return $self->{'source_description'};
+}
+
+
+=head2 get_all_validation_states
+
+  Arg [1]    : none
+  Example    : my @vstates = @{$v->get_all_validation_states()};
+  Description: Retrieves all validation states for this structural variation. Current
+               possible validation statuses are 'validated','not validated',
+               'high quality'
+  Returntype : reference to list of strings
+  Exceptions : none
+  Caller     : general
+  Status     : At Risk
+
+=cut
+
+sub get_all_validation_states {
+  my $self = shift;
+
+  return $self->{'validation_status'} || [];
+}
+
+
+=head2 is_evidence
+
+  Arg [1]    : int $flag (optional)
+  Example    : $is_evidence = $obj->is_evidence()
+  Description: Getter/Setter of a flag to inform whether the structural variant is a 
+	             supporting evidence (1) or not (0).
+  Returntype : int
+  Exceptions : none
+  Caller     : general
+  Status     : Stable
+
+=cut
+
+sub is_evidence{
+  my $self = shift;
+  return $self->{'is_evidence'} = shift if(@_);
+  return $self->{'is_evidence'};
+}
+
+=head2 is_somatic
+
+  Arg [1]    : int $flag (optional)
+  Example    : $is_somatic = $obj->is_somatic()
+  Description: Getter/Setter of a flag to inform whether the structural variant is somatic (1) or germline (0).
+  Returntype : int
+  Exceptions : none
+  Caller     : general
+  Status     : Stable
+
+=cut
+
+sub is_somatic{
+  my $self = shift;
+  return $self->{'is_somatic'} = shift if(@_);
+  return $self->{'is_somatic'};
+}
+
+
+=head2 study
+
+  Arg [1]    : Bio::EnsEMBL::Variation::Study (optional)
+  Example    : $study = $sv->study()
+  Description: Getter/Setter for the study object
+  Returntype : Bio::EnsEMBL::Variation::Study
+  Exceptions : none
+  Caller     : general
+  Status     : At Risk
+
+=cut
+
+sub study {
+  my $self = shift;
+  return $self->{'study'} = shift if(@_);
+  return $self->{'study'};
+}
+
+
+=head2 study_name
+
+  Arg [1]    : string $study (optional)
+               The new value to set the study attribute to
+  Example    : $study = $sv->study()
+  Description: Getter/Setter for the study attribute
+  Returntype : string
+  Exceptions : none
+  Caller     : general
+  Status     : Deprecated
+
+=cut
+
+sub study_name {
+  my $self = shift;
+	deprecate('Use the method "study" instead (returns a Bio::EnsEMBL::Variation::Study object).');
+	return undef if (!$self->study);
+  return $self->study->name = shift if(@_);
+  return $self->study->name;
+}
+
+
+
+=head2 study_description
+
+  Arg [1]    : string $study_description (optional)
+               The new value to set the study_description attribute to
+  Example    : $study_description = $sv->study_description()
+  Description: Getter/Setter for the study_description attribute
+  Returntype : string
+  Exceptions : none
+  Caller     : general
+  Status     : Deprecated
+
+=cut
+
+sub study_description {
+  my $self = shift;
+	deprecate('Use the method "study" instead (returns a Bio::EnsEMBL::Variation::Study object).');
+	return undef if (!$self->study);
+  return $self->study->description = shift if(@_);
+  return $self->study->description;
+}
+
+=head2 study_url
+
+  Arg [1]    : string $newval (optional)
+               The new value to set the study_url attribute to
+  Example    : $paper = $obj->study_url()
+  Description: Getter/Setter for the study_url attribute.This is the link to the website where the data are stored.
+  Returntype : string
+  Exceptions : none
+  Caller     : general
+  Status     : Deprecated
+
+=cut
+
+sub study_url{
+  my $self = shift;
+	deprecate('Use the method "study" instead (returns a Bio::EnsEMBL::Variation::Study object).');
+	return undef if (!$self->study);
+  return $self->study->url = shift if(@_);
+  return $self->study->url;
+}
+
+
+=head2 external_reference
+
+  Arg [1]    : string $newval (optional)
+               The new value to set the external reference attribute to
+  Example    : $paper = $obj->external_reference()
+  Description: Getter/Setter for the external reference attribute. This is the
+               pubmed/id or project name associated with this study.
+  Returntype : string
+  Exceptions : none
+  Caller     : general
+  Status     : Deprecated
+
+=cut
+
+sub external_reference{
+  my $self = shift;
+	deprecate('Use the method "study" instead (returns a Bio::EnsEMBL::Variation::Study object).');
+	return undef if (!$self->study);
+  return $self->study->external_reference = shift if(@_);
+  return $self->study->external_reference;
+}
+
+
+=head2 get_all_StructuralVariationFeatures
+
+  Args        : None
+  Example     : $svfs = $sv->get_all_StructuralVariationFeatures();
+  Description : Retrieves all StructuralVariationFeature for this structural variant
+  ReturnType  : reference to list of Bio::EnsEMBL::Variation::StructuralVariationFeature
+  Exceptions  : None
+  Caller      : general
+  Status      : At Risk
+
+=cut
+
+sub get_all_StructuralVariationFeatures{
+  my $self = shift;
+  
+  if(defined $self->{'adaptor'}) {
+  
+  	# get structural variation feature adaptor
+  	my $svf_adaptor = $self->{'adaptor'}->db()->get_StructuralVariationFeatureAdaptor();
+  
+  	return $svf_adaptor->fetch_all_by_StructuralVariation($self);
+  }
+  else {
+  	warn("No variation database attached");
+  	return [];
+  }
+}
+
+
+=head2 get_all_StructuralVariationAnnotations
+
+  Args        : None
+  Example     : $svas = $sv->get_all_StructuralVariationAnnotations();
+  Description : Retrieves all get_all_StructuralVariationAnnotation for this structural variant
+  ReturnType  : reference to list of Bio::EnsEMBL::Variation::StructuralVariationAnnotation
+  Exceptions  : None
+  Caller      : general
+  Status      : At Risk
+
+=cut
+
+sub get_all_StructuralVariationAnnotations{
+  my $self = shift;
+  
+  if(defined $self->{'adaptor'}) {
+  
+  	# get structural variation annotation adaptor
+  	my $sva_adaptor = $self->{'adaptor'}->db()->get_StructuralVariationAnnotationAdaptor();
+  
+  	return $sva_adaptor->fetch_all_by_StructuralVariation($self);
+  }
+  else {
+  	warn("No variation database attached");
+  	return [];
+  }
+}
+
+
+=head2 summary_as_hash
+
+  Example       : $sv_summary = $sv->summary_as_hash();
+  Description   : Retrieves a textual summary of this StructuralVariation object.
+  Returns       : hashref of descriptive strings
+
+=cut
+
+sub summary_as_hash {
+	my $self = shift;
+	my %summary;
+	$summary{'display_id'} = $self->display_id;
+	$summary{'study_name'} = $self->study_name;
+	$summary{'study_description'} = $self->study_description;
+	$summary{'class'} = $self->var_class;
+	return \%summary;
+
+}
+
+1;