adjust = (values) => {
const blurred = blur(values);
const adjustments = values.map((d, i) => (blurred[i] - d) / 4);
let totalAdjustments = new Array(numTracts).fill(0);
ids.forEach((d, i) => {
totalAdjustments[d] += adjustments[i];
});
let decrementedAdjustment = adjustments.map((d, i) => {
const tractId = ids[i];
const numCells = numCellsByTract[tractId];
const decrementingFactor = totalAdjustments[tractId] / numCells;
return d - decrementingFactor;
});
const adjustedOnce = values
.map((d, i) => d + decrementedAdjustment[i])
.map((d) => (d < 0 ? 0 : d));
let newPops = new Array(numTracts).fill(0);
ids.forEach((tractIndex, i) => {
newPops[tractIndex] += adjustedOnce[i];
});
const adjustment2 = ids.map((tractIndex, i) => {
return (
(populationByTract[tractIndex] - newPops[tractIndex]) /
numCellsByTract[tractIndex]
);
});
const adjustedTwice = adjustedOnce.map((d, i) => d + adjustment2[i]);
return adjustedTwice;
}