BioPerl

 view release on metacpan or  search on metacpan

Bio/Map/PositionWithSequence.pm  view on Meta::CPAN


Email bix@sendu.me.uk

=head1 APPENDIX

The rest of the documentation details each of the object methods.
Internal methods are usually preceded with a _

=cut

# Let the code begin...

package Bio::Map::PositionWithSequence;
use strict;

use base qw(Bio::Map::Position Bio::LocatableSeq);

=head2 new

 Title   : new
 Usage   : my $obj = Bio::Map::PositionWithSequence->new();
 Function: Builds a new Bio::Map::PositionWithSequence object 
 Returns : Bio::Map::PositionWithSequence
 Args    : -map      => Bio::Map::GeneMap object
           -element  => Bio::Map::Gene object
           -relative => Bio::Map::GeneRelative object
           -seq      => string, length of this string will set the length
                        of this position's range

           * If this position has no range, or if a single value can describe
             the range *
           -value => scalar             : something that describes the single
                                          point position or range of this
                                          Position, most likely an int

           * Or if this position has a range, at least two of *
           -start => int                : value of the start co-ordinate
           -end => int                  : value of the end co-ordinate
           -length => int               : length of the range

=cut

sub new {
    my ($class, @args) = @_;
    my $self = $class->SUPER::new(@args);
    
    my ($seq) = $self->_rearrange([qw( SEQ )], @args);
    
    $self->seq($seq) if $seq;
    
    return $self;
}

=head2 seq

 Title   : seq
 Usage   : my $string = $obj->seq();
 Function: Get/set the sequence as a string of letters.
 Returns : scalar
 Args    : Optionally on set the new value (a string). An optional second
           argument presets the alphabet (otherwise it will be guessed).

=cut

sub seq {
    my ($self, $str, $alpha) = @_;
    
    # done like this because SUPER will set seq to undef if undef supplied,
    # but GeneMap wants to send undef, undef, 1 to decendants of this method
    
    my $seq;
    if ($str) {
        $alpha ? ($seq = $self->SUPER::seq($str, $alpha)) : ($seq = $self->SUPER::seq($str));
    }
    else {
        $seq = $self->SUPER::seq;
    }
    
    if ($seq) {
        $self->length(length($seq));
        return $seq;
    }
    return;
}

1;



( run in 1.121 second using v1.01-cache-2.11-cpan-39bf76dae61 )