Raw content of Bio::LiveSeq::Mutation
# $Id: Mutation.pm,v 1.6 2002/10/22 07:38:34 lapp Exp $
#
# BioPerl module for Bio::LiveSeq::Mutation
#
# Cared for by Heikki Lehvaslaiho
#
# Copyright Heikki Lehvaslaiho
#
# You may distribute this module under the same terms as perl itself
# POD documentation - main docs before the code
=head1 NAME
Bio::LiveSeq::Mutation - Mutation event descriptor class
=head1 SYNOPSIS
# full descrition of a point mutation
$mutation1a = Bio::LiveSeq::Mutation->new ( -seq => 'A',
-seqori => 'T',
-pos => 100,
-len => 1 # optional, defaults to length(seq)
);
# minimal information for a point mutation
$mutation1b = Bio::LiveSeq::Mutation->new ( -seq => 'A',
-pos => 100
);
# insertion
$mutation2 = Bio::LiveSeq::Mutation->new ( -seq => 'ATT',
-pos => 100,
-len => 0
);
# deletion
$mutation3 = Bio::LiveSeq::Mutation->new ( -seq => '', # optional
-seqori => 'TTG', # optional
-pos => 100
-len => 3
);
# complex
$mutation4 = Bio::LiveSeq::Mutation->new ( -seq => 'CC',
-seqori => 'TTG', # optional
-pos => 100
-len => 3
);
=head1 DESCRIPTION
This class describes a local mutation event using minimalistic
description. It is not necessary to know anything about the original
sequence. You need to give the changed sequence, the position of the
mutation in the (unidentified) reference sequence, and the length of
the affected subsequence in the reference sequence. If the original
allele sequence is given, the objects applying the mutation into the
reference sequence (e.g. L) might check for its
validity.
=head1 FEEDBACK
=head2 Mailing Lists
User feedback is an integral part of the evolution of this and other
Bioperl modules. Send your comments and suggestions preferably to the
Bioperl mailing lists Your participation is much appreciated.
bioperl-l@bioperl.org - General discussion
http://bio.perl.org/MailList.html - About the mailing lists
=head2 Reporting Bugs
report bugs to the Bioperl bug tracking system to help us keep track
the bugs and their resolution. Bug reports can be submitted via
email or the web:
bioperl-bugs@bio.perl.org
http://bugzilla.bioperl.org/
=head1 AUTHOR - Heikki Lehvaslaiho
Email: heikki@ebi.ac.uk
Address:
EMBL Outstation, European Bioinformatics Institute
Wellcome Trust Genome Campus, Hinxton
Cambs. CB10 1SD, United Kingdom
=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::LiveSeq::Mutation;
use vars qw(@ISA);
use strict;
# Object preamble - inheritance
use Bio::Root::Root;
@ISA = qw( Bio::Root::Root );
sub new {
my($class,@args) = @_;
my $self;
$self = {};
bless $self, $class;
my ($seq, $seqori, $pos, $len, $label) =
$self->_rearrange([qw(SEQ
SEQORI
POS
LEN
)],
@args);
$seq && $self->seq($seq);
$seqori && $self->seqori($seqori);
$pos && $self->pos($pos);
defined($len) && $self->len($len); # defined() added otherwise won't work for len==0
return $self; # success - we hope!
}
=head2 seq
Title : seq
Usage : $obj->seq();
Function:
Sets and returns the mutated sequence. No checking is done
to validate the symbols.
Example :
Returns : string
Args : integer
=cut
sub seq {
my ($self,$value) = @_;
if( defined $value) {
$self->{'seq'} = $value;
}
return $self->{'seq'};
}
=head2 seqori
Title : seqori
Usage : $obj->seqori();
Function:
Sets and returns the original subsequence in the reference
sequence. No checking is done to validate the symbols.
Optional value.
Example :
Returns : string
Args : string
=cut
sub seqori {
my ($self,$value) = @_;
if( defined $value) {
$self->{'seqori'} = $value;
}
return $self->{'seqori'};
}
=head2 pos
Title : pos
Usage : $obj->pos();
Function:
Sets and returns the position of the first element in the
sequence.
Example :
Returns : string
Args : integer
=cut
sub pos {
my ($self,$value) = @_;
if( defined $value) {
if ( $value !~ /^([+-])?\d+$/ ) {
$self->throw("[$value] for pos has to be an integer\n");
} else {
$self->{'pos'} = $value;
}
}
return $self->{'pos'};
}
=head2 len
Title : len
Usage : $obj->len();
Function:
Sets and returns the len of the affected original allele
sequence. If value is not set, defaults to the lenght of
the mutated sequence (seq).
Example :
Returns : string
Args : string
=cut
sub len {
my ($self,$value) = @_;
if ( defined $value) {
$self->{'len'} = $value;
}
if ( ! exists $self->{'len'} ) {
return length $self->{'seq'};
}
return $self->{'len'};
}
=head2 label
Title : label
Usage : $obj->label();
Function:
Sets and returns the label of the affected original allele
location. Label is a stable identifier whereas location
can be changed by mutations. Label comes from
l.
Example :
Returns : string
Args : string
=cut
sub label {
my ($self,$value) = @_;
if ( defined $value) {
$self->{'label'} = $value;
}
if ( ! exists $self->{'label'} ) {
return undef;
}
return $self->{'label'};
}
=head2 transpos
Title : transpos
Usage : $obj->transpos();
Function:
Sets and returns the transcript position of the mutation.
Set when associated with a reference sequence. Value
depends on reference molecule and the co-ordinate system
used.
Example :
Returns : string
Args : integer
=cut
sub transpos {
my ($self,$value) = @_;
if( defined $value) {
if ( $value !~ /^([+-])?\d+$/ ) {
$self->throw("[$value] for transpos has to be an integer\n");
} else {
$self->{'transpos'} = $value;
}
}
return $self->{'transpos'};
}
=head2 issue
Title : issue
Usage : $obj->issue();
Function:
Sets and returns the position of the mutation in an array
of mutations to be issued. Set after the validity of the
mutation has been confirmed.
Example :
Returns : string
Args : integer
=cut
sub issue {
my ($self,$value) = @_;
if( defined $value) {
if ( $value !~ /^([+-])?\d+$/ ) {
$self->throw("[$value] for issue has to be an integer\n");
} else {
$self->{'issue'} = $value;
}
}
return $self->{'issue'};
}
=head2 prelabel
Title : prelabel
Usage : $obj->prelabel();
Function:
Sets and returns the prelabel of the affected original allele
location. Prelabel is a stable identifier whereas location
can be changed by mutations. Prelabel comes from
l.
Example :
Returns : string
Args : string
=cut
sub prelabel {
my ($self,$value) = @_;
if ( defined $value) {
$self->{'prelabel'} = $value;
}
if ( ! exists $self->{'prelabel'} ) {
return undef;
}
return $self->{'prelabel'};
}
=head2 postlabel
Title : postlabel
Usage : $obj->postlabel();
Function:
Sets and returns the postlabel of the affected original allele
location. Postlabel is a stable identifier whereas location
can be changed by mutations. Postlabel comes from
l.
Example :
Returns : string
Args : string
=cut
sub postlabel {
my ($self,$value) = @_;
if ( defined $value) {
$self->{'postlabel'} = $value;
}
if ( ! exists $self->{'postlabel'} ) {
return undef;
}
return $self->{'postlabel'};
}
=head2 lastlabel
Title : lastlabel
Usage : $obj->lastlabel();
Function:
Sets and returns the lastlabel of the affected original allele
location. Lastlabel is a stable identifier whereas location
can be changed by mutations. Lastlabel comes from
l.
Example :
Returns : string
Args : string
=cut
sub lastlabel {
my ($self,$value) = @_;
if ( defined $value) {
$self->{'lastlabel'} = $value;
}
if ( ! exists $self->{'lastlabel'} ) {
return undef;
}
return $self->{'lastlabel'};
}
1;