fit = function* fit({ dataAsMatrix, show_dynamic, options }) {
yield {
status: "Initializing",
currentEpoch: 0,
targetEpoch: 0,
embedding: dataAsMatrix.map(_ => [Math.random(), Math.random()])
};
const umap = new UMAP(options),
nEpochs = umap.initializeFit(dataAsMatrix);
yield {
status: "Starting",
currentEpoch: 0,
targetEpoch: nEpochs,
embedding: umap.getEmbedding()
};
for (let i = 0; i < nEpochs; i++) {
umap.step();
if (show_dynamic && i%5 ===0) {
yield {
status: "Running",
currentEpoch: i,
targetEpoch: nEpochs,
embedding: umap.getEmbedding()
};
}
}
yield {
status: "Finished",
currentEpoch: nEpochs,
targetEpoch: nEpochs,
embedding: umap.getEmbedding()
};
}