Closed tzaeschke closed 8 years ago
Since this is a quite substantial codebase (18k SLOC) with a different copyright owner (ETHZ). Furthermore, it does not require changes to the existing ELKI classes. What do you think of keeping this tree in a separate module, similar to ELKI visualization, and the libsvm and lucene modules?
It would compile into its own artifact, with a dependency on ELKI core. This would make it easier to keep track of the copyright, and allow for independent updates. If you want, I can assist you with this. But essentially, it would just put all the files into a repository of its own, with a pom.xml that references ELKI (but of course, I would need to push ELKI 0.7.0 final to maven central to make it easy to build). I have been considering similar restructuring to ELKI core, such as moving math functionality into a separate module, or indexes into an elki-indexing module. But some parts of ELKI are tightly coupled, e.g. the DeLiClu algorithm requires a particular index (a R*-tree variant), some algorithms come with their specialized distance functions, etc. so this is not easy to split into nice modules.
About putting the PhTree in its own module, I don't mind either way. I could also wait until ELKI 0.7.0 is out or I could try to create a project anyway, maybe based on a SNAPSHOT release.
Where should the repo be located? I suppose it should be part of the ELKI repo?
We could make it entirely separate with a maven dependency on ELKI, or have it in the "addons/phtree" directory like other addons. We can set it up such that it compiles into its own jar, that you only need to add to the classpath to get the PhTree into ELKI (there is a service loader mechanism). The example script of the download package uses -cp elki/*:depdenency/*
, so it will be possible to download the phtree.jar
, drop it into either folder, and it should show up in minigui.
Restructured as an ELKI extension available at:
Implementation of the PH-Tree. Properties: In-memory only, currently supports
DynamicIndex
,KNNIndex
andRangeIndex