MS
view release on metacpan or search on metacpan
lib/MS/Peptide.pm view on Meta::CPAN
package MS::Peptide;
use strict;
use warnings;
use overload
'""' => sub{ $_[0]->as_string(fmt => 'original') },
fallback => 1;
use Carp;
use Storable qw/dclone/;
use List::Util qw/sum/;
use MS::Mass qw/:all/;
my %light = (
'2H' => 'H',
'13C' => 'C',
'15N' => 'N',
'18O' => 'O',
);
my %heavy = (
'H' => '2H',
'C' => '13C',
'N' => '15N',
'O' => '18O',
);
sub new {
my ($class, $seq, %args) = @_;
$seq = uc $seq;
my $self = bless {seq => $seq} => $class;
my @atoms = map {atoms('aa', $_)} (split '', $seq);
$self->{atoms} = \@atoms;
$self->{length} = CORE::length $seq;
$self->{n_mod} = 0;
$self->{c_mod} = 0;
# these can be undefined if not known or specified
$self->{prev} = $args{prev};
$self->{next} = $args{next};
$self->{start} = $args{start};
$self->{end} = $args{end};
return $self;
}
#----------------------------------------------------------------------------#
# accessors
#----------------------------------------------------------------------------#
sub length { return $_[0]->{length} }
sub seq { return $_[0]->{seq} }
#----------------------------------------------------------------------------#
# accessors/modifiers
#----------------------------------------------------------------------------#
sub prev {
my ($self, $new_val) = @_;
$self->{prev} = $new_val if (defined $new_val);
return $self->{prev};
}
sub next {
my ($self, $new_val) = @_;
$self->{next} = $new_val if (defined $new_val);
return $self->{next};
}
sub start {
my ($self,$new_val) = @_;
if (defined $new_val) {
croak "Value must be numeric\n"
if ($new_val =~ /\D/);
$self->{start} = $new_val;
}
return $self->{start};
}
sub end {
my ($self,$new_val) = @_;
( run in 1.359 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )