[Biojava-l] RichLocation.Tools.merge(Collection members) method

Mark Schreiber markjschreiber at gmail.com
Sat Mar 1 02:30:42 UTC 2008


Hi -

This could be a corner case. Can you provide the code that actually
generates this error?

- Mark

On Sat, Mar 1, 2008 at 12:58 AM, Arnaud Kerhornou <arnaud at ebi.ac.uk> wrote:
> Hi everyone,
>
> I don't think the RichLocation.Tools.merge(Collection members) method is
> doing it right.
>
> e.g. Input:
> biojavax:join:[1157624..1158025,1158025..1158420,1158420..1158893]
> Expected output:1157624..1158895
>
> But I get: join:[1157624..1158420,1158420..1158894]
>
> I think the code should have the extra line: parent = union;
> just after c=p; statement line 18 (See source code below),
> otherwise it doesn't take into account the newly generated location.
>
> Is that right ?
>
> Thanks
> Arnaud
>
> Source code:
>
> 1    public static Collection merge(Collection members) {
> 2            // flatten them out first so we don't end up recursing
> 3            List membersList = new ArrayList(flatten(members));
> 4            // all members are now singles so we can use single vs
> single union operations
> 5            if (membersList.size()>1) {
> 6                for (int p = 0; p < (membersList.size()-1); p++) {
> 7                    RichLocation parent = (RichLocation)membersList.get(p);
> 8                    for (int c = p+1; c < membersList.size(); c++) {
> 9                        RichLocation child =
> (RichLocation)membersList.get(c);
> 10                       RichLocation union =
> (RichLocation)parent.union(child);
> 11                        // if parent can merge with child
> 12                        if (union.isContiguous()) {
> 13                           // replace parent with union
> 14                            membersList.set(p,union);
> 15                            // remove child
> 16                            membersList.remove(c);
> 17                            // check all children again
> 18                            c=p;
> 19                        }
> 20                    }
> 21                }
> 22            }
> 23            return membersList;
> 24        }
>
> _______________________________________________
> Biojava-l mailing list  -  Biojava-l at lists.open-bio.org
> http://lists.open-bio.org/mailman/listinfo/biojava-l
>


More information about the Biojava-l mailing list