private void CountComparisonWinnerOrAddBucketToLosers(Set<Bucket.Label> losers, Map<Bucket.Label, Integer> bucketWins, Bucket.Label bucketName, ComparisonStatistics jointComparison) { if (jointComparison.getClearComparisonWinner().equals(bucketName)) { Integer currentWins = bucketWins.get(bucketName); if (currentWins == null) { bucketWins.put(bucketName, 1); } else { bucketWins.put(bucketName, currentWins + 1); } } else { //or, if a bucket is worse, add it to the set of losers losers.add(bucketName); } } }
/** * Get the bucket based on experiment id and bucket label * If metadata cache is enabled then fetch from cache else fetch from database. * * @param experimentID * @param bucketLabel * @return */ protected Optional<Bucket> getBucketByLabel(Experiment.ID experimentID, Bucket.Label bucketLabel) { Optional<Bucket> rBucket = Optional.empty(); BucketList bucketList = null; if (metadataCacheEnabled) { bucketList = metadataCache.getBucketList(experimentID); } else { bucketList = repository.getBucketList(experimentID); } if (isNull(bucketList)) return rBucket; for (Bucket bucket : bucketList.getBuckets()) { if (bucket.getLabel().equals(bucketLabel)) { return Optional.of(bucket); } } return rBucket; }
Bucket.Label otherBucketName = comparison.getOtherLabel(); if (winnerName == null || winnerName.equals(otherBucketName)) { winnersToAdd.add(otherBucketName); Bucket.Label otherBucketName = comparison.getOtherLabel(); if (winnerName == null || winnerName.equals(otherBucketName)) { winnersToAdd.add(otherBucketName);
Bucket lastBucket = null; for (Bucket buck : bucketList.getBuckets()) { if (!buck.getLabel().equals(bucket.getLabel()) && buck.getState() == Bucket.State.OPEN) { nOpen++; if (buck.getLabel().equals(bucket.getLabel())) { newPct = 0.; newState = desiredState; if (buck.getLabel().equals(bucket.getLabel())) { return buck;
Boolean bucketFound = false; for (Bucket bucket : buckets.getBuckets()) { if (bucket.getLabel().equals(desiredBucketLabel) && !bucket.getState().equals(Bucket.State.EMPTY)) { bucketFound = true; break;
if (b.getLabel().equals(bucket.getLabel())) { oldBucket = b;
if (b.getLabel().equals(bucketAssignmentCount.getBucket())) { b.setCount(bucketAssignmentCount.getCount()); break;
final BucketAssignmentCount.Builder builder = new BucketAssignmentCount.Builder() .withCount(bucketAssignmentCount.getCount()); if (NULL_LABEL.equals(label)) { totalNullAssignments += bucketAssignmentCount.getCount(); bucketAssignmentCountList.add(builder.withBucket(null).build());
/** * {@inheritDoc} */ @Override public BucketList adjustAllocationPercentages(Experiment experiment, Bucket newBucket) { double remainingAlloc = 1. - newBucket.getAllocationPercent(); BucketList bucketList = buckets.getBuckets(experiment.getID(), false /* don't check experiment again */); BucketList newBuckets = new BucketList(); for (Bucket bucket : bucketList.getBuckets()) { if (bucket.getLabel().equals(newBucket.getLabel())) { continue; } double newAlloc = roundToTwo(remainingAlloc * bucket.getAllocationPercent()); LOGGER.debug("Add Bucket: setting allocation percentage for bucket " + bucket.getLabel() + " in experiment " + experiment.getID() + " to: " + newAlloc); Bucket.Builder builder = Bucket.from(bucket).withAllocationPercent(newAlloc); Bucket updatedBucket = builder.build(); newBuckets.addBucket(updatedBucket); if (!Experiment.State.DRAFT.equals(experiment.getState()) && Double.compare(bucket.getAllocationPercent(), updatedBucket.getAllocationPercent()) != 0) { // this is a system event, so no user needed eventLog.postEvent(new BucketChangeEvent(experiment, updatedBucket, "allocation", String.valueOf(bucket.getAllocationPercent()), String.valueOf(updatedBucket.getAllocationPercent()))); } } return newBuckets; }
/** * {@inheritDoc} */ @Override public BucketList combineOldAndNewBuckets(BucketList oldBuckets, BucketList newBuckets) { BucketList allBuckets = new BucketList(); for (Bucket b : oldBuckets.getBuckets()) { Boolean changed = false; for (Bucket bb : newBuckets.getBuckets()) { if (bb.getLabel().equals(b.getLabel())) { allBuckets.addBucket(bb); changed = true; break; } } if (!changed) { allBuckets.addBucket(b); } } return allBuckets; } }
/** * {@inheritDoc} */ @Override public void validateBucketChanges(Bucket bucket, Bucket updates) { if (updates.getExperimentID() != null && !updates.getExperimentID().equals(bucket.getExperimentID())) { throw new IllegalArgumentException("Invalid value for experimentID \"" + updates.getExperimentID() + " \"." + " Cannot update ExperimentID"); } if (updates.getLabel() != null && !updates.getLabel().equals(bucket.getLabel())) { throw new IllegalArgumentException("Invalid value for bucket label \"" + updates.getLabel() + " \". " + "Cannot update bucket label"); } if (updates.getState() != null && !updates.getState().equals(bucket.getState())) { throw new IllegalArgumentException("Cannot update the state of a bucket using this api"); } }