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

Richard Holland holland at ebi.ac.uk
Mon Mar 3 08:41:58 UTC 2008


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Arnaud - you are correct.

cheers,
Richard

Arnaud Kerhornou 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
> 

- --
Richard Holland (BioMart)
EMBL EBI, Wellcome Trust Genome Campus,
Hinxton, Cambridgeshire CB10 1SD, UK
Tel. +44 (0)1223 494416

http://www.biomart.org/
http://www.biojava.org/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2.2 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFHy7m04C5LeMEKA/QRAj05AJ9SBrv6yz8qvhwbmTrLZVfmwBuHTACgiq57
+J0EpviSyp2Qq00m4A8xLUA=
=re75
-----END PGP SIGNATURE-----



More information about the Biojava-l mailing list