X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=jpred%2Flib%2FSequence.pm;fp=jpred%2Flib%2FSequence.pm;h=ea342d36ae9b0e2c5d5fc4e5813773c7a655e92c;hb=eb3001dc41bf6cd46e20fd13fe3efbe9dedf6013;hp=6a53af14b14f6e8a6deea01ed59d1509903e1254;hpb=2cf032f4b987ba747c04159965aed78e3820d942;p=jpred.git diff --git a/jpred/lib/Sequence.pm b/jpred/lib/Sequence.pm index 6a53af1..ea342d3 100644 --- a/jpred/lib/Sequence.pm +++ b/jpred/lib/Sequence.pm @@ -6,33 +6,34 @@ use Carp; use base qw(Root); sub id { - my ($self, $id) = @_; - defined $id ? - $self->{__PACKAGE__."id"} = $id : - return $self->{__PACKAGE__."id"}; + my ( $self, $id ) = @_; + defined $id + ? $self->{ __PACKAGE__ . "id" } = $id + : return $self->{ __PACKAGE__ . "id" }; } sub seq { - my ($self, @entries) = @_; - if (@entries) { $self->{__PACKAGE__."seq"} = [ @entries ] } - else { - if (wantarray) { - return defined $self->{__PACKAGE__."seq"} ? - @{ $self->{__PACKAGE__."seq"} } : - (); - } - else { return $self->{__PACKAGE__."seq"} } - } + my ( $self, @entries ) = @_; + if (@entries) { $self->{ __PACKAGE__ . "seq" } = [@entries] } + else { + if (wantarray) { + return defined $self->{ __PACKAGE__ . "seq" } + ? @{ $self->{ __PACKAGE__ . "seq" } } + : (); + } else { + return $self->{ __PACKAGE__ . "seq" }; + } + } } sub length { - my ($self) = @_; - return scalar @{ [ $self->seq ] }; + my ($self) = @_; + return scalar @{ [ $self->seq ] }; } #sub numeric { # my ($self, $set) = @_; -# return $set ? +# return $set ? # $self->{__PACKAGE__."numeric"} = $set : # $self->{__PACKAGE__."numeric"}; #} @@ -58,38 +59,39 @@ sub length { #} sub sub_seq { - my ($self, @segments) = @_; - - my $package = ref $self; - - return $self->seq unless @segments; - confess "Passed an uneven number of segments" unless @segments % 2 == 0; - - { - my %segments = @segments; - # Find out if there are overlapping segments - for my $pri (sort keys %segments) { - for my $test (sort keys %segments) { - next if $pri == $test; - croak "Overlapping segments" if $test < $segments{$pri}; - } - } - } - - my @sections; - my ($i, @seq) = (0, $self->seq); - do { - my ($start, $end) = @segments[$i, $i + 1]; - - # Create a new sequence object in the correct package, and put the - # segment into it - my $new_seq = $package->new(id => $self->id); - $new_seq->seq( @seq[ $start .. $end ] ); - push @sections, $new_seq; - $i += 2; - } while ($i < @segments); - - return @sections; + my ( $self, @segments ) = @_; + + my $package = ref $self; + + return $self->seq unless @segments; + confess "Passed an uneven number of segments" unless @segments % 2 == 0; + + { + my %segments = @segments; + + # Find out if there are overlapping segments + for my $pri ( sort keys %segments ) { + for my $test ( sort keys %segments ) { + next if $pri == $test; + croak "Overlapping segments" if $test < $segments{$pri}; + } + } + } + + my @sections; + my ( $i, @seq ) = ( 0, $self->seq ); + do { + my ( $start, $end ) = @segments[ $i, $i + 1 ]; + + # Create a new sequence object in the correct package, and put the + # segment into it + my $new_seq = $package->new( id => $self->id ); + $new_seq->seq( @seq[ $start .. $end ] ); + push @sections, $new_seq; + $i += 2; + } while ( $i < @segments ); + + return @sections; } 1;