-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.cjs.js
118 lines (117 loc) · 2.49 KB
/
index.cjs.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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
const { InlineThread } = require("./dist/index.cjs");
const { ThreadPool } = require("./dist/index.cjs");
const sleep = (ms = 500) => new Promise((res) => setTimeout(res, ms));
const pool = new ThreadPool({
task: (data) => {
const FASTA = (num) => {
var last = 42,
A = 3877,
C = 29573,
M = 139968;
function rand(max) {
last = (last * A + C) % M;
return (max * last) / M;
}
var ALU =
"GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGG" +
"GAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGA" +
"CCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAAT" +
"ACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCA" +
"GCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGG" +
"AGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCC" +
"AGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAA";
var IUB = {
a: 0.27,
c: 0.12,
g: 0.12,
t: 0.27,
B: 0.02,
D: 0.02,
H: 0.02,
K: 0.02,
M: 0.02,
N: 0.02,
R: 0.02,
S: 0.02,
V: 0.02,
W: 0.02,
Y: 0.02,
};
var HomoSap = {
a: 0.302954942668,
c: 0.1979883004921,
g: 0.1975473066391,
t: 0.3015094502008,
};
function makeCumulative(table) {
var last = null;
for (var c in table) {
if (last) table[c] += table[last];
last = c;
}
}
function fastaRepeat(n, seq) {
var seqi = 0,
lenOut = 60;
let out = "";
while (n > 0) {
if (n < lenOut) lenOut = n;
if (seqi + lenOut < seq.length) {
out += seq.substring(seqi, seqi + lenOut);
seqi += lenOut;
} else {
var s = seq.substring(seqi);
seqi = lenOut - s.length;
out += s + seq.substring(0, seqi);
}
n -= lenOut;
}
return out;
}
function fastaRandom(n, table) {
var line = new Array(60);
makeCumulative(table);
let out = "";
while (n > 0) {
if (n < line.length) line = new Array(n);
for (var i = 0; i < line.length; i++) {
var r = rand(1);
for (var c in table) {
if (r < table[c]) {
line[i] = c;
break;
}
}
}
out = line.join("");
n -= line.length;
}
return out;
}
return Promise.resolve([fastaRepeat(num * 2, ALU), fastaRandom(3 * num, IUB), fastaRandom(3 * num, HomoSap)]);
};
return FASTA(data);
},
count: 8,
});
new InlineThread(
(name) => {
return "Hello " + name;
},
{ once: true },
).send();
async function rn() {
let runs = 10000;
const tasks = [];
for (let idx = 0; idx < runs; idx++) {
console.log("running thread", idx);
const test = pool.exec(idx);
tasks.push(test);
}
console.log("running thread");
const results = await Promise.all(tasks);
console.log({ results });
console.log("running thread EEE");
pool.terminate();
}
rn();