diff variant_effect_predictor/Bio/EnsEMBL/Utils/EprofStack.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/Utils/EprofStack.pm	Fri Aug 03 10:04:48 2012 -0400
@@ -0,0 +1,290 @@
+=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
+
+Bio::EnsEMBL::Util::EprofStack - DESCRIPTION of Object
+
+=head1 SYNOPSIS
+
+=head1 DESCRIPTION
+
+=head1 METHODS
+
+=cut
+
+package Bio::EnsEMBL::Utils::EprofStack;
+
+use strict;
+use warnings;
+
+use POSIX;
+
+use Bio::EnsEMBL::Utils::Exception ('warning');
+
+BEGIN {
+  eval {
+    require Time::HiRes;
+    Time::HiRes->import('time');
+  };
+}
+
+sub new {
+  my ( $proto, $name ) = @_;
+
+  my $class = ref($proto) || $proto;
+
+  my $self = bless( { 'is_active'       => 0,
+                      'total_time'      => 0,
+                      'total_time_time' => 0,
+                      'max_time'        => 0,
+                      'min_time'        => 999999999,
+                      'number'          => 0,
+                      'tag'             => $name
+                    },
+                    $class );
+
+  return $self;
+}
+
+=head2 push_stack
+
+ Title   : push_stack
+ Usage   :
+ Function:
+ Example :
+ Returns : 
+ Args    :
+
+
+=cut
+
+sub push_stack {
+  my ( $self, @args ) = @_;
+
+  if ( $self->{'is_active'} == 1 ) {
+    warning(
+             sprintf(     "Attempting to push stack on tag '%s' "
+                        . "when active. Discarding previous push."
+                        . $self->tag() ) );
+  }
+
+  # my ( $user, $sys ) = times();
+  # $self->{'current_start'} = (POSIX::times)[0];
+
+  $self->{'current_start'} = time();
+  $self->{'is_active'}     = 1;
+}
+
+=head2 pop_stack
+
+ Title   : pop_stack
+ Usage   :
+ Function:
+ Example :
+ Returns : 
+ Args    :
+
+
+=cut
+
+sub pop_stack {
+  my ( $self, @args ) = @_;
+
+  if ( $self->{'is_active'} == 0 ) {
+    warning(
+             sprintf( "Attempting to pop stack on tag '%s' "
+                        . "when not active. Ignoring.",
+                      $self->tag() ) );
+  }
+
+  # my ( $user, $sys ) = times();
+  # my $clocktime =
+  #   ( (POSIX::times)[0] - $self->{'current_start'} )/
+  #   POSIX::sysconf(&POSIX::_SC_CLK_TCK);
+
+  my $clocktime = time() - $self->{'current_start'};
+
+  if ( $self->{'max_time'} < $clocktime ) {
+    $self->{'max_time'} = $clocktime;
+  }
+  if ( $self->{'min_time'} > $clocktime ) {
+    $self->{'min_time'} = $clocktime;
+  }
+
+  $self->{'total_time'}      += $clocktime;
+  $self->{'total_time_time'} += $clocktime*$clocktime;
+  $self->{'number'}++;
+  $self->{'is_active'} = 0;
+} ## end sub pop_stack
+
+=head2 total_time_time
+
+ Title   : total_time_time
+ Usage   : $obj->total_time_time($newval)
+ Function: 
+ Returns : value of total_time_time
+ Args    : newvalue (optional)
+
+
+=cut
+
+sub total_time_time {
+  my ( $self, $value ) = @_;
+
+  if ( defined($value) ) { $self->{'total_time_time'} = $value }
+
+  return $self->{'total_time_time'};
+}
+
+=head2 max_time
+
+ Title   : max_time
+ Usage   : $obj->max_time($newval)
+ Function: 
+ Returns : value of max_time
+ Args    : newvalue (optional)
+
+
+=cut
+
+sub max_time {
+  my ( $self, $value ) = @_;
+
+  if ( defined($value) ) { $self->{'max_time'} = $value }
+
+  return $self->{'max_time'};
+}
+
+=head2 min_time
+
+ Title   : min_time
+ Usage   : $obj->min_time($newval)
+ Function: 
+ Returns : value of min_time
+ Args    : newvalue (optional)
+
+
+=cut
+
+sub min_time {
+  my ( $self, $value ) = @_;
+
+  if ( defined($value) ) { $self->{'min_time'} = $value }
+
+  return $self->{'min_time'};
+}
+
+=head2 total_time
+
+ Title   : total_time
+ Usage   : $obj->total_time($newval)
+ Function: 
+ Returns : value of total_time
+ Args    : newvalue (optional)
+
+
+=cut
+
+sub total_time {
+  my ( $self, $value ) = @_;
+
+  if ( defined($value) ) { $self->{'total_time'} = $value }
+
+  return $self->{'total_time'};
+}
+
+=head2 number
+
+ Title   : number
+ Usage   : $obj->number($newval)
+ Function: 
+ Returns : value of number
+ Args    : newvalue (optional)
+
+
+=cut
+
+sub number {
+  my ( $self, $value ) = @_;
+
+  if ( defined($value) ) { $self->{'number'} = $value }
+
+  return $self->{'number'};
+}
+
+=head2 is_active
+
+ Title   : is_active
+ Usage   : $obj->is_active($newval)
+ Function: 
+ Returns : value of is_active
+ Args    : newvalue (optional)
+
+
+=cut
+
+sub is_active {
+  my ( $self, $value ) = @_;
+
+  if ( defined($value) ) { $self->{'is_active'} = $value }
+
+  return $self->{'is_active'};
+}
+
+=head2 current_start
+
+ Title   : current_start
+ Usage   : $obj->current_start($newval)
+ Function: 
+ Returns : value of current_start
+ Args    : newvalue (optional)
+
+
+=cut
+
+sub current_start {
+  my ( $self, $value ) = @_;
+
+  if ( defined($value) ) { $self->{'current_start'} = $value }
+
+  return $self->{'current_start'};
+}
+
+=head2 tag
+
+ Title   : tag
+ Usage   : $obj->tag($newval)
+ Function: 
+ Returns : value of tag
+ Args    : newvalue (optional)
+
+
+=cut
+
+sub tag {
+  my ( $self, $value ) = @_;
+
+  if ( defined($value) ) { $self->{'tag'} = $value }
+
+  return $self->{'tag'};
+}
+
+1;