-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathumap-worker.js
42 lines (32 loc) · 922 Bytes
/
umap-worker.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/* eslint-env worker */
/* eslint no-restricted-globals: 1 */
const worker = function worker() {
let umap;
const error = message => ({ error: new Error(message) });
const create = (umapUrl, config) => {
importScripts(umapUrl);
umap = new self.UMAP(config);
};
const fit = (data, labels) => {
if (labels) umap.setSupervisedProjection(labels);
return umap.fit(data);
};
const transform = data => umap.transform(data);
self.onmessage = function onmessage(e) {
switch (e.data.task) {
case 'create':
create(e.data.umapUrl, e.data.config);
break;
case 'fit':
self.postMessage(fit(e.data.data, e.data.labels));
break;
case 'transform':
self.postMessage(transform(e.data.data));
break;
default:
self.postMessage(error('Unknown or no task specified'));
break;
}
};
};
export default worker;