Bio-MUST-Core
view release on metacpan or search on metacpan
lib/Bio/MUST/Core/Seq.pm view on Meta::CPAN
package Bio::MUST::Core::Seq;
# ABSTRACT: Nucleotide or protein sequence
# CONTRIBUTOR: Catherine COLSON <ccolson@doct.uliege.be>
# CONTRIBUTOR: Arnaud DI FRANCO <arnaud.difranco@gmail.com>
# CONTRIBUTOR: Valerian LUPO <valerian.lupo@uliege.be>
$Bio::MUST::Core::Seq::VERSION = '0.252040';
use Moose;
use MooseX::SemiAffordanceAccessor;
use namespace::autoclean;
# use Smart::Comments '###';
use autodie;
use feature qw(say);
use Carp;
use Bio::MUST::Core::Types;
use Bio::MUST::Core::Constants qw(:seqtypes :seqids :gaps);
use aliased 'Bio::MUST::Core::SeqId';
has 'seq_id' => (
is => 'rw',
isa => 'Bio::MUST::Core::SeqId',
required => 1,
coerce => 1,
handles => qr{.*}xms, # expose all SeqId methods (and attributes)
);
has 'seq' => (
traits => ['String'],
is => 'ro',
isa => 'Bio::MUST::Core::Types::Seq',
default => q{}, # can be empty
coerce => 1,
writer => '_set_seq',
handles => {
seq_len => 'length',
append_seq => 'append',
replace_seq => 'replace',
edit_seq => 'substr',
},
);
# TODO: check whether this could be done by some Moose extension
sub clone {
my $self = shift;
return $self->new(
seq_id => $self->full_id, seq => $self->seq
);
}
# boolean assertions
# TODO: optimize these assertions via caching
sub is_protein {
my $self = shift;
return 1 if $self->seq =~ $PROTLIKE;
return 0; # at least 1 non-nt char
}
( run in 0.850 second using v1.01-cache-2.11-cpan-39bf76dae61 )