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 <heikki@ebi.ac.uk> # # 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<Bio::LiveSeq::Mutator>) 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<Bio::LiveSeq::Gene>. 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<Bio::LiveSeq::Gene>. 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<Bio::LiveSeq::Gene>. 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<Bio::LiveSeq::Gene>. 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;