summaryrefslogtreecommitdiff
path: root/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities
diff options
context:
space:
mode:
Diffstat (limited to 'elki/src/main/java/de/lmu/ifi/dbs/elki/utilities')
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/Alias.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/BitsUtil.java1
-rwxr-xr-xelki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ClassGenericsUtil.java2
-rwxr-xr-xelki/src/main/java/de/lmu/ifi/dbs/elki/utilities/DatabaseUtil.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ELKIServiceLoader.java55
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ELKIServiceRegistry.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ELKIServiceScanner.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/FileUtil.java1
-rwxr-xr-xelki/src/main/java/de/lmu/ifi/dbs/elki/utilities/FormatUtil.java39
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/HandlerList.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/Util.java4
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/QuickSelect.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ArrayAdapter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ArrayDBIDsAdapter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ArrayLikeUtil.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/DoubleArray.java51
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/DoubleArrayAdapter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ExtendedArray.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/FeatureVectorAdapter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/FlatMatrixAdapter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/FloatArrayAdapter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/IdentityArrayAdapter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/IntegerArray.java264
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ListArrayAdapter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/NumberArrayAdapter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/NumberListArrayAdapter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/NumberVectorAdapter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/SingleSubsetArrayAdapter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/SubsetArrayAdapter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/SubsetNumberArrayAdapter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/VectorAdapter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arrays/DoubleIntegerArrayQuickSort.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arrays/IntegerArrayQuickSort.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arrays/IntegerComparator.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/hash/Unique.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/ComparableMaxHeap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/ComparableMinHeap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/ComparatorMaxHeap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/ComparatorMinHeap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleHeap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleIntegerHeap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleIntegerMaxHeap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleIntegerMinHeap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleLongHeap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleLongMaxHeap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleLongMinHeap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleMaxHeap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleMinHeap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleObjectHeap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleObjectMaxHeap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleObjectMinHeap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoublePriorityObject.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/Heap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/IntegerHeap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/IntegerMaxHeap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/IntegerMinHeap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/IntegerObjectHeap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/IntegerObjectMaxHeap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/IntegerObjectMinHeap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/IntegerPriorityObject.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/ObjectHeap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/TiedTopBoundedHeap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/TiedTopBoundedUpdatableHeap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/TopBoundedHeap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/TopBoundedUpdatableHeap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/UpdatableHeap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/hierarchy/FilteredIter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/hierarchy/HashMapHierarchy.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/hierarchy/Hierarchy.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/hierarchy/ModifiableHierarchy.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/hierarchy/StackedIter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/AbstractObjDynamicHistogram.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/AbstractObjStaticHistogram.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/AbstractStaticHistogram.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/DoubleArrayStaticHistogram.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/DoubleDynamicHistogram.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/DoubleHistogram.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/DoubleStaticHistogram.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/FloatDynamicHistogram.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/FloatHistogram.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/FloatStaticHistogram.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/Histogram.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/IntArrayStaticHistogram.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/IntDynamicHistogram.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/IntHistogram.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/IntStaticHistogram.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/LongArrayStaticHistogram.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/LongDynamicHistogram.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/LongHistogram.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/LongStaticHistogram.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/MeanVarianceStaticHistogram.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/ObjHistogram.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/ShortDynamicHistogram.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/ShortHistogram.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/ShortStaticHistogram.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/iterator/ArrayIter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/iterator/ArrayListIter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/iterator/Iter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/iterator/MIter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/unionfind/UnionFind.java3
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/unionfind/UnionFindUtil.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/unionfind/WeightedQuickUnionInteger.java174
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/unionfind/WeightedQuickUnionRangeDBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/unionfind/WeightedQuickUnionStaticDBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/documentation/Description.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/documentation/DocumentationUtil.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/documentation/Reference.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/documentation/Restricted.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/documentation/Title.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ensemble/EnsembleVoting.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ensemble/EnsembleVotingInverseMultiplicative.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ensemble/EnsembleVotingMax.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ensemble/EnsembleVotingMean.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ensemble/EnsembleVotingMedian.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ensemble/EnsembleVotingMin.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ensemble/EnsembleVotingMultiplicative.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/exceptions/APIViolationException.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/exceptions/AbortException.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/exceptions/ExceptionMessages.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/exceptions/NotImplementedException.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/exceptions/ObjectNotFoundException.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/exceptions/UnableToComplyException.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/BufferedLineReader.java29
-rwxr-xr-xelki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/ByteArrayUtil.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/ByteBufferInputStream.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/ByteBufferOutputStream.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/ByteBufferSerializer.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/FixedSizeByteBufferSerializer.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/LineReader.java60
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/TokenizedReader.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/Tokenizer.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/AbstractParameterizer.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/InternalParameterizationErrors.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/NoParameterValueException.java3
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/OptionID.java1
-rwxr-xr-xelki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/OptionUtil.java3
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/ParameterException.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/Parameterizer.java1
-rwxr-xr-xelki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/UnspecifiedParameterException.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/UnusedParameterException.java4
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/WrongParameterValueException.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/AbstractNumberConstraint.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/AllOrNoneMustBeSetGlobalConstraint.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/CommonConstraints.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/EqualSizeGlobalConstraint.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/EqualStringConstraint.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/GlobalListSizeConstraint.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/GlobalParameterConstraint.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/GlobalVectorListElementSizeConstraint.java21
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/GreaterConstraint.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/GreaterEqualConstraint.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/LessConstraint.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/LessEqualConstraint.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/LessEqualGlobalConstraint.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/LessGlobalConstraint.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/ListEachConstraint.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/ListParameterNoDuplicateValueConstraint.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/ListSizeConstraint.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/NoDuplicateValueGlobalConstraint.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/OneMustBeSetGlobalConstraint.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/OnlyOneIsAllowedToBeSetGlobalConstraint.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/ParameterConstraint.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/ParameterFlagGlobalConstraint.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/StringLengthConstraint.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/AbstractParameterization.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/ChainedParameterization.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/EmptyParameterization.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/ListParameterization.java91
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/MergedParameterization.java30
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/Parameterization.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/SerializedParameterization.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/TrackParameters.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/TrackedParameter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/UnParameterization.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/AbstractParameter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/ClassListParameter.java18
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/ClassParameter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/DoubleArrayListParameter.java (renamed from elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/VectorListParameter.java)78
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/DoubleListParameter.java6
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/DoubleParameter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/EnumParameter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/FileListParameter.java15
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/FileParameter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/Flag.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/IntListParameter.java27
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/IntParameter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/ListParameter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/LongParameter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/NumberParameter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/ObjectListParameter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/ObjectParameter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/Parameter.java11
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/PatternParameter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/RandomParameter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/StringParameter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/pairs/DoubleDoublePair.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/pairs/DoubleIntPair.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/pairs/DoubleObjPair.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/pairs/IntDoublePair.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/pairs/IntIntPair.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/pairs/Pair.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/referencepoints/AxisBasedReferencePoints.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/referencepoints/FullDatabaseReferencePoints.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/referencepoints/GridBasedReferencePoints.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/referencepoints/RandomGeneratedReferencePoints.java14
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/referencepoints/RandomSampleReferencePoints.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/referencepoints/ReferencePointsHeuristic.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/referencepoints/StarBasedReferencePoints.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/ClipScaling.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/GammaScaling.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/IdentityScaling.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/LinearScaling.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/MinusLogScaling.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/ScalingFunction.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/StaticScalingFunction.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/COPOutlierScaling.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/HeDESNormalizationOutlierScaling.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/LogRankingPseudoOutlierScaling.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/MinusLogGammaScaling.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/MinusLogStandardDeviationScaling.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/MixtureModelOutlierScalingFunction.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/MultiplicativeInverseScaling.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/OutlierGammaScaling.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/OutlierLinearScaling.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/OutlierMinusLogScaling.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/OutlierScalingFunction.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/OutlierSqrtScaling.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/RankingPseudoOutlierScaling.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/SigmoidOutlierScalingFunction.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/SqrtStandardDeviationScaling.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/StandardDeviationScaling.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/TopKOutlierScaling.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/xml/DOMCloner.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/xml/HTMLUtil.java1
-rwxr-xr-xelki/src/main/java/de/lmu/ifi/dbs/elki/utilities/xml/XMLNodeIterator.java1
-rwxr-xr-xelki/src/main/java/de/lmu/ifi/dbs/elki/utilities/xml/XMLNodeListIterator.java1
236 files changed, 1042 insertions, 173 deletions
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/Alias.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/Alias.java
index ea5d864d..ba4e385a 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/Alias.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/Alias.java
@@ -33,6 +33,7 @@ import java.lang.annotation.Target;
* This interface defines alias names for classes.
*
* @author Erich Schubert
+ * @since 0.3
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/BitsUtil.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/BitsUtil.java
index 205336df..5869ab4c 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/BitsUtil.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/BitsUtil.java
@@ -37,6 +37,7 @@ import java.util.Arrays;
* <code>I</code> modify in-place.
*
* @author Erich Schubert
+ * @since 0.5.0
*/
public final class BitsUtil {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ClassGenericsUtil.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ClassGenericsUtil.java
index 8c938e02..e746114d 100755
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ClassGenericsUtil.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ClassGenericsUtil.java
@@ -61,6 +61,8 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameteriz
* developer should use {@link #instantiate} instead.
* </p>
*
+ * @author Erich Schubert
+ * @since 0.2
*/
public final class ClassGenericsUtil {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/DatabaseUtil.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/DatabaseUtil.java
index a4976b5d..e4f708d9 100755
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/DatabaseUtil.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/DatabaseUtil.java
@@ -49,6 +49,7 @@ import de.lmu.ifi.dbs.elki.index.preprocessed.knn.MaterializeKNNPreprocessor;
* covariances etc.
*
* @author Erich Schubert
+ * @since 0.2
*/
public final class DatabaseUtil {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ELKIServiceLoader.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ELKIServiceLoader.java
index dd3a9ba6..bdddac1d 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ELKIServiceLoader.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ELKIServiceLoader.java
@@ -29,7 +29,6 @@ import java.net.URL;
import java.util.Enumeration;
import de.lmu.ifi.dbs.elki.utilities.exceptions.AbortException;
-import de.lmu.ifi.dbs.elki.utilities.io.BufferedLineReader;
/**
* Class that emulates the behavior of an java ServiceLoader, except that the
@@ -37,6 +36,7 @@ import de.lmu.ifi.dbs.elki.utilities.io.BufferedLineReader;
* also we need to do the instantiations our way with the parameterizable API.
*
* @author Erich Schubert
+ * @since 0.5.0
*/
public class ELKIServiceLoader {
/**
@@ -79,11 +79,35 @@ public class ELKIServiceLoader {
Enumeration<URL> configfiles = cl.getResources(fullName);
while(configfiles.hasMoreElements()) {
URL nextElement = configfiles.nextElement();
+ char[] buf = new char[0x4000];
try (
- InputStreamReader is = new InputStreamReader(nextElement.openStream(), "utf-8");
- BufferedLineReader r = new BufferedLineReader(is)) {
- while(r.nextLine()) {
- parseLine(parent, r.getBuffer(), nextElement);
+ InputStreamReader is = new InputStreamReader(nextElement.openStream(), "UTF-8");) {
+ int start = 0, cur = 0, valid = is.read(buf, 0, buf.length);
+ char c;
+ while(cur < valid) {
+ // Find newline or end
+ while(cur < valid && (c = buf[cur]) != '\n' && c != '\r') {
+ cur++;
+ }
+ if(cur == valid && is.ready()) {
+ // Move consumed buffer contents:
+ if(start > 0) {
+ System.arraycopy(buf, start, buf, 0, valid - start);
+ valid -= start;
+ cur -= start;
+ start = 0;
+ }
+ else if(valid == buf.length) {
+ throw new IOException("Buffer size exceeded. Maximum line length in service files is: " + buf.length + " in file: " + fullName);
+ }
+ valid = is.read(buf, valid, buf.length - valid);
+ continue;
+ }
+ parseLine(parent, buf, start, cur, nextElement);
+ while(cur < valid && ((c = buf[cur]) == '\n' || c == '\r')) {
+ cur++;
+ }
+ start = cur;
}
}
catch(IOException x) {
@@ -103,38 +127,33 @@ public class ELKIServiceLoader {
* @param line Line to read
* @param nam File name for error reporting
*/
- private static void parseLine(Class<?> parent, CharSequence line, URL nam) {
- if(line == null) {
- return;
- }
- int begin = 0, end = line.length();
- while(begin < end && line.charAt(begin) == ' ') {
+ private static void parseLine(Class<?> parent, char[] line, int begin, int end, URL nam) {
+ while(begin < end && line[begin] == ' ') {
begin++;
}
- if(begin >= end || line.charAt(begin) == '#') {
+ if(begin >= end || line[begin] == '#') {
return; // Empty/comment lines are okay, continue
}
- assert(begin == 0 || line.charAt(begin - 1) == ' ');
// Find end of class name:
int cend = begin + 1;
- while(cend < end && line.charAt(cend) != ' ') {
+ while(cend < end && line[cend] != ' ') {
cend++;
}
// Class name:
- String cname = line.subSequence(begin, cend).toString();
+ String cname = new String(line, begin, cend - begin);
ELKIServiceRegistry.register(parent, cname);
for(int abegin = cend + 1, aend = -1; abegin < end; abegin = aend + 1) {
// Skip whitespace:
- while(abegin < end && line.charAt(abegin) == ' ') {
+ while(abegin < end && line[abegin] == ' ') {
abegin++;
}
// Find next whitespace:
aend = abegin + 1;
- while(aend < end && line.charAt(aend) != ' ') {
+ while(aend < end && line[aend] != ' ') {
aend++;
}
if(abegin < aend) {
- ELKIServiceRegistry.registerAlias(parent, line.subSequence(abegin, aend).toString(), cname);
+ ELKIServiceRegistry.registerAlias(parent, new String(line, abegin, aend - abegin), cname);
}
}
return;
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ELKIServiceRegistry.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ELKIServiceRegistry.java
index 512de9d1..841dd41a 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ELKIServiceRegistry.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ELKIServiceRegistry.java
@@ -39,6 +39,7 @@ import de.lmu.ifi.dbs.elki.logging.Logging;
* Registry of available implementations in ELKI.
*
* @author Erich Schubert
+ * @since 0.7.0
*/
public class ELKIServiceRegistry {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ELKIServiceScanner.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ELKIServiceScanner.java
index 1bd139c4..05083a60 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ELKIServiceScanner.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ELKIServiceScanner.java
@@ -42,6 +42,7 @@ import de.lmu.ifi.dbs.elki.logging.Logging;
* A collection of inspection-related utility functions.
*
* @author Erich Schubert
+ * @since 0.7.0
*/
public class ELKIServiceScanner {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/FileUtil.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/FileUtil.java
index 5ad6d392..17a0e2c2 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/FileUtil.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/FileUtil.java
@@ -35,6 +35,7 @@ import java.util.zip.GZIPInputStream;
* Various static helper methods to deal with files and file names.
*
* @author Erich Schubert
+ * @since 0.2
*/
public final class FileUtil {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/FormatUtil.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/FormatUtil.java
index ad385bcb..dc634eb2 100755
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/FormatUtil.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/FormatUtil.java
@@ -38,6 +38,10 @@ import de.lmu.ifi.dbs.elki.math.linearalgebra.Vector;
/**
* Utility methods for output formatting of various number objects
+ *
+ * @author Arthur Zimek
+ * @author Erich Schubert
+ * @since 0.2
*/
public final class FormatUtil {
/**
@@ -321,22 +325,33 @@ public final class FormatUtil {
/**
* Formats the int array a for printing purposes.
*
+ * @param buf The buffer to serialize to
* @param a the int array to be formatted
- * @param sep the separator between the single values of the float array, e.g.
- * ','
- * @return a String representing the int array a
+ * @param sep the separator between the single values of the array, e.g. ','
+ * @return The output buffer {@code buf}
*/
- public static String format(int[] a, String sep) {
+ public static StringBuilder formatTo(StringBuilder buf, int[] a, String sep) {
if(a.length == 0) {
- return "";
+ return buf;
}
- StringBuilder buffer = new StringBuilder();
- buffer.append(a[0]);
+ buf.append(a[0]);
for(int i = 1; i < a.length; i++) {
- buffer.append(sep);
- buffer.append(a[i]);
+ buf.append(sep);
+ buf.append(a[i]);
}
- return buffer.toString();
+ return buf;
+ }
+
+ /**
+ * Formats the int array a for printing purposes.
+ *
+ * @param a the int array to be formatted
+ * @param sep the separator between the single values of the array, e.g. ','
+ * @return a String representing the int array a
+ */
+ public static String format(int[] a, String sep) {
+ return (a == null) ? "null" : (a.length == 0) ? "" : //
+ formatTo(new StringBuilder(), a, sep).toString();
}
/**
@@ -1302,8 +1317,8 @@ public final class FormatUtil {
* Infinity pattern, with any capitalization
*/
private static final char[] INFINITY_PATTERN = { //
- 'I', 'n', 'f', 'i', 'n', 'i', 't', 'y', //
- 'i', 'N', 'F', 'I', 'N', 'I', 'T', 'Y' };
+ 'I', 'n', 'f', 'i', 'n', 'i', 't', 'y', //
+ 'i', 'N', 'F', 'I', 'N', 'I', 'T', 'Y' };
/** Length of pattern */
private static final int INFINITY_LENGTH = INFINITY_PATTERN.length >> 1;
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/HandlerList.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/HandlerList.java
index e85d9bbd..f82ba9f3 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/HandlerList.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/HandlerList.java
@@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.utilities.pairs.Pair;
* query object can be cast to the handlers restriction class.
*
* @author Erich Schubert
+ * @since 0.2
*
* @param <H> Parent class/interface for all handlers
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/Util.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/Util.java
index 5ed07ec3..24a94ec3 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/Util.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/Util.java
@@ -33,6 +33,10 @@ import java.util.Random;
* classes.
*
* @see de.lmu.ifi.dbs.elki.utilities
+ *
+ * @author Arthur Zimek
+ * @author Erich Schubert
+ * @since 0.2
*/
public final class Util {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/QuickSelect.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/QuickSelect.java
index 070876ca..1d852688 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/QuickSelect.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/QuickSelect.java
@@ -41,6 +41,7 @@ import de.lmu.ifi.dbs.elki.database.ids.ModifiableDoubleDBIDList;
* Charles Antony Richard Hoare
*
* @author Erich Schubert
+ * @since 0.5.0
*
* @apiviz.uses ArrayModifiableDBIDs
* @apiviz.uses List
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ArrayAdapter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ArrayAdapter.java
index 5a2a1056..fd8624de 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ArrayAdapter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ArrayAdapter.java
@@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.utilities.datastructures.arraylike;
* Adapter for array-like things. For example, arrays and lists.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @param <T> Item type
* @param <A> Array object type
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ArrayDBIDsAdapter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ArrayDBIDsAdapter.java
index a6881e43..640d5c70 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ArrayDBIDsAdapter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ArrayDBIDsAdapter.java
@@ -30,6 +30,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBID;
* Use a DBID array in a generic array-like context.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.uses ArrayDBIDs
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ArrayLikeUtil.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ArrayLikeUtil.java
index dc4f3b1c..386243f6 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ArrayLikeUtil.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ArrayLikeUtil.java
@@ -35,6 +35,7 @@ import de.lmu.ifi.dbs.elki.math.linearalgebra.Vector;
* reorganizing the objects into a real array.
*
* @author Erich Schubert
+ * @since 0.5.0
*
* @apiviz.landmark
* @apiviz.composedOf ArrayAdapter
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/DoubleArray.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/DoubleArray.java
index 2f827bb3..ca225b41 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/DoubleArray.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/DoubleArray.java
@@ -27,12 +27,28 @@ import java.util.Arrays;
/**
* Array of double values.
*
- * TODO: add remove, sort etc.
- *
* @author Erich Schubert
+ * @since 0.7.0
*/
public class DoubleArray implements NumberArrayAdapter<Double, DoubleArray> {
/**
+ * Maximum array size permitted by Java.
+ *
+ * This is JVM dependent, but 2^31 - 5 is the usual OpenJDK8 value.
+ */
+ private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 5;
+
+ /**
+ * Last value where we can grow by 50%.
+ */
+ private static final int LAST_GROW_SIZE = 0x5555_5551;
+
+ // Assert that these values match.
+ static {
+ assert (LAST_GROW_SIZE + (LAST_GROW_SIZE >>> 1) + 1 <= MAX_ARRAY_SIZE);
+ }
+
+ /**
* (Reused) store for numerical attributes.
*/
public double[] data;
@@ -55,6 +71,12 @@ public class DoubleArray implements NumberArrayAdapter<Double, DoubleArray> {
* @param initialsize Initial size.
*/
public DoubleArray(int initialsize) {
+ if(initialsize < 0) {
+ initialsize = 11;
+ }
+ else if(initialsize > MAX_ARRAY_SIZE) {
+ initialsize = MAX_ARRAY_SIZE;
+ }
this.data = new double[initialsize];
this.size = 0;
}
@@ -80,18 +102,31 @@ public class DoubleArray implements NumberArrayAdapter<Double, DoubleArray> {
}
/**
- * Add a numeric attribute value.
+ * Append a value.
*
* @param attribute Attribute value.
*/
public void add(double attribute) {
if(data.length == size) {
- data = Arrays.copyOf(data, size << 1);
+ grow();
}
data[size++] = attribute;
}
/**
+ * Grow the current array.
+ *
+ * @throws OutOfMemoryError
+ */
+ private void grow() throws OutOfMemoryError {
+ if(data.length == MAX_ARRAY_SIZE) {
+ throw new OutOfMemoryError("Array size has reached the Java maximum.");
+ }
+ final int newsize = (size >= LAST_GROW_SIZE) ? MAX_ARRAY_SIZE : (size + (size >> 1) + 1);
+ data = Arrays.copyOf(data, newsize);
+ }
+
+ /**
* Get the value at this position.
*
* @param pos Position
@@ -144,8 +179,12 @@ public class DoubleArray implements NumberArrayAdapter<Double, DoubleArray> {
*/
public void insert(int pos, double val) {
if(size == data.length) {
- double[] oldd = data;
- data = new double[size << 1];
+ if(data.length == MAX_ARRAY_SIZE) {
+ throw new OutOfMemoryError("Array size has reached the Java maximum.");
+ }
+ final int newsize = (size >= LAST_GROW_SIZE) ? MAX_ARRAY_SIZE : (size + (size >> 1) + 1);
+ final double[] oldd = data;
+ data = new double[newsize];
System.arraycopy(oldd, 0, data, 0, pos);
System.arraycopy(oldd, pos, data, pos + 1, size - pos);
}
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/DoubleArrayAdapter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/DoubleArrayAdapter.java
index 719aea8a..221335e9 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/DoubleArrayAdapter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/DoubleArrayAdapter.java
@@ -26,6 +26,7 @@ package de.lmu.ifi.dbs.elki.utilities.datastructures.arraylike;
* Use a double array as, well, double array in the ArrayAdapter API.
*
* @author Erich Schubert
+ * @since 0.5.0
*
* @apiviz.exclude
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ExtendedArray.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ExtendedArray.java
index 4dfd1ecb..047e5f06 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ExtendedArray.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ExtendedArray.java
@@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.utilities.datastructures.arraylike;
* Class to extend an array with a single element virtually.
*
* @author Erich Schubert
+ * @since 0.5.0
*
* @param <T> Object type
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/FeatureVectorAdapter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/FeatureVectorAdapter.java
index 59df30ad..338358f1 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/FeatureVectorAdapter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/FeatureVectorAdapter.java
@@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.data.FeatureVector;
* Use the static instance from {@link ArrayLikeUtil}!
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @param <F> Feature type
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/FlatMatrixAdapter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/FlatMatrixAdapter.java
index 487f2d84..1c33872d 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/FlatMatrixAdapter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/FlatMatrixAdapter.java
@@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.math.linearalgebra.Matrix;
* Use a matrix as array, by flattening it into a sequence.
*
* @author Erich Schubert
+ * @since 0.5.0
*
* @apiviz.exclude
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/FloatArrayAdapter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/FloatArrayAdapter.java
index fd82178a..6f4bfa78 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/FloatArrayAdapter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/FloatArrayAdapter.java
@@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.utilities.datastructures.arraylike;
* Use a double array as, well, double array in the ArrayAdapter API.
*
* @author Erich Schubert
+ * @since 0.5.0
*
* @apiviz.exclude
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/IdentityArrayAdapter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/IdentityArrayAdapter.java
index 3766492d..d81d68f3 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/IdentityArrayAdapter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/IdentityArrayAdapter.java
@@ -29,6 +29,7 @@ package de.lmu.ifi.dbs.elki.utilities.datastructures.arraylike;
* Use the static instance from {@link ArrayLikeUtil}!
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @param <T> Item type
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/IntegerArray.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/IntegerArray.java
new file mode 100644
index 00000000..15393114
--- /dev/null
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/IntegerArray.java
@@ -0,0 +1,264 @@
+package de.lmu.ifi.dbs.elki.utilities.datastructures.arraylike;
+/*
+ This file is part of ELKI:
+ Environment for Developing KDD-Applications Supported by Index-Structures
+
+ Copyright (C) 2015
+ Ludwig-Maximilians-Universität München
+ Lehr- und Forschungseinheit für Datenbanksysteme
+ ELKI Development Team
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import java.util.Arrays;
+
+/**
+ * Array of int values.
+ *
+ * @author Erich Schubert
+ * @since 0.7.0
+ */
+public class IntegerArray implements NumberArrayAdapter<Integer, IntegerArray> {
+ /**
+ * Maximum array size permitted by Java.
+ *
+ * This is JVM dependent, but 2^31 - 5 is the usual OpenJDK8 value.
+ */
+ private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 5;
+
+ /**
+ * Last value where we can grow by 50%.
+ */
+ private static final int LAST_GROW_SIZE = 0x5555_5551;
+
+ // Assert that these values match.
+ static {
+ assert (LAST_GROW_SIZE + (LAST_GROW_SIZE >>> 1) + 1 <= MAX_ARRAY_SIZE);
+ }
+
+ /**
+ * (Reused) store for numerical attributes.
+ */
+ public int[] data;
+
+ /**
+ * Number of numerical attributes.
+ */
+ public int size;
+
+ /**
+ * Constructor.
+ */
+ public IntegerArray() {
+ this(11);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param initialsize Initial size.
+ */
+ public IntegerArray(int initialsize) {
+ if(initialsize < 0) {
+ initialsize = 11;
+ }
+ else if(initialsize > MAX_ARRAY_SIZE) {
+ initialsize = MAX_ARRAY_SIZE;
+ }
+ this.data = new int[initialsize];
+ this.size = 0;
+ }
+
+ /**
+ * Constructor from an existing array.
+ *
+ * The new array will be allocated as small as possible, so modifications will
+ * cause a resize!
+ *
+ * @param existing Existing array
+ */
+ public IntegerArray(IntegerArray existing) {
+ this.data = Arrays.copyOf(existing.data, existing.size);
+ this.size = existing.size;
+ }
+
+ /**
+ * Reset the numeric attribute counter.
+ */
+ public void clear() {
+ size = 0;
+ }
+
+ /**
+ * Append a value.
+ *
+ * @param attribute Attribute value.
+ */
+ public void add(int attribute) {
+ if(data.length == size) {
+ grow();
+ }
+ data[size++] = attribute;
+ }
+
+ /**
+ * Grow the current array.
+ *
+ * @throws OutOfMemoryError
+ */
+ private void grow() throws OutOfMemoryError {
+ if(data.length == MAX_ARRAY_SIZE) {
+ throw new OutOfMemoryError("Array size has reached the Java maximum.");
+ }
+ final int newsize = (size >= LAST_GROW_SIZE) ? MAX_ARRAY_SIZE : (size + (size >> 1) + 1);
+ data = Arrays.copyOf(data, newsize);
+ }
+
+ /**
+ * Get the value at this position.
+ *
+ * @param pos Position
+ * @return Value
+ */
+ public int get(int pos) {
+ if(pos < 0 || pos >= size) {
+ throw new ArrayIndexOutOfBoundsException(pos);
+ }
+ return data[pos];
+ }
+
+ /**
+ * Set the value at this position.
+ *
+ * @param pos Position
+ * @param value Value
+ */
+ public void set(int pos, int value) {
+ if(pos < 0 || pos > size) {
+ throw new ArrayIndexOutOfBoundsException(pos);
+ }
+ if(pos == size) {
+ add(value);
+ return;
+ }
+ data[pos] = value;
+ }
+
+ /**
+ * Remove a range from the array.
+ *
+ * @param start Start
+ * @param len Length
+ */
+ public void remove(int start, int len) {
+ final int end = start + len;
+ if(end > size) {
+ throw new ArrayIndexOutOfBoundsException(size);
+ }
+ System.arraycopy(data, end, data, start, size - end);
+ size -= len;
+ }
+
+ /**
+ * Insert a value at the given position.
+ *
+ * @param pos Insert position
+ * @param val Value to insert
+ */
+ public void insert(int pos, int val) {
+ if(size == data.length) {
+ if(data.length == MAX_ARRAY_SIZE) {
+ throw new OutOfMemoryError("Array size has reached the Java maximum.");
+ }
+ final int newsize = (size >= LAST_GROW_SIZE) ? MAX_ARRAY_SIZE : (size + (size >> 1) + 1);
+ final int[] oldd = data;
+ data = new int[newsize];
+ System.arraycopy(oldd, 0, data, 0, pos);
+ System.arraycopy(oldd, pos, data, pos + 1, size - pos);
+ }
+ else {
+ System.arraycopy(data, pos, data, pos + 1, size - pos);
+ }
+ data[pos] = val;
+ size++;
+ }
+
+ /**
+ * Get the size of the array.
+ *
+ * @return Size
+ */
+ public int size() {
+ return size;
+ }
+
+ /**
+ * Sort the contents.
+ */
+ public void sort() {
+ Arrays.sort(data, 0, size);
+ }
+
+ // NumberArrayAdapter:
+
+ @Override
+ public int size(IntegerArray array) {
+ return array.size;
+ }
+
+ @Override
+ public Integer get(IntegerArray array, int off) throws IndexOutOfBoundsException {
+ return array.data[off];
+ }
+
+ @Override
+ public double getDouble(IntegerArray array, int off) throws IndexOutOfBoundsException {
+ return (double) array.data[off];
+ }
+
+ @Override
+ public float getFloat(IntegerArray array, int off) throws IndexOutOfBoundsException {
+ return (float) array.data[off];
+ }
+
+ @Override
+ public int getInteger(IntegerArray array, int off) throws IndexOutOfBoundsException {
+ return array.data[off];
+ }
+
+ @Override
+ public short getShort(IntegerArray array, int off) throws IndexOutOfBoundsException {
+ return (short) array.data[off];
+ }
+
+ @Override
+ public long getLong(IntegerArray array, int off) throws IndexOutOfBoundsException {
+ return (long) array.data[off];
+ }
+
+ @Override
+ public byte getByte(IntegerArray array, int off) throws IndexOutOfBoundsException {
+ return (byte) array.data[off];
+ }
+
+ /**
+ * Return a copy of the contents as array.
+ *
+ * @return Copy of the contents.
+ */
+ public int[] toArray() {
+ return Arrays.copyOf(data, size);
+ }
+} \ No newline at end of file
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ListArrayAdapter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ListArrayAdapter.java
index 242caa48..7e92978a 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ListArrayAdapter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ListArrayAdapter.java
@@ -30,6 +30,7 @@ import java.util.List;
* Use the static instance from {@link ArrayLikeUtil}!
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @param <T> Data object type.
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/NumberArrayAdapter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/NumberArrayAdapter.java
index 532862cc..c0777fbd 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/NumberArrayAdapter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/NumberArrayAdapter.java
@@ -26,6 +26,7 @@ package de.lmu.ifi.dbs.elki.utilities.datastructures.arraylike;
* Adapter for arrays of numbers, to avoid boxing.
*
* @author Erich Schubert
+ * @since 0.5.0
*
* @param <N> Number type
* @param <A> Array type
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/NumberListArrayAdapter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/NumberListArrayAdapter.java
index e712ac9a..4c0fec71 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/NumberListArrayAdapter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/NumberListArrayAdapter.java
@@ -32,6 +32,7 @@ import java.util.List;
* Use the static instance from {@link ArrayLikeUtil}!
*
* @author Erich Schubert
+ * @since 0.5.0
*
* @param <T> Data object type.
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/NumberVectorAdapter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/NumberVectorAdapter.java
index 8192f3b8..bb66c33e 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/NumberVectorAdapter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/NumberVectorAdapter.java
@@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.data.NumberVector;
* Use the static instance from {@link ArrayLikeUtil}!
*
* @author Erich Schubert
+ * @since 0.5.0
*/
public class NumberVectorAdapter implements NumberArrayAdapter<Number, NumberVector> {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/SingleSubsetArrayAdapter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/SingleSubsetArrayAdapter.java
index 3d8e8c3e..cd905948 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/SingleSubsetArrayAdapter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/SingleSubsetArrayAdapter.java
@@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.utilities.datastructures.arraylike;
* Single-item subset adapter
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @param <T> Entry type
* @param <A> Array type
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/SubsetArrayAdapter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/SubsetArrayAdapter.java
index 077a0e8d..1299d178 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/SubsetArrayAdapter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/SubsetArrayAdapter.java
@@ -26,6 +26,7 @@ package de.lmu.ifi.dbs.elki.utilities.datastructures.arraylike;
* Subset array adapter (allows reordering and projection).
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @param <T> Entry type
* @param <A> Array type
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/SubsetNumberArrayAdapter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/SubsetNumberArrayAdapter.java
index 8a1a064b..7d1d1890 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/SubsetNumberArrayAdapter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/SubsetNumberArrayAdapter.java
@@ -26,6 +26,7 @@ package de.lmu.ifi.dbs.elki.utilities.datastructures.arraylike;
* Subset array adapter (allows reordering and projection)
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @param <T> Entry type
* @param <A> Array type
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/VectorAdapter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/VectorAdapter.java
index 26da061a..48705ece 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/VectorAdapter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/VectorAdapter.java
@@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.math.linearalgebra.Vector;
* Use the static instance from {@link ArrayLikeUtil}!
*
* @author Erich Schubert
+ * @since 0.5.0
*/
public class VectorAdapter implements NumberArrayAdapter<Double, Vector> {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arrays/DoubleIntegerArrayQuickSort.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arrays/DoubleIntegerArrayQuickSort.java
index a48a175b..47bc1281 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arrays/DoubleIntegerArrayQuickSort.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arrays/DoubleIntegerArrayQuickSort.java
@@ -28,6 +28,7 @@ package de.lmu.ifi.dbs.elki.utilities.datastructures.arrays;
* best of 5 heuristic.
*
* @author Erich Schubert
+ * @since 0.5.5
*/
public class DoubleIntegerArrayQuickSort {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arrays/IntegerArrayQuickSort.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arrays/IntegerArrayQuickSort.java
index ece63ea6..c1b64097 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arrays/IntegerArrayQuickSort.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arrays/IntegerArrayQuickSort.java
@@ -39,6 +39,7 @@ import de.lmu.ifi.dbs.elki.utilities.documentation.Reference;
* objects.
*
* @author Erich Schubert
+ * @since 0.5.5
*
* @apiviz.uses IntegerComparator
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arrays/IntegerComparator.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arrays/IntegerComparator.java
index 11f79e45..2cb8e755 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arrays/IntegerComparator.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/arrays/IntegerComparator.java
@@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.utilities.datastructures.arrays;
* Interface for comparing two Integer.
*
* @author Erich Schubert
+ * @since 0.4.0
*/
public interface IntegerComparator {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/hash/Unique.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/hash/Unique.java
index 5e991156..294d7220 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/hash/Unique.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/hash/Unique.java
@@ -33,6 +33,7 @@ import java.util.Arrays;
* allows retrieving existing values.
*
* @author Erich Schubert
+ * @since 0.7.0
*
* @param <E>
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/ComparableMaxHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/ComparableMaxHeap.java
index 968251d6..54f6821b 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/ComparableMaxHeap.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/ComparableMaxHeap.java
@@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.math.MathUtil;
* Binary heap for primitive types.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.has UnsortedIter
* @param <K> Key type
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/ComparableMinHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/ComparableMinHeap.java
index 8cd4ef0a..4a1cc8a9 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/ComparableMinHeap.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/ComparableMinHeap.java
@@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.math.MathUtil;
* Binary heap for primitive types.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.has UnsortedIter
* @param <K> Key type
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/ComparatorMaxHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/ComparatorMaxHeap.java
index f3cc6d56..78c00bc5 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/ComparatorMaxHeap.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/ComparatorMaxHeap.java
@@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.math.MathUtil;
* Binary heap for primitive types.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.has UnsortedIter
* @param <K> Key type
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/ComparatorMinHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/ComparatorMinHeap.java
index 12a15d46..466c3e7b 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/ComparatorMinHeap.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/ComparatorMinHeap.java
@@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.math.MathUtil;
* Binary heap for primitive types.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.has UnsortedIter
* @param <K> Key type
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleHeap.java
index ba853032..76927fc3 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleHeap.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleHeap.java
@@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.utilities.datastructures.iterator.Iter;
* Basic in-memory heap for double values.
*
* @author Erich Schubert
+ * @since 0.5.5
*
* @apiviz.has UnsortedIter
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleIntegerHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleIntegerHeap.java
index 2adc17fd..96ca70c2 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleIntegerHeap.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleIntegerHeap.java
@@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.utilities.datastructures.iterator.Iter;
* Basic in-memory heap interface, for double keys and int values.
*
* @author Erich Schubert
+ * @since 0.6.0
*
* @apiviz.has UnsortedIter
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleIntegerMaxHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleIntegerMaxHeap.java
index b0e62c30..ae40da63 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleIntegerMaxHeap.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleIntegerMaxHeap.java
@@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.math.MathUtil;
* Binary heap for primitive types.
*
* @author Erich Schubert
+ * @since 0.5.5
*
* @apiviz.has UnsortedIter
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleIntegerMinHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleIntegerMinHeap.java
index d94b63c1..bfc21240 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleIntegerMinHeap.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleIntegerMinHeap.java
@@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.math.MathUtil;
* Binary heap for primitive types.
*
* @author Erich Schubert
+ * @since 0.5.5
*
* @apiviz.has UnsortedIter
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleLongHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleLongHeap.java
index 551c4131..f4011bcd 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleLongHeap.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleLongHeap.java
@@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.utilities.datastructures.iterator.Iter;
* Basic in-memory heap interface, for double keys and long values.
*
* @author Erich Schubert
+ * @since 0.6.0
*
* @apiviz.has UnsortedIter
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleLongMaxHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleLongMaxHeap.java
index b0f0af50..88a7ee7c 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleLongMaxHeap.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleLongMaxHeap.java
@@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.math.MathUtil;
* Binary heap for primitive types.
*
* @author Erich Schubert
+ * @since 0.5.5
*
* @apiviz.has UnsortedIter
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleLongMinHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleLongMinHeap.java
index fcc3526d..7fc2a5dd 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleLongMinHeap.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleLongMinHeap.java
@@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.math.MathUtil;
* Binary heap for primitive types.
*
* @author Erich Schubert
+ * @since 0.5.5
*
* @apiviz.has UnsortedIter
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleMaxHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleMaxHeap.java
index d1a6ed0f..92a1ba9c 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleMaxHeap.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleMaxHeap.java
@@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.math.MathUtil;
* Binary heap for primitive types.
*
* @author Erich Schubert
+ * @since 0.5.5
*
* @apiviz.has UnsortedIter
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleMinHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleMinHeap.java
index f4c53260..3c8eda0b 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleMinHeap.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleMinHeap.java
@@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.math.MathUtil;
* Binary heap for primitive types.
*
* @author Erich Schubert
+ * @since 0.5.5
*
* @apiviz.has UnsortedIter
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleObjectHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleObjectHeap.java
index 77a380bf..a822cb64 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleObjectHeap.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleObjectHeap.java
@@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.utilities.datastructures.iterator.Iter;
* Basic in-memory heap interface, for double keys and V values.
*
* @author Erich Schubert
+ * @since 0.5.5
*
* @apiviz.has UnsortedIter
* @param <V> Value type
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleObjectMaxHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleObjectMaxHeap.java
index 96b03a67..6e8e5c02 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleObjectMaxHeap.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleObjectMaxHeap.java
@@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.math.MathUtil;
* Binary heap for primitive types.
*
* @author Erich Schubert
+ * @since 0.6.0
*
* @apiviz.has UnsortedIter
* @param <V> Value type
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleObjectMinHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleObjectMinHeap.java
index c04fb7cb..b87e6281 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleObjectMinHeap.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoubleObjectMinHeap.java
@@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.math.MathUtil;
* Binary heap for primitive types.
*
* @author Erich Schubert
+ * @since 0.6.0
*
* @apiviz.has UnsortedIter
* @param <V> Value type
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoublePriorityObject.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoublePriorityObject.java
index 342c064d..cd8ef1cb 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoublePriorityObject.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/DoublePriorityObject.java
@@ -31,6 +31,7 @@ package de.lmu.ifi.dbs.elki.utilities.datastructures.heap;
* the priority.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @param <O> Stored object type.
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/Heap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/Heap.java
index 5f6b27c2..fe8aaa53 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/Heap.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/Heap.java
@@ -36,6 +36,7 @@ import java.util.Comparator;
* O(n log n). This is implemented via a simple validTo counter.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @param <E> Element type. Should be {@link java.lang.Comparable} or a
* {@link java.util.Comparator} needs to be given.
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/IntegerHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/IntegerHeap.java
index c7e897d8..4a1a7ca7 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/IntegerHeap.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/IntegerHeap.java
@@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.utilities.datastructures.iterator.Iter;
* Basic in-memory heap for int values.
*
* @author Erich Schubert
+ * @since 0.5.5
*
* @apiviz.has UnsortedIter
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/IntegerMaxHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/IntegerMaxHeap.java
index a4e54147..54af796b 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/IntegerMaxHeap.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/IntegerMaxHeap.java
@@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.math.MathUtil;
* Binary heap for primitive types.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.has UnsortedIter
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/IntegerMinHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/IntegerMinHeap.java
index 0e56e2e1..17ece116 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/IntegerMinHeap.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/IntegerMinHeap.java
@@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.math.MathUtil;
* Binary heap for primitive types.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.has UnsortedIter
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/IntegerObjectHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/IntegerObjectHeap.java
index defacf83..08eecf02 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/IntegerObjectHeap.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/IntegerObjectHeap.java
@@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.utilities.datastructures.iterator.Iter;
* Basic in-memory heap interface, for int keys and V values.
*
* @author Erich Schubert
+ * @since 0.5.5
*
* @apiviz.has UnsortedIter
* @param <V> Value type
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/IntegerObjectMaxHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/IntegerObjectMaxHeap.java
index ce3d7809..7f62c277 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/IntegerObjectMaxHeap.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/IntegerObjectMaxHeap.java
@@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.math.MathUtil;
* Binary heap for primitive types.
*
* @author Erich Schubert
+ * @since 0.6.0
*
* @apiviz.has UnsortedIter
* @param <V> Value type
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/IntegerObjectMinHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/IntegerObjectMinHeap.java
index c087d7d2..b46dadaa 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/IntegerObjectMinHeap.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/IntegerObjectMinHeap.java
@@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.math.MathUtil;
* Binary heap for primitive types.
*
* @author Erich Schubert
+ * @since 0.6.0
*
* @apiviz.has UnsortedIter
* @param <V> Value type
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/IntegerPriorityObject.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/IntegerPriorityObject.java
index c809e113..4e7c21c2 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/IntegerPriorityObject.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/IntegerPriorityObject.java
@@ -31,6 +31,7 @@ package de.lmu.ifi.dbs.elki.utilities.datastructures.heap;
* the priority.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @param <O> Stored object type.
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/ObjectHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/ObjectHeap.java
index 8b00dbbe..20ee0547 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/ObjectHeap.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/ObjectHeap.java
@@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.utilities.datastructures.iterator.Iter;
* Basic in-memory heap for K values.
*
* @author Erich Schubert
+ * @since 0.5.5
*
* @apiviz.has UnsortedIter
* @param <K> Key type
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/TiedTopBoundedHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/TiedTopBoundedHeap.java
index f9628f1a..ea1a356a 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/TiedTopBoundedHeap.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/TiedTopBoundedHeap.java
@@ -33,6 +33,7 @@ import java.util.List;
* elements.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @param <E> Object type
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/TiedTopBoundedUpdatableHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/TiedTopBoundedUpdatableHeap.java
index 88036e00..83261ef5 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/TiedTopBoundedUpdatableHeap.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/TiedTopBoundedUpdatableHeap.java
@@ -36,6 +36,7 @@ import de.lmu.ifi.dbs.elki.utilities.exceptions.AbortException;
* elements.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @param <E> Object type
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/TopBoundedHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/TopBoundedHeap.java
index 9fd95a1b..b884c58a 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/TopBoundedHeap.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/TopBoundedHeap.java
@@ -30,6 +30,7 @@ import java.util.Comparator;
* {@code k} Elements only.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @param <E> Element type. Should be {@link Comparable} or a {@link Comparator}
* needs to be given.
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/TopBoundedUpdatableHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/TopBoundedUpdatableHeap.java
index 80b5768a..ff0dd369 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/TopBoundedUpdatableHeap.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/TopBoundedUpdatableHeap.java
@@ -30,6 +30,7 @@ import java.util.Comparator;
* {@code k} Elements only.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @param <E> Element type. Should be {@link Comparable} or a {@link Comparator}
* needs to be given.
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/UpdatableHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/UpdatableHeap.java
index be089725..4af70021 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/UpdatableHeap.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/heap/UpdatableHeap.java
@@ -32,6 +32,7 @@ import java.util.Comparator;
* A heap as used in OPTICS that allows updating entries.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @param <O> object type
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/hierarchy/FilteredIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/hierarchy/FilteredIter.java
index 67876387..aac710e8 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/hierarchy/FilteredIter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/hierarchy/FilteredIter.java
@@ -26,6 +26,7 @@ package de.lmu.ifi.dbs.elki.utilities.datastructures.hierarchy;
* Filtered iterator.
*
* @author Erich Schubert
+ * @since 0.7.0
*
* @apiviz.composedOf Hierarchy.Iter
*
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/hierarchy/HashMapHierarchy.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/hierarchy/HashMapHierarchy.java
index 59ec00f0..2f478866 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/hierarchy/HashMapHierarchy.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/hierarchy/HashMapHierarchy.java
@@ -29,6 +29,7 @@ import java.util.HashMap;
* Centralized hierarchy implementation, using a HashMap of Lists.
*
* @author Erich Schubert
+ * @since 0.6.0
*
* @param <O> Object type (arbitrary!)
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/hierarchy/Hierarchy.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/hierarchy/Hierarchy.java
index 6c932451..04d1cd5b 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/hierarchy/Hierarchy.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/hierarchy/Hierarchy.java
@@ -29,6 +29,7 @@ package de.lmu.ifi.dbs.elki.utilities.datastructures.hierarchy;
* object, i.e. {@code hierarchy.iterChildren(object);}.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.has Iter
*
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/hierarchy/ModifiableHierarchy.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/hierarchy/ModifiableHierarchy.java
index 3496e41c..4b3af7c2 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/hierarchy/ModifiableHierarchy.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/hierarchy/ModifiableHierarchy.java
@@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.utilities.datastructures.hierarchy;
* Modifiable Hierarchy.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @param <O> Object type
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/hierarchy/StackedIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/hierarchy/StackedIter.java
index 52ecc0e3..93aa71b7 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/hierarchy/StackedIter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/hierarchy/StackedIter.java
@@ -26,6 +26,7 @@ package de.lmu.ifi.dbs.elki.utilities.datastructures.hierarchy;
* Filtered iterator.
*
* @author Erich Schubert
+ * @since 0.7.0
*
* @apiviz.composedOf Hierarchy
* @apiviz.composedOf Hierarchy.Iter
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/AbstractObjDynamicHistogram.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/AbstractObjDynamicHistogram.java
index 9c2f3a60..d07e078b 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/AbstractObjDynamicHistogram.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/AbstractObjDynamicHistogram.java
@@ -30,6 +30,7 @@ import de.lmu.ifi.dbs.elki.utilities.BitsUtil;
* into the histogram.
*
* @author Erich Schubert
+ * @since 0.5.5
*
* @param <T> Data type
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/AbstractObjStaticHistogram.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/AbstractObjStaticHistogram.java
index 709f7ceb..743bb179 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/AbstractObjStaticHistogram.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/AbstractObjStaticHistogram.java
@@ -30,6 +30,7 @@ package de.lmu.ifi.dbs.elki.utilities.datastructures.histogram;
* left and right.
*
* @author Erich Schubert
+ * @since 0.5.5
*
* @param <T> Data type
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/AbstractStaticHistogram.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/AbstractStaticHistogram.java
index b0728ddb..a1a81174 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/AbstractStaticHistogram.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/AbstractStaticHistogram.java
@@ -31,6 +31,7 @@ package de.lmu.ifi.dbs.elki.utilities.datastructures.histogram;
* adapted for multiple use cases.
*
* @author Erich Schubert
+ * @since 0.5.5
*/
public abstract class AbstractStaticHistogram implements Histogram {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/DoubleArrayStaticHistogram.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/DoubleArrayStaticHistogram.java
index 7ea5b623..4e0081d5 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/DoubleArrayStaticHistogram.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/DoubleArrayStaticHistogram.java
@@ -29,6 +29,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* primitive in Java.
*
* @author Erich Schubert
+ * @since 0.5.5
*/
public final class DoubleArrayStaticHistogram extends AbstractObjStaticHistogram<double[]> {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/DoubleDynamicHistogram.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/DoubleDynamicHistogram.java
index 2f2e6a02..88a70ad9 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/DoubleDynamicHistogram.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/DoubleDynamicHistogram.java
@@ -30,6 +30,7 @@ import de.lmu.ifi.dbs.elki.utilities.BitsUtil;
* bins to the data fed into the histogram.
*
* @author Erich Schubert
+ * @since 0.5.5
*/
public class DoubleDynamicHistogram extends DoubleStaticHistogram {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/DoubleHistogram.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/DoubleHistogram.java
index 9a26c264..84f06713 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/DoubleHistogram.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/DoubleHistogram.java
@@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.utilities.datastructures.histogram;
* Histogram storing double values.
*
* @author Erich Schubert
+ * @since 0.5.5
*
* @apiviz.has Iter
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/DoubleStaticHistogram.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/DoubleStaticHistogram.java
index 63ba3e21..6d4dc22b 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/DoubleStaticHistogram.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/DoubleStaticHistogram.java
@@ -32,6 +32,7 @@ import java.util.Arrays;
* left and right.
*
* @author Erich Schubert
+ * @since 0.5.5
*/
public class DoubleStaticHistogram extends AbstractStaticHistogram implements DoubleHistogram {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/FloatDynamicHistogram.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/FloatDynamicHistogram.java
index 261c7a7f..007ef6e6 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/FloatDynamicHistogram.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/FloatDynamicHistogram.java
@@ -30,6 +30,7 @@ import de.lmu.ifi.dbs.elki.utilities.BitsUtil;
* bins to the data fed into the histogram.
*
* @author Erich Schubert
+ * @since 0.5.5
*/
public class FloatDynamicHistogram extends FloatStaticHistogram {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/FloatHistogram.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/FloatHistogram.java
index 81edb88c..18e992b8 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/FloatHistogram.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/FloatHistogram.java
@@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.utilities.datastructures.histogram;
* Histogram storing float values.
*
* @author Erich Schubert
+ * @since 0.5.5
*
* @apiviz.has Iter
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/FloatStaticHistogram.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/FloatStaticHistogram.java
index 6e4d78f5..079e8e0e 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/FloatStaticHistogram.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/FloatStaticHistogram.java
@@ -32,6 +32,7 @@ import java.util.Arrays;
* left and right.
*
* @author Erich Schubert
+ * @since 0.5.5
*/
public class FloatStaticHistogram extends AbstractStaticHistogram implements FloatHistogram {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/Histogram.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/Histogram.java
index a8fd60c0..1632fc45 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/Histogram.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/Histogram.java
@@ -30,6 +30,7 @@ import de.lmu.ifi.dbs.elki.utilities.datastructures.iterator.ArrayIter;
* to be shared for primitive types, too!
*
* @author Erich Schubert
+ * @since 0.5.5
*
* @apiviz.has Iter
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/IntArrayStaticHistogram.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/IntArrayStaticHistogram.java
index d3d278ee..8e838b4e 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/IntArrayStaticHistogram.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/IntArrayStaticHistogram.java
@@ -29,6 +29,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* primitive in Java.
*
* @author Erich Schubert
+ * @since 0.5.5
*/
public final class IntArrayStaticHistogram extends AbstractObjStaticHistogram<int[]> {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/IntDynamicHistogram.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/IntDynamicHistogram.java
index 4d3a5045..13ab7b35 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/IntDynamicHistogram.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/IntDynamicHistogram.java
@@ -30,6 +30,7 @@ import de.lmu.ifi.dbs.elki.utilities.BitsUtil;
* bins to the data fed into the histogram.
*
* @author Erich Schubert
+ * @since 0.5.5
*/
public class IntDynamicHistogram extends IntStaticHistogram {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/IntHistogram.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/IntHistogram.java
index d448c852..ce2b39aa 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/IntHistogram.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/IntHistogram.java
@@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.utilities.datastructures.histogram;
* Histogram storing int values.
*
* @author Erich Schubert
+ * @since 0.5.5
*
* @apiviz.has Iter
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/IntStaticHistogram.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/IntStaticHistogram.java
index bd367837..3cbe83bc 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/IntStaticHistogram.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/IntStaticHistogram.java
@@ -32,6 +32,7 @@ import java.util.Arrays;
* left and right.
*
* @author Erich Schubert
+ * @since 0.5.5
*/
public class IntStaticHistogram extends AbstractStaticHistogram implements IntHistogram {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/LongArrayStaticHistogram.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/LongArrayStaticHistogram.java
index 907fa7ca..a922935a 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/LongArrayStaticHistogram.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/LongArrayStaticHistogram.java
@@ -29,6 +29,7 @@ package de.lmu.ifi.dbs.elki.utilities.datastructures.histogram;
* primitive in Java.
*
* @author Erich Schubert
+ * @since 0.5.5
*/
public final class LongArrayStaticHistogram extends AbstractObjStaticHistogram<long[]> {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/LongDynamicHistogram.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/LongDynamicHistogram.java
index 78385a30..cc5b5dc6 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/LongDynamicHistogram.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/LongDynamicHistogram.java
@@ -30,6 +30,7 @@ import de.lmu.ifi.dbs.elki.utilities.BitsUtil;
* bins to the data fed into the histogram.
*
* @author Erich Schubert
+ * @since 0.5.5
*/
public class LongDynamicHistogram extends LongStaticHistogram {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/LongHistogram.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/LongHistogram.java
index ec1ba994..893e0f47 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/LongHistogram.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/LongHistogram.java
@@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.utilities.datastructures.histogram;
* Histogram storing long values.
*
* @author Erich Schubert
+ * @since 0.5.5
*
* @apiviz.has Iter
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/LongStaticHistogram.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/LongStaticHistogram.java
index ae37dbcc..9cc201ae 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/LongStaticHistogram.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/LongStaticHistogram.java
@@ -32,6 +32,7 @@ import java.util.Arrays;
* left and right.
*
* @author Erich Schubert
+ * @since 0.5.5
*/
public class LongStaticHistogram extends AbstractStaticHistogram implements LongHistogram {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/MeanVarianceStaticHistogram.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/MeanVarianceStaticHistogram.java
index f3d054cd..5adcc9bd 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/MeanVarianceStaticHistogram.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/MeanVarianceStaticHistogram.java
@@ -32,6 +32,7 @@ import de.lmu.ifi.dbs.elki.math.MeanVariance;
* left and right.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.composedOf MeanVariance
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/ObjHistogram.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/ObjHistogram.java
index e1d75b76..2ce2926f 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/ObjHistogram.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/ObjHistogram.java
@@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.utilities.datastructures.histogram;
* Basic interface for object based histograms (static and flexible).
*
* @author Erich Schubert
+ * @since 0.5.5
*
* @apiviz.has Iter
*
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/ShortDynamicHistogram.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/ShortDynamicHistogram.java
index 8fd1ffbd..d0a932a1 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/ShortDynamicHistogram.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/ShortDynamicHistogram.java
@@ -30,6 +30,7 @@ import de.lmu.ifi.dbs.elki.utilities.BitsUtil;
* bins to the data fed into the histogram.
*
* @author Erich Schubert
+ * @since 0.5.5
*/
public class ShortDynamicHistogram extends ShortStaticHistogram {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/ShortHistogram.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/ShortHistogram.java
index 706d43e8..14e1ec55 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/ShortHistogram.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/ShortHistogram.java
@@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.utilities.datastructures.histogram;
* Histogram storing short values.
*
* @author Erich Schubert
+ * @since 0.5.5
*
* @apiviz.has Iter
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/ShortStaticHistogram.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/ShortStaticHistogram.java
index 4c49f595..ebfc6365 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/ShortStaticHistogram.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/histogram/ShortStaticHistogram.java
@@ -32,6 +32,7 @@ import java.util.Arrays;
* left and right.
*
* @author Erich Schubert
+ * @since 0.5.5
*/
public class ShortStaticHistogram extends AbstractStaticHistogram implements ShortHistogram {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/iterator/ArrayIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/iterator/ArrayIter.java
index d3deb054..3f26f417 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/iterator/ArrayIter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/iterator/ArrayIter.java
@@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.utilities.datastructures.iterator;
* Array iterators can also go backwards and seek.
*
* @author Erich Schubert
+ * @since 0.2
*
* @apiviz.excludeSubtypes
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/iterator/ArrayListIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/iterator/ArrayListIter.java
index 175ccfb2..441eaee4 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/iterator/ArrayListIter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/iterator/ArrayListIter.java
@@ -32,6 +32,7 @@ import java.util.List;
* access and seeking (i.e. ArrayLists, but not Linked Lists!)
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.excludeSubtypes
*
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/iterator/Iter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/iterator/Iter.java
index d362ff37..23cf34fe 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/iterator/Iter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/iterator/Iter.java
@@ -52,6 +52,7 @@ package de.lmu.ifi.dbs.elki.utilities.datastructures.iterator;
* </pre>
*
* @author Erich Schubert
+ * @since 0.5.0
*
* @apiviz.landmark
* @apiviz.excludeSubtypes
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/iterator/MIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/iterator/MIter.java
index b7b69cc7..557870de 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/iterator/MIter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/iterator/MIter.java
@@ -40,6 +40,7 @@ package de.lmu.ifi.dbs.elki.utilities.datastructures.iterator;
* </pre>
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.excludeSubtypes
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/unionfind/UnionFind.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/unionfind/UnionFind.java
index bbba1c8e..55b0b561 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/unionfind/UnionFind.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/unionfind/UnionFind.java
@@ -27,9 +27,10 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDRef;
import de.lmu.ifi.dbs.elki.database.ids.DBIDs;
/**
- * Union-find implementations in ELKI
+ * Union-find implementations in ELKI, for DBID objects.
*
* @author Erich Schubert
+ * @since 0.7.0
*/
public interface UnionFind {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/unionfind/UnionFindUtil.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/unionfind/UnionFindUtil.java
index ee403a66..38ec2559 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/unionfind/UnionFindUtil.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/unionfind/UnionFindUtil.java
@@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.database.ids.StaticDBIDs;
* Union-find algorithm factory, to choose the best implementation.
*
* @author Erich Schubert
+ * @since 0.7.0
*/
public class UnionFindUtil {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/unionfind/WeightedQuickUnionInteger.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/unionfind/WeightedQuickUnionInteger.java
new file mode 100644
index 00000000..b7fc8478
--- /dev/null
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/unionfind/WeightedQuickUnionInteger.java
@@ -0,0 +1,174 @@
+package de.lmu.ifi.dbs.elki.utilities.datastructures.unionfind;
+
+/*
+ This file is part of ELKI:
+ Environment for Developing KDD-Applications Supported by Index-Structures
+
+ Copyright (C) 2016
+ Ludwig-Maximilians-Universität München
+ Lehr- und Forschungseinheit für Datenbanksysteme
+ ELKI Development Team
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import java.util.Arrays;
+
+import de.lmu.ifi.dbs.elki.utilities.documentation.Reference;
+import gnu.trove.list.TIntList;
+import gnu.trove.list.array.TIntArrayList;
+
+/**
+ * Union-find algorithm for primitive integers, with optimizations.
+ *
+ * This is the weighted quick union approach, weighted by count and using
+ * path-halving for optimization.
+ *
+ * Reference:
+ * <p>
+ * R. Sedgewick<br />
+ * 1.3 Union-Find Algorithms<br />
+ * Algorithms in C, Parts 1-4
+ * </p>
+ *
+ * @author Erich Schubert
+ * @since 0.7.0
+ */
+@Reference(authors = "R. Sedgewick", //
+title = "1.3 Union-Find Algorithms", //
+booktitle = "Algorithms in C, Parts 1-4")
+public class WeightedQuickUnionInteger {
+ /**
+ * Number of used indexes.
+ */
+ private int used;
+
+ /**
+ * Parent element
+ */
+ private int[] parent;
+
+ /**
+ * Weight, for optimization.
+ */
+ private int[] weight;
+
+ /**
+ * Initial size.
+ */
+ private static final int INITIAL_SIZE = 51;
+
+ /**
+ * Constructor.
+ */
+ public WeightedQuickUnionInteger() {
+ weight = new int[INITIAL_SIZE];
+ parent = new int[INITIAL_SIZE];
+ }
+
+ /**
+ * Occupy the next unused index.
+ *
+ * @param weight Initial weight.
+ * @return Next unused index.
+ */
+ public int nextIndex(int weight) {
+ if(used == parent.length) {
+ int nsize = used + (used >> 1);
+ this.weight = Arrays.copyOf(this.weight, nsize);
+ this.parent = Arrays.copyOf(this.parent, nsize);
+ }
+ this.weight[used] = weight;
+ this.parent[used] = used;
+ return used++;
+ }
+
+ /**
+ * Find the parent of an object.
+ *
+ * @param cur Current entry
+ * @return Parent entry
+ */
+ public int find(int cur) {
+ assert (cur >= 0 && cur < parent.length);
+ int p = parent[cur], tmp;
+ while(cur != p) {
+ tmp = p;
+ p = parent[cur] = parent[p]; // Perform simple path compression.
+ cur = tmp;
+ }
+ return cur;
+ }
+
+ /**
+ * Join the components of elements p and q.
+ *
+ * @param first First element
+ * @param second Second element
+ * @return Component id.
+ */
+ public int union(int first, int second) {
+ int firstComponent = find(first), secondComponent = find(second);
+ if(firstComponent == secondComponent) {
+ return firstComponent;
+ }
+ final int w1 = weight[firstComponent], w2 = weight[secondComponent];
+ if(w1 > w2) {
+ parent[secondComponent] = firstComponent;
+ weight[firstComponent] += w2;
+ return firstComponent;
+ }
+ else {
+ parent[firstComponent] = secondComponent;
+ weight[secondComponent] += w1;
+ return secondComponent;
+ }
+ }
+
+ /**
+ * Test if two components are connected.
+ *
+ * @param first First element
+ * @param second Second element
+ * @return {@code true} if they are in the same component.
+ */
+ public boolean isConnected(int first, int second) {
+ return find(first) == find(second);
+ }
+
+ /**
+ * Collect all component root elements.
+ *
+ * @return Root elements
+ */
+ public TIntList getRoots() {
+ TIntList roots = new TIntArrayList();
+ for(int i = 0; i < used; i++) {
+ // roots or one element in component
+ if(parent[i] == i) {
+ roots.add(i);
+ }
+ }
+ return roots;
+ }
+
+ /**
+ * Number of allocated indexes.
+ *
+ * @return Index number.
+ */
+ public int size() {
+ return used;
+ }
+}
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/unionfind/WeightedQuickUnionRangeDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/unionfind/WeightedQuickUnionRangeDBIDs.java
index 60c719e2..5440e2b5 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/unionfind/WeightedQuickUnionRangeDBIDs.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/unionfind/WeightedQuickUnionRangeDBIDs.java
@@ -51,6 +51,7 @@ import de.lmu.ifi.dbs.elki.utilities.documentation.Reference;
*
* @author Evgeniy Faerman
* @author Erich Schubert
+ * @since 0.7.0
*/
@Reference(authors = "R. Sedgewick", //
title = "1.3 Union-Find Algorithms", //
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/unionfind/WeightedQuickUnionStaticDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/unionfind/WeightedQuickUnionStaticDBIDs.java
index 0e4dd24b..9ed8d618 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/unionfind/WeightedQuickUnionStaticDBIDs.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/datastructures/unionfind/WeightedQuickUnionStaticDBIDs.java
@@ -60,6 +60,7 @@ import de.lmu.ifi.dbs.elki.utilities.documentation.Reference;
*
* @author Evgeniy Faerman
* @author Erich Schubert
+ * @since 0.7.0
*/
@Reference(authors = "R. Sedgewick", //
title = "1.3 Union-Find Algorithms", //
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/documentation/Description.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/documentation/Description.java
index 163af834..1b4963bd 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/documentation/Description.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/documentation/Description.java
@@ -33,6 +33,7 @@ import java.lang.annotation.Target;
* Class/algorithm description
*
* @author Erich Schubert
+ * @since 0.3
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/documentation/DocumentationUtil.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/documentation/DocumentationUtil.java
index 0fbc3b96..6caa488b 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/documentation/DocumentationUtil.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/documentation/DocumentationUtil.java
@@ -28,6 +28,7 @@ package de.lmu.ifi.dbs.elki.utilities.documentation;
* Utilities for extracting documentation from class annotations.
*
* @author Erich Schubert
+ * @since 0.3
*
* @apiviz.uses de.lmu.ifi.dbs.elki.utilities.documentation.Title
* @apiviz.uses de.lmu.ifi.dbs.elki.utilities.documentation.Description
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/documentation/Reference.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/documentation/Reference.java
index 9c84661e..9e8a37ff 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/documentation/Reference.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/documentation/Reference.java
@@ -33,6 +33,7 @@ import java.lang.annotation.Target;
* Annotation to specify a reference.
*
* @author Erich Schubert
+ * @since 0.3
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/documentation/Restricted.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/documentation/Restricted.java
index 29955acf..a1725b64 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/documentation/Restricted.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/documentation/Restricted.java
@@ -34,6 +34,7 @@ import java.lang.annotation.Target;
* associated patents, and therefore must not be included in the release.
*
* @author Erich Schubert
+ * @since 0.3
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/documentation/Title.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/documentation/Title.java
index 77889f03..5e7af068 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/documentation/Title.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/documentation/Title.java
@@ -33,6 +33,7 @@ import java.lang.annotation.Target;
* Simple interface to provide a nicer title for the class.
*
* @author Erich Schubert
+ * @since 0.3
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ensemble/EnsembleVoting.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ensemble/EnsembleVoting.java
index 994b8a1b..12e15692 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ensemble/EnsembleVoting.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ensemble/EnsembleVoting.java
@@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.utilities.ensemble;
* Interface for ensemble voting rules
*
* @author Erich Schubert
+ * @since 0.4.0
*/
public interface EnsembleVoting {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ensemble/EnsembleVotingInverseMultiplicative.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ensemble/EnsembleVotingInverseMultiplicative.java
index 0b4c245f..f0238cc1 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ensemble/EnsembleVotingInverseMultiplicative.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ensemble/EnsembleVotingInverseMultiplicative.java
@@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer;
* {@code 1-product(1-s_i)}
*
* @author Erich Schubert
+ * @since 0.5.0
*/
public class EnsembleVotingInverseMultiplicative implements EnsembleVoting {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ensemble/EnsembleVotingMax.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ensemble/EnsembleVotingMax.java
index 67e86277..ba59c1c1 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ensemble/EnsembleVotingMax.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ensemble/EnsembleVotingMax.java
@@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.utilities.ensemble;
* Simple combination rule, by taking the maximum.
*
* @author Erich Schubert
+ * @since 0.2
*/
public class EnsembleVotingMax implements EnsembleVoting {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ensemble/EnsembleVotingMean.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ensemble/EnsembleVotingMean.java
index 8eec61e4..bf26f9ed 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ensemble/EnsembleVotingMean.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ensemble/EnsembleVotingMean.java
@@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.utilities.ensemble;
* Simple combination rule, by taking the mean
*
* @author Erich Schubert
+ * @since 0.2
*/
public class EnsembleVotingMean implements EnsembleVoting {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ensemble/EnsembleVotingMedian.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ensemble/EnsembleVotingMedian.java
index ddd81d40..d48bd474 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ensemble/EnsembleVotingMedian.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ensemble/EnsembleVotingMedian.java
@@ -36,6 +36,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleParameter;
* Note: median is very similar to a <em>majority voting</em>!
*
* @author Erich Schubert
+ * @since 0.4.0
*/
public class EnsembleVotingMedian implements EnsembleVoting {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ensemble/EnsembleVotingMin.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ensemble/EnsembleVotingMin.java
index 99f193c1..2916be9b 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ensemble/EnsembleVotingMin.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ensemble/EnsembleVotingMin.java
@@ -28,6 +28,7 @@ package de.lmu.ifi.dbs.elki.utilities.ensemble;
* Simple combination rule, by taking the minimum.
*
* @author Erich Schubert
+ * @since 0.5.0
*/
public class EnsembleVotingMin implements EnsembleVoting {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ensemble/EnsembleVotingMultiplicative.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ensemble/EnsembleVotingMultiplicative.java
index 5e4f34cd..adfa5b71 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ensemble/EnsembleVotingMultiplicative.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/ensemble/EnsembleVotingMultiplicative.java
@@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer;
* {@code product(s_i)}
*
* @author Erich Schubert
+ * @since 0.5.0
*/
public class EnsembleVotingMultiplicative implements EnsembleVoting {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/exceptions/APIViolationException.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/exceptions/APIViolationException.java
index b6a56a48..82632083 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/exceptions/APIViolationException.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/exceptions/APIViolationException.java
@@ -36,6 +36,7 @@ package de.lmu.ifi.dbs.elki.utilities.exceptions;
* the Java compiler).
*
* @author Erich Schubert
+ * @since 0.4.0
*/
public class APIViolationException extends AbortException {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/exceptions/AbortException.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/exceptions/AbortException.java
index 678abdd9..764c68e8 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/exceptions/AbortException.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/exceptions/AbortException.java
@@ -28,6 +28,7 @@ package de.lmu.ifi.dbs.elki.utilities.exceptions;
* Exception for aborting some process and transporting a message.
*
* @author Arthur Zimek
+ * @since 0.2
*/
public class AbortException extends RuntimeException {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/exceptions/ExceptionMessages.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/exceptions/ExceptionMessages.java
index 68560813..c0302f97 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/exceptions/ExceptionMessages.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/exceptions/ExceptionMessages.java
@@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.utilities.exceptions;
* Interface to collect exception messages that are used in several cases.
*
* @author Arthur Zimek
+ * @since 0.2
*/
public interface ExceptionMessages {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/exceptions/NotImplementedException.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/exceptions/NotImplementedException.java
index 89f33361..ac116a38 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/exceptions/NotImplementedException.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/exceptions/NotImplementedException.java
@@ -29,6 +29,7 @@ package de.lmu.ifi.dbs.elki.utilities.exceptions;
* See {@link ExceptionMessages} for common explanations.
*
* @author Erich Schubert
+ * @since 0.4.0
*/
public class NotImplementedException extends AbortException {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/exceptions/ObjectNotFoundException.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/exceptions/ObjectNotFoundException.java
index f44c11b9..1275c6ae 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/exceptions/ObjectNotFoundException.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/exceptions/ObjectNotFoundException.java
@@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBID;
* Exception thrown when the requested object was not found in the database.
*
* @author Erich Schubert
+ * @since 0.4.0
*/
public class ObjectNotFoundException extends RuntimeException {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/exceptions/UnableToComplyException.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/exceptions/UnableToComplyException.java
index ee00ff06..c004e401 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/exceptions/UnableToComplyException.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/exceptions/UnableToComplyException.java
@@ -28,6 +28,7 @@ package de.lmu.ifi.dbs.elki.utilities.exceptions;
* General Exception to state inability to execute an operation.
*
* @author Arthur Zimek
+ * @since 0.2
*/
@SuppressWarnings("serial")
public class UnableToComplyException extends Exception {
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/BufferedLineReader.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/BufferedLineReader.java
index b93c28bf..d387093e 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/BufferedLineReader.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/BufferedLineReader.java
@@ -28,12 +28,13 @@ import java.io.InputStreamReader;
/**
* Class for buffered IO, avoiding some of the overheads of the Java API.
- *
+ *
* The main difference to the standard Java API is that this implementation will
* reuse the buffer. <b>After a call to {@code nextLine()}, the buffer will be
* overwitten!</b>
- *
+ *
* @author Erich Schubert
+ * @since 0.7.0
*/
public class BufferedLineReader implements AutoCloseable {
/**
@@ -44,7 +45,7 @@ public class BufferedLineReader implements AutoCloseable {
/**
* The buffer we read the data into.
*/
- protected StringBuilder buf = new StringBuilder();
+ protected StringBuilder buf = new StringBuilder(1024);
/**
* Current line number.
@@ -98,9 +99,9 @@ public class BufferedLineReader implements AutoCloseable {
/**
* Reset to a new line reader.
- *
+ *
* <b>A previous reader will not be closed automatically!</b>
- *
+ *
* @param r New reader
*/
public void reset(LineReader r) {
@@ -110,9 +111,9 @@ public class BufferedLineReader implements AutoCloseable {
/**
* Reset to a new line reader.
- *
+ *
* <b>A previous stream will not be closed automatically!</b>
- *
+ *
* @param in New input stream reader
*/
public void reset(InputStream in) {
@@ -122,9 +123,9 @@ public class BufferedLineReader implements AutoCloseable {
/**
* Reset to a new line reader.
- *
+ *
* <b>A previous stream will not be closed automatically!</b>
- *
+ *
* @param in New input stream reader
*/
public void reset(InputStreamReader in) {
@@ -134,9 +135,9 @@ public class BufferedLineReader implements AutoCloseable {
/**
* Get the reader buffer.
- *
+ *
* <b>After a call to {@code nextLine()}, the buffer will be overwitten!</b>
- *
+ *
* @return Buffer.
*/
public CharSequence getBuffer() {
@@ -145,7 +146,7 @@ public class BufferedLineReader implements AutoCloseable {
/**
* Get the current line number.
- *
+ *
* @return Current line number
*/
public int getLineNumber() {
@@ -154,7 +155,7 @@ public class BufferedLineReader implements AutoCloseable {
/**
* Read the next line.
- *
+ *
* @return {@code true} if another line was read successfully.
* @throws IOException on IO errors.
*/
@@ -179,7 +180,7 @@ public class BufferedLineReader implements AutoCloseable {
/**
* Get the length of the string, not taking trailing linefeeds into account.
- *
+ *
* @param line Input line
* @return Length
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/ByteArrayUtil.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/ByteArrayUtil.java
index 49493e33..8cb7570a 100755
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/ByteArrayUtil.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/ByteArrayUtil.java
@@ -48,6 +48,7 @@ import de.lmu.ifi.dbs.elki.utilities.exceptions.AbortException;
* {@link java.io.ByteArrayOutputStream}
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.landmark
*
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/ByteBufferInputStream.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/ByteBufferInputStream.java
index 138957bd..1fcb1f3c 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/ByteBufferInputStream.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/ByteBufferInputStream.java
@@ -30,6 +30,7 @@ import java.nio.ByteBuffer;
* Wrap an existing ByteBuffer as InputStream.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.has ByteBuffer
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/ByteBufferOutputStream.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/ByteBufferOutputStream.java
index 3e2b397c..8e07f075 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/ByteBufferOutputStream.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/ByteBufferOutputStream.java
@@ -30,6 +30,7 @@ import java.nio.ByteBuffer;
* Wrap an existing ByteBuffer as OutputStream.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.has ByteBuffer
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/ByteBufferSerializer.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/ByteBufferSerializer.java
index 94f882ab..c58d6063 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/ByteBufferSerializer.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/ByteBufferSerializer.java
@@ -30,6 +30,7 @@ import java.nio.ByteBuffer;
* Class to convert from and to byte arrays (in index structures).
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.has ByteBuffer - - oneway «serializes to/from»
* @apiviz.excludeSubtypes
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/FixedSizeByteBufferSerializer.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/FixedSizeByteBufferSerializer.java
index ac966c7e..e360fc43 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/FixedSizeByteBufferSerializer.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/FixedSizeByteBufferSerializer.java
@@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.utilities.io;
* Serializers with a fixed length serialization.
*
* @author Erich Schubert
+ * @since 0.4.0
* @apiviz.excludeSubtypes
*
* @param <T> Type
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/LineReader.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/LineReader.java
index 3bec4ad4..01b1336d 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/LineReader.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/LineReader.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.utilities.io;
This file is part of ELKI:
Environment for Developing KDD-Applications Supported by Index-Structures
- Copyright (C) 2015
+ Copyright (C) 2016
Ludwig-Maximilians-Universität München
Lehr- und Forschungseinheit für Datenbanksysteme
ELKI Development Team
@@ -30,43 +30,52 @@ import java.io.Reader;
/**
* Fast class to read a file, line per line.
- *
+ *
* Lines must be split using Unix newlines <code>\n</code>, linefeeds
* <code>\r</code> are ignored.
- *
+ *
* This is a rather minimal implementation, which supposedly pays off in
* performance. In particular, this class allows recycling the buffer, which
* will yield less object allocations and thus less garbage collection.
- *
+ *
* Usage example:
- *
+ *
* <pre>
* StringBuilder buf = new StringBuilder();
* LineReader reader = new LineReader(inputStream);
* // Clear buffer, and append next line.
- * while(reader.readLine(buf.delete(0, buf.length()))) {
+ * while(reader.readLine(buf.setLength(0))) {
* // process string in buffer.
* }
* </pre>
- *
+ *
* @author Erich Schubert
+ * @since 0.7.0
*/
public class LineReader implements AutoCloseable {
- /** Buffer size to use */
+ /**
+ * Default buffer size to use
+ */
final static int BUFFER_SIZE = 4096;
- /** Input stream to read from */
+ /**
+ * Input stream to read from
+ */
Reader in;
- /** Character buffer */
- char[] buffer = new char[BUFFER_SIZE];
+ /**
+ * Character buffer
+ */
+ char[] buffer;
- /** Current position, and length of buffer */
+ /**
+ * Current position, and length of buffer
+ */
int pos = 0, end = 0;
/**
* Constructor
- *
+ *
* @param in Stream
*/
public LineReader(InputStream in) {
@@ -75,16 +84,37 @@ public class LineReader implements AutoCloseable {
/**
* Constructor
- *
+ *
* @param in Reader
*/
public LineReader(Reader in) {
+ this(in, BUFFER_SIZE);
+ }
+
+ /**
+ * Constructor
+ *
+ * @param in Reader
+ * @param buffersize Buffer size
+ */
+ public LineReader(InputStream in, int buffersize) {
+ this(new InputStreamReader(in), buffersize);
+ }
+
+ /**
+ * Constructor
+ *
+ * @param in Reader
+ * @param buffersize Buffer size
+ */
+ public LineReader(Reader in, int buffersize) {
this.in = in;
+ this.buffer = new char[buffersize];
}
/**
* Read a line into the given buffer.
- *
+ *
* @param buf Buffer.
* @return {@code true} if some characters have been read.
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/TokenizedReader.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/TokenizedReader.java
index f9363d57..0afcb9ab 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/TokenizedReader.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/TokenizedReader.java
@@ -31,6 +31,7 @@ import java.util.regex.Pattern;
* Reader that will tokenize the input data as desired.
*
* @author Erich Schubert
+ * @since 0.7.0
*
* @apiviz.composedOf Tokenizer
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/Tokenizer.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/Tokenizer.java
index 67339cd2..b86923d7 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/Tokenizer.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/io/Tokenizer.java
@@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.utilities.datastructures.iterator.Iter;
* String tokenizer.
*
* @author Erich Schubert
+ * @since 0.6.0
*/
public class Tokenizer implements Iter {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/AbstractParameterizer.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/AbstractParameterizer.java
index f8a7b390..a3559e86 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/AbstractParameterizer.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/AbstractParameterizer.java
@@ -30,6 +30,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameteriz
* Abstract base class that handles the parameterization of a class.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.uses Parameterization
* @apiviz.has de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.Parameter
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/InternalParameterizationErrors.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/InternalParameterizationErrors.java
index 3301c31c..9173cc24 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/InternalParameterizationErrors.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/InternalParameterizationErrors.java
@@ -32,6 +32,7 @@ import java.util.Collection;
* This is meant for reporting re-parameterization errors.
*
* @author Erich Schubert
+ * @since 0.3
*/
public class InternalParameterizationErrors extends ParameterException {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/NoParameterValueException.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/NoParameterValueException.java
index 50ad6215..36c23718 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/NoParameterValueException.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/NoParameterValueException.java
@@ -25,6 +25,9 @@ package de.lmu.ifi.dbs.elki.utilities.optionhandling;
/**
* Thrown by OptionHandler in case of incorrect parameter-array.
+ *
+ * @author Arthur Zimek
+ * @since 0.2
*/
public class NoParameterValueException extends ParameterException {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/OptionID.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/OptionID.java
index 20cdc6c7..67c6326e 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/OptionID.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/OptionID.java
@@ -29,6 +29,7 @@ package de.lmu.ifi.dbs.elki.utilities.optionhandling;
* within this class.
*
* @author Elke Achtert
+ * @since 0.2
*/
public final class OptionID {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/OptionUtil.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/OptionUtil.java
index a72035f9..2f0def2b 100755
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/OptionUtil.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/OptionUtil.java
@@ -39,6 +39,9 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.Parameter;
/**
* Utility functions related to Option handling.
*
+ * @author Erich Schubert
+ * @since 0.2
+ *
* @apiviz.uses Parameter
*/
public final class OptionUtil {
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/ParameterException.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/ParameterException.java
index 2a456fed..9527b946 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/ParameterException.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/ParameterException.java
@@ -28,6 +28,7 @@ package de.lmu.ifi.dbs.elki.utilities.optionhandling;
* Abstract super class for all exceptions thrown during parameterization.
*
* @author Elke Achtert
+ * @since 0.2
*/
@SuppressWarnings("serial")
public abstract class ParameterException extends Exception {
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/Parameterizer.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/Parameterizer.java
index 2931309f..c0134b40 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/Parameterizer.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/Parameterizer.java
@@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameteriz
* To instantiate a class, use {@link Parameterization#tryInstantiate(Class)}!
*
* @author Erich Schubert
+ * @since 0.4.0
*/
public interface Parameterizer {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/UnspecifiedParameterException.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/UnspecifiedParameterException.java
index c7a9909c..5569a648 100755
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/UnspecifiedParameterException.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/UnspecifiedParameterException.java
@@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.Parameter;
* Exception when a required parameter was not given.
*
* @author Erich Schubert
+ * @since 0.2
*/
public class UnspecifiedParameterException extends WrongParameterValueException {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/UnusedParameterException.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/UnusedParameterException.java
index 016cdf76..7cd86f8c 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/UnusedParameterException.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/UnusedParameterException.java
@@ -23,9 +23,11 @@ package de.lmu.ifi.dbs.elki.utilities.optionhandling;
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-
/**
* Thrown by OptionHandler in case of request of an unused parameter.
+ *
+ * @author Arthur Zimek
+ * @since 0.2
*/
@SuppressWarnings("serial")
public class UnusedParameterException extends ParameterException {
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/WrongParameterValueException.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/WrongParameterValueException.java
index c0bd4b40..cd24cf66 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/WrongParameterValueException.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/WrongParameterValueException.java
@@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.Parameter;
* Thrown by a Parameterizable object in case of wrong parameter format.
*
* @author Steffi Wanka
+ * @since 0.2
*/
public class WrongParameterValueException extends ParameterException {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/AbstractNumberConstraint.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/AbstractNumberConstraint.java
index b08da639..815ccdef 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/AbstractNumberConstraint.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/AbstractNumberConstraint.java
@@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints;
* Abstract super class for constraints dealing with a certain number value.
*
* @author Elke Achtert
+ * @since 0.2
*
* @apiviz.uses
* de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.NumberParameter
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/AllOrNoneMustBeSetGlobalConstraint.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/AllOrNoneMustBeSetGlobalConstraint.java
index f468af92..3430fd81 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/AllOrNoneMustBeSetGlobalConstraint.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/AllOrNoneMustBeSetGlobalConstraint.java
@@ -35,6 +35,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.Parameter;
* parameters ({@link Parameter}) must be set, or none of them.
*
* @author Steffi Wanka
+ * @since 0.2
*/
public class AllOrNoneMustBeSetGlobalConstraint implements GlobalParameterConstraint {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/CommonConstraints.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/CommonConstraints.java
index 3507e946..09df14df 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/CommonConstraints.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/CommonConstraints.java
@@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints;
* Class storing a number of very common constraints.
*
* @author Erich Schubert
+ * @since 0.6.0
*
* @apiviz.landmark
* @apiviz.composedOf ParameterConstraint
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/EqualSizeGlobalConstraint.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/EqualSizeGlobalConstraint.java
index ae817a7a..e6257e47 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/EqualSizeGlobalConstraint.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/EqualSizeGlobalConstraint.java
@@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ListParameter;
* ) must have equal list sizes.
*
* @author Steffi Wanka
+ * @since 0.2
*/
public class EqualSizeGlobalConstraint implements GlobalParameterConstraint {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/EqualStringConstraint.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/EqualStringConstraint.java
index 52ac3ff6..e7379b6a 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/EqualStringConstraint.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/EqualStringConstraint.java
@@ -35,6 +35,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.WrongParameterValueException
* ) to be tested is equal to the specified constraint-strings.
*
* @author Steffi Wanka
+ * @since 0.2
*
* @apiviz.uses de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.StringParameter
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/GlobalListSizeConstraint.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/GlobalListSizeConstraint.java
index 05d391b3..21669a38 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/GlobalListSizeConstraint.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/GlobalListSizeConstraint.java
@@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ListParameter;
* specified by the integer parameter ({@link IntParameter}) given.
*
* @author Steffi Wanka
+ * @since 0.2
*/
public class GlobalListSizeConstraint implements GlobalParameterConstraint {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/GlobalParameterConstraint.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/GlobalParameterConstraint.java
index c01802bc..ae1ea824 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/GlobalParameterConstraint.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/GlobalParameterConstraint.java
@@ -35,6 +35,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.ParameterException;
* The proper constraint test should be implemented in the method {@link #test()}.
* </p>
* @author Steffi Wanka
+ * @since 0.2
*
*/
public interface GlobalParameterConstraint {
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/GlobalVectorListElementSizeConstraint.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/GlobalVectorListElementSizeConstraint.java
index 79d67a2c..b162fc4a 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/GlobalVectorListElementSizeConstraint.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/GlobalVectorListElementSizeConstraint.java
@@ -23,24 +23,24 @@ package de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints;
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-import de.lmu.ifi.dbs.elki.math.linearalgebra.Vector;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.ParameterException;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.WrongParameterValueException;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.IntParameter;
-import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.VectorListParameter;
+import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleArrayListParameter;
/**
* Global parameter constraint for testing if the dimensions of each vector
- * specified by a given vector list parameter ({@link VectorListParameter})
+ * specified by a given vector list parameter ({@link DoubleArrayListParameter})
* correspond to the value of a integer parameter ({@link IntParameter}) given.
*
* @author Steffi Wanka
+ * @since 0.2
*/
public class GlobalVectorListElementSizeConstraint implements GlobalParameterConstraint {
/**
* Vector list parameter.
*/
- private VectorListParameter vector;
+ private DoubleArrayListParameter vector;
/**
* Integer parameter providing the size constraint.
@@ -56,7 +56,7 @@ public class GlobalVectorListElementSizeConstraint implements GlobalParameterCon
* @param vector the vector list parameter
* @param sizeConstraint the integer parameter providing the size constraint
*/
- public GlobalVectorListElementSizeConstraint(VectorListParameter vector, IntParameter sizeConstraint) {
+ public GlobalVectorListElementSizeConstraint(DoubleArrayListParameter vector, IntParameter sizeConstraint) {
this.vector = vector;
this.size = sizeConstraint;
}
@@ -73,9 +73,12 @@ public class GlobalVectorListElementSizeConstraint implements GlobalParameterCon
return;
}
- for(Vector vec : vector.getValue()) {
- if(vec.getDimensionality() != size.intValue()) {
- throw new WrongParameterValueException("Global Parameter Constraint Error.\n" + "The vectors of vector list parameter " + vector.getName() + " have not the required dimension of " + size.getValue() + " given by integer parameter " + size.getName() + ".");
+ for(double[] vec : vector.getValue()) {
+ if(vec.length != size.intValue()) {
+ throw new WrongParameterValueException("Global Parameter Constraint Error.\n" //
+ + "The vectors of vector list parameter " + vector.getName() //
+ + " have not the required dimension of " + size.getValue() //
+ + " given by integer parameter " + size.getName() + ".");
}
}
}
@@ -84,4 +87,4 @@ public class GlobalVectorListElementSizeConstraint implements GlobalParameterCon
public String getDescription() {
return "The dimensionality of the vectors of vector list parameter " + vector.getName() + " must have the value of integer parameter " + size.getName();
}
-} \ No newline at end of file
+}
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/GreaterConstraint.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/GreaterConstraint.java
index 002ff4f3..b9e445d1 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/GreaterConstraint.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/GreaterConstraint.java
@@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.NumberParameter;
* constraint value.
*
* @author Steffi Wanka
+ * @since 0.2
*/
public class GreaterConstraint extends AbstractNumberConstraint<Number> {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/GreaterEqualConstraint.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/GreaterEqualConstraint.java
index fab416d4..a8791f97 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/GreaterEqualConstraint.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/GreaterEqualConstraint.java
@@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.NumberParameter;
* than the specified constraint value.
*
* @author Steffi Wanka
+ * @since 0.2
*/
public class GreaterEqualConstraint extends AbstractNumberConstraint<Number> {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/LessConstraint.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/LessConstraint.java
index c63fa1ea..c2b73d1d 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/LessConstraint.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/LessConstraint.java
@@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.NumberParameter;
* constraint value.
*
* @author Steffi Wanka
+ * @since 0.2
*/
public class LessConstraint extends AbstractNumberConstraint<Number> {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/LessEqualConstraint.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/LessEqualConstraint.java
index 8aef29b4..a8c210d4 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/LessEqualConstraint.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/LessEqualConstraint.java
@@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.NumberParameter;
* the specified constraint value.
*
* @author Steffi Wanka
+ * @since 0.2
*/
public class LessEqualConstraint extends AbstractNumberConstraint<Number> {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/LessEqualGlobalConstraint.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/LessEqualGlobalConstraint.java
index c3f4ef09..10f12988 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/LessEqualGlobalConstraint.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/LessEqualGlobalConstraint.java
@@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.NumberParameter;
* the value of the second number parameter ({@link NumberParameter}).
*
* @author Steffi Wanka
+ * @since 0.2
* @param <T> Number type
*/
public class LessEqualGlobalConstraint<T extends Number> implements GlobalParameterConstraint {
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/LessGlobalConstraint.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/LessGlobalConstraint.java
index 0ab9fbae..57b9d473 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/LessGlobalConstraint.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/LessGlobalConstraint.java
@@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.NumberParameter;
* value of the second number parameter ({@link NumberParameter}) given.
*
* @author Steffi Wanka
+ * @since 0.2
* @param <T> Number type
*/
public class LessGlobalConstraint<T extends Number> implements GlobalParameterConstraint {
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/ListEachConstraint.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/ListEachConstraint.java
index 764b1773..ff1aba69 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/ListEachConstraint.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/ListEachConstraint.java
@@ -32,6 +32,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.ParameterException;
* Applies constraints to all elements of a list.
*
* @author Erich Schubert
+ * @since 0.5.5
*
* @apiviz.composedOf ParameterConstraint oneway 1 n
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/ListParameterNoDuplicateValueConstraint.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/ListParameterNoDuplicateValueConstraint.java
index e0dfe3e1..f5c052b6 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/ListParameterNoDuplicateValueConstraint.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/ListParameterNoDuplicateValueConstraint.java
@@ -36,6 +36,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.WrongParameterValueException
* is not allowed to have duplicate values.
*
* @author Arthur Zimek
+ * @since 0.5.5
*/
public class ListParameterNoDuplicateValueConstraint<T extends Object> implements ParameterConstraint<List<T>> {
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/ListSizeConstraint.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/ListSizeConstraint.java
index 0969ac06..c9f273de 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/ListSizeConstraint.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/ListSizeConstraint.java
@@ -37,6 +37,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ListParameter;
* FIXME: Unfortunately, we cannot have good type safety anymore right now.
*
* @author Steffi Wanka
+ * @since 0.2
*
* @apiviz.uses
* de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ListParameter
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/NoDuplicateValueGlobalConstraint.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/NoDuplicateValueGlobalConstraint.java
index 4efd6118..55ea5363 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/NoDuplicateValueGlobalConstraint.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/NoDuplicateValueGlobalConstraint.java
@@ -40,6 +40,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.Parameter;
* parameters ({@link NumberParameter}) are not allowed to have the same value.
*
* @author Steffi Wanka
+ * @since 0.2
*/
public class NoDuplicateValueGlobalConstraint implements GlobalParameterConstraint {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/OneMustBeSetGlobalConstraint.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/OneMustBeSetGlobalConstraint.java
index af35e3e9..9ed325f4 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/OneMustBeSetGlobalConstraint.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/OneMustBeSetGlobalConstraint.java
@@ -37,6 +37,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.Parameter;
* set.
*
* @author Steffi Wanka
+ * @since 0.2
*/
public class OneMustBeSetGlobalConstraint implements GlobalParameterConstraint {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/OnlyOneIsAllowedToBeSetGlobalConstraint.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/OnlyOneIsAllowedToBeSetGlobalConstraint.java
index c37a05f2..58c69dd9 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/OnlyOneIsAllowedToBeSetGlobalConstraint.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/OnlyOneIsAllowedToBeSetGlobalConstraint.java
@@ -38,6 +38,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.Parameter;
* parameters ({@link Parameter}) is allowed to be set.
*
* @author Steffi Wanka
+ * @since 0.2
*/
public class OnlyOneIsAllowedToBeSetGlobalConstraint implements GlobalParameterConstraint {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/ParameterConstraint.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/ParameterConstraint.java
index 99009941..9061533b 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/ParameterConstraint.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/ParameterConstraint.java
@@ -37,6 +37,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.ParameterException;
* </p>
*
* @author Steffi Wanka
+ * @since 0.2
* @param <T> the type of the parameter the constraint applies to
*/
public interface ParameterConstraint<T> {
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/ParameterFlagGlobalConstraint.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/ParameterFlagGlobalConstraint.java
index 03e4b9e1..3de8ecb2 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/ParameterFlagGlobalConstraint.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/ParameterFlagGlobalConstraint.java
@@ -38,6 +38,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.Parameter;
* not.
*
* @author Steffi Wanka
+ * @since 0.2
*
* @apiviz.uses de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.Flag
* @apiviz.uses
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/StringLengthConstraint.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/StringLengthConstraint.java
index 50417b21..7a6acd32 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/StringLengthConstraint.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/constraints/StringLengthConstraint.java
@@ -32,6 +32,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.WrongParameterValueException
* .
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.uses de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.StringParameter
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/AbstractParameterization.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/AbstractParameterization.java
index 4980af5f..67180790 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/AbstractParameterization.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/AbstractParameterization.java
@@ -39,6 +39,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.Parameter;
* Abstract class with shared code for parameterization handling.
*
* @author Erich Schubert
+ * @since 0.3
*/
public abstract class AbstractParameterization implements Parameterization {
// TODO: refactor "tryInstantiate" even in a higher class?
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/ChainedParameterization.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/ChainedParameterization.java
index 98cfa5a9..f4f8ca3c 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/ChainedParameterization.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/ChainedParameterization.java
@@ -39,6 +39,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.Parameter;
* for examples.
*
* @author Erich Schubert
+ * @since 0.3
*/
public class ChainedParameterization extends AbstractParameterization {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/EmptyParameterization.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/EmptyParameterization.java
index fe1de0be..c89a1420 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/EmptyParameterization.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/EmptyParameterization.java
@@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.Parameter;
* Parameterization handler that only allows the use of default values.
*
* @author Erich Schubert
+ * @since 0.3
*/
public class EmptyParameterization extends AbstractParameterization {
@Override
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/ListParameterization.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/ListParameterization.java
index c67533a6..542c98ef 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/ListParameterization.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/ListParameterization.java
@@ -33,24 +33,25 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.OptionID;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.ParameterException;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.Flag;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.Parameter;
-import de.lmu.ifi.dbs.elki.utilities.pairs.Pair;
/**
* Parameterization handler using a List and OptionIDs, for programmatic use.
*
* @author Erich Schubert
+ * @since 0.3
*/
public class ListParameterization extends AbstractParameterization {
/**
* The actual parameters, for storage
*/
- LinkedList<Pair<OptionID, Object>> parameters = new LinkedList<>();
+ List<ParameterPair> parameters;
/**
* Default constructor.
*/
public ListParameterization() {
super();
+ this.parameters = new LinkedList<>();
}
/**
@@ -58,10 +59,11 @@ public class ListParameterization extends AbstractParameterization {
*
* @param dbParameters existing parameter collection
*/
- public ListParameterization(Collection<Pair<OptionID, Object>> dbParameters) {
+ public ListParameterization(Collection<ParameterPair> dbParameters) {
this();
- for (Pair<OptionID, Object> pair : dbParameters) {
- addParameter(pair.first, pair.second);
+ this.parameters = new LinkedList<>();
+ for(ParameterPair pair : dbParameters) {
+ addParameter(pair.option, pair.value);
}
}
@@ -71,7 +73,7 @@ public class ListParameterization extends AbstractParameterization {
* @param optionid Option ID
*/
public void addFlag(OptionID optionid) {
- parameters.add(new Pair<OptionID, Object>(optionid, Flag.SET));
+ parameters.add(new ParameterPair(optionid, Flag.SET));
}
/**
@@ -81,7 +83,7 @@ public class ListParameterization extends AbstractParameterization {
* @param value Value
*/
public void addParameter(OptionID optionid, Object value) {
- parameters.add(new Pair<>(optionid, value));
+ parameters.add(new ParameterPair(optionid, value));
}
/**
@@ -90,7 +92,7 @@ public class ListParameterization extends AbstractParameterization {
* @param flag Flag to add, if set
*/
public void forwardOption(Flag flag) {
- if (flag.isDefined() && flag.getValue().booleanValue()) {
+ if(flag.isDefined() && flag.getValue().booleanValue()) {
addFlag(flag.getOptionID());
}
}
@@ -101,19 +103,19 @@ public class ListParameterization extends AbstractParameterization {
* @param param Parameter to add
*/
public void forwardOption(Parameter<?> param) {
- if (param.isDefined()) {
+ if(param.isDefined()) {
addParameter(param.getOptionID(), param.getValue());
}
}
@Override
public boolean setValueForOption(Parameter<?> opt) throws ParameterException {
- Iterator<Pair<OptionID, Object>> iter = parameters.iterator();
- while (iter.hasNext()) {
- Pair<OptionID, Object> pair = iter.next();
- if (pair.first == opt.getOptionID()) {
+ Iterator<ParameterPair> iter = parameters.iterator();
+ while(iter.hasNext()) {
+ ParameterPair pair = iter.next();
+ if(pair.option == opt.getOptionID()) {
iter.remove();
- opt.setValue(pair.second);
+ opt.setValue(pair.value);
return true;
}
}
@@ -125,7 +127,7 @@ public class ListParameterization extends AbstractParameterization {
*
* @return Unused parameters.
*/
- public List<Pair<OptionID, Object>> getRemainingParameters() {
+ public List<ParameterPair> getRemainingParameters() {
return parameters;
}
@@ -145,9 +147,9 @@ public class ListParameterization extends AbstractParameterization {
@Override
public String toString() {
StringBuilder buf = new StringBuilder();
- for (Pair<OptionID, Object> pair : parameters) {
- buf.append('-').append(pair.getFirst().toString()).append(' ');
- buf.append(pair.getSecond().toString()).append(' ');
+ for(ParameterPair pair : parameters) {
+ buf.append('-').append(pair.option.toString()).append(' ');
+ buf.append(pair.value.toString()).append(' ');
}
return buf.toString();
}
@@ -159,16 +161,53 @@ public class ListParameterization extends AbstractParameterization {
*/
public ArrayList<String> serialize() {
ArrayList<String> params = new ArrayList<>();
- for (Pair<OptionID, Object> pair : parameters) {
- params.add("-" + pair.getFirst().toString());
- if (pair.getSecond() instanceof String) {
- params.add((String) pair.getSecond());
- } else if (pair.getSecond() instanceof Class) {
- params.add(((Class<?>) pair.getSecond()).getCanonicalName());
- } else { // Fallback:
- params.add(pair.getSecond().toString());
+ for(ParameterPair pair : parameters) {
+ params.add("-" + pair.option.toString());
+ if(pair.value instanceof String) {
+ params.add((String) pair.value);
+ }
+ else if(pair.value instanceof Class) {
+ params.add(((Class<?>) pair.value).getCanonicalName());
+ }
+ else { // Fallback:
+ params.add(pair.value.toString());
}
}
return params;
}
+
+ /**
+ * Parameter pair, package-private.
+ *
+ * @author Erich Schubert
+ *
+ * @apiviz.exclude
+ */
+ static final class ParameterPair {
+ /**
+ * Option key.
+ */
+ public OptionID option;
+
+ /**
+ * Option value.
+ */
+ public Object value;
+
+ /**
+ * Constructor.
+ *
+ * @param key Option key
+ * @param value Option value
+ */
+ public ParameterPair(OptionID key, Object value) {
+ this.option = key;
+ this.value = value;
+ }
+
+ @Override
+ public String toString() {
+ return "-" + option.getName() + " " + value;
+ }
+ }
}
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/MergedParameterization.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/MergedParameterization.java
index 4faa3c60..926e660f 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/MergedParameterization.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/MergedParameterization.java
@@ -23,17 +23,16 @@ package de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization;
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-import java.util.Collection;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
import de.lmu.ifi.dbs.elki.utilities.ClassGenericsUtil;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.InternalParameterizationErrors;
-import de.lmu.ifi.dbs.elki.utilities.optionhandling.OptionID;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.ParameterException;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.GlobalParameterConstraint;
+import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.ListParameterization.ParameterPair;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.Parameter;
-import de.lmu.ifi.dbs.elki.utilities.pairs.Pair;
/**
* This configuration can be "rewound" to allow the same values to be consumed
@@ -42,6 +41,7 @@ import de.lmu.ifi.dbs.elki.utilities.pairs.Pair;
* e.g. in visualization classes.
*
* @author Erich Schubert
+ * @since 0.3
*/
// TODO: Can we merge MergedParameterization and TrackParameters into one?
public class MergedParameterization implements Parameterization {
@@ -58,7 +58,7 @@ public class MergedParameterization implements Parameterization {
/**
* Parameters to rewind.
*/
- final private List<Pair<OptionID, Object>> used;
+ final private List<ParameterPair> used;
/**
* Constructor.
@@ -79,7 +79,7 @@ public class MergedParameterization implements Parameterization {
* @param current Current parameterization to re-used
* @param used Used parameters list.
*/
- private MergedParameterization(Parameterization inner, ListParameterization current, List<Pair<OptionID, Object>> used) {
+ private MergedParameterization(Parameterization inner, ListParameterization current, List<ParameterPair> used) {
super();
this.inner = inner;
this.current = current;
@@ -91,8 +91,8 @@ public class MergedParameterization implements Parameterization {
*/
public void rewind() {
synchronized(used) {
- for(Pair<OptionID, Object> pair : used) {
- current.addParameter(pair.first, pair.second);
+ for(ParameterPair pair : used) {
+ current.addParameter(pair.option, pair.value);
}
used.clear();
}
@@ -102,7 +102,7 @@ public class MergedParameterization implements Parameterization {
public boolean setValueForOption(Parameter<?> opt) throws ParameterException {
try {
if(current.setValueForOption(opt)) {
- used.add(new Pair<OptionID, Object>(opt.getOptionID(), opt.getValue()));
+ used.add(new ParameterPair(opt.getOptionID(), opt.getValue()));
return true;
}
}
@@ -110,10 +110,10 @@ public class MergedParameterization implements Parameterization {
current.reportError(e);
}
if(inner.setValueForOption(opt)) {
- used.add(new Pair<OptionID, Object>(opt.getOptionID(), opt.getValue()));
+ used.add(new ParameterPair(opt.getOptionID(), opt.getValue()));
return true;
}
- used.add(new Pair<OptionID, Object>(opt.getOptionID(), opt.getDefaultValue()));
+ used.add(new ParameterPair(opt.getOptionID(), opt.getDefaultValue()));
return false;
}
@@ -128,7 +128,7 @@ public class MergedParameterization implements Parameterization {
public Collection<ParameterException> getErrors() {
return current.getErrors();
}
-
+
@Override
public boolean hasErrors() {
return current.hasErrors();
@@ -142,11 +142,11 @@ public class MergedParameterization implements Parameterization {
@Override
public boolean grab(Parameter<?> opt) {
try {
- if (setValueForOption(opt)) {
+ if(setValueForOption(opt)) {
return true;
}
// Try default value instead.
- if (opt.tryDefaultValue()) {
+ if(opt.tryDefaultValue()) {
return true;
}
// No value available.
@@ -175,7 +175,7 @@ public class MergedParameterization implements Parameterization {
return ClassGenericsUtil.tryInstantiate(r, c, this);
}
catch(Exception e) {
- reportError(new InternalParameterizationErrors("Error instantiating internal class: "+c.getName(), e));
+ reportError(new InternalParameterizationErrors("Error instantiating internal class: " + c.getName(), e));
return null;
}
}
@@ -186,7 +186,7 @@ public class MergedParameterization implements Parameterization {
return ClassGenericsUtil.tryInstantiate(c, c, this);
}
catch(Exception e) {
- reportError(new InternalParameterizationErrors("Error instantiating internal class: "+c.getName(), e));
+ reportError(new InternalParameterizationErrors("Error instantiating internal class: " + c.getName(), e));
return null;
}
}
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/Parameterization.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/Parameterization.java
index f165942e..29c22e27 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/Parameterization.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/Parameterization.java
@@ -40,6 +40,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.Parameter;
* @apiviz.uses ParameterException
*
* @author Erich Schubert
+ * @since 0.3
*/
public interface Parameterization {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/SerializedParameterization.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/SerializedParameterization.java
index b5ba3e58..2837983d 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/SerializedParameterization.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/SerializedParameterization.java
@@ -39,6 +39,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.Parameter;
* When building parameter lists, use {@link ListParameterization} where possible.
*
* @author Erich Schubert
+ * @since 0.3
*/
public class SerializedParameterization extends AbstractParameterization {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/TrackParameters.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/TrackParameters.java
index 5429ea8b..4b8ea073 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/TrackParameters.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/TrackParameters.java
@@ -42,6 +42,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.Parameter;
* All actual Parameterization operations are forwarded to the inner class.
*
* @author Erich Schubert
+ * @since 0.3
*
* @apiviz.composedOf TrackedParameter
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/TrackedParameter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/TrackedParameter.java
index caa87440..e039f492 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/TrackedParameter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/TrackedParameter.java
@@ -28,6 +28,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.Parameter;
* Class containing an object, and the associated value.
*
* @author Erich Schubert
+ * @since 0.3
*/
public class TrackedParameter {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/UnParameterization.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/UnParameterization.java
index a1d58676..ea48655c 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/UnParameterization.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/UnParameterization.java
@@ -40,6 +40,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.Parameter;
* in a non-recursive way.
*
* @author Erich Schubert
+ * @since 0.3
*/
public class UnParameterization implements Parameterization {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/AbstractParameter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/AbstractParameter.java
index d78d0dcc..17d17c6d 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/AbstractParameter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/AbstractParameter.java
@@ -44,6 +44,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.ParameterConstra
*
* @author Steffi Wanka
* @author Erich Schubert
+ * @since 0.3
*
* @apiviz.composedOf OptionID
* @apiviz.uses ParameterConstraint
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/ClassListParameter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/ClassListParameter.java
index d9d1a3a2..b0ce1bc7 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/ClassListParameter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/ClassListParameter.java
@@ -40,6 +40,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameteriz
*
* @author Steffi Wanka
* @author Erich Schubert
+ * @since 0.3
*
* @apiviz.uses ELKIServiceRegistry
*
@@ -96,6 +97,23 @@ public class ClassListParameter<C> extends ListParameter<ClassListParameter<C>,
return buf.toString();
}
+ @Override
+ public String getDefaultValueAsString() {
+ StringBuilder buf = new StringBuilder();
+ final String defPackage = restrictionClass.getPackage().getName() + ".";
+ for(Class<? extends C> c : getDefaultValue()) {
+ if(buf.length() > 0) {
+ buf.append(LIST_SEP);
+ }
+ String name = c.getName();
+ if(name.startsWith(defPackage)) {
+ name = name.substring(defPackage.length());
+ }
+ buf.append(name);
+ }
+ return buf.toString();
+ }
+
@SuppressWarnings("unchecked")
@Override
protected List<Class<? extends C>> parseValue(Object obj) throws ParameterException {
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/ClassParameter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/ClassParameter.java
index 6f562838..39e0daae 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/ClassParameter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/ClassParameter.java
@@ -43,6 +43,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameteriz
*
* @author Steffi Wanka
* @author Erich Schubert
+ * @since 0.2
*
* @apiviz.uses ELKIServiceRegistry
*
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/VectorListParameter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/DoubleArrayListParameter.java
index b6d999fb..696adbff 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/VectorListParameter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/DoubleArrayListParameter.java
@@ -3,7 +3,7 @@ package de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters;
This file is part of ELKI:
Environment for Developing KDD-Applications Supported by Index-Structures
- Copyright (C) 2015
+ Copyright (C) 2016
Ludwig-Maximilians-Universität München
Lehr- und Forschungseinheit für Datenbanksysteme
ELKI Development Team
@@ -23,12 +23,11 @@ package de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters;
*/
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
-import de.lmu.ifi.dbs.elki.math.linearalgebra.Vector;
import de.lmu.ifi.dbs.elki.utilities.FormatUtil;
-import de.lmu.ifi.dbs.elki.utilities.datastructures.arraylike.DoubleArray;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.OptionID;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.ParameterException;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.WrongParameterValueException;
@@ -39,8 +38,9 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.ParameterConstra
*
* @author Steffi Wanka
* @author Erich Schubert
+ * @since 0.3
*/
-public class VectorListParameter extends ListParameter<VectorListParameter, List<Vector>> {
+public class DoubleArrayListParameter extends ListParameter<DoubleArrayListParameter, List<double[]>> {
/**
* Constructs a vector list parameter with the given name and description.
*
@@ -48,7 +48,7 @@ public class VectorListParameter extends ListParameter<VectorListParameter, List
* @param constraint Constraint
* @param defaultValue Default value
*/
- public VectorListParameter(OptionID optionID, ParameterConstraint<List<Vector>> constraint, List<Vector> defaultValue) {
+ public DoubleArrayListParameter(OptionID optionID, ParameterConstraint<List<double[]>> constraint, List<double[]> defaultValue) {
super(optionID, defaultValue);
addConstraint(constraint);
}
@@ -60,7 +60,7 @@ public class VectorListParameter extends ListParameter<VectorListParameter, List
* @param constraint Constraint
* @param optional Optional flag
*/
- public VectorListParameter(OptionID optionID, ParameterConstraint<List<Vector>> constraint, boolean optional) {
+ public DoubleArrayListParameter(OptionID optionID, ParameterConstraint<List<double[]>> constraint, boolean optional) {
super(optionID, optional);
addConstraint(constraint);
}
@@ -71,7 +71,7 @@ public class VectorListParameter extends ListParameter<VectorListParameter, List
* @param optionID Option ID
* @param constraint Constraint
*/
- public VectorListParameter(OptionID optionID, ParameterConstraint<List<Vector>> constraint) {
+ public DoubleArrayListParameter(OptionID optionID, ParameterConstraint<List<double[]>> constraint) {
super(optionID);
addConstraint(constraint);
}
@@ -82,11 +82,9 @@ public class VectorListParameter extends ListParameter<VectorListParameter, List
* @param optionID Option ID
* @param defaultValue Default value
*/
- // Indiscernible from optionID, constraints
- /*
- * public VectorListParameter(OptionID optionID, List<Vector> defaultValue) {
- * super(optionID, defaultValue); }
- */
+ public DoubleArrayListParameter(OptionID optionID, List<double[]> defaultValue) {
+ super(optionID, defaultValue);
+ }
/**
* Constructs a vector list parameter with the given name and description.
@@ -94,7 +92,7 @@ public class VectorListParameter extends ListParameter<VectorListParameter, List
* @param optionID Option ID
* @param optional Optional flag
*/
- public VectorListParameter(OptionID optionID, boolean optional) {
+ public DoubleArrayListParameter(OptionID optionID, boolean optional) {
super(optionID, optional);
}
@@ -103,17 +101,17 @@ public class VectorListParameter extends ListParameter<VectorListParameter, List
*
* @param optionID Option ID
*/
- public VectorListParameter(OptionID optionID) {
+ public DoubleArrayListParameter(OptionID optionID) {
super(optionID);
}
@Override
public String getValueAsString() {
StringBuilder buf = new StringBuilder();
- List<Vector> val = getValue();
- Iterator<Vector> valiter = val.iterator();
+ List<double[]> val = getValue();
+ Iterator<double[]> valiter = val.iterator();
while(valiter.hasNext()) {
- buf.append(FormatUtil.format(valiter.next().getArrayRef(), LIST_SEP));
+ buf.append(FormatUtil.format(valiter.next(), LIST_SEP));
// Append separation character
if(valiter.hasNext()) {
buf.append(VECTOR_SEP);
@@ -122,47 +120,47 @@ public class VectorListParameter extends ListParameter<VectorListParameter, List
return buf.toString();
}
- @SuppressWarnings("unchecked")
@Override
- protected List<Vector> parseValue(Object obj) throws ParameterException {
- try {
- List<?> l = List.class.cast(obj);
- // do extra validation:
- for(Object o : l) {
- List<?> v = List.class.cast(o);
- for(Object c : v) {
- if(!(c instanceof Double)) {
- throw new WrongParameterValueException("Wrong parameter format for parameter \"" + getName() + "\". Given list contains objects of different type!");
- }
- }
+ public String getDefaultValueAsString() {
+ StringBuilder buf = new StringBuilder();
+ List<double[]> val = getDefaultValue();
+ Iterator<double[]> valiter = val.iterator();
+ while(valiter.hasNext()) {
+ buf.append(FormatUtil.format(valiter.next(), LIST_SEP));
+ // Append separation character
+ if(valiter.hasNext()) {
+ buf.append(VECTOR_SEP);
}
- // TODO: can we use reflection to get extra checks?
- // TODO: Should we copy the list and vectors?
- return (List<Vector>) l;
- }
- catch(ClassCastException e) {
- // continue with other attempts.
}
+ return buf.toString();
+ }
+
+ @Override
+ protected List<double[]> parseValue(Object obj) throws ParameterException {
if(obj instanceof String) {
String[] vectors = VECTOR_SPLIT.split((String) obj);
if(vectors.length == 0) {
throw new WrongParameterValueException("Wrong parameter format! Given list of vectors for parameter \"" + getName() + "\" is empty!");
}
- ArrayList<Vector> vecs = new ArrayList<>();
+ ArrayList<double[]> vecs = new ArrayList<>();
- DoubleArray vectorCoord = new DoubleArray();
+ double[] buf = new double[11];
+ int used = 0;
for(String vector : vectors) {
- vectorCoord.clear();
+ used = 0;
String[] coordinates = SPLIT.split(vector);
for(String coordinate : coordinates) {
try {
- vectorCoord.add(FormatUtil.parseDouble(coordinate));
+ if(used == buf.length) {
+ buf = Arrays.copyOf(buf, buf.length << 1);
+ }
+ buf[used++] = FormatUtil.parseDouble(coordinate);
}
catch(NumberFormatException e) {
throw new WrongParameterValueException("Wrong parameter format! Coordinates of vector \"" + vector + "\" are not valid!");
}
}
- vecs.add(new Vector(vectorCoord.toArray()));
+ vecs.add(Arrays.copyOf(buf, used));
}
return vecs;
}
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/DoubleListParameter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/DoubleListParameter.java
index 074bb0ed..a9fe5471 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/DoubleListParameter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/DoubleListParameter.java
@@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.WrongParameterValueException
*
* @author Steffi Wanka
* @author Erich Schubert
+ * @since 0.3
*/
public class DoubleListParameter extends ListParameter<DoubleListParameter, double[]> {
/**
@@ -60,6 +61,11 @@ public class DoubleListParameter extends ListParameter<DoubleListParameter, doub
}
@Override
+ public String getDefaultValueAsString() {
+ return FormatUtil.format(getDefaultValue(), LIST_SEP);
+ }
+
+ @Override
protected double[] parseValue(Object obj) throws ParameterException {
if(obj instanceof double[]) {
return double[].class.cast(obj);
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/DoubleParameter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/DoubleParameter.java
index a28f8d38..ef7d4a88 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/DoubleParameter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/DoubleParameter.java
@@ -32,6 +32,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.WrongParameterValueException
*
* @author Steffi Wanka
* @author Erich Schubert
+ * @since 0.2
*/
public class DoubleParameter extends NumberParameter<DoubleParameter, Double> {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/EnumParameter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/EnumParameter.java
index 0cad6e11..d1fafa79 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/EnumParameter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/EnumParameter.java
@@ -60,6 +60,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.WrongParameterValueException
* </p>
*
* @author Florian Nuecke
+ * @since 0.4.0
*
* @param <E> Enum type
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/FileListParameter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/FileListParameter.java
index e5f1b021..cc6d885f 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/FileListParameter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/FileListParameter.java
@@ -37,6 +37,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.WrongParameterValueException
*
* @author Steffi Wanka
* @author Erich Schubert
+ * @since 0.3
*/
public class FileListParameter extends ListParameter<FileListParameter, List<File>> {
/**
@@ -89,6 +90,20 @@ public class FileListParameter extends ListParameter<FileListParameter, List<Fil
return buf.toString();
}
+ @Override
+ public String getDefaultValueAsString() {
+ StringBuilder buf = new StringBuilder();
+ List<File> val = getDefaultValue();
+ Iterator<File> veciter = val.iterator();
+ while(veciter.hasNext()) {
+ buf.append(veciter.next());
+ if (veciter.hasNext()) {
+ buf.append(LIST_SEP);
+ }
+ }
+ return buf.toString();
+ }
+
@SuppressWarnings("unchecked")
@Override
protected List<File> parseValue(Object obj) throws ParameterException {
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/FileParameter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/FileParameter.java
index 0e865f2d..9571a018 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/FileParameter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/FileParameter.java
@@ -36,6 +36,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.WrongParameterValueException
*
* @author Steffi Wanka
* @author Erich Schubert
+ * @since 0.3
*/
// TODO: turn FileType into a Constraint?
public class FileParameter extends AbstractParameter<FileParameter, File> {
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/Flag.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/Flag.java
index 8d83ed2c..d1e29eb7 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/Flag.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/Flag.java
@@ -36,6 +36,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.WrongParameterValueException
*
* @author Steffi Wanka
* @author Erich Schubert
+ * @since 0.3
*/
public class Flag extends AbstractParameter<Flag, Boolean> {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/IntListParameter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/IntListParameter.java
index 756dbb90..59bfb3a5 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/IntListParameter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/IntListParameter.java
@@ -23,7 +23,6 @@ package de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters;
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-import de.lmu.ifi.dbs.elki.utilities.BitsUtil;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.OptionID;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.ParameterException;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.WrongParameterValueException;
@@ -33,6 +32,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.WrongParameterValueException
*
* @author Elke Achtert
* @author Erich Schubert
+ * @since 0.2
*/
public class IntListParameter extends ListParameter<IntListParameter, int[]> {
/**
@@ -70,6 +70,21 @@ public class IntListParameter extends ListParameter<IntListParameter, int[]> {
}
@Override
+ public String getDefaultValueAsString() {
+ int[] val = getDefaultValue();
+ if(val.length == 0) {
+ return "";
+ }
+ StringBuilder buf = new StringBuilder();
+ buf.append(val[0]);
+ for(int i = 1; i < val.length; i++) {
+ buf.append(LIST_SEP);
+ buf.append(val[i]);
+ }
+ return buf.toString();
+ }
+
+ @Override
protected int[] parseValue(Object obj) throws ParameterException {
if(obj instanceof int[]) {
return (int[]) obj;
@@ -95,7 +110,7 @@ public class IntListParameter extends ListParameter<IntListParameter, int[]> {
/**
* Returns a string representation of the parameter's type.
- *
+ *
* @return &quot;&lt;int_1,...,int_n&gt;&quot;
*/
@Override
@@ -105,7 +120,9 @@ public class IntListParameter extends ListParameter<IntListParameter, int[]> {
/**
* Get the values as a bitmask.
- *
+ *
+ * See also: {@link de.lmu.ifi.dbs.elki.utilities.BitsUtil}
+ *
* @return Bitmask
*/
public long[] getValueAsBitSet() {
@@ -114,9 +131,9 @@ public class IntListParameter extends ListParameter<IntListParameter, int[]> {
for(int d : value) {
maxd = (d > maxd) ? d : maxd;
}
- long[] dimensions = BitsUtil.zero(maxd);
+ long[] dimensions = new long[(maxd >>> 6) + 1];
for(int d : value) {
- BitsUtil.setI(dimensions, d);
+ dimensions[d >>> 6] |= 1L << (d & 0x3F);
}
return dimensions;
}
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/IntParameter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/IntParameter.java
index d6adf273..9ed15e95 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/IntParameter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/IntParameter.java
@@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.WrongParameterValueException
*
* @author Steffi Wanka
* @author Erich Schubert
+ * @since 0.3
*/
public class IntParameter extends NumberParameter<IntParameter, Integer> {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/ListParameter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/ListParameter.java
index 097475fb..82c4a46d 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/ListParameter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/ListParameter.java
@@ -32,6 +32,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.OptionID;
*
* @author Steffi Wanka
* @author Erich Schubert
+ * @since 0.2
*
* @param <THIS> Type self-reference
* @param <T> List type
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/LongParameter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/LongParameter.java
index 11aff3cb..f44f759d 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/LongParameter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/LongParameter.java
@@ -32,6 +32,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.WrongParameterValueException
*
* @author Steffi Wanka
* @author Erich Schubert
+ * @since 0.2
*/
public class LongParameter extends NumberParameter<LongParameter, Long> {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/NumberParameter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/NumberParameter.java
index c71db779..bb5c6864 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/NumberParameter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/NumberParameter.java
@@ -30,6 +30,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.OptionID;
*
* @author Steffi Wanka
* @author Erich Schubert
+ * @since 0.2
*
* @param <THIS> type self-reference
* @param <T> the type of a possible value (i.e., the type of the option)
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/ObjectListParameter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/ObjectListParameter.java
index baaa2765..d31c4117 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/ObjectListParameter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/ObjectListParameter.java
@@ -37,6 +37,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameteriz
* Parameter that represents a list of objects (in contrast to a class list parameter, they will be instanced at most once.)
*
* @author Erich Schubert
+ * @since 0.3
*
* @param <C> Class type
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/ObjectParameter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/ObjectParameter.java
index 40d5b49a..aa0e4a17 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/ObjectParameter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/ObjectParameter.java
@@ -36,6 +36,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameteriz
*
* @author Steffi Wanka
* @author Erich Schubert
+ * @since 0.3
* @param <C> Class type
*/
public class ObjectParameter<C> extends ClassParameter<C> {
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/Parameter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/Parameter.java
index 9c2d7ea8..99751076 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/Parameter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/Parameter.java
@@ -1,10 +1,5 @@
package de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters;
-import de.lmu.ifi.dbs.elki.utilities.optionhandling.OptionID;
-import de.lmu.ifi.dbs.elki.utilities.optionhandling.ParameterException;
-import de.lmu.ifi.dbs.elki.utilities.optionhandling.UnspecifiedParameterException;
-import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.ParameterConstraint;
-
/*
This file is part of ELKI:
Environment for Developing KDD-Applications Supported by Index-Structures
@@ -28,6 +23,11 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.ParameterConstra
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+import de.lmu.ifi.dbs.elki.utilities.optionhandling.OptionID;
+import de.lmu.ifi.dbs.elki.utilities.optionhandling.ParameterException;
+import de.lmu.ifi.dbs.elki.utilities.optionhandling.UnspecifiedParameterException;
+import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.ParameterConstraint;
+
/**
* Interface for the parameter of a class.
*
@@ -38,6 +38,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.ParameterConstra
*
* @author Steffi Wanka
* @author Erich Schubert
+ * @since 0.3
*
* @apiviz.composedOf OptionID
* @apiviz.uses ParameterConstraint
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/PatternParameter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/PatternParameter.java
index 3c010db6..f2160d53 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/PatternParameter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/PatternParameter.java
@@ -36,6 +36,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.WrongParameterValueException
*
* @author Steffi Wanka
* @author Erich Schubert
+ * @since 0.3
*/
public class PatternParameter extends AbstractParameter<PatternParameter, Pattern> {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/RandomParameter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/RandomParameter.java
index 0d5f3741..5e7d6c66 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/RandomParameter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/RandomParameter.java
@@ -32,6 +32,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.WrongParameterValueException
* Parameter for random generators and/or random seeds.
*
* @author Erich Schubert
+ * @since 0.5.5
*/
public class RandomParameter extends AbstractParameter<RandomParameter, RandomFactory> {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/StringParameter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/StringParameter.java
index 0f06beef..7882c9ee 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/StringParameter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameters/StringParameter.java
@@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.WrongParameterValueException
*
* @author Steffi Wanka
* @author Erich Schubert
+ * @since 0.3
*/
public class StringParameter extends AbstractParameter<StringParameter, String> {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/pairs/DoubleDoublePair.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/pairs/DoubleDoublePair.java
index af10137b..bdfd2b1c 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/pairs/DoubleDoublePair.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/pairs/DoubleDoublePair.java
@@ -29,6 +29,7 @@ import java.util.Comparator;
* Pair storing two doubles.
*
* @author Erich Schubert
+ * @since 0.2
*
* @apiviz.has Comparator
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/pairs/DoubleIntPair.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/pairs/DoubleIntPair.java
index 08d0fadd..8f8481b0 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/pairs/DoubleIntPair.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/pairs/DoubleIntPair.java
@@ -29,6 +29,7 @@ import java.util.Comparator;
* Pair storing an integer and a double.
*
* @author Erich Schubert
+ * @since 0.2
*
* @apiviz.has Comparator
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/pairs/DoubleObjPair.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/pairs/DoubleObjPair.java
index 5fdd005e..ccbc38d0 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/pairs/DoubleObjPair.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/pairs/DoubleObjPair.java
@@ -28,6 +28,7 @@ package de.lmu.ifi.dbs.elki.utilities.pairs;
* Pair storing a native double value and an arbitrary object.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @param <O> Object type
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/pairs/IntDoublePair.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/pairs/IntDoublePair.java
index 2b8fd6cf..61993a15 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/pairs/IntDoublePair.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/pairs/IntDoublePair.java
@@ -29,6 +29,7 @@ import java.util.Comparator;
* Pair storing an integer and a double.
*
* @author Erich Schubert
+ * @since 0.2
*
* @apiviz.has Comparator
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/pairs/IntIntPair.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/pairs/IntIntPair.java
index e7fd6db8..10a458d0 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/pairs/IntIntPair.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/pairs/IntIntPair.java
@@ -29,6 +29,7 @@ import java.util.Comparator;
* Pair storing two integers.
*
* @author Erich Schubert
+ * @since 0.2
*
* @apiviz.has Comparator
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/pairs/Pair.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/pairs/Pair.java
index 28f7fdaa..40b049f2 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/pairs/Pair.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/pairs/Pair.java
@@ -36,6 +36,7 @@ import de.lmu.ifi.dbs.elki.utilities.ClassGenericsUtil;
* meaningful field names and comparators.
*
* @author Erich Schubert
+ * @since 0.2
*
* @param <FIRST> first type
* @param <SECOND> second type
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/referencepoints/AxisBasedReferencePoints.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/referencepoints/AxisBasedReferencePoints.java
index 026cf048..337197a3 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/referencepoints/AxisBasedReferencePoints.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/referencepoints/AxisBasedReferencePoints.java
@@ -43,6 +43,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleParameter;
* surrounding cube.
*
* @author Erich Schubert
+ * @since 0.3
*/
public class AxisBasedReferencePoints implements ReferencePointsHeuristic {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/referencepoints/FullDatabaseReferencePoints.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/referencepoints/FullDatabaseReferencePoints.java
index aed7845f..9e4b9c8f 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/referencepoints/FullDatabaseReferencePoints.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/referencepoints/FullDatabaseReferencePoints.java
@@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.database.relation.RelationUtil;
* Strategy to use the complete database as reference points.
*
* @author Erich Schubert
+ * @since 0.3
*/
public class FullDatabaseReferencePoints implements ReferencePointsHeuristic {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/referencepoints/GridBasedReferencePoints.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/referencepoints/GridBasedReferencePoints.java
index 1d614bff..45e3c66b 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/referencepoints/GridBasedReferencePoints.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/referencepoints/GridBasedReferencePoints.java
@@ -44,6 +44,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.IntParameter;
* Grid-based strategy to pick reference points.
*
* @author Erich Schubert
+ * @since 0.3
*/
public class GridBasedReferencePoints implements ReferencePointsHeuristic {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/referencepoints/RandomGeneratedReferencePoints.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/referencepoints/RandomGeneratedReferencePoints.java
index 9de4e5e8..9b287443 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/referencepoints/RandomGeneratedReferencePoints.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/referencepoints/RandomGeneratedReferencePoints.java
@@ -25,6 +25,7 @@ package de.lmu.ifi.dbs.elki.utilities.referencepoints;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Random;
import de.lmu.ifi.dbs.elki.data.NumberVector;
import de.lmu.ifi.dbs.elki.database.relation.Relation;
@@ -41,8 +42,9 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.RandomParameter;
/**
* Reference points generated randomly within the used data space.
- *
+ *
* @author Erich Schubert
+ * @since 0.3
*/
public class RandomGeneratedReferencePoints implements ReferencePointsHeuristic {
/**
@@ -62,7 +64,7 @@ public class RandomGeneratedReferencePoints implements ReferencePointsHeuristic
/**
* Constructor.
- *
+ *
* @param samplesize Size of desired sample set
* @param scale Scaling factor
* @param rnd Random generator
@@ -86,14 +88,14 @@ public class RandomGeneratedReferencePoints implements ReferencePointsHeuristic
mean[d] -= delta[d] * .5;
}
+ Random rand = rnd.getSingleThreadedRandom();
ArrayList<Vector> result = new ArrayList<>(samplesize);
double[] vec = new double[dim];
for(int i = 0; i < samplesize; i++) {
for(int d = 0; d < dim; d++) {
- vec[d] = mean[d] + (Math.random() - 0.5) * scale * delta[d];
+ vec[d] = mean[d] + (rand.nextDouble() - 0.5) * scale * delta[d];
}
Vector newp = new Vector(vec);
- // logger.debug("New reference point: " + FormatUtil.format(vec));
result.add(newp);
}
@@ -102,9 +104,9 @@ public class RandomGeneratedReferencePoints implements ReferencePointsHeuristic
/**
* Parameterization class.
- *
+ *
* @author Erich Schubert
- *
+ *
* @apiviz.exclude
*/
public static class Parameterizer extends AbstractParameterizer {
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/referencepoints/RandomSampleReferencePoints.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/referencepoints/RandomSampleReferencePoints.java
index a8b17234..14d91a55 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/referencepoints/RandomSampleReferencePoints.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/referencepoints/RandomSampleReferencePoints.java
@@ -45,6 +45,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.RandomParameter;
* Random-Sampling strategy for picking reference points.
*
* @author Erich Schubert
+ * @since 0.3
*/
public class RandomSampleReferencePoints implements ReferencePointsHeuristic {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/referencepoints/ReferencePointsHeuristic.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/referencepoints/ReferencePointsHeuristic.java
index 2b417d84..00cef7dc 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/referencepoints/ReferencePointsHeuristic.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/referencepoints/ReferencePointsHeuristic.java
@@ -32,6 +32,7 @@ import de.lmu.ifi.dbs.elki.database.relation.Relation;
* Simple Interface for an heuristic to pick reference points.
*
* @author Erich Schubert
+ * @since 0.3
*/
public interface ReferencePointsHeuristic {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/referencepoints/StarBasedReferencePoints.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/referencepoints/StarBasedReferencePoints.java
index f1e1c1fb..2b35108b 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/referencepoints/StarBasedReferencePoints.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/referencepoints/StarBasedReferencePoints.java
@@ -42,6 +42,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.Flag;
* Star-based strategy to pick reference points.
*
* @author Erich Schubert
+ * @since 0.3
*/
public class StarBasedReferencePoints implements ReferencePointsHeuristic {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/ClipScaling.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/ClipScaling.java
index 3917c550..74558293 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/ClipScaling.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/ClipScaling.java
@@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleParameter;
* maximum.
*
* @author Erich Schubert
+ * @since 0.3
*/
public class ClipScaling implements StaticScalingFunction {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/GammaScaling.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/GammaScaling.java
index 36fc8eed..7efc5318 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/GammaScaling.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/GammaScaling.java
@@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleParameter;
*
* @author Erich Schubert
* @author Remigius Wojdanowski
+ * @since 0.3
*/
public class GammaScaling implements StaticScalingFunction {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/IdentityScaling.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/IdentityScaling.java
index c66a2c7d..46832321 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/IdentityScaling.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/IdentityScaling.java
@@ -28,6 +28,7 @@ package de.lmu.ifi.dbs.elki.utilities.scaling;
* The trivial "identity" scaling function.
*
* @author Erich Schubert
+ * @since 0.3
*/
public class IdentityScaling implements StaticScalingFunction {
@Override
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/LinearScaling.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/LinearScaling.java
index de0b5c02..4a65a49a 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/LinearScaling.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/LinearScaling.java
@@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.math.DoubleMinMax;
* Simple linear scaling function.
*
* @author Erich Schubert
+ * @since 0.3
*/
public class LinearScaling implements StaticScalingFunction {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/MinusLogScaling.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/MinusLogScaling.java
index 2c79d8bf..0c8262b0 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/MinusLogScaling.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/MinusLogScaling.java
@@ -28,6 +28,7 @@ package de.lmu.ifi.dbs.elki.utilities.scaling;
* Scaling function to invert values by computing -1 * Math.log(x)
*
* @author Erich Schubert
+ * @since 0.3
*/
public class MinusLogScaling implements StaticScalingFunction {
@Override
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/ScalingFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/ScalingFunction.java
index fce71ffc..9928dcc1 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/ScalingFunction.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/ScalingFunction.java
@@ -36,6 +36,7 @@ package de.lmu.ifi.dbs.elki.utilities.scaling;
* {@code prepare} statement.
*
* @author Erich Schubert
+ * @since 0.3
*/
public interface ScalingFunction {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/StaticScalingFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/StaticScalingFunction.java
index 72f8c6a7..34c44b88 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/StaticScalingFunction.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/StaticScalingFunction.java
@@ -29,6 +29,7 @@ package de.lmu.ifi.dbs.elki.utilities.scaling;
* But will always map x to the same f(x) (given the same parameters).
*
* @author Erich Schubert
+ * @since 0.3
*
*/
public interface StaticScalingFunction extends ScalingFunction {
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/COPOutlierScaling.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/COPOutlierScaling.java
index 122e93b2..ea4dc752 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/COPOutlierScaling.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/COPOutlierScaling.java
@@ -58,6 +58,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleParameter;
* </p>
*
* @author Erich Schubert
+ * @since 0.6.0
*/
@Reference(authors = "H.-P. Kriegel, P. Kröger, E. Schubert, A. Zimek", title = "Interpreting and Unifying Outlier Scores", booktitle = "Proc. 11th SIAM International Conference on Data Mining (SDM), Mesa, AZ, 2011", url = "http://siam.omnibooksonline.com/2011datamining/data/papers/018.pdf")
public class COPOutlierScaling implements OutlierScalingFunction {
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/HeDESNormalizationOutlierScaling.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/HeDESNormalizationOutlierScaling.java
index 2e778500..be9012a8 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/HeDESNormalizationOutlierScaling.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/HeDESNormalizationOutlierScaling.java
@@ -35,6 +35,7 @@ import de.lmu.ifi.dbs.elki.utilities.documentation.Reference;
* Normalization used by HeDES
*
* @author Erich Schubert
+ * @since 0.4.0
*/
@Reference(authors = "H. V. Nguyen, H. H. Ang, V. Gopalkrishnan", title = "Mining Outliers with Ensemble of Heterogeneous Detectors on Random Subspaces", booktitle = "Proc. 15th International Conference on Database Systems for Advanced Applications (DASFAA 2010)", url = "http://dx.doi.org/10.1007/978-3-642-12026-8_29")
public class HeDESNormalizationOutlierScaling implements OutlierScalingFunction {
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/LogRankingPseudoOutlierScaling.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/LogRankingPseudoOutlierScaling.java
index a2533119..ab63eabd 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/LogRankingPseudoOutlierScaling.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/LogRankingPseudoOutlierScaling.java
@@ -39,6 +39,7 @@ import de.lmu.ifi.dbs.elki.utilities.exceptions.AbortException;
* a normal distribution.
*
* @author Erich Schubert
+ * @since 0.4.0
*/
public class LogRankingPseudoOutlierScaling implements OutlierScalingFunction {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/MinusLogGammaScaling.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/MinusLogGammaScaling.java
index 00c2a9f0..002ff917 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/MinusLogGammaScaling.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/MinusLogGammaScaling.java
@@ -44,6 +44,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer;
* </p>
*
* @author Erich Schubert
+ * @since 0.3
*/
@Reference(authors = "H.-P. Kriegel, P. Kröger, E. Schubert, A. Zimek", //
title = "Interpreting and Unifying Outlier Scores", //
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/MinusLogStandardDeviationScaling.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/MinusLogStandardDeviationScaling.java
index 2c01b2a1..b6645231 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/MinusLogStandardDeviationScaling.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/MinusLogStandardDeviationScaling.java
@@ -49,6 +49,7 @@ import de.lmu.ifi.dbs.elki.utilities.documentation.Reference;
* </p>
*
* @author Erich Schubert
+ * @since 0.3
*/
@Reference(authors = "H.-P. Kriegel, P. Kröger, E. Schubert, A. Zimek", //
title = "Interpreting and Unifying Outlier Scores", //
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/MixtureModelOutlierScalingFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/MixtureModelOutlierScalingFunction.java
index 0271f3f3..dd915b7a 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/MixtureModelOutlierScalingFunction.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/MixtureModelOutlierScalingFunction.java
@@ -49,6 +49,7 @@ import de.lmu.ifi.dbs.elki.utilities.documentation.Reference;
* </p>
*
* @author Erich Schubert
+ * @since 0.4.0
*/
@Reference(authors = "J. Gao, P.-N. Tan", //
title = "Converting Output Scores from Outlier Detection Algorithms into Probability Estimates", //
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/MultiplicativeInverseScaling.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/MultiplicativeInverseScaling.java
index adaf0659..c566d373 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/MultiplicativeInverseScaling.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/MultiplicativeInverseScaling.java
@@ -47,6 +47,7 @@ import de.lmu.ifi.dbs.elki.utilities.documentation.Reference;
* </p>
*
* @author Erich Schubert
+ * @since 0.3
*/
@Reference(authors = "H.-P. Kriegel, P. Kröger, E. Schubert, A. Zimek", //
title = "Interpreting and Unifying Outlier Scores", //
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/OutlierGammaScaling.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/OutlierGammaScaling.java
index 0ac8f6fe..732a54f3 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/OutlierGammaScaling.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/OutlierGammaScaling.java
@@ -48,6 +48,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.Flag;
* </p>
*
* @author Erich Schubert
+ * @since 0.3
*/
@Reference(authors = "H.-P. Kriegel, P. Kröger, E. Schubert, A. Zimek", //
title = "Interpreting and Unifying Outlier Scores", //
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/OutlierLinearScaling.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/OutlierLinearScaling.java
index d7feb2b4..34480521 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/OutlierLinearScaling.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/OutlierLinearScaling.java
@@ -47,6 +47,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.Parameter;
* maximum values.
*
* @author Erich Schubert
+ * @since 0.3
*/
public class OutlierLinearScaling implements OutlierScalingFunction {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/OutlierMinusLogScaling.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/OutlierMinusLogScaling.java
index 4ccbe77d..c3f7697e 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/OutlierMinusLogScaling.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/OutlierMinusLogScaling.java
@@ -46,6 +46,7 @@ import de.lmu.ifi.dbs.elki.utilities.documentation.Reference;
* </p>
*
* @author Erich Schubert
+ * @since 0.3
*/
@Reference(authors = "H.-P. Kriegel, P. Kröger, E. Schubert, A. Zimek", //
title = "Interpreting and Unifying Outlier Scores", //
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/OutlierScalingFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/OutlierScalingFunction.java
index 6e05d7c6..e6ae2491 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/OutlierScalingFunction.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/OutlierScalingFunction.java
@@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.utilities.scaling.ScalingFunction;
* scaling function.
*
* @author Erich Schubert
+ * @since 0.3
*/
public interface OutlierScalingFunction extends ScalingFunction {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/OutlierSqrtScaling.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/OutlierSqrtScaling.java
index 8da3bd35..4339e2aa 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/OutlierSqrtScaling.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/OutlierSqrtScaling.java
@@ -41,6 +41,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleParameter;
* mapping onto 0:1 using the minimum values seen.
*
* @author Erich Schubert
+ * @since 0.3
*/
public class OutlierSqrtScaling implements OutlierScalingFunction {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/RankingPseudoOutlierScaling.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/RankingPseudoOutlierScaling.java
index 75a532f7..0b12b0c7 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/RankingPseudoOutlierScaling.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/RankingPseudoOutlierScaling.java
@@ -39,6 +39,7 @@ import de.lmu.ifi.dbs.elki.utilities.exceptions.AbortException;
* a normal distribution.
*
* @author Erich Schubert
+ * @since 0.4.0
*/
public class RankingPseudoOutlierScaling implements OutlierScalingFunction {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/SigmoidOutlierScalingFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/SigmoidOutlierScalingFunction.java
index 748fddd4..6855d879 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/SigmoidOutlierScalingFunction.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/SigmoidOutlierScalingFunction.java
@@ -48,6 +48,7 @@ import de.lmu.ifi.dbs.elki.utilities.documentation.Reference;
* </p>
*
* @author Erich Schubert
+ * @since 0.4.0
*/
@Reference(authors = "J. Gao, P.-N. Tan", //
title = "Converting Output Scores from Outlier Detection Algorithms into Probability Estimates", //
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/SqrtStandardDeviationScaling.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/SqrtStandardDeviationScaling.java
index 1387d69f..0fe9e86a 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/SqrtStandardDeviationScaling.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/SqrtStandardDeviationScaling.java
@@ -57,6 +57,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleParameter;
* </p>
*
* @author Erich Schubert
+ * @since 0.3
*/
@Reference(authors = "H.-P. Kriegel, P. Kröger, E. Schubert, A. Zimek", //
title = "Interpreting and Unifying Outlier Scores", //
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/StandardDeviationScaling.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/StandardDeviationScaling.java
index b6ef5e3a..524c93f6 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/StandardDeviationScaling.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/StandardDeviationScaling.java
@@ -54,6 +54,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleParameter;
* </p>
*
* @author Erich Schubert
+ * @since 0.3
*/
@Reference(authors = "H.-P. Kriegel, P. Kröger, E. Schubert, A. Zimek", //
title = "Interpreting and Unifying Outlier Scores", //
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/TopKOutlierScaling.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/TopKOutlierScaling.java
index 7ac19a1b..1f867e4a 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/TopKOutlierScaling.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/TopKOutlierScaling.java
@@ -40,6 +40,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.IntParameter;
* Outlier scaling function that only keeps the top k outliers.
*
* @author Erich Schubert
+ * @since 0.3
*/
public class TopKOutlierScaling implements OutlierScalingFunction {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/xml/DOMCloner.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/xml/DOMCloner.java
index 85f81561..6fecd67c 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/xml/DOMCloner.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/xml/DOMCloner.java
@@ -33,6 +33,7 @@ import org.w3c.dom.Node;
* Class for cloning XML document, with filter capabilites
*
* @author Erich Schubert
+ * @since 0.5.0
*/
public class DOMCloner {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/xml/HTMLUtil.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/xml/HTMLUtil.java
index 4522df6f..376f00cb 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/xml/HTMLUtil.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/xml/HTMLUtil.java
@@ -40,6 +40,7 @@ import org.w3c.dom.Element;
* Class with HTML related utility functions, in particular HTML generation.
*
* @author Erich Schubert
+ * @since 0.2
*/
public final class HTMLUtil {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/xml/XMLNodeIterator.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/xml/XMLNodeIterator.java
index 10b14c8b..af272678 100755
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/xml/XMLNodeIterator.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/xml/XMLNodeIterator.java
@@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.utilities.exceptions.ExceptionMessages;
* Simple adapter class to iterate over a DOM tree nodes children.
*
* @author Erich Schubert
+ * @since 0.2
*/
public final class XMLNodeIterator implements Iterator<Node> {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/xml/XMLNodeListIterator.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/xml/XMLNodeListIterator.java
index 7566ccb4..f1ada456 100755
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/xml/XMLNodeListIterator.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/utilities/xml/XMLNodeListIterator.java
@@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.utilities.exceptions.ExceptionMessages;
* Simple adapter class to iterate over a DOM tree nodes children.
*
* @author Erich Schubert
+ * @since 0.2
*/
public final class XMLNodeListIterator implements Iterator<Node> {
/**