<html><head><style type="text/css">body{font:12px Arial;margin:3px;overflow-y:auto;overflow-x:auto}p{margin:0px;}blockquote, ol, ul{margin-top:0px;margin-bottom:0px;}</style></head>

<body><div style="display: block; font-family: Arial; font-size: 12px;">Hi, as I told to this list some time ago, I want to ouput heterozygous dna sequences of different individuals.<br>We need to output variations in the following manner:<br>[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)<br>My approach is to use the Bio::LiveSeq::Mutation (class ?) to change the specific position in the sequence.<br><br><br>Bio::SeqUtils-&gt;mutate($seqobj, Bio::LiveSeq::Mutation-&gt;new(<br>
&nbsp; -seq =&gt; "[a/g]",<br>
&nbsp; -seqori =&gt; $seqori,<br>
&nbsp; -pos =&gt; $pos,<br>
&nbsp; -len =&gt; $length));<br><br>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 :<br><br>if( $ERRORLOADED ) {<br>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print STDERR "&nbsp; Calling Error::throw\n\n";<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Enable re-throwing of Error objects.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # If the error is not derived from Bio::Root::Exception,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # we can't guarantee that the Error's value was set properly<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # and, ipso facto, that it will be catchable from an eval{}.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # But chances are, if you're re-throwing non-Bio::Root::Exceptions,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # you're probably using Error::try(), not eval{}.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # TODO: Fix the MSG: line of the re
 -thrown error. Has an extra line<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # containing the '----- EXCEPTION -----' banner.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( ref($args[0])) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( $args[0]-&gt;isa('Error')) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $class = ref $args[0];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $class-&gt;throw( @args );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $text .= "\nWARNING: Attempt to throw a non-Error.pm object: " . ref$args[0];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $class = "Bio::Root::Exception";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $class-&gt;throw( '-text' 
 =&gt; $text, '-value' =&gt; $args[0] );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $class ||= "Bio::Root::Exception";<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my %args;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( @args % 2 == 0 &amp;&amp; $args[0] =~ /^-/ ) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %args = @args;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $args{-text} = $text;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $args{-object} = $self;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>(Line 359:) &nbsp; #$class-&gt;throw( scalar keys %args &gt; 0 ? %args : @args ); # (%args || @args) puts %args in scalar context!<br>&nbsp;&nbs
 p;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp; }<br><br><br>After I did alter this line all is working fine. But I know that this can be considered in the best case&nbsp; as a work around.<br><br>2 Questions:<br><br>Do you think it is worth to provide some class which are natively able to cope with that matter ?<br>Do I need to expect some unwanted behavior of some scripts resp. classes ?<br><br>Regards,<br>Marian<br><br><br><br><br><br><br></br><p style="margin-top:11px;padding-top:3px;background-image: url(http://mail.lycos.co.uk/Images/Mail/_content/dot.gif);background-repeat: repeat-x;background-position: 0px 0px;"><br>
_________________________________
<br>
<font face="Verdana" size="1" color="#000000"> Stelle Deine Fragen bei Lycos iQ <a href=" http://iq.lycos.de/qa/ask/">http://iq.lycos.de/qa/ask/</a></div></body></html>