Mercurial > repos > mahtabm > ensembl
comparison variant_effect_predictor/Bio/Graphics/Util.pm @ 0:1f6dce3d34e0
Uploaded
| author | mahtabm | 
|---|---|
| date | Thu, 11 Apr 2013 02:01:53 -0400 | 
| parents | |
| children | 
   comparison
  equal
  deleted
  inserted
  replaced
| -1:000000000000 | 0:1f6dce3d34e0 | 
|---|---|
| 1 package Bio::Graphics::Util; | |
| 2 | |
| 3 # $Id: Util.pm,v 1.2.2.2 2003/07/06 21:53:55 heikki Exp $ | |
| 4 # Non object-oriented utilities used here-and-there in Bio::Graphics modules | |
| 5 | |
| 6 use strict; | |
| 7 require Exporter; | |
| 8 use vars '@ISA','@EXPORT','@EXPORT_OK'; | |
| 9 @ISA = 'Exporter'; | |
| 10 @EXPORT = 'frame_and_offset'; | |
| 11 | |
| 12 | |
| 13 =over 4 | |
| 14 | |
| 15 =item ($frame,$offset) = frame_and_offset($pos,$strand,$phase) | |
| 16 | |
| 17 Calculate the reading frame for a given genomic position, strand and | |
| 18 phase. The offset is the offset from $pos to the first nucleotide | |
| 19 of the reading frame. | |
| 20 | |
| 21 In a scalar context, returns the frame only. | |
| 22 | |
| 23 =back | |
| 24 | |
| 25 =cut | |
| 26 | |
| 27 sub frame_and_offset { | |
| 28 my ($pos,$strand,$phase) = @_; | |
| 29 $strand ||= +1; | |
| 30 $phase ||= 0; | |
| 31 my $frame = $strand >= 0 | |
| 32 ? ($pos - $phase - 1) % 3 | |
| 33 : (1 - $pos - $phase) % 3; | |
| 34 my $offset = -$phase % 3; | |
| 35 $offset *= -1 if $strand < 0; | |
| 36 return wantarray ? ($frame,$offset) : $frame; | |
| 37 } | |
| 38 | |
| 39 | |
| 40 1; | 
