edfcore 0.3.8 → 0.3.9
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/CHANGELOG.md +24 -0
- package/dist/constants.d.ts +1 -1
- package/dist/constants.js +1 -1
- package/dist/envelope.d.ts +8 -0
- package/dist/envelope.d.ts.map +1 -1
- package/dist/envelope.js +69 -5
- package/dist/envelope.js.map +1 -1
- package/package.json +1 -1
- package/src/constants.ts +1 -1
- package/src/envelope.ts +90 -3
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,30 @@ alone does not tell you whether you were affected.
|
|
|
6
6
|
edfcore is pre-1.0. Patch releases have carried behaviour changes where the old behaviour was a
|
|
7
7
|
defect; those are called out below.
|
|
8
8
|
|
|
9
|
+
## 0.3.9
|
|
10
|
+
|
|
11
|
+
- **Fixed** `readEnvelopeAtResolution` delivering a different bucket width in each chunk of one
|
|
12
|
+
call. Asked for 30 s per bucket over a window covering a 100 s run and a 60 s run, it returned
|
|
13
|
+
four buckets of **25 s** for the first and two of **30 s** for the second. Widths that disagree
|
|
14
|
+
cannot go on one axis, which is the entire reason this function exists apart from `readEnvelope`.
|
|
15
|
+
- 0.2.31 fixed half of this. It made the bucket COUNT come from each run's own span instead of once
|
|
16
|
+
from the window, which was necessary and not sufficient: the fold still divided each run evenly
|
|
17
|
+
into that count, so the width went on following the run whenever its span was not a whole
|
|
18
|
+
multiple of the request. The 25 s above is 100 s divided by four.
|
|
19
|
+
- The bucket a sample lands in is now decided by WHEN it is — `floor(elapsed / secondsPerBucket)`,
|
|
20
|
+
in exact integer arithmetic on ticks and sample positions. The last bucket of a run is therefore
|
|
21
|
+
short by whatever the division left over, which is the "sliver" this function's own documentation
|
|
22
|
+
described from the start and did not produce. Its `counts` entry says how short.
|
|
23
|
+
- `chunk.secondsPerBucket` is the width the buckets actually have, so for this function it is now
|
|
24
|
+
the width that was requested, for every chunk. It was `durationSeconds / bucketCount`, which is
|
|
25
|
+
only the width when the run divides evenly — the same wrong number, reported.
|
|
26
|
+
- `readEnvelope` is unchanged. Its contract is `buckets`, a plot's pixel width, and dividing the
|
|
27
|
+
run evenly into that count is exactly right; the two rules are now distinct in the code.
|
|
28
|
+
- Boundaries are precomputed once per signal per run, so the per-sample loop advances a cursor
|
|
29
|
+
rather than dividing. It does not reset at a chunk boundary: chunking bounds memory and must
|
|
30
|
+
never move a sample between buckets, and the test for that reads a file large enough to force
|
|
31
|
+
more than one chunk with the boundary falling inside a bucket rather than on its edge.
|
|
32
|
+
|
|
9
33
|
## 0.3.8
|
|
10
34
|
|
|
11
35
|
**0.3.7 claimed the exactness work "closes the set". It did not.** An audit of every public type
|
package/dist/constants.d.ts
CHANGED
|
@@ -109,5 +109,5 @@ export declare const SIGNAL_FIELD_BLOCK_OFFSETS: {
|
|
|
109
109
|
readonly reserved: 224;
|
|
110
110
|
};
|
|
111
111
|
/** Published package version. Kept in sync with package.json by a test. */
|
|
112
|
-
export declare const VERSION = "0.3.
|
|
112
|
+
export declare const VERSION = "0.3.9";
|
|
113
113
|
//# sourceMappingURL=constants.d.ts.map
|
package/dist/constants.js
CHANGED
package/dist/envelope.d.ts
CHANGED
|
@@ -69,6 +69,14 @@ export declare function envelopeOfSamples(chunkSignal: EdfChunkSignal, buckets:
|
|
|
69
69
|
* 1 s per bucket came back as 0.27 s per bucket in one chunk and 0.09 s in the other, which are
|
|
70
70
|
* not commensurable, so a viewer cannot place the two on one axis. That is the whole promise of
|
|
71
71
|
* this function, so it is computed where the run's length is known (fixed in 0.2.31).
|
|
72
|
+
*
|
|
73
|
+
* The bucket count was only half of it. A bucket is a fixed WIDTH IN TIME here, and until 0.3.9
|
|
74
|
+
* the fold still divided each run evenly into its own count — so the width followed the run
|
|
75
|
+
* exactly as before whenever the span was not a whole multiple of the request. A 100 s run at 30 s
|
|
76
|
+
* per bucket got four buckets of 25 s, while a 60 s run in the same call got two of 30 s. The
|
|
77
|
+
* bucket a sample lands in is now decided by WHEN it is, so the last bucket of a run is short by
|
|
78
|
+
* whatever the division left over — the sliver this documentation always described — and every
|
|
79
|
+
* chunk of every call reports the width that was asked for.
|
|
72
80
|
*/
|
|
73
81
|
export declare function readEnvelopeAtResolution(recording: EdfRecording, selection: {
|
|
74
82
|
readonly signalIndices: readonly number[];
|
package/dist/envelope.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../src/envelope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAUH,OAAO,KAAK,EACV,cAAc,EAEd,gBAAgB,EAChB,iBAAiB,EAEjB,mBAAmB,EACnB,YAAY,EACZ,SAAS,EACT,iBAAiB,EACjB,WAAW,EAEZ,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../src/envelope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAUH,OAAO,KAAK,EACV,cAAc,EAEd,gBAAgB,EAChB,iBAAiB,EAEjB,mBAAmB,EACnB,YAAY,EACZ,SAAS,EACT,iBAAiB,EACjB,WAAW,EAEZ,MAAM,YAAY,CAAC;AA6DpB;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,YAAY,EACvB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,SAAS,gBAAgB,EAAE,CAAC,CAkBtC;AAmOD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,iBAAiB,EAC3B,GAAG,CAAC,EAAE,mBAAmB,GACxB,mBAAmB,CAuCrB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAmCjG;AAQD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,YAAY,EACvB,SAAS,EAAE;IACT,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC,EACD,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,SAAS,gBAAgB,EAAE,CAAC,CA8DtC"}
|
package/dist/envelope.js
CHANGED
|
@@ -28,6 +28,29 @@ import { gapBefore } from './recording.js';
|
|
|
28
28
|
import { decodeAnnotations } from './tal/annotations.js';
|
|
29
29
|
import { ceilDiv, secondsToTicks, ticksToSeconds } from './tal/ticks.js';
|
|
30
30
|
import { resolveTimeWindow } from './time/window.js';
|
|
31
|
+
/**
|
|
32
|
+
* The first sample position of each bucket, for buckets of a fixed width in time.
|
|
33
|
+
*
|
|
34
|
+
* Bucket `b` covers `[b * bucketTicks, (b + 1) * bucketTicks)` of elapsed time within the run, and
|
|
35
|
+
* sample `p` of this signal sits at `p * recordDuration / samplesPerRecord`. So the first sample
|
|
36
|
+
* of bucket `b` is `ceil(b * bucketTicks * samplesPerRecord / recordDuration)`.
|
|
37
|
+
*
|
|
38
|
+
* Computed in bigint, once per signal per run — the array is a plot's worth of entries, not a
|
|
39
|
+
* recording's — so the per-sample loop compares two ordinary numbers. Every boundary is a whole
|
|
40
|
+
* sample index, well inside 2^53.
|
|
41
|
+
*/
|
|
42
|
+
function bucketStartsFor(bucketCount, bucketTicks, samplesPerRecord, recordDurationTicks) {
|
|
43
|
+
// Nothing advances in time: every sample of the run is at the same instant, so one bucket holds
|
|
44
|
+
// them all and the even-division rule already says so.
|
|
45
|
+
if (recordDurationTicks <= 0n || samplesPerRecord <= 0)
|
|
46
|
+
return undefined;
|
|
47
|
+
const starts = new Float64Array(bucketCount);
|
|
48
|
+
const perRecord = BigInt(samplesPerRecord);
|
|
49
|
+
for (let bucket = 1; bucket < bucketCount; bucket += 1) {
|
|
50
|
+
starts[bucket] = Number(ceilDiv(BigInt(bucket) * bucketTicks * perRecord, recordDurationTicks));
|
|
51
|
+
}
|
|
52
|
+
return starts;
|
|
53
|
+
}
|
|
31
54
|
function assertPositiveInteger(value, name) {
|
|
32
55
|
if (Number.isSafeInteger(value) && value > 0)
|
|
33
56
|
return;
|
|
@@ -73,7 +96,13 @@ function resolveEnvelopeSignals(header, signalIndices) {
|
|
|
73
96
|
}
|
|
74
97
|
return signals;
|
|
75
98
|
}
|
|
76
|
-
async function reduceRange(recording, records, selection, options
|
|
99
|
+
async function reduceRange(recording, records, selection, options,
|
|
100
|
+
/**
|
|
101
|
+
* Set only by `readEnvelopeAtResolution`: the width every bucket must have, in exact ticks.
|
|
102
|
+
* When absent the run is divided evenly into `selection.buckets`, which is `readEnvelope`'s
|
|
103
|
+
* contract and the right rule for a pixel width.
|
|
104
|
+
*/
|
|
105
|
+
bucketTicks) {
|
|
77
106
|
const { source, header, timeline } = recording;
|
|
78
107
|
const signals = resolveEnvelopeSignals(header, selection.signalIndices);
|
|
79
108
|
const diagnostics = [];
|
|
@@ -91,6 +120,10 @@ async function reduceRange(recording, records, selection, options) {
|
|
|
91
120
|
consumed: 0,
|
|
92
121
|
outOfRange: 0,
|
|
93
122
|
scratch: undefined,
|
|
123
|
+
bucketStarts: bucketTicks === undefined || bucketTicks <= 0n
|
|
124
|
+
? undefined
|
|
125
|
+
: bucketStartsFor(bucketCount, bucketTicks, signal.samplesPerRecord, header.recordDurationTicks),
|
|
126
|
+
bucket: 0,
|
|
94
127
|
}));
|
|
95
128
|
const chunkRecords = scanChunkRecords(header, options?.maxMaterializeBytes);
|
|
96
129
|
let byteLength = 0;
|
|
@@ -146,7 +179,15 @@ async function reduceRange(recording, records, selection, options) {
|
|
|
146
179
|
durationSeconds,
|
|
147
180
|
durationTicks: spanTicks,
|
|
148
181
|
bucketCount,
|
|
149
|
-
|
|
182
|
+
// The width the buckets ACTUALLY have. With a requested width that is the request itself, for
|
|
183
|
+
// every chunk — `durationSeconds / bucketCount` is the width only when the run divides evenly
|
|
184
|
+
// by it, and reporting that made two runs of one call disagree (fixed in 0.3.9). The last
|
|
185
|
+
// bucket of a run is short by whatever the division left over; its `counts` says how short.
|
|
186
|
+
secondsPerBucket: bucketTicks !== undefined && bucketTicks > 0n
|
|
187
|
+
? ticksToSeconds(bucketTicks)
|
|
188
|
+
: bucketCount > 0
|
|
189
|
+
? durationSeconds / bucketCount
|
|
190
|
+
: 0,
|
|
150
191
|
byteLength,
|
|
151
192
|
signals: Object.freeze(envelopeSignals),
|
|
152
193
|
// The same gap a readWindow chunk would carry. An envelope promises to mirror readWindow,
|
|
@@ -178,10 +219,24 @@ function foldChunk(accumulator, header, bytes, slice, run, bucketCount, options)
|
|
|
178
219
|
const sampleCount = accumulator.signal.samplesPerRecord * slice.count;
|
|
179
220
|
const { min, max, counts } = accumulator;
|
|
180
221
|
let position = accumulator.consumed;
|
|
222
|
+
const starts = accumulator.bucketStarts;
|
|
223
|
+
let cursor = accumulator.bucket;
|
|
181
224
|
for (let i = 0; i < sampleCount; i += 1) {
|
|
182
225
|
const value = samples[i];
|
|
183
|
-
|
|
184
|
-
|
|
226
|
+
let bucket;
|
|
227
|
+
if (starts === undefined) {
|
|
228
|
+
// Integer arithmetic on the run grid: floor(position * buckets / totalSamples). Divides the
|
|
229
|
+
// run evenly, which is `readEnvelope`'s contract — the caller asked for a pixel width.
|
|
230
|
+
bucket = Math.min(bucketCount - 1, Math.floor((position * bucketCount) / totalSamples));
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
// Buckets of a fixed WIDTH IN TIME. The boundaries are sample positions computed once per
|
|
234
|
+
// run, so this is a cursor advance rather than a division, and it never resets at a chunk
|
|
235
|
+
// boundary — chunking bounds memory and must not change the answer.
|
|
236
|
+
while (cursor + 1 < bucketCount && position >= starts[cursor + 1])
|
|
237
|
+
cursor += 1;
|
|
238
|
+
bucket = cursor;
|
|
239
|
+
}
|
|
185
240
|
const seen = counts[bucket];
|
|
186
241
|
if (seen === 0) {
|
|
187
242
|
min[bucket] = value;
|
|
@@ -197,6 +252,7 @@ function foldChunk(accumulator, header, bytes, slice, run, bucketCount, options)
|
|
|
197
252
|
position += 1;
|
|
198
253
|
}
|
|
199
254
|
accumulator.consumed = position;
|
|
255
|
+
accumulator.bucket = cursor;
|
|
200
256
|
}
|
|
201
257
|
/**
|
|
202
258
|
* Converts a digital envelope to physical units.
|
|
@@ -311,6 +367,14 @@ function clampToSafeInteger(value) {
|
|
|
311
367
|
* 1 s per bucket came back as 0.27 s per bucket in one chunk and 0.09 s in the other, which are
|
|
312
368
|
* not commensurable, so a viewer cannot place the two on one axis. That is the whole promise of
|
|
313
369
|
* this function, so it is computed where the run's length is known (fixed in 0.2.31).
|
|
370
|
+
*
|
|
371
|
+
* The bucket count was only half of it. A bucket is a fixed WIDTH IN TIME here, and until 0.3.9
|
|
372
|
+
* the fold still divided each run evenly into its own count — so the width followed the run
|
|
373
|
+
* exactly as before whenever the span was not a whole multiple of the request. A 100 s run at 30 s
|
|
374
|
+
* per bucket got four buckets of 25 s, while a 60 s run in the same call got two of 30 s. The
|
|
375
|
+
* bucket a sample lands in is now decided by WHEN it is, so the last bucket of a run is short by
|
|
376
|
+
* whatever the division left over — the sliver this documentation always described — and every
|
|
377
|
+
* chunk of every call reports the width that was asked for.
|
|
314
378
|
*/
|
|
315
379
|
export async function readEnvelopeAtResolution(recording, selection, options) {
|
|
316
380
|
const { secondsPerBucket } = selection;
|
|
@@ -353,7 +417,7 @@ export async function readEnvelopeAtResolution(recording, selection, options) {
|
|
|
353
417
|
startSeconds: selection.startSeconds,
|
|
354
418
|
durationSeconds: selection.durationSeconds,
|
|
355
419
|
buckets,
|
|
356
|
-
}, options));
|
|
420
|
+
}, options, bucketTicks));
|
|
357
421
|
}
|
|
358
422
|
return Object.freeze(chunks);
|
|
359
423
|
}
|
package/dist/envelope.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envelope.js","sourceRoot":"","sources":["../src/envelope.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"envelope.js","sourceRoot":"","sources":["../src/envelope.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/constants.ts
CHANGED
package/src/envelope.ts
CHANGED
|
@@ -53,6 +53,45 @@ interface Accumulator {
|
|
|
53
53
|
consumed: number;
|
|
54
54
|
outOfRange: number;
|
|
55
55
|
scratch: Int32Array | undefined;
|
|
56
|
+
/**
|
|
57
|
+
* First sample position of each bucket, when the buckets are a fixed WIDTH IN TIME rather than
|
|
58
|
+
* an even division of the run.
|
|
59
|
+
*
|
|
60
|
+
* `undefined` for `readEnvelope`, whose contract is `buckets` — a plot's pixel width — and for
|
|
61
|
+
* which dividing the run evenly is exactly right. Present for `readEnvelopeAtResolution`, whose
|
|
62
|
+
* contract is the width itself. See `bucketStartsFor`.
|
|
63
|
+
*/
|
|
64
|
+
bucketStarts: Float64Array | undefined;
|
|
65
|
+
/** Cursor into `bucketStarts`, advanced as samples arrive. Chunk boundaries do not reset it. */
|
|
66
|
+
bucket: number;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* The first sample position of each bucket, for buckets of a fixed width in time.
|
|
71
|
+
*
|
|
72
|
+
* Bucket `b` covers `[b * bucketTicks, (b + 1) * bucketTicks)` of elapsed time within the run, and
|
|
73
|
+
* sample `p` of this signal sits at `p * recordDuration / samplesPerRecord`. So the first sample
|
|
74
|
+
* of bucket `b` is `ceil(b * bucketTicks * samplesPerRecord / recordDuration)`.
|
|
75
|
+
*
|
|
76
|
+
* Computed in bigint, once per signal per run — the array is a plot's worth of entries, not a
|
|
77
|
+
* recording's — so the per-sample loop compares two ordinary numbers. Every boundary is a whole
|
|
78
|
+
* sample index, well inside 2^53.
|
|
79
|
+
*/
|
|
80
|
+
function bucketStartsFor(
|
|
81
|
+
bucketCount: number,
|
|
82
|
+
bucketTicks: bigint,
|
|
83
|
+
samplesPerRecord: number,
|
|
84
|
+
recordDurationTicks: bigint,
|
|
85
|
+
): Float64Array | undefined {
|
|
86
|
+
// Nothing advances in time: every sample of the run is at the same instant, so one bucket holds
|
|
87
|
+
// them all and the even-division rule already says so.
|
|
88
|
+
if (recordDurationTicks <= 0n || samplesPerRecord <= 0) return undefined;
|
|
89
|
+
const starts = new Float64Array(bucketCount);
|
|
90
|
+
const perRecord = BigInt(samplesPerRecord);
|
|
91
|
+
for (let bucket = 1; bucket < bucketCount; bucket += 1) {
|
|
92
|
+
starts[bucket] = Number(ceilDiv(BigInt(bucket) * bucketTicks * perRecord, recordDurationTicks));
|
|
93
|
+
}
|
|
94
|
+
return starts;
|
|
56
95
|
}
|
|
57
96
|
|
|
58
97
|
function assertPositiveInteger(value: number, name: string): void {
|
|
@@ -126,6 +165,12 @@ async function reduceRange(
|
|
|
126
165
|
records: RecordRange,
|
|
127
166
|
selection: EnvelopeSelection,
|
|
128
167
|
options?: ReadOptions,
|
|
168
|
+
/**
|
|
169
|
+
* Set only by `readEnvelopeAtResolution`: the width every bucket must have, in exact ticks.
|
|
170
|
+
* When absent the run is divided evenly into `selection.buckets`, which is `readEnvelope`'s
|
|
171
|
+
* contract and the right rule for a pixel width.
|
|
172
|
+
*/
|
|
173
|
+
bucketTicks?: bigint,
|
|
129
174
|
): Promise<EdfEnvelopeChunk> {
|
|
130
175
|
const { source, header, timeline } = recording;
|
|
131
176
|
const signals = resolveEnvelopeSignals(header, selection.signalIndices);
|
|
@@ -149,6 +194,16 @@ async function reduceRange(
|
|
|
149
194
|
consumed: 0,
|
|
150
195
|
outOfRange: 0,
|
|
151
196
|
scratch: undefined,
|
|
197
|
+
bucketStarts:
|
|
198
|
+
bucketTicks === undefined || bucketTicks <= 0n
|
|
199
|
+
? undefined
|
|
200
|
+
: bucketStartsFor(
|
|
201
|
+
bucketCount,
|
|
202
|
+
bucketTicks,
|
|
203
|
+
signal.samplesPerRecord,
|
|
204
|
+
header.recordDurationTicks,
|
|
205
|
+
),
|
|
206
|
+
bucket: 0,
|
|
152
207
|
}));
|
|
153
208
|
|
|
154
209
|
const chunkRecords = scanChunkRecords(header, options?.maxMaterializeBytes);
|
|
@@ -210,7 +265,16 @@ async function reduceRange(
|
|
|
210
265
|
durationSeconds,
|
|
211
266
|
durationTicks: spanTicks,
|
|
212
267
|
bucketCount,
|
|
213
|
-
|
|
268
|
+
// The width the buckets ACTUALLY have. With a requested width that is the request itself, for
|
|
269
|
+
// every chunk — `durationSeconds / bucketCount` is the width only when the run divides evenly
|
|
270
|
+
// by it, and reporting that made two runs of one call disagree (fixed in 0.3.9). The last
|
|
271
|
+
// bucket of a run is short by whatever the division left over; its `counts` says how short.
|
|
272
|
+
secondsPerBucket:
|
|
273
|
+
bucketTicks !== undefined && bucketTicks > 0n
|
|
274
|
+
? ticksToSeconds(bucketTicks)
|
|
275
|
+
: bucketCount > 0
|
|
276
|
+
? durationSeconds / bucketCount
|
|
277
|
+
: 0,
|
|
214
278
|
byteLength,
|
|
215
279
|
signals: Object.freeze(envelopeSignals),
|
|
216
280
|
// The same gap a readWindow chunk would carry. An envelope promises to mirror readWindow,
|
|
@@ -260,10 +324,23 @@ function foldChunk(
|
|
|
260
324
|
const { min, max, counts } = accumulator;
|
|
261
325
|
let position = accumulator.consumed;
|
|
262
326
|
|
|
327
|
+
const starts = accumulator.bucketStarts;
|
|
328
|
+
let cursor = accumulator.bucket;
|
|
329
|
+
|
|
263
330
|
for (let i = 0; i < sampleCount; i += 1) {
|
|
264
331
|
const value = samples[i] as number;
|
|
265
|
-
|
|
266
|
-
|
|
332
|
+
let bucket: number;
|
|
333
|
+
if (starts === undefined) {
|
|
334
|
+
// Integer arithmetic on the run grid: floor(position * buckets / totalSamples). Divides the
|
|
335
|
+
// run evenly, which is `readEnvelope`'s contract — the caller asked for a pixel width.
|
|
336
|
+
bucket = Math.min(bucketCount - 1, Math.floor((position * bucketCount) / totalSamples));
|
|
337
|
+
} else {
|
|
338
|
+
// Buckets of a fixed WIDTH IN TIME. The boundaries are sample positions computed once per
|
|
339
|
+
// run, so this is a cursor advance rather than a division, and it never resets at a chunk
|
|
340
|
+
// boundary — chunking bounds memory and must not change the answer.
|
|
341
|
+
while (cursor + 1 < bucketCount && position >= (starts[cursor + 1] as number)) cursor += 1;
|
|
342
|
+
bucket = cursor;
|
|
343
|
+
}
|
|
267
344
|
const seen = counts[bucket] as number;
|
|
268
345
|
if (seen === 0) {
|
|
269
346
|
min[bucket] = value;
|
|
@@ -277,6 +354,7 @@ function foldChunk(
|
|
|
277
354
|
}
|
|
278
355
|
|
|
279
356
|
accumulator.consumed = position;
|
|
357
|
+
accumulator.bucket = cursor;
|
|
280
358
|
}
|
|
281
359
|
|
|
282
360
|
/**
|
|
@@ -406,6 +484,14 @@ function clampToSafeInteger(value: bigint): number {
|
|
|
406
484
|
* 1 s per bucket came back as 0.27 s per bucket in one chunk and 0.09 s in the other, which are
|
|
407
485
|
* not commensurable, so a viewer cannot place the two on one axis. That is the whole promise of
|
|
408
486
|
* this function, so it is computed where the run's length is known (fixed in 0.2.31).
|
|
487
|
+
*
|
|
488
|
+
* The bucket count was only half of it. A bucket is a fixed WIDTH IN TIME here, and until 0.3.9
|
|
489
|
+
* the fold still divided each run evenly into its own count — so the width followed the run
|
|
490
|
+
* exactly as before whenever the span was not a whole multiple of the request. A 100 s run at 30 s
|
|
491
|
+
* per bucket got four buckets of 25 s, while a 60 s run in the same call got two of 30 s. The
|
|
492
|
+
* bucket a sample lands in is now decided by WHEN it is, so the last bucket of a run is short by
|
|
493
|
+
* whatever the division left over — the sliver this documentation always described — and every
|
|
494
|
+
* chunk of every call reports the width that was asked for.
|
|
409
495
|
*/
|
|
410
496
|
export async function readEnvelopeAtResolution(
|
|
411
497
|
recording: EdfRecording,
|
|
@@ -473,6 +559,7 @@ export async function readEnvelopeAtResolution(
|
|
|
473
559
|
buckets,
|
|
474
560
|
},
|
|
475
561
|
options,
|
|
562
|
+
bucketTicks,
|
|
476
563
|
),
|
|
477
564
|
);
|
|
478
565
|
}
|