@ejfdelgado/ejflab-common 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +2 -0
- package/package.json +29 -0
- package/src/CollisionsEngine.js +252 -0
- package/src/CsvFormatter.js +54 -0
- package/src/CsvFormatter.test.js +119 -0
- package/src/CsvFormatterFilters.js +79 -0
- package/src/CsvParser.js +51 -0
- package/src/CsvParser.test.js +41 -0
- package/src/CsvWithFilters.js +114 -0
- package/src/FaceEncoder.js +64 -0
- package/src/FlowChartDiagram.js +503 -0
- package/src/IdGen.js +211 -0
- package/src/ModuloDatoSeguro.js +142 -0
- package/src/ModuloDatoSeguro.test.js +29 -0
- package/src/ModuloDatoSeguro.test.mjs +45 -0
- package/src/ModuloDatoSeguroBack.mjs +55 -0
- package/src/ModuloDatoSeguroFront.js +73 -0
- package/src/ModuloSonido.js +83 -0
- package/src/ModuloVideos.js +51 -0
- package/src/MyColor.js +136 -0
- package/src/MyColor.test.js +37 -0
- package/src/MyConstants.js +147 -0
- package/src/MyCookies.js +34 -0
- package/src/MyDates.js +412 -0
- package/src/MyDates.test.js +26 -0
- package/src/MyDatesBack.mjs +21 -0
- package/src/MyDatesFront.js +41 -0
- package/src/MyJsPdf.js +52 -0
- package/src/MyRoutes.js +29 -0
- package/src/MyTemplate.js +272 -0
- package/src/MyTemplate.test.js +90 -0
- package/src/MyTensorflow.js +248 -0
- package/src/MyTensorflow.test.js +19 -0
- package/src/MyTensorflowBack.mjs +33 -0
- package/src/MyThrottle.js +80 -0
- package/src/MyTuples.js +445 -0
- package/src/MyTuples.test.js +330 -0
- package/src/MyUtilities.js +137 -0
- package/src/SimpleObj.js +153 -0
- package/src/SimpleObj.test.js +58 -0
- package/src/TriangulacionGeometric.js +335 -0
- package/src/changePath.js +38 -0
- package/src/data/case0.csv +3 -0
- package/src/data/case0.json +24 -0
- package/src/data/case1.csv +2 -0
- package/src/data/case1.json +24 -0
- package/src/data/case2.csv +3 -0
- package/src/data/case2.json +24 -0
- package/src/data/case3.csv +3 -0
- package/src/data/case3.json +24 -0
- package/src/data/format0.json +0 -0
- package/src/data/format0.txt +1 -0
- package/src/data/tensordata.csv +10 -0
- package/src/data/tensordata.json +37 -0
- package/src/data/tensordata.test.csv +10 -0
- package/src/data/tensormodel.json +113 -0
- package/src/fft.js +224 -0
- package/src/flowchart/FlowChartExec.js +763 -0
- package/src/flowchart/steps/CommandBasic.js +32 -0
- package/src/flowchart/steps/CommandInc.js +19 -0
- package/src/flowchart/steps/CommandMilvus.js +47 -0
- package/src/flowchart/steps/CommandMinio.js +28 -0
- package/src/flowchart/steps/CommandMongo.js +59 -0
- package/src/flowchart/steps/CommandPrint.js +12 -0
- package/src/flowchart/steps/CommandSet.js +14 -0
- package/src/flowchart/steps/CommandTimeline.js +21 -0
- package/src/flowchart/steps/CommandTimelineNext.js +28 -0
- package/src/flowchart/steps/StepBasic.js +184 -0
- package/src/flowchart/steps/StepCheckProcessor.js +26 -0
- package/src/flowchart/steps/StepCheckSrc.js +42 -0
- package/src/flowchart/steps/StepIsTrue.js +12 -0
- package/src/flowchart/steps/StepOneTime.js +21 -0
- package/src/flowchart/steps/StepProcess.js +163 -0
- package/src/flowchart/steps/StepReadSrc.js +66 -0
- package/src/flowchart/steps/StepSleep.js +22 -0
- package/src/flowchart/steps/StepTimeLineEnds.js +21 -0
- package/src/flowchart/steps/StepTimeLineHasMore.js +16 -0
- package/src/gif/index.d.ts +20 -0
- package/src/gif/index.mjs +85 -0
- package/src/gif/utils/checkTypes.d.ts +2 -0
- package/src/gif/utils/checkTypes.mjs +11 -0
- package/src/js-colormaps.js +19484 -0
- package/src/sortify.js +75 -0
- package/src/sqlmodelparser/SqlModelParser.js +22 -0
- package/src/test/csv/test_1000_20230429204538700.csv +1001 -0
- package/src/test/csv/test_5_20230429204525930.csv +6 -0
- package/src/test/svg/test.html +5 -0
package/src/fft.js
ADDED
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
/* eslint-disable complexity, no-redeclare, no-var, one-var */
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Calculate FFT - Based on https://github.com/corbanbrook/dsp.js
|
|
5
|
+
*
|
|
6
|
+
* @param {Number} bufferSize Buffer size
|
|
7
|
+
* @param {Number} sampleRate Sample rate
|
|
8
|
+
* @param {String} windowFunc Window function
|
|
9
|
+
* @param {Number} alpha Alpha channel
|
|
10
|
+
*/
|
|
11
|
+
export default class FFT {
|
|
12
|
+
constructor(bufferSize, sampleRate, windowFunc, alpha) {
|
|
13
|
+
this.bufferSize = bufferSize;
|
|
14
|
+
this.sampleRate = sampleRate;
|
|
15
|
+
this.bandwidth = (2 / bufferSize) * (sampleRate / 2);
|
|
16
|
+
|
|
17
|
+
this.sinTable = new Float32Array(bufferSize);
|
|
18
|
+
this.cosTable = new Float32Array(bufferSize);
|
|
19
|
+
this.windowValues = new Float32Array(bufferSize);
|
|
20
|
+
this.reverseTable = new Uint32Array(bufferSize);
|
|
21
|
+
|
|
22
|
+
this.peakBand = 0;
|
|
23
|
+
this.peak = 0;
|
|
24
|
+
|
|
25
|
+
var i;
|
|
26
|
+
switch (windowFunc) {
|
|
27
|
+
case 'bartlett':
|
|
28
|
+
for (i = 0; i < bufferSize; i++) {
|
|
29
|
+
this.windowValues[i] =
|
|
30
|
+
(2 / (bufferSize - 1)) *
|
|
31
|
+
((bufferSize - 1) / 2 - Math.abs(i - (bufferSize - 1) / 2));
|
|
32
|
+
}
|
|
33
|
+
break;
|
|
34
|
+
case 'bartlettHann':
|
|
35
|
+
for (i = 0; i < bufferSize; i++) {
|
|
36
|
+
this.windowValues[i] =
|
|
37
|
+
0.62 -
|
|
38
|
+
0.48 * Math.abs(i / (bufferSize - 1) - 0.5) -
|
|
39
|
+
0.38 * Math.cos((Math.PI * 2 * i) / (bufferSize - 1));
|
|
40
|
+
}
|
|
41
|
+
break;
|
|
42
|
+
case 'blackman':
|
|
43
|
+
alpha = alpha || 0.16;
|
|
44
|
+
for (i = 0; i < bufferSize; i++) {
|
|
45
|
+
this.windowValues[i] =
|
|
46
|
+
(1 - alpha) / 2 -
|
|
47
|
+
0.5 * Math.cos((Math.PI * 2 * i) / (bufferSize - 1)) +
|
|
48
|
+
(alpha / 2) *
|
|
49
|
+
Math.cos((4 * Math.PI * i) / (bufferSize - 1));
|
|
50
|
+
}
|
|
51
|
+
break;
|
|
52
|
+
case 'cosine':
|
|
53
|
+
for (i = 0; i < bufferSize; i++) {
|
|
54
|
+
this.windowValues[i] = Math.cos(
|
|
55
|
+
(Math.PI * i) / (bufferSize - 1) - Math.PI / 2
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
break;
|
|
59
|
+
case 'gauss':
|
|
60
|
+
alpha = alpha || 0.25;
|
|
61
|
+
for (i = 0; i < bufferSize; i++) {
|
|
62
|
+
this.windowValues[i] = Math.pow(
|
|
63
|
+
Math.E,
|
|
64
|
+
-0.5 *
|
|
65
|
+
Math.pow(
|
|
66
|
+
(i - (bufferSize - 1) / 2) /
|
|
67
|
+
((alpha * (bufferSize - 1)) / 2),
|
|
68
|
+
2
|
|
69
|
+
)
|
|
70
|
+
);
|
|
71
|
+
}
|
|
72
|
+
break;
|
|
73
|
+
case 'hamming':
|
|
74
|
+
for (i = 0; i < bufferSize; i++) {
|
|
75
|
+
this.windowValues[i] =
|
|
76
|
+
0.54 -
|
|
77
|
+
0.46 * Math.cos((Math.PI * 2 * i) / (bufferSize - 1));
|
|
78
|
+
}
|
|
79
|
+
break;
|
|
80
|
+
case 'hann':
|
|
81
|
+
case undefined:
|
|
82
|
+
for (i = 0; i < bufferSize; i++) {
|
|
83
|
+
this.windowValues[i] =
|
|
84
|
+
0.5 * (1 - Math.cos((Math.PI * 2 * i) / (bufferSize - 1)));
|
|
85
|
+
}
|
|
86
|
+
break;
|
|
87
|
+
case 'lanczoz':
|
|
88
|
+
for (i = 0; i < bufferSize; i++) {
|
|
89
|
+
this.windowValues[i] =
|
|
90
|
+
Math.sin(Math.PI * ((2 * i) / (bufferSize - 1) - 1)) /
|
|
91
|
+
(Math.PI * ((2 * i) / (bufferSize - 1) - 1));
|
|
92
|
+
}
|
|
93
|
+
break;
|
|
94
|
+
case 'rectangular':
|
|
95
|
+
for (i = 0; i < bufferSize; i++) {
|
|
96
|
+
this.windowValues[i] = 1;
|
|
97
|
+
}
|
|
98
|
+
break;
|
|
99
|
+
case 'triangular':
|
|
100
|
+
for (i = 0; i < bufferSize; i++) {
|
|
101
|
+
this.windowValues[i] =
|
|
102
|
+
(2 / bufferSize) *
|
|
103
|
+
(bufferSize / 2 - Math.abs(i - (bufferSize - 1) / 2));
|
|
104
|
+
}
|
|
105
|
+
break;
|
|
106
|
+
default:
|
|
107
|
+
throw Error("No such window function '" + windowFunc + "'");
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
var limit = 1;
|
|
111
|
+
var bit = bufferSize >> 1;
|
|
112
|
+
var i;
|
|
113
|
+
|
|
114
|
+
while (limit < bufferSize) {
|
|
115
|
+
for (i = 0; i < limit; i++) {
|
|
116
|
+
this.reverseTable[i + limit] = this.reverseTable[i] + bit;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
limit = limit << 1;
|
|
120
|
+
bit = bit >> 1;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
for (i = 0; i < bufferSize; i++) {
|
|
124
|
+
this.sinTable[i] = Math.sin(-Math.PI / i);
|
|
125
|
+
this.cosTable[i] = Math.cos(-Math.PI / i);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
calculateSpectrum(buffer) {
|
|
130
|
+
// Locally scope variables for speed up
|
|
131
|
+
var bufferSize = this.bufferSize,
|
|
132
|
+
cosTable = this.cosTable,
|
|
133
|
+
sinTable = this.sinTable,
|
|
134
|
+
reverseTable = this.reverseTable,
|
|
135
|
+
real = new Float32Array(bufferSize),
|
|
136
|
+
imag = new Float32Array(bufferSize),
|
|
137
|
+
bSi = 2 / this.bufferSize,
|
|
138
|
+
sqrt = Math.sqrt,
|
|
139
|
+
rval,
|
|
140
|
+
ival,
|
|
141
|
+
mag,
|
|
142
|
+
spectrum = new Float32Array(bufferSize / 2);
|
|
143
|
+
|
|
144
|
+
var k = Math.floor(Math.log(bufferSize) / Math.LN2);
|
|
145
|
+
|
|
146
|
+
if (Math.pow(2, k) !== bufferSize) {
|
|
147
|
+
throw 'Invalid buffer size, must be a power of 2.';
|
|
148
|
+
}
|
|
149
|
+
if (bufferSize !== buffer.length) {
|
|
150
|
+
throw 'Supplied buffer is not the same size as defined FFT. FFT Size: ' +
|
|
151
|
+
bufferSize +
|
|
152
|
+
' Buffer Size: ' +
|
|
153
|
+
buffer.length;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
var halfSize = 1,
|
|
157
|
+
phaseShiftStepReal,
|
|
158
|
+
phaseShiftStepImag,
|
|
159
|
+
currentPhaseShiftReal,
|
|
160
|
+
currentPhaseShiftImag,
|
|
161
|
+
off,
|
|
162
|
+
tr,
|
|
163
|
+
ti,
|
|
164
|
+
tmpReal;
|
|
165
|
+
|
|
166
|
+
for (var i = 0; i < bufferSize; i++) {
|
|
167
|
+
real[i] =
|
|
168
|
+
buffer[reverseTable[i]] * this.windowValues[reverseTable[i]];
|
|
169
|
+
imag[i] = 0;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
while (halfSize < bufferSize) {
|
|
173
|
+
phaseShiftStepReal = cosTable[halfSize];
|
|
174
|
+
phaseShiftStepImag = sinTable[halfSize];
|
|
175
|
+
|
|
176
|
+
currentPhaseShiftReal = 1;
|
|
177
|
+
currentPhaseShiftImag = 0;
|
|
178
|
+
|
|
179
|
+
for (var fftStep = 0; fftStep < halfSize; fftStep++) {
|
|
180
|
+
var i = fftStep;
|
|
181
|
+
|
|
182
|
+
while (i < bufferSize) {
|
|
183
|
+
off = i + halfSize;
|
|
184
|
+
tr =
|
|
185
|
+
currentPhaseShiftReal * real[off] -
|
|
186
|
+
currentPhaseShiftImag * imag[off];
|
|
187
|
+
ti =
|
|
188
|
+
currentPhaseShiftReal * imag[off] +
|
|
189
|
+
currentPhaseShiftImag * real[off];
|
|
190
|
+
|
|
191
|
+
real[off] = real[i] - tr;
|
|
192
|
+
imag[off] = imag[i] - ti;
|
|
193
|
+
real[i] += tr;
|
|
194
|
+
imag[i] += ti;
|
|
195
|
+
|
|
196
|
+
i += halfSize << 1;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
tmpReal = currentPhaseShiftReal;
|
|
200
|
+
currentPhaseShiftReal =
|
|
201
|
+
tmpReal * phaseShiftStepReal -
|
|
202
|
+
currentPhaseShiftImag * phaseShiftStepImag;
|
|
203
|
+
currentPhaseShiftImag =
|
|
204
|
+
tmpReal * phaseShiftStepImag +
|
|
205
|
+
currentPhaseShiftImag * phaseShiftStepReal;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
halfSize = halfSize << 1;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
for (var i = 0, N = bufferSize / 2; i < N; i++) {
|
|
212
|
+
rval = real[i];
|
|
213
|
+
ival = imag[i];
|
|
214
|
+
mag = bSi * sqrt(rval * rval + ival * ival);
|
|
215
|
+
|
|
216
|
+
if (mag > this.peak) {
|
|
217
|
+
this.peakBand = i;
|
|
218
|
+
this.peak = mag;
|
|
219
|
+
}
|
|
220
|
+
spectrum[i] = mag;
|
|
221
|
+
}
|
|
222
|
+
return spectrum;
|
|
223
|
+
}
|
|
224
|
+
}
|