diffuse = {
const data = curve.filter((d) => d.type === "Curve"),
{ steps, beta } = diffusionSetup,
alpha = 1 - beta,
alphas = [];
for (let step = 0; step < steps; ++step) {
alphas.push(Math.pow(alpha, step));
}
const rnd = d3.randomNormal(),
dst = data.map(() => rnd());
const dataDiffusion = [];
var alpha1, alpha2;
data.map((data, i) => {
for (let step = 0; step < steps; ++step) {
alpha1 = Math.sqrt(alphas[step]);
alpha2 = Math.sqrt(1 - alphas[step]);
dataDiffusion.push({
t: data.t,
step,
value: alpha1 * data.value + alpha2 * dst[i]
});
}
});
return { data, dst, dataDiffusion };
}