Hi Kalle, This is a bug. I'll take a look at it today. It's probably due to issues with the bespoke binary search code in the guts of GappedSymbolList.
Matthew Kalle Näslund wrote: > HI! > > I am writing some small app that uses GappedSymbolList and i see some > wierd behaviour. > > The first "problem" is when i have a GappedSymbolList and i insert a gap > into the View sequence ( the one that shows gaps ). As long as i insert > a gap/ gaps at a positin where there isnt any gap, all is fine. On the > other hand, if i inserta gap at a position where there is a gap, the > gap gets inserted into the NEXT block of gaps, and if there isnt any > next block of gaps, the gap gets appended at the end of the sequence. A > simple text example will describe this much better. the example basicly > just inserts a gap at position 3 in the view, a couple of time, and then > prints the output, and it looks like this: > > aattggcc Initial sequence > aa-ttggcc 1 gap inserted at position 3 > aa-ttggcc- 1 additional gap inserted at position 3 > aa-ttggcc-- 1 additional gap inserted at position 3 > aa-ttggcc--- 1 additional gap inserted at position 3 > > for me, this is not the way i think anyone would expect it to work. I > think most people would just expect that gap insertion should work the > same, irrespectively of what symbol is at the position where the gap > gets inserted. And that the end result should look like this. > aa----ttggcc > > > > The second ting i am having some thoughts about is the viewToSource > function, if you try to convert from view to source coordinates, and the > view coordinate contains a gap, you get a return value of -1. The > JavaDoc dont mention anything about what happens when you try to go from > view to source coordinates and the view coordinate contains a gap, but > it returns a -1 and that is ok i guess. But, this gives me lots of > problems, as i have users graphicly specify an intervall on the > GapedSequenceList, and i then want the source coordinates. If the user > chooses one endpoint that is a gap, i will have to start scaning symbol > for symbol, in the View coordinates, and then use the first non gap > symbol.So would it be wrong, to change the viewToSource method to not > return -1, but to actualy return the source position where the gap is > inserted, multiplied by -1 ? This would most likely dont break any code > that just checks if viewToSource returns -1 as most people will have > done it like if( x < 0 ) and not like if( x == -1 ). And then you can > get a meaningfull conversoin from view to source, and if you dont care, > you can only chec if the return value is negaitve. > > to clarify what i mean, i will give a short eample here aswell. > > aa---ttggcc > > as it is now, viewToSoruce( 4 ) will return -1, i would propose that it > should return -3 instead, because it is at position three in the source > sequence, the gaps are inserted. And the value shold be negative, to > indicate that there is no direct link between the view position and the > source, as the view is a gap. > > I do understand that there might be things this little proposal does to > other parts, that are not wanted, and therefore, this should only be > seen as a little question / proposal, and nothing more, if there is a > reason to only return -1 and nothing else, i will just do the dirty > solution of walking along the view sequence until i find a non gap symbol. > > Anyway, i have tested this on linux ( jdk 1.3.1 from sun ) and windows ( > jdk 1.4.0b3 ), using both the binary biojava-20010920.jar release aswell > as one of the older releases, and the behaviour is the same in all > combinations. > > > to finnish this off, i would just like to say thanks to all who have > contributed to biojava as it simplifies many nasty tasks a lot. > > Sincerely, Kalle Näslund > > > > > > > _______________________________________________ > Biojava-l mailing list - [EMAIL PROTECTED] > http://biojava.org/mailman/listinfo/biojava-l > . > _______________________________________________ Biojava-l mailing list - [EMAIL PROTECTED] http://biojava.org/mailman/listinfo/biojava-l