[Bioperl-l] Bio::Root::Root/Bio::LiveSeq::Mutation

Heikki Lehvaslaiho heikki at sanbi.ac.za
Wed Jan 17 03:26:58 EST 2007


Marian,

I do not think preventing the error message here is good thing. The underlying 
assumption in all sequence classes is that one residue is represented by 
exactly one character. If you replacing one valid UIPAC character with a 
longish string, e.g.  '[a/g]' you break all the methods that work on 
sequences. See: Bio::Tools::IUPAC

Better alternatives are to

1) If you are sure you are not using ambiguous characters anywhere else in 
your sequence you could have sequence class that treats any ambiguity codes 
as polymorphisms and a SeqIO class that does the output formatting:  r => 
a/g.

2. Use sequence features like they do in EMBL/GenBank/DDJB feature tables to 
annotate mutations in the reference sequence.

3. Use Bio::Variation::SeqDiff to hold your reference sequence and annotate 
polymorphisms as Bio::Variation::DNAMutation objects that can in turn hold 
moltiple Bio::Variation::Allele objects.

I am sure there are other solutions, too. It all depends what you need to do 
with the information.

	-Heikki


On Tuesday 16 January 2007 12:20, marian thieme wrote:
> Hi, as I told to this list some time ago, I want to ouput heterozygous dna
> sequences of different individuals. We need to output variations in the
> following manner:
> [a/g] if there is a loci where one allele has an "a" and the other has a
> "g". (Also known as BIC db format or something like this) My approach is to
> use the Bio::LiveSeq::Mutation (class ?) to change the specific position in
> the sequence.
>
>
> Bio::SeqUtils->mutate($seqobj, Bio::LiveSeq::Mutation->new(
>    -seq => "[a/g]",
>    -seqori => $seqori,
>    -pos => $pos,
>    -len => $length));
>
> But unfortunatly this would rise an exception, that some unexpected chars
> occur. Hence I went in to the code of Root.pm and made a small change:
> commenting out line 359 in Root.pm :
>
> if( $ERRORLOADED ) {
> #       print STDERR "  Calling Error::throw\n\n";
>
>        # Enable re-throwing of Error objects.
>        # If the error is not derived from Bio::Root::Exception,
>        # we can't guarantee that the Error's value was set properly
>        # and, ipso facto, that it will be catchable from an eval{}.
>        # But chances are, if you're re-throwing non-Bio::Root::Exceptions,
>        # you're probably using Error::try(), not eval{}.
>        # TODO: Fix the MSG: line of the re -thrown error. Has an extra line
>        # containing the '----- EXCEPTION -----' banner.
>        if( ref($args[0])) {
>            if( $args[0]->isa('Error')) {
>                my $class = ref $args[0];
>                $class->throw( @args );
>            } else {
>                my $text .= "\nWARNING: Attempt to throw a non-Error.pm
> object: " . ref$args[0]; my $class = "Bio::Root::Exception";
>                $class->throw( '-text' => $text, '-value' => $args[0] );
>            }
>        } else {
>            $class ||= "Bio::Root::Exception";
>
>            my %args;
>            if( @args % 2 == 0 && $args[0] =~ /^-/ ) {
>                %args = @args;
>                $args{-text} = $text;
>                $args{-object} = $self;
>            }
>
> (Line 359:)   #$class->throw( scalar keys %args > 0 ? %args : @args ); #
> (%args || @args) puts %args in scalar context! &nbs p;     }
>    }
>
>
> After I did alter this line all is working fine. But I know that this can
> be considered in the best case  as a work around.
>
> 2 Questions:
>
> Do you think it is worth to provide some class which are natively able to
> cope with that matter ? Do I need to expect some unwanted behavior of some
> scripts resp. classes ?
>
> Regards,
> Marian
>
>
>
>
>
>
>
>  _________________________________
>   Stelle Deine Fragen bei Lycos iQ http://iq.lycos.de/qa/ask/

-- 
______ _/      _/_____________________________________________________
      _/      _/
     _/  _/  _/  Heikki Lehvaslaiho    heikki at_sanbi _ac _za
    _/_/_/_/_/  Associate Professor    skype: heikki_lehvaslaiho
   _/  _/  _/  SANBI, South African National Bioinformatics Institute
  _/  _/  _/  University of Western Cape, South Africa
     _/      Phone: +27 21 959 2096   FAX: +27 21 959 2512
___ _/_/_/_/_/________________________________________________________



More information about the Bioperl-l mailing list