in Java/core/src/main/java/com/amazon/randomcutforest/sampler/CompactSampler.java [105:140]
protected CompactSampler(Builder<?> builder) {
super(builder);
checkArgument(builder.initialAcceptFraction > 0, " the admittance fraction cannot be <= 0");
checkArgument(builder.capacity > 0, " sampler capacity cannot be <=0 ");
this.storeSequenceIndexesEnabled = builder.storeSequenceIndexesEnabled;
this.timeDecay = builder.timeDecay;
this.maxSequenceIndex = builder.maxSequenceIndex;
this.mostRecentTimeDecayUpdate = builder.sequenceIndexOfMostRecentTimeDecayUpdate;
if (builder.weight != null || builder.pointIndex != null || builder.sequenceIndex != null
|| builder.validateHeap) {
checkArgument(builder.weight != null && builder.weight.length == builder.capacity, " incorrect state");
checkArgument(builder.pointIndex != null && builder.pointIndex.length == builder.capacity,
" incorrect state");
checkArgument(
!builder.storeSequenceIndexesEnabled
|| builder.sequenceIndex != null && builder.sequenceIndex.length == builder.capacity,
" incorrect state");
this.weight = builder.weight;
this.pointIndex = builder.pointIndex;
this.sequenceIndex = builder.sequenceIndex;
size = builder.size;
reheap(builder.validateHeap);
} else {
checkArgument(builder.size == 0, "incorrect state");
size = 0;
weight = new float[builder.capacity];
pointIndex = new int[builder.capacity];
if (storeSequenceIndexesEnabled) {
this.sequenceIndex = new long[builder.capacity];
} else {
this.sequenceIndex = null;
}
}
}