diff variant_effect_predictor/Bio/EnsEMBL/Utils/VegaCuration/Gene.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/Utils/VegaCuration/Gene.pm	Thu Apr 11 02:01:53 2013 -0400
@@ -0,0 +1,73 @@
+=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
+
+=head1 NAME
+
+=head1 SYNOPSIS
+
+=head1 DESCRIPTION
+
+=head1 METHODS
+
+=cut
+
+package Bio::EnsEMBL::Utils::VegaCuration::Gene;
+
+use strict;
+use warnings;
+use vars qw(@ISA);
+
+use Bio::EnsEMBL::Utils::ConversionSupport;
+
+@ISA = qw(Bio::EnsEMBL::Utils::ConversionSupport);
+
+
+=head2 find_gaps
+
+   Args       : arrayref of B::E::Transcripts
+   Example    : my $gaps = find_gaps($all_transcripts)
+   Description: identifies regions of a gene that are not covered by any transcript
+   Returntype : int
+   Exceptions : none
+   Caller     : internal
+
+=cut
+
+sub find_gaps {
+  my $self = shift;
+  my ($all_transcripts) = @_;
+  my $gaps = 0;
+  my @sorted_transcripts = sort {$a->start <=> $b->start || $b->end <=> $a->end} @{$all_transcripts};
+  if ( my $first_transcript = shift @sorted_transcripts ) {
+    my $pos = $first_transcript->end;
+    foreach my $transcript (@sorted_transcripts) {
+      next if ($transcript->end < $pos );
+      if ($transcript->start < $pos && $transcript->end > $pos ) {
+	$pos = $transcript->end;			
+	next;
+      }
+      elsif ($transcript->end > $pos) {
+	$gaps++;
+	$pos = $transcript->end;
+      }
+    }
+  }
+  return $gaps;		
+}