[Bioperl-l] PROPOSED new method Bio::Range->offsetStranded

Cook, Malcolm MEC at stowers-institute.org
Tue Jan 9 23:05:09 UTC 2007


Hi,

I'd like to commit changes to Bio::RangeI which defined offsetStranded
to allows the following tests to pass in Bio/Range.t

$r = Bio::Range->new(-start => 30, -end => 40, -strand => -1);
ok ($r->offsetStranded(-5,10)->toString, '(20, 45) strand=-1');
ok ($r->offsetStranded(+5,-10)->toString, '(30, 40) strand=-1');
$r->strand(1);
ok ($r->offsetStranded(-5,10)->toString, '(25, 50) strand=1');
ok ($r->offsetStranded(+5,-10)->toString, '(30, 40) strand=1');


Here's the implementation.

=head2 offsetStranded

    Title    : offsetStranded
    Usage    : $rnge->ofsetStranded($fiveprime_offset,
$threeprime_offset)
    Function : destructively modifies RangeI implementing object to
               offset its start and stop coordinates by values
$fiveprime_offset and
               $threeprime_offset (positive values being in the strand
direction).
    Args     : two integer offsets: $fiveprime_offset and
$threeprime_offset
    Returns  : $self, offset accordingly.

=cut

sub offsetStranded {
  my ($self, $offset_fiveprime, $offset_threeprime) = @_;
  my ($offset_start, $offset_end) = $self->strand() eq -1 ? (-
$offset_threeprime, - $offset_fiveprime) : ($offset_fiveprime,
$offset_threeprime);
  $self->start($self->start + $offset_start);
  $self->end($self->end + $offset_end);
  return $self;
};


I'll commit tomorrow unless I'm told 'that would be a mistake'.

Cheers,

--Malcolm




More information about the Bioperl-l mailing list